First pass through babel documentation (on airplane)
[org-mode.git] / doc / org.texi
blobca9961f6d8c2879226faeb71f8dd3bdf8fe68faf
2 \input texinfo
3 @c %**start of header
4 @setfilename ../../info/org
5 @settitle The Org Manual
7 @set VERSION 6.36trans
8 @set DATE May 2010
10 @c Version and Contact Info
11 @set MAINTAINERSITE @uref{http://orgmode.org,maintainers webpage}
12 @set AUTHOR Carsten Dominik
13 @set MAINTAINER Carsten Dominik
14 @set MAINTAINEREMAIL @email{carsten at orgmode dot org}
15 @set MAINTAINERCONTACT @uref{mailto:carsten at orgmode dot org,contact the maintainer}
16 @c %**end of header
17 @finalout
19 @c Macro definitions
20 @iftex
21 @c @hyphenation{time-stamp time-stamps time-stamp-ing time-stamp-ed}
22 @end iftex
23 @macro Ie {}
24 I.e.,
25 @end macro
26 @macro ie {}
27 i.e.,
28 @end macro
29 @macro Eg {}
30 E.g.,
31 @end macro
32 @macro eg {}
33 e.g.,
34 @end macro
36 @c Subheadings inside a table.
37 @macro tsubheading{text}
38 @ifinfo
39 @subsubheading \text\
40 @end ifinfo
41 @ifnotinfo
42 @item @b{\text\}
43 @end ifnotinfo
44 @end macro
46 @copying
47 This manual is for Org version @value{VERSION}.
49 Copyright @copyright{} 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation
51 @quotation
52 Permission is granted to copy, distribute and/or modify this document
53 under the terms of the GNU Free Documentation License, Version 1.3 or
54 any later version published by the Free Software Foundation; with no
55 Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
56 and with the Back-Cover Texts as in (a) below.  A copy of the license
57 is included in the section entitled ``GNU Free Documentation License.''
59 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
60 modify this GNU manual.  Buying copies from the FSF supports it in
61 developing GNU and promoting software freedom.''
63 This document is part of a collection distributed under the GNU Free
64 Documentation License.  If you want to distribute this document
65 separately from the collection, you can do so by adding a copy of the
66 license to the document, as described in section 6 of the license.
67 @end quotation
68 @end copying
70 @dircategory Emacs
71 @direntry
72 * Org Mode: (org).      Outline-based notes management and organizer
73 @end direntry
75 @titlepage
76 @title The Org Manual
78 @subtitle Release @value{VERSION}
79 @author by Carsten Dominik
81 @c The following two commands start the copyright page.
82 @page
83 @vskip 0pt plus 1filll
84 @insertcopying
85 @end titlepage
87 @c Output the table of contents at the beginning.
88 @contents
90 @ifnottex
91 @node Top, Introduction, (dir), (dir)
92 @top Org Mode Manual
94 @insertcopying
95 @end ifnottex
97 @menu
98 * Introduction::                Getting started
99 * Document Structure::          A tree works like your brain
100 * Tables::                      Pure magic for quick formatting
101 * Hyperlinks::                  Notes in context
102 * TODO Items::                  Every tree branch can be a TODO item
103 * Tags::                        Tagging headlines and matching sets of tags
104 * Properties and Columns::      Storing information about an entry
105 * Dates and Times::             Making items useful for planning
106 * Capture - Refile - Archive::  The ins and outs for projects
107 * Agenda Views::                Collecting information into views
108 * Markup::                      Prepare text for rich export
109 * Exporting::                   Sharing and publishing of notes
110 * Publishing::                  Create a web site of linked Org files
111 * Working With Source Code::    Code evaluation inside Org-mode
112 * Miscellaneous::               All the rest which did not fit elsewhere
113 * Hacking::                     How to hack your way around
114 * MobileOrg::                   Viewing and capture on a mobile device
115 * History and Acknowledgments::  How Org came into being
116 * Main Index::                  An index of Org's concepts and features
117 * Key Index::                   Key bindings and where they are described
118 * Variable Index::              Variables mentioned in the manual
120 @detailmenu
121  --- The Detailed Node Listing ---
123 Introduction
125 * Summary::                     Brief summary of what Org does
126 * Installation::                How to install a downloaded version of Org
127 * Activation::                  How to activate Org for certain buffers
128 * Feedback::                    Bug reports, ideas, patches etc.
129 * Conventions::                 Type-setting conventions in the manual
131 Document Structure
133 * Outlines::                    Org is based on Outline mode
134 * Headlines::                   How to typeset Org tree headlines
135 * Visibility cycling::          Show and hide, much simplified
136 * Motion::                      Jumping to other headlines
137 * Structure editing::           Changing sequence and level of headlines
138 * Sparse trees::                Matches embedded in context
139 * Plain lists::                 Additional structure within an entry
140 * Drawers::                     Tucking stuff away
141 * Blocks::                      Folding blocks
142 * Footnotes::                   How footnotes are defined in Org's syntax
143 * Orgstruct mode::              Structure editing outside Org
145 Tables
147 * Built-in table editor::       Simple tables
148 * Column width and alignment::  Overrule the automatic settings
149 * Column groups::               Grouping to trigger vertical lines
150 * Orgtbl mode::                 The table editor as minor mode
151 * The spreadsheet::             The table editor has spreadsheet capabilities
152 * Org-Plot::                    Plotting from org tables
154 The spreadsheet
156 * References::                  How to refer to another field or range
157 * Formula syntax for Calc::     Using Calc to compute stuff
158 * Formula syntax for Lisp::     Writing formulas in Emacs Lisp
159 * Field formulas::              Formulas valid for a single field
160 * Column formulas::             Formulas valid for an entire column
161 * Editing and debugging formulas::  Fixing formulas
162 * Updating the table::          Recomputing all dependent fields
163 * Advanced features::           Field names, parameters and automatic recalc
165 Hyperlinks
167 * Link format::                 How links in Org are formatted
168 * Internal links::              Links to other places in the current file
169 * External links::              URL-like links to the world
170 * Handling links::              Creating, inserting and following
171 * Using links outside Org::     Linking from my C source code?
172 * Link abbreviations::          Shortcuts for writing complex links
173 * Search options::              Linking to a specific location
174 * Custom searches::             When the default search is not enough
176 Internal links
178 * Radio targets::               Make targets trigger links in plain text
180 TODO Items
182 * TODO basics::                 Marking and displaying TODO entries
183 * TODO extensions::             Workflow and assignments
184 * Progress logging::            Dates and notes for progress
185 * Priorities::                  Some things are more important than others
186 * Breaking down tasks::         Splitting a task into manageable pieces
187 * Checkboxes::                  Tick-off lists
189 Extended use of TODO keywords
191 * Workflow states::             From TODO to DONE in steps
192 * TODO types::                  I do this, Fred does the rest
193 * Multiple sets in one file::   Mixing it all, and still finding your way
194 * Fast access to TODO states::  Single letter selection of a state
195 * Per-file keywords::           Different files, different requirements
196 * Faces for TODO keywords::     Highlighting states
197 * TODO dependencies::           When one task needs to wait for others
199 Progress logging
201 * Closing items::               When was this entry marked DONE?
202 * Tracking TODO state changes::  When did the status change?
203 * Tracking your habits::        How consistent have you been?
205 Tags
207 * Tag inheritance::             Tags use the tree structure of the outline
208 * Setting tags::                How to assign tags to a headline
209 * Tag searches::                Searching for combinations of tags
211 Properties and Columns
213 * Property syntax::             How properties are spelled out
214 * Special properties::          Access to other Org mode features
215 * Property searches::           Matching property values
216 * Property inheritance::        Passing values down the tree
217 * Column view::                 Tabular viewing and editing
218 * Property API::                Properties for Lisp programmers
220 Column view
222 * Defining columns::            The COLUMNS format property
223 * Using column view::           How to create and use column view
224 * Capturing column view::       A dynamic block for column view
226 Defining columns
228 * Scope of column definitions::  Where defined, where valid?
229 * Column attributes::           Appearance and content of a column
231 Dates and Times
233 * Timestamps::                  Assigning a time to a tree entry
234 * Creating timestamps::         Commands which insert timestamps
235 * Deadlines and scheduling::    Planning your work
236 * Clocking work time::          Tracking how long you spend on a task
237 * Resolving idle time::         Resolving time if you've been idle
238 * Effort estimates::            Planning work effort in advance
239 * Relative timer::              Notes with a running timer
241 Creating timestamps
243 * The date/time prompt::        How Org mode helps you entering date and time
244 * Custom time format::          Making dates look different
246 Deadlines and scheduling
248 * Inserting deadline/schedule::  Planning items
249 * Repeated tasks::              Items that show up again and again
251 Capture - Refile - Archive
253 * Remember::                    Capture new tasks/ideas with little interruption
254 * Attachments::                 Add files to tasks.
255 * RSS Feeds::                   Getting input from RSS feeds
256 * Protocols::                   External (e.g. Browser) access to Emacs and Org
257 * Refiling notes::              Moving a tree from one place to another
258 * Archiving::                   What to do with finished projects
260 Remember
262 * Setting up Remember for Org::  Some code for .emacs to get things going
263 * Remember templates::          Define the outline of different note types
264 * Storing notes::               Directly get the note to where it belongs
266 Archiving
268 * Moving subtrees::             Moving a tree to an archive file
269 * Internal archiving::          Switch off a tree but keep it in the file
271 Agenda Views
273 * Agenda files::                Files being searched for agenda information
274 * Agenda dispatcher::           Keyboard access to agenda views
275 * Built-in agenda views::       What is available out of the box?
276 * Presentation and sorting::    How agenda items are prepared for display
277 * Agenda commands::             Remote editing of Org trees
278 * Custom agenda views::         Defining special searches and views
279 * Exporting Agenda Views::      Writing a view to a file
280 * Agenda column view::          Using column view for collected entries
282 The built-in agenda views
284 * Weekly/daily agenda::         The calendar page with current tasks
285 * Global TODO list::            All unfinished action items
286 * Matching tags and properties::  Structured information with fine-tuned search
287 * Timeline::                    Time-sorted view for single file
288 * Search view::                 Find entries by searching for text
289 * Stuck projects::              Find projects you need to review
291 Presentation and sorting
293 * Categories::                  Not all tasks are equal
294 * Time-of-day specifications::  How the agenda knows the time
295 * Sorting of agenda items::     The order of things
297 Custom agenda views
299 * Storing searches::            Type once, use often
300 * Block agenda::                All the stuff you need in a single buffer
301 * Setting Options::             Changing the rules
303 Markup for rich export
305 * Structural markup elements::  The basic structure as seen by the exporter
306 * Images and tables::           Tables and Images will be included
307 * Literal examples::            Source code examples with special formatting
308 * Include files::               Include additional files into a document
309 * Index entries::               
310 * Macro replacement::           Use macros to create complex output
311 * Embedded LaTeX::              LaTeX can be freely used inside Org documents
313 Structural markup elements
315 * Document title::              Where the title is taken from
316 * Headings and sections::       The document structure as seen by the exporter
317 * Table of contents::           The if and where of the table of contents
318 * Initial text::                Text before the first heading?
319 * Lists::                       Lists
320 * Paragraphs::                  Paragraphs
321 * Footnote markup::             Footnotes
322 * Emphasis and monospace::      Bold, italic, etc.
323 * Horizontal rules::            Make a line
324 * Comment lines::               What will *not* be exported
326 Embedded La@TeX{}
328 * Special symbols::             Greek letters and other symbols
329 * Subscripts and superscripts::  Simple syntax for raising/lowering text
330 * LaTeX fragments::             Complex formulas made easy
331 * Previewing LaTeX fragments::  What will this snippet look like?
332 * CDLaTeX mode::                Speed up entering of formulas
334 Exporting
336 * Selective export::            Using tags to select and exclude trees
337 * Export options::              Per-file export settings
338 * The export dispatcher::       How to access exporter commands
339 * ASCII/Latin-1/UTF-8 export::  Exporting to flat files with encoding
340 * HTML export::                 Exporting to HTML
341 * LaTeX and PDF export::        Exporting to La@TeX{}, and processing to PDF
342 * DocBook export::              Exporting to DocBook
343 * TaskJuggler export::          Exporting to TaskJuggler
344 * Freemind export::             Exporting to Freemind mind maps
345 * XOXO export::                 Exporting to XOXO
346 * iCalendar export::            Exporting in iCalendar format
348 HTML export
350 * HTML Export commands::        How to invoke HTML export
351 * Quoting HTML tags::           Using direct HTML in Org mode
352 * Links in HTML export::        How links will be interpreted and formatted
353 * Tables in HTML export::       How to modify the formatting of tables
354 * Images in HTML export::       How to insert figures into HTML output
355 * Text areas in HTML export::   An alternative way to show an example
356 * CSS support::                 Changing the appearance of the output
357 * Javascript support::          Info and Folding in a web browser
359 La@TeX{} and PDF export
361 * LaTeX/PDF export commands::   Which key invokes which commands
362 * Header and sectioning::       Setting up the export file structure
363 * Quoting LaTeX code::          Incorporating literal La@TeX{} code
364 * Tables in LaTeX export::      Options for exporting tables to La@TeX{}
365 * Images in LaTeX export::      How to insert figures into La@TeX{} output
366 * Beamer class export::         Turning the file into a presentation
368 DocBook export
370 * DocBook export commands::     How to invoke DocBook export
371 * Quoting DocBook code::        Incorporating DocBook code in Org files
372 * Recursive sections::          Recursive sections in DocBook
373 * Tables in DocBook export::    Tables are exported as HTML tables
374 * Images in DocBook export::    How to insert figures into DocBook output
375 * Special characters::          How to handle special characters
377 Publishing
379 * Configuration::               Defining projects
380 * Uploading files::             How to get files up on the server
381 * Sample configuration::        Example projects
382 * Triggering publication::      Publication commands
384 Configuration
386 * Project alist::               The central configuration variable
387 * Sources and destinations::    From here to there
388 * Selecting files::             What files are part of the project?
389 * Publishing action::           Setting the function doing the publishing
390 * Publishing options::          Tweaking HTML export
391 * Publishing links::            Which links keep working after publishing?
392 * Sitemap::                     Generating a list of all pages
393 * Generating an index::         An index that reaches across pages
395 Sample configuration
397 * Simple example::              One-component publishing
398 * Complex example::             A multi-component publishing example
400 Miscellaneous
402 * Completion::                  M-TAB knows what you need
403 * Speed keys::                  Electic commands at the beginning of a headline
404 * Customization::               Adapting Org to your taste
405 * In-buffer settings::          Overview of the #+KEYWORDS
406 * The very busy C-c C-c key::   When in doubt, press C-c C-c
407 * Clean view::                  Getting rid of leading stars in the outline
408 * TTY keys::                    Using Org on a tty
409 * Interaction::                 Other Emacs packages
411 Interaction with other packages
413 * Cooperation::                 Packages Org cooperates with
414 * Conflicts::                   Packages that lead to conflicts
416 Hacking
418 * Hooks::                       Who to reach into Org's internals
419 * Add-on packages::             Available extensions
420 * Adding hyperlink types::      New custom link types
421 * Context-sensitive commands::  How to add functionality to such commands
422 * Tables in arbitrary syntax::  Orgtbl for La@TeX{} and other programs
423 * Dynamic blocks::              Automatically filled blocks
424 * Special agenda views::        Customized views
425 * Extracting agenda information::  Postprocessing of agenda information
426 * Using the property API::      Writing programs that use entry properties
427 * Using the mapping API::       Mapping over all or selected entries
429 Tables and lists in arbitrary syntax
431 * Radio tables::                Sending and receiving radio tables
432 * A LaTeX example::             Step by step, almost a tutorial
433 * Translator functions::        Copy and modify
434 * Radio lists::                 Doing the same for lists
436 MobileOrg
438 * Setting up the staging area::  Where to interact with the mobile device
439 * Pushing to MobileOrg::        Uploading Org files and agendas
440 * Pulling from MobileOrg::      Integrating captured and flagged items
442 @end detailmenu
443 @end menu
445 @node Introduction, Document Structure, Top, Top
446 @chapter Introduction
447 @cindex introduction
449 @menu
450 * Summary::                     Brief summary of what Org does
451 * Installation::                How to install a downloaded version of Org
452 * Activation::                  How to activate Org for certain buffers
453 * Feedback::                    Bug reports, ideas, patches etc.
454 * Conventions::                 Type-setting conventions in the manual
455 @end menu
457 @node Summary, Installation, Introduction, Introduction
458 @section Summary
459 @cindex summary
461 Org is a mode for keeping notes, maintaining TODO lists, and doing
462 project planning with a fast and effective plain-text system.
464 Org develops organizational tasks around NOTES files that contain
465 lists or information about projects as plain text.  Org is
466 implemented on top of Outline mode, which makes it possible to keep the
467 content of large files well structured.  Visibility cycling and
468 structure editing help to work with the tree.  Tables are easily created
469 with a built-in table editor.  Org supports TODO items, deadlines,
470 timestamps, and scheduling.  It dynamically compiles entries into an
471 agenda that utilizes and smoothly integrates much of the Emacs calendar
472 and diary.  Plain text URL-like links connect to websites, emails,
473 Usenet messages, BBDB entries, and any files related to the projects.
474 For printing and sharing of notes, an Org file can be exported as a
475 structured ASCII file, as HTML, or (TODO and agenda items only) as an
476 iCalendar file.  It can also serve as a publishing tool for a set of
477 linked web pages.
479 An important design aspect that distinguishes Org from, for example,
480 Planner/Muse is that it encourages you to store every piece of information
481 only once.  In Planner, you have project pages, day pages and possibly
482 other files, duplicating some information such as tasks.  In Org,
483 you only have notes files.  In your notes you mark entries as tasks, and
484 label them with tags and timestamps.  All necessary lists, like a
485 schedule for the day, the agenda for a meeting, tasks lists selected by
486 tags, etc., are created dynamically when you need them.
488 Org keeps simple things simple.  When first fired up, it should
489 feel like a straightforward, easy to use outliner.  Complexity is not
490 imposed, but a large amount of functionality is available when you need
491 it.  Org is a toolbox and can be used in different ways, for
492 example as:
494 @example
495 @r{@bullet{} an outline extension with visibility cycling and structure editing}
496 @r{@bullet{} an ASCII system and table editor for taking structured notes}
497 @r{@bullet{} an ASCII table editor with spreadsheet-like capabilities}
498 @r{@bullet{} a TODO list editor}
499 @r{@bullet{} a full agenda and planner with deadlines and work scheduling}
500 @pindex GTD, Getting Things Done
501 @r{@bullet{} an environment in which to implement David Allen's GTD system}
502 @r{@bullet{} a basic database application}
503 @r{@bullet{} a simple hypertext system, with HTML and La@TeX{} export}
504 @r{@bullet{} a publishing tool to create a set of interlinked webpages}
505 @r{@bullet{} an environment for literate programming}
506 @end example
508 Org's automatic, context-sensitive table editor with spreadsheet
509 capabilities can be integrated into any major mode by activating the
510 minor Orgtbl mode.  Using a translation step, it can be used to maintain
511 tables in arbitrary file types, for example in La@TeX{}.  The structure
512 editing and list creation capabilities can be used outside Org with
513 the minor Orgstruct mode.
515 @cindex FAQ
516 There is a website for Org which provides links to the newest
517 version of Org, as well as additional information, frequently asked
518 questions (FAQ), links to tutorials, etc@.  This page is located at
519 @uref{http://orgmode.org}.
521 @page
524 @node Installation, Activation, Summary, Introduction
525 @section Installation
526 @cindex installation
527 @cindex XEmacs
529 @b{Important:} @i{If you are using a version of Org that is part of the Emacs
530 distribution or an XEmacs package, please skip this section and go directly
531 to @ref{Activation}.}
533 If you have downloaded Org from the Web, either as a distribution @file{.zip}
534 or @file{.tar} file, or as a Git archive, you must take the following steps
535 to install it: go into the unpacked Org distribution directory and edit the
536 top section of the file @file{Makefile}.  You must set the name of the Emacs
537 binary (likely either @file{emacs} or @file{xemacs}), and the paths to the
538 directories where local Lisp and Info files are kept.  If you don't have
539 access to the system-wide directories, you can simply run Org directly from
540 the distribution directory by adding the @file{lisp} subdirectory to the
541 Emacs load path.  To do this, add the following line to @file{.emacs}:
543 @example
544 (setq load-path (cons "~/path/to/orgdir/lisp" load-path))
545 @end example
547 @noindent
548 If you plan to use code from the @file{contrib} subdirectory, do a similar
549 step for this directory:
551 @example
552 (setq load-path (cons "~/path/to/orgdir/contrib/lisp" load-path))
553 @end example
555 @sp 2
556 @cartouche
557 XEmacs users now need to install the file @file{noutline.el} from
558 the @file{xemacs} sub-directory of the Org distribution.  Use the
559 command:
561 @example
562      make install-noutline
563 @end example
564 @end cartouche
565 @sp 2
567 @noindent Now byte-compile the Lisp files with the shell command:
569 @example
570 make
571 @end example
573 @noindent If you are running Org from the distribution directory, this is
574 all.  If you want to install Org into the system directories, use (as
575 administrator)
577 @example
578 make install
579 @end example
581 Installing Info files is system dependent, because of differences in the
582 @file{install-info} program.  In Debian it copies the info files into the
583 correct directory and modifies the info directory file.  In many other
584 systems, the files need to be copied to the correct directory separately, and
585 @file{install-info} then only modifies the directory file.  Check your system
586 documentation to find out which of the following commands you need:
588 @example
589 make install-info
590 make install-info-debian
591 @end example
593 Then add the following line to @file{.emacs}.  It is needed so that
594 Emacs can autoload functions that are located in files not immediately loaded
595 when Org-mode starts.
596 @lisp
597 (require 'org-install)
598 @end lisp
600 Do not forget to activate Org as described in the following section.
601 @page
603 @node Activation, Feedback, Installation, Introduction
604 @section Activation
605 @cindex activation
606 @cindex autoload
607 @cindex global key bindings
608 @cindex key bindings, global
610 @iftex
611 @b{Important:} @i{If you use copy-and-paste to copy Lisp code from the
612 PDF documentation as viewed by some PDF viewers to your @file{.emacs} file, the
613 single-quote character comes out incorrectly and the code will not work.
614 You need to fix the single-quotes by hand, or copy from Info
615 documentation.}
616 @end iftex
618 Add the following lines to your @file{.emacs} file.  The last three lines
619 define @emph{global} keys for the commands @command{org-store-link},
620 @command{org-agenda}, and @command{org-iswitchb}---please choose suitable
621 keys yourself.
623 @lisp
624 ;; The following lines are always needed.  Choose your own keys.
625 (add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
626 (global-set-key "\C-cl" 'org-store-link)
627 (global-set-key "\C-ca" 'org-agenda)
628 (global-set-key "\C-cb" 'org-iswitchb)
629 @end lisp
631 Furthermore, you must activate @code{font-lock-mode} in Org
632 buffers, because significant functionality depends on font-locking being
633 active.  You can do this with either one of the following two lines
634 (XEmacs users must use the second option):
635 @lisp
636 (global-font-lock-mode 1)                     ; for all buffers
637 (add-hook 'org-mode-hook 'turn-on-font-lock)  ; Org buffers only
638 @end lisp
640 @cindex Org mode, turning on
641 With this setup, all files with extension @samp{.org} will be put
642 into Org mode.  As an alternative, make the first line of a file look
643 like this:
645 @example
646 MY PROJECTS    -*- mode: org; -*-
647 @end example
649 @vindex org-insert-mode-line-in-empty-file
650 @noindent which will select Org mode for this buffer no matter what
651 the file's name is.  See also the variable
652 @code{org-insert-mode-line-in-empty-file}.
654 Many commands in Org work on the region if the region is @i{active}.  To make
655 use of this, you need to have @code{transient-mark-mode}
656 (@code{zmacs-regions} in XEmacs) turned on.  In Emacs 23 this is the default,
657 in Emacs 22 you need to do this yourself with
658 @lisp
659 (transient-mark-mode 1)
660 @end lisp
661 @noindent If you do not like @code{transient-mark-mode}, you can create an
662 active region by using the mouse to select a region, or pressing
663 @kbd{C-@key{SPC}} twice before moving the cursor.
665 @node Feedback, Conventions, Activation, Introduction
666 @section Feedback
667 @cindex feedback
668 @cindex bug reports
669 @cindex maintainer
670 @cindex author
672 If you find problems with Org, or if you have questions, remarks, or ideas
673 about it, please mail to the Org mailing list @email{emacs-orgmode@@gnu.org}.
674 If you are not a member of the mailing list, your mail will be passed to the
675 list after a moderator has approved it.
677 For bug reports, please provide as much information as possible, including
678 the version information of Emacs (@kbd{M-x emacs-version @key{RET}}) and Org
679 (@kbd{M-x org-version @key{RET}}), as well as the Org related setup in
680 @file{.emacs}.  The easiest way to do this is to use the command
681 @example
682 @kbd{M-x org-submit-bug-report}
683 @end example
684 @noindent which will put all this information into an Emacs mail buffer so
685 that you only need to add your description.  If you re not sending the Email
686 from within Emacs, please copy and paste the content into your Email program.
688 If an error occurs, a backtrace can be very useful (see below on how to
689 create one).  Often a small example file helps, along with clear information
690 about:
692 @enumerate
693 @item What exactly did you do?
694 @item What did you expect to happen?
695 @item What happened instead?
696 @end enumerate
697 @noindent Thank you for helping to improve this mode.
699 @subsubheading How to create a useful backtrace
701 @cindex backtrace of an error
702 If working with Org produces an error with a message you don't
703 understand, you may have hit a bug.  The best way to report this is by
704 providing, in addition to what was mentioned above, a @emph{backtrace}.
705 This is information from the built-in debugger about where and how the
706 error occurred.  Here is how to produce a useful backtrace:
708 @enumerate
709 @item
710 Reload uncompiled versions of all Org-mode Lisp files.  The backtrace
711 contains much more information if it is produced with uncompiled code.
712 To do this, use
713 @example
714 C-u M-x org-reload RET
715 @end example
716 @noindent
717 or select @code{Org -> Refresh/Reload -> Reload Org uncompiled} from the
718 menu.
719 @item
720 Go to the @code{Options} menu and select @code{Enter Debugger on Error}
721 (XEmacs has this option in the @code{Troubleshooting} sub-menu).
722 @item
723 Do whatever you have to do to hit the error.  Don't forget to
724 document the steps you take.
725 @item
726 When you hit the error, a @file{*Backtrace*} buffer will appear on the
727 screen.  Save this buffer to a file (for example using @kbd{C-x C-w}) and
728 attach it to your bug report.
729 @end enumerate
731 @node Conventions,  , Feedback, Introduction
732 @section Typesetting conventions used in this manual
734 Org uses three types of keywords: TODO keywords, tags, and property
735 names.  In this manual we use the following conventions:
737 @table @code
738 @item TODO
739 @itemx WAITING
740 TODO keywords are written with all capitals, even if they are
741 user-defined.
742 @item boss
743 @itemx ARCHIVE
744 User-defined tags are written in lowercase; built-in tags with special
745 meaning are written with all capitals.
746 @item Release
747 @itemx PRIORITY
748 User-defined properties are capitalized; built-in properties with
749 special meaning are written with all capitals.
750 @end table
752 @node Document Structure, Tables, Introduction, Top
753 @chapter Document Structure
754 @cindex document structure
755 @cindex structure of document
757 Org is based on Outline mode and provides flexible commands to
758 edit the structure of the document.
760 @menu
761 * Outlines::                    Org is based on Outline mode
762 * Headlines::                   How to typeset Org tree headlines
763 * Visibility cycling::          Show and hide, much simplified
764 * Motion::                      Jumping to other headlines
765 * Structure editing::           Changing sequence and level of headlines
766 * Sparse trees::                Matches embedded in context
767 * Plain lists::                 Additional structure within an entry
768 * Drawers::                     Tucking stuff away
769 * Blocks::                      Folding blocks
770 * Footnotes::                   How footnotes are defined in Org's syntax
771 * Orgstruct mode::              Structure editing outside Org
772 @end menu
774 @node Outlines, Headlines, Document Structure, Document Structure
775 @section Outlines
776 @cindex outlines
777 @cindex Outline mode
779 Org is implemented on top of Outline mode.  Outlines allow a
780 document to be organized in a hierarchical structure, which (at least
781 for me) is the best representation of notes and thoughts.  An overview
782 of this structure is achieved by folding (hiding) large parts of the
783 document to show only the general document structure and the parts
784 currently being worked on.  Org greatly simplifies the use of
785 outlines by compressing the entire show/hide functionality into a single
786 command, @command{org-cycle}, which is bound to the @key{TAB} key.
788 @node Headlines, Visibility cycling, Outlines, Document Structure
789 @section Headlines
790 @cindex headlines
791 @cindex outline tree
792 @vindex org-special-ctrl-a/e
793 @vindex org-special-ctrl-k
794 @vindex org-ctrl-k-protect-subtree
796 Headlines define the structure of an outline tree.  The headlines in Org
797 start with one or more stars, on the left margin@footnote{See the variables
798 @code{org-special-ctrl-a/e}, @code{org-special-ctrl-k}, and
799 @code{org-ctrl-k-protect-subtree} to configure special behavior of @kbd{C-a},
800 @kbd{C-e}, and @kbd{C-k} in headlines.}.  For example:
802 @example
803 * Top level headline
804 ** Second level
805 *** 3rd level
806     some text
807 *** 3rd level
808     more text
810 * Another top level headline
811 @end example
813 @noindent Some people find the many stars too noisy and would prefer an
814 outline that has whitespace followed by a single star as headline
815 starters.  @ref{Clean view}, describes a setup to realize this.
817 @vindex org-cycle-separator-lines
818 An empty line after the end of a subtree is considered part of it and
819 will be hidden when the subtree is folded.  However, if you leave at
820 least two empty lines, one empty line will remain visible after folding
821 the subtree, in order to structure the collapsed view.  See the
822 variable @code{org-cycle-separator-lines} to modify this behavior.
824 @node Visibility cycling, Motion, Headlines, Document Structure
825 @section Visibility cycling
826 @cindex cycling, visibility
827 @cindex visibility cycling
828 @cindex trees, visibility
829 @cindex show hidden text
830 @cindex hide text
832 Outlines make it possible to hide parts of the text in the buffer.
833 Org uses just two commands, bound to @key{TAB} and
834 @kbd{S-@key{TAB}} to change the visibility in the buffer.
836 @cindex subtree visibility states
837 @cindex subtree cycling
838 @cindex folded, subtree visibility state
839 @cindex children, subtree visibility state
840 @cindex subtree, subtree visibility state
841 @table @kbd
842 @kindex @key{TAB}
843 @item @key{TAB}
844 @emph{Subtree cycling}: Rotate current subtree among the states
846 @example
847 ,-> FOLDED -> CHILDREN -> SUBTREE --.
848 '-----------------------------------'
849 @end example
851 @vindex org-cycle-emulate-tab
852 @vindex org-cycle-global-at-bob
853 The cursor must be on a headline for this to work@footnote{see, however,
854 the option @code{org-cycle-emulate-tab}.}.  When the cursor is at the
855 beginning of the buffer and the first line is not a headline, then
856 @key{TAB} actually runs global cycling (see below)@footnote{see the
857 option @code{org-cycle-global-at-bob}.}.  Also when called with a prefix
858 argument (@kbd{C-u @key{TAB}}), global cycling is invoked.
860 @cindex global visibility states
861 @cindex global cycling
862 @cindex overview, global visibility state
863 @cindex contents, global visibility state
864 @cindex show all, global visibility state
865 @kindex S-@key{TAB}
866 @item S-@key{TAB}
867 @itemx C-u @key{TAB}
868 @emph{Global cycling}: Rotate the entire buffer among the states
870 @example
871 ,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
872 '--------------------------------------'
873 @end example
875 When @kbd{S-@key{TAB}} is called with a numeric prefix argument N, the
876 CONTENTS view up to headlines of level N will be shown.  Note that inside
877 tables, @kbd{S-@key{TAB}} jumps to the previous field.
879 @cindex show all, command
880 @kindex C-u C-u C-u @key{TAB}
881 @item C-u C-u C-u @key{TAB}
882 Show all, including drawers.
883 @kindex C-c C-r
884 @item C-c C-r
885 Reveal context around point, showing the current entry, the following heading
886 and the hierarchy above.  Useful for working near a location that has been
887 exposed by a sparse tree command (@pxref{Sparse trees}) or an agenda command
888 (@pxref{Agenda commands}).  With a prefix argument show, on each
889 level, all sibling headings.  With double prefix arg, also show the entire
890 subtree of the parent.
891 @kindex C-c C-k
892 @item C-c C-k
893 Expose all the headings of the subtree, CONTENT view for just one subtree.
894 @kindex C-c C-x b
895 @item C-c C-x b
896 Show the current subtree in an indirect buffer@footnote{The indirect
897 buffer
898 @ifinfo
899 (@pxref{Indirect Buffers,,,emacs,GNU Emacs Manual})
900 @end ifinfo
901 @ifnotinfo
902 (see the Emacs manual for more information about indirect buffers)
903 @end ifnotinfo
904 will contain the entire buffer, but will be narrowed to the current
905 tree.  Editing the indirect buffer will also change the original buffer,
906 but without affecting visibility in that buffer.}.  With a numeric
907 prefix argument N, go up to level N and then take that tree.  If N is
908 negative then go up that many levels.  With a @kbd{C-u} prefix, do not remove
909 the previously used indirect buffer.
910 @end table
912 @vindex org-startup-folded
913 @cindex @code{overview}, STARTUP keyword
914 @cindex @code{content}, STARTUP keyword
915 @cindex @code{showall}, STARTUP keyword
916 @cindex @code{showeverything}, STARTUP keyword
918 When Emacs first visits an Org file, the global state is set to
919 OVERVIEW, i.e. only the top level headlines are visible.  This can be
920 configured through the variable @code{org-startup-folded}, or on a
921 per-file basis by adding one of the following lines anywhere in the
922 buffer:
924 @example
925 #+STARTUP: overview
926 #+STARTUP: content
927 #+STARTUP: showall
928 #+STARTUP: showeverything
929 @end example
931 @cindex property, VISIBILITY
932 @noindent
933 Furthermore, any entries with a @samp{VISIBILITY} property (@pxref{Properties
934 and Columns}) will get their visibility adapted accordingly.  Allowed values
935 for this property are @code{folded}, @code{children}, @code{content}, and
936 @code{all}.
937 @table @kbd
938 @kindex C-u C-u @key{TAB}
939 @item C-u C-u @key{TAB}
940 Switch back to the startup visibility of the buffer, i.e. whatever is
941 requested by startup options and @samp{VISIBILITY} properties in individual
942 entries.
943 @end table
945 @node Motion, Structure editing, Visibility cycling, Document Structure
946 @section Motion
947 @cindex motion, between headlines
948 @cindex jumping, to headlines
949 @cindex headline navigation
950 The following commands jump to other headlines in the buffer.
952 @table @kbd
953 @kindex C-c C-n
954 @item C-c C-n
955 Next heading.
956 @kindex C-c C-p
957 @item C-c C-p
958 Previous heading.
959 @kindex C-c C-f
960 @item C-c C-f
961 Next heading same level.
962 @kindex C-c C-b
963 @item C-c C-b
964 Previous heading same level.
965 @kindex C-c C-u
966 @item C-c C-u
967 Backward to higher level heading.
968 @kindex C-c C-j
969 @item C-c C-j
970 Jump to a different place without changing the current outline
971 visibility.  Shows the document structure in a temporary buffer, where
972 you can use the following keys to find your destination:
973 @vindex org-goto-auto-isearch
974 @example
975 @key{TAB}         @r{Cycle visibility.}
976 @key{down} / @key{up}   @r{Next/previous visible headline.}
977 @key{RET}         @r{Select this location.}
978 @kbd{/}           @r{Do a Sparse-tree search}
979 @r{The following keys work if you turn off @code{org-goto-auto-isearch}}
980 n / p        @r{Next/previous visible headline.}
981 f / b        @r{Next/previous headline same level.}
982 u            @r{One level up.}
983 0-9          @r{Digit argument.}
984 q            @r{Quit}
985 @end example
986 @vindex org-goto-interface
987 @noindent
988 See also the variable @code{org-goto-interface}.
989 @end table
991 @node Structure editing, Sparse trees, Motion, Document Structure
992 @section Structure editing
993 @cindex structure editing
994 @cindex headline, promotion and demotion
995 @cindex promotion, of subtrees
996 @cindex demotion, of subtrees
997 @cindex subtree, cut and paste
998 @cindex pasting, of subtrees
999 @cindex cutting, of subtrees
1000 @cindex copying, of subtrees
1001 @cindex sorting, of subtrees
1002 @cindex subtrees, cut and paste
1004 @table @kbd
1005 @kindex M-@key{RET}
1006 @item M-@key{RET}
1007 @vindex org-M-RET-may-split-line
1008 Insert new heading with same level as current.  If the cursor is in a
1009 plain list item, a new item is created (@pxref{Plain lists}).  To force
1010 creation of a new headline, use a prefix argument, or first press @key{RET}
1011 to get to the beginning of the next line.  When this command is used in
1012 the middle of a line, the line is split and the rest of the line becomes
1013 the new headline@footnote{If you do not want the line to be split,
1014 customize the variable @code{org-M-RET-may-split-line}.}.  If the
1015 command is used at the beginning of a headline, the new headline is
1016 created before the current line.  If at the beginning of any other line,
1017 the content of that line is made the new heading.  If the command is
1018 used at the end of a folded subtree (i.e. behind the ellipses at the end
1019 of a headline), then a headline like the current one will be inserted
1020 after the end of the subtree.
1021 @kindex C-@key{RET}
1022 @item C-@key{RET}
1023 Just like @kbd{M-@key{RET}}, except when adding a new heading below the
1024 current heading, the new heading is placed after the body instead of before
1025 it.  This command works from anywhere in the entry.
1026 @kindex M-S-@key{RET}
1027 @item M-S-@key{RET}
1028 @vindex org-treat-insert-todo-heading-as-state-change
1029 Insert new TODO entry with same level as current heading.  See also the
1030 variable @code{org-treat-insert-todo-heading-as-state-change}.
1031 @kindex C-S-@key{RET}
1032 @item C-S-@key{RET}
1033 Insert new TODO entry with same level as current heading.  Like
1034 @kbd{C-@key{RET}}, the new headline will be inserted after the current
1035 subtree.
1036 @kindex @key{TAB}
1037 @item @key{TAB} @r{in new, empty entry}
1038 In a new entry with no text yet, the first @key{TAB} demotes the entry to
1039 become a child of the previous one.  The next @key{TAB} makes it a parent,
1040 and so on, all the way to top level.  Yet another @key{TAB}, and you are back
1041 to the initial level.
1042 @kindex M-@key{left}
1043 @item M-@key{left}
1044 Promote current heading by one level.
1045 @kindex M-@key{right}
1046 @item M-@key{right}
1047 Demote current heading by one level.
1048 @kindex M-S-@key{left}
1049 @item M-S-@key{left}
1050 Promote the current subtree by one level.
1051 @kindex M-S-@key{right}
1052 @item M-S-@key{right}
1053 Demote the current subtree by one level.
1054 @kindex M-S-@key{up}
1055 @item M-S-@key{up}
1056 Move subtree up (swap with previous subtree of same
1057 level).
1058 @kindex M-S-@key{down}
1059 @item M-S-@key{down}
1060 Move subtree down (swap with next subtree of same level).
1061 @kindex C-c C-x C-w
1062 @item C-c C-x C-w
1063 Kill subtree, i.e. remove it from buffer but save in kill ring.
1064 With a numeric prefix argument N, kill N sequential subtrees.
1065 @kindex C-c C-x M-w
1066 @item C-c C-x M-w
1067 Copy subtree to kill ring.  With a numeric prefix argument N, copy the N
1068 sequential subtrees.
1069 @kindex C-c C-x C-y
1070 @item C-c C-x C-y
1071 Yank subtree from kill ring.  This does modify the level of the subtree to
1072 make sure the tree fits in nicely at the yank position.  The yank level can
1073 also be specified with a numeric prefix argument, or by yanking after a
1074 headline marker like @samp{****}.
1075 @kindex C-y
1076 @item C-y
1077 @vindex org-yank-adjusted-subtrees
1078 @vindex org-yank-folded-subtrees
1079 Depending on the variables @code{org-yank-adjusted-subtrees} and
1080 @code{org-yank-folded-subtrees}, Org's internal @code{yank} command will
1081 paste subtrees folded and in a clever way, using the same command as @kbd{C-c
1082 C-x C-y}.  With the default settings, no level adjustment will take place,
1083 but the yanked tree will be folded unless doing so would swallow text
1084 previously visible.  Any prefix argument to this command will force a normal
1085 @code{yank} to be executed, with the prefix passed along.  A good way to
1086 force a normal yank is @kbd{C-u C-y}.  If you use @code{yank-pop} after a
1087 yank, it will yank previous kill items plainly, without adjustment and
1088 folding.
1089 @kindex C-c C-x c
1090 @item C-c C-x c
1091 Clone a subtree by making a number of sibling copies of it.  You will be
1092 prompted for the number of copies to make, and you can also specify if any
1093 timestamps in the entry should be shifted.  This can be useful, for example,
1094 to create a number of tasks related to a series of lectures to prepare.  For
1095 more details, see the docstring of the command
1096 @code{org-clone-subtree-with-time-shift}.
1097 @kindex C-c C-w
1098 @item C-c C-w
1099 Refile entry or region to a different location.  @xref{Refiling notes}.
1100 @kindex C-c ^
1101 @item C-c ^
1102 Sort same-level entries.  When there is an active region, all entries in the
1103 region will be sorted.  Otherwise the children of the current headline are
1104 sorted.  The command prompts for the sorting method, which can be
1105 alphabetically, numerically, by time (first timestamp with active preferred,
1106 creation time, scheduled time, deadline time), by priority, by TODO keyword
1107 (in the sequence the keywords have been defined in the setup) or by the value
1108 of a property.  Reverse sorting is possible as well.  You can also supply
1109 your own function to extract the sorting key.  With a @kbd{C-u} prefix,
1110 sorting will be case-sensitive.  With two @kbd{C-u C-u} prefixes, duplicate
1111 entries will also be removed.
1112 @kindex C-x n s
1113 @item C-x n s
1114 Narrow buffer to current subtree.
1115 @kindex C-x n w
1116 @item C-x n w
1117 Widen buffer to remove narrowing.
1118 @kindex C-c *
1119 @item C-c *
1120 Turn a normal line or plain list item into a headline (so that it becomes a
1121 subheading at its location).  Also turn a headline into a normal line by
1122 removing the stars.  If there is an active region, turn all lines in the
1123 region into headlines.  If the first line in the region was an item, turn
1124 only the item lines into headlines.  Finally, if the first line is a
1125 headline, remove the stars from all headlines in the region.
1126 @end table
1128 @cindex region, active
1129 @cindex active region
1130 @cindex transient mark mode
1131 When there is an active region (Transient Mark mode), promotion and
1132 demotion work on all headlines in the region.  To select a region of
1133 headlines, it is best to place both point and mark at the beginning of a
1134 line, mark at the beginning of the first headline, and point at the line
1135 just after the last headline to change.  Note that when the cursor is
1136 inside a table (@pxref{Tables}), the Meta-Cursor keys have different
1137 functionality.
1140 @node Sparse trees, Plain lists, Structure editing, Document Structure
1141 @section Sparse trees
1142 @cindex sparse trees
1143 @cindex trees, sparse
1144 @cindex folding, sparse trees
1145 @cindex occur, command
1147 @vindex org-show-hierarchy-above
1148 @vindex org-show-following-heading
1149 @vindex org-show-siblings
1150 @vindex org-show-entry-below
1151 An important feature of Org mode is the ability to construct @emph{sparse
1152 trees} for selected information in an outline tree, so that the entire
1153 document is folded as much as possible, but the selected information is made
1154 visible along with the headline structure above it@footnote{See also the
1155 variables @code{org-show-hierarchy-above}, @code{org-show-following-heading},
1156 @code{org-show-siblings}, and @code{org-show-entry-below} for detailed
1157 control on how much context is shown around each match.}.  Just try it out
1158 and you will see immediately how it works.
1160 Org mode contains several commands creating such trees, all these
1161 commands can be accessed through a dispatcher:
1163 @table @kbd
1164 @kindex C-c /
1165 @item C-c /
1166 This prompts for an extra key to select a sparse-tree creating command.
1167 @kindex C-c / r
1168 @item C-c / r
1169 @vindex org-remove-highlights-with-change
1170 Occur.  Prompts for a regexp and shows a sparse tree with all matches.  If
1171 the match is in a headline, the headline is made visible.  If the match is in
1172 the body of an entry, headline and body are made visible.  In order to
1173 provide minimal context, also the full hierarchy of headlines above the match
1174 is shown, as well as the headline following the match.  Each match is also
1175 highlighted; the highlights disappear when the buffer is changed by an
1176 editing command@footnote{This depends on the option
1177 @code{org-remove-highlights-with-change}}, or by pressing @kbd{C-c C-c}.
1178 When called with a @kbd{C-u} prefix argument, previous highlights are kept,
1179 so several calls to this command can be stacked.
1180 @end table
1182 @noindent
1183 @vindex org-agenda-custom-commands
1184 For frequently used sparse trees of specific search strings, you can
1185 use the variable @code{org-agenda-custom-commands} to define fast
1186 keyboard access to specific sparse trees.  These commands will then be
1187 accessible through the agenda dispatcher (@pxref{Agenda dispatcher}).
1188 For example:
1190 @lisp
1191 (setq org-agenda-custom-commands
1192       '(("f" occur-tree "FIXME")))
1193 @end lisp
1195 @noindent will define the key @kbd{C-c a f} as a shortcut for creating
1196 a sparse tree matching the string @samp{FIXME}.
1198 The other sparse tree commands select headings based on TODO keywords,
1199 tags, or properties and will be discussed later in this manual.
1201 @kindex C-c C-e v
1202 @cindex printing sparse trees
1203 @cindex visible text, printing
1204 To print a sparse tree, you can use the Emacs command
1205 @code{ps-print-buffer-with-faces} which does not print invisible parts
1206 of the document @footnote{This does not work under XEmacs, because
1207 XEmacs uses selective display for outlining, not text properties.}.
1208 Or you can use the command @kbd{C-c C-e v} to export only the visible
1209 part of the document and print the resulting file.
1211 @node Plain lists, Drawers, Sparse trees, Document Structure
1212 @section Plain lists
1213 @cindex plain lists
1214 @cindex lists, plain
1215 @cindex lists, ordered
1216 @cindex ordered lists
1218 Within an entry of the outline tree, hand-formatted lists can provide
1219 additional structure.  They also provide a way to create lists of
1220 checkboxes (@pxref{Checkboxes}).  Org supports editing such lists,
1221 and the HTML exporter (@pxref{Exporting}) parses and formats them.
1223 Org knows ordered lists, unordered lists, and description lists.
1224 @itemize @bullet
1225 @item
1226 @emph{Unordered} list items start with @samp{-}, @samp{+}, or
1227 @samp{*}@footnote{When using @samp{*} as a bullet, lines must be indented or
1228 they will be seen as top-level headlines.  Also, when you are hiding leading
1229 stars to get a clean outline view, plain list items starting with a star are
1230 visually indistinguishable from true headlines.  In short: even though
1231 @samp{*} is supported, it may be better to not use it for plain list items.}
1232 as bullets.
1233 @item
1234 @emph{Ordered} list items start with a numeral followed by either a period or
1235 a right parenthesis, such as @samp{1.} or @samp{1)}.  If you want a list to
1236 start a different value (e.g. 20), start the text of the item with
1237 @code{[@@start:20]}. 
1238 @item
1239 @emph{Description} list items are unordered list items, and contain the
1240 separator @samp{ :: } to separate the description @emph{term} from the
1241 description.
1242 @end itemize
1244 @vindex org-empty-line-terminates-plain-lists
1245 Items belonging to the same list must have the same indentation on the first
1246 line.  In particular, if an ordered list reaches number @samp{10.}, then the
1247 2--digit numbers must be written left-aligned with the other numbers in the
1248 list.  Indentation also determines the end of a list item.  It ends before
1249 the next line that is indented like the bullet/number, or less.  Empty lines
1250 are part of the previous item, so you can have several paragraphs in one
1251 item.  If you would like an empty line to terminate all currently open plain
1252 lists, configure the variable @code{org-empty-line-terminates-plain-lists}.
1253 Here is an example:
1255 @example
1256 @group
1257 ** Lord of the Rings
1258    My favorite scenes are (in this order)
1259    1. The attack of the Rohirrim
1260    2. Eowyn's fight with the witch king
1261       + this was already my favorite scene in the book
1262       + I really like Miranda Otto.
1263    3. Peter Jackson being shot by Legolas
1264        - on DVD only
1265       He makes a really funny face when it happens.
1266    But in the end, no individual scenes matter but the film as a whole.
1267    Important actors in this film are:
1268    - @b{Elijah Wood} :: He plays Frodo
1269    - @b{Sean Austin} :: He plays Sam, Frodo's friend.  I still remember
1270      him very well from his role as Mikey Walsh in @i{The Goonies}.
1271 @end group
1272 @end example
1274 Org supports these lists by tuning filling and wrapping commands to deal with
1275 them correctly@footnote{Org only changes the filling settings for Emacs.  For
1276 XEmacs, you should use Kyle E. Jones' @file{filladapt.el}.  To turn this on,
1277 put into @file{.emacs}: @code{(require 'filladapt)}}, and by exporting them
1278 properly (@pxref{Exporting}).  Since indentation is what governs the
1279 structure of these lists, many structural constructs like @code{#+BEGIN_...}
1280 blocks can be indented to signal that they should be part of a list item.
1282 @vindex org-list-demote-modify-bullet
1283 If you find that using a different bullet for a sub-list (than that used for
1284 the current list-level) improves readability, customize the variable
1285 @code{org-list-demote-modify-bullet}.
1287 The following commands act on items when the cursor is in the first line
1288 of an item (the line with the bullet or number).
1290 @table @kbd
1291 @kindex @key{TAB}
1292 @item @key{TAB}
1293 @vindex org-cycle-include-plain-lists
1294 Items can be folded just like headline levels.  Normally this works only if
1295 the cursor is on a plain list item.  For more details, see the variable
1296 @code{org-cycle-include-plain-lists}. to @code{integrate}, plain list items
1297 will be treated like low-level.  The level of an item is then given by the
1298 indentation of the bullet/number.  Items are always subordinate to real
1299 headlines, however; the hierarchies remain completely separated.
1301 If @code{org-cycle-include-plain-lists} has not been set, @key{TAB}
1302 fixes the indentation of the current line in a heuristic way.
1303 @kindex M-@key{RET}
1304 @item M-@key{RET}
1305 @vindex org-M-RET-may-split-line
1306 Insert new item at current level.  With a prefix argument, force a new
1307 heading (@pxref{Structure editing}).  If this command is used in the middle
1308 of a line, the line is @emph{split} and the rest of the line becomes the new
1309 item@footnote{If you do not want the line to be split, customize the variable
1310 @code{org-M-RET-may-split-line}.}.  If this command is executed in the
1311 @emph{whitespace before a bullet or number}, the new item is created
1312 @emph{before} the current item.  If the command is executed in the white
1313 space before the text that is part of an item but does not contain the
1314 bullet, a bullet is added to the current line.
1315 @kindex M-S-@key{RET}
1316 @item M-S-@key{RET}
1317 Insert a new item with a checkbox (@pxref{Checkboxes}).
1318 @kindex @key{TAB}
1319 @item @key{TAB} @r{in new, empty item}
1320 In a new item with no text yet, the first @key{TAB} demotes the item to
1321 become a child of the previous one.  The next @key{TAB} makes it a parent,
1322 and so on, all the way to the left margin.  Yet another @key{TAB}, and you
1323 are back to the initial level.
1324 @kindex S-@key{up}
1325 @kindex S-@key{down}
1326 @item S-@key{up}
1327 @itemx S-@key{down}
1328 @cindex shift-selection-mode
1329 @vindex org-support-shift-select
1330 Jump to the previous/next item in the current list, but only if
1331 @code{org-support-shift-select} is off.  If not, you can still use paragraph
1332 jumping commands like @kbd{C-@key{up}} and @kbd{C-@key{down}} to quite
1333 similar effect.
1334 @kindex M-S-@key{up}
1335 @kindex M-S-@key{down}
1336 @item M-S-@key{up}
1337 @itemx M-S-@key{down}
1338 Move the item including subitems up/down (swap with previous/next item
1339 of same indentation).  If the list is ordered, renumbering is
1340 automatic.
1341 @kindex M-@key{left}
1342 @kindex M-@key{right}
1343 @item M-@key{left}
1344 @itemx M-@key{right}
1345 Decrease/increase the indentation of an item, leaving children alone.
1346 @kindex M-S-@key{left}
1347 @kindex M-S-@key{right}
1348 @item M-S-@key{left}
1349 @itemx M-S-@key{right}
1350 Decrease/increase the indentation of the item, including subitems.
1351 Initially, the item tree is selected based on current indentation.
1352 When these commands are executed several times in direct succession,
1353 the initially selected region is used, even if the new indentation
1354 would imply a different hierarchy.  To use the new hierarchy, break
1355 the command chain with a cursor motion or so.
1356 @kindex C-c C-c
1357 @item C-c C-c
1358 If there is a checkbox (@pxref{Checkboxes}) in the item line, toggle the
1359 state of the checkbox.  If not, this command makes sure that all the
1360 items on this list level use the same bullet.  Furthermore, if this is
1361 an ordered list, make sure the numbering is OK.
1362 @kindex C-c -
1363 @item C-c -
1364 Cycle the entire list level through the different itemize/enumerate bullets
1365 (@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}).  With a numeric prefix
1366 argument N, select the Nth bullet from this list.  If there is an active
1367 region when calling this, all lines will be converted to list items.  If the
1368 first line already was a list item, any item markers will be removed from the
1369 list.  Finally, even without an active region, a normal line will be
1370 converted into a list item.
1371 @kindex C-c *
1372 @item C-c *
1373 Turn a plain list item into a headline (so that it becomes a subheading at
1374 its location). @xref{Structure editing}, for a detailed explanation.
1375 @kindex S-@key{left}
1376 @kindex S-@key{right}
1377 @item S-@key{left}/@key{right}
1378 @vindex org-support-shift-select
1379 This command also cycles bullet styles when the cursor in on the bullet or
1380 anywhere in an item line, details depending on
1381 @code{org-support-shift-select}.
1382 @kindex C-c ^
1383 @item C-c ^
1384 Sort the plain list.  You will be prompted for the sorting method:
1385 numerically, alphabetically, by time, or by custom function.
1386 @end table
1388 @node Drawers, Blocks, Plain lists, Document Structure
1389 @section Drawers
1390 @cindex drawers
1391 @cindex #+DRAWERS
1392 @cindex visibility cycling, drawers
1394 @vindex org-drawers
1395 Sometimes you want to keep information associated with an entry, but you
1396 normally don't want to see it.  For this, Org mode has @emph{drawers}.
1397 Drawers need to be configured with the variable
1398 @code{org-drawers}@footnote{You can define drawers on a per-file basis
1399 with a line like @code{#+DRAWERS: HIDDEN PROPERTIES STATE}}.  Drawers
1400 look like this:
1402 @example
1403 ** This is a headline
1404    Still outside the drawer
1405    :DRAWERNAME:
1406       This is inside the drawer.
1407    :END:
1408    After the drawer.
1409 @end example
1411 Visibility cycling (@pxref{Visibility cycling}) on the headline will hide and
1412 show the entry, but keep the drawer collapsed to a single line.  In order to
1413 look inside the drawer, you need to move the cursor to the drawer line and
1414 press @key{TAB} there.  Org mode uses the @code{PROPERTIES} drawer for
1415 storing properties (@pxref{Properties and Columns}), and you can also arrange
1416 for state change notes (@pxref{Tracking TODO state changes}) and clock times
1417 (@pxref{Clocking work time}) to be stored in a drawer @code{LOGBOOK}.  If you
1418 want to store a quick note in the LOGBOOK drawer, in a similar way as this is
1419 done by state changes, use
1421 @table @kbd
1422 @kindex C-c C-z
1423 @item C-c C-z
1424 Add a time-stamped note to the LOGBOOK drawer.
1425 @end table
1427 @node Blocks, Footnotes, Drawers, Document Structure
1428 @section Blocks
1430 @vindex org-hide-block-startup
1431 @cindex blocks, folding
1432 Org-mode uses begin...end blocks for various purposes from including source
1433 code examples (@pxref{Literal examples}) to capturing time logging
1434 information (@pxref{Clocking work time}).  These blocks can be folded and
1435 unfolded by pressing TAB in the begin line.  You can also get all blocks
1436 folded at startup by configuring the variable @code{org-hide-block-startup}
1437 or on a per-file basis by using
1439 @cindex @code{hideblocks}, STARTUP keyword
1440 @cindex @code{nohideblocks}, STARTUP keyword
1441 @example
1442 #+STARTUP: hideblocks
1443 #+STARTUP: nohideblocks
1444 @end example
1446 @node Footnotes, Orgstruct mode, Blocks, Document Structure
1447 @section Footnotes
1448 @cindex footnotes
1450 Org mode supports the creation of footnotes.  In contrast to the
1451 @file{footnote.el} package, Org mode's footnotes are designed for work on a
1452 larger document, not only for one-off documents like emails.  The basic
1453 syntax is similar to the one used by @file{footnote.el}, i.e. a footnote is
1454 defined in a paragraph that is started by a footnote marker in square
1455 brackets in column 0, no indentation allowed.  If you need a paragraph break
1456 inside a footnote, use the La@TeX{} idiom @samp{\par}.  The footnote reference
1457 is simply the marker in square brackets, inside text.  For example:
1459 @example
1460 The Org homepage[fn:1] now looks a lot better than it used to.
1462 [fn:1] The link is: http://orgmode.org
1463 @end example
1465 Org mode extends the number-based syntax to @emph{named} footnotes and
1466 optional inline definition.  Using plain numbers as markers (as
1467 @file{footnote.el} does) is supported for backward compatibility, but not
1468 encouraged because of possible conflicts with La@TeX{} snippets (@pxref{Embedded
1469 LaTeX}).  Here are the valid references:
1471 @table @code
1472 @item [1]
1473 A plain numeric footnote marker.  Compatible with @file{footnote.el}, but not
1474 recommended because somthing like @samp{[1]} could easily be part of a code
1475 snippet.
1476 @item [fn:name]
1477 A named footnote reference, where @code{name} is a unique label word, or, for
1478 simplicity of automatic creation, a number.
1479 @item [fn:: This is the inline definition of this footnote]
1480 A La@TeX{}-like anonymous footnote where the definition is given directly at the
1481 reference point.
1482 @item [fn:name: a definition]
1483 An inline definition of a footnote, which also specifies a name for the note.
1484 Since Org allows multiple references to the same note, you can then use
1485 @code{[fn:name]} to create additional references.
1486 @end table
1488 @vindex org-footnote-auto-label
1489 Footnote labels can be created automatically, or you can create names yourself.
1490 This is handled by the variable @code{org-footnote-auto-label} and its
1491 corresponding @code{#+STARTUP} keywords, see the docstring of that variable
1492 for details.
1494 @noindent The following command handles footnotes:
1496 @table @kbd
1497 @kindex C-c C-x f
1498 @item C-c C-x f
1499 The footnote action command.
1501 When the cursor is on a footnote reference, jump to the definition.  When it
1502 is at a definition, jump to the (first) reference.
1504 @vindex org-footnote-define-inline
1505 @vindex org-footnote-section
1506 @vindex org-footnote-auto-adjust
1507 Otherwise, create a new footnote.  Depending on the variable
1508 @code{org-footnote-define-inline}@footnote{The corresponding in-buffer
1509 setting is: @code{#+STARTUP: fninline} or @code{#+STARTUP: nofninline}}, the
1510 definition will be placed right into the text as part of the reference, or
1511 separately into the location determined by the variable
1512 @code{org-footnote-section}.
1514 When this command is called with a prefix argument, a menu of additional
1515 options is offered:
1516 @example
1517 s   @r{Sort the footnote definitions by reference sequence.  During editing,}
1518     @r{Org makes no effort to sort footnote definitions into a particular}
1519     @r{sequence.  If you want them sorted, use this command, which will}
1520     @r{also move entries according to @code{org-footnote-section}.  Automatic}
1521     @r{sorting after each insertion/deletion can be configured using the}
1522     @r{variable @code{org-footnote-auto-adjust}.}
1523 r   @r{Renumber the simple @code{fn:N} footnotes.  Automatic renumbering}
1524     @r{after each insertion/deletion can be configured using the variable}
1525     @r{@code{org-footnote-auto-adjust}.}
1526 S   @r{Short for first @code{r}, then @code{s} action.}
1527 n   @r{Normalize the footnotes by collecting all definitions (including}
1528     @r{inline definitions) into a special section, and then numbering them}
1529     @r{in sequence.  The references will then also be numbers.  This is}
1530     @r{meant to be the final step before finishing a document (e.g. sending}
1531     @r{off an email).  The exporters do this automatically, and so could}
1532     @r{something like @code{message-send-hook}.}
1533 d   @r{Delete the footnote at point, and all definitions of and references}
1534     @r{to it.}
1535 @end example
1536 Depending on the variable @code{org-footnote-auto-adjust}@footnote{the
1537 corresponding in-buffer options are @code{fnadjust} and @code{nofnadjust}.},
1538 renumbering and sorting footnotes can be automatic after each insertion or
1539 deletion.
1541 @kindex C-c C-c
1542 @item C-c C-c
1543 If the cursor is on a footnote reference, jump to the definition.  If it is a
1544 the definition, jump back to the reference.  When called at a footnote
1545 location with a prefix argument, offer the same menu as @kbd{C-c C-x f}.
1546 @kindex C-c C-o
1547 @kindex mouse-1
1548 @kindex mouse-2
1549 @item C-c C-o  @r{or} mouse-1/2
1550 Footnote labels are also links to the corresponding definition/reference, and
1551 you can use the usual commands to follow these links.
1552 @end table
1554 @node Orgstruct mode,  , Footnotes, Document Structure
1555 @section The Orgstruct minor mode
1556 @cindex Orgstruct mode
1557 @cindex minor mode for structure editing
1559 If you like the intuitive way the Org mode structure editing and list
1560 formatting works, you might want to use these commands in other modes like
1561 Text mode or Mail mode as well.  The minor mode @code{orgstruct-mode} makes
1562 this possible.   Toggle the mode with @kbd{M-x orgstruct-mode}, or
1563 turn it on by default, for example in Mail mode, with one of:
1565 @lisp
1566 (add-hook 'mail-mode-hook 'turn-on-orgstruct)
1567 (add-hook 'mail-mode-hook 'turn-on-orgstruct++)
1568 @end lisp
1570 When this mode is active and the cursor is on a line that looks to Org like a
1571 headline or the first line of a list item, most structure editing commands
1572 will work, even if the same keys normally have different functionality in the
1573 major mode you are using.  If the cursor is not in one of those special
1574 lines, Orgstruct mode lurks silently in the shadow.  When you use
1575 @code{orgstruct++-mode}, Org will also export indentation and autofill
1576 settings into that mode, and detect item context after the first line of an
1577 item.
1579 @node Tables, Hyperlinks, Document Structure, Top
1580 @chapter Tables
1581 @cindex tables
1582 @cindex editing tables
1584 Org comes with a fast and intuitive table editor.  Spreadsheet-like
1585 calculations are supported in connection with the Emacs @file{calc}
1586 package
1587 @ifinfo
1588 (@pxref{Top,Calc,,Calc,Gnu Emacs Calculator Manual}).
1589 @end ifinfo
1590 @ifnotinfo
1591 (see the Emacs Calculator manual for more information about the Emacs
1592 calculator).
1593 @end ifnotinfo
1595 @menu
1596 * Built-in table editor::       Simple tables
1597 * Column width and alignment::  Overrule the automatic settings
1598 * Column groups::               Grouping to trigger vertical lines
1599 * Orgtbl mode::                 The table editor as minor mode
1600 * The spreadsheet::             The table editor has spreadsheet capabilities
1601 * Org-Plot::                    Plotting from org tables
1602 @end menu
1604 @node Built-in table editor, Column width and alignment, Tables, Tables
1605 @section The built-in table editor
1606 @cindex table editor, built-in
1608 Org makes it easy to format tables in plain ASCII.  Any line with
1609 @samp{|} as the first non-whitespace character is considered part of a
1610 table.  @samp{|} is also the column separator.  A table might look like
1611 this:
1613 @example
1614 | Name  | Phone | Age |
1615 |-------+-------+-----|
1616 | Peter |  1234 |  17 |
1617 | Anna  |  4321 |  25 |
1618 @end example
1620 A table is re-aligned automatically each time you press @key{TAB} or
1621 @key{RET} or @kbd{C-c C-c} inside the table.  @key{TAB} also moves to
1622 the next field (@key{RET} to the next row) and creates new table rows
1623 at the end of the table or before horizontal lines.  The indentation
1624 of the table is set by the first line.  Any line starting with
1625 @samp{|-} is considered as a horizontal separator line and will be
1626 expanded on the next re-align to span the whole table width.  So, to
1627 create the above table, you would only type
1629 @example
1630 |Name|Phone|Age|
1632 @end example
1634 @noindent and then press @key{TAB} to align the table and start filling in
1635 fields.  Even faster would be to type @code{|Name|Phone|Age} followed by
1636 @kbd{C-c @key{RET}}.
1638 @vindex org-enable-table-editor
1639 @vindex org-table-auto-blank-field
1640 When typing text into a field, Org treats @key{DEL},
1641 @key{Backspace}, and all character keys in a special way, so that
1642 inserting and deleting avoids shifting other fields.  Also, when
1643 typing @emph{immediately after the cursor was moved into a new field
1644 with @kbd{@key{TAB}}, @kbd{S-@key{TAB}} or @kbd{@key{RET}}}, the
1645 field is automatically made blank.  If this behavior is too
1646 unpredictable for you, configure the variables
1647 @code{org-enable-table-editor} and @code{org-table-auto-blank-field}.
1649 @table @kbd
1650 @tsubheading{Creation and conversion}
1651 @kindex C-c |
1652 @item C-c |
1653 Convert the active region to table. If every line contains at least one
1654 TAB character, the function assumes that the material is tab separated.
1655 If every line contains a comma, comma-separated values (CSV) are assumed.
1656 If not, lines are split at whitespace into fields.  You can use a prefix
1657 argument to force a specific separator: @kbd{C-u} forces CSV, @kbd{C-u
1658 C-u} forces TAB, and a numeric argument N indicates that at least N
1659 consecutive spaces, or alternatively a TAB will be the separator.
1661 If there is no active region, this command creates an empty Org
1662 table.  But it's easier just to start typing, like
1663 @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
1665 @tsubheading{Re-aligning and field motion}
1666 @kindex C-c C-c
1667 @item C-c C-c
1668 Re-align the table without moving the cursor.
1670 @kindex @key{TAB}
1671 @item @key{TAB}
1672 Re-align the table, move to the next field.  Creates a new row if
1673 necessary.
1675 @kindex S-@key{TAB}
1676 @item S-@key{TAB}
1677 Re-align, move to previous field.
1679 @kindex @key{RET}
1680 @item @key{RET}
1681 Re-align the table and move down to next row.  Creates a new row if
1682 necessary.  At the beginning or end of a line, @key{RET} still does
1683 NEWLINE, so it can be used to split a table.
1685 @kindex M-a
1686 @item M-a
1687 Move to beginning of the current table field, or on to the previous field.
1688 @kindex M-e
1689 @item M-e
1690 Move to end of the current table field, or on to the next field.
1692 @tsubheading{Column and row editing}
1693 @kindex M-@key{left}
1694 @kindex M-@key{right}
1695 @item M-@key{left}
1696 @itemx M-@key{right}
1697 Move the current column left/right.
1699 @kindex M-S-@key{left}
1700 @item M-S-@key{left}
1701 Kill the current column.
1703 @kindex M-S-@key{right}
1704 @item M-S-@key{right}
1705 Insert a new column to the left of the cursor position.
1707 @kindex M-@key{up}
1708 @kindex M-@key{down}
1709 @item M-@key{up}
1710 @itemx M-@key{down}
1711 Move the current row up/down.
1713 @kindex M-S-@key{up}
1714 @item M-S-@key{up}
1715 Kill the current row or horizontal line.
1717 @kindex M-S-@key{down}
1718 @item M-S-@key{down}
1719 Insert a new row above the current row.  With a prefix argument, the line is
1720 created below the current one.
1722 @kindex C-c -
1723 @item C-c -
1724 Insert a horizontal line below current row.  With a prefix argument, the line
1725 is created above the current line.
1727 @kindex C-c @key{RET}
1728 @item C-c @key{RET}
1729 Insert a horizontal line below current row, and move the cursor into the row
1730 below that line.
1732 @kindex C-c ^
1733 @item C-c ^
1734 Sort the table lines in the region.  The position of point indicates the
1735 column to be used for sorting, and the range of lines is the range
1736 between the nearest horizontal separator lines, or the entire table.  If
1737 point is before the first column, you will be prompted for the sorting
1738 column.  If there is an active region, the mark specifies the first line
1739 and the sorting column, while point should be in the last line to be
1740 included into the sorting.  The command prompts for the sorting type
1741 (alphabetically, numerically, or by time).  When called with a prefix
1742 argument, alphabetic sorting will be case-sensitive.
1744 @tsubheading{Regions}
1745 @kindex C-c C-x M-w
1746 @item C-c C-x M-w
1747 Copy a rectangular region from a table to a special clipboard.  Point and
1748 mark determine edge fields of the rectangle.  If there is no active region,
1749 copy just the current field.  The process ignores horizontal separator lines.
1751 @kindex C-c C-x C-w
1752 @item C-c C-x C-w
1753 Copy a rectangular region from a table to a special clipboard, and
1754 blank all fields in the rectangle.  So this is the ``cut'' operation.
1756 @kindex C-c C-x C-y
1757 @item C-c C-x C-y
1758 Paste a rectangular region into a table.
1759 The upper left corner ends up in the current field.  All involved fields
1760 will be overwritten.  If the rectangle does not fit into the present table,
1761 the table is enlarged as needed.  The process ignores horizontal separator
1762 lines.
1764 @kindex M-@key{RET}
1765 @itemx M-@kbd{RET}
1766 Wrap several fields in a column like a paragraph.  If there is an active
1767 region, and both point and mark are in the same column, the text in the
1768 column is wrapped to minimum width for the given number of lines.  A numeric
1769 prefix argument may be used to change the number of desired lines.  If there
1770 is no region, the current field is split at the cursor position and the text
1771 fragment to the right of the cursor is prepended to the field one line
1772 down. If there is no region, but you specify a prefix argument, the current
1773 field is made blank, and the content is appended to the field above.
1775 @tsubheading{Calculations}
1776 @cindex formula, in tables
1777 @cindex calculations, in tables
1778 @cindex region, active
1779 @cindex active region
1780 @cindex transient mark mode
1781 @kindex C-c +
1782 @item C-c +
1783 Sum the numbers in the current column, or in the rectangle defined by
1784 the active region.  The result is shown in the echo area and can
1785 be inserted with @kbd{C-y}.
1787 @kindex S-@key{RET}
1788 @item S-@key{RET}
1789 @vindex org-table-copy-increment
1790 When current field is empty, copy from first non-empty field above.  When not
1791 empty, copy current field down to next row and move cursor along with it.
1792 Depending on the variable @code{org-table-copy-increment}, integer field
1793 values will be incremented during copy.  Integers that are too large will not
1794 be incremented.  Also, a @code{0} prefix argument temporarily disables the
1795 increment.  This key is also used by shift-selection and related modes
1796 (@pxref{Conflicts}).
1798 @tsubheading{Miscellaneous}
1799 @kindex C-c `
1800 @item C-c `
1801 Edit the current field in a separate window.  This is useful for fields that
1802 are not fully visible (@pxref{Column width and alignment}).  When called with
1803 a @kbd{C-u} prefix, just make the full field visible, so that it can be
1804 edited in place.
1806 @item M-x org-table-import
1807 Import a file as a table.  The table should be TAB or whitespace
1808 separated.  Use, for example, to import a spreadsheet table or data
1809 from a database, because these programs generally can write
1810 TAB-separated text files.  This command works by inserting the file into
1811 the buffer and then converting the region to a table.  Any prefix
1812 argument is passed on to the converter, which uses it to determine the
1813 separator.
1814 @item C-c |
1815 Tables can also be imported by pasting tabular text into the Org
1816 buffer, selecting the pasted text with @kbd{C-x C-x} and then using the
1817 @kbd{C-c |} command (see above under @i{Creation and conversion}).
1819 @item M-x org-table-export
1820 @vindex org-table-export-default-format
1821 Export the table, by default as a TAB-separated file.  Use for data
1822 exchange with, for example, spreadsheet or database programs.  The format
1823 used to export the file can be configured in the variable
1824 @code{org-table-export-default-format}.  You may also use properties
1825 @code{TABLE_EXPORT_FILE} and @code{TABLE_EXPORT_FORMAT} to specify the file
1826 name and the format for table export in a subtree.  Org supports quite
1827 general formats for exported tables.  The exporter format is the same as the
1828 format used by Orgtbl radio tables, see @ref{Translator functions}, for a
1829 detailed description.
1830 @end table
1832 If you don't like the automatic table editor because it gets in your
1833 way on lines which you would like to start with @samp{|}, you can turn
1834 it off with
1836 @lisp
1837 (setq org-enable-table-editor nil)
1838 @end lisp
1840 @noindent Then the only table command that still works is
1841 @kbd{C-c C-c} to do a manual re-align.
1843 @node Column width and alignment, Column groups, Built-in table editor, Tables
1844 @section Column width and alignment
1845 @cindex narrow columns in tables
1846 @cindex alignment in tables
1848 The width of columns is automatically determined by the table editor.  And
1849 also the alignment of a column is determined automatically from the fraction
1850 of number-like versus non-number fields in the column.
1852 Sometimes a single field or a few fields need to carry more text, leading to
1853 inconveniently wide columns.  Or maybe you want to make a table with several
1854 columns having a fixed width, regardless of content.  To set@footnote{This
1855 feature does not work on XEmacs.} the width of a column, one field anywhere
1856 in the column may contain just the string @samp{<N>} where @samp{N} is an
1857 integer specifying the width of the column in characters.  The next re-align
1858 will then set the width of this column to this value.
1860 @example
1861 @group
1862 |---+------------------------------|               |---+--------|
1863 |   |                              |               |   | <6>    |
1864 | 1 | one                          |               | 1 | one    |
1865 | 2 | two                          |     ----\     | 2 | two    |
1866 | 3 | This is a long chunk of text |     ----/     | 3 | This=> |
1867 | 4 | four                         |               | 4 | four   |
1868 |---+------------------------------|               |---+--------|
1869 @end group
1870 @end example
1872 @noindent
1873 Fields that are wider become clipped and end in the string @samp{=>}.
1874 Note that the full text is still in the buffer, it is only invisible.
1875 To see the full text, hold the mouse over the field---a tool-tip window
1876 will show the full content.  To edit such a field, use the command
1877 @kbd{C-c `} (that is @kbd{C-c} followed by the backquote).  This will
1878 open a new window with the full field.  Edit it and finish with @kbd{C-c
1879 C-c}.
1881 @vindex org-startup-align-all-tables
1882 When visiting a file containing a table with narrowed columns, the
1883 necessary character hiding has not yet happened, and the table needs to
1884 be aligned before it looks nice.  Setting the option
1885 @code{org-startup-align-all-tables} will realign all tables in a file
1886 upon visiting, but also slow down startup.  You can also set this option
1887 on a per-file basis with:
1889 @example
1890 #+STARTUP: align
1891 #+STARTUP: noalign
1892 @end example
1894 If you would like to overrule the automatic alignment of number-rich columns
1895 to the right and of string-rich column to the left, you and use @samp{<r>} or
1896 @samp{<l>} in a similar fashion.  You may also combine alignment and field
1897 width like this: @samp{<l10>}.
1899 Lines which only contain these formatting cookies will be removed
1900 automatically when exporting the document.
1902 @node Column groups, Orgtbl mode, Column width and alignment, Tables
1903 @section Column groups
1904 @cindex grouping columns in tables
1906 When Org exports tables, it does so by default without vertical
1907 lines because that is visually more satisfying in general.  Occasionally
1908 however, vertical lines can be useful to structure a table into groups
1909 of columns, much like horizontal lines can do for groups of rows.  In
1910 order to specify column groups, you can use a special row where the
1911 first field contains only @samp{/}.  The further fields can either
1912 contain @samp{<} to indicate that this column should start a group,
1913 @samp{>} to indicate the end of a column, or @samp{<>} to make a column
1914 a group of its own.  Boundaries between column groups will upon export be
1915 marked with vertical lines.  Here is an example:
1917 @example
1918 | N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
1919 |---+-----+-----+-----+---------+------------|
1920 | / |   < |     |   > |       < |          > |
1921 | 1 |   1 |   1 |   1 |       1 |          1 |
1922 | 2 |   4 |   8 |  16 |  1.4142 |     1.1892 |
1923 | 3 |   9 |  27 |  81 |  1.7321 |     1.3161 |
1924 |---+-----+-----+-----+---------+------------|
1925 #+TBLFM: $2=$1^2::$3=$1^3::$4=$1^4::$5=sqrt($1)::$6=sqrt(sqrt(($1)))
1926 @end example
1928 It is also sufficient to just insert the column group starters after
1929 every vertical line you would like to have:
1931 @example
1932 |  N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
1933 |----+-----+-----+-----+---------+------------|
1934 | /  | <   |     |     | <       |            |
1935 @end example
1937 @node Orgtbl mode, The spreadsheet, Column groups, Tables
1938 @section The Orgtbl minor mode
1939 @cindex Orgtbl mode
1940 @cindex minor mode for tables
1942 If you like the intuitive way the Org table editor works, you
1943 might also want to use it in other modes like Text mode or Mail mode.
1944 The minor mode Orgtbl mode makes this possible.  You can always toggle
1945 the mode with @kbd{M-x orgtbl-mode}.  To turn it on by default, for
1946 example in mail mode, use
1948 @lisp
1949 (add-hook 'mail-mode-hook 'turn-on-orgtbl)
1950 @end lisp
1952 Furthermore, with some special setup, it is possible to maintain tables
1953 in arbitrary syntax with Orgtbl mode.  For example, it is possible to
1954 construct La@TeX{} tables with the underlying ease and power of
1955 Orgtbl mode, including spreadsheet capabilities.  For details, see
1956 @ref{Tables in arbitrary syntax}.
1958 @node The spreadsheet, Org-Plot, Orgtbl mode, Tables
1959 @section The spreadsheet
1960 @cindex calculations, in tables
1961 @cindex spreadsheet capabilities
1962 @cindex @file{calc} package
1964 The table editor makes use of the Emacs @file{calc} package to implement
1965 spreadsheet-like capabilities.  It can also evaluate Emacs Lisp forms to
1966 derive fields from other fields.  While fully featured, Org's implementation
1967 is not identical to other spreadsheets.  For example, Org knows the concept
1968 of a @emph{column formula} that will be applied to all non-header fields in a
1969 column without having to copy the formula to each relevant field.  There is
1970 also a formula debugger, and a formula editor with features for highlighting
1971 fields in the table corresponding to the references at the point in the
1972 formula, moving these references by arrow keys
1974 @menu
1975 * References::                  How to refer to another field or range
1976 * Formula syntax for Calc::     Using Calc to compute stuff
1977 * Formula syntax for Lisp::     Writing formulas in Emacs Lisp
1978 * Field formulas::              Formulas valid for a single field
1979 * Column formulas::             Formulas valid for an entire column
1980 * Editing and debugging formulas::  Fixing formulas
1981 * Updating the table::          Recomputing all dependent fields
1982 * Advanced features::           Field names, parameters and automatic recalc
1983 @end menu
1985 @node References, Formula syntax for Calc, The spreadsheet, The spreadsheet
1986 @subsection References
1987 @cindex references
1989 To compute fields in the table from other fields, formulas must
1990 reference other fields or ranges.  In Org, fields can be referenced
1991 by name, by absolute coordinates, and by relative coordinates.  To find
1992 out what the coordinates of a field are, press @kbd{C-c ?} in that
1993 field, or press @kbd{C-c @}} to toggle the display of a grid.
1995 @subsubheading Field references
1996 @cindex field references
1997 @cindex references, to fields
1999 Formulas can reference the value of another field in two ways.  Like in
2000 any other spreadsheet, you may reference fields with a letter/number
2001 combination like @code{B3}, meaning the 2nd field in the 3rd row.
2002 @c Such references are always fixed to that field, they don't change
2003 @c when you copy and paste a formula to a different field.  So
2004 @c Org's @code{B3} behaves like @code{$B$3} in other spreadsheets.
2006 @noindent
2007 Org also uses another, more general operator that looks like this:
2008 @example
2009 @@@var{row}$@var{column}
2010 @end example
2012 @noindent
2013 Column references can be absolute like @samp{1}, @samp{2},...@samp{@var{N}},
2014 or relative to the current column like @samp{+1} or @samp{-2}.
2016 The row specification only counts data lines and ignores horizontal
2017 separator lines (hlines).  You can use absolute row numbers
2018 @samp{1}...@samp{@var{N}}, and row numbers relative to the current row like
2019 @samp{+3} or @samp{-1}.  Or specify the row relative to one of the
2020 hlines: @samp{I} refers to the first hline@footnote{Note that only
2021 hlines are counted that @emph{separate} table lines.  If the table
2022 starts with a hline above the header, it does not count.}, @samp{II} to
2023 the second, etc@.  @samp{-I} refers to the first such line above the
2024 current line, @samp{+I} to the first such line below the current line.
2025 You can also write @samp{III+2} which is the second data line after the
2026 third hline in the table.
2028 @samp{0} refers to the current row and column.  Also, if you omit
2029 either the column or the row part of the reference, the current
2030 row/column is implied.
2032 Org's references with @emph{unsigned} numbers are fixed references
2033 in the sense that if you use the same reference in the formula for two
2034 different fields, the same field will be referenced each time.
2035 Org's references with @emph{signed} numbers are floating
2036 references because the same reference operator can reference different
2037 fields depending on the field being calculated by the formula.
2039 As a special case, references like @samp{$LR5} and @samp{$LR12} can be used
2040 to refer in a stable way to the 5th and 12th field in the last row of the
2041 table.
2043 Here are a few examples:
2045 @example
2046 @@2$3      @r{2nd row, 3rd column}
2047 C2        @r{same as previous}
2048 $5        @r{column 5 in the current row}
2049 E&        @r{same as previous}
2050 @@2        @r{current column, row 2}
2051 @@-1$-3    @r{the field one row up, three columns to the left}
2052 @@-I$2     @r{field just under hline above current row, column 2}
2053 @end example
2055 @subsubheading Range references
2056 @cindex range references
2057 @cindex references, to ranges
2059 You may reference a rectangular range of fields by specifying two field
2060 references connected by two dots @samp{..}.  If both fields are in the
2061 current row, you may simply use @samp{$2..$7}, but if at least one field
2062 is in a different row, you need to use the general @code{@@row$column}
2063 format at least for the first field (i.e the reference must start with
2064 @samp{@@} in order to be interpreted correctly).  Examples:
2066 @example
2067 $1..$3        @r{First three fields in the current row.}
2068 $P..$Q        @r{Range, using column names (see under Advanced)}
2069 @@2$1..@@4$3    @r{6 fields between these two fields.}
2070 A2..C4        @r{Same as above.}
2071 @@-1$-2..@@-1   @r{3 numbers from the column to the left, 2 up to current row}
2072 @end example
2074 @noindent Range references return a vector of values that can be fed
2075 into Calc vector functions.  Empty fields in ranges are normally
2076 suppressed, so that the vector contains only the non-empty fields (but
2077 see the @samp{E} mode switch below).  If there are no non-empty fields,
2078 @samp{[0]} is returned to avoid syntax errors in formulas.
2080 @subsubheading Field coordinates in formulas
2081 @cindex field coordinates
2082 @cindex coordinates, of field
2083 @cindex row, of field coordinates
2084 @cindex column, of field coordinates
2086 For Calc formulas and Lisp formulas @code{@@#} and @code{$#} can be used to
2087 get the row or column number of the field where the formula result goes.
2088 The traditional Lisp formula equivalents are @code{org-table-current-dline}
2089 and @code{org-table-current-column}.  Examples:
2091 @example
2092 if(@@# % 2, $#, string(""))   @r{column number on odd lines only}
2093 $3 = remote(FOO, @@@@#$2)      @r{copy column 2 from table FOO into}
2094                              @r{column 3 of the current table}
2095 @end example
2097 @noindent For the second example, table FOO must have at least as many rows
2098 as the current table.  Inefficient@footnote{The computation time scales as
2099 O(N^2) because table FOO is parsed for each field to be copied.} for large
2100 number of rows.
2102 @subsubheading Named references
2103 @cindex named references
2104 @cindex references, named
2105 @cindex name, of column or field
2106 @cindex constants, in calculations
2107 @cindex #+CONSTANTS
2109 @vindex org-table-formula-constants
2110 @samp{$name} is interpreted as the name of a column, parameter or
2111 constant.  Constants are defined globally through the variable
2112 @code{org-table-formula-constants}, and locally (for the file) through a
2113 line like
2115 @example
2116 #+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6
2117 @end example
2119 @noindent
2120 @vindex constants-unit-system
2121 @pindex constants.el
2122 Also properties (@pxref{Properties and Columns}) can be used as
2123 constants in table formulas: for a property @samp{:Xyz:} use the name
2124 @samp{$PROP_Xyz}, and the property will be searched in the current
2125 outline entry and in the hierarchy above it.  If you have the
2126 @file{constants.el} package, it will also be used to resolve constants,
2127 including natural constants like @samp{$h} for Planck's constant, and
2128 units like @samp{$km} for kilometers@footnote{@file{constants.el} can
2129 supply the values of constants in two different unit systems, @code{SI}
2130 and @code{cgs}.  Which one is used depends on the value of the variable
2131 @code{constants-unit-system}.  You can use the @code{#+STARTUP} options
2132 @code{constSI} and @code{constcgs} to set this value for the current
2133 buffer.}.  Column names and parameters can be specified in special table
2134 lines.  These are described below, see @ref{Advanced features}.  All
2135 names must start with a letter, and further consist of letters and
2136 numbers.
2138 @subsubheading Remote references
2139 @cindex remote references
2140 @cindex references, remote
2141 @cindex references, to a different table
2142 @cindex name, of column or field
2143 @cindex constants, in calculations
2144 @cindex #+TBLNAME
2146 You may also reference constants, fields and ranges from a different table,
2147 either in the current file or even in a different file.  The syntax is
2149 @example
2150 remote(NAME-OR-ID,REF)
2151 @end example
2153 @noindent
2154 where NAME can be the name of a table in the current file as set by a
2155 @code{#+TBLNAME: NAME} line before the table.  It can also be the ID of an
2156 entry, even in a different file, and the reference then refers to the first
2157 table in that entry.  REF is an absolute field or range reference as
2158 described above for example @code{@@3$3} or @code{$somename}, valid in the
2159 referenced table.
2161 @node Formula syntax for Calc, Formula syntax for Lisp, References, The spreadsheet
2162 @subsection Formula syntax for Calc
2163 @cindex formula syntax, Calc
2164 @cindex syntax, of formulas
2166 A formula can be any algebraic expression understood by the Emacs
2167 @file{Calc} package.  @b{Note that @file{calc} has the
2168 non-standard convention that @samp{/} has lower precedence than
2169 @samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.}  Before
2170 evaluation by @code{calc-eval} (@pxref{Calling Calc from
2171 Your Programs,calc-eval,Calling Calc from Your Lisp Programs,Calc,GNU
2172 Emacs Calc Manual}),
2173 @c FIXME:  The link to the Calc manual in HTML does not work.
2174 variable substitution takes place according to the rules described above.
2175 @cindex vectors, in table calculations
2176 The range vectors can be directly fed into the Calc vector functions
2177 like @samp{vmean} and @samp{vsum}.
2179 @cindex format specifier
2180 @cindex mode, for @file{calc}
2181 @vindex org-calc-default-modes
2182 A formula can contain an optional mode string after a semicolon.  This
2183 string consists of flags to influence Calc and other modes during
2184 execution.  By default, Org uses the standard Calc modes (precision
2185 12, angular units degrees, fraction and symbolic modes off).  The display
2186 format, however, has been changed to @code{(float 8)} to keep tables
2187 compact.  The default settings can be configured using the variable
2188 @code{org-calc-default-modes}.
2190 @example
2191 p20           @r{set the internal Calc calculation precision to 20 digits}
2192 n3 s3 e2 f4   @r{Normal, scientific, engineering, or fixed}
2193               @r{format of the result of Calc passed back to Org.}
2194               @r{Calc formatting is unlimited in precision as}
2195               @r{long as the Calc calculation precision is greater.}
2196 D R           @r{angle modes: degrees, radians}
2197 F S           @r{fraction and symbolic modes}
2198 N             @r{interpret all fields as numbers, use 0 for non-numbers}
2199 T             @r{force text interpretation}
2200 E             @r{keep empty fields in ranges}
2201 L             @r{literal}
2202 @end example
2204 @noindent
2205 Unless you use large integer numbers or high-precision-calculation
2206 and -display for floating point numbers you may alternatively provide a
2207 @code{printf} format specifier to reformat the Calc result after it has been
2208 passed back to Org instead of letting Calc already do the
2209 formatting@footnote{The @code{printf} reformatting is limited in precision
2210 because the value passed to it is converted into an @code{integer} or
2211 @code{double}.  The @code{integer} is limited in size by truncating the
2212 signed value to 32 bits.  The @code{double} is limited in precision to 64
2213 bits overall which leaves approximately 16 significant decimal digits.}.
2214 A few examples:
2216 @example
2217 $1+$2                @r{Sum of first and second field}
2218 $1+$2;%.2f           @r{Same, format result to two decimals}
2219 exp($2)+exp($1)      @r{Math functions can be used}
2220 $0;%.1f              @r{Reformat current cell to 1 decimal}
2221 ($3-32)*5/9          @r{Degrees F -> C conversion}
2222 $c/$1/$cm            @r{Hz -> cm conversion, using @file{constants.el}}
2223 tan($1);Dp3s1        @r{Compute in degrees, precision 3, display SCI 1}
2224 sin($1);Dp3%.1e      @r{Same, but use printf specifier for display}
2225 vmean($2..$7)        @r{Compute column range mean, using vector function}
2226 vmean($2..$7);EN     @r{Same, but treat empty fields as 0}
2227 taylor($3,x=7,2)     @r{taylor series of $3, at x=7, second degree}
2228 @end example
2230 Calc also contains a complete set of logical operations.  For example
2232 @example
2233 if($1<20,teen,string(""))  @r{``teen'' if age $1 less than 20, else empty}
2234 @end example
2236 @node Formula syntax for Lisp, Field formulas, Formula syntax for Calc, The spreadsheet
2237 @subsection Emacs Lisp forms as formulas
2238 @cindex Lisp forms, as table formulas
2240 It is also possible to write a formula in Emacs Lisp; this can be useful
2241 for string manipulation and control structures, if Calc's
2242 functionality is not enough.  If a formula starts with a single-quote
2243 followed by an opening parenthesis, then it is evaluated as a Lisp form.
2244 The evaluation should return either a string or a number.  Just as with
2245 @file{calc} formulas, you can specify modes and a printf format after a
2246 semicolon.  With Emacs Lisp forms, you need to be conscious about the way
2247 field references are interpolated into the form.  By default, a
2248 reference will be interpolated as a Lisp string (in double-quotes)
2249 containing the field.  If you provide the @samp{N} mode switch, all
2250 referenced elements will be numbers (non-number fields will be zero) and
2251 interpolated as Lisp numbers, without quotes.  If you provide the
2252 @samp{L} flag, all fields will be interpolated literally, without quotes.
2253 I.e., if you want a reference to be interpreted as a string by the Lisp
2254 form, enclose the reference operator itself in double-quotes, like
2255 @code{"$3"}.  Ranges are inserted as space-separated fields, so you can
2256 embed them in list or vector syntax.  A few examples, note how the
2257 @samp{N} mode is used when we do computations in Lisp.
2259 @example
2260 @r{Swap the first two characters of the content of column 1}
2261   '(concat (substring $1 1 2) (substring $1 0 1) (substring $1 2))
2262 @r{Add columns 1 and 2, equivalent to Calc's @code{$1+$2}}
2263   '(+ $1 $2);N
2264 @r{Compute the sum of columns 1-4, like Calc's @code{vsum($1..$4)}}
2265   '(apply '+ '($1..$4));N
2266 @end example
2268 @node Field formulas, Column formulas, Formula syntax for Lisp, The spreadsheet
2269 @subsection Field formulas
2270 @cindex field formula
2271 @cindex formula, for individual table field
2273 To assign a formula to a particular field, type it directly into the
2274 field, preceded by @samp{:=}, for example @samp{:=$1+$2}.  When you
2275 press @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in
2276 the field, the formula will be stored as the formula for this field,
2277 evaluated, and the current field replaced with the result.
2279 @cindex #+TBLFM
2280 Formulas are stored in a special line starting with @samp{#+TBLFM:}
2281 directly below the table.  If you typed the equation in the 4th field of
2282 the 3rd data line in the table, the formula will look like
2283 @samp{@@3$4=$1+$2}.  When inserting/deleting/swapping column and rows
2284 with the appropriate commands, @i{absolute references} (but not relative
2285 ones) in stored formulas are modified in order to still reference the
2286 same field.  Of course this is not true if you edit the table structure
2287 with normal editing commands---then you must fix the equations yourself.
2288 The left-hand side of a formula may also be a named field (@pxref{Advanced
2289 features}), or a last-row reference like @samp{$LR3}.
2291 Instead of typing an equation into the field, you may also use the
2292 following command
2294 @table @kbd
2295 @kindex C-u C-c =
2296 @item C-u C-c =
2297 Install a new formula for the current field.  The command prompts for a
2298 formula with default taken from the @samp{#+TBLFM:} line, applies
2299 it to the current field, and stores it.
2300 @end table
2302 @node Column formulas, Editing and debugging formulas, Field formulas, The spreadsheet
2303 @subsection Column formulas
2304 @cindex column formula
2305 @cindex formula, for table column
2307 Often in a table, the same formula should be used for all fields in a
2308 particular column.  Instead of having to copy the formula to all fields
2309 in that column, Org allows you to assign a single formula to an entire
2310 column.  If the table contains horizontal separator hlines, everything
2311 before the first such line is considered part of the table @emph{header}
2312 and will not be modified by column formulas.
2314 To assign a formula to a column, type it directly into any field in the
2315 column, preceded by an equal sign, like @samp{=$1+$2}.  When you press
2316 @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the field,
2317 the formula will be stored as the formula for the current column, evaluated
2318 and the current field replaced with the result.  If the field contains only
2319 @samp{=}, the previously stored formula for this column is used.  For each
2320 column, Org will only remember the most recently used formula.  In the
2321 @samp{#+TBLFM:} line, column formulas will look like @samp{$4=$1+$2}.  The left-hand
2322 side of a column formula cannot currently be the name of column, it
2323 must be the numeric column reference.
2325 Instead of typing an equation into the field, you may also use the
2326 following command:
2328 @table @kbd
2329 @kindex C-c =
2330 @item C-c =
2331 Install a new formula for the current column and replace current field with
2332 the result of the formula.  The command prompts for a formula, with default
2333 taken from the @samp{#+TBLFM} line, applies it to the current field and
2334 stores it.  With a numeric prefix argument(e.g. @kbd{C-5 C-c =}) the command
2335 will apply it to that many consecutive fields in the current column.
2336 @end table
2338 @node Editing and debugging formulas, Updating the table, Column formulas, The spreadsheet
2339 @subsection Editing and debugging formulas
2340 @cindex formula editing
2341 @cindex editing, of table formulas
2343 @vindex org-table-use-standard-references
2344 You can edit individual formulas in the minibuffer or directly in the
2345 field.  Org can also prepare a special buffer with all active
2346 formulas of a table.  When offering a formula for editing, Org
2347 converts references to the standard format (like @code{B3} or @code{D&})
2348 if possible.  If you prefer to only work with the internal format (like
2349 @code{@@3$2} or @code{$4}), configure the variable
2350 @code{org-table-use-standard-references}.
2352 @table @kbd
2353 @kindex C-c =
2354 @kindex C-u C-c =
2355 @item C-c =
2356 @itemx C-u C-c =
2357 Edit the formula associated with the current column/field in the
2358 minibuffer.  See @ref{Column formulas}, and @ref{Field formulas}.
2359 @kindex C-u C-u C-c =
2360 @item C-u C-u C-c =
2361 Re-insert the active formula (either a
2362 field formula, or a column formula) into the current field, so that you
2363 can edit it directly in the field.  The advantage over editing in the
2364 minibuffer is that you can use the command @kbd{C-c ?}.
2365 @kindex C-c ?
2366 @item C-c ?
2367 While editing a formula in a table field, highlight the field(s)
2368 referenced by the reference at the cursor position in the formula.
2369 @kindex C-c @}
2370 @item C-c @}
2371 Toggle the display of row and column numbers for a table, using
2372 overlays.  These are updated each time the table is aligned; you can
2373 force it with @kbd{C-c C-c}.
2374 @kindex C-c @{
2375 @item C-c @{
2376 Toggle the formula debugger on and off.  See below.
2377 @kindex C-c '
2378 @item C-c '
2379 Edit all formulas for the current table in a special buffer, where the
2380 formulas will be displayed one per line.  If the current field has an
2381 active formula, the cursor in the formula editor will mark it.
2382 While inside the special buffer, Org will automatically highlight
2383 any field or range reference at the cursor position.  You may edit,
2384 remove and add formulas, and use the following commands:
2385 @table @kbd
2386 @kindex C-c C-c
2387 @kindex C-x C-s
2388 @item C-c C-c
2389 @itemx C-x C-s
2390 Exit the formula editor and store the modified formulas.  With @kbd{C-u}
2391 prefix, also apply the new formulas to the entire table.
2392 @kindex C-c C-q
2393 @item C-c C-q
2394 Exit the formula editor without installing changes.
2395 @kindex C-c C-r
2396 @item C-c C-r
2397 Toggle all references in the formula editor between standard (like
2398 @code{B3}) and internal (like @code{@@3$2}).
2399 @kindex @key{TAB}
2400 @item @key{TAB}
2401 Pretty-print or indent Lisp formula at point.  When in a line containing
2402 a Lisp formula, format the formula according to Emacs Lisp rules.
2403 Another @key{TAB} collapses the formula back again.  In the open
2404 formula, @key{TAB} re-indents just like in Emacs Lisp mode.
2405 @kindex M-@key{TAB}
2406 @item M-@key{TAB}
2407 Complete Lisp symbols, just like in Emacs Lisp mode.
2408 @kindex S-@key{up}
2409 @kindex S-@key{down}
2410 @kindex S-@key{left}
2411 @kindex S-@key{right}
2412 @item S-@key{up}/@key{down}/@key{left}/@key{right}
2413 Shift the reference at point.  For example, if the reference is
2414 @code{B3} and you press @kbd{S-@key{right}}, it will become @code{C3}.
2415 This also works for relative references and for hline references.
2416 @kindex M-S-@key{up}
2417 @kindex M-S-@key{down}
2418 @item M-S-@key{up}/@key{down}
2419 Move the test line for column formulas in the Org buffer up and
2420 down.
2421 @kindex M-@key{up}
2422 @kindex M-@key{down}
2423 @item M-@key{up}/@key{down}
2424 Scroll the window displaying the table.
2425 @kindex C-c @}
2426 @item C-c @}
2427 Turn the coordinate grid in the table on and off.
2428 @end table
2429 @end table
2431 Making a table field blank does not remove the formula associated with
2432 the field, because that is stored in a different line (the @samp{#+TBLFM}
2433 line)---during the next recalculation the field will be filled again.
2434 To remove a formula from a field, you have to give an empty reply when
2435 prompted for the formula, or to edit the @samp{#+TBLFM} line.
2437 @kindex C-c C-c
2438 You may edit the @samp{#+TBLFM} directly and re-apply the changed
2439 equations with @kbd{C-c C-c} in that line or with the normal
2440 recalculation commands in the table.
2442 @subsubheading Debugging formulas
2443 @cindex formula debugging
2444 @cindex debugging, of table formulas
2445 When the evaluation of a formula leads to an error, the field content
2446 becomes the string @samp{#ERROR}.  If you would like see what is going
2447 on during variable substitution and calculation in order to find a bug,
2448 turn on formula debugging in the @code{Tbl} menu and repeat the
2449 calculation, for example by pressing @kbd{C-u C-u C-c = @key{RET}} in a
2450 field.  Detailed information will be displayed.
2452 @node Updating the table, Advanced features, Editing and debugging formulas, The spreadsheet
2453 @subsection Updating the table
2454 @cindex recomputing table fields
2455 @cindex updating, table
2457 Recalculation of a table is normally not automatic, but needs to be
2458 triggered by a command.  See @ref{Advanced features}, for a way to make
2459 recalculation at least semi-automatic.
2461 In order to recalculate a line of a table or the entire table, use the
2462 following commands:
2464 @table @kbd
2465 @kindex C-c *
2466 @item C-c *
2467 Recalculate the current row by first applying the stored column formulas
2468 from left to right, and all field formulas in the current row.
2470 @kindex C-u C-c *
2471 @item C-u C-c *
2472 @kindex C-u C-c C-c
2473 @itemx C-u C-c C-c
2474 Recompute the entire table, line by line.  Any lines before the first
2475 hline are left alone, assuming that these are part of the table header.
2477 @kindex C-u C-u C-c *
2478 @kindex C-u C-u C-c C-c
2479 @item C-u C-u C-c *
2480 @itemx C-u C-u C-c C-c
2481 Iterate the table by recomputing it until no further changes occur.
2482 This may be necessary if some computed fields use the value of other
2483 fields that are computed @i{later} in the calculation sequence.
2484 @item M-x org-table-recalculate-buffer-tables
2485 Recompute all tables in the current buffer.
2486 @item M-x org-table-iterate-buffer-tables
2487 Iterate all tables in the current buffer, in order to converge table-to-table
2488 dependencies.
2489 @end table
2491 @node Advanced features,  , Updating the table, The spreadsheet
2492 @subsection Advanced features
2494 If you want the recalculation of fields to happen automatically, or if
2495 you want to be able to assign @i{names} to fields and columns, you need
2496 to reserve the first column of the table for special marking characters.
2497 @table @kbd
2498 @kindex C-#
2499 @item C-#
2500 Rotate the calculation mark in first column through the states @samp{ },
2501 @samp{#}, @samp{*}, @samp{!}, @samp{$}.  When there is an active region,
2502 change all marks in the region.
2503 @end table
2505 Here is an example of a table that collects exam results of students and
2506 makes use of these features:
2508 @example
2509 @group
2510 |---+---------+--------+--------+--------+-------+------|
2511 |   | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
2512 |---+---------+--------+--------+--------+-------+------|
2513 | ! |         |     P1 |     P2 |     P3 |   Tot |      |
2514 | # | Maximum |     10 |     15 |     25 |    50 | 10.0 |
2515 | ^ |         |     m1 |     m2 |     m3 |    mt |      |
2516 |---+---------+--------+--------+--------+-------+------|
2517 | # | Peter   |     10 |      8 |     23 |    41 |  8.2 |
2518 | # | Sam     |      2 |      4 |      3 |     9 |  1.8 |
2519 |---+---------+--------+--------+--------+-------+------|
2520 |   | Average |        |        |        |  29.7 |      |
2521 | ^ |         |        |        |        |    at |      |
2522 | $ | max=50  |        |        |        |       |      |
2523 |---+---------+--------+--------+--------+-------+------|
2524 #+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(@@-II..@@-I);%.1f
2525 @end group
2526 @end example
2528 @noindent @b{Important}: please note that for these special tables,
2529 recalculating the table with @kbd{C-u C-c *} will only affect rows that
2530 are marked @samp{#} or @samp{*}, and fields that have a formula assigned
2531 to the field itself.  The column formulas are not applied in rows with
2532 empty first field.
2534 @cindex marking characters, tables
2535 The marking characters have the following meaning:
2536 @table @samp
2537 @item !
2538 The fields in this line define names for the columns, so that you may
2539 refer to a column as @samp{$Tot} instead of @samp{$6}.
2540 @item ^
2541 This row defines names for the fields @emph{above} the row.  With such
2542 a definition, any formula in the table may use @samp{$m1} to refer to
2543 the value @samp{10}.  Also, if you assign a formula to a names field, it
2544 will be stored as @samp{$name=...}.
2545 @item _
2546 Similar to @samp{^}, but defines names for the fields in the row
2547 @emph{below}.
2548 @item $
2549 Fields in this row can define @emph{parameters} for formulas.  For
2550 example, if a field in a @samp{$} row contains @samp{max=50}, then
2551 formulas in this table can refer to the value 50 using @samp{$max}.
2552 Parameters work exactly like constants, only that they can be defined on
2553 a per-table basis.
2554 @item #
2555 Fields in this row are automatically recalculated when pressing
2556 @key{TAB} or @key{RET} or @kbd{S-@key{TAB}} in this row.  Also, this row
2557 is selected for a global recalculation with @kbd{C-u C-c *}.  Unmarked
2558 lines will be left alone by this command.
2559 @item *
2560 Selects this line for global recalculation with @kbd{C-u C-c *}, but
2561 not for automatic recalculation.  Use this when automatic
2562 recalculation slows down editing too much.
2563 @item
2564 Unmarked lines are exempt from recalculation with @kbd{C-u C-c *}.
2565 All lines that should be recalculated should be marked with @samp{#}
2566 or @samp{*}.
2567 @item /
2568 Do not export this line.  Useful for lines that contain the narrowing
2569 @samp{<N>} markers or column group markers.
2570 @end table
2572 Finally, just to whet your appetite for what can be done with the
2573 fantastic @file{calc.el} package, here is a table that computes the Taylor
2574 series of degree @code{n} at location @code{x} for a couple of
2575 functions.
2577 @example
2578 @group
2579 |---+-------------+---+-----+--------------------------------------|
2580 |   | Func        | n | x   | Result                               |
2581 |---+-------------+---+-----+--------------------------------------|
2582 | # | exp(x)      | 1 | x   | 1 + x                                |
2583 | # | exp(x)      | 2 | x   | 1 + x + x^2 / 2                      |
2584 | # | exp(x)      | 3 | x   | 1 + x + x^2 / 2 + x^3 / 6            |
2585 | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
2586 | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2    |
2587 | * | tan(x)      | 3 | x   | 0.0175 x + 1.77e-6 x^3               |
2588 |---+-------------+---+-----+--------------------------------------|
2589 #+TBLFM: $5=taylor($2,$4,$3);n3
2590 @end group
2591 @end example
2593 @node Org-Plot,  , The spreadsheet, Tables
2594 @section Org-Plot
2595 @cindex graph, in tables
2596 @cindex plot tables using gnuplot
2597 @cindex #+PLOT
2599 Org-Plot can produce 2D and 3D graphs of information stored in org tables
2600 using @file{Gnuplot} @uref{http://www.gnuplot.info/} and @file{gnuplot-mode}
2601 @uref{http://cars9.uchicago.edu/~ravel/software/gnuplot-mode.html}.  To see
2602 this in action, ensure that you have both Gnuplot and Gnuplot mode installed
2603 on your system, then call @code{org-plot/gnuplot} on the following table.
2605 @example
2606 @group
2607 #+PLOT: title:"Citas" ind:1 deps:(3) type:2d with:histograms set:"yrange [0:]"
2608 | Sede      | Max cites | H-index |
2609 |-----------+-----------+---------|
2610 | Chile     |    257.72 |   21.39 |
2611 | Leeds     |    165.77 |   19.68 |
2612 | Sao Paolo |     71.00 |   11.50 |
2613 | Stockholm |    134.19 |   14.33 |
2614 | Morelia   |    257.56 |   17.67 |
2615 @end group
2616 @end example
2618 Notice that Org Plot is smart enough to apply the table's headers as labels.
2619 Further control over the labels, type, content, and appearance of plots can
2620 be exercised through the @code{#+PLOT:} lines preceding a table.  See below
2621 for a complete list of Org-plot options.  For more information and examples
2622 see the Org-plot tutorial at
2623 @uref{http://orgmode.org/worg/org-tutorials/org-plot.php}.
2625 @subsubheading Plot Options
2627 @table @code
2628 @item set
2629 Specify any @command{gnuplot} option to be set when graphing.
2631 @item title
2632 Specify the title of the plot.
2634 @item ind
2635 Specify which column of the table to use as the @code{x} axis.
2637 @item deps
2638 Specify the columns to graph as a Lisp style list, surrounded by parentheses
2639 and separated by spaces for example @code{dep:(3 4)} to graph the third and
2640 fourth columns (defaults to graphing all other columns aside from the @code{ind}
2641 column).
2643 @item type
2644 Specify whether the plot will be @code{2d}, @code{3d}, or @code{grid}.
2646 @item with
2647 Specify a @code{with} option to be inserted for every col being plotted
2648 (e.g. @code{lines}, @code{points}, @code{boxes}, @code{impulses}, etc...).
2649 Defaults to @code{lines}.
2651 @item file
2652 If you want to plot to a file, specify @code{"@var{path/to/desired/output-file}"}.
2654 @item labels
2655 List of labels to be used for the deps (defaults to the column headers if
2656 they exist).
2658 @item line
2659 Specify an entire line to be inserted in the Gnuplot script.
2661 @item map
2662 When plotting @code{3d} or @code{grid} types, set this to @code{t} to graph a
2663 flat mapping rather than a @code{3d} slope.
2665 @item timefmt
2666 Specify format of Org-mode timestamps as they will be parsed by Gnuplot.
2667 Defaults to @samp{%Y-%m-%d-%H:%M:%S}.
2669 @item script
2670 If you want total control, you can specify a script file (place the file name
2671 between double-quotes) which will be used to plot.  Before plotting, every
2672 instance of @code{$datafile} in the specified script will be replaced with
2673 the path to the generated data file.  Note: even if you set this option, you
2674 may still want to specify the plot type, as that can impact the content of
2675 the data file.
2676 @end table
2678 @node Hyperlinks, TODO Items, Tables, Top
2679 @chapter Hyperlinks
2680 @cindex hyperlinks
2682 Like HTML, Org provides links inside a file, external links to
2683 other files, Usenet articles, emails, and much more.
2685 @menu
2686 * Link format::                 How links in Org are formatted
2687 * Internal links::              Links to other places in the current file
2688 * External links::              URL-like links to the world
2689 * Handling links::              Creating, inserting and following
2690 * Using links outside Org::     Linking from my C source code?
2691 * Link abbreviations::          Shortcuts for writing complex links
2692 * Search options::              Linking to a specific location
2693 * Custom searches::             When the default search is not enough
2694 @end menu
2696 @node Link format, Internal links, Hyperlinks, Hyperlinks
2697 @section Link format
2698 @cindex link format
2699 @cindex format, of links
2701 Org will recognize plain URL-like links and activate them as
2702 clickable links.  The general link format, however, looks like this:
2704 @example
2705 [[link][description]]       @r{or alternatively}           [[link]]
2706 @end example
2708 @noindent
2709 Once a link in the buffer is complete (all brackets present), Org
2710 will change the display so that @samp{description} is displayed instead
2711 of @samp{[[link][description]]} and @samp{link} is displayed instead of
2712 @samp{[[link]]}.  Links will be highlighted in the face @code{org-link},
2713 which by default is an underlined face.  You can directly edit the
2714 visible part of a link.  Note that this can be either the @samp{link}
2715 part (if there is no description) or the @samp{description} part.  To
2716 edit also the invisible @samp{link} part, use @kbd{C-c C-l} with the
2717 cursor on the link.
2719 If you place the cursor at the beginning or just behind the end of the
2720 displayed text and press @key{BACKSPACE}, you will remove the
2721 (invisible) bracket at that location.  This makes the link incomplete
2722 and the internals are again displayed as plain text.  Inserting the
2723 missing bracket hides the link internals again.  To show the
2724 internal structure of all links, use the menu entry
2725 @code{Org->Hyperlinks->Literal links}.
2727 @node Internal links, External links, Link format, Hyperlinks
2728 @section Internal links
2729 @cindex internal links
2730 @cindex links, internal
2731 @cindex targets, for links
2733 @cindex property, CUSTOM_ID
2734 If the link does not look like a URL, it is considered to be internal in the
2735 current file.  The most important case is a link like
2736 @samp{[[#my-custom-id]]} which will link to the entry with the
2737 @code{CUSTOM_ID} property @samp{my-custom-id}.  Such custom IDs are very good
2738 for HTML export (@pxref{HTML export}) where they produce pretty section
2739 links.  You are responsible yourself to make sure these custom IDs are unique
2740 in a file.
2742 Links such as @samp{[[My Target]]} or @samp{[[My Target][Find my target]]}
2743 lead to a text search in the current file.
2745 The link can be followed with @kbd{C-c C-o} when the cursor is on the link,
2746 or with a mouse click (@pxref{Handling links}).  Links to custom IDs will
2747 point to the corresponding headline.  The preferred match for a text link is
2748 a @i{dedicated target}: the same string in double angular brackets.  Targets
2749 may be located anywhere; sometimes it is convenient to put them into a
2750 comment line. For example
2752 @example
2753 # <<My Target>>
2754 @end example
2756 @noindent In HTML export (@pxref{HTML export}), such targets will become
2757 named anchors for direct access through @samp{http} links@footnote{Note that
2758 text before the first headline is usually not exported, so the first such
2759 target should be after the first headline, or in the line directly before the
2760 first headline.}.
2762 If no dedicated target exists, Org will search for the words in the link.  In
2763 the above example the search would be for @samp{my target}.  Links starting
2764 with a star like @samp{*My Target} restrict the search to
2765 headlines@footnote{To insert a link targeting a headline, in-buffer
2766 completion can be used.  Just type a star followed by a few optional letters
2767 into the buffer and press @kbd{M-@key{TAB}}.  All headlines in the current
2768 buffer will be offered as completions.  @xref{Handling links}, for more
2769 commands creating links.}.  When searching, Org mode will first try an
2770 exact match, but then move on to more and more lenient searches.  For
2771 example, the link @samp{[[*My Targets]]} will find any of the following:
2773 @example
2774 ** My targets
2775 ** TODO my targets are bright
2776 ** my 20 targets are
2777 @end example
2780 Following a link pushes a mark onto Org's own mark ring.  You can
2781 return to the previous position with @kbd{C-c &}.  Using this command
2782 several times in direct succession goes back to positions recorded
2783 earlier.
2785 @menu
2786 * Radio targets::               Make targets trigger links in plain text
2787 @end menu
2789 @node Radio targets,  , Internal links, Internal links
2790 @subsection Radio targets
2791 @cindex radio targets
2792 @cindex targets, radio
2793 @cindex links, radio targets
2795 Org can automatically turn any occurrences of certain target names
2796 in normal text into a link.  So without explicitly creating a link, the
2797 text connects to the target radioing its position.  Radio targets are
2798 enclosed by triple angular brackets.  For example, a target @samp{<<<My
2799 Target>>>} causes each occurrence of @samp{my target} in normal text to
2800 become activated as a link.  The Org file is scanned automatically
2801 for radio targets only when the file is first loaded into Emacs.  To
2802 update the target list during editing, press @kbd{C-c C-c} with the
2803 cursor on or at a target.
2805 @node External links, Handling links, Internal links, Hyperlinks
2806 @section External links
2807 @cindex links, external
2808 @cindex external links
2809 @cindex links, external
2810 @cindex Gnus links
2811 @cindex BBDB links
2812 @cindex IRC links
2813 @cindex URL links
2814 @cindex file links
2815 @cindex VM links
2816 @cindex RMAIL links
2817 @cindex WANDERLUST links
2818 @cindex MH-E links
2819 @cindex USENET links
2820 @cindex SHELL links
2821 @cindex Info links
2822 @cindex Elisp links
2824 Org supports links to files, websites, Usenet and email messages,
2825 BBDB database entries and links to both IRC conversations and their
2826 logs.  External links are URL-like locators.  They start with a short
2827 identifying string followed by a colon.  There can be no space after
2828 the colon.  The following list shows examples for each link type.
2830 @example
2831 http://www.astro.uva.nl/~dominik          @r{on the web}
2832 doi:10.1000/182                           @r{DOI for an electronic resource}
2833 file:/home/dominik/images/jupiter.jpg     @r{file, absolute path}
2834 /home/dominik/images/jupiter.jpg          @r{same as above}
2835 file:papers/last.pdf                      @r{file, relative path}
2836 ./papers/last.pdf                         @r{same as above}
2837 file:/myself@@some.where:papers/last.pdf   @r{file, path on remote machine}
2838 /myself@@some.where:papers/last.pdf        @r{same as above}
2839 file:sometextfile::NNN                    @r{file with line number to jump to}
2840 file:projects.org                         @r{another Org file}
2841 file:projects.org::some words             @r{text search in Org file}
2842 file:projects.org::*task title            @r{heading search in Org file}
2843 docview:papers/last.pdf::NNN              @r{open file in doc-view mode at page NNN}
2844 id:B7423F4D-2E8A-471B-8810-C40F074717E9   @r{Link to heading by ID}
2845 news:comp.emacs                           @r{Usenet link}
2846 mailto:adent@@galaxy.net                   @r{Mail link}
2847 vm:folder                                 @r{VM folder link}
2848 vm:folder#id                              @r{VM message link}
2849 vm://myself@@some.where.org/folder#id      @r{VM on remote machine}
2850 wl:folder                                 @r{WANDERLUST folder link}
2851 wl:folder#id                              @r{WANDERLUST message link}
2852 mhe:folder                                @r{MH-E folder link}
2853 mhe:folder#id                             @r{MH-E message link}
2854 rmail:folder                              @r{RMAIL folder link}
2855 rmail:folder#id                           @r{RMAIL message link}
2856 gnus:group                                @r{Gnus group link}
2857 gnus:group#id                             @r{Gnus article link}
2858 bbdb:R.*Stallman                          @r{BBDB link (with regexp)}
2859 irc:/irc.com/#emacs/bob                   @r{IRC link}
2860 info:org:External%20links                 @r{Info node link (with encoded space)}
2861 shell:ls *.org                            @r{A shell command}
2862 elisp:org-agenda                          @r{Interactive Elisp command}
2863 elisp:(find-file-other-frame "Elisp.org") @r{Elisp form to evaluate}
2864 @end example
2866 A link should be enclosed in double brackets and may contain a
2867 descriptive text to be displayed instead of the URL (@pxref{Link
2868 format}), for example:
2870 @example
2871 [[http://www.gnu.org/software/emacs/][GNU Emacs]]
2872 @end example
2874 @noindent
2875 If the description is a file name or URL that points to an image, HTML
2876 export (@pxref{HTML export}) will inline the image as a clickable
2877 button.  If there is no description at all and the link points to an
2878 image,
2879 that image will be inlined into the exported HTML file.
2881 @cindex square brackets, around links
2882 @cindex plain text external links
2883 Org also finds external links in the normal text and activates them
2884 as links.  If spaces must be part of the link (for example in
2885 @samp{bbdb:Richard Stallman}), or if you need to remove ambiguities
2886 about the end of the link, enclose them in square brackets.
2888 @node Handling links, Using links outside Org, External links, Hyperlinks
2889 @section Handling links
2890 @cindex links, handling
2892 Org provides methods to create a link in the correct syntax, to
2893 insert it into an Org file, and to follow the link.
2895 @table @kbd
2896 @kindex C-c l
2897 @cindex storing links
2898 @item C-c l
2899 Store a link to the current location.  This is a @emph{global} command (you
2900 must create the key binding yourself) which can be used in any buffer to
2901 create a link.  The link will be stored for later insertion into an Org
2902 buffer (see below).  What kind of link will be created depends on the current
2903 buffer:
2905 @b{Org-mode buffers}@*
2906 For Org files, if there is a @samp{<<target>>} at the cursor, the link points
2907 to the target.  Otherwise it points to the current headline, which will also
2908 be the description.
2910 @vindex org-link-to-org-use-id
2911 @cindex property, CUSTOM_ID
2912 @cindex property, ID
2913 If the headline has a @code{CUSTOM_ID} property, a link to this custom ID
2914 will be stored.  In addition or alternatively (depending on the value of
2915 @code{org-link-to-org-use-id}), a globally unique @code{ID} property will be
2916 created and/or used to construct a link.  So using this command in Org
2917 buffers will potentially create two links: a human-readable from the custom
2918 ID, and one that is globally unique and works even if the entry is moved from
2919 file to file.  Later, when inserting the link, you need to decide which one
2920 to use.
2922 @b{Email/News clients: VM, Rmail, Wanderlust, MH-E, Gnus}@*
2923 Pretty much all Emacs mail clients are supported.  The link will point to the
2924 current article, or, in some GNUS buffers, to the group.  The description is
2925 constructed from the author and the subject.
2927 @b{Web browsers: W3 and W3M}@*
2928 Here the link will be the current URL, with the page title as description.
2930 @b{Contacts: BBDB}@*
2931 Links created in a BBDB buffer will point to the current entry.
2933 @b{Chat: IRC}@*
2934 @vindex org-irc-link-to-logs
2935 For IRC links, if you set the variable @code{org-irc-link-to-logs} to
2936 @code{t}, a @samp{file:/} style link to the relevant point in the logs for
2937 the current conversation is created.  Otherwise an @samp{irc:/} style link to
2938 the user/channel/server under the point will be stored.
2940 @b{Other files}@*
2941 For any other files, the link will point to the file, with a search string
2942 (@pxref{Search options}) pointing to the contents of the current line.  If
2943 there is an active region, the selected words will form the basis of the
2944 search string.  If the automatically created link is not working correctly or
2945 accurately enough, you can write custom functions to select the search string
2946 and to do the search for particular file types---see @ref{Custom searches}.
2947 The key binding @kbd{C-c l} is only a suggestion---see @ref{Installation}.
2949 @b{Agenda view}@*
2950 When the cursor is in an agenda view, the created link points to the
2951 entry referenced by the current line.
2954 @kindex C-c C-l
2955 @cindex link completion
2956 @cindex completion, of links
2957 @cindex inserting links
2958 @item C-c C-l
2959 @vindex org-keep-stored-link-after-insertion
2960 Insert a link@footnote{ Note that you don't have to use this command to
2961 insert a link.  Links in Org are plain text, and you can type or paste them
2962 straight into the buffer.  By using this command, the links are automatically
2963 enclosed in double brackets, and you will be asked for the optional
2964 descriptive text.}.  This prompts for a link to be inserted into the buffer.
2965 You can just type a link, using text for an internal link, or one of the link
2966 type prefixes mentioned in the examples above.  The link will be inserted
2967 into the buffer@footnote{After insertion of a stored link, the link will be
2968 removed from the list of stored links.  To keep it in the list later use, use
2969 a triple @kbd{C-u} prefix argument to @kbd{C-c C-l}, or configure the option
2970 @code{org-keep-stored-link-after-insertion}.}, along with a descriptive text.
2971 If some text was selected when this command is called, the selected text
2972 becomes the default description.
2974 @b{Inserting stored links}@*
2975 All links stored during the
2976 current session are part of the history for this prompt, so you can access
2977 them with @key{up} and @key{down} (or @kbd{M-p/n}).
2979 @b{Completion support}@* Completion with @key{TAB} will help you to insert
2980 valid link prefixes like @samp{http:} or @samp{ftp:}, including the prefixes
2981 defined through link abbreviations (@pxref{Link abbreviations}).  If you
2982 press @key{RET} after inserting only the @var{prefix}, Org will offer
2983 specific completion support for some link types@footnote{This works by
2984 calling a special function @code{org-PREFIX-complete-link}.}  For
2985 example, if you type @kbd{file @key{RET}}, file name completion (alternative
2986 access: @kbd{C-u C-c C-l}, see below) will be offered, and after @kbd{bbdb
2987 @key{RET}} you can complete contact names.
2988 @kindex C-u C-c C-l
2989 @cindex file name completion
2990 @cindex completion, of file names
2991 @item C-u C-c C-l
2992 When @kbd{C-c C-l} is called with a @kbd{C-u} prefix argument, a link to
2993 a file will be inserted and you may use file name completion to select
2994 the name of the file.  The path to the file is inserted relative to the
2995 directory of the current Org file, if the linked file is in the current
2996 directory or in a sub-directory of it, or if the path is written relative
2997 to the current directory using @samp{../}.  Otherwise an absolute path
2998 is used, if possible with @samp{~/} for your home directory.  You can
2999 force an absolute path with two @kbd{C-u} prefixes.
3001 @item C-c C-l @ @r{(with cursor on existing link)}
3002 When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the
3003 link and description parts of the link.
3005 @cindex following links
3006 @kindex C-c C-o
3007 @kindex @key{RET}
3008 @item C-c C-o @ @r{(or, if @code{org-return-follows-link} is set, also} @key{RET}
3009 @vindex org-file-apps
3010 Open link at point.  This will launch a web browser for URLs (using
3011 @command{browse-url-at-point}), run VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for
3012 the corresponding links, and execute the command in a shell link.  When the
3013 cursor is on an internal link, this commands runs the corresponding search.
3014 When the cursor is on a TAG list in a headline, it creates the corresponding
3015 TAGS view.  If the cursor is on a timestamp, it compiles the agenda for that
3016 date.  Furthermore, it will visit text and remote files in @samp{file:} links
3017 with Emacs and select a suitable application for local non-text files.
3018 Classification of files is based on file extension only.  See option
3019 @code{org-file-apps}.  If you want to override the default application and
3020 visit the file with Emacs, use a @kbd{C-u} prefix.  If you want to avoid
3021 opening in Emacs, use a @kbd{C-u C-u} prefix.@*
3022 If the cursor is on a headline, but not on a link, offer all links in the
3023 headline and entry text.
3025 @kindex mouse-2
3026 @kindex mouse-1
3027 @item mouse-2
3028 @itemx mouse-1
3029 On links, @kbd{mouse-2} will open the link just as @kbd{C-c C-o}
3030 would.  Under Emacs 22, @kbd{mouse-1} will also follow a link.
3032 @kindex mouse-3
3033 @item mouse-3
3034 @vindex org-display-internal-link-with-indirect-buffer
3035 Like @kbd{mouse-2}, but force file links to be opened with Emacs, and
3036 internal links to be displayed in another window@footnote{See the
3037 variable @code{org-display-internal-link-with-indirect-buffer}}.
3039 @cindex inlining images
3040 @cindex images, inlining
3041 @kindex C-c C-x C-v
3042 @item C-c C-x C-v
3043 Toggle the inline display of linked images.  Normally this will only inline
3044 images that have no description part in the link, i.e. images that will also
3045 be inlined during export.  When called with a prefix argument, also display
3046 images that do have a link description.
3047 @cindex mark ring
3048 @kindex C-c %
3049 @item C-c %
3050 Push the current position onto the mark ring, to be able to return
3051 easily. Commands following an internal link do this automatically.
3053 @cindex links, returning to
3054 @kindex C-c &
3055 @item C-c &
3056 Jump back to a recorded position.  A position is recorded by the
3057 commands following internal links, and by @kbd{C-c %}.  Using this
3058 command several times in direct succession moves through a ring of
3059 previously recorded positions.
3061 @kindex C-c C-x C-n
3062 @kindex C-c C-x C-p
3063 @cindex links, finding next/previous
3064 @item C-c C-x C-n
3065 @itemx C-c C-x C-p
3066 Move forward/backward to the next link in the buffer.  At the limit of
3067 the buffer, the search fails once, and then wraps around.  The key
3068 bindings for this are really too long, you might want to bind this also
3069 to @kbd{C-n} and @kbd{C-p}
3070 @lisp
3071 (add-hook 'org-load-hook
3072   (lambda ()
3073     (define-key 'org-mode-map "\C-n" 'org-next-link)
3074     (define-key 'org-mode-map "\C-p" 'org-previous-link)))
3075 @end lisp
3076 @end table
3078 @node Using links outside Org, Link abbreviations, Handling links, Hyperlinks
3079 @section Using links outside Org
3081 You can insert and follow links that have Org syntax not only in
3082 Org, but in any Emacs buffer.  For this, you should create two
3083 global commands, like this (please select suitable global keys
3084 yourself):
3086 @lisp
3087 (global-set-key "\C-c L" 'org-insert-link-global)
3088 (global-set-key "\C-c o" 'org-open-at-point-global)
3089 @end lisp
3091 @node Link abbreviations, Search options, Using links outside Org, Hyperlinks
3092 @section Link abbreviations
3093 @cindex link abbreviations
3094 @cindex abbreviation, links
3096 Long URLs can be cumbersome to type, and often many similar links are
3097 needed in a document.  For this you can use link abbreviations.  An
3098 abbreviated link looks like this
3100 @example
3101 [[linkword:tag][description]]
3102 @end example
3104 @noindent
3105 @vindex org-link-abbrev-alist
3106 where the tag is optional.
3107 The @i{linkword} must be a word, starting with a letter, followed by
3108 letters, numbers, @samp{-}, and @samp{_}.  Abbreviations are resolved
3109 according to the information in the variable @code{org-link-abbrev-alist}
3110 that relates the linkwords to replacement text.  Here is an example:
3112 @lisp
3113 @group
3114 (setq org-link-abbrev-alist
3115   '(("bugzilla" . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
3116     ("google"   . "http://www.google.com/search?q=")
3117     ("ads"      . "http://adsabs.harvard.edu/cgi-bin/
3118                    nph-abs_connect?author=%s&db_key=AST")))
3119 @end group
3120 @end lisp
3122 If the replacement text contains the string @samp{%s}, it will be
3123 replaced with the tag.  Otherwise the tag will be appended to the string
3124 in order to create the link.  You may also specify a function that will
3125 be called with the tag as the only argument to create the link.
3127 With the above setting, you could link to a specific bug with
3128 @code{[[bugzilla:129]]}, search the web for @samp{OrgMode} with
3129 @code{[[google:OrgMode]]} and find out what the Org author is
3130 doing besides Emacs hacking with @code{[[ads:Dominik,C]]}.
3132 If you need special abbreviations just for a single Org buffer, you
3133 can define them in the file with
3135 @cindex #+LINK
3136 @example
3137 #+LINK: bugzilla  http://10.1.2.9/bugzilla/show_bug.cgi?id=
3138 #+LINK: google    http://www.google.com/search?q=%s
3139 @end example
3141 @noindent
3142 In-buffer completion (@pxref{Completion}) can be used after @samp{[} to
3143 complete link abbreviations.  You may also define a function
3144 @code{org-PREFIX-complete-link} that implements special (e.g. completion)
3145 support for inserting such a link with @kbd{C-c C-l}.  Such a function should
3146 not accept any arguments, and return the full link with prefix.
3148 @node Search options, Custom searches, Link abbreviations, Hyperlinks
3149 @section Search options in file links
3150 @cindex search option in file links
3151 @cindex file links, searching
3153 File links can contain additional information to make Emacs jump to a
3154 particular location in the file when following a link.  This can be a
3155 line number or a search option after a double@footnote{For backward
3156 compatibility, line numbers can also follow a single colon.} colon. For
3157 example, when the command @kbd{C-c l} creates a link (@pxref{Handling
3158 links}) to a file, it encodes the words in the current line as a search
3159 string that can be used to find this line back later when following the
3160 link with @kbd{C-c C-o}.
3162 Here is the syntax of the different ways to attach a search to a file
3163 link, together with an explanation:
3165 @example
3166 [[file:~/code/main.c::255]]
3167 [[file:~/xx.org::My Target]]
3168 [[file:~/xx.org::*My Target]]
3169 [[file:~/xx.org::#my-custom-id]]
3170 [[file:~/xx.org::/regexp/]]
3171 @end example
3173 @table @code
3174 @item 255
3175 Jump to line 255.
3176 @item My Target
3177 Search for a link target @samp{<<My Target>>}, or do a text search for
3178 @samp{my target}, similar to the search in internal links, see
3179 @ref{Internal links}.  In HTML export (@pxref{HTML export}), such a file
3180 link will become an HTML reference to the corresponding named anchor in
3181 the linked file.
3182 @item *My Target
3183 In an Org file, restrict search to headlines.
3184 @item #my-custom-id
3185 Link to a heading with a @code{CUSTOM_ID} property
3186 @item /regexp/
3187 Do a regular expression search for @code{regexp}.  This uses the Emacs
3188 command @code{occur} to list all matches in a separate window.  If the
3189 target file is in Org mode, @code{org-occur} is used to create a
3190 sparse tree with the matches.
3191 @c If the target file is a directory,
3192 @c @code{grep} will be used to search all files in the directory.
3193 @end table
3195 As a degenerate case, a file link with an empty file name can be used
3196 to search the current file.  For example, @code{[[file:::find me]]} does
3197 a search for @samp{find me} in the current file, just as
3198 @samp{[[find me]]} would.
3200 @node Custom searches,  , Search options, Hyperlinks
3201 @section Custom Searches
3202 @cindex custom search strings
3203 @cindex search strings, custom
3205 The default mechanism for creating search strings and for doing the
3206 actual search related to a file link may not work correctly in all
3207 cases.  For example, Bib@TeX{} database files have many entries like
3208 @samp{year="1993"} which would not result in good search strings,
3209 because the only unique identification for a Bib@TeX{} entry is the
3210 citation key.
3212 @vindex org-create-file-search-functions
3213 @vindex org-execute-file-search-functions
3214 If you come across such a problem, you can write custom functions to set
3215 the right search string for a particular file type, and to do the search
3216 for the string in the file.  Using @code{add-hook}, these functions need
3217 to be added to the hook variables
3218 @code{org-create-file-search-functions} and
3219 @code{org-execute-file-search-functions}.  See the docstring for these
3220 variables for more information.  Org actually uses this mechanism
3221 for Bib@TeX{} database files, and you can use the corresponding code as
3222 an implementation example.  See the file @file{org-bibtex.el}.
3224 @node TODO Items, Tags, Hyperlinks, Top
3225 @chapter TODO Items
3226 @cindex TODO items
3228 Org mode does not maintain TODO lists as separate documents@footnote{Of
3229 course, you can make a document that contains only long lists of TODO items,
3230 but this is not required.}.  Instead, TODO items are an integral part of the
3231 notes file, because TODO items usually come up while taking notes!  With Org
3232 mode, simply mark any entry in a tree as being a TODO item.  In this way,
3233 information is not duplicated, and the entire context from which the TODO
3234 item emerged is always present.
3236 Of course, this technique for managing TODO items scatters them
3237 throughout your notes file.  Org mode compensates for this by providing
3238 methods to give you an overview of all the things that you have to do.
3240 @menu
3241 * TODO basics::                 Marking and displaying TODO entries
3242 * TODO extensions::             Workflow and assignments
3243 * Progress logging::            Dates and notes for progress
3244 * Priorities::                  Some things are more important than others
3245 * Breaking down tasks::         Splitting a task into manageable pieces
3246 * Checkboxes::                  Tick-off lists
3247 @end menu
3249 @node TODO basics, TODO extensions, TODO Items, TODO Items
3250 @section Basic TODO functionality
3252 Any headline becomes a TODO item when it starts with the word
3253 @samp{TODO}, for example:
3255 @example
3256 *** TODO Write letter to Sam Fortune
3257 @end example
3259 @noindent
3260 The most important commands to work with TODO entries are:
3262 @table @kbd
3263 @kindex C-c C-t
3264 @cindex cycling, of TODO states
3265 @item C-c C-t
3266 Rotate the TODO state of the current item among
3268 @example
3269 ,-> (unmarked) -> TODO -> DONE --.
3270 '--------------------------------'
3271 @end example
3273 The same rotation can also be done ``remotely'' from the timeline and
3274 agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
3276 @kindex C-u C-c C-t
3277 @item C-u C-c C-t
3278 Select a specific keyword using completion or (if it has been set up)
3279 the fast selection interface.  For the latter, you need to assign keys
3280 to TODO states, see @ref{Per-file keywords}, and @ref{Setting tags}, for
3281 more information.
3283 @kindex S-@key{right}
3284 @kindex S-@key{left}
3285 @vindex org-treat-S-cursor-todo-selection-as-state-change
3286 @item S-@key{right}
3287 @itemx S-@key{left}
3288 Select the following/preceding TODO state, similar to cycling.  Useful
3289 mostly if more than two TODO states are possible (@pxref{TODO
3290 extensions}).  See also @ref{Conflicts}, for a discussion of the interaction
3291 with @code{shift-selection-mode}.  See also the variable
3292 @code{org-treat-S-cursor-todo-selection-as-state-change}.
3293 @kindex C-c / t
3294 @cindex sparse tree, for TODO
3295 @itemx C-c / t
3296 @vindex org-todo-keywords
3297 View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}).  Folds the
3298 entire buffer, but shows all TODO items and the headings hierarchy above
3299 them.  With a prefix argument (or by using @kbd{C-c / T}), search for a
3300 specific TODO.  You will be prompted for the keyword, and you can also give a
3301 list of keywords like @code{KWD1|KWD2|...} to list entries that match any one
3302 of these keywords.  With numeric prefix argument N, show the tree for the Nth
3303 keyword in the variable @code{org-todo-keywords}.  With two prefix arguments,
3304 find all TODO and DONE entries.
3305 @kindex C-c a t
3306 @item C-c a t
3307 Show the global TODO list.  Collects the TODO items from all agenda
3308 files (@pxref{Agenda Views}) into a single buffer.  The new buffer will
3309 be in @code{agenda-mode}, which provides commands to examine and
3310 manipulate the TODO entries from the new buffer (@pxref{Agenda
3311 commands}).  @xref{Global TODO list}, for more information.
3312 @kindex S-M-@key{RET}
3313 @item S-M-@key{RET}
3314 Insert a new TODO entry below the current one.
3315 @end table
3317 @noindent
3318 @vindex org-todo-state-tags-triggers
3319 Changing a TODO state can also trigger tag changes.  See the docstring of the
3320 option @code{org-todo-state-tags-triggers} for details.
3322 @node TODO extensions, Progress logging, TODO basics, TODO Items
3323 @section Extended use of TODO keywords
3324 @cindex extended TODO keywords
3326 @vindex org-todo-keywords
3327 By default, marked TODO entries have one of only two states: TODO and
3328 DONE.  Org mode allows you to classify TODO items in more complex ways
3329 with @emph{TODO keywords} (stored in @code{org-todo-keywords}).  With
3330 special setup, the TODO keyword system can work differently in different
3331 files.
3333 Note that @i{tags} are another way to classify headlines in general and
3334 TODO items in particular (@pxref{Tags}).
3336 @menu
3337 * Workflow states::             From TODO to DONE in steps
3338 * TODO types::                  I do this, Fred does the rest
3339 * Multiple sets in one file::   Mixing it all, and still finding your way
3340 * Fast access to TODO states::  Single letter selection of a state
3341 * Per-file keywords::           Different files, different requirements
3342 * Faces for TODO keywords::     Highlighting states
3343 * TODO dependencies::           When one task needs to wait for others
3344 @end menu
3346 @node Workflow states, TODO types, TODO extensions, TODO extensions
3347 @subsection TODO keywords as workflow states
3348 @cindex TODO workflow
3349 @cindex workflow states as TODO keywords
3351 You can use TODO keywords to indicate different @emph{sequential} states
3352 in the process of working on an item, for example@footnote{Changing
3353 this variable only becomes effective after restarting Org mode in a
3354 buffer.}:
3356 @lisp
3357 (setq org-todo-keywords
3358   '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
3359 @end lisp
3361 The vertical bar separates the TODO keywords (states that @emph{need
3362 action}) from the DONE states (which need @emph{no further action}).  If
3363 you don't provide the separator bar, the last state is used as the DONE
3364 state.
3365 @cindex completion, of TODO keywords
3366 With this setup, the command @kbd{C-c C-t} will cycle an entry from TODO
3367 to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED.  You may
3368 also use a numeric prefix argument to quickly select a specific state.  For
3369 example @kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
3370 Or you can use @kbd{S-@key{left}} to go backward through the sequence.  If you
3371 define many keywords, you can use in-buffer completion
3372 (@pxref{Completion}) or even a special one-key selection scheme
3373 (@pxref{Fast access to TODO states}) to insert these words into the
3374 buffer.  Changing a TODO state can be logged with a timestamp, see
3375 @ref{Tracking TODO state changes}, for more information.
3377 @node TODO types, Multiple sets in one file, Workflow states, TODO extensions
3378 @subsection TODO keywords as types
3379 @cindex TODO types
3380 @cindex names as TODO keywords
3381 @cindex types as TODO keywords
3383 The second possibility is to use TODO keywords to indicate different
3384 @emph{types} of action items.  For example, you might want to indicate
3385 that items are for ``work'' or ``home''.  Or, when you work with several
3386 people on a single project, you might want to assign action items
3387 directly to persons, by using their names as TODO keywords.  This would
3388 be set up like this:
3390 @lisp
3391 (setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
3392 @end lisp
3394 In this case, different keywords do not indicate a sequence, but rather
3395 different types.  So the normal work flow would be to assign a task to a
3396 person, and later to mark it DONE.  Org mode supports this style by adapting
3397 the workings of the command @kbd{C-c C-t}@footnote{This is also true for the
3398 @kbd{t} command in the timeline and agenda buffers.}.  When used several
3399 times in succession, it will still cycle through all names, in order to first
3400 select the right type for a task.  But when you return to the item after some
3401 time and execute @kbd{C-c C-t} again, it will switch from any name directly
3402 to DONE.  Use prefix arguments or completion to quickly select a specific
3403 name.  You can also review the items of a specific TODO type in a sparse tree
3404 by using a numeric prefix to @kbd{C-c / t}.  For example, to see all things
3405 Lucy has to do, you would use @kbd{C-3 C-c / t}.  To collect Lucy's items
3406 from all agenda files into a single buffer, you would use the numeric prefix
3407 argument as well when creating the global TODO list: @kbd{C-3 C-c a t}.
3409 @node Multiple sets in one file, Fast access to TODO states, TODO types, TODO extensions
3410 @subsection Multiple keyword sets in one file
3411 @cindex TODO keyword sets
3413 Sometimes you may want to use different sets of TODO keywords in
3414 parallel.  For example, you may want to have the basic
3415 @code{TODO}/@code{DONE}, but also a workflow for bug fixing, and a
3416 separate state indicating that an item has been canceled (so it is not
3417 DONE, but also does not require action).  Your setup would then look
3418 like this:
3420 @lisp
3421 (setq org-todo-keywords
3422       '((sequence "TODO" "|" "DONE")
3423         (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
3424         (sequence "|" "CANCELED")))
3425 @end lisp
3427 The keywords should all be different, this helps Org mode to keep track
3428 of which subsequence should be used for a given entry.  In this setup,
3429 @kbd{C-c C-t} only operates within a subsequence, so it switches from
3430 @code{DONE} to (nothing) to @code{TODO}, and from @code{FIXED} to
3431 (nothing) to @code{REPORT}.  Therefore you need a mechanism to initially
3432 select the correct sequence.  Besides the obvious ways like typing a
3433 keyword or using completion, you may also apply the following commands:
3435 @table @kbd
3436 @kindex C-S-@key{right}
3437 @kindex C-S-@key{left}
3438 @kindex C-u C-u C-c C-t
3439 @item C-u C-u C-c C-t
3440 @itemx C-S-@key{right}
3441 @itemx C-S-@key{left}
3442 These keys jump from one TODO subset to the next.  In the above example,
3443 @kbd{C-u C-u C-c C-t} or @kbd{C-S-@key{right}} would jump from @code{TODO} or
3444 @code{DONE} to @code{REPORT}, and any of the words in the second row to
3445 @code{CANCELED}.  Note that the @kbd{C-S-} key binding conflict with
3446 @code{shift-selection-mode} (@pxref{Conflicts}).
3447 @kindex S-@key{right}
3448 @kindex S-@key{left}
3449 @item S-@key{right}
3450 @itemx S-@key{left}
3451 @kbd{S-@key{<left>}} and @kbd{S-@key{<right>}} and walk through @emph{all}
3452 keywords from all sets, so for example @kbd{S-@key{<right>}} would switch
3453 from @code{DONE} to @code{REPORT} in the example above.  See also
3454 @ref{Conflicts}, for a discussion of the interaction with
3455 @code{shift-selection-mode}.
3456 @end table
3458 @node Fast access to TODO states, Per-file keywords, Multiple sets in one file, TODO extensions
3459 @subsection Fast access to TODO states
3461 If you would like to quickly change an entry to an arbitrary TODO state
3462 instead of cycling through the states, you can set up keys for
3463 single-letter access to the states.  This is done by adding the section
3464 key after each keyword, in parentheses.  For example:
3466 @lisp
3467 (setq org-todo-keywords
3468       '((sequence "TODO(t)" "|" "DONE(d)")
3469         (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
3470         (sequence "|" "CANCELED(c)")))
3471 @end lisp
3473 @vindex org-fast-tag-selection-include-todo
3474 If you then press @code{C-c C-t} followed by the selection key, the entry
3475 will be switched to this state.  @key{SPC} can be used to remove any TODO
3476 keyword from an entry.@footnote{Check also the variable
3477 @code{org-fast-tag-selection-include-todo}, it allows you to change the TODO
3478 state through the tags interface (@pxref{Setting tags}), in case you like to
3479 mingle the two concepts.  Note that this means you need to come up with
3480 unique keys across both sets of keywords.}
3482 @node Per-file keywords, Faces for TODO keywords, Fast access to TODO states, TODO extensions
3483 @subsection Setting up keywords for individual files
3484 @cindex keyword options
3485 @cindex per-file keywords
3486 @cindex #+TODO
3487 @cindex #+TYP_TODO
3488 @cindex #+SEQ_TODO
3490 It can be very useful to use different aspects of the TODO mechanism in
3491 different files.  For file-local settings, you need to add special lines
3492 to the file which set the keywords and interpretation for that file
3493 only.  For example, to set one of the two examples discussed above, you
3494 need one of the following lines, starting in column zero anywhere in the
3495 file:
3497 @example
3498 #+TODO: TODO FEEDBACK VERIFY | DONE CANCELED
3499 @end example
3500 @noindent (you may also write @code{#+SEQ_TODO} to be explicit about the
3501 interpretation, but it means the same as @code{#+TODO}), or
3502 @example
3503 #+TYP_TODO: Fred Sara Lucy Mike | DONE
3504 @end example
3506 A setup for using several sets in parallel would be:
3508 @example
3509 #+TODO: TODO | DONE
3510 #+TODO: REPORT BUG KNOWNCAUSE | FIXED
3511 #+TODO: | CANCELED
3512 @end example
3514 @cindex completion, of option keywords
3515 @kindex M-@key{TAB}
3516 @noindent To make sure you are using the correct keyword, type
3517 @samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
3519 @cindex DONE, final TODO keyword
3520 Remember that the keywords after the vertical bar (or the last keyword
3521 if no bar is there) must always mean that the item is DONE (although you
3522 may use a different word).  After changing one of these lines, use
3523 @kbd{C-c C-c} with the cursor still in the line to make the changes
3524 known to Org mode@footnote{Org mode parses these lines only when
3525 Org mode is activated after visiting a file.  @kbd{C-c C-c} with the
3526 cursor in a line starting with @samp{#+} is simply restarting Org mode
3527 for the current buffer.}.
3529 @node Faces for TODO keywords, TODO dependencies, Per-file keywords, TODO extensions
3530 @subsection Faces for TODO keywords
3531 @cindex faces, for TODO keywords
3533 @vindex org-todo @r{(face)}
3534 @vindex org-done @r{(face)}
3535 @vindex org-todo-keyword-faces
3536 Org mode highlights TODO keywords with special faces: @code{org-todo}
3537 for keywords indicating that an item still has to be acted upon, and
3538 @code{org-done} for keywords indicating that an item is finished.  If
3539 you are using more than 2 different states, you might want to use
3540 special faces for some of them.  This can be done using the variable
3541 @code{org-todo-keyword-faces}.  For example:
3543 @lisp
3544 @group
3545 (setq org-todo-keyword-faces
3546       '(("TODO" . org-warning) ("STARTED" . "yellow")
3547         ("CANCELED" . (:foreground "blue" :weight bold))))
3548 @end group
3549 @end lisp
3551 While using a list with face properties as shown for CANCELED @emph{should}
3552 work, this does not aways seem to be the case.  If necessary, define a
3553 special face and use that.  A string is interpreted as a color.  The variable
3554 @code{org-faces-easy-properties} determines if that color is interpreted as a
3555 foreground or a background color.
3557 @node TODO dependencies,  , Faces for TODO keywords, TODO extensions
3558 @subsection TODO dependencies
3559 @cindex TODO dependencies
3560 @cindex dependencies, of TODO states
3562 @vindex org-enforce-todo-dependencies
3563 @cindex property, ORDERED
3564 The structure of Org files (hierarchy and lists) makes it easy to define TODO
3565 dependencies.  Usually, a parent TODO task should not be marked DONE until
3566 all subtasks (defined as children tasks) are marked as DONE.  And sometimes
3567 there is a logical sequence to a number of (sub)tasks, so that one task
3568 cannot be acted upon before all siblings above it are done.  If you customize
3569 the variable @code{org-enforce-todo-dependencies}, Org will block entries
3570 from changing state to DONE while they have children that are not DONE.
3571 Furthermore, if an entry has a property @code{ORDERED}, each of its children
3572 will be blocked until all earlier siblings are marked DONE.  Here is an
3573 example:
3575 @example
3576 * TODO Blocked until (two) is done
3577 ** DONE one
3578 ** TODO two
3580 * Parent
3581   :PROPERTIES:
3582     :ORDERED: t
3583   :END:
3584 ** TODO a
3585 ** TODO b, needs to wait for (a)
3586 ** TODO c, needs to wait for (a) and (b)
3587 @end example
3589 @table @kbd
3590 @kindex C-c C-x o
3591 @item C-c C-x o
3592 @vindex org-track-ordered-property-with-tag
3593 @cindex property, ORDERED
3594 Toggle the @code{ORDERED} property of the current entry.  A property is used
3595 for this behavior because this should be local to the current entry, not
3596 inherited like a tag.  However, if you would like to @i{track} the value of
3597 this property with a tag for better visibility, customize the variable
3598 @code{org-track-ordered-property-with-tag}.
3599 @kindex C-u C-u C-u C-c C-t
3600 @item C-u C-u C-u C-c C-t
3601 Change TODO state, circumventing any state blocking.
3602 @end table
3604 @vindex org-agenda-dim-blocked-tasks
3605 If you set the variable @code{org-agenda-dim-blocked-tasks}, TODO entries
3606 that cannot be closed because of such dependencies will be shown in a dimmed
3607 font or even made invisible in agenda views (@pxref{Agenda Views}).
3609 @cindex checkboxes and TODO dependencies
3610 @vindex org-enforce-todo-dependencies
3611 You can also block changes of TODO states by looking at checkboxes
3612 (@pxref{Checkboxes}).  If you set the variable
3613 @code{org-enforce-todo-checkbox-dependencies}, an entry that has unchecked
3614 checkboxes will be blocked from switching to DONE.
3616 If you need more complex dependency structures, for example dependencies
3617 between entries in different trees or files, check out the contributed
3618 module @file{org-depend.el}.
3620 @page
3621 @node Progress logging, Priorities, TODO extensions, TODO Items
3622 @section Progress logging
3623 @cindex progress logging
3624 @cindex logging, of progress
3626 Org mode can automatically record a timestamp and possibly a note when
3627 you mark a TODO item as DONE, or even each time you change the state of
3628 a TODO item.  This system is highly configurable, settings can be on a
3629 per-keyword basis and can be localized to a file or even a subtree.  For
3630 information on how to clock working time for a task, see @ref{Clocking
3631 work time}.
3633 @menu
3634 * Closing items::               When was this entry marked DONE?
3635 * Tracking TODO state changes::  When did the status change?
3636 * Tracking your habits::        How consistent have you been?
3637 @end menu
3639 @node Closing items, Tracking TODO state changes, Progress logging, Progress logging
3640 @subsection Closing items
3642 The most basic logging is to keep track of @emph{when} a certain TODO
3643 item was finished.  This is achieved with@footnote{The corresponding
3644 in-buffer setting is: @code{#+STARTUP: logdone}}.
3646 @lisp
3647 (setq org-log-done 'time)
3648 @end lisp
3650 @noindent
3651 Then each time you turn an entry from a TODO (not-done) state into any
3652 of the DONE states, a line @samp{CLOSED: [timestamp]} will be inserted
3653 just after the headline.  If you turn the entry back into a TODO item
3654 through further state cycling, that line will be removed again.  If you
3655 want to record a note along with the timestamp, use@footnote{The
3656 corresponding in-buffer setting is: @code{#+STARTUP: lognotedone}}
3658 @lisp
3659 (setq org-log-done 'note)
3660 @end lisp
3662 @noindent
3663 You will then be prompted for a note, and that note will be stored below
3664 the entry with a @samp{Closing Note} heading.
3666 In the timeline (@pxref{Timeline}) and in the agenda
3667 (@pxref{Weekly/daily agenda}), you can then use the @kbd{l} key to
3668 display the TODO items with a @samp{CLOSED} timestamp on each day,
3669 giving you an overview of what has been done.
3671 @node Tracking TODO state changes, Tracking your habits, Closing items, Progress logging
3672 @subsection Tracking TODO state changes
3673 @cindex drawer, for state change recording
3675 @vindex org-log-states-order-reversed
3676 @vindex org-log-into-drawer
3677 @cindex property, LOG_INTO_DRAWER
3678 When TODO keywords are used as workflow states (@pxref{Workflow states}), you
3679 might want to keep track of when a state change occurred and maybe take a
3680 note about this change.  You can either record just a timestamp, or a
3681 time-stamped note for a change.  These records will be inserted after the
3682 headline as an itemized list, newest first@footnote{See the variable
3683 @code{org-log-states-order-reversed}}.  When taking a lot of notes, you might
3684 want to get the notes out of the way into a drawer (@pxref{Drawers}).
3685 Customize the variable @code{org-log-into-drawer} to get this
3686 behavior---the recommended drawer for this is called @code{LOGBOOK}.  You can
3687 also overrule the setting of this variable for a subtree by setting a
3688 @code{LOG_INTO_DRAWER} property.
3690 Since it is normally too much to record a note for every state, Org mode
3691 expects configuration on a per-keyword basis for this.  This is achieved by
3692 adding special markers @samp{!} (for a timestamp) and @samp{@@} (for a note)
3693 in parentheses after each keyword.  For example, with the setting
3695 @lisp
3696 (setq org-todo-keywords
3697   '((sequence "TODO(t)" "WAIT(w@@/!)" "|" "DONE(d!)" "CANCELED(c@@)")))
3698 @end lisp
3700 @noindent
3701 @vindex org-log-done
3702 you not only define global TODO keywords and fast access keys, but also
3703 request that a time is recorded when the entry is set to
3704 DONE@footnote{It is possible that Org mode will record two timestamps
3705 when you are using both @code{org-log-done} and state change logging.
3706 However, it will never prompt for two notes---if you have configured
3707 both, the state change recording note will take precedence and cancel
3708 the @samp{Closing Note}.}, and that a note is recorded when switching to
3709 WAIT or CANCELED.  The setting for WAIT is even more special: the
3710 @samp{!} after the slash means that in addition to the note taken when
3711 entering the state, a timestamp should be recorded when @i{leaving} the
3712 WAIT state, if and only if the @i{target} state does not configure
3713 logging for entering it.  So it has no effect when switching from WAIT
3714 to DONE, because DONE is configured to record a timestamp only.  But
3715 when switching from WAIT back to TODO, the @samp{/!} in the WAIT
3716 setting now triggers a timestamp even though TODO has no logging
3717 configured.
3719 You can use the exact same syntax for setting logging preferences local
3720 to a buffer:
3721 @example
3722 #+TODO: TODO(t) WAIT(w@@/!) | DONE(d!) CANCELED(c@@)
3723 @end example
3725 @cindex property, LOGGING
3726 In order to define logging settings that are local to a subtree or a
3727 single item, define a LOGGING property in this entry.  Any non-empty
3728 LOGGING property resets all logging settings to nil.  You may then turn
3729 on logging for this specific tree using STARTUP keywords like
3730 @code{lognotedone} or @code{logrepeat}, as well as adding state specific
3731 settings like @code{TODO(!)}.  For example
3733 @example
3734 * TODO Log each state with only a time
3735   :PROPERTIES:
3736   :LOGGING: TODO(!) WAIT(!) DONE(!) CANCELED(!)
3737   :END:
3738 * TODO Only log when switching to WAIT, and when repeating
3739   :PROPERTIES:
3740   :LOGGING: WAIT(@@) logrepeat
3741   :END:
3742 * TODO No logging at all
3743   :PROPERTIES:
3744   :LOGGING: nil
3745   :END:
3746 @end example
3748 @node Tracking your habits,  , Tracking TODO state changes, Progress logging
3749 @subsection Tracking your habits
3750 @cindex habits
3752 Org has the ability to track the consistency of a special category of TODOs,
3753 called ``habits''.  A habit has the following properties:
3755 @enumerate
3756 @item
3757 You have enabled the @code{habits} module by customizing the variable
3758 @code{org-modules}.
3759 @item
3760 The habit is a TODO, with a TODO keyword representing an open state.
3761 @item
3762 The property @code{STYLE} is set to the value @code{habit}.
3763 @item
3764 The TODO has a scheduled date, with a @code{.+} style repeat interval.
3765 @item
3766 The TODO may also have minimum and maximum ranges specified by using the
3767 syntax @samp{.+2d/3d}, which says that you want to do the task at least every
3768 three days, but at most every two days.
3769 @item
3770 You must also have state logging for the @code{DONE} state enabled, in order
3771 for historical data to be represented in the consistency graph.  If it's not
3772 enabled it's not an error, but the consistency graphs will be largely
3773 meaningless.
3774 @end enumerate
3776 To give you an idea of what the above rules look like in action, here's an
3777 actual habit with some history:
3779 @example
3780 ** TODO Shave
3781    SCHEDULED: <2009-10-17 Sat .+2d/4d>
3782    - State "DONE"       from "TODO"       [2009-10-15 Thu]
3783    - State "DONE"       from "TODO"       [2009-10-12 Mon]
3784    - State "DONE"       from "TODO"       [2009-10-10 Sat]
3785    - State "DONE"       from "TODO"       [2009-10-04 Sun]
3786    - State "DONE"       from "TODO"       [2009-10-02 Fri]
3787    - State "DONE"       from "TODO"       [2009-09-29 Tue]
3788    - State "DONE"       from "TODO"       [2009-09-25 Fri]
3789    - State "DONE"       from "TODO"       [2009-09-19 Sat]
3790    - State "DONE"       from "TODO"       [2009-09-16 Wed]
3791    - State "DONE"       from "TODO"       [2009-09-12 Sat]
3792    :PROPERTIES:
3793    :STYLE:    habit
3794    :LAST_REPEAT: [2009-10-19 Mon 00:36]
3795    :END:
3796 @end example
3798 What this habit says is: I want to shave at most every 2 days (given by the
3799 @code{SCHEDULED} date and repeat interval) and at least every 4 days.  If
3800 today is the 15th, then the habit first appears in the agenda on Oct 17,
3801 after the minimum of 2 days has elapsed, and will appear overdue on Oct 19,
3802 after four days have elapsed.
3804 What's really useful about habits is that they are displayed along with a
3805 consistency graph, to show how consistent you've been at getting that task
3806 done in the past.  This graph shows every day that the task was done over the
3807 past three weeks, with colors for each day.  The colors used are:
3809 @table @code
3810 @item Blue
3811 If the task wasn't to be done yet on that day.
3812 @item Green
3813 If the task could have been done on that day.
3814 @item Yellow
3815 If the task was going to be overdue the next day.
3816 @item Red
3817 If the task was overdue on that day.
3818 @end table
3820 In addition to coloring each day, the day is also marked with an asterix if
3821 the task was actually done that day, and an exclamation mark to show where
3822 the current day falls in the graph.
3824 There are several configuration variables that can be used to change the way
3825 habits are displayed in the agenda.
3827 @table @code
3828 @item org-habit-graph-column
3829 The buffer column at which the consistency graph should be drawn.  This will
3830 overwrite any text in that column, so it's a good idea to keep your habits'
3831 titles brief and to the point.
3832 @item org-habit-preceding-days
3833 The amount of history, in days before today, to appear in consistency graphs.
3834 @item org-habit-following-days
3835 The number of days after today that will appear in consistency graphs.
3836 @item org-habit-show-habits-only-for-today
3837 If non-nil, only show habits in today's agenda view.  This is set to true by
3838 default.
3839 @end table
3841 Lastly, pressing @kbd{K} in the agenda buffer will cause habits to
3842 temporarily be disabled and they won't appear at all.  Press @kbd{K} again to
3843 bring them back.  They are also subject to tag filtering, if you have habits
3844 which should only be done in certain contexts, for example.
3846 @node Priorities, Breaking down tasks, Progress logging, TODO Items
3847 @section Priorities
3848 @cindex priorities
3850 If you use Org mode extensively, you may end up with enough TODO items that
3851 it starts to make sense to prioritize them.  Prioritizing can be done by
3852 placing a @emph{priority cookie} into the headline of a TODO item, like this
3854 @example
3855 *** TODO [#A] Write letter to Sam Fortune
3856 @end example
3858 @noindent
3859 @vindex org-priority-faces
3860 By default, Org mode supports three priorities: @samp{A}, @samp{B}, and
3861 @samp{C}.  @samp{A} is the highest priority.  An entry without a cookie is
3862 treated as priority @samp{B}.  Priorities make a difference only in the
3863 agenda (@pxref{Weekly/daily agenda}); outside the agenda, they have no
3864 inherent meaning to Org mode.  The cookies can be highlighted with special
3865 faces by customizing the variable @code{org-priority-faces}.
3867 Priorities can be attached to any outline tree entries; they do not need
3868 to be TODO items.
3870 @table @kbd
3871 @kindex @kbd{C-c ,}
3872 @item @kbd{C-c ,}
3873 Set the priority of the current headline.  The command prompts for a
3874 priority character @samp{A}, @samp{B} or @samp{C}.  When you press
3875 @key{SPC} instead, the priority cookie is removed from the headline.
3876 The priorities can also be changed ``remotely'' from the timeline and
3877 agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
3879 @kindex S-@key{up}
3880 @kindex S-@key{down}
3881 @item S-@key{up}
3882 @itemx S-@key{down}
3883 @vindex org-priority-start-cycle-with-default
3884 Increase/decrease priority of current headline@footnote{See also the option
3885 @code{org-priority-start-cycle-with-default}.}.  Note that these keys are
3886 also used to modify timestamps (@pxref{Creating timestamps}).  See also
3887 @ref{Conflicts}, for a discussion of the interaction with
3888 @code{shift-selection-mode}.
3889 @end table
3891 @vindex org-highest-priority
3892 @vindex org-lowest-priority
3893 @vindex org-default-priority
3894 You can change the range of allowed priorities by setting the variables
3895 @code{org-highest-priority}, @code{org-lowest-priority}, and
3896 @code{org-default-priority}.  For an individual buffer, you may set
3897 these values (highest, lowest, default) like this (please make sure that
3898 the highest priority is earlier in the alphabet than the lowest
3899 priority):
3901 @cindex #+PRIORITIES
3902 @example
3903 #+PRIORITIES: A C B
3904 @end example
3906 @node Breaking down tasks, Checkboxes, Priorities, TODO Items
3907 @section Breaking tasks down into subtasks
3908 @cindex tasks, breaking down
3909 @cindex statistics, for TODO items
3911 @vindex org-agenda-todo-list-sublevels
3912 It is often advisable to break down large tasks into smaller, manageable
3913 subtasks.  You can do this by creating an outline tree below a TODO item,
3914 with detailed subtasks on the tree@footnote{To keep subtasks out of the
3915 global TODO list, see the @code{org-agenda-todo-list-sublevels}.}.  To keep
3916 the overview over the fraction of subtasks that are already completed, insert
3917 either @samp{[/]} or @samp{[%]} anywhere in the headline.  These cookies will
3918 be updated each time the TODO status of a child changes, or when pressing
3919 @kbd{C-c C-c} on the cookie.  For example:
3921 @example
3922 * Organize Party [33%]
3923 ** TODO Call people [1/2]
3924 *** TODO Peter
3925 *** DONE Sarah
3926 ** TODO Buy food
3927 ** DONE Talk to neighbor
3928 @end example
3930 @cindex property, COOKIE_DATA
3931 If a heading has both checkboxes and TODO children below it, the meaning of
3932 the statistics cookie become ambiguous.  Set the property
3933 @code{COOKIE_DATA} to either @samp{checkbox} or @samp{todo} to resolve
3934 this issue.
3936 @vindex org-hierarchical-todo-statistics
3937 If you would like to have the statistics cookie count any TODO entries in the
3938 subtree (not just direct children), configure the variable
3939 @code{org-hierarchical-todo-statistics}.  To do this for a single subtree,
3940 include the word @samp{recursive} into the value of the @code{COOKIE_DATA}
3941 property.
3943 @example
3944 * Parent capturing statistics [2/20]
3945   :PROPERTIES:
3946   :COOKIE_DATA: todo recursive
3947   :END:
3948 @end example
3950 If you would like a TODO entry to automatically change to DONE
3951 when all children are done, you can use the following setup:
3953 @example
3954 (defun org-summary-todo (n-done n-not-done)
3955   "Switch entry to DONE when all subentries are done, to TODO otherwise."
3956   (let (org-log-done org-log-states)   ; turn off logging
3957     (org-todo (if (= n-not-done 0) "DONE" "TODO"))))
3959 (add-hook 'org-after-todo-statistics-hook 'org-summary-todo)
3960 @end example
3963 Another possibility is the use of checkboxes to identify (a hierarchy of) a
3964 large number of subtasks (@pxref{Checkboxes}).
3967 @node Checkboxes,  , Breaking down tasks, TODO Items
3968 @section Checkboxes
3969 @cindex checkboxes
3971 Every item in a plain list (@pxref{Plain lists}) can be made into a
3972 checkbox by starting it with the string @samp{[ ]}.  This feature is
3973 similar to TODO items (@pxref{TODO Items}), but is more lightweight.
3974 Checkboxes are not included into the global TODO list, so they are often
3975 great to split a task into a number of simple steps.  Or you can use
3976 them in a shopping list.  To toggle a checkbox, use @kbd{C-c C-c}, or
3977 use the mouse (thanks to Piotr Zielinski's @file{org-mouse.el}).
3979 Here is an example of a checkbox list.
3981 @example
3982 * TODO Organize party [2/4]
3983   - [-] call people [1/3]
3984     - [ ] Peter
3985     - [X] Sarah
3986     - [ ] Sam
3987   - [X] order food
3988   - [ ] think about what music to play
3989   - [X] talk to the neighbors
3990 @end example
3992 Checkboxes work hierarchically, so if a checkbox item has children that
3993 are checkboxes, toggling one of the children checkboxes will make the
3994 parent checkbox reflect if none, some, or all of the children are
3995 checked.
3997 @cindex statistics, for checkboxes
3998 @cindex checkbox statistics
3999 @cindex property, COOKIE_DATA
4000 @vindex org-hierarchical-checkbox-statistics
4001 The @samp{[2/4]} and @samp{[1/3]} in the first and second line are cookies
4002 indicating how many checkboxes present in this entry have been checked off,
4003 and the total number of checkboxes present.  This can give you an idea on how
4004 many checkboxes remain, even without opening a folded entry.  The cookies can
4005 be placed into a headline or into (the first line of) a plain list item.
4006 Each cookie covers checkboxes of direct children structurally below the
4007 headline/item on which the cookie appears@footnote{Set the variable
4008 @code{org-hierarchical-checkbox-statistics} if you want such cookies to
4009 represent the all checkboxes below the cookie, not just the direct
4010 children.}.  You have to insert the cookie yourself by typing either
4011 @samp{[/]} or @samp{[%]}.  With @samp{[/]} you get an @samp{n out of m}
4012 result, as in the examples above.  With @samp{[%]} you get information about
4013 the percentage of checkboxes checked (in the above example, this would be
4014 @samp{[50%]} and @samp{[33%]}, respectively).  In a headline, a cookie can
4015 count either checkboxes below the heading or TODO states of children, and it
4016 will display whatever was changed last.  Set the property @code{COOKIE_DATA}
4017 to either @samp{checkbox} or @samp{todo} to resolve this issue.
4019 @cindex blocking, of checkboxes
4020 @cindex checkbox blocking
4021 @cindex property, ORDERED
4022 If the current outline node has an @code{ORDERED} property, checkboxes must
4023 be checked off in sequence, and an error will be thrown if you try to check
4024 off a box while there are unchecked boxes above it.
4026 @noindent The following commands work with checkboxes:
4028 @table @kbd
4029 @kindex C-c C-c
4030 @item C-c C-c
4031 Toggle checkbox status or (with prefix arg) checkbox presence at point.  With
4032 double prefix argument, set it to @samp{[-]}, which is considered to be an
4033 intermediate state.
4034 @kindex C-c C-x C-b
4035 @item C-c C-x C-b
4036 Toggle checkbox status or (with prefix arg) checkbox presence at point.  With
4037 double prefix argument, set it to @samp{[-]}, which is considered to be an
4038 intermediate state.
4039 @itemize @minus
4040 @item
4041 If there is an active region, toggle the first checkbox in the region
4042 and set all remaining boxes to the same status as the first.  With a prefix
4043 arg, add or remove the checkbox for all items in the region.
4044 @item
4045 If the cursor is in a headline, toggle checkboxes in the region between
4046 this headline and the next (so @emph{not} the entire subtree).
4047 @item
4048 If there is no active region, just toggle the checkbox at point.
4049 @end itemize
4050 @kindex M-S-@key{RET}
4051 @item M-S-@key{RET}
4052 Insert a new item with a checkbox.
4053 This works only if the cursor is already in a plain list item
4054 (@pxref{Plain lists}).
4055 @kindex C-c C-x o
4056 @item C-c C-x o
4057 @vindex org-track-ordered-property-with-tag
4058 @cindex property, ORDERED
4059 Toggle the @code{ORDERED} property of the entry, to toggle if checkboxes must
4060 be checked off in sequence.  A property is used for this behavior because
4061 this should be local to the current entry, not inherited like a tag.
4062 However, if you would like to @i{track} the value of this property with a tag
4063 for better visibility, customize the variable
4064 @code{org-track-ordered-property-with-tag}.
4065 @kindex C-c #
4066 @item C-c #
4067 Update the statistics cookie in the current outline entry.  When called with
4068 a @kbd{C-u} prefix, update the entire file.  Checkbox statistic cookies are
4069 updated automatically if you toggle checkboxes with @kbd{C-c C-c} and make
4070 new ones with @kbd{M-S-@key{RET}}.  TODO statistics cookies update when
4071 changing TODO states.  If you delete boxes/entries or add/change them by
4072 hand, use this command to get things back into sync.  Or simply toggle any
4073 entry twice (checkboxes with @kbd{C-c C-c}).
4074 @end table
4076 @node Tags, Properties and Columns, TODO Items, Top
4077 @chapter Tags
4078 @cindex tags
4079 @cindex headline tagging
4080 @cindex matching, tags
4081 @cindex sparse tree, tag based
4083 An excellent way to implement labels and contexts for cross-correlating
4084 information is to assign @i{tags} to headlines.  Org mode has extensive
4085 support for tags.
4087 @vindex org-tag-faces
4088 Every headline can contain a list of tags; they occur at the end of the
4089 headline.  Tags are normal words containing letters, numbers, @samp{_}, and
4090 @samp{@@}.  Tags must be preceded and followed by a single colon, e.g.,
4091 @samp{:work:}.  Several tags can be specified, as in @samp{:work:urgent:}.
4092 Tags will by default be in bold face with the same color as the headline.
4093 You may specify special faces for specific tags using the variable
4094 @code{org-tag-faces}, in much the same way as you can for TODO keywords
4095 (@pxref{Faces for TODO keywords}).
4097 @menu
4098 * Tag inheritance::             Tags use the tree structure of the outline
4099 * Setting tags::                How to assign tags to a headline
4100 * Tag searches::                Searching for combinations of tags
4101 @end menu
4103 @node Tag inheritance, Setting tags, Tags, Tags
4104 @section Tag inheritance
4105 @cindex tag inheritance
4106 @cindex inheritance, of tags
4107 @cindex sublevels, inclusion into tags match
4109 @i{Tags} make use of the hierarchical structure of outline trees.  If a
4110 heading has a certain tag, all subheadings will inherit the tag as
4111 well.  For example, in the list
4113 @example
4114 * Meeting with the French group      :work:
4115 ** Summary by Frank                  :boss:notes:
4116 *** TODO Prepare slides for him      :action:
4117 @end example
4119 @noindent
4120 the final heading will have the tags @samp{:work:}, @samp{:boss:},
4121 @samp{:notes:}, and @samp{:action:} even though the final heading is not
4122 explicitly marked with those tags.  You can also set tags that all entries in
4123 a file should inherit just as if these tags were defined in a hypothetical
4124 level zero that surrounds the entire file.  Use a line like this@footnote{As
4125 with all these in-buffer settings, pressing @kbd{C-c C-c} activates any
4126 changes in the line.}:
4128 @cindex #+FILETAGS
4129 @example
4130 #+FILETAGS: :Peter:Boss:Secret:
4131 @end example
4133 @noindent
4134 @vindex org-use-tag-inheritance
4135 @vindex org-tags-exclude-from-inheritance
4136 To limit tag inheritance to specific tags, or to turn it off entirely, use
4137 the variables @code{org-use-tag-inheritance} and
4138 @code{org-tags-exclude-from-inheritance}.
4140 @vindex org-tags-match-list-sublevels
4141 When a headline matches during a tags search while tag inheritance is turned
4142 on, all the sublevels in the same tree will (for a simple match form) match
4143 as well@footnote{This is only true if the search does not involve more
4144 complex tests including properties (@pxref{Property searches}).}.  The list
4145 of matches may then become very long.  If you only want to see the first tags
4146 match in a subtree, configure the variable
4147 @code{org-tags-match-list-sublevels} (not recommended).
4149 @node Setting tags, Tag searches, Tag inheritance, Tags
4150 @section Setting tags
4151 @cindex setting tags
4152 @cindex tags, setting
4154 @kindex M-@key{TAB}
4155 Tags can simply be typed into the buffer at the end of a headline.
4156 After a colon, @kbd{M-@key{TAB}} offers completion on tags.  There is
4157 also a special command for inserting tags:
4159 @table @kbd
4160 @kindex C-c C-q
4161 @item C-c C-q
4162 @cindex completion, of tags
4163 @vindex org-tags-column
4164 Enter new tags for the current headline.  Org mode will either offer
4165 completion or a special single-key interface for setting tags, see
4166 below.  After pressing @key{RET}, the tags will be inserted and aligned
4167 to @code{org-tags-column}.  When called with a @kbd{C-u} prefix, all
4168 tags in the current buffer will be aligned to that column, just to make
4169 things look nice.  TAGS are automatically realigned after promotion,
4170 demotion, and TODO state changes (@pxref{TODO basics}).
4171 @kindex C-c C-c
4172 @item C-c C-c
4173 When the cursor is in a headline, this does the same as @kbd{C-c C-q}.
4174 @end table
4176 @vindex org-tag-alist
4177 Org will support tag insertion based on a @emph{list of tags}.  By
4178 default this list is constructed dynamically, containing all tags
4179 currently used in the buffer.  You may also globally specify a hard list
4180 of tags with the variable @code{org-tag-alist}.  Finally you can set
4181 the default tags for a given file with lines like
4183 @cindex #+TAGS
4184 @example
4185 #+TAGS: @@work @@home @@tennisclub
4186 #+TAGS: laptop car pc sailboat
4187 @end example
4189 If you have globally defined your preferred set of tags using the
4190 variable @code{org-tag-alist}, but would like to use a dynamic tag list
4191 in a specific file, add an empty TAGS option line to that file:
4193 @example
4194 #+TAGS:
4195 @end example
4197 @vindex org-tag-persistent-alist
4198 If you have a preferred set of tags that you would like to use in every file,
4199 in addition to those defined on a per-file basis by TAGS option lines, then
4200 you may specify a list of tags with the variable
4201 @code{org-tag-persistent-alist}.  You may turn this off on a per-file basis
4202 by adding a STARTUP option line to that file:
4204 @example
4205 #+STARTUP: noptag
4206 @end example
4208 By default Org mode uses the standard minibuffer completion facilities for
4209 entering tags.  However, it also implements another, quicker, tag selection
4210 method called @emph{fast tag selection}.  This allows you to select and
4211 deselect tags with just a single key press.  For this to work well you should
4212 assign unique letters to most of your commonly used tags.  You can do this
4213 globally by configuring the variable @code{org-tag-alist} in your
4214 @file{.emacs} file.  For example, you may find the need to tag many items in
4215 different files with @samp{:@@home:}.  In this case you can set something
4216 like:
4218 @lisp
4219 (setq org-tag-alist '(("@@work" . ?w) ("@@home" . ?h) ("laptop" . ?l)))
4220 @end lisp
4222 @noindent If the tag is only relevant to the file you are working on, then you
4223 can instead set the TAGS option line as:
4225 @example
4226 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t)  laptop(l)  pc(p)
4227 @end example
4229 @noindent The tags interface will show the available tags in a splash
4230 window.  If you want to start a new line after a specific tag, insert
4231 @samp{\n} into the tag list
4233 @example
4234 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t) \n laptop(l)  pc(p)
4235 @end example
4237 @noindent or write them in two lines:
4239 @example
4240 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t)
4241 #+TAGS: laptop(l)  pc(p)
4242 @end example
4244 @noindent
4245 You can also group together tags that are mutually exclusive by using
4246 braces, as in:
4248 @example
4249 #+TAGS: @{ @@work(w)  @@home(h)  @@tennisclub(t) @}  laptop(l)  pc(p)
4250 @end example
4252 @noindent you indicate that at most one of @samp{@@work}, @samp{@@home},
4253 and @samp{@@tennisclub} should be selected.  Multiple such groups are allowed.
4255 @noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
4256 these lines to activate any changes.
4258 @noindent
4259 To set these mutually exclusive groups in the variable @code{org-tags-alist},
4260 you must use the dummy tags @code{:startgroup} and @code{:endgroup} instead
4261 of the braces.  Similarly, you can use @code{:newline} to indicate a line
4262 break.  The previous example would be set globally by the following
4263 configuration:
4265 @lisp
4266 (setq org-tag-alist '((:startgroup . nil)
4267                       ("@@work" . ?w) ("@@home" . ?h)
4268                       ("@@tennisclub" . ?t)
4269                       (:endgroup . nil)
4270                       ("laptop" . ?l) ("pc" . ?p)))
4271 @end lisp
4273 If at least one tag has a selection key then pressing @kbd{C-c C-c} will
4274 automatically present you with a special interface, listing inherited tags,
4275 the tags of the current headline, and a list of all valid tags with
4276 corresponding keys@footnote{Keys will automatically be assigned to tags which
4277 have no configured keys.}.  In this interface, you can use the following
4278 keys:
4280 @table @kbd
4281 @item a-z...
4282 Pressing keys assigned to tags will add or remove them from the list of
4283 tags in the current line.  Selecting a tag in a group of mutually
4284 exclusive tags will turn off any other tags from that group.
4285 @kindex @key{TAB}
4286 @item @key{TAB}
4287 Enter a tag in the minibuffer, even if the tag is not in the predefined
4288 list.  You will be able to complete on all tags present in the buffer.
4289 @kindex @key{SPC}
4290 @item @key{SPC}
4291 Clear all tags for this line.
4292 @kindex @key{RET}
4293 @item @key{RET}
4294 Accept the modified set.
4295 @item C-g
4296 Abort without installing changes.
4297 @item q
4298 If @kbd{q} is not assigned to a tag, it aborts like @kbd{C-g}.
4299 @item !
4300 Turn off groups of mutually exclusive tags.  Use this to (as an
4301 exception) assign several tags from such a group.
4302 @item C-c
4303 Toggle auto-exit after the next change (see below).
4304 If you are using expert mode, the first @kbd{C-c} will display the
4305 selection window.
4306 @end table
4308 @noindent
4309 This method lets you assign tags to a headline with very few keys.  With
4310 the above setup, you could clear the current tags and set @samp{@@home},
4311 @samp{laptop} and @samp{pc} tags with just the following keys: @kbd{C-c
4312 C-c @key{SPC} h l p @key{RET}}.  Switching from @samp{@@home} to
4313 @samp{@@work} would be done with @kbd{C-c C-c w @key{RET}} or
4314 alternatively with @kbd{C-c C-c C-c w}.  Adding the non-predefined tag
4315 @samp{Sarah} could be done with @kbd{C-c C-c @key{TAB} S a r a h
4316 @key{RET} @key{RET}}.
4318 @vindex org-fast-tag-selection-single-key
4319 If you find that most of the time you need only a single key press to
4320 modify your list of tags, set the variable
4321 @code{org-fast-tag-selection-single-key}.  Then you no longer have to
4322 press @key{RET} to exit fast tag selection---it will immediately exit
4323 after the first change.  If you then occasionally need more keys, press
4324 @kbd{C-c} to turn off auto-exit for the current tag selection process
4325 (in effect: start selection with @kbd{C-c C-c C-c} instead of @kbd{C-c
4326 C-c}).  If you set the variable to the value @code{expert}, the special
4327 window is not even shown for single-key tag selection, it comes up only
4328 when you press an extra @kbd{C-c}.
4330 @vindex org-complete-tags-always-offer-all-agenda-tags
4331 As said before, when setting tags and @code{org-tag-alist} is nil, then the
4332 list of tags in the current buffer is used.  Normally, this behavior is very
4333 convenient, except in org remember buffers (@pxref{Remember}), because there
4334 are no tags that can be calculated dynamically.  Here, you most probably want
4335 to have completion for all tags in all agenda files.  This can be done by
4336 setting @code{org-complete-tags-always-offer-all-agenda-tags} to non-nil in
4337 those buffers.
4339 @lisp
4340 (add-hook 'org-remember-mode-hook
4341           (lambda ()
4342             (set (make-local-variable
4343                   'org-complete-tags-always-offer-all-agenda-tags)
4344                  t)))
4345 @end lisp
4347 Of course, you can also set it to @code{t} globally if you always want to
4348 have completion of all tags in all agenda files.
4350 @node Tag searches,  , Setting tags, Tags
4351 @section Tag searches
4352 @cindex tag searches
4353 @cindex searching for tags
4355 Once a system of tags has been set up, it can be used to collect related
4356 information into special lists.
4358 @table @kbd
4359 @kindex C-c \
4360 @kindex C-c / m
4361 @item C-c \
4362 @itemx C-c / m
4363 Create a sparse tree with all headlines matching a tags search.  With a
4364 @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
4365 @kindex C-c a m
4366 @item C-c a m
4367 Create a global list of tag matches from all agenda files.
4368 @xref{Matching tags and properties}.
4369 @kindex C-c a M
4370 @item C-c a M
4371 @vindex org-tags-match-list-sublevels
4372 Create a global list of tag matches from all agenda files, but check
4373 only TODO items and force checking subitems (see variable
4374 @code{org-tags-match-list-sublevels}).
4375 @end table
4377 These commands all prompt for a match string which allows basic Boolean logic
4378 like @samp{+boss+urgent-project1}, to find entries with tags @samp{boss} and
4379 @samp{urgent}, but not @samp{project1}, or @samp{Kathy|Sally} to find entries
4380 which are tagged, like @samp{Kathy} or @samp{Sally}.  The full syntax of the search
4381 string is rich and allows also matching against TODO keywords, entry levels
4382 and properties.  For a complete description with many examples, see
4383 @ref{Matching tags and properties}.
4386 @node Properties and Columns, Dates and Times, Tags, Top
4387 @chapter Properties and Columns
4388 @cindex properties
4390 Properties are a set of key-value pairs associated with an entry.  There
4391 are two main applications for properties in Org mode.  First, properties
4392 are like tags, but with a value.  Second, you can use properties to
4393 implement (very basic) database capabilities in an Org buffer.  For
4394 an example of the first application, imagine maintaining a file where
4395 you document bugs and plan releases for a piece of software.  Instead of
4396 using tags like @code{:release_1:}, @code{:release_2:}, one can use a
4397 property, say @code{:Release:}, that in different subtrees has different
4398 values, such as @code{1.0} or @code{2.0}.  For an example of the second
4399 application of properties, imagine keeping track of your music CDs,
4400 where properties could be things such as the album, artist, date of
4401 release, number of tracks, and so on.
4403 Properties can be conveniently edited and viewed in column view
4404 (@pxref{Column view}).
4406 @menu
4407 * Property syntax::             How properties are spelled out
4408 * Special properties::          Access to other Org mode features
4409 * Property searches::           Matching property values
4410 * Property inheritance::        Passing values down the tree
4411 * Column view::                 Tabular viewing and editing
4412 * Property API::                Properties for Lisp programmers
4413 @end menu
4415 @node Property syntax, Special properties, Properties and Columns, Properties and Columns
4416 @section Property syntax
4417 @cindex property syntax
4418 @cindex drawer, for properties
4420 Properties are key-value pairs.  They need to be inserted into a special
4421 drawer (@pxref{Drawers}) with the name @code{PROPERTIES}.  Each property
4422 is specified on a single line, with the key (surrounded by colons)
4423 first, and the value after it.  Here is an example:
4425 @example
4426 * CD collection
4427 ** Classic
4428 *** Goldberg Variations
4429     :PROPERTIES:
4430     :Title:     Goldberg Variations
4431     :Composer:  J.S. Bach
4432     :Artist:    Glen Gould
4433     :Publisher: Deutsche Grammophon
4434     :NDisks:    1
4435     :END:
4436 @end example
4438 You may define the allowed values for a particular property @samp{:Xyz:}
4439 by setting a property @samp{:Xyz_ALL:}.  This special property is
4440 @emph{inherited}, so if you set it in a level 1 entry, it will apply to
4441 the entire tree.  When allowed values are defined, setting the
4442 corresponding property becomes easier and is less prone to typing
4443 errors.  For the example with the CD collection, we can predefine
4444 publishers and the number of disks in a box like this:
4446 @example
4447 * CD collection
4448   :PROPERTIES:
4449   :NDisks_ALL:  1 2 3 4
4450   :Publisher_ALL: "Deutsche Grammophon" Philips EMI
4451   :END:
4452 @end example
4454 If you want to set properties that can be inherited by any entry in a
4455 file, use a line like
4456 @cindex property, _ALL
4457 @cindex #+PROPERTY
4458 @example
4459 #+PROPERTY: NDisks_ALL 1 2 3 4
4460 @end example
4462 @vindex org-global-properties
4463 Property values set with the global variable
4464 @code{org-global-properties} can be inherited by all entries in all
4465 Org files.
4467 @noindent
4468 The following commands help to work with properties:
4470 @table @kbd
4471 @kindex M-@key{TAB}
4472 @item M-@key{TAB}
4473 After an initial colon in a line, complete property keys.  All keys used
4474 in the current file will be offered as possible completions.
4475 @kindex C-c C-x p
4476 @item C-c C-x p
4477 Set a property.  This prompts for a property name and a value.  If
4478 necessary, the property drawer is created as well.
4479 @item M-x org-insert-property-drawer
4480 Insert a property drawer into the current entry.  The drawer will be
4481 inserted early in the entry, but after the lines with planning
4482 information like deadlines.
4483 @kindex C-c C-c
4484 @item C-c C-c
4485 With the cursor in a property drawer, this executes property commands.
4486 @item C-c C-c s
4487 Set a property in the current entry.  Both the property and the value
4488 can be inserted using completion.
4489 @kindex S-@key{right}
4490 @kindex S-@key{left}
4491 @item S-@key{left}/@key{right}
4492 Switch property at point to the next/previous allowed value.
4493 @item C-c C-c d
4494 Remove a property from the current entry.
4495 @item C-c C-c D
4496 Globally remove a property, from all entries in the current file.
4497 @item C-c C-c c
4498 Compute the property at point, using the operator and scope from the
4499 nearest column format definition.
4500 @end table
4502 @node Special properties, Property searches, Property syntax, Properties and Columns
4503 @section Special properties
4504 @cindex properties, special
4506 Special properties provide an alternative access method to Org mode
4507 features, like the TODO state or the priority of an entry, discussed in the
4508 previous chapters.  This interface exists so that you can include
4509 these states in a column view (@pxref{Column view}), or to use them in
4510 queries.  The following property names are special and should not be
4511 used as keys in the properties drawer:
4513 @cindex property, special, TODO
4514 @cindex property, special, TAGS
4515 @cindex property, special, ALLTAGS
4516 @cindex property, special, CATEGORY
4517 @cindex property, special, PRIORITY
4518 @cindex property, special, DEADLINE
4519 @cindex property, special, SCHEDULED
4520 @cindex property, special, CLOSED
4521 @cindex property, special, TIMESTAMP
4522 @cindex property, special, TIMESTAMP_IA
4523 @cindex property, special, CLOCKSUM
4524 @cindex property, special, BLOCKED
4525 @c guessing that ITEM is needed in this area; also, should this list be sorted?
4526 @cindex property, special, ITEM
4527 @example
4528 TODO         @r{The TODO keyword of the entry.}
4529 TAGS         @r{The tags defined directly in the headline.}
4530 ALLTAGS      @r{All tags, including inherited ones.}
4531 CATEGORY     @r{The category of an entry.}
4532 PRIORITY     @r{The priority of the entry, a string with a single letter.}
4533 DEADLINE     @r{The deadline time string, without the angular brackets.}
4534 SCHEDULED    @r{The scheduling timestamp, without the angular brackets.}
4535 CLOSED       @r{When was this entry closed?}
4536 TIMESTAMP    @r{The first keyword-less timestamp in the entry.}
4537 TIMESTAMP_IA @r{The first inactive timestamp in the entry.}
4538 CLOCKSUM     @r{The sum of CLOCK intervals in the subtree.  @code{org-clock-sum}}
4539              @r{must be run first to compute the values.}
4540 BLOCKED      @r{"t" if task is currently blocked by children or siblings}
4541 ITEM         @r{The content of the entry.}
4542 @end example
4544 @node Property searches, Property inheritance, Special properties, Properties and Columns
4545 @section Property searches
4546 @cindex properties, searching
4547 @cindex searching, of properties
4549 To create sparse trees and special lists with selection based on properties,
4550 the same commands are used as for tag searches (@pxref{Tag searches}).
4551 @table @kbd
4552 @kindex C-c \
4553 @kindex C-c / m
4554 @item C-c \
4555 @itemx C-c / m
4556 Create a sparse tree with all matching entries.  With a
4557 @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
4558 @kindex C-c a m
4559 @item C-c a m
4560 Create a global list of tag/property  matches from all agenda files.
4561 @xref{Matching tags and properties}.
4562 @kindex C-c a M
4563 @item C-c a M
4564 @vindex org-tags-match-list-sublevels
4565 Create a global list of tag matches from all agenda files, but check
4566 only TODO items and force checking of subitems (see variable
4567 @code{org-tags-match-list-sublevels}).
4568 @end table
4570 The syntax for the search string is described in @ref{Matching tags and
4571 properties}.
4573 There is also a special command for creating sparse trees based on a
4574 single property:
4576 @table @kbd
4577 @kindex C-c / p
4578 @item C-c / p
4579 Create a sparse tree based on the value of a property.  This first
4580 prompts for the name of a property, and then for a value.  A sparse tree
4581 is created with all entries that define this property with the given
4582 value.  If you enclose the value into curly braces, it is interpreted as
4583 a regular expression and matched against the property values.
4584 @end table
4586 @node Property inheritance, Column view, Property searches, Properties and Columns
4587 @section Property Inheritance
4588 @cindex properties, inheritance
4589 @cindex inheritance, of properties
4591 @vindex org-use-property-inheritance
4592 The outline structure of Org-mode documents lends itself for an
4593 inheritance model of properties: if the parent in a tree has a certain
4594 property, the children can inherit this property.  Org mode does not
4595 turn this on by default, because it can slow down property searches
4596 significantly and is often not needed.  However, if you find inheritance
4597 useful, you can turn it on by setting the variable
4598 @code{org-use-property-inheritance}.  It may be set to @code{t} to make
4599 all properties inherited from the parent, to a list of properties
4600 that should be inherited, or to a regular expression that matches
4601 inherited properties.
4603 Org mode has a few properties for which inheritance is hard-coded, at
4604 least for the special applications for which they are used:
4606 @cindex property, COLUMNS
4607 @table @code
4608 @item COLUMNS
4609 The @code{:COLUMNS:} property defines the format of column view
4610 (@pxref{Column view}).  It is inherited in the sense that the level
4611 where a @code{:COLUMNS:} property is defined is used as the starting
4612 point for a column view table, independently of the location in the
4613 subtree from where columns view is turned on.
4614 @item CATEGORY
4615 @cindex property, CATEGORY
4616 For agenda view, a category set through a @code{:CATEGORY:} property
4617 applies to the entire subtree.
4618 @item ARCHIVE
4619 @cindex property, ARCHIVE
4620 For archiving, the @code{:ARCHIVE:} property may define the archive
4621 location for the entire subtree (@pxref{Moving subtrees}).
4622 @item LOGGING
4623 @cindex property, LOGGING
4624 The LOGGING property may define logging settings for an entry or a
4625 subtree (@pxref{Tracking TODO state changes}).
4626 @end table
4628 @node Column view, Property API, Property inheritance, Properties and Columns
4629 @section Column view
4631 A great way to view and edit properties in an outline tree is
4632 @emph{column view}.  In column view, each outline node is turned into a
4633 table row.  Columns in this table provide access to properties of the
4634 entries.  Org mode implements columns by overlaying a tabular structure
4635 over the headline of each item.  While the headlines have been turned
4636 into a table row, you can still change the visibility of the outline
4637 tree.  For example, you get a compact table by switching to CONTENTS
4638 view (@kbd{S-@key{TAB} S-@key{TAB}}, or simply @kbd{c} while column view
4639 is active), but you can still open, read, and edit the entry below each
4640 headline.  Or, you can switch to column view after executing a sparse
4641 tree command and in this way get a table only for the selected items.
4642 Column view also works in agenda buffers (@pxref{Agenda Views}) where
4643 queries have collected selected items, possibly from a number of files.
4645 @menu
4646 * Defining columns::            The COLUMNS format property
4647 * Using column view::           How to create and use column view
4648 * Capturing column view::       A dynamic block for column view
4649 @end menu
4651 @node Defining columns, Using column view, Column view, Column view
4652 @subsection Defining columns
4653 @cindex column view, for properties
4654 @cindex properties, column view
4656 Setting up a column view first requires defining the columns.  This is
4657 done by defining a column format line.
4659 @menu
4660 * Scope of column definitions::  Where defined, where valid?
4661 * Column attributes::           Appearance and content of a column
4662 @end menu
4664 @node Scope of column definitions, Column attributes, Defining columns, Defining columns
4665 @subsubsection Scope of column definitions
4667 To define a column format for an entire file, use a line like
4669 @cindex #+COLUMNS
4670 @example
4671 #+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
4672 @end example
4674 To specify a format that only applies to a specific tree, add a
4675 @code{:COLUMNS:} property to the top node of that tree, for example:
4677 @example
4678 ** Top node for columns view
4679    :PROPERTIES:
4680    :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
4681    :END:
4682 @end example
4684 If a @code{:COLUMNS:} property is present in an entry, it defines columns
4685 for the entry itself, and for the entire subtree below it.  Since the
4686 column definition is part of the hierarchical structure of the document,
4687 you can define columns on level 1 that are general enough for all
4688 sublevels, and more specific columns further down, when you edit a
4689 deeper part of the tree.
4691 @node Column attributes,  , Scope of column definitions, Defining columns
4692 @subsubsection Column attributes
4693 A column definition sets the attributes of a column.  The general
4694 definition looks like this:
4696 @example
4697  %[@var{width}]@var{property}[(@var{title})][@{@var{summary-type}@}]
4698 @end example
4700 @noindent
4701 Except for the percent sign and the property name, all items are
4702 optional.  The individual parts have the following meaning:
4704 @example
4705 @var{width}           @r{An integer specifying the width of the column in characters.}
4706                 @r{If omitted, the width will be determined automatically.}
4707 @var{property}        @r{The property that should be edited in this column.}
4708                 @r{Special properties representing meta data are allowed here}
4709                 @r{as well (@pxref{Special properties})}
4710 (title)         @r{The header text for the column. If omitted, the}
4711                 @r{property name is used.}
4712 @{@var{summary-type}@}  @r{The summary type.  If specified, the column values for}
4713                 @r{parent nodes are computed from the children.}
4714                 @r{Supported summary types are:}
4715                 @{+@}       @r{Sum numbers in this column.}
4716                 @{+;%.1f@}  @r{Like @samp{+}, but format result with @samp{%.1f}.}
4717                 @{$@}       @r{Currency, short for @samp{+;%.2f}.}
4718                 @{:@}       @r{Sum times, HH:MM, plain numbers are hours.}
4719                 @{X@}       @r{Checkbox status, @samp{[X]} if all children are @samp{[X]}.}
4720                 @{X/@}      @r{Checkbox status, @samp{[n/m]}.}
4721                 @{X%@}      @r{Checkbox status, @samp{[n%]}.}
4722                 @{min@}     @r{Smallest number in column.}
4723                 @{max@}     @r{Largest number.}
4724                 @{mean@}    @r{Arithmetic mean of numbers.}
4725                 @{:min@}    @r{Smallest time value in column.}
4726                 @{:max@}    @r{Largest time value.}
4727                 @{:mean@}   @r{Arithmetic mean of time values.}
4728                 @{@@min@}   @r{Minimum age (in days/hours/mins/seconds).}
4729                 @{@@max@}   @r{Maximum age (in days/hours/mins/seconds).}
4730                 @{@@mean@}  @r{Arithmetic mean of ages (in days/hours/mins/seconds).}
4731 @end example
4733 @noindent
4734 Be aware that you can only have one summary type for any property you
4735 include. Subsequent columns referencing the same property will all display the
4736 same summary information.
4738 Here is an example for a complete columns definition, along with allowed
4739 values.
4741 @example
4742 :COLUMNS:  %25ITEM %9Approved(Approved?)@{X@} %Owner %11Status \@footnote{Please note that the COLUMNS definition must be on a single line---it is wrapped here only because of formatting constraints.}
4743                    %10Time_Estimate@{:@} %CLOCKSUM
4744 :Owner_ALL:    Tammy Mark Karl Lisa Don
4745 :Status_ALL:   "In progress" "Not started yet" "Finished" ""
4746 :Approved_ALL: "[ ]" "[X]"
4747 @end example
4749 @noindent
4750 The first column, @samp{%25ITEM}, means the first 25 characters of the
4751 item itself, i.e. of the headline.  You probably always should start the
4752 column definition with the @samp{ITEM} specifier.  The other specifiers
4753 create columns @samp{Owner} with a list of names as allowed values, for
4754 @samp{Status} with four different possible values, and for a checkbox
4755 field @samp{Approved}.  When no width is given after the @samp{%}
4756 character, the column will be exactly as wide as it needs to be in order
4757 to fully display all values.  The @samp{Approved} column does have a
4758 modified title (@samp{Approved?}, with a question mark).  Summaries will
4759 be created for the @samp{Time_Estimate} column by adding time duration
4760 expressions like HH:MM, and for the @samp{Approved} column, by providing
4761 an @samp{[X]} status if all children have been checked.  The
4762 @samp{CLOCKSUM} column is special, it lists the sum of CLOCK intervals
4763 in the subtree.
4765 @node Using column view, Capturing column view, Defining columns, Column view
4766 @subsection Using column view
4768 @table @kbd
4769 @tsubheading{Turning column view on and off}
4770 @kindex C-c C-x C-c
4771 @item C-c C-x C-c
4772 @vindex org-columns-default-format
4773 Turn on column view.  If the cursor is before the first headline in the file,
4774 column view is turned on for the entire file, using the @code{#+COLUMNS}
4775 definition.  If the cursor is somewhere inside the outline, this command
4776 searches the hierarchy, up from point, for a @code{:COLUMNS:} property that
4777 defines a format.  When one is found, the column view table is established
4778 for the tree starting at the entry that contains the @code{:COLUMNS:}
4779 property.  If no such property is found, the format is taken from the
4780 @code{#+COLUMNS} line or from the variable @code{org-columns-default-format},
4781 and column view is established for the current entry and its subtree.
4782 @kindex r
4783 @item r
4784 Recreate the column view, to include recent changes made in the buffer.
4785 @kindex g
4786 @item g
4787 Same as @kbd{r}.
4788 @kindex q
4789 @item q
4790 Exit column view.
4791 @tsubheading{Editing values}
4792 @item @key{left} @key{right} @key{up} @key{down}
4793 Move through the column view from field to field.
4794 @kindex S-@key{left}
4795 @kindex S-@key{right}
4796 @item  S-@key{left}/@key{right}
4797 Switch to the next/previous allowed value of the field.  For this, you
4798 have to have specified allowed values for a property.
4799 @item 1..9,0
4800 Directly select the nth allowed value, @kbd{0} selects the 10th value.
4801 @kindex n
4802 @kindex p
4803 @itemx  n / p
4804 Same as @kbd{S-@key{left}/@key{right}}
4805 @kindex e
4806 @item e
4807 Edit the property at point.  For the special properties, this will
4808 invoke the same interface that you normally use to change that
4809 property.  For example, when editing a TAGS property, the tag completion
4810 or fast selection interface will pop up.
4811 @kindex C-c C-c
4812 @item C-c C-c
4813 When there is a checkbox at point, toggle it.
4814 @kindex v
4815 @item v
4816 View the full value of this property.  This is useful if the width of
4817 the column is smaller than that of the value.
4818 @kindex a
4819 @item a
4820 Edit the list of allowed values for this property.  If the list is found
4821 in the hierarchy, the modified values is stored there.  If no list is
4822 found, the new value is stored in the first entry that is part of the
4823 current column view.
4824 @tsubheading{Modifying the table structure}
4825 @kindex <
4826 @kindex >
4827 @item < / >
4828 Make the column narrower/wider by one character.
4829 @kindex S-M-@key{right}
4830 @item S-M-@key{right}
4831 Insert a new column, to the left of the current column.
4832 @kindex S-M-@key{left}
4833 @item S-M-@key{left}
4834 Delete the current column.
4835 @end table
4837 @node Capturing column view,  , Using column view, Column view
4838 @subsection Capturing column view
4840 Since column view is just an overlay over a buffer, it cannot be
4841 exported or printed directly.  If you want to capture a column view, use
4842 a @code{columnview} dynamic block (@pxref{Dynamic blocks}).  The frame
4843 of this block looks like this:
4845 @cindex #+BEGIN, columnview
4846 @example
4847 * The column view
4848 #+BEGIN: columnview :hlines 1 :id "label"
4850 #+END:
4851 @end example
4853 @noindent This dynamic block has the following parameters:
4855 @table @code
4856 @item :id
4857 This is the most important parameter.  Column view is a feature that is
4858 often localized to a certain (sub)tree, and the capture block might be
4859 at a different location in the file.  To identify the tree whose view to
4860 capture, you can use 4 values:
4861 @cindex property, ID
4862 @example
4863 local     @r{use the tree in which the capture block is located}
4864 global    @r{make a global view, including all headings in the file}
4865 "file:@var{path-to-file}"
4866           @r{run column view at the top of this file}
4867 "@var{ID}"      @r{call column view in the tree that has an @code{:ID:}}
4868           @r{property with the value @i{label}.  You can use}
4869           @r{@kbd{M-x org-id-copy} to create a globally unique ID for}
4870           @r{the current entry and copy it to the kill-ring.}
4871 @end example
4872 @item :hlines
4873 When @code{t}, insert an hline after every line.  When a number @var{N}, insert
4874 an hline before each headline with level @code{<= @var{N}}.
4875 @item :vlines
4876 When set to @code{t}, force column groups to get vertical lines.
4877 @item :maxlevel
4878 When set to a number, don't capture entries below this level.
4879 @item :skip-empty-rows
4880 When set to @code{t}, skip rows where the only non-empty specifier of the
4881 column view is @code{ITEM}.
4883 @end table
4885 @noindent
4886 The following commands insert or update the dynamic block:
4888 @table @kbd
4889 @kindex C-c C-x i
4890 @item C-c C-x i
4891 Insert a dynamic block capturing a column view.  You will be prompted
4892 for the scope or ID of the view.
4893 @kindex C-c C-c
4894 @item C-c C-c
4895 @kindex C-c C-x C-u
4896 @itemx C-c C-x C-u
4897 Update dynamic block at point.  The cursor needs to be in the
4898 @code{#+BEGIN} line of the dynamic block.
4899 @kindex C-u C-c C-x C-u
4900 @item C-u C-c C-x C-u
4901 Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
4902 you have several clock table blocks in a buffer.
4903 @end table
4905 You can add formulas to the column view table and you may add plotting
4906 instructions in front of the table---these will survive an update of the
4907 block.  If there is a @code{#+TBLFM:} after the table, the table will
4908 actually be recalculated automatically after an update.
4910 An alternative way to capture and process property values into a table is
4911 provided by Eric Schulte's @file{org-collector.el} which is a contributed
4912 package@footnote{Contributed packages are not part of Emacs, but are
4913 distributed with the main distribution of Org (visit
4914 @uref{http://orgmode.org}).}.  It provides a general API to collect
4915 properties from entries in a certain scope, and arbitrary Lisp expressions to
4916 process these values before inserting them into a table or a dynamic block.
4918 @node Property API,  , Column view, Properties and Columns
4919 @section The Property API
4920 @cindex properties, API
4921 @cindex API, for properties
4923 There is a full API for accessing and changing properties.  This API can
4924 be used by Emacs Lisp programs to work with properties and to implement
4925 features based on them.  For more information see @ref{Using the
4926 property API}.
4928 @node Dates and Times, Capture - Refile - Archive, Properties and Columns, Top
4929 @chapter Dates and Times
4930 @cindex dates
4931 @cindex times
4932 @cindex timestamp
4933 @cindex date stamp
4935 To assist project planning, TODO items can be labeled with a date and/or
4936 a time.  The specially formatted string carrying the date and time
4937 information is called a @emph{timestamp} in Org mode.  This may be a
4938 little confusing because timestamp is often used as indicating when
4939 something was created or last changed.  However, in Org mode this term
4940 is used in a much wider sense.
4942 @menu
4943 * Timestamps::                  Assigning a time to a tree entry
4944 * Creating timestamps::         Commands which insert timestamps
4945 * Deadlines and scheduling::    Planning your work
4946 * Clocking work time::          Tracking how long you spend on a task
4947 * Resolving idle time::         Resolving time if you've been idle
4948 * Effort estimates::            Planning work effort in advance
4949 * Relative timer::              Notes with a running timer
4950 @end menu
4953 @node Timestamps, Creating timestamps, Dates and Times, Dates and Times
4954 @section Timestamps, deadlines, and scheduling
4955 @cindex timestamps
4956 @cindex ranges, time
4957 @cindex date stamps
4958 @cindex deadlines
4959 @cindex scheduling
4961 A timestamp is a specification of a date (possibly with a time or a range of
4962 times) in a special format, either @samp{<2003-09-16 Tue>} or
4963 @samp{<2003-09-16 Tue 09:39>} or @samp{<2003-09-16 Tue
4964 12:00-12:30>}@footnote{This is inspired by the standard ISO 8601 date/time
4965 format.  To use an alternative format, see @ref{Custom time format}.}.  A
4966 timestamp can appear anywhere in the headline or body of an Org tree entry.
4967 Its presence causes entries to be shown on specific dates in the agenda
4968 (@pxref{Weekly/daily agenda}).  We distinguish:
4970 @table @var
4971 @item Plain timestamp; Event; Appointment
4972 @cindex timestamp
4973 A simple timestamp just assigns a date/time to an item.  This is just
4974 like writing down an appointment or event in a paper agenda.  In the
4975 timeline and agenda displays, the headline of an entry associated with a
4976 plain timestamp will be shown exactly on that date.
4978 @example
4979 * Meet Peter at the movies <2006-11-01 Wed 19:15>
4980 * Discussion on climate change <2006-11-02 Thu 20:00-22:00>
4981 @end example
4983 @item Timestamp with repeater interval
4984 @cindex timestamp, with repeater interval
4985 A timestamp may contain a @emph{repeater interval}, indicating that it
4986 applies not only on the given date, but again and again after a certain
4987 interval of N days (d), weeks (w), months (m), or years (y).  The
4988 following will show up in the agenda every Wednesday:
4990 @example
4991 * Pick up Sam at school <2007-05-16 Wed 12:30 +1w>
4992 @end example
4994 @item Diary-style sexp entries
4995 For more complex date specifications, Org mode supports using the
4996 special sexp diary entries implemented in the Emacs calendar/diary
4997 package.  For example
4999 @example
5000 * The nerd meeting on every 2nd Thursday of the month
5001   <%%(diary-float t 4 2)>
5002 @end example
5004 @item Time/Date range
5005 @cindex timerange
5006 @cindex date range
5007 Two timestamps connected by @samp{--} denote a range.  The headline
5008 will be shown on the first and last day of the range, and on any dates
5009 that are displayed and fall in the range.  Here is an example:
5011 @example
5012 ** Meeting in Amsterdam
5013    <2004-08-23 Mon>--<2004-08-26 Thu>
5014 @end example
5016 @item Inactive timestamp
5017 @cindex timestamp, inactive
5018 @cindex inactive timestamp
5019 Just like a plain timestamp, but with square brackets instead of
5020 angular ones.  These timestamps are inactive in the sense that they do
5021 @emph{not} trigger an entry to show up in the agenda.
5023 @example
5024 * Gillian comes late for the fifth time [2006-11-01 Wed]
5025 @end example
5027 @end table
5029 @node Creating timestamps, Deadlines and scheduling, Timestamps, Dates and Times
5030 @section Creating timestamps
5031 @cindex creating timestamps
5032 @cindex timestamps, creating
5034 For Org mode to recognize timestamps, they need to be in the specific
5035 format.  All commands listed below produce timestamps in the correct
5036 format.
5038 @table @kbd
5039 @kindex C-c .
5040 @item C-c .
5041 Prompt for a date and insert a corresponding timestamp.  When the cursor is
5042 at an existing timestamp in the buffer, the command is used to modify this
5043 timestamp instead of inserting a new one.  When this command is used twice in
5044 succession, a time range is inserted.
5046 @kindex C-c !
5047 @item C-c !
5048 Like @kbd{C-c .}, but insert an inactive timestamp that will not cause
5049 an agenda entry.
5051 @kindex C-u C-c .
5052 @kindex C-u C-c !
5053 @item C-u C-c .
5054 @itemx C-u C-c !
5055 @vindex org-time-stamp-rounding-minutes
5056 Like @kbd{C-c .} and @kbd{C-c !}, but use the alternative format which
5057 contains date and time.  The default time can be rounded to multiples of 5
5058 minutes, see the option @code{org-time-stamp-rounding-minutes}.
5060 @kindex C-c <
5061 @item C-c <
5062 Insert a timestamp corresponding to the cursor date in the Calendar.
5064 @kindex C-c >
5065 @item C-c >
5066 Access the Emacs calendar for the current date.  If there is a
5067 timestamp in the current line, go to the corresponding date
5068 instead.
5070 @kindex C-c C-o
5071 @item C-c C-o
5072 Access the agenda for the date given by the timestamp or -range at
5073 point (@pxref{Weekly/daily agenda}).
5075 @kindex S-@key{left}
5076 @kindex S-@key{right}
5077 @item S-@key{left}
5078 @itemx S-@key{right}
5079 Change date at cursor by one day.  These key bindings conflict with
5080 shift-selection and related modes (@pxref{Conflicts}).
5082 @kindex S-@key{up}
5083 @kindex S-@key{down}
5084 @item S-@key{up}
5085 @itemx S-@key{down}
5086 Change the item under the cursor in a timestamp.  The cursor can be on a
5087 year, month, day, hour or minute.  When the timestamp contains a time range
5088 like @samp{15:30-16:30}, modifying the first time will also shift the second,
5089 shifting the time block with constant length.  To change the length, modify
5090 the second time.  Note that if the cursor is in a headline and not at a
5091 timestamp, these same keys modify the priority of an item.
5092 (@pxref{Priorities}). The key bindings also conflict with shift-selection and
5093 related modes (@pxref{Conflicts}).
5095 @kindex C-c C-y
5096 @cindex evaluate time range
5097 @item C-c C-y
5098 Evaluate a time range by computing the difference between start and end.
5099 With a prefix argument, insert result after the time range (in a table: into
5100 the following column).
5101 @end table
5104 @menu
5105 * The date/time prompt::        How Org mode helps you entering date and time
5106 * Custom time format::          Making dates look different
5107 @end menu
5109 @node The date/time prompt, Custom time format, Creating timestamps, Creating timestamps
5110 @subsection The date/time prompt
5111 @cindex date, reading in minibuffer
5112 @cindex time, reading in minibuffer
5114 @vindex org-read-date-prefer-future
5115 When Org mode prompts for a date/time, the default is shown in default
5116 date/time format, and the prompt therefore seems to ask for a specific
5117 format.  But it will in fact accept any string containing some date and/or
5118 time information, and it is really smart about interpreting your input.  You
5119 can, for example, use @kbd{C-y} to paste a (possibly multi-line) string
5120 copied from an email message.  Org mode will find whatever information is in
5121 there and derive anything you have not specified from the @emph{default date
5122 and time}.  The default is usually the current date and time, but when
5123 modifying an existing timestamp, or when entering the second stamp of a
5124 range, it is taken from the stamp in the buffer.  When filling in
5125 information, Org mode assumes that most of the time you will want to enter a
5126 date in the future: if you omit the month/year and the given day/month is
5127 @i{before} today, it will assume that you mean a future date@footnote{See the
5128 variable @code{org-read-date-prefer-future}.  You may set that variable to
5129 the symbol @code{time} to even make a time before now shift the date to
5130 tomorrow.}.  If the date has been automatically shifted into the future, the
5131 time prompt will show this with @samp{(=>F).}
5133 For example, let's assume that today is @b{June 13, 2006}.  Here is how
5134 various inputs will be interpreted, the items filled in by Org mode are
5135 in @b{bold}.
5137 @example
5138 3-2-5         --> 2003-02-05
5139 2/5/3         --> 2003-02-05
5140 14            --> @b{2006}-@b{06}-14
5141 12            --> @b{2006}-@b{07}-12
5142 2/5           --> @b{2007}-02-05
5143 Fri           --> nearest Friday (default date or later)
5144 sep 15        --> @b{2006}-09-15
5145 feb 15        --> @b{2007}-02-15
5146 sep 12 9      --> 2009-09-12
5147 12:45         --> @b{2006}-@b{06}-@b{13} 12:45
5148 22 sept 0:34  --> @b{2006}-09-22 0:34
5149 w4            --> ISO week for of the current year @b{2006}
5150 2012 w4 fri   --> Friday of ISO week 4 in 2012
5151 2012-w04-5    --> Same as above
5152 @end example
5154 Furthermore you can specify a relative date by giving, as the
5155 @emph{first} thing in the input: a plus/minus sign, a number and a
5156 letter ([dwmy]) to indicate change in days, weeks, months, or years.  With a
5157 single plus or minus, the date is always relative to today.  With a
5158 double plus or minus, it is relative to the default date.  If instead of
5159 a single letter, you use the abbreviation of day name, the date will be
5160 the nth such day.  E.g.
5162 @example
5163 +0            --> today
5164 .             --> today
5165 +4d           --> four days from today
5166 +4            --> same as above
5167 +2w           --> two weeks from today
5168 ++5           --> five days from default date
5169 +2tue         --> second Tuesday from now.
5170 @end example
5172 @vindex parse-time-months
5173 @vindex parse-time-weekdays
5174 The function understands English month and weekday abbreviations.  If
5175 you want to use unabbreviated names and/or other languages, configure
5176 the variables @code{parse-time-months} and @code{parse-time-weekdays}.
5178 @cindex calendar, for selecting date
5179 @vindex org-popup-calendar-for-date-prompt
5180 Parallel to the minibuffer prompt, a calendar is popped up@footnote{If
5181 you don't need/want the calendar, configure the variable
5182 @code{org-popup-calendar-for-date-prompt}.}.  When you exit the date
5183 prompt, either by clicking on a date in the calendar, or by pressing
5184 @key{RET}, the date selected in the calendar will be combined with the
5185 information entered at the prompt.  You can control the calendar fully
5186 from the minibuffer:
5188 @kindex <
5189 @kindex >
5190 @kindex M-v
5191 @kindex C-v
5192 @kindex mouse-1
5193 @kindex S-@key{right}
5194 @kindex S-@key{left}
5195 @kindex S-@key{down}
5196 @kindex S-@key{up}
5197 @kindex M-S-@key{right}
5198 @kindex M-S-@key{left}
5199 @kindex @key{RET}
5200 @example
5201 @key{RET}           @r{Choose date at cursor in calendar.}
5202 mouse-1        @r{Select date by clicking on it.}
5203 S-@key{right}/@key{left}     @r{One day forward/backward.}
5204 S-@key{down}/@key{up}     @r{One week forward/backward.}
5205 M-S-@key{right}/@key{left}   @r{One month forward/backward.}
5206 > / <          @r{Scroll calendar forward/backward by one month.}
5207 M-v / C-v      @r{Scroll calendar forward/backward by 3 months.}
5208 @end example
5210 @vindex org-read-date-display-live
5211 The actions of the date/time prompt may seem complex, but I assure you they
5212 will grow on you, and you will start getting annoyed by pretty much any other
5213 way of entering a date/time out there.  To help you understand what is going
5214 on, the current interpretation of your input will be displayed live in the
5215 minibuffer@footnote{If you find this distracting, turn the display of with
5216 @code{org-read-date-display-live}.}.
5218 @node Custom time format,  , The date/time prompt, Creating timestamps
5219 @subsection Custom time format
5220 @cindex custom date/time format
5221 @cindex time format, custom
5222 @cindex date format, custom
5224 @vindex org-display-custom-times
5225 @vindex org-time-stamp-custom-formats
5226 Org mode uses the standard ISO notation for dates and times as it is
5227 defined in ISO 8601.  If you cannot get used to this and require another
5228 representation of date and time to keep you happy, you can get it by
5229 customizing the variables @code{org-display-custom-times} and
5230 @code{org-time-stamp-custom-formats}.
5232 @table @kbd
5233 @kindex C-c C-x C-t
5234 @item C-c C-x C-t
5235 Toggle the display of custom formats for dates and times.
5236 @end table
5238 @noindent
5239 Org mode needs the default format for scanning, so the custom date/time
5240 format does not @emph{replace} the default format---instead it is put
5241 @emph{over} the default format using text properties.  This has the
5242 following consequences:
5243 @itemize @bullet
5244 @item
5245 You cannot place the cursor onto a timestamp anymore, only before or
5246 after.
5247 @item
5248 The @kbd{S-@key{up}/@key{down}} keys can no longer be used to adjust
5249 each component of a timestamp.  If the cursor is at the beginning of
5250 the stamp, @kbd{S-@key{up}/@key{down}} will change the stamp by one day,
5251 just like @kbd{S-@key{left}/@key{right}}.  At the end of the stamp, the
5252 time will be changed by one minute.
5253 @item
5254 If the timestamp contains a range of clock times or a repeater, these
5255 will not be overlayed, but remain in the buffer as they were.
5256 @item
5257 When you delete a timestamp character-by-character, it will only
5258 disappear from the buffer after @emph{all} (invisible) characters
5259 belonging to the ISO timestamp have been removed.
5260 @item
5261 If the custom timestamp format is longer than the default and you are
5262 using dates in tables, table alignment will be messed up.  If the custom
5263 format is shorter, things do work as expected.
5264 @end itemize
5267 @node Deadlines and scheduling, Clocking work time, Creating timestamps, Dates and Times
5268 @section Deadlines and scheduling
5270 A timestamp may be preceded by special keywords to facilitate planning:
5272 @table @var
5273 @item DEADLINE
5274 @cindex DEADLINE keyword
5276 Meaning: the task (most likely a TODO item, though not necessarily) is supposed
5277 to be finished on that date.
5279 @vindex org-deadline-warning-days
5280 On the deadline date, the task will be listed in the agenda.  In
5281 addition, the agenda for @emph{today} will carry a warning about the
5282 approaching or missed deadline, starting
5283 @code{org-deadline-warning-days} before the due date, and continuing
5284 until the entry is marked DONE.  An example:
5286 @example
5287 *** TODO write article about the Earth for the Guide
5288     The editor in charge is [[bbdb:Ford Prefect]]
5289     DEADLINE: <2004-02-29 Sun>
5290 @end example
5292 You can specify a different lead time for warnings for a specific
5293 deadlines using the following syntax.  Here is an example with a warning
5294 period of 5 days @code{DEADLINE: <2004-02-29 Sun -5d>}.
5296 @item SCHEDULED
5297 @cindex SCHEDULED keyword
5299 Meaning: you are planning to start working on that task on the given
5300 date.
5302 @vindex org-agenda-skip-scheduled-if-done
5303 The headline will be listed under the given date@footnote{It will still
5304 be listed on that date after it has been marked DONE.  If you don't like
5305 this, set the variable @code{org-agenda-skip-scheduled-if-done}.}.  In
5306 addition, a reminder that the scheduled date has passed will be present
5307 in the compilation for @emph{today}, until the entry is marked DONE.
5308 I.e. the task will automatically be forwarded until completed.
5310 @example
5311 *** TODO Call Trillian for a date on New Years Eve.
5312     SCHEDULED: <2004-12-25 Sat>
5313 @end example
5315 @noindent
5316 @b{Important:} Scheduling an item in Org mode should @i{not} be
5317 understood in the same way that we understand @i{scheduling a meeting}.
5318 Setting a date for a meeting is just a simple appointment, you should
5319 mark this entry with a simple plain timestamp, to get this item shown
5320 on the date where it applies.  This is a frequent misunderstanding by
5321 Org users.  In Org mode, @i{scheduling} means setting a date when you
5322 want to start working on an action item.
5323 @end table
5325 You may use timestamps with repeaters in scheduling and deadline
5326 entries.  Org mode will issue early and late warnings based on the
5327 assumption that the timestamp represents the @i{nearest instance} of
5328 the repeater.  However, the use of diary sexp entries like
5330 @code{<%%(diary-float t 42)>}
5332 in scheduling and deadline timestamps is limited.  Org mode does not
5333 know enough about the internals of each sexp function to issue early and
5334 late warnings.  However, it will show the item on each day where the
5335 sexp entry matches.
5337 @menu
5338 * Inserting deadline/schedule::  Planning items
5339 * Repeated tasks::              Items that show up again and again
5340 @end menu
5342 @node Inserting deadline/schedule, Repeated tasks, Deadlines and scheduling, Deadlines and scheduling
5343 @subsection Inserting deadlines or schedules
5345 The following commands allow you to quickly insert a deadline or to schedule
5346 an item:
5348 @table @kbd
5350 @kindex C-c C-d
5351 @item C-c C-d
5352 Insert @samp{DEADLINE} keyword along with a stamp.  The insertion will happen
5353 in the line directly following the headline.  When called with a prefix arg,
5354 an existing deadline will be removed from the entry.  Depending on the
5355 variable @code{org-log-redeadline}@footnote{with corresponding
5356 @code{#+STARTUP} keywords @code{logredeadline}, @code{lognoteredeadline},
5357 and @code{nologredeadline}}, a note will be taken when changing an existing
5358 deadline.
5359 @c FIXME Any CLOSED timestamp will be removed.????????
5361 @kindex C-c C-s
5362 @item C-c C-s
5363 Insert @samp{SCHEDULED} keyword along with a stamp.  The insertion will
5364 happen in the line directly following the headline.  Any CLOSED timestamp
5365 will be removed.  When called with a prefix argument, remove the scheduling
5366 date from the entry.  Depending on the variable
5367 @code{org-log-reschedule}@footnote{with corresponding @code{#+STARTUP}
5368 keywords @code{logredeadline}, @code{lognoteredeadline}, and
5369 @code{nologredeadline}}, a note will be taken when changing an existing
5370 scheduling time.
5372 @kindex C-c C-x C-k
5373 @kindex k a
5374 @kindex k s
5375 @item C-c C-x C-k
5376 Mark the current entry for agenda action.  After you have marked the entry
5377 like this, you can open the agenda or the calendar to find an appropriate
5378 date.  With the cursor on the selected date, press @kbd{k s} or @kbd{k d} to
5379 schedule the marked item.
5381 @kindex C-c / d
5382 @cindex sparse tree, for deadlines
5383 @item C-c / d
5384 @vindex org-deadline-warning-days
5385 Create a sparse tree with all deadlines that are either past-due, or
5386 which will become due within @code{org-deadline-warning-days}.
5387 With @kbd{C-u} prefix, show all deadlines in the file.  With a numeric
5388 prefix, check that many days.  For example, @kbd{C-1 C-c / d} shows
5389 all deadlines due tomorrow.
5391 @kindex C-c / b
5392 @item C-c / b
5393 Sparse tree for deadlines and scheduled items before a given date.
5395 @kindex C-c / a
5396 @item C-c / a
5397 Sparse tree for deadlines and scheduled items after a given date.
5398 @end table
5400 @node Repeated tasks,  , Inserting deadline/schedule, Deadlines and scheduling
5401 @subsection Repeated tasks
5402 @cindex tasks, repeated
5403 @cindex repeated tasks
5405 Some tasks need to be repeated again and again.  Org mode helps to
5406 organize such tasks using a so-called repeater in a DEADLINE, SCHEDULED,
5407 or plain timestamp.  In the following example
5408 @example
5409 ** TODO Pay the rent
5410    DEADLINE: <2005-10-01 Sat +1m>
5411 @end example
5412 @noindent
5413 the @code{+1m} is a repeater; the intended interpretation is that the task
5414 has a deadline on <2005-10-01> and repeats itself every (one) month starting
5415 from that time.  If you need both a repeater and a special warning period in
5416 a deadline entry, the repeater should come first and the warning period last:
5417 @code{DEADLINE: <2005-10-01 Sat +1m -3d>}.
5419 @vindex org-todo-repeat-to-state
5420 Deadlines and scheduled items produce entries in the agenda when they are
5421 over-due, so it is important to be able to mark such an entry as completed
5422 once you have done so.  When you mark a DEADLINE or a SCHEDULE with the TODO
5423 keyword DONE, it will no longer produce entries in the agenda.  The problem
5424 with this is, however, that then also the @emph{next} instance of the
5425 repeated entry will not be active.  Org mode deals with this in the following
5426 way: When you try to mark such an entry DONE (using @kbd{C-c C-t}), it will
5427 shift the base date of the repeating timestamp by the repeater interval, and
5428 immediately set the entry state back to TODO@footnote{In fact, the target
5429 state is taken from, in this sequence, the @code{REPEAT_TO_STATE} property or
5430 the variable @code{org-todo-repeat-to-state}.  If neither of these is
5431 specified, the target state defaults to the first state of the TODO state
5432 sequence.}.  In the example above, setting the state to DONE would actually
5433 switch the date like this:
5435 @example
5436 ** TODO Pay the rent
5437    DEADLINE: <2005-11-01 Tue +1m>
5438 @end example
5440 @vindex org-log-repeat
5441 A timestamp@footnote{You can change this using the option
5442 @code{org-log-repeat}, or the @code{#+STARTUP} options @code{logrepeat},
5443 @code{lognoterepeat}, and @code{nologrepeat}.  With @code{lognoterepeat}, you
5444 will also be prompted for a note.} will be added under the deadline, to keep
5445 a record that you actually acted on the previous instance of this deadline.
5447 As a consequence of shifting the base date, this entry will no longer be
5448 visible in the agenda when checking past dates, but all future instances
5449 will be visible.
5451 With the @samp{+1m} cookie, the date shift will always be exactly one
5452 month.  So if you have not paid the rent for three months, marking this
5453 entry DONE will still keep it as an overdue deadline.  Depending on the
5454 task, this may not be the best way to handle it.  For example, if you
5455 forgot to call you father for 3 weeks, it does not make sense to call
5456 him 3 times in a single day to make up for it.  Finally, there are tasks
5457 like changing batteries which should always repeat a certain time
5458 @i{after} the last time you did it.  For these tasks, Org mode has
5459 special repeaters markers with @samp{++} and @samp{.+}.  For example:
5461 @example
5462 ** TODO Call Father
5463    DEADLINE: <2008-02-10 Sun ++1w>
5464    Marking this DONE will shift the date by at least one week,
5465    but also by as many weeks as it takes to get this date into
5466    the future.  However, it stays on a Sunday, even if you called
5467    and marked it done on Saturday.
5468 ** TODO Check the batteries in the smoke detectors
5469    DEADLINE: <2005-11-01 Tue .+1m>
5470    Marking this DONE will shift the date to one month after
5471    today.
5472 @end example
5474 You may have both scheduling and deadline information for a specific
5475 task---just make sure that the repeater intervals on both are the same.
5477 An alternative to using a repeater is to create a number of copies of a task
5478 subtree, with dates shifted in each copy.  The command @kbd{C-c C-x c} was
5479 created for this purpose, it is described in @ref{Structure editing}.
5482 @node Clocking work time, Resolving idle time, Deadlines and scheduling, Dates and Times
5483 @section Clocking work time
5485 Org mode allows you to clock the time you spend on specific tasks in a
5486 project.  When you start working on an item, you can start the clock.
5487 When you stop working on that task, or when you mark the task done, the
5488 clock is stopped and the corresponding time interval is recorded.  It
5489 also computes the total time spent on each subtree of a project.  And it
5490 remembers a history or tasks recently clocked, to that you can jump quickly
5491 between a number of tasks absorbing your time.
5493 To save the clock history across Emacs sessions, use
5494 @lisp
5495 (setq org-clock-persist 'history)
5496 (org-clock-persistence-insinuate)
5497 @end lisp
5498 When you clock into a new task after resuming Emacs, the incomplete
5499 clock@footnote{To resume the clock under the assumption that you have worked
5500 on this task while outside Emacs, use @code{(setq org-clock-persist t)}.}
5501 will be found (@pxref{Resolving idle time}) and you will be prompted about
5502 what to do with it.
5504 @table @kbd
5505 @kindex C-c C-x C-i
5506 @item C-c C-x C-i
5507 @vindex org-clock-into-drawer
5508 Start the clock on the current item (clock-in).  This inserts the CLOCK
5509 keyword together with a timestamp.  If this is not the first clocking of
5510 this item, the multiple CLOCK lines will be wrapped into a
5511 @code{:LOGBOOK:} drawer (see also the variable
5512 @code{org-clock-into-drawer}).  When called with a @kbd{C-u} prefix argument,
5513 select the task from a list of recently clocked tasks.  With two @kbd{C-u
5514 C-u} prefixes, clock into the task at point and mark it as the default task.
5515 The default task will always be available when selecting a clocking task,
5516 with letter @kbd{d}.@*
5517 @cindex property: CLOCK_MODELINE_TOTAL
5518 @cindex property: LAST_REPEAT
5519 @vindex org-clock-modeline-total
5520 While the clock is running, the current clocking time is shown in the mode
5521 line, along with the title of the task.  The clock time shown will be all
5522 time ever clocked for this task and its children.  If the task has an effort
5523 estimate (@pxref{Effort estimates}), the mode line displays the current
5524 clocking time against it@footnote{To add an effort estimate ``on the fly'',
5525 hook a function doing this to @code{org-clock-in-prepare-hook}.}  If the task
5526 is a repeating one (@pxref{Repeated tasks}), only the time since the last
5527 reset of the task @footnote{as recorded by the @code{LAST_REPEAT} property}
5528 will be shown.  More control over what time is shown can be exercised with
5529 the @code{CLOCK_MODELINE_TOTAL} property.  It may have the values
5530 @code{current} to show only the current clocking instance, @code{today} to
5531 show all time clocked on this tasks today (see also the variable
5532 @code{org-extend-today-until}), @code{all} to include all time, or
5533 @code{auto} which is the default@footnote{See also the variable
5534 @code{org-clock-modeline-total}.}.@* Clicking with @kbd{mouse-1} onto the
5535 mode line entry will pop up a menu with clocking options.
5536 @kindex C-c C-x C-o
5537 @item C-c C-x C-o
5538 @vindex org-log-note-clock-out
5539 Stop the clock (clock-out).  This inserts another timestamp at the same
5540 location where the clock was last started.  It also directly computes
5541 the resulting time in inserts it after the time range as @samp{=>
5542 HH:MM}.  See the variable @code{org-log-note-clock-out} for the
5543 possibility to record an additional note together with the clock-out
5544 timestamp@footnote{The corresponding in-buffer setting is:
5545 @code{#+STARTUP: lognoteclock-out}}.
5546 @kindex C-c C-x C-e
5547 @item C-c C-x C-e
5548 Update the effort estimate for the current clock task.
5549 @kindex C-c C-y
5550 @kindex C-c C-c
5551 @item C-c C-y @ @ @r{or}@ @ C-c C-c
5552 Recompute the time interval after changing one of the timestamps.  This
5553 is only necessary if you edit the timestamps directly.  If you change
5554 them with @kbd{S-@key{cursor}} keys, the update is automatic.
5555 @kindex C-c C-t
5556 @item C-c C-t
5557 Changing the TODO state of an item to DONE automatically stops the clock
5558 if it is running in this same item.
5559 @kindex C-c C-x C-x
5560 @item C-c C-x C-x
5561 Cancel the current clock.  This is useful if a clock was started by
5562 mistake, or if you ended up working on something else.
5563 @kindex C-c C-x C-j
5564 @item C-c C-x C-j
5565 Jump to the entry that contains the currently running clock.  With a
5566 @kbd{C-u} prefix arg, select the target task from a list of recently clocked
5567 tasks.
5568 @kindex C-c C-x C-d
5569 @item C-c C-x C-d
5570 @vindex org-remove-highlights-with-change
5571 Display time summaries for each subtree in the current buffer.  This
5572 puts overlays at the end of each headline, showing the total time
5573 recorded under that heading, including the time of any subheadings. You
5574 can use visibility cycling to study the tree, but the overlays disappear
5575 when you change the buffer (see variable
5576 @code{org-remove-highlights-with-change}) or press @kbd{C-c C-c}.
5577 @kindex C-c C-x C-r
5578 @item C-c C-x C-r
5579 Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
5580 report as an Org-mode table into the current file.  When the cursor is
5581 at an existing clock table, just update it.  When called with a prefix
5582 argument, jump to the first clock report in the current document and
5583 update it.
5584 @cindex #+BEGIN, clocktable
5585 @example
5586 #+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
5587 #+END: clocktable
5588 @end example
5589 @noindent
5590 If such a block already exists at point, its content is replaced by the
5591 new table.  The @samp{BEGIN} line can specify options:
5592 @example
5593 :maxlevel    @r{Maximum level depth to which times are listed in the table.}
5594 :emphasize   @r{When @code{t}, emphasize level one and level two items.}
5595 :scope       @r{The scope to consider.  This can be any of the following:}
5596              nil        @r{the current buffer or narrowed region}
5597              file       @r{the full current buffer}
5598              subtree    @r{the subtree where the clocktable is located}
5599              tree@var{N}      @r{the surrounding level @var{N} tree, for example @code{tree3}}
5600              tree       @r{the surrounding level 1 tree}
5601              agenda     @r{all agenda files}
5602              ("file"..) @r{scan these files}
5603              file-with-archives    @r{current file and its archives}
5604              agenda-with-archives  @r{all agenda files, including archives}
5605 :block       @r{The time block to consider.  This block is specified either}
5606              @r{absolute, or relative to the current time and may be any of}
5607              @r{these formats:}
5608              2007-12-31    @r{New year eve 2007}
5609              2007-12       @r{December 2007}
5610              2007-W50      @r{ISO-week 50 in 2007}
5611              2007          @r{the year 2007}
5612              today, yesterday, today-@var{N}          @r{a relative day}
5613              thisweek, lastweek, thisweek-@var{N}     @r{a relative week}
5614              thismonth, lastmonth, thismonth-@var{N}  @r{a relative month}
5615              thisyear, lastyear, thisyear-@var{N}     @r{a relative year}
5616              @r{Use @kbd{S-@key{left}/@key{right}} keys to shift the time interval.}
5617 :tstart      @r{A time string specifying when to start considering times.}
5618 :tend        @r{A time string specifying when to stop considering times.}
5619 :step        @r{@code{week} or @code{day}, to split the table into chunks.}
5620              @r{To use this, @code{:block} or @code{:tstart}, @code{:tend} are needed.}
5621 :stepskip0   @r{Don't show steps that have zero time}
5622 :tags        @r{A tags match to select entries that should contribute}
5623 :link        @r{Link the item headlines in the table to their origins.}
5624 :formula     @r{Content of a @code{#+TBLFM} line to be added and evaluated.}
5625              @r{As a special case, @samp{:formula %} adds a column with % time.}
5626              @r{If you do not specify a formula here, any existing formula.}
5627              @r{below the clock table will survive updates and be evaluated.}
5628 :timestamp   @r{A timestamp for the entry, when available.  Look for SCHEDULED,}
5629              @r{DEADLINE, TIMESTAMP and TIMESTAMP_IA, in this order.}
5630 @end example
5631 To get a clock summary of the current level 1 tree, for the current
5632 day, you could write
5633 @example
5634 #+BEGIN: clocktable :maxlevel 2 :block today :scope tree1 :link t
5635 #+END: clocktable
5636 @end example
5637 @noindent
5638 and to use a specific time range you could write@footnote{Note that all
5639 parameters must be specified in a single line---the line is broken here
5640 only to fit it into the manual.}
5641 @example
5642 #+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>"
5643                     :tend "<2006-08-10 Thu 12:00>"
5644 #+END: clocktable
5645 @end example
5646 A summary of the current subtree with % times would be
5647 @example
5648 #+BEGIN: clocktable :scope subtree :link t :formula %
5649 #+END: clocktable
5650 @end example
5651 @kindex C-c C-c
5652 @item C-c C-c
5653 @kindex C-c C-x C-u
5654 @itemx C-c C-x C-u
5655 Update dynamic block at point.  The cursor needs to be in the
5656 @code{#+BEGIN} line of the dynamic block.
5657 @kindex C-u C-c C-x C-u
5658 @item C-u C-c C-x C-u
5659 Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
5660 you have several clock table blocks in a buffer.
5661 @kindex S-@key{left}
5662 @kindex S-@key{right}
5663 @item S-@key{left}
5664 @itemx S-@key{right}
5665 Shift the current @code{:block} interval and update the table.  The cursor
5666 needs to be in the @code{#+BEGIN: clocktable} line for this command.  If
5667 @code{:block} is @code{today}, it will be shifted to @code{today-1} etc.
5668 @end table
5670 The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
5671 the agenda (@pxref{Weekly/daily agenda}) to show which tasks have been
5672 worked on or closed during a day.
5674 @node Resolving idle time, Effort estimates, Clocking work time, Dates and Times
5675 @section Resolving idle time
5676 @cindex resolve idle time
5678 @cindex idle, resolve, dangling
5679 If you clock in on a work item, and then walk away from your
5680 computer---perhaps to take a phone call---you often need to ``resolve'' the
5681 time you were away by either subtracting it from the current clock, or
5682 applying it to another one.
5684 @vindex org-clock-idle-time
5685 By customizing the variable @code{org-clock-idle-time} to some integer, such
5686 as 10 or 15, Emacs can alert you when you get back to your computer after
5687 being idle for that many minutes@footnote{On computers using Mac OS X,
5688 idleness is based on actual user idleness, not just Emacs' idle time.  For
5689 X11, you can install a utility program @file{x11idle.c}, available in the
5690 UTILITIES directory of the Org git distribution, to get the same general
5691 treatment of idleness.  On other systems, idle time refers to Emacs idle time
5692 only.}, and ask what you want to do with the idle time.  There will be a
5693 question waiting for you when you get back, indicating how much idle time has
5694 passed (constantly updated with the current amount), as well as a set of
5695 choices to correct the discrepancy:
5697 @table @kbd
5698 @item k
5699 To keep some or all of the minutes and stay clocked in, press @kbd{k}.  Org
5700 will ask how many of the minutes to keep.  Press @key{RET} to keep them all,
5701 effectively changing nothing, or enter a number to keep that many minutes.
5702 @item K
5703 If you use the shift key and press @kbd{K}, it will keep however many minutes
5704 you request and then immediately clock out of that task.  If you keep all of
5705 the minutes, this is the same as just clocking out of the current task.
5706 @item s
5707 To keep none of the minutes, use @kbd{s} to subtract all the away time from
5708 the clock, and then check back in from the moment you returned.
5709 @item S
5710 To keep none of the minutes and just clock out at the start of the away time,
5711 use the shift key and press @kbd{S}.  Remember that using shift will always
5712 leave you clocked out, no matter which option you choose.
5713 @item C
5714 To cancel the clock altogether, use @kbd{C}.  Note that if instead of
5715 cancelling you subtract the away time, and the resulting clock amount is less
5716 than a minute, the clock will still be cancelled rather than clutter up the
5717 log with an empty entry.
5718 @end table
5720 What if you subtracted those away minutes from the current clock, and now
5721 want to apply them to a new clock?  Simply clock in to any task immediately
5722 after the subtraction.  Org will notice that you have subtracted time ``on
5723 the books'', so to speak, and will ask if you want to apply those minutes to
5724 the next task you clock in on.
5726 There is one other instance when this clock resolution magic occurs.  Say you
5727 were clocked in and hacking away, and suddenly your cat chased a mouse who
5728 scared a hamster that crashed into your UPS's power button!  You suddenly
5729 lose all your buffers, but thanks to auto-save you still have your recent Org
5730 mode changes, including your last clock in.
5732 If you restart Emacs and clock into any task, Org will notice that you have a
5733 dangling clock which was never clocked out from your last session.  Using
5734 that clock's starting time as the beginning of the unaccounted-for period,
5735 Org will ask how you want to resolve that time.  The logic and behavior is
5736 identical to dealing with away time due to idleness, it's just happening due
5737 to a recovery event rather than a set amount of idle time.
5739 You can also check all the files visited by your Org agenda for dangling
5740 clocks at any time using @kbd{M-x org-resolve-clocks}.
5742 @node Effort estimates, Relative timer, Resolving idle time, Dates and Times
5743 @section Effort estimates
5744 @cindex effort estimates
5746 @cindex property, Effort
5747 @vindex org-effort-property
5748 If you want to plan your work in a very detailed way, or if you need to
5749 produce offers with quotations of the estimated work effort, you may want to
5750 assign effort estimates to entries.  If you are also clocking your work, you
5751 may later want to compare the planned effort with the actual working time, a
5752 great way to improve planning estimates.  Effort estimates are stored in a
5753 special property @samp{Effort}@footnote{You may change the property being
5754 used with the variable @code{org-effort-property}.}.  You can set the effort
5755 for an entry with the following commands:
5757 @table @kbd
5758 @kindex C-c C-x e
5759 @item C-c C-x e
5760 Set the effort estimate for the current entry.  With a numeric prefix
5761 argument, set it to the NTH allowed value (see below).  This command is also
5762 accessible from the agenda with the @kbd{e} key.
5763 @kindex C-c C-x C-e
5764 @item C-c C-x C-e
5765 Modify the effort estimate of the item currently being clocked.
5766 @end table
5768 Clearly the best way to work with effort estimates is through column view
5769 (@pxref{Column view}).  You should start by setting up discrete values for
5770 effort estimates, and a @code{COLUMNS} format that displays these values
5771 together with clock sums (if you want to clock your time).  For a specific
5772 buffer you can use
5774 @example
5775 #+PROPERTY: Effort_ALL 0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00 8:00
5776 #+COLUMNS: %40ITEM(Task) %17Effort(Estimated Effort)@{:@} %CLOCKSUM
5777 @end example
5779 @noindent
5780 @vindex org-global-properties
5781 @vindex org-columns-default-format
5782 or, even better, you can set up these values globally by customizing the
5783 variables @code{org-global-properties} and @code{org-columns-default-format}.
5784 In particular if you want to use this setup also in the agenda, a global
5785 setup may be advised.
5787 The way to assign estimates to individual items is then to switch to column
5788 mode, and to use @kbd{S-@key{right}} and @kbd{S-@key{left}} to change the
5789 value.  The values you enter will immediately be summed up in the hierarchy.
5790 In the column next to it, any clocked time will be displayed.
5792 @vindex org-agenda-columns-add-appointments-to-effort-sum
5793 If you switch to column view in the daily/weekly agenda, the effort column
5794 will summarize the estimated work effort for each day@footnote{Please note
5795 the pitfalls of summing hierarchical data in a flat list (@pxref{Agenda
5796 column view}).}, and you can use this to find space in your schedule.  To get
5797 an overview of the entire part of the day that is committed, you can set the
5798 option @code{org-agenda-columns-add-appointments-to-effort-sum}.  The
5799 appointments on a day that take place over a specified time interval will
5800 then also be added to the load estimate of the day.
5802 Effort estimates can be used in secondary agenda filtering that is triggered
5803 with the @kbd{/} key in the agenda (@pxref{Agenda commands}).  If you have
5804 these estimates defined consistently, two or three key presses will narrow
5805 down the list to stuff that fits into an available time slot.
5807 @node Relative timer,  , Effort estimates, Dates and Times
5808 @section Taking notes with a relative timer
5809 @cindex relative timer
5811 When taking notes during, for example, a meeting or a video viewing, it can
5812 be useful to have access to times relative to a starting time.  Org provides
5813 such a relative timer and make it easy to create timed notes.
5815 @table @kbd
5816 @kindex C-c C-x .
5817 @item C-c C-x .
5818 Insert a relative time into the buffer.  The first time you use this, the
5819 timer will be started.  When called with a prefix argument, the timer is
5820 restarted.
5821 @kindex C-c C-x -
5822 @item C-c C-x -
5823 Insert a description list item with the current relative time.  With a prefix
5824 argument, first reset the timer to 0.
5825 @kindex M-@key{RET}
5826 @item M-@key{RET}
5827 Once the timer list is started, you can also use @kbd{M-@key{RET}} to insert
5828 new timer items.
5829 @kindex C-c C-x ,
5830 @item C-c C-x ,
5831 Pause the timer, or continue it if it is already paused.
5832 @c removed the sentence because it is redundant to the following item
5833 @kindex C-u C-c C-x ,
5834 @item C-u C-c C-x ,
5835 Stop the timer.  After this, you can only start a new timer, not continue the
5836 old one.  This command also removes the timer from the mode line.
5837 @kindex C-c C-x 0
5838 @item C-c C-x 0
5839 Reset the timer without inserting anything into the buffer.  By default, the
5840 timer is reset to 0.  When called with a @kbd{C-u} prefix, reset the timer to
5841 specific starting offset.  The user is prompted for the offset, with a
5842 default taken from a timer string at point, if any, So this can be used to
5843 restart taking notes after a break in the process.  When called with a double
5844 prefix argument @kbd{C-u C-u}, change all timer strings in the active region
5845 by a certain amount.  This can be used to fix timer strings if the timer was
5846 not started at exactly the right moment.
5847 @end table
5849 @node Capture - Refile - Archive, Agenda Views, Dates and Times, Top
5850 @chapter Capture - Refile - Archive
5851 @cindex capture
5853 An important part of any organization system is the ability to quickly
5854 capture new ideas and tasks, and to associate reference material with them.
5855 Org uses the @file{remember.el} package to create tasks, and stores files
5856 related to a task (@i{attachments}) in a special directory.  Once in the
5857 system, tasks and projects need to be moved around.  Moving completed project
5858 trees to an archive file keeps the system compact and fast.
5860 @menu
5861 * Remember::                    Capture new tasks/ideas with little interruption
5862 * Attachments::                 Add files to tasks.
5863 * RSS Feeds::                   Getting input from RSS feeds
5864 * Protocols::                   External (e.g. Browser) access to Emacs and Org
5865 * Refiling notes::              Moving a tree from one place to another
5866 * Archiving::                   What to do with finished projects
5867 @end menu
5869 @node Remember, Attachments, Capture - Refile - Archive, Capture - Refile - Archive
5870 @section Remember
5871 @cindex @file{remember.el}
5873 The Remember package by John Wiegley lets you store quick notes with little
5874 interruption of your work flow.  It is an excellent way to add new notes and
5875 tasks to Org files.  The @code{remember.el} package is part of Emacs 23, not
5876 Emacs 22.  See @uref{http://www.emacswiki.org/cgi-bin/wiki/RememberMode} for
5877 more information.
5879 Org significantly expands the possibilities of Remember: you may define
5880 templates for different note types, and associate target files and headlines
5881 with specific templates.  It also allows you to select the location where a
5882 note should be stored interactively, on the fly.
5884 @menu
5885 * Setting up Remember for Org::  Some code for .emacs to get things going
5886 * Remember templates::          Define the outline of different note types
5887 * Storing notes::               Directly get the note to where it belongs
5888 @end menu
5890 @node Setting up Remember for Org, Remember templates, Remember, Remember
5891 @subsection Setting up Remember for Org
5893 The following customization will tell Remember to use Org files as
5894 target, and to create annotations compatible with Org links.
5896 @example
5897 (org-remember-insinuate)
5898 (setq org-directory "~/path/to/my/orgfiles/")
5899 (setq org-default-notes-file (concat org-directory "/notes.org"))
5900 (define-key global-map "\C-cr" 'org-remember)
5901 @end example
5903 @noindent
5904 The last line binds the command @code{org-remember} to a global
5905 key@footnote{Please select your own key, @kbd{C-c r} is only a
5906 suggestion.}.  @code{org-remember} basically just calls Remember,
5907 but it makes a few things easier: if there is an active region, it will
5908 automatically copy the region into the Remember buffer.  It also allows
5909 to jump to the buffer and location where Remember notes are being
5910 stored: just call @code{org-remember} with a prefix argument.  If you
5911 use two prefix arguments, Org jumps to the location where the last
5912 remember note was stored.
5914 The Remember buffer will actually use @code{org-mode} as its major mode, so
5915 that all editing features of Org mode are available.  In addition to this, a
5916 minor mode @code{org-remember-mode} is turned on, for the single purpose that
5917 you can use its keymap @code{org-remember-mode-map} to override some of
5918 Org mode's key bindings.
5920 You can also call @code{org-remember} in a special way from the agenda,
5921 using the @kbd{k r} key combination.  With this access, any timestamps
5922 inserted by the selected Remember template (see below) will default to
5923 the cursor date in the agenda, rather than to the current date.
5925 @node Remember templates, Storing notes, Setting up Remember for Org, Remember
5926 @subsection Remember templates
5927 @cindex templates, for Remember
5929 In combination with Org, you can use templates to generate
5930 different types of Remember notes.  For example, if you would like
5931 to use one template to create general TODO entries, another one for
5932 journal entries, and a third one for collecting random ideas, you could
5933 use:
5935 @example
5936 (setq org-remember-templates
5937  '(("Todo" ?t "* TODO %?\n  %i\n  %a" "~/org/TODO.org" "Tasks")
5938    ("Journal" ?j "* %U %?\n\n  %i\n  %a" "~/org/JOURNAL.org")
5939    ("Idea" ?i "* %^@{Title@}\n  %i\n  %a" "~/org/JOURNAL.org" "New Ideas")))
5940 @end example
5942 @vindex org-remember-default-headline
5943 @vindex org-directory
5944 @noindent In these entries, the first string is just a name, and the
5945 character specifies how to select the template.  It is useful if the
5946 character is also the first letter of the name.  The next string specifies
5947 the template.  Two more (optional) strings give the file in which, and the
5948 headline under which, the new note should be stored.  The file (if not
5949 present or @code{nil}) defaults to @code{org-default-notes-file}, the heading
5950 to @code{org-remember-default-headline}.  If the file name is not an absolute
5951 path, it will be interpreted relative to @code{org-directory}.
5953 The heading can also be the symbols @code{top} or @code{bottom} to send notes
5954 as level 1 entries to the beginning or end of the file, respectively.  It may
5955 also be the symbol @code{date-tree}.  Then, a tree with year on level 1,
5956 month on level 2 and day on level three will be built in the file, and the
5957 entry will be filed into the tree under the current date@footnote{If the file
5958 contains an entry with a @code{DATE_TREE} property, the entire date tree will
5959 be built under that entry.}
5961 An optional sixth element specifies the contexts in which the user can select
5962 the template.  This element can be a list of major modes or a function.
5963 @code{org-remember} will first check whether the function returns @code{t} or
5964 if we are in any of the listed major modes, and exclude templates for which
5965 this condition is not fulfilled.  Templates that do not specify this element
5966 at all, or that use @code{nil} or @code{t} as a value will always be
5967 selectable.
5969 So for example:
5971 @example
5972 (setq org-remember-templates
5973  '(("Bug" ?b "* BUG %?\n  %i\n  %a" "~/org/BUGS.org" "Bugs" (emacs-lisp-mode))
5974    ("Journal" ?j "* %U %?\n\n  %i\n  %a" "~/org/JOURNAL.org" "X" my-check)
5975    ("Idea" ?i "* %^@{Title@}\n  %i\n  %a" "~/org/JOURNAL.org" "New Ideas")))
5976 @end example
5978 @noindent
5979 The first template will only be available when invoking @code{org-remember}
5980 from a buffer in @code{emacs-lisp-mode}.  The second template will only be
5981 available when the function @code{my-check} returns @code{t}.  The third
5982 template will be proposed in any context.
5984 When you call @kbd{M-x org-remember} (or @kbd{M-x remember}) to remember
5985 something, Org will prompt for a key to select the template (if you have
5986 more than one template) and then prepare the buffer like
5987 @example
5988 * TODO
5989   [[file:@var{link to where you called remember}]]
5990 @end example
5992 @noindent
5993 During expansion of the template, special @kbd{%}-escapes@footnote{If you
5994 need one of these sequences literally, escape the @kbd{%} with a backslash.}
5995 allow dynamic insertion of content:
5996 @example
5997 %^@{@var{prompt}@}  @r{prompt the user for a string and replace this sequence with it.}
5998             @r{You may specify a default value and a completion table with}
5999             @r{%^@{prompt|default|completion2|completion3...@}}
6000             @r{The arrow keys access a prompt-specific history.}
6001 %a          @r{annotation, normally the link created with @code{org-store-link}}
6002 %A          @r{like @code{%a}, but prompt for the description part}
6003 %i          @r{initial content, the region when remember is called with C-u.}
6004             @r{The entire text will be indented like @code{%i} itself.}
6005 %t          @r{timestamp, date only}
6006 %T          @r{timestamp with date and time}
6007 %u, %U      @r{like the above, but inactive timestamps}
6008 %^t         @r{like @code{%t}, but prompt for date.  Similarly @code{%^T}, @code{%^u}, @code{%^U}}
6009             @r{You may define a prompt like @code{%^@{Birthday@}t}}
6010 %n          @r{user name (taken from @code{user-full-name})}
6011 %c          @r{Current kill ring head.}
6012 %x          @r{Content of the X clipboard.}
6013 %^C         @r{Interactive selection of which kill or clip to use.}
6014 %^L         @r{Like @code{%^C}, but insert as link.}
6015 %k          @r{title of the currently clocked task}
6016 %K          @r{link to the currently clocked task}
6017 %^g         @r{prompt for tags, with completion on tags in target file.}
6018 %^G         @r{prompt for tags, with completion all tags in all agenda files.}
6019 %^@{@var{prop}@}p   @r{Prompt the user for a value for property @var{prop}}
6020 %:keyword   @r{specific information for certain link types, see below}
6021 %[@var{file}]     @r{insert the contents of the file given by @var{file}}
6022 %(@var{sexp})     @r{evaluate Elisp @var{sexp} and replace with the result}
6023 %!          @r{immediately store note after completing the template}
6024             @r{(skipping the @kbd{C-c C-c} that normally triggers storing)}
6025 %&          @r{jump to target location immediately after storing note}
6026 @end example
6028 @noindent
6029 For specific link types, the following keywords will be
6030 defined@footnote{If you define your own link types (@pxref{Adding
6031 hyperlink types}), any property you store with
6032 @code{org-store-link-props} can be accessed in remember templates in a
6033 similar way.}:
6035 @vindex org-from-is-user-regexp
6036 @example
6037 Link type          |  Available keywords
6038 -------------------+----------------------------------------------
6039 bbdb               |  %:name %:company
6040 bbdb               |  %::server %:port %:nick
6041 vm, wl, mh, rmail  |  %:type %:subject %:message-id
6042                    |  %:from %:fromname %:fromaddress
6043                    |  %:to   %:toname   %:toaddress
6044                    |  %:fromto @r{(either "to NAME" or "from NAME")@footnote{This will always be the other, not the user.  See the variable @code{org-from-is-user-regexp}.}}
6045 gnus               |  %:group, @r{for messages also all email fields}
6046 w3, w3m            |  %:url
6047 info               |  %:file %:node
6048 calendar           |  %:date"
6049 @end example
6051 @noindent
6052 To place the cursor after template expansion use:
6054 @example
6055 %?          @r{After completing the template, position cursor here.}
6056 @end example
6058 @noindent
6059 If you change your mind about which template to use, call
6060 @code{org-remember} in the remember buffer.  You may then select a new
6061 template that will be filled with the previous context information.
6063 @node Storing notes,  , Remember templates, Remember
6064 @subsection Storing notes
6066 @vindex org-remember-clock-out-on-exit
6067 When you are finished preparing a note with Remember, you have to press
6068 @kbd{C-c C-c} to file the note away.  If you have started the clock in the
6069 Remember buffer, you will first be asked if you want to clock out
6070 now@footnote{To avoid this query, configure the variable
6071 @code{org-remember-clock-out-on-exit}.}.  If you answer @kbd{n}, the clock
6072 will continue to run after the note was filed away.
6074 The handler will then store the note in the file and under the headline
6075 specified in the template, or it will use the default file and headline.  The
6076 window configuration will be restored, sending you back to the working
6077 context before the call to Remember.  To re-use the location found during the
6078 last call to Remember, exit the Remember buffer with @kbd{C-0 C-c C-c},
6079 i.e. specify a zero prefix argument to @kbd{C-c C-c}.  Another special case
6080 is @kbd{C-2 C-c C-c} which files the note as a child of the currently clocked
6081 item, and @kbd{C-3 C-c C-c} files as a sibling of the currently clocked item.
6083 @vindex org-remember-store-without-prompt
6084 If you want to store the note directly to a different place, use
6085 @kbd{C-1 C-c C-c} instead to exit Remember@footnote{Configure the
6086 variable @code{org-remember-store-without-prompt} to make this behavior
6087 the default.}.  The handler will then first prompt for a target file---if
6088 you press @key{RET}, the value specified for the template is used.
6089 Then the command offers the headings tree of the selected file, with the
6090 cursor position at the default headline (if you specified one in the
6091 template).  You can either immediately press @key{RET} to get the note
6092 placed there.  Or you can use the following keys to find a different
6093 location:
6094 @example
6095 @key{TAB}         @r{Cycle visibility.}
6096 @key{down} / @key{up}   @r{Next/previous visible headline.}
6097 n / p        @r{Next/previous visible headline.}
6098 f / b        @r{Next/previous headline same level.}
6099 u            @r{One level up.}
6100 @c 0-9          @r{Digit argument.}
6101 @end example
6102 @noindent
6103 Pressing @key{RET} or @key{left} or @key{right}
6104 then leads to the following result.
6106 @vindex org-reverse-note-order
6107 @multitable @columnfractions 0.2 0.15 0.65
6108 @item @b{Cursor position} @tab @b{Key} @tab @b{Note gets inserted}
6109 @item on headline     @tab @key{RET}              @tab as sublevel of the heading at cursor, first or last
6110 @item                 @tab                        @tab depending on @code{org-reverse-note-order}.
6111 @item                 @tab @key{left}/@key{right} @tab as same level, before/after current heading
6112 @item buffer-start    @tab @key{RET} @tab as level 2 heading at end of file or level 1 at beginning
6113 @item                 @tab @tab depending on @code{org-reverse-note-order}.
6114 @item not on headline @tab @key{RET}
6115       @tab at cursor position, level taken from context.
6116 @end multitable
6118 Before inserting the text into a tree, the function ensures that the text has
6119 a headline, i.e. a first line that starts with a @samp{*}.  If not, a
6120 headline is constructed from the current date.  If you have indented the text
6121 of the note below the headline, the indentation will be adapted if inserting
6122 the note into the tree requires demotion from level 1.
6125 @node Attachments, RSS Feeds, Remember, Capture - Refile - Archive
6126 @section Attachments
6127 @cindex attachments
6129 @vindex org-attach-directory
6130 It is often useful to associate reference material with an outline node/task.
6131 Small chunks of plain text can simply be stored in the subtree of a project.
6132 Hyperlinks (@pxref{Hyperlinks}) can be used to establish associations with
6133 files that live elsewhere on your computer or in the cloud, like emails or
6134 source code files belonging to a project.  Another method is @i{attachments},
6135 which are files located in a directory belonging to an outline node.  Org
6136 uses directories named by the unique ID of each entry.  These directories are
6137 located in the @file{data} directory which lives in the same directory where
6138 your Org file lives@footnote{If you move entries or Org files from one
6139 directory to another, you may want to configure @code{org-attach-directory}
6140 to contain an absolute path.}.  If you initialize this directory with
6141 @code{git init}, Org will automatically commit changes when it sees them.
6142 The attachment system has been contributed to Org by John Wiegley.
6144 In cases where it seems better to do so, you can also attach a directory of your
6145 choice to an entry.  You can also make children inherit the attachment
6146 directory from a parent, so that an entire subtree uses the same attached
6147 directory.
6149 @noindent The following commands deal with attachments.
6151 @table @kbd
6153 @kindex C-c C-a
6154 @item C-c C-a
6155 The dispatcher for commands related to the attachment system.  After these
6156 keys, a list of commands is displayed and you need to press an additional key
6157 to select a command:
6159 @table @kbd
6160 @kindex C-c C-a a
6161 @item a
6162 @vindex org-attach-method
6163 Select a file and move it into the task's attachment directory.  The file
6164 will be copied, moved, or linked, depending on @code{org-attach-method}.
6165 Note that hard links are not supported on all systems.
6167 @kindex C-c C-a c
6168 @kindex C-c C-a m
6169 @kindex C-c C-a l
6170 @item c/m/l
6171 Attach a file using the copy/move/link method.
6172 Note that hard links are not supported on all systems.
6174 @kindex C-c C-a n
6175 @item n
6176 Create a new attachment as an Emacs buffer.
6178 @kindex C-c C-a z
6179 @item z
6180 Synchronize the current task with its attachment directory, in case you added
6181 attachments yourself.
6183 @kindex C-c C-a o
6184 @item o
6185 @vindex org-file-apps
6186 Open current task's attachment.  If there are more than one, prompt for a
6187 file name first.  Opening will follow the rules set by @code{org-file-apps}.
6188 For more details, see the information on following hyperlinks
6189 (@pxref{Handling links}).
6191 @kindex C-c C-a O
6192 @item O
6193 Also open the attachment, but force opening the file in Emacs.
6195 @kindex C-c C-a f
6196 @item f
6197 Open the current task's attachment directory.
6199 @kindex C-c C-a F
6200 @item F
6201 Also open the directory, but force using @command{dired} in Emacs.
6203 @kindex C-c C-a d
6204 @item d
6205 Select and delete a single attachment.
6207 @kindex C-c C-a D
6208 @item D
6209 Delete all of a task's attachments.  A safer way is to open the directory in
6210 @command{dired} and delete from there.
6212 @kindex C-c C-a s
6213 @item C-c C-a s
6214 @cindex property, ATTACH_DIR
6215 Set a specific directory as the entry's attachment directory.  This works by
6216 putting the directory path into the @code{ATTACH_DIR} property.
6218 @kindex C-c C-a i
6219 @item C-c C-a i
6220 @cindex property, ATTACH_DIR_INHERIT
6221 Set the @code{ATTACH_DIR_INHERIT} property, so that children will use the
6222 same directory for attachments as the parent does.
6223 @end table
6224 @end table
6226 @node RSS Feeds, Protocols, Attachments, Capture - Refile - Archive
6227 @section RSS feeds
6228 @cindex RSS feeds
6230 Org has the capability to add and change entries based on information found in
6231 RSS feeds.  You could use this to make a task out of each new podcast in a
6232 podcast feed.  Or you could use a phone-based note-creating service on the
6233 web to import tasks into Org.  To access feeds, you need to configure the
6234 variable @code{org-feed-alist}.  The docstring of this variable has detailed
6235 information.  Here is just an example:
6237 @example
6238 (setq org-feed-alist
6239       '(("ReQall" "http://www.reqall.com/user/feeds/rss/a1b2c3....."
6240          "~/org/feeds.org" "ReQall Entries")
6241 @end example
6242 @noindent
6243 will configure that new items from the feed provided by @file{reqall.com}
6244 will result in new entries in the file @file{~/org/feeds.org} under the
6245 heading @samp{ReQall Entries}, whenever the following command is used:
6247 @table @kbd
6248 @kindex C-c C-x g
6249 @item C-c C-x g
6250 Collect items from the feeds configured in @code{org-feed-alist} and act upon
6251 them.
6252 @kindex C-c C-x G
6253 @item C-c C-x G
6254 Prompt for a feed name and go to the inbox configured for this feed.
6255 @end table
6257 Under the same headline, Org will create a drawer @samp{FEEDSTATUS} in which
6258 it will store information about the status of items in the feed, to avoid
6259 adding the same item several times.  You should add @samp{FEEDSTATUS} to the
6260 list of drawers in that file:
6262 @example
6263 #+DRAWERS: LOGBOOK PROPERTIES FEEDSTATUS
6264 @end example
6266 For more information, see @file{org-feed.el} and the docstring of
6267 @code{org-feed-alist}.
6269 @node Protocols, Refiling notes, RSS Feeds, Capture - Refile - Archive
6270 @section Protocols for external access
6271 @cindex protocols, for external access
6272 @cindex emacsserver
6274 You can set up Org for handling protocol calls from outside applications that
6275 are passed to Emacs through the @file{emacsserver}.  For example, you can
6276 configure bookmarks in your web browser to send a link to the current page to
6277 Org and create a note from it using Remember (@pxref{Remember}).  Or you
6278 could create a bookmark that will tell Emacs to open the local source file of
6279 a remote website you are looking at with the browser.  See
6280 @uref{http://orgmode.org/worg/org-contrib/org-protocol.php} for detailed
6281 documentation and setup instructions.
6283 @node Refiling notes, Archiving, Protocols, Capture - Refile - Archive
6284 @section Refiling notes
6285 @cindex refiling notes
6287 When reviewing the captured data, you may want to refile some of the entries
6288 into a different list, for example into a project.  Cutting, finding the
6289 right location, and then pasting the note is cumbersome.  To simplify this
6290 process, you can use the following special command:
6292 @table @kbd
6293 @kindex C-c C-w
6294 @item C-c C-w
6295 @vindex org-reverse-note-order
6296 @vindex org-refile-targets
6297 @vindex org-refile-use-outline-path
6298 @vindex org-outline-path-complete-in-steps
6299 @vindex org-refile-allow-creating-parent-nodes
6300 @vindex org-log-refile
6301 @vindex org-refile-use-cache
6302 Refile the entry or region at point.  This command offers possible locations
6303 for refiling the entry and lets you select one with completion.  The item (or
6304 all items in the region) is filed below the target heading as a subitem.
6305 Depending on @code{org-reverse-note-order}, it will be either the first or
6306 last subitem.@*
6307 By default, all level 1 headlines in the current buffer are considered to be
6308 targets, but you can have more complex definitions across a number of files.
6309 See the variable @code{org-refile-targets} for details.  If you would like to
6310 select a location via a file-path-like completion along the outline path, see
6311 the variables @code{org-refile-use-outline-path} and
6312 @code{org-outline-path-complete-in-steps}.  If you would like to be able to
6313 create new nodes as new parents for refiling on the fly, check the
6314 variable @code{org-refile-allow-creating-parent-nodes}.
6315 When the variable @code{org-log-refile}@footnote{with corresponding
6316 @code{#+STARTUP} keywords @code{logrefile}, @code{lognoterefile},
6317 and @code{nologrefile}} is set, a time stamp or a note will be
6318 recorded when an entry has been refiled.
6319 @kindex C-u C-c C-w
6320 @item C-u C-c C-w
6321 Use the refile interface to jump to a heading.
6322 @kindex C-u C-u C-c C-w
6323 @item C-u C-u C-c C-w
6324 Jump to the location where @code{org-refile} last moved a tree to.
6325 @item C-2 C-c C-w
6326 Refile as the child of the item currently being clocked.
6327 @item C-0 C-c C-w @ @r{or} @ C-u C-u C-u C-c C-w
6328 Clear the target cache.  Caching of refile targets can be turned on by
6329 setting @code{org-refile-use-cache}.  To make the command seen new possible
6330 targets, you have to clear the cache with this command.
6331 @end table
6333 @node Archiving,  , Refiling notes, Capture - Refile - Archive
6334 @section Archiving
6335 @cindex archiving
6337 When a project represented by a (sub)tree is finished, you may want
6338 to move the tree out of the way and to stop it from contributing to the
6339 agenda.  Archiving is important to keep your working files compact and global
6340 searches like the construction of agenda views fast.
6342 @table @kbd
6343 @kindex C-c C-x C-a
6344 @item C-c C-x C-a
6345 @vindex org-archive-default-command
6346 Archive the current entry using the command specified in the variable
6347 @code{org-archive-default-command}.
6348 @end table
6350 @menu
6351 * Moving subtrees::             Moving a tree to an archive file
6352 * Internal archiving::          Switch off a tree but keep it in the file
6353 @end menu
6355 @node Moving subtrees, Internal archiving, Archiving, Archiving
6356 @subsection Moving a tree to the archive file
6357 @cindex external archiving
6359 The most common archiving action is to move a project tree to another file,
6360 the archive file.
6362 @table @kbd
6363 @kindex C-c $
6364 @kindex C-c C-x C-s
6365 @item C-c C-x C-s@ @r{or short} @ C-c $
6366 @vindex org-archive-location
6367 Archive the subtree starting at the cursor position to the location
6368 given by @code{org-archive-location}.
6369 @kindex C-u C-c C-x C-s
6370 @item C-u C-c C-x C-s
6371 Check if any direct children of the current headline could be moved to
6372 the archive.  To do this, each subtree is checked for open TODO entries.
6373 If none are found, the command offers to move it to the archive
6374 location.  If the cursor is @emph{not} on a headline when this command
6375 is invoked, the level 1 trees will be checked.
6376 @end table
6378 @cindex archive locations
6379 The default archive location is a file in the same directory as the
6380 current file, with the name derived by appending @file{_archive} to the
6381 current file name.  For information and examples on how to change this,
6382 see the documentation string of the variable
6383 @code{org-archive-location}.  There is also an in-buffer option for
6384 setting this variable, for example@footnote{For backward compatibility,
6385 the following also works: If there are several such lines in a file,
6386 each specifies the archive location for the text below it.  The first
6387 such line also applies to any text before its definition.  However,
6388 using this method is @emph{strongly} deprecated as it is incompatible
6389 with the outline structure of the document.  The correct method for
6390 setting multiple archive locations in a buffer is using properties.}:
6392 @cindex #+ARCHIVE
6393 @example
6394 #+ARCHIVE: %s_done::
6395 @end example
6397 @cindex property, ARCHIVE
6398 @noindent
6399 If you would like to have a special ARCHIVE location for a single entry
6400 or a (sub)tree, give the entry an @code{:ARCHIVE:} property with the
6401 location as the value (@pxref{Properties and Columns}).
6403 @vindex org-archive-save-context-info
6404 When a subtree is moved, it receives a number of special properties that
6405 record context information like the file from where the entry came, its
6406 outline path the archiving time etc.  Configure the variable
6407 @code{org-archive-save-context-info} to adjust the amount of information
6408 added.
6411 @node Internal archiving,  , Moving subtrees, Archiving
6412 @subsection Internal archiving
6414 If you want to just switch off (for agenda views) certain subtrees without
6415 moving them to a different file, you can use the @code{ARCHIVE tag}.
6417 A headline that is marked with the ARCHIVE tag (@pxref{Tags}) stays at
6418 its location in the outline tree, but behaves in the following way:
6419 @itemize @minus
6420 @item
6421 @vindex org-cycle-open-archived-trees
6422 It does not open when you attempt to do so with a visibility cycling
6423 command (@pxref{Visibility cycling}).  You can force cycling archived
6424 subtrees with @kbd{C-@key{TAB}}, or by setting the option
6425 @code{org-cycle-open-archived-trees}.  Also normal outline commands like
6426 @code{show-all} will open archived subtrees.
6427 @item
6428 @vindex org-sparse-tree-open-archived-trees
6429 During sparse tree construction (@pxref{Sparse trees}), matches in
6430 archived subtrees are not exposed, unless you configure the option
6431 @code{org-sparse-tree-open-archived-trees}.
6432 @item
6433 @vindex org-agenda-skip-archived-trees
6434 During agenda view construction (@pxref{Agenda Views}), the content of
6435 archived trees is ignored unless you configure the option
6436 @code{org-agenda-skip-archived-trees}, in which case these trees will always
6437 be included.  In the agenda you can press @kbd{v a} to get archives
6438 temporarily included.
6439 @item
6440 @vindex org-export-with-archived-trees
6441 Archived trees are not exported (@pxref{Exporting}), only the headline
6442 is.  Configure the details using the variable
6443 @code{org-export-with-archived-trees}.
6444 @item
6445 @vindex org-columns-skip-archived-trees
6446 Archived trees are excluded from column view unless the variable
6447 @code{org-columns-skip-archived-trees} is configured to @code{nil}.
6448 @end itemize
6450 The following commands help managing the ARCHIVE tag:
6452 @table @kbd
6453 @kindex C-c C-x a
6454 @item C-c C-x a
6455 Toggle the ARCHIVE tag for the current headline.  When the tag is set,
6456 the headline changes to a shadowed face, and the subtree below it is
6457 hidden.
6458 @kindex C-u C-c C-x a
6459 @item C-u C-c C-x a
6460 Check if any direct children of the current headline should be archived.
6461 To do this, each subtree is checked for open TODO entries.  If none are
6462 found, the command offers to set the ARCHIVE tag for the child.  If the
6463 cursor is @emph{not} on a headline when this command is invoked, the
6464 level 1 trees will be checked.
6465 @kindex C-@kbd{TAB}
6466 @item C-@kbd{TAB}
6467 Cycle a tree even if it is tagged with ARCHIVE.
6468 @kindex C-c C-x A
6469 @item C-c C-x A
6470 Move the current entry to the @emph{Archive Sibling}.  This is a sibling of
6471 the entry with the heading @samp{Archive} and the tag @samp{ARCHIVE}.  The
6472 entry becomes a child of that sibling and in this way retains a lot of its
6473 original context, including inherited tags and approximate position in the
6474 outline.
6475 @end table
6478 @node Agenda Views, Markup, Capture - Refile - Archive, Top
6479 @chapter Agenda Views
6480 @cindex agenda views
6482 Due to the way Org works, TODO items, time-stamped items, and
6483 tagged headlines can be scattered throughout a file or even a number of
6484 files.  To get an overview of open action items, or of events that are
6485 important for a particular date, this information must be collected,
6486 sorted and displayed in an organized way.
6488 Org can select items based on various criteria and display them
6489 in a separate buffer.  Seven different view types are provided:
6491 @itemize @bullet
6492 @item
6493 an @emph{agenda} that is like a calendar and shows information
6494 for specific dates,
6495 @item
6496 a @emph{TODO list} that covers all unfinished
6497 action items,
6498 @item
6499 a @emph{match view}, showings headlines based on the tags, properties, and
6500 TODO state associated with them,
6501 @item
6502 a @emph{timeline view} that shows all events in a single Org file,
6503 in time-sorted view,
6504 @item
6505 a @emph{text search view} that shows all entries from multiple files
6506 that contain specified keywords,
6507 @item
6508 a @emph{stuck projects view} showing projects that currently don't move
6509 along, and
6510 @item
6511 @emph{custom views} that are special searches and combinations of different
6512 views.
6513 @end itemize
6515 @noindent
6516 The extracted information is displayed in a special @emph{agenda
6517 buffer}.  This buffer is read-only, but provides commands to visit the
6518 corresponding locations in the original Org files, and even to
6519 edit these files remotely.
6521 @vindex org-agenda-window-setup
6522 @vindex org-agenda-restore-windows-after-quit
6523 Two variables control how the agenda buffer is displayed and whether the
6524 window configuration is restored when the agenda exits:
6525 @code{org-agenda-window-setup} and
6526 @code{org-agenda-restore-windows-after-quit}.
6528 @menu
6529 * Agenda files::                Files being searched for agenda information
6530 * Agenda dispatcher::           Keyboard access to agenda views
6531 * Built-in agenda views::       What is available out of the box?
6532 * Presentation and sorting::    How agenda items are prepared for display
6533 * Agenda commands::             Remote editing of Org trees
6534 * Custom agenda views::         Defining special searches and views
6535 * Exporting Agenda Views::      Writing a view to a file
6536 * Agenda column view::          Using column view for collected entries
6537 @end menu
6539 @node Agenda files, Agenda dispatcher, Agenda Views, Agenda Views
6540 @section Agenda files
6541 @cindex agenda files
6542 @cindex files for agenda
6544 @vindex org-agenda-files
6545 The information to be shown is normally collected from all @emph{agenda
6546 files}, the files listed in the variable
6547 @code{org-agenda-files}@footnote{If the value of that variable is not a
6548 list, but a single file name, then the list of agenda files will be
6549 maintained in that external file.}. If a directory is part of this list,
6550 all files with the extension @file{.org} in this directory will be part
6551 of the list.
6553 Thus, even if you only work with a single Org file, that file should
6554 be put into the list@footnote{When using the dispatcher, pressing
6555 @kbd{<} before selecting a command will actually limit the command to
6556 the current file, and ignore @code{org-agenda-files} until the next
6557 dispatcher command.}.  You can customize @code{org-agenda-files}, but
6558 the easiest way to maintain it is through the following commands
6560 @cindex files, adding to agenda list
6561 @table @kbd
6562 @kindex C-c [
6563 @item C-c [
6564 Add current file to the list of agenda files.  The file is added to
6565 the front of the list.  If it was already in the list, it is moved to
6566 the front.  With a prefix argument, file is added/moved to the end.
6567 @kindex C-c ]
6568 @item C-c ]
6569 Remove current file from the list of agenda files.
6570 @kindex C-,
6571 @kindex C-'
6572 @item C-,
6573 @itemx C-'
6574 Cycle through agenda file list, visiting one file after the other.
6575 @kindex M-x org-iswitchb
6576 @item M-x org-iswitchb
6577 Command to use an @code{iswitchb}-like interface to switch to and between Org
6578 buffers.
6579 @end table
6581 @noindent
6582 The Org menu contains the current list of files and can be used
6583 to visit any of them.
6585 If you would like to focus the agenda temporarily on a file not in
6586 this list, or on just one file in the list, or even on only a subtree in a
6587 file, then this can be done in different ways.  For a single agenda command,
6588 you may press @kbd{<} once or several times in the dispatcher
6589 (@pxref{Agenda dispatcher}).  To restrict the agenda scope for an
6590 extended period, use the following commands:
6592 @table @kbd
6593 @kindex C-c C-x <
6594 @item C-c C-x <
6595 Permanently restrict the agenda to the current subtree.  When with a
6596 prefix argument, or with the cursor before the first headline in a file,
6597 the agenda scope is set to the entire file.  This restriction remains in
6598 effect until removed with @kbd{C-c C-x >}, or by typing either @kbd{<}
6599 or @kbd{>} in the agenda dispatcher.  If there is a window displaying an
6600 agenda view, the new restriction takes effect immediately.
6601 @kindex C-c C-x >
6602 @item C-c C-x >
6603 Remove the permanent restriction created by @kbd{C-c C-x <}.
6604 @end table
6606 @noindent
6607 When working with @file{speedbar.el}, you can use the following commands in
6608 the Speedbar frame:
6609 @table @kbd
6610 @kindex <
6611 @item < @r{in the speedbar frame}
6612 Permanently restrict the agenda to the item---either an Org file or a subtree
6613 in such a file---at the cursor in the Speedbar frame.
6614 If there is a window displaying an agenda view, the new restriction takes
6615 effect immediately.
6616 @kindex >
6617 @item > @r{in the speedbar frame}
6618 Lift the restriction.
6619 @end table
6621 @node Agenda dispatcher, Built-in agenda views, Agenda files, Agenda Views
6622 @section The agenda dispatcher
6623 @cindex agenda dispatcher
6624 @cindex dispatching agenda commands
6625 The views are created through a dispatcher, which should be bound to a
6626 global key---for example @kbd{C-c a} (@pxref{Installation}).  In the
6627 following we will assume that @kbd{C-c a} is indeed how the dispatcher
6628 is accessed and list keyboard access to commands accordingly.  After
6629 pressing @kbd{C-c a}, an additional letter is required to execute a
6630 command.  The dispatcher offers the following default commands:
6631 @table @kbd
6632 @item a
6633 Create the calendar-like agenda (@pxref{Weekly/daily agenda}).
6634 @item t @r{/} T
6635 Create a list of all TODO items (@pxref{Global TODO list}).
6636 @item m @r{/} M
6637 Create a list of headlines matching a TAGS expression (@pxref{Matching
6638 tags and properties}).
6639 @item L
6640 Create the timeline view for the current buffer (@pxref{Timeline}).
6641 @item s
6642 Create a list of entries selected by a boolean expression of keywords
6643 and/or regular expressions that must or must not occur in the entry.
6644 @item /
6645 @vindex org-agenda-text-search-extra-files
6646 Search for a regular expression in all agenda files and additionally in
6647 the files listed in @code{org-agenda-text-search-extra-files}.  This
6648 uses the Emacs command @code{multi-occur}.  A prefix argument can be
6649 used to specify the number of context lines for each match, default is
6651 @item # @r{/} !
6652 Create a list of stuck projects (@pxref{Stuck projects}).
6653 @item <
6654 Restrict an agenda command to the current buffer@footnote{For backward
6655 compatibility, you can also press @kbd{1} to restrict to the current
6656 buffer.}.  After pressing @kbd{<}, you still need to press the character
6657 selecting the command.
6658 @item < <
6659 If there is an active region, restrict the following agenda command to
6660 the region.  Otherwise, restrict it to the current subtree@footnote{For
6661 backward compatibility, you can also press @kbd{0} to restrict to the
6662 current region/subtree.}.  After pressing @kbd{< <}, you still need to press the
6663 character selecting the command.
6664 @end table
6666 You can also define custom commands that will be accessible through the
6667 dispatcher, just like the default commands.  This includes the
6668 possibility to create extended agenda buffers that contain several
6669 blocks together, for example the weekly agenda, the global TODO list and
6670 a number of special tags matches.  @xref{Custom agenda views}.
6672 @node Built-in agenda views, Presentation and sorting, Agenda dispatcher, Agenda Views
6673 @section The built-in agenda views
6675 In this section we describe the built-in views.
6677 @menu
6678 * Weekly/daily agenda::         The calendar page with current tasks
6679 * Global TODO list::            All unfinished action items
6680 * Matching tags and properties::  Structured information with fine-tuned search
6681 * Timeline::                    Time-sorted view for single file
6682 * Search view::                 Find entries by searching for text
6683 * Stuck projects::              Find projects you need to review
6684 @end menu
6686 @node Weekly/daily agenda, Global TODO list, Built-in agenda views, Built-in agenda views
6687 @subsection The weekly/daily agenda
6688 @cindex agenda
6689 @cindex weekly agenda
6690 @cindex daily agenda
6692 The purpose of the weekly/daily @emph{agenda} is to act like a page of a
6693 paper agenda, showing all the tasks for the current week or day.
6695 @table @kbd
6696 @cindex org-agenda, command
6697 @kindex C-c a a
6698 @item C-c a a
6699 @vindex org-agenda-ndays
6700 Compile an agenda for the current week from a list of Org files.  The agenda
6701 shows the entries for each day.  With a numeric prefix@footnote{For backward
6702 compatibility, the universal prefix @kbd{C-u} causes all TODO entries to be
6703 listed before the agenda.  This feature is deprecated, use the dedicated TODO
6704 list, or a block agenda instead (@pxref{Block agenda}).}  (like @kbd{C-u 2 1
6705 C-c a a}) you may set the number of days to be displayed (see also the
6706 variable @code{org-agenda-ndays})
6707 @end table
6709 Remote editing from the agenda buffer means, for example, that you can
6710 change the dates of deadlines and appointments from the agenda buffer.
6711 The commands available in the Agenda buffer are listed in @ref{Agenda
6712 commands}.
6714 @subsubheading Calendar/Diary integration
6715 @cindex calendar integration
6716 @cindex diary integration
6718 Emacs contains the calendar and diary by Edward M. Reingold.  The
6719 calendar displays a three-month calendar with holidays from different
6720 countries and cultures.  The diary allows you to keep track of
6721 anniversaries, lunar phases, sunrise/set, recurrent appointments
6722 (weekly, monthly) and more.  In this way, it is quite complementary to
6723 Org.  It can be very useful to combine output from Org with
6724 the diary.
6726 In order to include entries from the Emacs diary into Org mode's
6727 agenda, you only need to customize the variable
6729 @lisp
6730 (setq org-agenda-include-diary t)
6731 @end lisp
6733 @noindent After that, everything will happen automatically.  All diary
6734 entries including holidays, anniversaries, etc., will be included in the
6735 agenda buffer created by Org mode.  @key{SPC}, @key{TAB}, and
6736 @key{RET} can be used from the agenda buffer to jump to the diary
6737 file in order to edit existing diary entries.  The @kbd{i} command to
6738 insert new entries for the current date works in the agenda buffer, as
6739 well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
6740 Sunrise/Sunset times, show lunar phases and to convert to other
6741 calendars, respectively.  @kbd{c} can be used to switch back and forth
6742 between calendar and agenda.
6744 If you are using the diary only for sexp entries and holidays, it is
6745 faster to not use the above setting, but instead to copy or even move
6746 the entries into an Org file. Org mode evaluates diary-style sexp
6747 entries, and does it faster because there is no overhead for first
6748 creating the diary display.  Note that the sexp entries must start at
6749 the left margin, no whitespace is allowed before them.  For example,
6750 the following segment of an Org file will be processed and entries
6751 will be made in the agenda:
6753 @example
6754 * Birthdays and similar stuff
6755 #+CATEGORY: Holiday
6756 %%(org-calendar-holiday)   ; special function for holiday names
6757 #+CATEGORY: Ann
6758 %%(diary-anniversary  5 14 1956)@footnote{Note that the order of the arguments (month, day, year) depends on the setting of @code{calendar-date-style}.} Arthur Dent is %d years old
6759 %%(diary-anniversary 10  2 1869) Mahatma Gandhi would be %d years old
6760 @end example
6762 @subsubheading Anniversaries from BBDB
6763 @cindex BBDB, anniversaries
6764 @cindex anniversaries, from BBDB
6766 If you are using the Big Brothers Database to store your contacts, you will
6767 very likely prefer to store anniversaries in BBDB rather than in a
6768 separate Org or diary file.  Org supports this and will show BBDB
6769 anniversaries as part of the agenda.  All you need to do is to add the
6770 following to one your your agenda files:
6772 @example
6773 * Anniversaries
6774   :PROPERTIES:
6775   :CATEGORY: Anniv
6776   :END
6777 %%(org-bbdb-anniversaries)
6778 @end example
6780 You can then go ahead and define anniversaries for a BBDB record.  Basically,
6781 you need to press @kbd{C-o anniversary @key{RET}} with the cursor in a BBDB
6782 record and then add the date in the format @code{YYYY-MM-DD}, followed by a
6783 space and the class of the anniversary (@samp{birthday} or @samp{wedding}, or
6784 a format string).  If you omit the class, it will default to @samp{birthday}.
6785 Here are a few examples, the header for the file @file{org-bbdb.el} contains
6786 more detailed information.
6788 @example
6789 1973-06-22
6790 1955-08-02 wedding
6791 2008-04-14 %s released version 6.01 of org-mode, %d years ago
6792 @end example
6794 After a change to BBDB, or for the first agenda display during an Emacs
6795 session, the agenda display will suffer a short delay as Org updates its
6796 hash with anniversaries.  However, from then on things will be very fast---much
6797 faster in fact than a long list of @samp{%%(diary-anniversary)} entries
6798 in an Org or Diary file.
6800 @subsubheading Appointment reminders
6801 @cindex @file{appt.el}
6802 @cindex appointment reminders
6804 Org can interact with Emacs appointments notification facility.  To add all
6805 the appointments of your agenda files, use the command
6806 @code{org-agenda-to-appt}.  This command also lets you filter through the
6807 list of your appointments and add only those belonging to a specific category
6808 or matching a regular expression. See the docstring for details.
6810 @node Global TODO list, Matching tags and properties, Weekly/daily agenda, Built-in agenda views
6811 @subsection The global TODO list
6812 @cindex global TODO list
6813 @cindex TODO list, global
6815 The global TODO list contains all unfinished TODO items formatted and
6816 collected into a single place.
6818 @table @kbd
6819 @kindex C-c a t
6820 @item C-c a t
6821 Show the global TODO list.  This collects the TODO items from all
6822 agenda files (@pxref{Agenda Views}) into a single buffer.  The buffer is in
6823 @code{agenda-mode}, so there are commands to examine and manipulate
6824 the TODO entries directly from that buffer (@pxref{Agenda commands}).
6825 @kindex C-c a T
6826 @item C-c a T
6827 @cindex TODO keyword matching
6828 @vindex org-todo-keywords
6829 Like the above, but allows selection of a specific TODO keyword.  You
6830 can also do this by specifying a prefix argument to @kbd{C-c a t}.  With
6831 a @kbd{C-u} prefix you are prompted for a keyword, and you may also
6832 specify several keywords by separating them with @samp{|} as the boolean OR
6833 operator.  With a numeric prefix, the nth keyword in
6834 @code{org-todo-keywords} is selected.
6835 @kindex r
6836 The @kbd{r} key in the agenda buffer regenerates it, and you can give
6837 a prefix argument to this command to change the selected TODO keyword,
6838 for example @kbd{3 r}.  If you often need a search for a specific
6839 keyword, define a custom command for it (@pxref{Agenda dispatcher}).@*
6840 Matching specific TODO keywords can also be done as part of a tags
6841 search (@pxref{Tag searches}).
6842 @end table
6844 Remote editing of TODO items means that you can change the state of a
6845 TODO entry with a single key press.  The commands available in the
6846 TODO list are described in @ref{Agenda commands}.
6848 @cindex sublevels, inclusion into TODO list
6849 Normally the global TODO list simply shows all headlines with TODO
6850 keywords.  This list can become very long.  There are two ways to keep
6851 it more compact:
6852 @itemize @minus
6853 @item
6854 @vindex org-agenda-todo-ignore-scheduled
6855 @vindex org-agenda-todo-ignore-deadlines
6856 @vindex org-agenda-todo-ignore-with-date
6857 Some people view a TODO item that has been @emph{scheduled} for execution or
6858 have a @emph{deadline} (@pxref{Timestamps}) as no longer @emph{open}.
6859 Configure the variables @code{org-agenda-todo-ignore-scheduled},
6860 @code{org-agenda-todo-ignore-deadlines}, and/or
6861 @code{org-agenda-todo-ignore-with-date} to exclude such items from the
6862 global TODO list.
6863 @item
6864 @vindex org-agenda-todo-list-sublevels
6865 TODO items may have sublevels to break up the task into subtasks.  In
6866 such cases it may be enough to list only the highest level TODO headline
6867 and omit the sublevels from the global list.  Configure the variable
6868 @code{org-agenda-todo-list-sublevels} to get this behavior.
6869 @end itemize
6871 @node Matching tags and properties, Timeline, Global TODO list, Built-in agenda views
6872 @subsection Matching tags and properties
6873 @cindex matching, of tags
6874 @cindex matching, of properties
6875 @cindex tags view
6876 @cindex match view
6878 If headlines in the agenda files are marked with @emph{tags} (@pxref{Tags}),
6879 or have properties (@pxref{Properties and Columns}), you can select headlines
6880 based on this metadata and collect them into an agenda buffer.  The match
6881 syntax described here also applies when creating sparse trees with @kbd{C-c /
6884 @table @kbd
6885 @kindex C-c a m
6886 @item C-c a m
6887 Produce a list of all headlines that match a given set of tags.  The
6888 command prompts for a selection criterion, which is a boolean logic
6889 expression with tags, like @samp{+work+urgent-withboss} or
6890 @samp{work|home} (@pxref{Tags}).  If you often need a specific search,
6891 define a custom command for it (@pxref{Agenda dispatcher}).
6892 @kindex C-c a M
6893 @item C-c a M
6894 @vindex org-tags-match-list-sublevels
6895 @vindex org-agenda-tags-todo-honor-ignore-options
6896 Like @kbd{C-c a m}, but only select headlines that are also TODO items and
6897 force checking subitems (see variable @code{org-tags-match-list-sublevels}).
6898 To exclude scheduled/deadline items, see the variable
6899 @code{org-agenda-tags-todo-honor-ignore-options}.  Matching specific TODO
6900 keywords together with a tags match is also possible, see @ref{Tag searches}.
6901 @end table
6903 The commands available in the tags list are described in @ref{Agenda
6904 commands}.
6906 @subsubheading Match syntax
6908 @cindex Boolean logic, for tag/property searches
6909 A search string can use Boolean operators @samp{&} for AND and @samp{|} for
6910 OR.  @samp{&} binds more strongly than @samp{|}.  Parentheses are currently
6911 not implemented.  Each element in the search is either a tag, a regular
6912 expression matching tags, or an expression like @code{PROPERTY OPERATOR
6913 VALUE} with a comparison operator, accessing a property value.  Each element
6914 may be preceded by @samp{-}, to select against it, and @samp{+} is syntactic
6915 sugar for positive selection.  The AND operator @samp{&} is optional when
6916 @samp{+} or @samp{-} is present.  Here are some examples, using only tags.
6918 @table @samp
6919 @item +work-boss
6920 Select headlines tagged @samp{:work:}, but discard those also tagged
6921 @samp{:boss:}.
6922 @item work|laptop
6923 Selects lines tagged @samp{:work:} or @samp{:laptop:}.
6924 @item work|laptop+night
6925 Like before, but require the @samp{:laptop:} lines to be tagged also
6926 @samp{:night:}.
6927 @end table
6929 @cindex regular expressions, with tags search
6930 Instead of a tag, you may also specify a regular expression enclosed in curly
6931 braces.  For example,
6932 @samp{work+@{^boss.*@}} matches headlines that contain the tag
6933 @samp{:work:} and any tag @i{starting} with @samp{boss}.
6935 @cindex TODO keyword matching, with tags search
6936 @cindex level, require for tags/property match
6937 @cindex category, require for tags/property match
6938 @vindex org-odd-levels-only
6939 You may also test for properties (@pxref{Properties and Columns}) at the same
6940 time as matching tags.  The properties may be real properties, or special
6941 properties that represent other metadata (@pxref{Special properties}).  For
6942 example, the ``property'' @code{TODO} represents the TODO keyword of the
6943 entry.  Or, the ``property'' @code{LEVEL} represents the level of an entry.
6944 So a search @samp{+LEVEL=3+boss-TODO="DONE"} lists all level three headlines
6945 that have the tag @samp{boss} and are @emph{not} marked with the TODO keyword
6946 DONE.  In buffers with @code{org-odd-levels-only} set, @samp{LEVEL} does not
6947 count the number of stars, but @samp{LEVEL=2} will correspond to 3 stars etc.
6949 Here are more examples:
6950 @table @samp
6951 @item work+TODO="WAITING"
6952 Select @samp{:work:}-tagged TODO lines with the specific TODO
6953 keyword @samp{WAITING}.
6954 @item work+TODO="WAITING"|home+TODO="WAITING"
6955 Waiting tasks both at work and at home.
6956 @end table
6958 When matching properties, a number of different operators can be used to test
6959 the value of a property.  Here is a complex example:
6961 @example
6962 +work-boss+PRIORITY="A"+Coffee="unlimited"+Effort<2         \
6963          +With=@{Sarah\|Denny@}+SCHEDULED>="<2008-10-11>"
6964 @end example
6966 @noindent
6967 The type of comparison will depend on how the comparison value is written:
6968 @itemize @minus
6969 @item
6970 If the comparison value is a plain number, a numerical comparison is done,
6971 and the allowed operators are @samp{<}, @samp{=}, @samp{>}, @samp{<=},
6972 @samp{>=}, and @samp{<>}.
6973 @item
6974 If the comparison value is enclosed in double-quotes,
6975 a string comparison is done, and the same operators are allowed.
6976 @item
6977 If the comparison value is enclosed in double-quotes @emph{and} angular
6978 brackets (like @samp{DEADLINE<="<2008-12-24 18:30>"}), both values are
6979 assumed to be date/time specifications in the standard Org way, and the
6980 comparison will be done accordingly.  Special values that will be recognized
6981 are @code{"<now>"} for now (including time), and @code{"<today>"}, and
6982 @code{"<tomorrow>"} for these days at 0:00 hours, i.e. without a time
6983 specification.  Also strings like @code{"<+5d>"} or @code{"<-2m>"} with units
6984 @code{d}, @code{w}, @code{m}, and @code{y} for day, week, month, and year,
6985 respectively, can be used.
6986 @item
6987 If the comparison value is enclosed
6988 in curly braces, a regexp match is performed, with @samp{=} meaning that the
6989 regexp matches the property value, and @samp{<>} meaning that it does not
6990 match.
6991 @end itemize
6993 So the search string in the example finds entries tagged @samp{:work:} but
6994 not @samp{:boss:}, which also have a priority value @samp{A}, a
6995 @samp{:Coffee:} property with the value @samp{unlimited}, an @samp{Effort}
6996 property that is numerically smaller than 2, a @samp{:With:} property that is
6997 matched by the regular expression @samp{Sarah\|Denny}, and that are scheduled
6998 on or after October 11, 2008.
7000 Accessing TODO, LEVEL, and CATEGORY during a search is fast.  Accessing any
7001 other properties will slow down the search.  However, once you have paid the
7002 price by accessing one property, testing additional properties is cheap
7003 again.
7005 You can configure Org mode to use property inheritance during a search, but
7006 beware that this can slow down searches considerably.  See @ref{Property
7007 inheritance}, for details.
7009 For backward compatibility, and also for typing speed, there is also a
7010 different way to test TODO states in a search.  For this, terminate the
7011 tags/property part of the search string (which may include several terms
7012 connected with @samp{|}) with a @samp{/} and then specify a Boolean
7013 expression just for TODO keywords.  The syntax is then similar to that for
7014 tags, but should be applied with care: for example, a positive
7015 selection on several TODO keywords cannot meaningfully be combined with
7016 boolean AND.  However, @emph{negative selection} combined with AND can be
7017 meaningful.  To make sure that only lines are checked that actually have any
7018 TODO keyword (resulting in a speed-up), use @kbd{C-c a M}, or equivalently
7019 start the TODO part after the slash with @samp{!}.  Examples:
7021 @table @samp
7022 @item work/WAITING
7023 Same as @samp{work+TODO="WAITING"}
7024 @item work/!-WAITING-NEXT
7025 Select @samp{:work:}-tagged TODO lines that are neither @samp{WAITING}
7026 nor @samp{NEXT}
7027 @item work/!+WAITING|+NEXT
7028 Select @samp{:work:}-tagged TODO lines that are either @samp{WAITING} or
7029 @samp{NEXT}.
7030 @end table
7032 @node Timeline, Search view, Matching tags and properties, Built-in agenda views
7033 @subsection Timeline for a single file
7034 @cindex timeline, single file
7035 @cindex time-sorted view
7037 The timeline summarizes all time-stamped items from a single Org mode
7038 file in a @emph{time-sorted view}.  The main purpose of this command is
7039 to give an overview over events in a project.
7041 @table @kbd
7042 @kindex C-c a L
7043 @item C-c a L
7044 Show a time-sorted view of the Org file, with all time-stamped items.
7045 When called with a @kbd{C-u} prefix, all unfinished TODO entries
7046 (scheduled or not) are also listed under the current date.
7047 @end table
7049 @noindent
7050 The commands available in the timeline buffer are listed in
7051 @ref{Agenda commands}.
7053 @node Search view, Stuck projects, Timeline, Built-in agenda views
7054 @subsection Search view
7055 @cindex search view
7056 @cindex text search
7057 @cindex searching, for text
7059 This agenda view is a general text search facility for Org mode entries.
7060 It is particularly useful to find notes.
7062 @table @kbd
7063 @kindex C-c a s
7064 @item C-c a s
7065 This is a special search that lets you select entries by matching a substring
7066 or specific words using a boolean logic.
7067 @end table
7068 For example, the search string @samp{computer equipment} will find entries
7069 that contain @samp{computer equipment} as a substring.  If the two words are
7070 separated by more space or a line break, the search will still match.
7071 Search view can also search for specific keywords in the entry, using Boolean
7072 logic.  The search string @samp{+computer +wifi -ethernet -@{8\.11[bg]@}}
7073 will search for note entries that contain the keywords @code{computer}
7074 and @code{wifi}, but not the keyword @code{ethernet}, and which are also
7075 not matched by the regular expression @code{8\.11[bg]}, meaning to
7076 exclude both 8.11b and 8.11g.  The first @samp{+} is necessary to turn on
7077 word search, other @samp{+} characters are optional.  For more details, see
7078 the docstring of the command @code{org-search-view}.
7080 @vindex org-agenda-text-search-extra-files
7081 Note that in addition to the agenda files, this command will also search
7082 the files listed in @code{org-agenda-text-search-extra-files}.
7084 @node Stuck projects,  , Search view, Built-in agenda views
7085 @subsection Stuck projects
7087 If you are following a system like David Allen's GTD to organize your
7088 work, one of the ``duties'' you have is a regular review to make sure
7089 that all projects move along.  A @emph{stuck} project is a project that
7090 has no defined next actions, so it will never show up in the TODO lists
7091 Org mode produces.  During the review, you need to identify such
7092 projects and define next actions for them.
7094 @table @kbd
7095 @kindex C-c a #
7096 @item C-c a #
7097 List projects that are stuck.
7098 @kindex C-c a !
7099 @item C-c a !
7100 @vindex org-stuck-projects
7101 Customize the variable @code{org-stuck-projects} to define what a stuck
7102 project is and how to find it.
7103 @end table
7105 You almost certainly will have to configure this view before it will
7106 work for you.  The built-in default assumes that all your projects are
7107 level-2 headlines, and that a project is not stuck if it has at least
7108 one entry marked with a TODO keyword TODO or NEXT or NEXTACTION.
7110 Let's assume that you, in your own way of using Org mode, identify
7111 projects with a tag PROJECT, and that you use a TODO keyword MAYBE to
7112 indicate a project that should not be considered yet.  Let's further
7113 assume that the TODO keyword DONE marks finished projects, and that NEXT
7114 and TODO indicate next actions.  The tag @@SHOP indicates shopping and
7115 is a next action even without the NEXT tag.  Finally, if the project
7116 contains the special word IGNORE anywhere, it should not be listed
7117 either.  In this case you would start by identifying eligible projects
7118 with a tags/todo match@footnote{@xref{Tag searches}.}
7119 @samp{+PROJECT/-MAYBE-DONE}, and then check for TODO, NEXT, @@SHOP, and
7120 IGNORE in the subtree to identify projects that are not stuck.  The
7121 correct customization for this is
7123 @lisp
7124 (setq org-stuck-projects
7125       '("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@@SHOP")
7126                                "\\<IGNORE\\>"))
7127 @end lisp
7129 Note that if a project is identified as non-stuck, the subtree of this entry
7130 will still be searched for stuck projects.
7132 @node Presentation and sorting, Agenda commands, Built-in agenda views, Agenda Views
7133 @section Presentation and sorting
7134 @cindex presentation, of agenda items
7136 @vindex org-agenda-prefix-format
7137 Before displaying items in an agenda view, Org mode visually prepares
7138 the items and sorts them.  Each item occupies a single line.  The line
7139 starts with a @emph{prefix} that contains the @emph{category}
7140 (@pxref{Categories}) of the item and other important information.  You can
7141 customize the prefix using the option @code{org-agenda-prefix-format}.
7142 The prefix is followed by a cleaned-up version of the outline headline
7143 associated with the item.
7145 @menu
7146 * Categories::                  Not all tasks are equal
7147 * Time-of-day specifications::  How the agenda knows the time
7148 * Sorting of agenda items::     The order of things
7149 @end menu
7151 @node Categories, Time-of-day specifications, Presentation and sorting, Presentation and sorting
7152 @subsection Categories
7154 @cindex category
7155 The category is a broad label assigned to each agenda item.  By default,
7156 the category is simply derived from the file name, but you can also
7157 specify it with a special line in the buffer, like this@footnote{For
7158 backward compatibility, the following also works: if there are several
7159 such lines in a file, each specifies the category for the text below it.
7160 The first category also applies to any text before the first CATEGORY
7161 line.  However, using this method is @emph{strongly} deprecated as it is
7162 incompatible with the outline structure of the document.  The correct
7163 method for setting multiple categories in a buffer is using a
7164 property.}:
7166 @example
7167 #+CATEGORY: Thesis
7168 @end example
7170 @noindent
7171 @cindex property, CATEGORY
7172 If you would like to have a special CATEGORY for a single entry or a
7173 (sub)tree, give the entry a @code{:CATEGORY:} property with the
7174 special category you want to apply as the value.
7176 @noindent
7177 The display in the agenda buffer looks best if the category is not
7178 longer than 10 characters.
7180 @node Time-of-day specifications, Sorting of agenda items, Categories, Presentation and sorting
7181 @subsection Time-of-day specifications
7182 @cindex time-of-day specification
7184 Org mode checks each agenda item for a time-of-day specification.  The
7185 time can be part of the timestamp that triggered inclusion into the
7186 agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}.  Time
7187 ranges can be specified with two timestamps, like
7189 @w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
7191 In the headline of the entry itself, a time(range) may also appear as
7192 plain text (like @samp{12:45} or a @samp{8:30-1pm}).  If the agenda
7193 integrates the Emacs diary (@pxref{Weekly/daily agenda}), time
7194 specifications in diary entries are recognized as well.
7196 For agenda display, Org mode extracts the time and displays it in a
7197 standard 24 hour format as part of the prefix.  The example times in
7198 the previous paragraphs would end up in the agenda like this:
7200 @example
7201     8:30-13:00 Arthur Dent lies in front of the bulldozer
7202    12:45...... Ford Prefect arrives and takes Arthur to the pub
7203    19:00...... The Vogon reads his poem
7204    20:30-22:15 Marvin escorts the Hitchhikers to the bridge
7205 @end example
7207 @cindex time grid
7208 If the agenda is in single-day mode, or for the display of today, the
7209 timed entries are embedded in a time grid, like
7211 @example
7212     8:00...... ------------------
7213     8:30-13:00 Arthur Dent lies in front of the bulldozer
7214    10:00...... ------------------
7215    12:00...... ------------------
7216    12:45...... Ford Prefect arrives and takes Arthur to the pub
7217    14:00...... ------------------
7218    16:00...... ------------------
7219    18:00...... ------------------
7220    19:00...... The Vogon reads his poem
7221    20:00...... ------------------
7222    20:30-22:15 Marvin escorts the Hitchhikers to the bridge
7223 @end example
7225 @vindex org-agenda-use-time-grid
7226 @vindex org-agenda-time-grid
7227 The time grid can be turned on and off with the variable
7228 @code{org-agenda-use-time-grid}, and can be configured with
7229 @code{org-agenda-time-grid}.
7231 @node Sorting of agenda items,  , Time-of-day specifications, Presentation and sorting
7232 @subsection Sorting of agenda items
7233 @cindex sorting, of agenda items
7234 @cindex priorities, of agenda items
7235 Before being inserted into a view, the items are sorted.  How this is
7236 done depends on the type of view.
7237 @itemize @bullet
7238 @item
7239 @vindex org-agenda-files
7240 For the daily/weekly agenda, the items for each day are sorted.  The
7241 default order is to first collect all items containing an explicit
7242 time-of-day specification.  These entries will be shown at the beginning
7243 of the list, as a @emph{schedule} for the day.  After that, items remain
7244 grouped in categories, in the sequence given by @code{org-agenda-files}.
7245 Within each category, items are sorted by priority (@pxref{Priorities}),
7246 which is composed of the base priority (2000 for priority @samp{A}, 1000
7247 for @samp{B}, and 0 for @samp{C}), plus additional increments for
7248 overdue scheduled or deadline items.
7249 @item
7250 For the TODO list, items remain in the order of categories, but within
7251 each category, sorting takes place according to priority
7252 (@pxref{Priorities}).  The priority used for sorting derives from the
7253 priority cookie, with additions depending on how close an item is to its due
7254 or scheduled date.
7255 @item
7256 For tags matches, items are not sorted at all, but just appear in the
7257 sequence in which they are found in the agenda files.
7258 @end itemize
7260 @vindex org-agenda-sorting-strategy
7261 Sorting can be customized using the variable
7262 @code{org-agenda-sorting-strategy}, and may also include criteria based on
7263 the estimated effort of an entry (@pxref{Effort estimates}).
7265 @node Agenda commands, Custom agenda views, Presentation and sorting, Agenda Views
7266 @section Commands in the agenda buffer
7267 @cindex commands, in agenda buffer
7269 Entries in the agenda buffer are linked back to the Org file or diary
7270 file where they originate.  You are not allowed to edit the agenda
7271 buffer itself, but commands are provided to show and jump to the
7272 original entry location, and to edit the Org files ``remotely'' from
7273 the agenda buffer.  In this way, all information is stored only once,
7274 removing the risk that your agenda and note files may diverge.
7276 Some commands can be executed with mouse clicks on agenda lines.  For
7277 the other commands, the cursor needs to be in the desired line.
7279 @table @kbd
7280 @tsubheading{Motion}
7281 @cindex motion commands in agenda
7282 @kindex n
7283 @item n
7284 Next line (same as @key{up} and @kbd{C-p}).
7285 @kindex p
7286 @item p
7287 Previous line (same as @key{down} and @kbd{C-n}).
7288 @tsubheading{View/Go to Org file}
7289 @kindex mouse-3
7290 @kindex @key{SPC}
7291 @item mouse-3
7292 @itemx @key{SPC}
7293 Display the original location of the item in another window.
7294 With prefix arg, make sure that the entire entry is made visible in the
7295 outline, not only the heading.
7297 @kindex L
7298 @item L
7299 Display original location and recenter that window.
7301 @kindex mouse-2
7302 @kindex mouse-1
7303 @kindex @key{TAB}
7304 @item mouse-2
7305 @itemx mouse-1
7306 @itemx @key{TAB}
7307 Go to the original location of the item in another window.  Under Emacs
7308 22, @kbd{mouse-1} will also works for this.
7310 @kindex @key{RET}
7311 @itemx @key{RET}
7312 Go to the original location of the item and delete other windows.
7314 @kindex F
7315 @item F
7316 @vindex org-agenda-start-with-follow-mode
7317 Toggle Follow mode.  In Follow mode, as you move the cursor through
7318 the agenda buffer, the other window always shows the corresponding
7319 location in the Org file.  The initial setting for this mode in new
7320 agenda buffers can be set with the variable
7321 @code{org-agenda-start-with-follow-mode}.
7323 @kindex C-c C-x b
7324 @item C-c C-x b
7325 Display the entire subtree of the current item in an indirect buffer.  With a
7326 numeric prefix argument N, go up to level N and then take that tree.  If N is
7327 negative, go up that many levels.  With a @kbd{C-u} prefix, do not remove the
7328 previously used indirect buffer.
7330 @kindex C-c C-o
7331 @item C-c C-o
7332 Follow a link in the entry.  This will offer a selection of any links in the
7333 text belonging to the referenced Org node.  If there is only one link, it
7334 will be followed without a selection prompt.
7336 @tsubheading{Change display}
7337 @cindex display changing, in agenda
7338 @kindex o
7339 @item o
7340 Delete other windows.
7342 @kindex v d
7343 @kindex d
7344 @kindex v w
7345 @kindex w
7346 @kindex v m
7347 @kindex v y
7348 @item v d @ @r{or short} @ d
7349 @itemx v w @ @r{or short} @ w
7350 @itemx v m
7351 @itemx v y
7352 Switch to day/week/month/year view.  When switching to day or week view,
7353 this setting becomes the default for subsequent agenda commands.  Since
7354 month and year views are slow to create, they do not become the default.
7355 A numeric prefix argument may be used to jump directly to a specific day
7356 of the year, ISO week, month, or year, respectively.  For example,
7357 @kbd{32 d} jumps to February 1st, @kbd{9 w} to ISO week number 9.  When
7358 setting day, week, or month view, a year may be encoded in the prefix
7359 argument as well.  For example, @kbd{200712 w} will jump to week 12 in
7360 2007.  If such a year specification has only one or two digits, it will
7361 be mapped to the interval 1938-2037.
7363 @kindex f
7364 @item f
7365 @vindex org-agenda-ndays
7366 Go forward in time to display the following @code{org-agenda-ndays} days.
7367 For example, if the display covers a week, switch to the following week.
7368 With prefix arg, go forward that many times @code{org-agenda-ndays} days.
7370 @kindex b
7371 @item b
7372 Go backward in time to display earlier dates.
7374 @kindex .
7375 @item .
7376 Go to today.
7378 @kindex j
7379 @item j
7380 Prompt for a date and go there.
7382 @kindex D
7383 @item D
7384 Toggle the inclusion of diary entries.  See @ref{Weekly/daily agenda}.
7386 @kindex v l
7387 @kindex v L
7388 @kindex l
7389 @item v l @ @r{or short} @ l
7390 @vindex org-log-done
7391 @vindex org-agenda-log-mode-items
7392 Toggle Logbook mode.  In Logbook mode, entries that were marked DONE while
7393 logging was on (variable @code{org-log-done}) are shown in the agenda, as are
7394 entries that have been clocked on that day.  You can configure the entry
7395 types that should be included in log mode using the variable
7396 @code{org-agenda-log-mode-items}.  When called with a @kbd{C-u} prefix, show
7397 all possible logbook entries, including state changes.  When called with two
7398 prefix args @kbd{C-u C-u}, show only logging information, nothing else.
7399 @kbd{v L} is equivalent to @kbd{C-u v l}.
7401 @kindex v [
7402 @kindex [
7403 @item v [ @ @r{or short} @ [
7404 Include inactive timestamps into the current view.  Only for weekly/daily
7405 agenda and timeline views.
7407 @kindex v a
7408 @kindex v A
7409 @item v a
7410 @itemx v A
7411 Toggle Archives mode.  In Archives mode, trees that are marked
7412 @code{ARCHIVED} are also scanned when producing the agenda.  When you use the
7413 capital @kbd{A}, even all archive files are included.  To exit archives mode,
7414 press @kbd{v a} again.
7416 @kindex v R
7417 @kindex R
7418 @item v R @ @r{or short} @ R
7419 @vindex org-agenda-start-with-clockreport-mode
7420 Toggle Clockreport mode.  In Clockreport mode, the daily/weekly agenda will
7421 always show a table with the clocked times for the timespan and file scope
7422 covered by the current agenda view.  The initial setting for this mode in new
7423 agenda buffers can be set with the variable
7424 @code{org-agenda-start-with-clockreport-mode}.
7426 @kindex v E
7427 @kindex E
7428 @item v E @ @r{or short} @ E
7429 @vindex org-agenda-start-with-entry-text-mode
7430 @vindex org-agenda-entry-text-maxlines
7431 Toggle entry text mode.  In entry text mode, a number of lines from the Org
7432 outline node referenced by an agenda line will be displayed below the line.
7433 The maximum number of lines is given by the variable
7434 @code{org-agenda-entry-text-maxlines}.  Calling this command with a numeric
7435 prefix argument will temporarily modify that number to the prefix value.
7437 @kindex G
7438 @item G
7439 @vindex org-agenda-use-time-grid
7440 @vindex org-agenda-time-grid
7441 Toggle the time grid on and off.  See also the variables
7442 @code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
7444 @kindex r
7445 @item r
7446 Recreate the agenda buffer, for example to reflect the changes after
7447 modification of the timestamps of items with @kbd{S-@key{left}} and
7448 @kbd{S-@key{right}}.  When the buffer is the global TODO list, a prefix
7449 argument is interpreted to create a selective list for a specific TODO
7450 keyword.
7451 @kindex g
7452 @item g
7453 Same as @kbd{r}.
7455 @kindex s
7456 @kindex C-x C-s
7457 @item s
7458 @itemx C-x C-s
7459 Save all Org buffers in the current Emacs session, and also the locations of
7460 IDs.
7462 @kindex C-c C-x C-c
7463 @item C-c C-x C-c
7464 @vindex org-columns-default-format
7465 Invoke column view (@pxref{Column view}) in the agenda buffer.  The column
7466 view format is taken from the entry at point, or (if there is no entry at
7467 point), from the first entry in the agenda view.  So whatever the format for
7468 that entry would be in the original buffer (taken from a property, from a
7469 @code{#+COLUMNS} line, or from the default variable
7470 @code{org-columns-default-format}), will be used in the agenda.
7472 @kindex C-c C-x >
7473 @item C-c C-x >
7474 Remove the restriction lock on the agenda, if it is currently restricted to a
7475 file or subtree (@pxref{Agenda files}).
7477 @tsubheading{Secondary filtering and query editing}
7478 @cindex filtering, by tag and effort, in agenda
7479 @cindex tag filtering, in agenda
7480 @cindex effort filtering, in agenda
7481 @cindex query editing, in agenda
7483 @kindex /
7484 @item /
7485 @vindex org-agenda-filter-preset
7486 Filter the current agenda view with respect to a tag and/or effort estimates.
7487 The difference between this and a custom agenda command is that filtering is
7488 very fast, so that you can switch quickly between different filters without
7489 having to recreate the agenda@footnote{Custom commands can preset a filter by
7490 binding the variable @code{org-agenda-filter-preset} as an option.  This
7491 filter will then be applied to the view and persist as a basic filter through
7492 refreshes and more secondary filtering.}
7494 You will be prompted for a tag selection letter, SPC will mean any tag at
7495 all.  Pressing @key{TAB} at that prompt will offer use completion to select a
7496 tag (including any tags that do not have a selection character).  The command
7497 then hides all entries that do not contain or inherit this tag.  When called
7498 with prefix arg, remove the entries that @emph{do} have the tag.  A second
7499 @kbd{/} at the prompt will turn off the filter and unhide any hidden entries.
7500 If the first key you press is either @kbd{+} or @kbd{-}, the previous filter
7501 will be narrowed by requiring or forbidding the selected additional tag.
7502 Instead of pressing @kbd{+} or @kbd{-} after @kbd{/}, you can also
7503 immediately use the @kbd{\} command.
7505 @vindex org-sort-agenda-noeffort-is-high
7506 In order to filter for effort estimates, you should set-up allowed
7507 efforts globally, for example
7508 @lisp
7509 (setq org-global-properties
7510     '(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00")))
7511 @end lisp
7512 You can then filter for an effort by first typing an operator, one of
7513 @kbd{<}, @kbd{>}, and @kbd{=}, and then the one-digit index of an effort
7514 estimate in your array of allowed values, where @kbd{0} means the 10th value.
7515 The filter will then restrict to entries with effort smaller-or-equal, equal,
7516 or larger-or-equal than the selected value.  If the digits 0-9 are not used
7517 as fast access keys to tags, you can also simply press the index digit
7518 directly without an operator.  In this case, @kbd{<} will be assumed.  For
7519 application of the operator, entries without a defined effort will be treated
7520 according to the value of @code{org-sort-agenda-noeffort-is-high}.  To filter
7521 for tasks without effort definition, press @kbd{?} as the operator.
7523 Org also supports automatic, context-aware tag filtering.  If the variable
7524 @code{org-agenda-auto-exclude-function} is set to a user-defined function,
7525 that function can decide which tags should be excluded from the agenda
7526 automatically.  Once this is set, the @kbd{/} command then accepts @kbd{RET}
7527 as a sub-option key and runs the auto exclusion logic.  For example, let's
7528 say you use a @code{Net} tag to identify tasks which need network access, an
7529 @code{Errand} tag for errands in town, and a @code{Call} tag for making phone
7530 calls.  You could auto-exclude these tags based on the availability of the
7531 Internet, and outside of business hours, with something like this:
7533 @lisp
7534 @group
7535 (defun org-my-auto-exclude-function (tag)
7536   (and (cond
7537         ((string= tag "Net")
7538          (/= 0 (call-process "/sbin/ping" nil nil nil
7539                              "-c1" "-q" "-t1" "mail.gnu.org")))
7540         ((or (string= tag "Errand") (string= tag "Call"))
7541          (let ((hour (nth 2 (decode-time))))
7542            (or (< hour 8) (> hour 21)))))
7543        (concat "-" tag)))
7545 (setq org-agenda-auto-exclude-function 'org-my-auto-exclude-function)
7546 @end group
7547 @end lisp
7549 @kindex \
7550 @item \
7551 Narrow the current agenda filter by an additional condition.  When called with
7552 prefix arg, remove the entries that @emph{do} have the tag, or that do match
7553 the effort criterion.  You can achieve the same effect by pressing @kbd{+} or
7554 @kbd{-} as the first key after the @kbd{/} command.
7556 @kindex [
7557 @kindex ]
7558 @kindex @{
7559 @kindex @}
7560 @item [ ] @{ @}
7561 @table @i
7562 @item @r{in} search view
7563 add new search words (@kbd{[} and @kbd{]}) or new regular expressions
7564 (@kbd{@{} and @kbd{@}}) to the query string.  The opening bracket/brace will
7565 add a positive search term prefixed by @samp{+}, indicating that this search
7566 term @i{must} occur/match in the entry.  The closing bracket/brace will add a
7567 negative search term which @i{must not} occur/match in the entry for it to be
7568 selected.
7569 @end table
7571 @page
7572 @tsubheading{Remote editing}
7573 @cindex remote editing, from agenda
7575 @item 0-9
7576 Digit argument.
7578 @cindex undoing remote-editing events
7579 @cindex remote editing, undo
7580 @kindex C-_
7581 @item C-_
7582 Undo a change due to a remote editing command.  The change is undone
7583 both in the agenda buffer and in the remote buffer.
7585 @kindex t
7586 @item t
7587 Change the TODO state of the item, both in the agenda and in the
7588 original org file.
7590 @kindex C-S-@key{right}
7591 @kindex C-S-@key{left}
7592 @item C-S-@key{right}@r{/}@key{left}
7593 Switch to the next/previous set of TODO keywords.
7595 @kindex C-k
7596 @item C-k
7597 @vindex org-agenda-confirm-kill
7598 Delete the current agenda item along with the entire subtree belonging
7599 to it in the original Org file.  If the text to be deleted remotely
7600 is longer than one line, the kill needs to be confirmed by the user.  See
7601 variable @code{org-agenda-confirm-kill}.
7603 @kindex C-c C-w
7604 @item C-c C-w
7605 Refile the entry at point.
7607 @kindex C-c C-x C-a
7608 @kindex a
7609 @item C-c C-x C-a @ @r{or short} @ a
7610 @vindex org-archive-default-command
7611 Archive the subtree corresponding to the entry at point using the default
7612 archiving command set in @code{org-archive-default-command}.  When using the
7613 @code{a} key, confirmation will be required.
7615 @kindex C-c C-x a
7616 @item C-c C-x a
7617 Toggle the ARCHIVE tag for the current headline.
7619 @kindex C-c C-x A
7620 @item C-c C-x A
7621 Move the subtree corresponding to the current entry to its @emph{archive
7622 sibling}.
7624 @kindex $
7625 @kindex C-c C-x C-s
7626 @item C-c C-x C-s @ @r{or short} @ $
7627 Archive the subtree corresponding to the current headline.  This means the
7628 entry will be moved to the configured archive location, most likely a
7629 different file.
7631 @kindex T
7632 @item T
7633 @vindex org-agenda-show-inherited-tags
7634 Show all tags associated with the current item.  This is useful if you have
7635 turned off @code{org-agenda-show-inherited-tags}, but still want to see all
7636 tags of a headline occasionally.
7638 @kindex :
7639 @item :
7640 Set tags for the current headline.  If there is an active region in the
7641 agenda, change a tag for all headings in the region.
7643 @kindex ,
7644 @item ,
7645 Set the priority for the current item.  Org mode prompts for the
7646 priority character. If you reply with @key{SPC}, the priority cookie
7647 is removed from the entry.
7649 @kindex P
7650 @item P
7651 Display weighted priority of current item.
7653 @kindex +
7654 @kindex S-@key{up}
7655 @item +
7656 @itemx S-@key{up}
7657 Increase the priority of the current item.  The priority is changed in
7658 the original buffer, but the agenda is not resorted.  Use the @kbd{r}
7659 key for this.
7661 @kindex -
7662 @kindex S-@key{down}
7663 @item -
7664 @itemx S-@key{down}
7665 Decrease the priority of the current item.
7667 @kindex C-c C-z
7668 @kindex z
7669 @item z @ @r{or also} @ C-c C-z
7670 @vindex org-log-into-drawer
7671 Add a note to the entry.  This note will be recorded, and then files to the
7672 same location where state change notes are put.  Depending on
7673 @code{org-log-into-drawer}, this maybe inside a drawer.
7675 @kindex C-c C-a
7676 @item C-c C-a
7677 Dispatcher for all command related to attachments.
7679 @kindex C-c C-s
7680 @item C-c C-s
7681 Schedule this item, with prefix arg remove the scheduling timestamp
7683 @kindex C-c C-d
7684 @item C-c C-d
7685 Set a deadline for this item, with prefix arg remove the deadline.
7687 @kindex k
7688 @item k
7689 Agenda actions, to set dates for selected items to the cursor date.
7690 This command also works in the calendar!  The command prompts for an
7691 additional key:
7692 @example
7693 m   @r{Mark the entry at point for action.  You can also make entries}
7694     @r{in Org files with @kbd{C-c C-x C-k}.}
7695 d   @r{Set the deadline of the marked entry to the date at point.}
7696 s   @r{Schedule the marked entry at the date at point.}
7697 r   @r{Call @code{org-remember} with the cursor date as default date.}
7698 @end example
7699 @noindent
7700 Press @kbd{r} afterward to refresh the agenda and see the effect of the
7701 command.
7703 @kindex S-@key{right}
7704 @item S-@key{right}
7705 Change the timestamp associated with the current line by one day into the
7706 future.  With a numeric prefix argument, change it by that many days.  For
7707 example, @kbd{3 6 5 S-@key{right}} will change it by a year.  With a
7708 @kbd{C-u} prefix, change the time by one hour.  If you immediately repeat the
7709 command, it will continue to change hours even without the prefix arg.  With
7710 a double @kbd{C-u C-u} prefix, do the same for changing minutes.  The stamp
7711 is changed in the original Org file, but the change is not directly reflected
7712 in the agenda buffer.  Use @kbd{r} or @kbd{g} to update the buffer.
7714 @kindex S-@key{left}
7715 @item S-@key{left}
7716 Change the timestamp associated with the current line by one day
7717 into the past.
7719 @kindex >
7720 @item >
7721 Change the timestamp associated with the current line.  The key @kbd{>} has
7722 been chosen, because it is the same as @kbd{S-.}  on my keyboard.
7724 @kindex I
7725 @item I
7726 Start the clock on the current item.  If a clock is running already, it
7727 is stopped first.
7729 @kindex O
7730 @item O
7731 Stop the previously started clock.
7733 @kindex X
7734 @item X
7735 Cancel the currently running clock.
7737 @kindex J
7738 @item J
7739 Jump to the running clock in another window.
7741 @tsubheading{Bulk remote editing selected entries}
7742 @cindex remote editing, bulk, from agenda
7744 @kindex m
7745 @item m
7746 Mark the entry at point for bulk action.
7748 @kindex u
7749 @item u
7750 Unmark entry for bulk action.
7752 @kindex U
7753 @item U
7754 Unmark all marked entries for bulk action.
7756 @kindex B
7757 @item B
7758 Bulk action: act on all marked entries in the agenda.  This will prompt for
7759 another key to select the action to be applied.  The prefix arg to @kbd{B}
7760 will be passed through to the @kbd{s} and @kbd{d} commands, to bulk-remove
7761 these special timestamps.
7762 @example
7763 r  @r{Prompt for a single refile target and move all entries.  The entries}
7764    @r{will no longer be in the agenda, refresh (@kbd{g}) to bring them back.}
7765 $  @r{Archive all selected entries.}
7766 A  @r{Archive entries by moving them to their respective archive siblings.}
7767 t  @r{Change TODO state.  This prompts for a single TODO keyword and}
7768    @r{changes the state of all selected entries, bypassing blocking and}
7769    @r{suppressing logging notes (but not time stamps).}
7770 +  @r{Add a tag to all selected entries.}
7771 -  @r{Remove a tag from all selected entries.}
7772 s  @r{Schedule all items to a new date.  To shift existing schedule dates}
7773    @r{by a fixed number of days, use something starting with double plus}
7774    @r{at the prompt, for example @samp{++8d} or @samp{++2w}.}
7775 d  @r{Set deadline to a specific date.}
7776 @end example
7779 @tsubheading{Calendar commands}
7780 @cindex calendar commands, from agenda
7781 @kindex c
7782 @item c
7783 Open the Emacs calendar and move to the date at the agenda cursor.
7785 @item c
7786 When in the calendar, compute and show the Org mode agenda for the
7787 date at the cursor.
7789 @cindex diary entries, creating from agenda
7790 @kindex i
7791 @item i
7792 @vindex org-agenda-diary-file
7793 Insert a new entry into the diary, using the date at the cursor and (for
7794 block entries) the date at the mark.  This will add to the Emacs diary
7795 file@footnote{This file is parsed for the agenda when
7796 @code{org-agenda-include-diary} is set.}, in a way similar to the @kbd{i}
7797 command in the calendar.  The diary file will pop up in another window, where
7798 you can add the entry.
7800 If you configure @code{org-agenda-diary-file} to point to an Org-mode file,
7801 Org will create entries (in org-mode syntax) in that file instead.  Most
7802 entries will be stored in a date-based outline tree that will later make it
7803 easy to archive appointments from previous months/years.  The tree will be
7804 built under an entry with a @code{DATE_TREE} property, or else with years as
7805 top-level entries.  Emacs will prompt you for the entry text - if you specify
7806 it, the entry will be created in @code{org-agenda-diary-file} without further
7807 interaction.  If you directly press @key{RET} at the prompt without typing
7808 text, the target file will be shown in another window for you to finish the
7809 entry there.  See also the @kbd{k r} command.
7811 @kindex M
7812 @item M
7813 Show the phases of the moon for the three months around current date.
7815 @kindex S
7816 @item S
7817 Show sunrise and sunset times.  The geographical location must be set
7818 with calendar variables, see the documentation for the Emacs calendar.
7820 @kindex C
7821 @item C
7822 Convert the date at cursor into many other cultural and historic
7823 calendars.
7825 @kindex H
7826 @item H
7827 Show holidays for three months around the cursor date.
7829 @item M-x org-export-icalendar-combine-agenda-files
7830 Export a single iCalendar file containing entries from all agenda files.
7831 This is a globally available command, and also available in the agenda menu.
7833 @tsubheading{Exporting to a file}
7834 @kindex C-x C-w
7835 @item C-x C-w
7836 @cindex exporting agenda views
7837 @cindex agenda views, exporting
7838 @vindex org-agenda-exporter-settings
7839 Write the agenda view to a file.  Depending on the extension of the selected
7840 file name, the view will be exported as HTML (extension @file{.html} or
7841 @file{.htm}), Postscript (extension @file{.ps}), PDF (extension @file{.pdf}),
7842 and plain text (any other extension).  When called with a @kbd{C-u} prefix
7843 argument, immediately open the newly created file.  Use the variable
7844 @code{org-agenda-exporter-settings} to set options for @file{ps-print} and
7845 for @file{htmlize} to be used during export.
7847 @tsubheading{Quit and Exit}
7848 @kindex q
7849 @item q
7850 Quit agenda, remove the agenda buffer.
7852 @kindex x
7853 @cindex agenda files, removing buffers
7854 @item x
7855 Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
7856 for the compilation of the agenda.  Buffers created by the user to
7857 visit Org files will not be removed.
7858 @end table
7861 @node Custom agenda views, Exporting Agenda Views, Agenda commands, Agenda Views
7862 @section Custom agenda views
7863 @cindex custom agenda views
7864 @cindex agenda views, custom
7866 Custom agenda commands serve two purposes: to store and quickly access
7867 frequently used TODO and tags searches, and to create special composite
7868 agenda buffers.  Custom agenda commands will be accessible through the
7869 dispatcher (@pxref{Agenda dispatcher}), just like the default commands.
7871 @menu
7872 * Storing searches::            Type once, use often
7873 * Block agenda::                All the stuff you need in a single buffer
7874 * Setting Options::             Changing the rules
7875 @end menu
7877 @node Storing searches, Block agenda, Custom agenda views, Custom agenda views
7878 @subsection Storing searches
7880 The first application of custom searches is the definition of keyboard
7881 shortcuts for frequently used searches, either creating an agenda
7882 buffer, or a sparse tree (the latter covering of course only the current
7883 buffer).
7884 @kindex C-c a C
7885 @vindex org-agenda-custom-commands
7886 Custom commands are configured in the variable
7887 @code{org-agenda-custom-commands}.  You can customize this variable, for
7888 example by pressing @kbd{C-c a C}.  You can also directly set it with
7889 Emacs Lisp in @file{.emacs}.  The following example contains all valid
7890 search types:
7892 @lisp
7893 @group
7894 (setq org-agenda-custom-commands
7895       '(("w" todo "WAITING")
7896         ("W" todo-tree "WAITING")
7897         ("u" tags "+boss-urgent")
7898         ("v" tags-todo "+boss-urgent")
7899         ("U" tags-tree "+boss-urgent")
7900         ("f" occur-tree "\\<FIXME\\>")
7901         ("h" . "HOME+Name tags searches") ; description for "h" prefix
7902         ("hl" tags "+home+Lisa")
7903         ("hp" tags "+home+Peter")
7904         ("hk" tags "+home+Kim")))
7905 @end group
7906 @end lisp
7908 @noindent
7909 The initial string in each entry defines the keys you have to press
7910 after the dispatcher command @kbd{C-c a} in order to access the command.
7911 Usually this will be just a single character, but if you have many
7912 similar commands, you can also define two-letter combinations where the
7913 first character is the same in several combinations and serves as a
7914 prefix key@footnote{You can provide a description for a prefix key by
7915 inserting a cons cell with the prefix and the description.}.  The second
7916 parameter is the search type, followed by the string or regular
7917 expression to be used for the matching.  The example above will
7918 therefore define:
7920 @table @kbd
7921 @item C-c a w
7922 as a global search for TODO entries with @samp{WAITING} as the TODO
7923 keyword
7924 @item C-c a W
7925 as the same search, but only in the current buffer and displaying the
7926 results as a sparse tree
7927 @item C-c a u
7928 as a global tags search for headlines marked @samp{:boss:} but not
7929 @samp{:urgent:}
7930 @item C-c a v
7931 as the same search as @kbd{C-c a u}, but limiting the search to
7932 headlines that are also TODO items
7933 @item C-c a U
7934 as the same search as @kbd{C-c a u}, but only in the current buffer and
7935 displaying the result as a sparse tree
7936 @item C-c a f
7937 to create a sparse tree (again: current buffer only) with all entries
7938 containing the word @samp{FIXME}
7939 @item C-c a h
7940 as a prefix command for a HOME tags search where you have to press an
7941 additional key (@kbd{l}, @kbd{p} or @kbd{k}) to select a name (Lisa,
7942 Peter, or Kim) as additional tag to match.
7943 @end table
7945 @node Block agenda, Setting Options, Storing searches, Custom agenda views
7946 @subsection Block agenda
7947 @cindex block agenda
7948 @cindex agenda, with block views
7950 Another possibility is the construction of agenda views that comprise
7951 the results of @emph{several} commands, each of which creates a block in
7952 the agenda buffer.  The available commands include @code{agenda} for the
7953 daily or weekly agenda (as created with @kbd{C-c a a}), @code{alltodo}
7954 for the global TODO list (as constructed with @kbd{C-c a t}), and the
7955 matching commands discussed above: @code{todo}, @code{tags}, and
7956 @code{tags-todo}.  Here are two examples:
7958 @lisp
7959 @group
7960 (setq org-agenda-custom-commands
7961       '(("h" "Agenda and Home-related tasks"
7962          ((agenda "")
7963           (tags-todo "home")
7964           (tags "garden")))
7965         ("o" "Agenda and Office-related tasks"
7966          ((agenda "")
7967           (tags-todo "work")
7968           (tags "office")))))
7969 @end group
7970 @end lisp
7972 @noindent
7973 This will define @kbd{C-c a h} to create a multi-block view for stuff
7974 you need to attend to at home.  The resulting agenda buffer will contain
7975 your agenda for the current week, all TODO items that carry the tag
7976 @samp{home}, and also all lines tagged with @samp{garden}.  Finally the
7977 command @kbd{C-c a o} provides a similar view for office tasks.
7979 @node Setting Options,  , Block agenda, Custom agenda views
7980 @subsection Setting options for custom commands
7981 @cindex options, for custom agenda views
7983 @vindex org-agenda-custom-commands
7984 Org mode contains a number of variables regulating agenda construction
7985 and display.  The global variables define the behavior for all agenda
7986 commands, including the custom commands.  However, if you want to change
7987 some settings just for a single custom view, you can do so.  Setting
7988 options requires inserting a list of variable names and values at the
7989 right spot in @code{org-agenda-custom-commands}.  For example:
7991 @lisp
7992 @group
7993 (setq org-agenda-custom-commands
7994       '(("w" todo "WAITING"
7995          ((org-agenda-sorting-strategy '(priority-down))
7996           (org-agenda-prefix-format "  Mixed: ")))
7997         ("U" tags-tree "+boss-urgent"
7998          ((org-show-following-heading nil)
7999           (org-show-hierarchy-above nil)))
8000         ("N" search ""
8001          ((org-agenda-files '("~org/notes.org"))
8002           (org-agenda-text-search-extra-files nil)))))
8003 @end group
8004 @end lisp
8006 @noindent
8007 Now the @kbd{C-c a w} command will sort the collected entries only by
8008 priority, and the prefix format is modified to just say @samp{  Mixed: }
8009 instead of giving the category of the entry.  The sparse tags tree of
8010 @kbd{C-c a U} will now turn out ultra-compact, because neither the
8011 headline hierarchy above the match, nor the headline following the match
8012 will be shown.  The command @kbd{C-c a N} will do a text search limited
8013 to only a single file.
8015 @vindex org-agenda-custom-commands
8016 For command sets creating a block agenda,
8017 @code{org-agenda-custom-commands} has two separate spots for setting
8018 options.  You can add options that should be valid for just a single
8019 command in the set, and options that should be valid for all commands in
8020 the set.  The former are just added to the command entry, the latter
8021 must come after the list of command entries.  Going back to the block
8022 agenda example (@pxref{Block agenda}), let's change the sorting strategy
8023 for the @kbd{C-c a h} commands to @code{priority-down}, but let's sort
8024 the results for GARDEN tags query in the opposite order,
8025 @code{priority-up}.  This would look like this:
8027 @lisp
8028 @group
8029 (setq org-agenda-custom-commands
8030       '(("h" "Agenda and Home-related tasks"
8031          ((agenda)
8032           (tags-todo "home")
8033           (tags "garden"
8034                 ((org-agenda-sorting-strategy '(priority-up)))))
8035          ((org-agenda-sorting-strategy '(priority-down))))
8036         ("o" "Agenda and Office-related tasks"
8037          ((agenda)
8038           (tags-todo "work")
8039           (tags "office")))))
8040 @end group
8041 @end lisp
8043 As you see, the values and parentheses setting is a little complex.
8044 When in doubt, use the customize interface to set this variable---it
8045 fully supports its structure.  Just one caveat: when setting options in
8046 this interface, the @emph{values} are just Lisp expressions.  So if the
8047 value is a string, you need to add the double-quotes around the value
8048 yourself.
8051 @node Exporting Agenda Views, Agenda column view, Custom agenda views, Agenda Views
8052 @section Exporting Agenda Views
8053 @cindex agenda views, exporting
8055 If you are away from your computer, it can be very useful to have a printed
8056 version of some agenda views to carry around.  Org mode can export custom
8057 agenda views as plain text, HTML@footnote{You need to install Hrvoje Niksic's
8058 @file{htmlize.el}.}, Postscript, PDF@footnote{To create PDF output, the
8059 ghostscript @file{ps2pdf} utility must be installed on the system.  Selecting
8060 a PDF file with also create the postscript file.}, and iCalendar files.  If
8061 you want to do this only occasionally, use the command
8063 @table @kbd
8064 @kindex C-x C-w
8065 @item C-x C-w
8066 @cindex exporting agenda views
8067 @cindex agenda views, exporting
8068 @vindex org-agenda-exporter-settings
8069 Write the agenda view to a file.  Depending on the extension of the selected
8070 file name, the view will be exported as HTML (extension @file{.html} or
8071 @file{.htm}), Postscript (extension @file{.ps}), iCalendar (extension
8072 @file{.ics}), or plain text (any other extension).  Use the variable
8073 @code{org-agenda-exporter-settings} to set options for @file{ps-print} and
8074 for @file{htmlize} to be used during export, for example
8076 @vindex org-agenda-add-entry-text-maxlines
8077 @vindex htmlize-output-type
8078 @vindex ps-number-of-columns
8079 @vindex ps-landscape-mode
8080 @lisp
8081 (setq org-agenda-exporter-settings
8082       '((ps-number-of-columns 2)
8083         (ps-landscape-mode t)
8084         (org-agenda-add-entry-text-maxlines 5)
8085         (htmlize-output-type 'css)))
8086 @end lisp
8087 @end table
8089 If you need to export certain agenda views frequently, you can associate
8090 any custom agenda command with a list of output file names
8091 @footnote{If you want to store standard views like the weekly agenda
8092 or the global TODO list as well, you need to define custom commands for
8093 them in order to be able to specify file names.}.  Here is an example
8094 that first defines custom commands for the agenda and the global
8095 TODO list, together with a number of files to which to export them.
8096 Then we define two block agenda commands and specify file names for them
8097 as well.  File names can be relative to the current working directory,
8098 or absolute.
8100 @lisp
8101 @group
8102 (setq org-agenda-custom-commands
8103       '(("X" agenda "" nil ("agenda.html" "agenda.ps"))
8104         ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
8105         ("h" "Agenda and Home-related tasks"
8106          ((agenda "")
8107           (tags-todo "home")
8108           (tags "garden"))
8109          nil
8110          ("~/views/home.html"))
8111         ("o" "Agenda and Office-related tasks"
8112          ((agenda)
8113           (tags-todo "work")
8114           (tags "office"))
8115          nil
8116          ("~/views/office.ps" "~/calendars/office.ics"))))
8117 @end group
8118 @end lisp
8120 The extension of the file name determines the type of export.  If it is
8121 @file{.html}, Org mode will use the @file{htmlize.el} package to convert
8122 the buffer to HTML and save it to this file name.  If the extension is
8123 @file{.ps}, @code{ps-print-buffer-with-faces} is used to produce
8124 Postscript output.  If the extension is @file{.ics}, iCalendar export is
8125 run export over all files that were used to construct the agenda, and
8126 limit the export to entries listed in the agenda.  Any other
8127 extension produces a plain ASCII file.
8129 The export files are @emph{not} created when you use one of those
8130 commands interactively because this might use too much overhead.
8131 Instead, there is a special command to produce @emph{all} specified
8132 files in one step:
8134 @table @kbd
8135 @kindex C-c a e
8136 @item C-c a e
8137 Export all agenda views that have export file names associated with
8138 them.
8139 @end table
8141 You can use the options section of the custom agenda commands to also
8142 set options for the export commands.  For example:
8144 @lisp
8145 (setq org-agenda-custom-commands
8146       '(("X" agenda ""
8147          ((ps-number-of-columns 2)
8148           (ps-landscape-mode t)
8149           (org-agenda-prefix-format " [ ] ")
8150           (org-agenda-with-colors nil)
8151           (org-agenda-remove-tags t))
8152          ("theagenda.ps"))))
8153 @end lisp
8155 @noindent
8156 This command sets two options for the Postscript exporter, to make it
8157 print in two columns in landscape format---the resulting page can be cut
8158 in two and then used in a paper agenda.  The remaining settings modify
8159 the agenda prefix to omit category and scheduling information, and
8160 instead include a checkbox to check off items.  We also remove the tags
8161 to make the lines compact, and we don't want to use colors for the
8162 black-and-white printer.  Settings specified in
8163 @code{org-agenda-exporter-settings} will also apply, but the settings
8164 in @code{org-agenda-custom-commands} take precedence.
8166 @noindent
8167 From the command line you may also use
8168 @example
8169 emacs -f org-batch-store-agenda-views -kill
8170 @end example
8171 @noindent
8172 or, if you need to modify some parameters@footnote{Quoting depends on the
8173 system you use, please check the FAQ for examples.}
8174 @example
8175 emacs -eval '(org-batch-store-agenda-views                      \
8176               org-agenda-ndays 30                               \
8177               org-agenda-start-day "2007-11-01"                 \
8178               org-agenda-include-diary nil                      \
8179               org-agenda-files (quote ("~/org/project.org")))'  \
8180       -kill
8181 @end example
8182 @noindent
8183 which will create the agenda views restricted to the file
8184 @file{~/org/project.org}, without diary entries and with a 30-day
8185 extent.
8187 You can also extract agenda information in a way that allows further
8188 processing by other programs.  See @ref{Extracting agenda information}, for
8189 more information.
8192 @node Agenda column view,  , Exporting Agenda Views, Agenda Views
8193 @section Using column view in the agenda
8194 @cindex column view, in agenda
8195 @cindex agenda, column view
8197 Column view (@pxref{Column view}) is normally used to view and edit
8198 properties embedded in the hierarchical structure of an Org file.  It can be
8199 quite useful to use column view also from the agenda, where entries are
8200 collected by certain criteria.
8202 @table @kbd
8203 @kindex C-c C-x C-c
8204 @item C-c C-x C-c
8205 Turn on column view in the agenda.
8206 @end table
8208 To understand how to use this properly, it is important to realize that the
8209 entries in the agenda are no longer in their proper outline environment.
8210 This causes the following issues:
8212 @enumerate
8213 @item
8214 @vindex org-columns-default-format
8215 @vindex org-overriding-columns-format
8216 Org needs to make a decision which @code{COLUMNS} format to use.  Since the
8217 entries in the agenda are collected from different files, and different files
8218 may have different @code{COLUMNS} formats, this is a non-trivial problem.
8219 Org first checks if the variable @code{org-overriding-columns-format} is
8220 currently set, and if so, takes the format from there.  Otherwise it takes
8221 the format associated with the first item in the agenda, or, if that item
8222 does not have a specific format (defined in a property, or in its file), it
8223 uses @code{org-columns-default-format}.
8224 @item
8225 @cindex property, special, CLOCKSUM
8226 If any of the columns has a summary type defined (@pxref{Column attributes}),
8227 turning on column view in the agenda will visit all relevant agenda files and
8228 make sure that the computations of this property are up to date.  This is
8229 also true for the special @code{CLOCKSUM} property.  Org will then sum the
8230 values displayed in the agenda.  In the daily/weekly agenda, the sums will
8231 cover a single day, in all other views they cover the entire block.  It is
8232 vital to realize that the agenda may show the same entry @emph{twice} (for
8233 example as scheduled and as a deadline), and it may show two entries from the
8234 same hierarchy (for example a @emph{parent} and its @emph{child}).  In these
8235 cases, the summation in the agenda will lead to incorrect results because
8236 some values will count double.
8237 @item
8238 When the column view in the agenda shows the @code{CLOCKSUM}, that is always
8239 the entire clocked time for this item.  So even in the daily/weekly agenda,
8240 the clocksum listed in column view may originate from times outside the
8241 current view.  This has the advantage that you can compare these values with
8242 a column listing the planned total effort for a task---one of the major
8243 applications for column view in the agenda.  If you want information about
8244 clocked time in the displayed period use clock table mode (press @kbd{R} in
8245 the agenda).
8246 @end enumerate
8249 @node Markup, Exporting, Agenda Views, Top
8250 @chapter Markup for rich export
8252 When exporting Org-mode documents, the exporter tries to reflect the
8253 structure of the document as accurately as possible in the backend.  Since
8254 export targets like HTML, La@TeX{}, or DocBook allow much richer formatting,
8255 Org mode has rules on how to prepare text for rich export.  This section
8256 summarizes the markup rules used in an Org-mode buffer.
8258 @menu
8259 * Structural markup elements::  The basic structure as seen by the exporter
8260 * Images and tables::           Tables and Images will be included
8261 * Literal examples::            Source code examples with special formatting
8262 * Include files::               Include additional files into a document
8263 * Index entries::               
8264 * Macro replacement::           Use macros to create complex output
8265 * Embedded LaTeX::              LaTeX can be freely used inside Org documents
8266 @end menu
8268 @node Structural markup elements, Images and tables, Markup, Markup
8269 @section Structural markup elements
8271 @menu
8272 * Document title::              Where the title is taken from
8273 * Headings and sections::       The document structure as seen by the exporter
8274 * Table of contents::           The if and where of the table of contents
8275 * Initial text::                Text before the first heading?
8276 * Lists::                       Lists
8277 * Paragraphs::                  Paragraphs
8278 * Footnote markup::             Footnotes
8279 * Emphasis and monospace::      Bold, italic, etc.
8280 * Horizontal rules::            Make a line
8281 * Comment lines::               What will *not* be exported
8282 @end menu
8284 @node Document title, Headings and sections, Structural markup elements, Structural markup elements
8285 @subheading Document title
8286 @cindex document title, markup rules
8288 @noindent
8289 The title of the exported document is taken from the special line
8291 @cindex #+TITLE
8292 @example
8293 #+TITLE: This is the title of the document
8294 @end example
8296 @noindent
8297 If this line does not exist, the title is derived from the first non-empty,
8298 non-comment line in the buffer.  If no such line exists, or if you have
8299 turned off exporting of the text before the first headline (see below), the
8300 title will be the file name without extension.
8302 @cindex property, EXPORT_TITLE
8303 If you are exporting only a subtree by marking is as the region, the heading
8304 of the subtree will become the title of the document.  If the subtree has a
8305 property @code{EXPORT_TITLE}, that will take precedence.
8307 @node Headings and sections, Table of contents, Document title, Structural markup elements
8308 @subheading Headings and sections
8309 @cindex headings and sections, markup rules
8311 @vindex org-export-headline-levels
8312 The outline structure of the document as described in @ref{Document
8313 Structure}, forms the basis for defining sections of the exported document.
8314 However, since the outline structure is also used for (for example) lists of
8315 tasks, only the first three outline levels will be used as headings.  Deeper
8316 levels will become itemized lists.  You can change the location of this
8317 switch globally by setting the variable @code{org-export-headline-levels}, or on a
8318 per-file basis with a line
8320 @cindex #+OPTIONS
8321 @example
8322 #+OPTIONS: H:4
8323 @end example
8325 @node Table of contents, Initial text, Headings and sections, Structural markup elements
8326 @subheading Table of contents
8327 @cindex table of contents, markup rules
8329 @vindex org-export-with-toc
8330 The table of contents is normally inserted directly before the first headline
8331 of the file.  If you would like to get it to a different location, insert the
8332 string @code{[TABLE-OF-CONTENTS]} on a line by itself at the desired
8333 location.  The depth of the table of contents is by default the same as the
8334 number of headline levels, but you can choose a smaller number, or turn off
8335 the table of contents entirely, by configuring the variable
8336 @code{org-export-with-toc}, or on a per-file basis with a line like
8338 @example
8339 #+OPTIONS: toc:2          (only to two levels in TOC)
8340 #+OPTIONS: toc:nil        (no TOC at all)
8341 @end example
8343 @node Initial text, Lists, Table of contents, Structural markup elements
8344 @subheading Text before the first headline
8345 @cindex text before first headline, markup rules
8346 @cindex #+TEXT
8348 Org mode normally exports the text before the first headline, and even uses
8349 the first line as the document title.  The text will be fully marked up.  If
8350 you need to include literal HTML, La@TeX{}, or DocBook code, use the special
8351 constructs described below in the sections for the individual exporters.
8353 @vindex org-export-skip-text-before-1st-heading
8354 Some people like to use the space before the first headline for setup and
8355 internal links and therefore would like to control the exported text before
8356 the first headline in a different way.  You can do so by setting the variable
8357 @code{org-export-skip-text-before-1st-heading} to @code{t}.  On a per-file
8358 basis, you can get the same effect with @samp{#+OPTIONS: skip:t}.
8360 @noindent
8361 If you still want to have some text before the first headline, use the
8362 @code{#+TEXT} construct:
8364 @example
8365 #+OPTIONS: skip:t
8366 #+TEXT: This text will go before the *first* headline.
8367 #+TEXT: [TABLE-OF-CONTENTS]
8368 #+TEXT: This goes between the table of contents and the first headline
8369 @end example
8371 @node Lists, Paragraphs, Initial text, Structural markup elements
8372 @subheading Lists
8373 @cindex lists, markup rules
8375 Plain lists as described in @ref{Plain lists}, are translated to the backend's
8376 syntax for such lists.  Most backends support unordered, ordered, and
8377 description lists.
8379 @node Paragraphs, Footnote markup, Lists, Structural markup elements
8380 @subheading Paragraphs, line breaks, and quoting
8381 @cindex paragraphs, markup rules
8383 Paragraphs are separated by at least one empty line.  If you need to enforce
8384 a line break within a paragraph, use @samp{\\} at the end of a line.
8386 To keep the line breaks in a region, but otherwise use normal formatting, you
8387 can use this construct, which can also be used to format poetry.
8389 @cindex #+BEGIN_VERSE
8390 @example
8391 #+BEGIN_VERSE
8392  Great clouds overhead
8393  Tiny black birds rise and fall
8394  Snow covers Emacs
8396      -- AlexSchroeder
8397 #+END_VERSE
8398 @end example
8400 When quoting a passage from another document, it is customary to format this
8401 as a paragraph that is indented on both the left and the right margin.  You
8402 can include quotations in Org-mode documents like this:
8404 @cindex #+BEGIN_QUOTE
8405 @example
8406 #+BEGIN_QUOTE
8407 Everything should be made as simple as possible,
8408 but not any simpler -- Albert Einstein
8409 #+END_QUOTE
8410 @end example
8412 If you would like to center some text, do it like this:
8413 @cindex #+BEGIN_CENTER
8414 @example
8415 #+BEGIN_CENTER
8416 Everything should be made as simple as possible, \\
8417 but not any simpler
8418 #+END_CENTER
8419 @end example
8422 @node Footnote markup, Emphasis and monospace, Paragraphs, Structural markup elements
8423 @subheading Footnote markup
8424 @cindex footnotes, markup rules
8425 @cindex @file{footnote.el}
8427 Footnotes defined in the way described in @ref{Footnotes}, will be exported by
8428 all backends.  Org allows multiple references to the same note, and
8429 different backends support this to varying degrees.
8431 @node Emphasis and monospace, Horizontal rules, Footnote markup, Structural markup elements
8432 @subheading Emphasis and monospace
8434 @cindex underlined text, markup rules
8435 @cindex bold text, markup rules
8436 @cindex italic text, markup rules
8437 @cindex verbatim text, markup rules
8438 @cindex code text, markup rules
8439 @cindex strike-through text, markup rules
8440 You can make words @b{*bold*}, @i{/italic/}, _underlined_, @code{=code=}
8441 and @code{~verbatim~}, and, if you must, @samp{+strike-through+}.  Text
8442 in the code and verbatim string is not processed for Org-mode specific
8443 syntax, it is exported verbatim.
8445 @node Horizontal rules, Comment lines, Emphasis and monospace, Structural markup elements
8446 @subheading  Horizontal rules
8447 @cindex horizontal rules, markup rules
8448 A line consisting of only dashes, and at least 5 of them, will be
8449 exported as a horizontal line (@samp{<hr/>} in HTML).
8451 @node Comment lines,  , Horizontal rules, Structural markup elements
8452 @subheading Comment lines
8453 @cindex comment lines
8454 @cindex exporting, not
8455 @cindex #+BEGIN_COMMENT
8457 Lines starting with @samp{#} in column zero are treated as comments and will
8458 never be exported. If you want an indented line to be treated as a comment,
8459 start it with @samp{#+ }.  Also entire subtrees starting with the word
8460 @samp{COMMENT} will never be exported.  Finally, regions surrounded by
8461 @samp{#+BEGIN_COMMENT} ... @samp{#+END_COMMENT} will not be exported.
8463 @table @kbd
8464 @kindex C-c ;
8465 @item C-c ;
8466 Toggle the COMMENT keyword at the beginning of an entry.
8467 @end table
8470 @node Images and tables, Literal examples, Structural markup elements, Markup
8471 @section Images and Tables
8473 @cindex tables, markup rules
8474 @cindex #+CAPTION
8475 @cindex #+LABEL
8476 Both the native Org mode tables (@pxref{Tables}) and tables formatted with
8477 the @file{table.el} package will be exported properly.  For Org mode tables,
8478 the lines before the first horizontal separator line will become table header
8479 lines.  You can use the following lines somewhere before the table to assign
8480 a caption and a label for cross references, and in the text you can refer to
8481 the object with @code{\ref@{tab:basic-data@}}:
8483 @example
8484 #+CAPTION: This is the caption for the next table (or link)
8485 #+LABEL:   tbl:basic-data
8486    | ... | ...|
8487    |-----|----|
8488 @end example
8490 @cindex inlined images, markup rules
8491 Some backends (HTML, La@TeX{}, and DocBook) allow you to directly include
8492 images into the exported document.  Org does this, if a link to an image
8493 files does not have a description part, for example @code{[[./img/a.jpg]]}.
8494 If you wish to define a caption for the image and maybe a label for internal
8495 cross references, make sure that the link is on a line by itself and precede
8496 it with @code{#+CAPTION} and @code{#+LABEL} as follows:
8498 @example
8499 #+CAPTION: This is the caption for the next figure link (or table)
8500 #+LABEL:   fig:SED-HR4049
8501 [[./img/a.jpg]]
8502 @end example
8504 You may also define additional attributes for the figure.  As this is
8505 backend-specific, see the sections about the individual backends for more
8506 information.
8509 @node Literal examples, Include files, Images and tables, Markup
8510 @section Literal examples
8511 @cindex literal examples, markup rules
8512 @cindex code line references, markup rules
8514 You can include literal examples that should not be subjected to
8515 markup.  Such examples will be typeset in monospace, so this is well suited
8516 for source code and similar examples.
8517 @cindex #+BEGIN_EXAMPLE
8519 @example
8520 #+BEGIN_EXAMPLE
8521 Some example from a text file.
8522 #+END_EXAMPLE
8523 @end example
8525 Note that such blocks may be @i{indented} in order to align nicely with
8526 indented text and in particular with plain list structure (@pxref{Plain
8527 lists}).  For simplicity when using small examples, you can also start the
8528 example lines with a colon followed by a space.  There may also be additional
8529 whitespace before the colon:
8531 @example
8532 Here is an example
8533    : Some example from a text file.
8534 @end example
8536 @cindex formatting source code, markup rules
8537 If the example is source code from a programming language, or any other text
8538 that can be marked up by font-lock in Emacs, you can ask for the example to
8539 look like the fontified Emacs buffer@footnote{Currently this works for the
8540 HTML backend, and requires the @file{htmlize.el} package version 1.34 or
8541 later.  It also works for LaTeX with the listings package, if you turn on the
8542 option @code{org-export-latex-listings} and make sure that the listings
8543 package is included by the LaTeX header.}.  This is done with the @samp{src}
8544 block, where you also need to specify the name of the major mode that should
8545 be used to fontify the example:
8546 @cindex #+BEGIN_SRC
8548 @example
8549 #+BEGIN_SRC emacs-lisp
8550   (defun org-xor (a b)
8551      "Exclusive or."
8552      (if a (not b) b))
8553 #+END_SRC
8554 @end example
8556 Both in @code{example} and in @code{src} snippets, you can add a @code{-n}
8557 switch to the end of the @code{BEGIN} line, to get the lines of the example
8558 numbered.  If you use a @code{+n} switch, the numbering from the previous
8559 numbered snippet will be continued in the current one.  In literal examples,
8560 Org will interpret strings like @samp{(ref:name)} as labels, and use them as
8561 targets for special hyperlinks like @code{[[(name)]]} (i.e. the reference name
8562 enclosed in single parenthesis).  In HTML, hovering the mouse over such a
8563 link will remote-highlight the corresponding code line, which is kind of
8564 cool.
8566 You can also add a @code{-r} switch which @i{removes} the labels from the
8567 source code@footnote{Adding @code{-k} to @code{-n -r} will @i{keep} the
8568 labels in the source code while using line numbers for the links, which might
8569 be useful to explain those in an org-mode example code.}.  With the @code{-n}
8570 switch, links to these references will be labeled by the line numbers from
8571 the code listing, otherwise links will use the labels with no parentheses.
8572 Here is an example:
8574 @example
8575 #+BEGIN_SRC emacs-lisp -n -r
8576 (save-excursion                  (ref:sc)
8577    (goto-char (point-min))       (ref:jump)
8578 #+END_SRC
8579 In line [[(sc)]] we remember the current position.  [[(jump)][Line (jump)]]
8580 jumps to point-min.
8581 @end example
8583 @vindex org-coderef-label-format
8584 If the syntax for the label format conflicts with the language syntax, use a
8585 @code{-l} switch to change the format, for example @samp{#+BEGIN_SRC pascal
8586 -n -r -l "((%s))"}.  See also the variable @code{org-coderef-label-format}.
8588 HTML export also allows examples to be published as text areas, @xref{Text
8589 areas in HTML export}.
8591 @table @kbd
8592 @kindex C-c '
8593 @item C-c '
8594 Edit the source code example at point in its native mode.  This works by
8595 switching to a temporary buffer with the source code.  You need to exit by
8596 pressing @kbd{C-c '} again@footnote{Upon exit, lines starting with @samp{*}
8597 or @samp{#} will get a comma prepended, to keep them from being interpreted
8598 by Org as outline nodes or special comments.  These commas will be stripped
8599 for editing with @kbd{C-c '}, and also for export.}, the edited version will
8600 then replace the old version in the Org buffer.  Fixed-width regions
8601 (where each line starts with a colon followed by a space) will be edited
8602 using @code{artist-mode}@footnote{You may select a different-mode with the
8603 variable @code{org-edit-fixed-width-region-mode}.} to allow creating ASCII
8604 drawings easily.  Using this command in an empty line will create a new
8605 fixed-width region.
8606 @kindex C-c l
8607 @item C-c l
8608 Calling @code{org-store-link} while editing a source code example in a
8609 temporary buffer created with @kbd{C-c '} will prompt for a label, make sure
8610 that it is unique in the current buffer, and insert it with the proper
8611 formatting like @samp{(ref:label)} at the end of the current line.  Then the
8612 label is stored as a link @samp{(label)}, for retrieval with @kbd{C-c C-l}.
8613 @end table
8616 @node Include files, Index entries, Literal examples, Markup
8617 @section Include files
8618 @cindex include files, markup rules
8620 During export, you can include the content of another file.  For example, to
8621 include your @file{.emacs} file, you could use:
8622 @cindex #+INCLUDE
8624 @example
8625 #+INCLUDE: "~/.emacs" src emacs-lisp
8626 @end example
8627 @noindent
8628 The optional second and third parameter are the markup (e.g. @samp{quote},
8629 @samp{example}, or @samp{src}), and, if the markup is @samp{src}, the
8630 language for formatting the contents.  The markup is optional, if it is not
8631 given, the text will be assumed to be in Org mode format and will be
8632 processed normally.  The include line will also allow additional keyword
8633 parameters @code{:prefix1} and @code{:prefix} to specify prefixes for the
8634 first line and for each following line, as well as any options accepted by
8635 the selected markup.  For example, to include a file as an item, use
8637 @example
8638 #+INCLUDE: "~/snippets/xx" :prefix1 "   + " :prefix "     "
8639 @end example
8641 @table @kbd
8642 @kindex C-c '
8643 @item C-c '
8644 Visit the include file at point.
8645 @end table
8647 @node Index entries, Macro replacement, Include files, Markup
8648 @section Index enries
8649 @cindex index entries, for publishing
8651 You can specify entries that will be used for generating an index during
8652 publishing.  This is done by lines starting with @code{#+INDEX}.  An entry
8653 the contains an exclamation mark will create a sub item.  See @ref{Generating
8654 an index} for more information.
8656 @example
8657 * Curriculum Vitae 
8658 #+INDEX: CV
8659 #+INDEX: Application!CV
8660 @end example
8665 @node Macro replacement, Embedded LaTeX, Index entries, Markup
8666 @section Macro replacement
8667 @cindex macro replacement, during export
8668 @cindex #+MACRO
8670 You can define text snippets with
8672 @example
8673 #+MACRO: name   replacement text $1, $2 are arguments
8674 @end example
8676 @noindent which can be referenced anywhere in the document (even in
8677 code examples) with @code{@{@{@{name(arg1,arg2)@}@}@}}.  In addition to
8678 defined macros, @code{@{@{@{title@}@}@}}, @code{@{@{@{author@}@}@}}, etc.,
8679 will reference information set by the @code{#+TITLE:}, @code{#+AUTHOR:}, and
8680 similar lines.  Also, @code{@{@{@{date(@var{FORMAT})@}@}@}} and
8681 @code{@{@{@{modification-time(@var{FORMAT})@}@}@}} refer to current date time
8682 and to the modification time of the file being exported, respectively.
8683 @var{FORMAT} should be a format string understood by
8684 @code{format-time-string}.
8686 Macro expansion takes place during export, and some people use it to
8687 construct complex HTML code.
8690 @node Embedded LaTeX,  , Macro replacement, Markup
8691 @section Embedded La@TeX{}
8692 @cindex @TeX{} interpretation
8693 @cindex La@TeX{} interpretation
8695 Plain ASCII is normally sufficient for almost all note taking.  One
8696 exception, however, are scientific notes which need to be able to contain
8697 mathematical symbols and the occasional formula.  La@TeX{}@footnote{La@TeX{}
8698 is a macro system based on Donald E. Knuth's @TeX{} system.  Many of the
8699 features described here as ``La@TeX{}'' are really from @TeX{}, but for
8700 simplicity I am blurring this distinction.}  is widely used to typeset
8701 scientific documents. Org mode supports embedding La@TeX{} code into its
8702 files, because many academics are used to reading La@TeX{} source code, and
8703 because it can be readily processed into images for HTML production.
8705 It is not necessary to mark La@TeX{} macros and code in any special way.
8706 If you observe a few conventions, Org mode knows how to find it and what
8707 to do with it.
8709 @menu
8710 * Special symbols::             Greek letters and other symbols
8711 * Subscripts and superscripts::  Simple syntax for raising/lowering text
8712 * LaTeX fragments::             Complex formulas made easy
8713 * Previewing LaTeX fragments::  What will this snippet look like?
8714 * CDLaTeX mode::                Speed up entering of formulas
8715 @end menu
8717 @node Special symbols, Subscripts and superscripts, Embedded LaTeX, Embedded LaTeX
8718 @subsection Special symbols
8719 @cindex math symbols
8720 @cindex special symbols
8721 @cindex @TeX{} macros
8722 @cindex La@TeX{} fragments, markup rules
8723 @cindex HTML entities
8724 @cindex La@TeX{} entities
8726 You can use La@TeX{} macros to insert special symbols like @samp{\alpha} to
8727 indicate the Greek letter, or @samp{\to} to indicate an arrow.  Completion
8728 for these macros is available, just type @samp{\} and maybe a few letters,
8729 and press @kbd{M-@key{TAB}} to see possible completions.  Unlike La@TeX{}
8730 code, Org mode allows these macros to be present without surrounding math
8731 delimiters, for example:
8733 @example
8734 Angles are written as Greek letters \alpha, \beta and \gamma.
8735 @end example
8737 @vindex org-entities
8738 During export, these symbols will be transformed into the native format of
8739 the exporter backend.  Strings like @code{\alpha} will be exported as
8740 @code{&alpha;} in the HTML output, and as @code{$\alpha$} in the La@TeX{}
8741 output.  Similarly, @code{\nbsp} will become @code{&nbsp;} in HTML and
8742 @code{~} in La@TeX{}.  If you need such a symbol inside a word, terminate it
8743 like this: @samp{\Aacute@{@}stor}.
8745 A large number of entities is provided, with names taken from both HTML and
8746 La@TeX{}, see the variable @code{org-entities} for the complete list.
8747 @samp{\-} is treated as a shy hyphen, and @samp{--}, @samp{---}, and
8748 @samp{...} are all converted into special commands creating hyphens of
8749 different lengths or a compact set of dots.
8751 If you would like to see entities displayed as utf8 characters, use the
8752 following command@footnote{You can turn this on by default by setting the
8753 variable @code{org-pretty-entities}, or on a per-file base with the
8754 @code{#+STARTUP} option @code{entitiespretty}.}:
8756 @table @kbd
8757 @kindex C-c C-x \
8758 @item C-c C-x \
8759 Toggle display of entities as UTF8 characters.  This does not change the
8760 buffer content which remains plain ASCII, but it overlays the UTF8 character
8761 for display purposes only.
8762 @end table
8764 @node Subscripts and superscripts, LaTeX fragments, Special symbols, Embedded LaTeX
8765 @subsection Subscripts and superscripts
8766 @cindex subscript
8767 @cindex superscript
8769 Just like in La@TeX{}, @samp{^} and @samp{_} are used to indicate super-
8770 and subscripts.  Again, these can be used without embedding them in
8771 math-mode delimiters.  To increase the readability of ASCII text, it is
8772 not necessary (but OK) to surround multi-character sub- and superscripts
8773 with curly braces.  For example
8775 @example
8776 The mass if the sun is M_sun = 1.989 x 10^30 kg.  The radius of
8777 the sun is R_@{sun@} = 6.96 x 10^8 m.
8778 @end example
8780 @vindex org-export-with-sub-superscripts
8781 To avoid interpretation as raised or lowered text, you can quote @samp{^} and
8782 @samp{_} with a backslash: @samp{\^} and @samp{\_}.  If you write a text
8783 where the underscore is often used in a different context, Org's convention
8784 to always interpret these as subscripts can get in your way.  Configure the
8785 variable @code{org-export-with-sub-superscripts} to globally change this
8786 convention, or use, on a per-file basis:
8788 @example
8789 #+OPTIONS: ^:@{@}
8790 @end example
8792 @table @kbd
8793 @kindex C-c C-x \
8794 @item C-c C-x \
8795 In addition to showing entities as UTF8 characters, this command will also
8796 format sub- and superscripts in a WYSIWYM way.
8797 @end table
8799 @node LaTeX fragments, Previewing LaTeX fragments, Subscripts and superscripts, Embedded LaTeX
8800 @subsection La@TeX{} fragments
8801 @cindex La@TeX{} fragments
8803 @vindex org-format-latex-header
8804 With symbols, sub- and superscripts, HTML is pretty much at its end when
8805 it comes to representing mathematical formulas@footnote{Yes, there is
8806 MathML, but that is not yet fully supported by many browsers, and there
8807 is no decent converter for turning La@TeX{} or ASCII representations of
8808 formulas into MathML. So for the time being, converting formulas into
8809 images seems the way to go.}. More complex expressions need a dedicated
8810 formula processor. To this end, Org mode can contain arbitrary La@TeX{}
8811 fragments. It provides commands to preview the typeset result of these
8812 fragments, and upon export to HTML, all fragments will be converted to
8813 images and inlined into the HTML document@footnote{The La@TeX{} export
8814 will not use images for displaying La@TeX{} fragments but include these
8815 fragments directly into the La@TeX{} code.}. For this to work you
8816 need to be on a system with a working La@TeX{} installation. You also
8817 need the @file{dvipng} program, available at
8818 @url{http://sourceforge.net/projects/dvipng/}. The La@TeX{} header that
8819 will be used when processing a fragment can be configured with the
8820 variable @code{org-format-latex-header}.
8822 La@TeX{} fragments don't need any special marking at all.  The following
8823 snippets will be identified as La@TeX{} source code:
8824 @itemize @bullet
8825 @item
8826 Environments of any kind.  The only requirement is that the
8827 @code{\begin} statement appears on a new line, preceded by only
8828 whitespace.
8829 @item
8830 Text within the usual La@TeX{} math delimiters.  To avoid conflicts with
8831 currency specifications, single @samp{$} characters are only recognized as
8832 math delimiters if the enclosed text contains at most two line breaks, is
8833 directly attached to the @samp{$} characters with no whitespace in between,
8834 and if the closing @samp{$} is followed by whitespace, punctuation or a dash.
8835 For the other delimiters, there is no such restriction, so when in doubt, use
8836 @samp{\(...\)} as inline math delimiters.
8837 @end itemize
8839 @noindent For example:
8841 @example
8842 \begin@{equation@}                          % arbitrary environments,
8843 x=\sqrt@{b@}                                % even tables, figures
8844 \end@{equation@}                            % etc
8846 If $a^2=b$ and \( b=2 \), then the solution must be
8847 either $$ a=+\sqrt@{2@} $$ or \[ a=-\sqrt@{2@} \].
8848 @end example
8850 @noindent
8851 @vindex org-format-latex-options
8852 If you need any of the delimiter ASCII sequences for other purposes, you
8853 can configure the option @code{org-format-latex-options} to deselect the
8854 ones you do not wish to have interpreted by the La@TeX{} converter.
8856 @node Previewing LaTeX fragments, CDLaTeX mode, LaTeX fragments, Embedded LaTeX
8857 @subsection Previewing LaTeX fragments
8858 @cindex LaTeX fragments, preview
8860 La@TeX{} fragments can be processed to produce preview images of the
8861 typeset expressions:
8863 @table @kbd
8864 @kindex C-c C-x C-l
8865 @item C-c C-x C-l
8866 Produce a preview image of the La@TeX{} fragment at point and overlay it
8867 over the source code.  If there is no fragment at point, process all
8868 fragments in the current entry (between two headlines).  When called
8869 with a prefix argument, process the entire subtree.  When called with
8870 two prefix arguments, or when the cursor is before the first headline,
8871 process the entire buffer.
8872 @kindex C-c C-c
8873 @item C-c C-c
8874 Remove the overlay preview images.
8875 @end table
8877 @vindex org-format-latex-options
8878 You can customize the variable @code{org-format-latex-options} to influence
8879 some aspects of the preview. In particular, the @code{:scale} (and for HTML
8880 export, @code{:html-scale}) property can be used to adjust the size of the
8881 preview images.
8883 During HTML export (@pxref{HTML export}), all La@TeX{} fragments are
8884 converted into images and inlined into the document if the following
8885 setting is active:
8887 @lisp
8888 (setq org-export-with-LaTeX-fragments t)
8889 @end lisp
8891 @node CDLaTeX mode,  , Previewing LaTeX fragments, Embedded LaTeX
8892 @subsection Using CDLa@TeX{} to enter math
8893 @cindex CDLa@TeX{}
8895 CDLa@TeX{} mode is a minor mode that is normally used in combination with a
8896 major La@TeX{} mode like AUC@TeX{} in order to speed-up insertion of
8897 environments and math templates.  Inside Org mode, you can make use of
8898 some of the features of CDLa@TeX{} mode.  You need to install
8899 @file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
8900 AUC@TeX{}) from @url{http://www.astro.uva.nl/~dominik/Tools/cdlatex}.
8901 Don't use CDLa@TeX{} mode itself under Org mode, but use the light
8902 version @code{org-cdlatex-mode} that comes as part of Org mode.  Turn it
8903 on for the current buffer with @code{M-x org-cdlatex-mode}, or for all
8904 Org files with
8906 @lisp
8907 (add-hook 'org-mode-hook 'turn-on-org-cdlatex)
8908 @end lisp
8910 When this mode is enabled, the following features are present (for more
8911 details see the documentation of CDLa@TeX{} mode):
8912 @itemize @bullet
8913 @kindex C-c @{
8914 @item
8915 Environment templates can be inserted with @kbd{C-c @{}.
8916 @item
8917 @kindex @key{TAB}
8918 The @key{TAB} key will do template expansion if the cursor is inside a
8919 La@TeX{} fragment@footnote{Org mode has a method to test if the cursor is
8920 inside such a fragment, see the documentation of the function
8921 @code{org-inside-LaTeX-fragment-p}.}.  For example, @key{TAB} will
8922 expand @code{fr} to @code{\frac@{@}@{@}} and position the cursor
8923 correctly inside the first brace.  Another @key{TAB} will get you into
8924 the second brace.  Even outside fragments, @key{TAB} will expand
8925 environment abbreviations at the beginning of a line.  For example, if
8926 you write @samp{equ} at the beginning of a line and press @key{TAB},
8927 this abbreviation will be expanded to an @code{equation} environment.
8928 To get a list of all abbreviations, type @kbd{M-x cdlatex-command-help}.
8929 @item
8930 @kindex _
8931 @kindex ^
8932 @vindex cdlatex-simplify-sub-super-scripts
8933 Pressing @kbd{_} and @kbd{^} inside a La@TeX{} fragment will insert these
8934 characters together with a pair of braces.  If you use @key{TAB} to move
8935 out of the braces, and if the braces surround only a single character or
8936 macro, they are removed again (depending on the variable
8937 @code{cdlatex-simplify-sub-super-scripts}).
8938 @item
8939 @kindex `
8940 Pressing the backquote @kbd{`} followed by a character inserts math
8941 macros, also outside La@TeX{} fragments.  If you wait more than 1.5 seconds
8942 after the backquote, a help window will pop up.
8943 @item
8944 @kindex '
8945 Pressing the single-quote @kbd{'} followed by another character modifies
8946 the symbol before point with an accent or a font.  If you wait more than
8947 1.5 seconds after the backquote, a help window will pop up.  Character
8948 modification will work only inside La@TeX{} fragments, outside the quote
8949 is normal.
8950 @end itemize
8952 @node Exporting, Publishing, Markup, Top
8953 @chapter Exporting
8954 @cindex exporting
8956 Org-mode documents can be exported into a variety of other formats.  For
8957 printing and sharing of notes, ASCII export produces a readable and simple
8958 version of an Org file.  HTML export allows you to publish a notes file on
8959 the web, while the XOXO format provides a solid base for exchange with a
8960 broad range of other applications. La@TeX{} export lets you use Org mode and
8961 its structured editing functions to easily create La@TeX{} files.  DocBook
8962 export makes it possible to convert Org files to many other formats using
8963 DocBook tools.  For project management you can create gantt and resource
8964 charts by using TaskJuggler export.  To incorporate entries with associated
8965 times like deadlines or appointments into a desktop calendar program like
8966 iCal, Org mode can also produce extracts in the iCalendar format.  Currently
8967 Org mode only supports export, not import of these different formats.
8969 Org supports export of selected regions when @code{transient-mark-mode} is
8970 enabled (default in Emacs 23).
8972 @menu
8973 * Selective export::            Using tags to select and exclude trees
8974 * Export options::              Per-file export settings
8975 * The export dispatcher::       How to access exporter commands
8976 * ASCII/Latin-1/UTF-8 export::  Exporting to flat files with encoding
8977 * HTML export::                 Exporting to HTML
8978 * LaTeX and PDF export::        Exporting to La@TeX{}, and processing to PDF
8979 * DocBook export::              Exporting to DocBook
8980 * TaskJuggler export::          Exporting to TaskJuggler
8981 * Freemind export::             Exporting to Freemind mind maps
8982 * XOXO export::                 Exporting to XOXO
8983 * iCalendar export::            Exporting in iCalendar format
8984 @end menu
8986 @node Selective export, Export options, Exporting, Exporting
8987 @section Selective export
8988 @cindex export, selective by tags
8990 @vindex org-export-select-tags
8991 @vindex org-export-exclude-tags
8992 You may use tags to select the parts of a document that should be exported,
8993 or to exclude parts from export.  This behavior is governed by two variables:
8994 @code{org-export-select-tags} and @code{org-export-exclude-tags}.
8996 Org first checks if any of the @emph{select} tags is present in the buffer.
8997 If yes, all trees that do not carry one of these tags will be excluded.  If a
8998 selected tree is a subtree, the heading hierarchy above it will also be
8999 selected for export, but not the text below those headings.
9001 @noindent
9002 If none of the select tags is found, the whole buffer will be selected for
9003 export.
9005 @noindent
9006 Finally, all subtrees that are marked by any of the @emph{exclude} tags will
9007 be removed from the export buffer.
9009 @node Export options, The export dispatcher, Selective export, Exporting
9010 @section Export options
9011 @cindex options, for export
9013 @cindex completion, of option keywords
9014 The exporter recognizes special lines in the buffer which provide
9015 additional information.  These lines may be put anywhere in the file.
9016 The whole set of lines can be inserted into the buffer with @kbd{C-c
9017 C-e t}.  For individual lines, a good way to make sure the keyword is
9018 correct is to type @samp{#+} and then use @kbd{M-@key{TAB}} completion
9019 (@pxref{Completion}).   For a summary of other in-buffer settings not
9020 specifically related to export, see @ref{In-buffer settings}.
9021 In particular, note that you can place commonly-used (export) options in
9022 a separate file which can be included using @code{#+SETUPFILE}.
9024 @table @kbd
9025 @kindex C-c C-e t
9026 @item C-c C-e t
9027 Insert template with export options, see example below.
9028 @end table
9030 @cindex #+TITLE
9031 @cindex #+AUTHOR
9032 @cindex #+DATE
9033 @cindex #+EMAIL
9034 @cindex #+DESCRIPTION
9035 @cindex #+KEYWORDS
9036 @cindex #+LANGUAGE
9037 @cindex #+TEXT
9038 @cindex #+OPTIONS
9039 @cindex #+BIND
9040 @cindex #+LINK_UP
9041 @cindex #+LINK_HOME
9042 @cindex #+EXPORT_SELECT_TAGS
9043 @cindex #+EXPORT_EXCLUDE_TAGS
9044 @cindex #+XSLT
9045 @cindex #+LATEX_HEADER
9046 @vindex user-full-name
9047 @vindex user-mail-address
9048 @vindex org-export-default-language
9049 @example
9050 #+TITLE:       the title to be shown (default is the buffer name)
9051 #+AUTHOR:      the author (default taken from @code{user-full-name})
9052 #+DATE:        a date, fixed, of a format string for @code{format-time-string}
9053 #+EMAIL:       his/her email address (default from @code{user-mail-address})
9054 #+DESCRIPTION: the page description, e.g. for the XHTML meta tag
9055 #+KEYWORDS:    the page keywords, e.g. for the XHTML meta tag
9056 #+LANGUAGE:    language for HTML, e.g. @samp{en} (@code{org-export-default-language})
9057 #+TEXT:        Some descriptive text to be inserted at the beginning.
9058 #+TEXT:        Several lines may be given.
9059 #+OPTIONS:     H:2 num:t toc:t \n:nil @@:t ::t |:t ^:t f:t TeX:t ...
9060 #+BIND:        lisp-var lisp-val, e.g.: org-export-latex-low-levels itemize
9061                @r{You need to confirm using these, or configure @code{org-export-allow-BIND}}
9062 #+LINK_UP:     the ``up'' link of an exported page
9063 #+LINK_HOME:   the ``home'' link of an exported page
9064 #+LATEX_HEADER: extra line(s) for the LaTeX header, like \usepackage@{xyz@}
9065 #+EXPORT_SELECT_TAGS:   Tags that select a tree for export
9066 #+EXPORT_EXCLUDE_TAGS:  Tags that exclude a tree from export
9067 #+XSLT:        the XSLT stylesheet used by DocBook exporter to generate FO file
9068 @end example
9070 @noindent
9071 The OPTIONS line is a compact@footnote{If you want to configure many options
9072 this way, you can use several OPTIONS lines.} form to specify export settings.  Here
9073 you can:
9074 @cindex headline levels
9075 @cindex section-numbers
9076 @cindex table of contents
9077 @cindex line-break preservation
9078 @cindex quoted HTML tags
9079 @cindex fixed-width sections
9080 @cindex tables
9081 @cindex @TeX{}-like syntax for sub- and superscripts
9082 @cindex footnotes
9083 @cindex special strings
9084 @cindex emphasized text
9085 @cindex @TeX{} macros
9086 @cindex La@TeX{} fragments
9087 @cindex author info, in export
9088 @cindex time info, in export
9089 @example
9090 H:         @r{set the number of headline levels for export}
9091 num:       @r{turn on/off section-numbers}
9092 toc:       @r{turn on/off table of contents, or set level limit (integer)}
9093 \n:        @r{turn on/off line-break-preservation (DOES NOT WORK)}
9094 @@:         @r{turn on/off quoted HTML tags}
9095 ::         @r{turn on/off fixed-width sections}
9096 |:         @r{turn on/off tables}
9097 ^:         @r{turn on/off @TeX{}-like syntax for sub- and superscripts.  If}
9098            @r{you write "^:@{@}", @code{a_@{b@}} will be interpreted, but}
9099            @r{the simple @code{a_b} will be left as it is.}
9100 -:         @r{turn on/off conversion of special strings.}
9101 f:         @r{turn on/off footnotes like this[1].}
9102 todo:      @r{turn on/off inclusion of TODO keywords into exported text}
9103 pri:       @r{turn on/off priority cookies}
9104 tags:      @r{turn on/off inclusion of tags, may also be @code{not-in-toc}}
9105 <:         @r{turn on/off inclusion of any time/date stamps like DEADLINES}
9106 *:         @r{turn on/off emphasized text (bold, italic, underlined)}
9107 TeX:       @r{turn on/off simple @TeX{} macros in plain text}
9108 LaTeX:     @r{turn on/off La@TeX{} fragments}
9109 skip:      @r{turn on/off skipping the text before the first heading}
9110 author:    @r{turn on/off inclusion of author name/email into exported file}
9111 email:     @r{turn on/off inclusion of author email into exported file}
9112 creator:   @r{turn on/off inclusion of creator info into exported file}
9113 timestamp: @r{turn on/off inclusion creation time into exported file}
9114 d:         @r{turn on/off inclusion of drawers}
9115 @end example
9116 @noindent
9117 These options take effect in both the HTML and La@TeX{} export, except
9118 for @code{TeX} and @code{LaTeX}, which are respectively @code{t} and
9119 @code{nil} for the La@TeX{} export.
9121 When exporting only a single subtree by selecting it with @kbd{C-c @@} before
9122 calling an export command, the subtree can overrule some of the file's export
9123 settings with properties @code{EXPORT_FILE_NAME}, @code{EXPORT_TITLE},
9124 @code{EXPORT_TEXT}, @code{EXPORT_AUTHOR}, @code{EXPORT_DATE}, and
9125 @code{EXPORT_OPTIONS}.
9127 @node The export dispatcher, ASCII/Latin-1/UTF-8 export, Export options, Exporting
9128 @section The export dispatcher
9129 @cindex dispatcher, for export commands
9131 All export commands can be reached using the export dispatcher, which is a
9132 prefix key that prompts for an additional key specifying the command.
9133 Normally the entire file is exported, but if there is an active region that
9134 contains one outline tree, the first heading is used as document title and
9135 the subtrees are exported.
9137 @table @kbd
9138 @kindex C-c C-e
9139 @item C-c C-e
9140 @vindex org-export-run-in-background
9141 Dispatcher for export and publishing commands.  Displays a help-window
9142 listing the additional key(s) needed to launch an export or publishing
9143 command.  The prefix arg is passed through to the exporter.  A double prefix
9144 @kbd{C-u C-u} causes most commands to be executed in the background, in a
9145 separate Emacs process@footnote{To make this behavior the default, customize
9146 the variable @code{org-export-run-in-background}.}.
9147 @kindex C-c C-e v
9148 @item C-c C-e v
9149 Like @kbd{C-c C-e}, but only export the text that is currently visible
9150 (i.e. not hidden by outline visibility).
9151 @kindex C-u C-u C-c C-e
9152 @item C-u C-u C-c C-e
9153 @vindex org-export-run-in-background
9154 Call an the exporter, but reverse the setting of
9155 @code{org-export-run-in-background}, i.e. request background processing if
9156 not set, or force processing in the current Emacs process if set.
9157 @end table
9159 @node ASCII/Latin-1/UTF-8 export, HTML export, The export dispatcher, Exporting
9160 @section ASCII/Latin-1/UTF-8 export
9161 @cindex ASCII export
9162 @cindex Latin-1 export
9163 @cindex UTF-8 export
9165 ASCII export produces a simple and very readable version of an Org-mode
9166 file, containing only plain ASCII.  Latin-1 and UTF-8 export augment the file
9167 with special characters and symbols available in these encodings.
9169 @cindex region, active
9170 @cindex active region
9171 @cindex transient-mark-mode
9172 @table @kbd
9173 @kindex C-c C-e a
9174 @item C-c C-e a
9175 @cindex property, EXPORT_FILE_NAME
9176 Export as ASCII file.  For an Org file, @file{myfile.org}, the ASCII file
9177 will be @file{myfile.txt}.  The file will be overwritten without
9178 warning.  If there is an active region@footnote{This requires
9179 @code{transient-mark-mode} be turned on.}, only the region will be
9180 exported. If the selected region is a single tree@footnote{To select the
9181 current subtree, use @kbd{C-c @@}.}, the tree head will
9182 become the document title.  If the tree head entry has or inherits an
9183 @code{EXPORT_FILE_NAME} property, that name will be used for the
9184 export.
9185 @kindex C-c C-e A
9186 @item C-c C-e A
9187 Export to a temporary buffer, do not create a file.
9188 @kindex C-c C-e n
9189 @kindex C-c C-e N
9190 @item C-c C-e n @ @ @r{and} @ @ C-c C-e N
9191 Like the above commands, but use Latin-1 encoding.
9192 @kindex C-c C-e u
9193 @kindex C-c C-e U
9194 @item C-c C-e u @ @ @r{and} @ @ C-c C-e U
9195 Like the above commands, but use UTF-8 encoding.
9196 @kindex C-c C-e v a
9197 @kindex C-c C-e v n
9198 @kindex C-c C-e v u
9199 @item C-c C-e v a @ @ @r{and} @ @ C-c C-e v n @ @ @r{and} @ @ C-c C-e v u
9200 Export only the visible part of the document.
9201 @end table
9203 @cindex headline levels, for exporting
9204 In the exported version, the first 3 outline levels will become
9205 headlines, defining a general document structure.  Additional levels
9206 will be exported as itemized lists.  If you want that transition to occur
9207 at a different level, specify it with a prefix argument.  For example,
9209 @example
9210 @kbd{C-1 C-c C-e a}
9211 @end example
9213 @noindent
9214 creates only top level headlines and does the rest as items.  When
9215 headlines are converted to items, the indentation of the text following
9216 the headline is changed to fit nicely under the item.  This is done with
9217 the assumption that the first body line indicates the base indentation of
9218 the body text.  Any indentation larger than this is adjusted to preserve
9219 the layout relative to the first line.  Should there be lines with less
9220 indentation than the first, these are left alone.
9222 @vindex org-export-ascii-links-to-notes
9223 Links will be exported in a footnote-like style, with the descriptive part in
9224 the text and the link in a note before the next heading.  See the variable
9225 @code{org-export-ascii-links-to-notes} for details and other options.
9227 @node HTML export, LaTeX and PDF export, ASCII/Latin-1/UTF-8 export, Exporting
9228 @section HTML export
9229 @cindex HTML export
9231 Org mode contains an HTML (XHTML 1.0 strict) exporter with extensive
9232 HTML formatting, in ways similar to John Gruber's @emph{markdown}
9233 language, but with additional support for tables.
9235 @menu
9236 * HTML Export commands::        How to invoke HTML export
9237 * Quoting HTML tags::           Using direct HTML in Org mode
9238 * Links in HTML export::        How links will be interpreted and formatted
9239 * Tables in HTML export::       How to modify the formatting of tables
9240 * Images in HTML export::       How to insert figures into HTML output
9241 * Text areas in HTML export::   An alternative way to show an example
9242 * CSS support::                 Changing the appearance of the output
9243 * Javascript support::          Info and Folding in a web browser
9244 @end menu
9246 @node HTML Export commands, Quoting HTML tags, HTML export, HTML export
9247 @subsection HTML export commands
9249 @cindex region, active
9250 @cindex active region
9251 @cindex transient-mark-mode
9252 @table @kbd
9253 @kindex C-c C-e h
9254 @item C-c C-e h
9255 @cindex property, EXPORT_FILE_NAME
9256 Export as HTML file @file{myfile.html}.  For an Org file @file{myfile.org},
9257 the ASCII file will be @file{myfile.html}.  The file will be overwritten
9258 without warning.  If there is an active region@footnote{This requires
9259 @code{transient-mark-mode} be turned on.}, only the region will be
9260 exported. If the selected region is a single tree@footnote{To select the
9261 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
9262 title.  If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
9263 property, that name will be used for the export.
9264 @kindex C-c C-e b
9265 @item C-c C-e b
9266 Export as HTML file and immediately open it with a browser.
9267 @kindex C-c C-e H
9268 @item C-c C-e H
9269 Export to a temporary buffer, do not create a file.
9270 @kindex C-c C-e R
9271 @item C-c C-e R
9272 Export the active region to a temporary buffer.  With a prefix argument, do
9273 not produce the file header and footer, but just the plain HTML section for
9274 the region.  This is good for cut-and-paste operations.
9275 @kindex C-c C-e v h
9276 @kindex C-c C-e v b
9277 @kindex C-c C-e v H
9278 @kindex C-c C-e v R
9279 @item C-c C-e v h
9280 @item C-c C-e v b
9281 @item C-c C-e v H
9282 @item C-c C-e v R
9283 Export only the visible part of the document.
9284 @item M-x org-export-region-as-html
9285 Convert the region to HTML under the assumption that it was Org-mode
9286 syntax before.  This is a global command that can be invoked in any
9287 buffer.
9288 @item M-x org-replace-region-by-HTML
9289 Replace the active region (assumed to be in Org-mode syntax) by HTML
9290 code.
9291 @end table
9293 @cindex headline levels, for exporting
9294 In the exported version, the first 3 outline levels will become headlines,
9295 defining a general document structure.  Additional levels will be exported as
9296 itemized lists.  If you want that transition to occur at a different level,
9297 specify it with a numeric prefix argument.  For example,
9299 @example
9300 @kbd{C-2 C-c C-e b}
9301 @end example
9303 @noindent
9304 creates two levels of headings and does the rest as items.
9306 @node Quoting HTML tags, Links in HTML export, HTML Export commands, HTML export
9307 @subsection Quoting HTML tags
9309 Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
9310 @samp{&gt;} in HTML export.  If you want to include simple HTML tags
9311 which should be interpreted as such, mark them with @samp{@@} as in
9312 @samp{@@<b>bold text@@</b>}.  Note that this really works only for
9313 simple tags.  For more extensive HTML that should be copied verbatim to
9314 the exported file use either
9316 @cindex #+HTML
9317 @cindex #+BEGIN_HTML
9318 @example
9319 #+HTML: Literal HTML code for export
9320 @end example
9322 @noindent or
9323 @cindex #+BEGIN_HTML
9325 @example
9326 #+BEGIN_HTML
9327 All lines between these markers are exported literally
9328 #+END_HTML
9329 @end example
9332 @node Links in HTML export, Tables in HTML export, Quoting HTML tags, HTML export
9333 @subsection Links in HTML export
9335 @cindex links, in HTML export
9336 @cindex internal links, in HTML export
9337 @cindex external links, in HTML export
9338 Internal links (@pxref{Internal links}) will continue to work in HTML.  This
9339 includes automatic links created by radio targets (@pxref{Radio
9340 targets}).  Links to external files will still work if the target file is on
9341 the same @i{relative} path as the published Org file.  Links to other
9342 @file{.org} files will be translated into HTML links under the assumption
9343 that an HTML version also exists of the linked file, at the same relative
9344 path.  @samp{id:} links can then be used to jump to specific entries across
9345 files.  For information related to linking files while publishing them to a
9346 publishing directory see @ref{Publishing links}.
9348 If you want to specify attributes for links, you can do so using a special
9349 @code{#+ATTR_HTML} line to define attributes that will be added to the
9350 @code{<a>} or @code{<img>} tags.  Here is an example that sets @code{title}
9351 and @code{style} attributes for a link:
9353 @cindex #+ATTR_HTML
9354 @example
9355 #+ATTR_HTML: title="The Org-mode homepage" style="color:red;"
9356 [[http://orgmode.org]]
9357 @end example
9359 @node Tables in HTML export, Images in HTML export, Links in HTML export, HTML export
9360 @subsection Tables
9361 @cindex tables, in HTML
9362 @vindex org-export-html-table-tag
9364 Org-mode tables are exported to HTML using the table tag defined in
9365 @code{org-export-html-table-tag}.  The default setting makes tables without
9366 cell borders and frame.  If you would like to change this for individual
9367 tables, place somthing like the following before the table:
9369 @cindex #+CAPTION
9370 @cindex #+ATTR_HTML
9371 @example
9372 #+CAPTION: This is a table with lines around and between cells
9373 #+ATTR_HTML: border="2" rules="all" frame="all"
9374 @end example
9376 @node Images in HTML export, Text areas in HTML export, Tables in HTML export, HTML export
9377 @subsection Images in HTML export
9379 @cindex images, inline in HTML
9380 @cindex inlining images in HTML
9381 @vindex org-export-html-inline-images
9382 HTML export can inline images given as links in the Org file, and
9383 it can make an image the clickable part of a link.  By
9384 default@footnote{But see the variable
9385 @code{org-export-html-inline-images}.}, images are inlined if a link does
9386 not have a description.  So @samp{[[file:myimg.jpg]]} will be inlined,
9387 while @samp{[[file:myimg.jpg][the image]]} will just produce a link
9388 @samp{the image} that points to the image.  If the description part
9389 itself is a @code{file:} link or a @code{http:} URL pointing to an
9390 image, this image will be inlined and activated so that clicking on the
9391 image will activate the link.  For example, to include a thumbnail that
9392 will link to a high resolution version of the image, you could use:
9394 @example
9395 [[file:highres.jpg][file:thumb.jpg]]
9396 @end example
9398 If you need to add attributes to an inlines image, use a @code{#+ATTR_HTML}.
9399 In the example below we specify the @code{alt} and @code{title} attributes to
9400 support text viewers and accessibility, and align it to the right.
9402 @cindex #+CAPTION
9403 @cindex #+ATTR_HTML
9404 @example
9405 #+CAPTION: A black cat stalking a spider
9406 #+ATTR_HTML: alt="cat/spider image" title="Action!" align="right"
9407 [[./img/a.jpg]]
9408 @end example
9410 @noindent
9411 and you could use @code{http} addresses just as well.
9413 @node Text areas in HTML export, CSS support, Images in HTML export, HTML export
9414 @subsection Text areas in HTML export
9416 @cindex text areas, in HTML
9417 An alternative way to publish literal code examples in HTML is to use text
9418 areas, where the example can even be edited before pasting it into an
9419 application.  It is triggered by a @code{-t} switch at an @code{example} or
9420 @code{src} block.  Using this switch disables any options for syntax and
9421 label highlighting, and line numbering, which may be present.  You may also
9422 use @code{-h} and @code{-w} switches to specify the height and width of the
9423 text area, which default to the number of lines in the example, and 80,
9424 respectively.  For example
9426 @example
9427 #+BEGIN_EXAMPLE -t -w 40
9428   (defun org-xor (a b)
9429      "Exclusive or."
9430      (if a (not b) b))
9431 #+END_EXAMPLE
9432 @end example
9435 @node CSS support, Javascript support, Text areas in HTML export, HTML export
9436 @subsection CSS support
9437 @cindex CSS, for HTML export
9438 @cindex HTML export, CSS
9440 @vindex org-export-html-todo-kwd-class-prefix
9441 @vindex org-export-html-tag-class-prefix
9442 You can also give style information for the exported file.  The HTML exporter
9443 assigns the following special CSS classes@footnote{If the classes on TODO
9444 keywords and tags lead to conflicts, use the variables
9445 @code{org-export-html-todo-kwd-class-prefix} and
9446 @code{org-export-html-tag-class-prefix} to make them unique.} to appropriate
9447 parts of the document---your style specifications may change these, in
9448 addition to any of the standard classes like for headlines, tables, etc.
9449 @example
9450 p.author            @r{author information, including email}
9451 p.date              @r{publishing date}
9452 p.creator           @r{creator info, about org-mode version}
9453 .title              @r{document title}
9454 .todo               @r{TODO keywords, all not-done states}
9455 .done               @r{the DONE keywords, all stated the count as done}
9456 .WAITING            @r{each TODO keyword also uses a class named after itself}
9457 .timestamp          @r{timestamp}
9458 .timestamp-kwd      @r{keyword associated with a timestamp, like SCHEDULED}
9459 .timestamp-wrapper  @r{span around keyword plus timestamp}
9460 .tag                @r{tag in a headline}
9461 ._HOME              @r{each tag uses itself as a class, "@@" replaced by "_"}
9462 .target             @r{target for links}
9463 .linenr             @r{the line number in a code example}
9464 .code-highlighted   @r{for highlighting referenced code lines}
9465 div.outline-N       @r{div for outline level N (headline plus text))}
9466 div.outline-text-N  @r{extra div for text at outline level N}
9467 .section-number-N   @r{section number in headlines, different for each level}
9468 div.figure          @r{how to format an inlined image}
9469 pre.src             @r{formatted source code}
9470 pre.example         @r{normal example}
9471 p.verse             @r{verse paragraph}
9472 div.footnotes       @r{footnote section headline}
9473 p.footnote          @r{footnote definition paragraph, containing a footnote}
9474 .footref            @r{a footnote reference number (always a <sup>)}
9475 .footnum            @r{footnote number in footnote definition (always <sup>)}
9476 @end example
9478 @vindex org-export-html-style-default
9479 @vindex org-export-html-style-include-default
9480 @vindex org-export-html-style
9481 @vindex org-export-html-extra
9482 @vindex org-export-html-style-default
9483 Each exported file contains a compact default style that defines these
9484 classes in a basic way@footnote{This style is defined in the constant
9485 @code{org-export-html-style-default}, which you should not modify.  To turn
9486 inclusion of these defaults off, customize
9487 @code{org-export-html-style-include-default}}.  You may overwrite these
9488 settings, or add to them by using the variables @code{org-export-html-style}
9489 (for Org-wide settings) and @code{org-export-html-style-extra} (for more
9490 granular settings, like file-local settings).  To set the latter variable
9491 individually for each file, you can use
9493 @cindex #+STYLE
9494 @example
9495 #+STYLE: <link rel="stylesheet" type="text/css" href="stylesheet.css" />
9496 @end example
9498 @noindent
9499 For longer style definitions, you can use several such lines.  You could also
9500 directly write a @code{<style>} @code{</style>} section in this way, without
9501 referring to an external file.
9503 @c FIXME: More about header and footer styles
9504 @c FIXME: Talk about links and targets.
9506 @node Javascript support,  , CSS support, HTML export
9507 @subsection Javascript supported display of web pages
9509 @cindex Rose, Sebastian
9510 Sebastian Rose has written a JavaScript program especially designed to
9511 enhance the web viewing experience of HTML files created with Org.  This
9512 program allows you to view large files in two different ways.  The first one
9513 is an @emph{Info}-like mode where each section is displayed separately and
9514 navigation can be done with the @kbd{n} and @kbd{p} keys (and some other keys
9515 as well, press @kbd{?} for an overview of the available keys).  The second
9516 view type is a @emph{folding} view much like Org provides inside Emacs.  The
9517 script is available at @url{http://orgmode.org/org-info.js} and you can find
9518 the documentation for it at @url{http://orgmode.org/worg/code/org-info-js/}.
9519 We host the script at our site, but if you use it a lot, you might
9520 not want to be dependent on @url{orgmode.org} and prefer to install a local
9521 copy on your own web server.
9523 To use the script, you need to make sure that the @file{org-jsinfo.el} module
9524 gets loaded.  It should be loaded by default, but you can try @kbd{M-x
9525 customize-variable @key{RET} org-modules @key{RET}} to convince yourself that
9526 this is indeed the case.  All it then takes to make use of the program is
9527 adding a single line to the Org file:
9529 @cindex #+INFOJS_OPT
9530 @example
9531 #+INFOJS_OPT: view:info toc:nil
9532 @end example
9534 @noindent
9535 If this line is found, the HTML header will automatically contain the code
9536 needed to invoke the script.  Using the line above, you can set the following
9537 viewing options:
9539 @example
9540 path:    @r{The path to the script.  The default is to grab the script from}
9541          @r{@url{http://orgmode.org/org-info.js}, but you might want to have}
9542          @r{a local copy and use a path like @samp{../scripts/org-info.js}.}
9543 view:    @r{Initial view when website is first shown.  Possible values are:}
9544          info      @r{Info-like interface with one section per page.}
9545          overview  @r{Folding interface, initially showing only top-level.}
9546          content   @r{Folding interface, starting with all headlines visible.}
9547          showall   @r{Folding interface, all headlines and text visible.}
9548 sdepth:  @r{Maximum headline level that will still become an independent}
9549          @r{section for info and folding modes.  The default is taken from}
9550          @r{@code{org-export-headline-levels} (= the @code{H} switch in @code{#+OPTIONS}).}
9551          @r{If this is smaller than in @code{org-export-headline-levels}, each}
9552          @r{info/folding section can still contain child headlines.}
9553 toc:     @r{Should the table of content @emph{initially} be visible?}
9554          @r{Even when @code{nil}, you can always get to the "toc" with @kbd{i}.}
9555 tdepth:  @r{The depth of the table of contents.  The defaults are taken from}
9556          @r{the variables @code{org-export-headline-levels} and @code{org-export-with-toc}.}
9557 ftoc:    @r{Does the css of the page specify a fixed position for the "toc"?}
9558          @r{If yes, the toc will never be displayed as a section.}
9559 ltoc:    @r{Should there be short contents (children) in each section?}
9560          @r{Make this @code{above} if the section should be above initial text.}
9561 mouse:   @r{Headings are highlighted when the mouse is over them.  Should be}
9562          @r{@samp{underline} (default) or a background color like @samp{#cccccc}.}
9563 buttons: @r{Should view-toggle buttons be everywhere?  When @code{nil} (the}
9564          @r{default), only one such button will be present.}
9565 @end example
9566 @noindent
9567 @vindex org-infojs-options
9568 @vindex org-export-html-use-infojs
9569 You can choose default values for these options by customizing the variable
9570 @code{org-infojs-options}.  If you always want to apply the script to your
9571 pages, configure the variable @code{org-export-html-use-infojs}.
9573 @node LaTeX and PDF export, DocBook export, HTML export, Exporting
9574 @section La@TeX{} and PDF export
9575 @cindex La@TeX{} export
9576 @cindex PDF export
9577 @cindex Guerry, Bastien
9579 Org mode contains a La@TeX{} exporter written by Bastien Guerry.  With
9580 further processing@footnote{The default LaTeX output is designed for
9581 processing with pdftex or latex.  It includes packages that are not
9582 compatible with xetex and possibly luatex.  See the variables
9583 @code{org-export-latex-default-packages-alist} and
9584 @code{org-export-latex-packages-alist}.}, this backend is also used to
9585 produce PDF output.  Since the La@TeX{} output uses @file{hyperref} to
9586 implement links and cross references, the PDF output file will be fully
9587 linked.
9589 @menu
9590 * LaTeX/PDF export commands::   Which key invokes which commands
9591 * Header and sectioning::       Setting up the export file structure
9592 * Quoting LaTeX code::          Incorporating literal La@TeX{} code
9593 * Tables in LaTeX export::      Options for exporting tables to La@TeX{}
9594 * Images in LaTeX export::      How to insert figures into La@TeX{} output
9595 * Beamer class export::         Turning the file into a presentation
9596 @end menu
9598 @node LaTeX/PDF export commands, Header and sectioning, LaTeX and PDF export, LaTeX and PDF export
9599 @subsection La@TeX{} export commands
9601 @cindex region, active
9602 @cindex active region
9603 @cindex transient-mark-mode
9604 @table @kbd
9605 @kindex C-c C-e l
9606 @item C-c C-e l
9607 @cindex property EXPORT_FILE_NAME
9608 Export as La@TeX{} file @file{myfile.tex}.  For an Org file
9609 @file{myfile.org}, the ASCII file will be @file{myfile.tex}.  The file will
9610 be overwritten without warning.  If there is an active region@footnote{This
9611 requires @code{transient-mark-mode} be turned on.}, only the region will be
9612 exported. If the selected region is a single tree@footnote{To select the
9613 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
9614 title.  If the tree head entry has or inherits an @code{EXPORT_FILE_NAME}
9615 property, that name will be used for the export.
9616 @kindex C-c C-e L
9617 @item C-c C-e L
9618 Export to a temporary buffer, do not create a file.
9619 @kindex C-c C-e v l
9620 @kindex C-c C-e v L
9621 @item C-c C-e v l
9622 @item C-c C-e v L
9623 Export only the visible part of the document.
9624 @item M-x org-export-region-as-latex
9625 Convert the region to La@TeX{} under the assumption that it was Org mode
9626 syntax before.  This is a global command that can be invoked in any
9627 buffer.
9628 @item M-x org-replace-region-by-latex
9629 Replace the active region (assumed to be in Org mode syntax) by La@TeX{}
9630 code.
9631 @kindex C-c C-e p
9632 @item C-c C-e p
9633 Export as La@TeX{} and then process to PDF.
9634 @kindex C-c C-e d
9635 @item C-c C-e d
9636 Export as La@TeX{} and then process to PDF, then open the resulting PDF file.
9637 @end table
9639 @cindex headline levels, for exporting
9640 @vindex org-latex-low-levels
9641 In the exported version, the first 3 outline levels will become
9642 headlines, defining a general document structure.  Additional levels
9643 will be exported as description lists.  The exporter can ignore them or
9644 convert them to a custom string depending on
9645 @code{org-latex-low-levels}.
9647 If you want that transition to occur at a different level, specify it
9648 with a numeric prefix argument. For example,
9650 @example
9651 @kbd{C-2 C-c C-e l}
9652 @end example
9654 @noindent
9655 creates two levels of headings and does the rest as items.
9657 @node Header and sectioning, Quoting LaTeX code, LaTeX/PDF export commands, LaTeX and PDF export
9658 @subsection Header and sectioning structure
9659 @cindex La@TeX{} class
9660 @cindex La@TeX{} sectioning structure
9661 @cindex La@TeX{} header
9662 @cindex header, for LaTeX files
9663 @cindex sectioning structure, for LaTeX export
9665 By default, the La@TeX{} output uses the class @code{article}.
9667 @vindex org-export-latex-default-class
9668 @vindex org-export-latex-classes
9669 @vindex org-export-latex-default-packages-alist
9670 @vindex org-export-latex-packages-alist
9671 @cindex #+LATEX_HEADER
9672 @cindex #+LATEX_CLASS
9673 @cindex #+LATEX_CLASS_OPTIONS
9674 @cindex property, LATEX_CLASS
9675 @cindex property, LATEX_CLASS_OPTIONS
9676 You can change this globally by setting a different value for
9677 @code{org-export-latex-default-class} or locally by adding an option like
9678 @code{#+LaTeX_CLASS: myclass} in your file, or with a @code{:LaTeX_CLASS:}
9679 property that applies when exporting a region containing only this (sub)tree.
9680 The class must be listed in @code{org-export-latex-classes}.  This variable
9681 defines a header template for each class@footnote{Into which the values of
9682 @code{org-export-latex-default-packages-alist} and
9683 @code{org-export-latex-packages-alist} are spliced.}, and allows you to
9684 define the sectioning structure for each class.  You can also define your own
9685 classes there.  @code{#+LaTeX_CLASS_OPTIONS} or a @code{LaTeX_CLASS_OPTIONS}
9686 property can specify the options for the @code{\documentclass} macro.  You
9687 can also use @code{#+LATEX_HEADER: \usepackage@{xyz@}} to add lines to the
9688 header.  See the docstring of @code{org-export-latex-classes} for more
9689 information.
9691 @node Quoting LaTeX code, Tables in LaTeX export, Header and sectioning, LaTeX and PDF export
9692 @subsection Quoting La@TeX{} code
9694 Embedded La@TeX{} as described in @ref{Embedded LaTeX}, will be correctly
9695 inserted into the La@TeX{} file.  This includes simple macros like
9696 @samp{\ref@{LABEL@}} to create a cross reference to a figure.  Furthermore,
9697 you can add special code that should only be present in La@TeX{} export with
9698 the following constructs:
9700 @cindex #+LaTeX
9701 @cindex #+BEGIN_LaTeX
9702 @example
9703 #+LaTeX: Literal LaTeX code for export
9704 @end example
9706 @noindent or
9707 @cindex #+BEGIN_LaTeX
9709 @example
9710 #+BEGIN_LaTeX
9711 All lines between these markers are exported literally
9712 #+END_LaTeX
9713 @end example
9716 @node Tables in LaTeX export, Images in LaTeX export, Quoting LaTeX code, LaTeX and PDF export
9717 @subsection Tables in La@TeX{} export
9718 @cindex tables, in La@TeX{} export
9720 For La@TeX{} export of a table, you can specify a label and a caption
9721 (@pxref{Images and tables}).  You can also use the @code{ATTR_LaTeX} line to
9722 request a @code{longtable} environment for the table, so that it may span
9723 several pages, or provide the @code{multicolumn} keyword that will make the
9724 table span the page in a multicolumn environment (@code{table*} environment).
9725 Finally, you can set the alignment string:
9727 @cindex #+CAPTION
9728 @cindex #+LABEL
9729 @cindex #+ATTR_LaTeX
9730 @example
9731 #+CAPTION: A long table
9732 #+LABEL: tbl:long
9733 #+ATTR_LaTeX: longtable align=l|lp@{3cm@}r|l
9734 | ..... | ..... |
9735 | ..... | ..... |
9736 @end example
9739 @node Images in LaTeX export, Beamer class export, Tables in LaTeX export, LaTeX and PDF export
9740 @subsection Images in La@TeX{} export
9741 @cindex images, inline in La@TeX{}
9742 @cindex inlining images in La@TeX{}
9744 Images that are linked to without a description part in the link, like
9745 @samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]} will be inserted into the PDF
9746 output file resulting from La@TeX{} processing.  Org will use an
9747 @code{\includegraphics} macro to insert the image.  If you have specified a
9748 caption and/or a label as described in @ref{Images and tables}, the figure
9749 will be wrapped into a @code{figure} environment and thus become a floating
9750 element.  You can use an @code{#+ATTR_LaTeX:} line to specify the various
9751 options that can be used in the optional argument of the
9752 @code{\includegraphics} macro.  To modify the placement option of the
9753 @code{figure} environment, add something like @samp{placement=[h!]} to the
9754 Attributes.
9756 If you would like to let text flow around the image, add the word @samp{wrap}
9757 to the @code{#+ATTR_LaTeX:} line, which will make the figure occupy the left
9758 half of the page.  To fine-tune, the @code{placement} field will be the set
9759 of additional arguments needed by the @code{wrapfigure} environment.  Note
9760 that if you change the size of the image, you need to use compatible settings
9761 for @code{\includegraphics} and @code{wrapfigure}.
9763 @cindex #+CAPTION
9764 @cindex #+LABEL
9765 @cindex #+ATTR_LaTeX
9766 @example
9767 #+CAPTION:    The black-body emission of the disk around HR 4049
9768 #+LABEL:      fig:SED-HR4049
9769 #+ATTR_LaTeX: width=5cm,angle=90
9770 [[./img/sed-hr4049.pdf]]
9772 #+ATTR_LaTeX: width=0.38\textwidth wrap placement=@{r@}@{0.4\textwidth@}
9773 [[./img/hst.png]]
9774 @end example
9776 If you need references to a label created in this way, write
9777 @samp{\ref@{fig:SED-HR4049@}} just like in La@TeX{}.
9779 @node Beamer class export,  , Images in LaTeX export, LaTeX and PDF export
9780 @subsection Beamer class export
9782 The LaTeX class @file{beamer} allows production of high quality presentations
9783 using LaTeX and pdf processing.  Org-mode has special support for turning an
9784 Org-mode file or tree into a @file{beamer} presentation.
9786 When the LaTeX class for the current buffer (as set with @code{#+LaTeX_CLASS:
9787 beamer}) or subtree (set with a @code{LaTeX_CLASS} property) is
9788 @code{beamer}, a special export mode will turn the file or tree into a beamer
9789 presentation.  Any tree with not-too-deep level nesting should in principle be
9790 exportable as a beamer presentation.  By default, the top-level entries (or
9791 the first level below the selected subtree heading) will be turned into
9792 frames, and the outline structure below this level will become itemize lists.
9793 You can also configure the variable @code{org-beamer-frame-level} to a
9794 different level - then the hierarchy above frames will produce the sectioning
9795 structure of the presentation.
9797 A template for useful in-buffer settings or properties can be inserted into
9798 the buffer with @kbd{M-x org-beamer-settings-template}.  Among other things,
9799 this will install a column view format which is very handy for editing
9800 special properties used by beamer.
9802 You can influence the structure of the presentation using the following
9803 properties:
9805 @table @code
9806 @item BEAMER_env
9807 The environment that should be used to format this entry.  Valid environments
9808 are defined in the constant @code{org-beamer-environments-default}, and you
9809 can define more in @code{org-beamer-environments-extra}.  If this property is
9810 set, the entry will also get a @code{:B_environment:} tag to make this
9811 visible.  This tag has no semantic meaning, it is only a visual aid.
9812 @item BEAMER_envargs
9813 The beamer-special arguments that should be used for the environment, like
9814 @code{[t]} or @code{[<+->]} of @code{<2-3>}.  If the @code{BEAMER_col}
9815 property is also set, something like @code{C[t]} can be added here as well to
9816 set an options argument for the implied @code{columns} environment.
9817 @code{c[t]} will set an option for the implied @code{column} environment.
9818 @item BEAMER_col
9819 The width of a column that should start with this entry.  If this property is
9820 set, the entry will also get a @code{:BMCOL:} property to make this visible.
9821 Also this tag is only a visual aid.  When this is a plain number, it will be
9822 interpreted as a fraction of @code{\textwidth}.  Otherwise it will be assumed
9823 that you have specified the units, like @samp{3cm}.  The first such property
9824 in a frame will start a @code{columns} environment to surround the columns.
9825 This environment is closed when an entry has a @code{BEAMER_col} property
9826 with value 0 or 1, or automatically at the end of the frame.
9827 @item BEAMER_extra
9828 Additional commands that should be inserted after the environment has been
9829 opened.  For example, when creating a frame, this can be used to specify
9830 transitions.
9831 @end table
9833 Frames will automatically receive a @code{fragile} option if they contain
9834 source code that uses the verbatim environment.  Special @file{beamer}
9835 specific code can be inserted using @code{#+BEAMER:} and
9836 @code{#+BEGIN_beamer...#+end_beamer} constructs, similar to other export
9837 backends, but with the difference that @code{#+LaTeX:} stuff will be included
9838 in the presentation as well.
9840 Outline nodes with @code{BEAMER_env} property value @samp{note} or
9841 @samp{noteNH} will be formatted as beamer notes, i,e, they will be wrapped
9842 into @code{\note@{...@}}.  The former will include the heading as part of the
9843 note text, the latter will ignore the heading of that node.  To simplify note
9844 generation, it is actually enough to mark the note with a @emph{tag} (either
9845 @code{:B_note:} or @code{:B_noteNH:}) instead of creating the
9846 @code{BEAMER_env} property.
9848 You can turn on a special minor mode @code{org-beamer-mode} for editing
9849 support with
9851 @example
9852 #+STARTUP: beamer
9853 @end example
9855 @table @kbd
9856 @kindex C-c C-b
9857 @item C-c C-b
9858 In @code{org-beamer-mode}, this key offers fast selection of a beamer
9859 environment or the @code{BEAMER_col} property.
9860 @end table
9862 Column view provides a great way to set the environment of a node and other
9863 important parameters.  Make sure you are using a COLUMN format that is geared
9864 toward this special purpose.  The command @kbd{M-x
9865 org-beamer-settings-template} defines such a format.
9867 Here is a simple example Org document that is intended for beamer export.
9869 @smallexample
9870 #+LaTeX_CLASS: beamer
9871 #+TITLE: Example Presentation
9872 #+AUTHOR: Carsten Dominik
9873 #+LaTeX_CLASS_OPTIONS: [presentation]
9874 #+BEAMER_FRAME_LEVEL: 2
9875 #+BEAMER_HEADER_EXTRA: \usetheme@{Madrid@}\usecolortheme@{default@}
9876 #+COLUMNS: %35ITEM %10BEAMER_env(Env) %10BEAMER_envargs(Args) %4BEAMER_col(Col) %8BEAMER_extra(Ex)
9878 * This is the first structural section
9880 ** Frame 1 \\ with a subtitle
9881 *** Thanks to Eric Fraga                                      :BMCOL:B_block:
9882     :PROPERTIES:
9883     :BEAMER_env: block
9884     :BEAMER_envargs: C[t]
9885     :BEAMER_col: 0.5
9886     :END:
9887     for the first viable beamer setup in Org
9888 *** Thanks to everyone else                                   :BMCOL:B_block:
9889     :PROPERTIES:
9890     :BEAMER_col: 0.5
9891     :BEAMER_env: block
9892     :BEAMER_envargs: <2->
9893     :END:
9894     for contributing to the discussion
9895 **** This will be formatted as a beamer note                  :B_note:
9896 ** Frame 2 \\ where we will not use columns
9897 *** Request                                                   :B_block:
9898     Please test this stuff!
9899     :PROPERTIES:
9900     :BEAMER_env: block
9901     :END:
9902 @end smallexample
9904 For more information, see the documentation on Worg.
9906 @node DocBook export, TaskJuggler export, LaTeX and PDF export, Exporting
9907 @section DocBook export
9908 @cindex DocBook export
9909 @cindex PDF export
9910 @cindex Cui, Baoqiu
9912 Org contains a DocBook exporter written by Baoqiu Cui.  Once an Org file is
9913 exported to DocBook format, it can be further processed to produce other
9914 formats, including PDF, HTML, man pages, etc., using many available DocBook
9915 tools and stylesheets.
9917 Currently DocBook exporter only supports DocBook V5.0.
9919 @menu
9920 * DocBook export commands::     How to invoke DocBook export
9921 * Quoting DocBook code::        Incorporating DocBook code in Org files
9922 * Recursive sections::          Recursive sections in DocBook
9923 * Tables in DocBook export::    Tables are exported as HTML tables
9924 * Images in DocBook export::    How to insert figures into DocBook output
9925 * Special characters::          How to handle special characters
9926 @end menu
9928 @node DocBook export commands, Quoting DocBook code, DocBook export, DocBook export
9929 @subsection DocBook export commands
9931 @cindex region, active
9932 @cindex active region
9933 @cindex transient-mark-mode
9934 @table @kbd
9935 @kindex C-c C-e D
9936 @item C-c C-e D
9937 @cindex property EXPORT_FILE_NAME
9938 Export as DocBook file.  For an Org file, @file{myfile.org}, the DocBook XML
9939 file will be @file{myfile.xml}.  The file will be overwritten without
9940 warning.  If there is an active region@footnote{This requires
9941 @code{transient-mark-mode} to be turned on}, only the region will be
9942 exported.  If the selected region is a single tree@footnote{To select the
9943 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
9944 title.  If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
9945 property, that name will be used for the export.
9946 @kindex C-c C-e V
9947 @item C-c C-e V
9948 Export as DocBook file, process to PDF, then open the resulting PDF file.
9950 @vindex org-export-docbook-xslt-proc-command
9951 @vindex org-export-docbook-xsl-fo-proc-command
9952 Note that, in order to produce PDF output based on exported DocBook file, you
9953 need to have XSLT processor and XSL-FO processor software installed on your
9954 system.  Check variables @code{org-export-docbook-xslt-proc-command} and
9955 @code{org-export-docbook-xsl-fo-proc-command}.
9957 @vindex org-export-docbook-xslt-stylesheet
9958 The stylesheet argument @code{%s} in variable
9959 @code{org-export-docbook-xslt-proc-command} is replaced by the value of
9960 variable @code{org-export-docbook-xslt-stylesheet}, which needs to be set by
9961 the user.  You can also overrule this global setting on a per-file basis by
9962 adding an in-buffer setting @code{#+XSLT:} to the Org file.
9964 @kindex C-c C-e v D
9965 @item C-c C-e v D
9966 Export only the visible part of the document.
9967 @end table
9969 @node Quoting DocBook code, Recursive sections, DocBook export commands, DocBook export
9970 @subsection Quoting DocBook code
9972 You can quote DocBook code in Org files and copy it verbatim into exported
9973 DocBook file with the following constructs:
9975 @cindex #+DOCBOOK
9976 @cindex #+BEGIN_DOCBOOK
9977 @example
9978 #+DOCBOOK: Literal DocBook code for export
9979 @end example
9981 @noindent or
9982 @cindex #+BEGIN_DOCBOOK
9984 @example
9985 #+BEGIN_DOCBOOK
9986 All lines between these markers are exported by DocBook exporter
9987 literally.
9988 #+END_DOCBOOK
9989 @end example
9991 For example, you can use the following lines to include a DocBook warning
9992 admonition.  As to what this warning says, you should pay attention to the
9993 document context when quoting DocBook code in Org files.  You may make
9994 exported DocBook XML files invalid by not quoting DocBook code correctly.
9996 @example
9997 #+BEGIN_DOCBOOK
9998 <warning>
9999   <para>You should know what you are doing when quoting DocBook XML code
10000   in your Org file.  Invalid DocBook XML file may be generated by
10001   DocBook exporter if you are not careful!</para>
10002 </warning>
10003 #+END_DOCBOOK
10004 @end example
10006 @node Recursive sections, Tables in DocBook export, Quoting DocBook code, DocBook export
10007 @subsection Recursive sections
10008 @cindex DocBook recursive sections
10010 DocBook exporter exports Org files as articles using the @code{article}
10011 element in DocBook.  Recursive sections, i.e. @code{section} elements, are
10012 used in exported articles.  Top level headlines in Org files are exported as
10013 top level sections, and lower level headlines are exported as nested
10014 sections.  The entire structure of Org files will be exported completely, no
10015 matter how many nested levels of headlines there are.
10017 Using recursive sections makes it easy to port and reuse exported DocBook
10018 code in other DocBook document types like @code{book} or @code{set}.
10020 @node Tables in DocBook export, Images in DocBook export, Recursive sections, DocBook export
10021 @subsection Tables in DocBook export
10022 @cindex tables, in DocBook export
10024 Tables in Org files are exported as HTML tables, which have been supported since
10025 DocBook V4.3.
10027 If a table does not have a caption, an informal table is generated using the
10028 @code{informaltable} element; otherwise, a formal table will be generated
10029 using the @code{table} element.
10031 @node Images in DocBook export, Special characters, Tables in DocBook export, DocBook export
10032 @subsection Images in DocBook export
10033 @cindex images, inline in DocBook
10034 @cindex inlining images in DocBook
10036 Images that are linked to without a description part in the link, like
10037 @samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]}, will be exported to DocBook
10038 using @code{mediaobject} elements.  Each @code{mediaobject} element contains
10039 an @code{imageobject} that wraps an @code{imagedata} element.  If you have
10040 specified a caption for an image as described in @ref{Images and tables}, a
10041 @code{caption} element will be added in @code{mediaobject}.  If a label is
10042 also specified, it will be exported as an @code{xml:id} attribute of the
10043 @code{mediaobject} element.
10045 @vindex org-export-docbook-default-image-attributes
10046 Image attributes supported by the @code{imagedata} element, like @code{align}
10047 or @code{width}, can be specified in two ways: you can either customize
10048 variable @code{org-export-docbook-default-image-attributes} or use the
10049 @code{#+ATTR_DOCBOOK:} line.  Attributes specified in variable
10050 @code{org-export-docbook-default-image-attributes} are applied to all inline
10051 images in the Org file to be exported (unless they are overridden by image
10052 attributes specified in @code{#+ATTR_DOCBOOK:} lines).
10054 The @code{#+ATTR_DOCBOOK:} line can be used to specify additional image
10055 attributes or override default image attributes for individual images.  If
10056 the same attribute appears in both the @code{#+ATTR_DOCBOOK:} line and
10057 variable @code{org-export-docbook-default-image-attributes}, the former
10058 takes precedence.  Here is an example about how image attributes can be
10059 set:
10061 @cindex #+CAPTION
10062 @cindex #+LABEL
10063 @cindex #+ATTR_DOCBOOK
10064 @example
10065 #+CAPTION:    The logo of Org mode
10066 #+LABEL:      unicorn-svg
10067 #+ATTR_DOCBOOK: scalefit="1" width="100%" depth="100%"
10068 [[./img/org-mode-unicorn.svg]]
10069 @end example
10071 @vindex org-export-docbook-inline-image-extensions
10072 By default, DocBook exporter recognizes the following image file types:
10073 @file{jpeg}, @file{jpg}, @file{png}, @file{gif}, and @file{svg}.  You can
10074 customize variable @code{org-export-docbook-inline-image-extensions} to add
10075 more types to this list as long as DocBook supports them.
10077 @node Special characters,  , Images in DocBook export, DocBook export
10078 @subsection Special characters in DocBook export
10079 @cindex Special characters in DocBook export
10081 @vindex org-export-docbook-doctype
10082 @vindex org-entities
10083 Special characters that are written in @TeX{}-like syntax, such as @code{\alpha},
10084 @code{\Gamma}, and @code{\Zeta}, are supported by DocBook exporter.  These
10085 characters are rewritten to XML entities, like @code{&alpha;},
10086 @code{&Gamma;}, and @code{&Zeta;}, based on the list saved in variable
10087 @code{org-entities}.  As long as the generated DocBook file includes the
10088 corresponding entities, these special characters are recognized.
10090 You can customize variable @code{org-export-docbook-doctype} to include the
10091 entities you need.  For example, you can set variable
10092 @code{org-export-docbook-doctype} to the following value to recognize all
10093 special characters included in XHTML entities:
10095 @example
10096 "<!DOCTYPE article [
10097 <!ENTITY % xhtml1-symbol PUBLIC
10098 \"-//W3C//ENTITIES Symbol for HTML//EN//XML\"
10099 \"http://www.w3.org/2003/entities/2007/xhtml1-symbol.ent\"
10101 %xhtml1-symbol;
10104 @end example
10106 @node  TaskJuggler export, Freemind export, DocBook export, Exporting
10107 @section TaskJuggler export
10108 @cindex TaskJuggler export
10109 @cindex Project management
10111 @uref{http://www.taskjuggler.org/, TaskJuggler} is a project management tool.
10112 It provides an optimizing scheduler that computes your project time lines and
10113 resource assignments based on the project outline and the constraints that
10114 you have provided.
10116 The TaskJuggler exporter is a bit different from other exporters, such as the
10117 HTML and LaTeX exporters for example, in that it does not export all the
10118 nodes of a document or strictly follow the order of the nodes in the
10119 document.
10121 Instead the TaskJuggler exporter looks for a tree that defines the tasks and
10122 a optionally tree that defines the resources for this project. It then
10123 creates a TaskJuggler file based on these trees and the attributes defined in
10124 all the nodes.
10126 @subsection TaskJuggler export commands
10128 @table @kbd
10129 @kindex C-c C-e j
10130 @item C-c C-e j
10131 Export as TaskJuggler file.
10133 @kindex C-c C-e J
10134 @item C-c C-e J
10135 Export as TaskJuggler file and then open the file with TaskJugglerUI.
10136 @end table
10138 @subsection Tasks
10140 @vindex org-export-taskjuggler-project-tag
10141 Create your tasks as you usually do with Org-mode. Assign efforts to each
10142 task using properties (it's easiest to do this in the column view). You
10143 should end up with something similar to the example by Peter Jones in
10144 @url{http://www.contextualdevelopment.com/static/artifacts/articles/2008/project-planning/project-planning.org}.
10145 Now mark the top node of your tasks with a tag named
10146 @code{:taskjuggler_project:} (or whatever you customized
10147 @code{org-export-taskjuggler-project-tag} to). You are now ready to export
10148 the project plan with @kbd{C-c C-e J} which will export the project plan and
10149 open a gantt chart in TaskJugglerUI.
10151 @subsection Resources
10153 @vindex org-export-taskjuggler-resource-tag
10154 Next you can define resources and assign those to work on specific tasks. You
10155 can group your resources hierarchically. Tag the top node of the resources
10156 with @code{:taskjuggler_resource:} (or whatever you customized
10157 @code{org-export-taskjuggler-resource-tag} to). You can optionally assign an
10158 identifier (named @samp{resource_id}) to the resources (using the standard
10159 Org properties commands, @pxref{Property syntax}) or you can let the exporter
10160 generate identifiers automatically (the exporter picks the first word of the
10161 headline as the identifier as long as it is unique, see the documentation of
10162 @code{org-taskjuggler-get-unique-id}). Using that identifier you can then
10163 allocate resources to tasks. This is again done with the @samp{allocate}
10164 property on the tasks. Do this in column view or when on the task type
10165 @kbd{C-c C-x p allocate @key{RET} <resource_id> @key{RET}}.
10167 Once the allocations are done you can again export to TaskJuggler and check
10168 in the Resource Allocation Graph which person is working on what task at what
10169 time.
10171 @subsection Export of properties
10173 The exporter also takes TODO state information into consideration, i.e. if a
10174 task is marked as done it will have the corresponding attribute in
10175 TaskJuggler (@samp{complete 100}). Also it will export any property on a task
10176 resource or resource node which is known to TaskJuggler, such as
10177 @samp{limits}, @samp{vacation}, @samp{shift}, @samp{booking},
10178 @samp{efficiency}, @samp{journalentry}, @samp{rate} for resources or
10179 @samp{account}, @samp{start}, @samp{note}, @samp{duration}, @samp{end},
10180 @samp{journalentry}, @samp{milestone}, @samp{reference}, @samp{responsible},
10181 @samp{scheduling}, etc for tasks.
10183 @subsection Dependencies
10185 The exporter will handle dependencies that are defined in the tasks either
10186 with the @samp{ORDERED} attribute (@pxref{TODO dependencies}), with the
10187 @samp{BLOCKER} attribute (see org-depend.el) or alternatively with a
10188 @samp{depends} attribute. Both the @samp{BLOCKER} and the @samp{depends}
10189 attribute can be either @samp{previous-sibling} or a reference to an
10190 identifier (named @samp{task_id}) which is defined for another task in the
10191 project. @samp{BLOCKER} and the @samp{depends} attribute can define multiple
10192 dependencies separated by either space or comma. You can also specify
10193 optional attributes on the dependency by simply appending it. The following
10194 examples should illustrate this:
10196 @example
10197 * Preparation
10198   :PROPERTIES:
10199   :task_id:  preparation
10200   :ORDERED:  t
10201   :END:
10202 * Training material
10203   :PROPERTIES:
10204   :task_id:  training_material
10205   :ORDERED:  t
10206   :END:
10207 ** Markup Guidelines
10208    :PROPERTIES:
10209    :Effort:   2.0
10210    :END:
10211 ** Workflow Guidelines
10212    :PROPERTIES:
10213    :Effort:   2.0
10214    :END:
10215 * Presentation
10216   :PROPERTIES:
10217   :Effort:   2.0
10218   :BLOCKER:  training_material @{ gapduration 1d @} preparation
10219   :END:
10220 @end example
10222 @subsection Reports
10224 @vindex org-export-taskjuggler-default-reports
10225 TaskJuggler can produce many kinds of reports (e.g. gantt chart, resource
10226 allocation, etc). The user defines what kind of reports should be generated
10227 for a project in the TaskJuggler file. The exporter will automatically insert
10228 some default reports in the file. These defaults are defined in
10229 @code{org-export-taskjuggler-default-reports}. They can be modified using
10230 customize along with a number of other options. For a more complete list, see
10231 @kbd{M-x customize-group @key{RET} org-export-taskjuggler @key{RET}}.
10233 For more information and examples see the Org-taskjuggler tutorial at
10234 @uref{http://orgmode.org/worg/org-tutorials/org-taskjuggler.php}.
10236 @node Freemind export, XOXO export, TaskJuggler export, Exporting
10237 @section Freemind export
10238 @cindex Freemind export
10239 @cindex mind map
10241 The freemind exporter was written by Lennart Borgman.
10243 @table @kbd
10244 @kindex C-c C-e m
10245 @item C-c C-e m
10246 Export as Freemind mind map @file{myfile.mm}.
10247 @end table
10249 @node XOXO export, iCalendar export, Freemind export, Exporting
10250 @section XOXO export
10251 @cindex XOXO export
10253 Org mode contains an exporter that produces XOXO-style output.
10254 Currently, this exporter only handles the general outline structure and
10255 does not interpret any additional Org-mode features.
10257 @table @kbd
10258 @kindex C-c C-e x
10259 @item C-c C-e x
10260 Export as XOXO file @file{myfile.html}.
10261 @kindex C-c C-e v
10262 @item C-c C-e v x
10263 Export only the visible part of the document.
10264 @end table
10266 @node iCalendar export,  , XOXO export, Exporting
10267 @section iCalendar export
10268 @cindex iCalendar export
10270 @vindex org-icalendar-include-todo
10271 @vindex org-icalendar-use-deadline
10272 @vindex org-icalendar-use-scheduled
10273 @vindex org-icalendar-categories
10274 Some people use Org mode for keeping track of projects, but still prefer a
10275 standard calendar application for anniversaries and appointments.  In this
10276 case it can be useful to show deadlines and other time-stamped items in Org
10277 files in the calendar application.  Org mode can export calendar information
10278 in the standard iCalendar format.  If you also want to have TODO entries
10279 included in the export, configure the variable
10280 @code{org-icalendar-include-todo}.  Plain timestamps are exported as VEVENT,
10281 and TODO items as VTODO.  It will also create events from deadlines that are
10282 in non-TODO items.  Deadlines and scheduling dates in TODO items will be used
10283 to set the start and due dates for the TODO entry@footnote{See the variables
10284 @code{org-icalendar-use-deadline} and @code{org-icalendar-use-scheduled}.}.
10285 As categories, it will use the tags locally defined in the heading, and the
10286 file/tree category@footnote{To add inherited tags or the TODO state,
10287 configure the variable @code{org-icalendar-categories}.}.
10289 @vindex org-icalendar-store-UID
10290 @cindex property, ID
10291 The iCalendar standard requires each entry to have a globally unique
10292 identifier (UID).  Org creates these identifiers during export.  If you set
10293 the variable @code{org-icalendar-store-UID}, the UID will be stored in the
10294 @code{:ID:} property of the entry and re-used next time you report this
10295 entry.  Since a single entry can give rise to multiple iCalendar entries (as
10296 a timestamp, a deadline, a scheduled item, and as a TODO item), Org adds
10297 prefixes to the UID, depending on what triggered the inclusion of the entry.
10298 In this way the UID remains unique, but a synchronization program can still
10299 figure out from which entry all the different instances originate.
10301 @table @kbd
10302 @kindex C-c C-e i
10303 @item C-c C-e i
10304 Create iCalendar entries for the current file and store them in the same
10305 directory, using a file extension @file{.ics}.
10306 @kindex C-c C-e I
10307 @item C-c C-e I
10308 @vindex org-agenda-files
10309 Like @kbd{C-c C-e i}, but do this for all files in
10310 @code{org-agenda-files}.  For each of these files, a separate iCalendar
10311 file will be written.
10312 @kindex C-c C-e c
10313 @item C-c C-e c
10314 @vindex org-combined-agenda-icalendar-file
10315 Create a single large iCalendar file from all files in
10316 @code{org-agenda-files} and write it to the file given by
10317 @code{org-combined-agenda-icalendar-file}.
10318 @end table
10320 @vindex org-use-property-inheritance
10321 @vindex org-icalendar-include-body
10322 @cindex property, SUMMARY
10323 @cindex property, DESCRIPTION
10324 @cindex property, LOCATION
10325 The export will honor SUMMARY, DESCRIPTION and LOCATION@footnote{The LOCATION
10326 property can be inherited from higher in the hierarchy if you configure
10327 @code{org-use-property-inheritance} accordingly.} properties if the selected
10328 entries have them.  If not, the summary will be derived from the headline,
10329 and the description from the body (limited to
10330 @code{org-icalendar-include-body} characters).
10332 How this calendar is best read and updated, depends on the application
10333 you are using.  The FAQ covers this issue.
10335 @node Publishing, Working With Source Code, Exporting, Top
10336 @chapter Publishing
10337 @cindex publishing
10338 @cindex O'Toole, David
10340 Org includes a publishing management system that allows you to configure
10341 automatic HTML conversion of @emph{projects} composed of interlinked org
10342 files.  You can also configure Org to automatically upload your exported HTML
10343 pages and related attachments, such as images and source code files, to a web
10344 server.
10346 You can also use Org to convert files into PDF, or even combine HTML and PDF
10347 conversion so that files are available in both formats on the server.
10349 Publishing has been contributed to Org by David O'Toole.
10351 @menu
10352 * Configuration::               Defining projects
10353 * Uploading files::             How to get files up on the server
10354 * Sample configuration::        Example projects
10355 * Triggering publication::      Publication commands
10356 @end menu
10358 @node Configuration, Uploading files, Publishing, Publishing
10359 @section Configuration
10361 Publishing needs significant configuration to specify files, destination
10362 and many other properties of a project.
10364 @menu
10365 * Project alist::               The central configuration variable
10366 * Sources and destinations::    From here to there
10367 * Selecting files::             What files are part of the project?
10368 * Publishing action::           Setting the function doing the publishing
10369 * Publishing options::          Tweaking HTML export
10370 * Publishing links::            Which links keep working after publishing?
10371 * Sitemap::                     Generating a list of all pages
10372 * Generating an index::         An index that reaches across pages
10373 @end menu
10375 @node Project alist, Sources and destinations, Configuration, Configuration
10376 @subsection The variable @code{org-publish-project-alist}
10377 @cindex org-publish-project-alist
10378 @cindex projects, for publishing
10380 @vindex org-publish-project-alist
10381 Publishing is configured almost entirely through setting the value of one
10382 variable, called @code{org-publish-project-alist}.  Each element of the list
10383 configures one project, and may be in one of the two following forms:
10385 @lisp
10386    ("project-name" :property value :property value ...)
10387 @r{or}
10388    ("project-name" :components ("project-name" "project-name" ...))
10390 @end lisp
10392 In both cases, projects are configured by specifying property values.  A
10393 project defines the set of files that will be published, as well as the
10394 publishing configuration to use when publishing those files.  When a project
10395 takes the second form listed above, the individual members of the
10396 @code{:components} property are taken to be sub-projects, which group
10397 together files requiring different publishing options.  When you publish such
10398 a ``meta-project'', all the components will also be published, in the
10399 sequence given.
10401 @node Sources and destinations, Selecting files, Project alist, Configuration
10402 @subsection Sources and destinations for files
10403 @cindex directories, for publishing
10405 Most properties are optional, but some should always be set.  In
10406 particular, Org needs to know where to look for source files,
10407 and where to put published files.
10409 @multitable @columnfractions 0.3 0.7
10410 @item @code{:base-directory}
10411 @tab Directory containing publishing source files
10412 @item @code{:publishing-directory}
10413 @tab Directory where output files will be published.  You can directly
10414 publish to a webserver using a file name syntax appropriate for
10415 the Emacs @file{tramp} package.  Or you can publish to a local directory and
10416 use external tools to upload your website (@pxref{Uploading files}).
10417 @item @code{:preparation-function}
10418 @tab Function or list of functions to be called before starting the
10419 publishing process, for example, to run @code{make} for updating files to be
10420 published.  The project property list is scoped into this call as the
10421 variable @code{project-plist}.
10422 @item @code{:completion-function}
10423 @tab Function or list of functions called after finishing the publishing
10424 process, for example, to change permissions of the resulting files.  The
10425 project property list is scoped into this call as the variable
10426 @code{project-plist}.
10427 @end multitable
10428 @noindent
10430 @node Selecting files, Publishing action, Sources and destinations, Configuration
10431 @subsection Selecting files
10432 @cindex files, selecting for publishing
10434 By default, all files with extension @file{.org} in the base directory
10435 are considered part of the project.  This can be modified by setting the
10436 properties
10437 @multitable @columnfractions 0.25 0.75
10438 @item @code{:base-extension}
10439 @tab Extension (without the dot!) of source files.  This actually is a
10440 regular expression.  Set this to the symbol @code{any} if you want to get all
10441 files in @code{:base-directory}, even without extension.
10443 @item @code{:exclude}
10444 @tab Regular expression to match file names that should not be
10445 published, even though they have been selected on the basis of their
10446 extension.
10448 @item @code{:include}
10449 @tab List of files to be included regardless of @code{:base-extension}
10450 and @code{:exclude}.
10451 @end multitable
10453 @node Publishing action, Publishing options, Selecting files, Configuration
10454 @subsection Publishing action
10455 @cindex action, for publishing
10457 Publishing means that a file is copied to the destination directory and
10458 possibly transformed in the process.  The default transformation is to export
10459 Org files as HTML files, and this is done by the function
10460 @code{org-publish-org-to-html} which calls the HTML exporter (@pxref{HTML
10461 export}).  But you also can publish your content as PDF files using
10462 @code{org-publish-org-to-pdf}.  If you want to publish the Org file itself,
10463 but with @i{archived}, @i{commented}, and @i{tag-excluded} trees removed, use
10464 @code{org-publish-org-to-org} and set the parameters @code{:plain-source}
10465 and/or @code{:htmlized-source}.  This will produce @file{file.org} and
10466 @file{file.org.html} in the publishing
10467 directory@footnote{@file{file-source.org} and @file{file-source.org.html} if
10468 source and publishing directories are equal.  Note that with this kind of
10469 setup, you need to add @code{:exclude "-source\\.org"} to the project
10470 definition in @code{org-publish-project-alist} to avoid that the published
10471 source files will be considered as new org files the next time the project is
10472 published.}.  Other files like images only
10473 need to be copied to the publishing destination, for this you may use
10474 @code{org-publish-attachment}.  For non-Org files, you always need to
10475 specify the publishing function:
10477 @multitable @columnfractions 0.3 0.7
10478 @item @code{:publishing-function}
10479 @tab Function executing the publication of a file.  This may also be a
10480 list of functions, which will all be called in turn.
10481 @item @code{:plain-source}
10482 @tab Non-nil means, publish plain source.
10483 @item @code{:htmlized-source}
10484 @tab Non-nil means, publish htmlized source.
10485 @end multitable
10487 The function must accept three arguments: a property list containing at least
10488 a @code{:publishing-directory} property, the name of the file to be
10489 published, and the path to the publishing directory of the output file.  It
10490 should take the specified file, make the necessary transformation (if any)
10491 and place the result into the destination folder.
10493 @node Publishing options, Publishing links, Publishing action, Configuration
10494 @subsection Options for the HTML/La@TeX{} exporters
10495 @cindex options, for publishing
10497 The property list can be used to set many export options for the HTML
10498 and La@TeX{} exporters.  In most cases, these properties correspond to user
10499 variables in Org.  The table below lists these properties along
10500 with the variable they belong to.  See the documentation string for the
10501 respective variable for details.
10503 @vindex org-export-html-link-up
10504 @vindex org-export-html-link-home
10505 @vindex org-export-default-language
10506 @vindex org-display-custom-times
10507 @vindex org-export-headline-levels
10508 @vindex org-export-with-section-numbers
10509 @vindex org-export-section-number-format
10510 @vindex org-export-with-toc
10511 @vindex org-export-preserve-breaks
10512 @vindex org-export-with-archived-trees
10513 @vindex org-export-with-emphasize
10514 @vindex org-export-with-sub-superscripts
10515 @vindex org-export-with-special-strings
10516 @vindex org-export-with-footnotes
10517 @vindex org-export-with-drawers
10518 @vindex org-export-with-tags
10519 @vindex org-export-with-todo-keywords
10520 @vindex org-export-with-priority
10521 @vindex org-export-with-TeX-macros
10522 @vindex org-export-with-LaTeX-fragments
10523 @vindex org-export-skip-text-before-1st-heading
10524 @vindex org-export-with-fixed-width
10525 @vindex org-export-with-timestamps
10526 @vindex org-export-author-info
10527 @vindex org-export-email
10528 @vindex org-export-creator-info
10529 @vindex org-export-with-tables
10530 @vindex org-export-highlight-first-table-line
10531 @vindex org-export-html-style-include-default
10532 @vindex org-export-html-style
10533 @vindex org-export-html-style-extra
10534 @vindex org-export-html-link-org-files-as-html
10535 @vindex org-export-html-inline-images
10536 @vindex org-export-html-extension
10537 @vindex org-export-html-table-tag
10538 @vindex org-export-html-expand
10539 @vindex org-export-html-with-timestamp
10540 @vindex org-export-publishing-directory
10541 @vindex org-export-html-preamble
10542 @vindex org-export-html-postamble
10543 @vindex org-export-html-auto-preamble
10544 @vindex org-export-html-auto-postamble
10545 @vindex user-full-name
10546 @vindex user-mail-address
10547 @vindex org-export-select-tags
10548 @vindex org-export-exclude-tags
10550 @multitable @columnfractions 0.32 0.68
10551 @item @code{:link-up}               @tab @code{org-export-html-link-up}
10552 @item @code{:link-home}             @tab @code{org-export-html-link-home}
10553 @item @code{:language}              @tab @code{org-export-default-language}
10554 @item @code{:customtime}            @tab @code{org-display-custom-times}
10555 @item @code{:headline-levels}       @tab @code{org-export-headline-levels}
10556 @item @code{:section-numbers}       @tab @code{org-export-with-section-numbers}
10557 @item @code{:section-number-format} @tab @code{org-export-section-number-format}
10558 @item @code{:table-of-contents}     @tab @code{org-export-with-toc}
10559 @item @code{:preserve-breaks}       @tab @code{org-export-preserve-breaks}
10560 @item @code{:archived-trees}        @tab @code{org-export-with-archived-trees}
10561 @item @code{:emphasize}             @tab @code{org-export-with-emphasize}
10562 @item @code{:sub-superscript}       @tab @code{org-export-with-sub-superscripts}
10563 @item @code{:special-strings}       @tab @code{org-export-with-special-strings}
10564 @item @code{:footnotes}             @tab @code{org-export-with-footnotes}
10565 @item @code{:drawers}               @tab @code{org-export-with-drawers}
10566 @item @code{:tags}                  @tab @code{org-export-with-tags}
10567 @item @code{:todo-keywords}         @tab @code{org-export-with-todo-keywords}
10568 @item @code{:priority}              @tab @code{org-export-with-priority}
10569 @item @code{:TeX-macros}            @tab @code{org-export-with-TeX-macros}
10570 @item @code{:LaTeX-fragments}       @tab @code{org-export-with-LaTeX-fragments}
10571 @item @code{:latex-listings}        @tab @code{org-export-latex-listings}
10572 @item @code{:skip-before-1st-heading} @tab @code{org-export-skip-text-before-1st-heading}
10573 @item @code{:fixed-width}           @tab @code{org-export-with-fixed-width}
10574 @item @code{:timestamps}            @tab @code{org-export-with-timestamps}
10575 @item @code{:author-info}           @tab @code{org-export-author-info}
10576 @item @code{:email-info}            @tab @code{org-export-email-info}
10577 @item @code{:creator-info}          @tab @code{org-export-creator-info}
10578 @item @code{:tables}                @tab @code{org-export-with-tables}
10579 @item @code{:table-auto-headline}   @tab @code{org-export-highlight-first-table-line}
10580 @item @code{:style-include-default} @tab @code{org-export-html-style-include-default}
10581 @item @code{:style}                 @tab @code{org-export-html-style}
10582 @item @code{:style-extra}           @tab @code{org-export-html-style-extra}
10583 @item @code{:convert-org-links}     @tab @code{org-export-html-link-org-files-as-html}
10584 @item @code{:inline-images}         @tab @code{org-export-html-inline-images}
10585 @item @code{:html-extension}        @tab @code{org-export-html-extension}
10586 @item @code{:xml-declaration}       @tab @code{org-export-html-xml-declaration}
10587 @item @code{:html-table-tag}        @tab @code{org-export-html-table-tag}
10588 @item @code{:expand-quoted-html}    @tab @code{org-export-html-expand}
10589 @item @code{:timestamp}             @tab @code{org-export-html-with-timestamp}
10590 @item @code{:publishing-directory}  @tab @code{org-export-publishing-directory}
10591 @item @code{:preamble}              @tab @code{org-export-html-preamble}
10592 @item @code{:postamble}             @tab @code{org-export-html-postamble}
10593 @item @code{:auto-preamble}         @tab @code{org-export-html-auto-preamble}
10594 @item @code{:auto-postamble}        @tab @code{org-export-html-auto-postamble}
10595 @item @code{:author}                @tab @code{user-full-name}
10596 @item @code{:email}                 @tab @code{user-mail-address} : @code{addr;addr;..}
10597 @item @code{:select-tags}           @tab @code{org-export-select-tags}
10598 @item @code{:exclude-tags}          @tab @code{org-export-exclude-tags}
10599 @item @code{:latex-image-options}   @tab @code{org-export-latex-image-default-option}
10600 @end multitable
10602 Most of the @code{org-export-with-*} variables have the same effect in
10603 both HTML and La@TeX{} exporters, except for @code{:TeX-macros} and
10604 @code{:LaTeX-fragments}, respectively @code{nil} and @code{t} in the
10605 La@TeX{} export.
10607 @vindex org-publish-project-alist
10608 When a property is given a value in @code{org-publish-project-alist},
10609 its setting overrides the value of the corresponding user variable (if
10610 any) during publishing.  Options set within a file (@pxref{Export
10611 options}), however, override everything.
10613 @node Publishing links, Sitemap, Publishing options, Configuration
10614 @subsection Links between published files
10615 @cindex links, publishing
10617 To create a link from one Org file to another, you would use
10618 something like @samp{[[file:foo.org][The foo]]} or simply
10619 @samp{file:foo.org.} (@pxref{Hyperlinks}).  When published, this link
10620 becomes a link to @file{foo.html}.  In this way, you can interlink the
10621 pages of your "org web" project and the links will work as expected when
10622 you publish them to HTML.  If you also publish the Org source file and want
10623 to link to that, use an @code{http:} link instead of a @code{file:} link,
10624 because @code{file:} links are converted to link to the corresponding
10625 @file{html} file.
10627 You may also link to related files, such as images. Provided you are careful
10628 with relative file names, and provided you have also configured Org to upload
10629 the related files, these links will work too. See @ref{Complex example}, for
10630 an example of this usage.
10632 Sometimes an Org file to be published may contain links that are
10633 only valid in your production environment, but not in the publishing
10634 location.  In this case, use the property
10636 @multitable @columnfractions 0.4 0.6
10637 @item @code{:link-validation-function}
10638 @tab Function to validate links
10639 @end multitable
10641 @noindent
10642 to define a function for checking link validity.  This function must
10643 accept two arguments, the file name and a directory relative to which
10644 the file name is interpreted in the production environment.  If this
10645 function returns @code{nil}, then the HTML generator will only insert a
10646 description into the HTML file, but no link.  One option for this
10647 function is @code{org-publish-validate-link} which checks if the given
10648 file is part of any project in @code{org-publish-project-alist}.
10650 @node Sitemap, Generating an index, Publishing links, Configuration
10651 @subsection Generating a sitemap
10652 @cindex sitemap, of published pages
10654 The following properties may be used to control publishing of 
10655 a map of files for a given project.
10657 @multitable @columnfractions 0.35 0.65
10658 @item @code{:auto-sitemap}
10659 @tab When non-nil, publish a sitemap during @code{org-publish-current-project}
10660 or @code{org-publish-all}.
10662 @item @code{:sitemap-filename}
10663 @tab Filename for output of sitemap. Defaults to @file{sitemap.org} (which
10664 becomes @file{sitemap.html}).
10666 @item @code{:sitemap-title}
10667 @tab Title of sitemap page. Defaults to name of file.
10669 @item @code{:sitemap-function}
10670 @tab Plug-in function to use for generation of the sitemap.
10671 Defaults to @code{org-publish-org-sitemap}, which generates a plain list
10672 of links to all files in the project.
10674 @item @code{:sitemap-sort-folders}
10675 @tab Where folders should appear in the sitemap.  Set this to @code{first}
10676 (default) or @code{last} to display folders first or last,
10677 respectively.  Any other value will mix files and folders.
10679 @item @code{:sitemap-alphabetically}
10680 @tab The site map is normally sorted alphabetically.  Set this explicitly to
10681 @code{nil} to turn off sorting.
10683 @item @code{:sitemap-ignore-case}
10684 @tab Should sorting be case-sensitive?  Default @code{nil}.
10686 @end multitable
10688 @node Generating an index,  , Sitemap, Configuration
10689 @subsection Generating an index
10690 @cindex index, in a publishing project
10692 Org-mode can generate an index across the files of a publishing project.
10694 @multitable @columnfractions 0.25 0.75
10695 @item @code{:makeindex}
10696 @tab When non-nil, generate in index in the file @file{theindex.org} and
10697 publish it as @file{theindex.html}.
10698 @end multitable
10700 The file will be create when first publishing a project with the
10701 @code{:makeindex} set.  The file only contains a statement @code{#+include:
10702 "theindex.inc"}.  You can then built around this include statement by adding
10703 a title, style information etc.
10705 @node Uploading files, Sample configuration, Configuration, Publishing
10706 @section Uploading files
10707 @cindex rsync
10708 @cindex unison
10710 For those people already utilizing third party sync tools such as
10711 @command{rsync} or @command{unison}, it might be preferable not to use the built in
10712 @i{remote} publishing facilities of Org mode which rely heavily on
10713 Tramp.  Tramp, while very useful and powerful, tends not to be
10714 so efficient for multiple file transfer and has been known to cause problems
10715 under heavy usage.
10717 Specialized synchronization utilities offer several advantages.  In addition
10718 to timestamp comparison, they also do content and permissions/attribute
10719 checks.  For this reason you might prefer to publish your web to a local
10720 directory (possibly even @i{in place} with your Org files) and then use
10721 @file{unison} or @file{rsync} to do the synchronization with the remote host.
10723 Since Unison (for example) can be configured as to which files to transfer to
10724 a certain remote destination, it can greatly simplify the project publishing
10725 definition.  Simply keep all files in the correct location, process your Org
10726 files with @code{org-publish} and let the synchronization tool do the rest.
10727 You do not need, in this scenario, to include attachments such as @file{jpg},
10728 @file{css} or @file{gif} files in the project definition since the 3rd party
10729 tool syncs them.
10731 Publishing to a local directory is also much faster than to a remote one, so
10732 that you can afford more easily to republish entire projects.  If you set
10733 @code{org-publish-use-timestamps-flag} to @code{nil}, you gain the main
10734 benefit of re-including any changed external files such as source example
10735 files you might include with @code{#+INCLUDE}.  The timestamp mechanism in
10736 Org is not smart enough to detect if included files have been modified.
10738 @node Sample configuration, Triggering publication, Uploading files, Publishing
10739 @section Sample configuration
10741 Below we provide two example configurations.  The first one is a simple
10742 project publishing only a set of Org files.  The second example is
10743 more complex, with a multi-component project.
10745 @menu
10746 * Simple example::              One-component publishing
10747 * Complex example::             A multi-component publishing example
10748 @end menu
10750 @node Simple example, Complex example, Sample configuration, Sample configuration
10751 @subsection Example: simple publishing configuration
10753 This example publishes a set of Org files to the @file{public_html}
10754 directory on the local machine.
10756 @lisp
10757 (setq org-publish-project-alist
10758       '(("org"
10759          :base-directory "~/org/"
10760          :publishing-directory "~/public_html"
10761          :section-numbers nil
10762          :table-of-contents nil
10763          :style "<link rel=\"stylesheet\"
10764                 href=\"../other/mystyle.css\"
10765                 type=\"text/css\"/>")))
10766 @end lisp
10768 @node Complex example,  , Simple example, Sample configuration
10769 @subsection Example: complex publishing configuration
10771 This more complicated example publishes an entire website, including
10772 Org files converted to HTML, image files, Emacs Lisp source code, and
10773 style sheets. The publishing directory is remote and private files are
10774 excluded.
10776 To ensure that links are preserved, care should be taken to replicate
10777 your directory structure on the web server, and to use relative file
10778 paths. For example, if your Org files are kept in @file{~/org} and your
10779 publishable images in @file{~/images}, you would link to an image with
10781 @example
10782 file:../images/myimage.png
10783 @end example
10785 On the web server, the relative path to the image should be the
10786 same. You can accomplish this by setting up an "images" folder in the
10787 right place on the web server, and publishing images to it.
10789 @lisp
10790 (setq org-publish-project-alist
10791       '(("orgfiles"
10792           :base-directory "~/org/"
10793           :base-extension "org"
10794           :publishing-directory "/ssh:user@@host:~/html/notebook/"
10795           :publishing-function org-publish-org-to-html
10796           :exclude "PrivatePage.org"   ;; regexp
10797           :headline-levels 3
10798           :section-numbers nil
10799           :table-of-contents nil
10800           :style "<link rel=\"stylesheet\"
10801                   href=\"../other/mystyle.css\" type=\"text/css\"/>"
10802           :auto-preamble t
10803           :auto-postamble nil)
10805          ("images"
10806           :base-directory "~/images/"
10807           :base-extension "jpg\\|gif\\|png"
10808           :publishing-directory "/ssh:user@@host:~/html/images/"
10809           :publishing-function org-publish-attachment)
10811          ("other"
10812           :base-directory "~/other/"
10813           :base-extension "css\\|el"
10814           :publishing-directory "/ssh:user@@host:~/html/other/"
10815           :publishing-function org-publish-attachment)
10816          ("website" :components ("orgfiles" "images" "other"))))
10817 @end lisp
10819 @node Triggering publication,  , Sample configuration, Publishing
10820 @section Triggering publication
10822 Once properly configured, Org can publish with the following commands:
10824 @table @kbd
10825 @kindex C-c C-e C
10826 @item C-c C-e C
10827 Prompt for a specific project and publish all files that belong to it.
10828 @kindex C-c C-e P
10829 @item C-c C-e P
10830 Publish the project containing the current file.
10831 @kindex C-c C-e F
10832 @item C-c C-e F
10833 Publish only the current file.
10834 @kindex C-c C-e E
10835 @item C-c C-e E
10836 Publish every project.
10837 @end table
10839 @vindex org-publish-use-timestamps-flag
10840 Org uses timestamps to track when a file has changed. The above functions
10841 normally only publish changed files. You can override this and force
10842 publishing of all files by giving a prefix argument to any of the commands
10843 above, or by customizing the variable @code{org-publish-use-timestamps-flag}.
10844 This may be necessary in particular if files include other files via
10845 @code{#+SETUPFILE:} or @code{#+INCLUDE:}.
10847 @node Working With Source Code, Miscellaneous, Publishing, Top
10848 @comment  node-name,  next,  previous,  up
10849 @comment Working With Source Code, Miscellaneous, Publishing, Top
10850 @chapter Working With Source Code
10852 Source code can be included in Org-mode documents using a @samp{src} block,
10853 e.g.
10855 @example
10856 #+BEGIN_SRC emacs-lisp
10857   (defun org-xor (a b)
10858      "Exclusive or."
10859      (if a (not b) b))
10860 #+END_SRC
10861 @end example
10863 Org provides a number of features for working with live source code,
10864 including editing of code blocks in their native major-mode, evaluation of
10865 code blocks, tangling of code blocks, and exportation of code blocks and
10866 their results to a number of formats.  The following sections provide a
10867 thorough tour of Org-mode's sophisticated code block handling facilities.
10869 @menu
10870 * Structure of code blocks::
10871 * Editing source code::
10872 * Exporting code blocks::
10873 * Extracting source code::
10874 * Evaluating code blocks::
10875 * Library of Babel::
10876 * Languages::
10877 * Header arguments::
10878 * Results::
10879 * Noweb reference syntax::
10880 * Key bindings & useful functions::
10881 * Batch execution::
10882 @end menu
10885 @node Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
10886 @comment  node-name,  next,  previous,  up
10887 @comment  Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
10888 @section Structure of code blocks
10890 The structure of code blocks is as follows:
10892 @example
10893 #+srcname: <name>
10894 #+begin_src <language> <switches> <header arguments>
10895   <body>
10896 #+end_src
10897 @end example
10899 @table @code
10900 @item <name>
10901 This name is associated with the source code block.  This is similar to the
10902 @samp{#+tblname} lines that can be used to name tables in Org-mode files.
10903 Referencing the name of a source code block makes it possible to evaluate the
10904 block from other places in the file, other files, or from Org-mode table
10905 formulas (see @ref{The spreadsheet}).
10906 @item <language>
10907 The language of the code in the block.
10908 @item <switches>
10909 Switches controling exportation of the code block (see switches discussion in
10910 @ref{Literal examples})
10911 @item <header arguments>
10912 Optional header arguments control many aspects of evaluation, export and
10913 tangling of source code blocks. See the @ref{Header arguments}
10914 section. Header arguments can also be set on a per-buffer or per-subtree
10915 basis using properties.
10916 @item <body>
10917 The code
10918 @end table
10920 @node Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
10921 @comment  node-name,  next,  previous,  up
10922 @comment  Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
10923 @section Editing source code
10925 Use @kbd{C-c '} to edit the current code block. This brings up a language
10926 major-mode edit buffer containing the body of the code block. Saving this
10927 buffer will write the new contents back to the Org buffer. Use @kbd{C-c '}
10928 again to exit.
10930 The @code{org-src-mode} minor mode will be active in the edit buffer. The
10931 following variables can be used to configure the behavior of the edit
10932 buffer. See also the customization group @code{org-edit-structure} for
10933 further configuration options.
10935 @table @code
10936 @item org-src-lang-modes
10937 If an Emacs major-mode named @code{<lang>-mode} exists, where
10938 @code{<lang>} is the language named in the header line of the code block,
10939 then the edit buffer will be placed in that major-mode. This variable
10940 can be used to map arbitrary language names to existing major modes.
10941 @item org-src-window-setup
10942 Controls the way Emacs windows are rearranged when the edit buffer is created.
10943 @item org-src-preserve-indentation
10944 This variable is especially useful for tangling languages such as
10945 python, in which whitespace indentation in the output is critical.
10946 @item org-src-ask-before-returning-to-edit-buffer
10947 By default, Org will ask before returning to an open edit buffer. Set
10948 to a non-nil value to switch without asking.
10949 @end table
10951 @node Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
10952 @comment  node-name,  next,  previous,  up
10953 @comment  Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
10954 @section Exporting code blocks
10956 It is possible to export the @emph{contents} of code blocks, the
10957 @emph{results} of code block evaluation, @emph{neither}, or @emph{both}.  For
10958 most languages, the default exports the contents of code blocks. However, for
10959 some languages (e.g. @code{ditaa}) the default exports the results of code
10960 block evaluation.  For information on exporting code block bodies, see
10961 @ref{Literal examples}.
10963 The @code{:exports} header argument can be used to specify non-default export
10964 behavior:
10966 @subsubheading Header arguments:
10967 @table @code
10968 @item :exports code
10969 The default in most languages. The body of the code block is exported, as
10970 described in @ref{Literal examples}.
10971 @item :exports results
10972 The code block will be evaluated and the results will be placed in the
10973 Org-mode buffer for export, either updating previous results of the code
10974 block located anywhere in the buffer or, if no previous results exist,
10975 placing the results immediately after the code block.  The body of the code
10976 block will not be exported.
10977 @item :exports both
10978 Both the code block and its results will be exported.
10979 @item :exports none
10980 Neither the code block nor its results will be exported.
10981 @end table
10983 @node Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
10984 @comment  node-name,  next,  previous,  up
10985 @comment  Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
10986 @section Extracting source code
10988 Creating pure source code files by extracting code from source blocks is
10989 referred to as ``tangling''---a term adopted from the literate programming
10990 community.  During ``tangling'' of code blocks their bodies are expanded
10991 using @code{org-babel-expand-src-block} which can expand both variable and
10992 ``noweb'' style references  (see @ref{Noweb reference syntax}).
10994 @subsubheading header arguments:
10995 @table @code
10996 @item :tangle no
10997 The default.  The code block is not included in the tangled output.
10998 @item :tangle yes
10999 Include the code block in the tangled output. The output file name is the
11000 name of the org file with the extension @samp{.org} replaced by the extension
11001 for the block language.
11002 @item :tangle filename
11003 Include the code block in the tangled output to file @samp{filename}.
11004 @end table
11006 @subsubheading functions:
11007 @table @code
11008 @item org-babel-tangle @key{C-c C-v t}
11009 Tangle the current file.
11010 @item org-babel-tangle-file
11011 Choose a file to tangle.
11012 @end table
11014 @node Evaluating code blocks, Library of Babel, Extracting source code, Working With Source Code
11015 @comment  node-name,  next,  previous,  up
11016 @comment  Evaluating code blocks,  , Extracting source code, Working With Source Code
11017 @section Evaluating code blocks
11019 Code blocks can be evaluated and the results placed in the Org-mode buffer.
11020 Check the value of the @code{org-babel-interpreters} for a list of languages
11021 that can be evaluated on your system. See also @ref{Languages} for a list of
11022 supported languages.  See @ref{Structure of code blocks} for information on
11023 the syntax used to define a code block.
11025 There are a number of ways to evaluate code blocks.  The simplest is to
11026 press @key{C-c C-c} with the point on a code block.  This will call the
11027 @code{org-babel-execute-src-block} function to evaluate the block and
11028 insert its results into the Org-mode buffer.
11030 It is also possible to evaluate named code blocks from anywhere in an
11031 Org-mode buffer or an Org-mode table.  @code{#+call} (or synonymously
11032 @code{#+function} or @code{#+lob}) lines can be used to remotely execute code
11033 blocks located in the current Org-mode buffer or in the ``Library of Babel''
11034 (see @ref{Library of Babel}).  These lines use the following syntax.
11036 @example
11037 #+call: <name>(<arguments>) <header arguments>
11038 @end example
11040 @table @code
11041 @item <name>
11042 The name of the source code block to be evaluated.
11043 @item <arguments>
11044 Arguments specified in this section will be passed to the code block.
11045 @item <header arguments>
11046 Header arguments can be placed after the function invocation.  See
11047 @ref{Header arguments} for more information on header arguments.
11048 @end table
11051 @node Library of Babel, Languages, Evaluating code blocks, Working With Source Code
11052 @section Library of Babel
11053 The ``Library of Babel'' is a library of code blocks
11054 that can be called from any Org-mode file.  The library is housed in an
11055 Org-mode file located in the @samp{contrib} directory of Org-mode.
11056 Org-mode users can deposit functions they believe to be generally
11057 useful in the library.
11059 Code blocks defined in the ``Library of Babel'' can be called remotely as if
11060 they were in the current Org-mode buffer (see @ref{Evaluating code blocks}
11061 for information on the syntax of remote code block evaluation).
11063 Code blocks located in any Org-mode file can be loaded into the ``Library of
11064 Babel'' with the @code{org-babel-lob-ingest} function, bound to @key{C-c C-v
11067 @node Languages, Header arguments, Library of Babel, Working With Source Code
11068 @section Languages
11069 Code blocks in the following languages are supported.
11071 @c BEGIN RECEIVE ORGTBL org-babel-lang-table
11072 @multitable @columnfractions 0.583 0.417
11073 @item Language @tab Identifier
11074 @item Asymptote @tab asymptote
11075 @item C @tab C
11076 @item Clojure @tab clojure
11077 @item css @tab css
11078 @item ditaa @tab ditaa
11079 @item Graphviz @tab dot
11080 @item Emacs Lisp @tab emacs-lisp
11081 @item gnuplot @tab gnuplot
11082 @item Haskell @tab haskell
11083 @item Matlab @tab matlab
11084 @item LaTeX @tab latex
11085 @item Objective Caml @tab ocaml
11086 @item Octave @tab octave
11087 @item OZ @tab oz
11088 @item Perl @tab perl
11089 @item Python @tab python
11090 @item R @tab R
11091 @item Ruby @tab ruby
11092 @item Sass @tab sass
11093 @item GNU Screen @tab screen
11094 @item shell @tab sh
11095 @item SQL @tab sql
11096 @end multitable
11097 @c END RECEIVE ORGTBL org-babel-lang-table
11099 @ignore
11100 The original table from reference.org is below; I'm just using the first column for now.
11102 #+ORGTBL: SEND org-babel-lang-table orgtbl-to-texinfo
11103   | Language       | Identifier |
11104   |----------------+------------|
11105   | Asymptote      | asymptote  |
11106   | C              | C          |
11107   | Clojure        | clojure    |
11108   | css            | css        |
11109   | ditaa          | ditaa      |
11110   | Graphviz       | dot        |
11111   | Emacs Lisp     | emacs-lisp |
11112   | gnuplot        | gnuplot    |
11113   | Haskell        | haskell    |
11114   | Matlab         | matlab     |
11115   | LaTeX          | latex      |
11116   | Objective Caml | ocaml      |
11117   | Octave         | octave     |
11118   | OZ             | oz         |
11119   | Perl           | perl       |
11120   | Python         | python     |
11121   | R              | R          |
11122   | Ruby           | ruby       |
11123   | Sass           | sass       |
11124   | GNU Screen     | screen     |
11125   | shell          | sh         |
11126   | SQL            | sql        |
11129   | Language       | Documentation                                                                   | Identifier | Requirements                                                                                                                                                                                                                                                                                |
11130   |----------------+---------------------------------------------------------------------------------+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
11131   | Asymptote      | org-babel-doc-asymptote                                                         | asymptote  | [[http://asymptote.sourceforge.net/][asymptote]], [[http://asymptote.sourceforge.net/doc/Editing-modes.html][asy-mode]]                                                                                                                                                                     |
11132   | C              | [[file:languages/org-babel-doc-C.org][org-babel-doc-C]]                         | C          | none                                                                                                                                                                                                                                                                                        |
11133   | Clojure        | [[file:languages/org-babel-doc-clojure.org][org-babel-doc-clojure]]             | clojure    | [[http://clojure.org/][clojure]], [[http://www.emacswiki.org/emacs/clojure-mode.el][clojure-mode]], [[http://common-lisp.net/project/slime/][slime]], [[http://clojure.codestuffs.com/][swank-clojure]]                                                                                     |
11134   | css            | org-babel-doc-css                                                               | css        | none                                                                                                                                                                                                                                                                                        |
11135   | ditaa          | org-babel-doc-ditaa                                                             | ditaa      | [[http://ditaa.org/ditaa/][ditaa]] (bundled with Org-mode)                                                                                                                                                                                                                                  |
11136   | Graphviz       | org-babel-doc-dot                                                               | dot        | [[http://www.graphviz.org/][dot]]                                                                                                                                                                                                                                                           |
11137   | Emacs Lisp     | org-babel-doc-emacs-lisp                                                        | emacs-lisp | none                                                                                                                                                                                                                                                                                        |
11138   | gnuplot        | org-babel-doc-gnuplot                                                           | gnuplot    | [[http://www.gnuplot.info/][gnuplot]], [[http://cars9.uchicago.edu/~ravel/software/gnuplot-mode.html][gnuplot-mode]]                                                                                                                                                                        |
11139   | Haskell        | org-babel-doc-haskell                                                           | haskell    | [[http://www.haskell.org/][haskell]], [[http://projects.haskell.org/haskellmode-emacs/][haskell-mode]], [[http://www.haskell.org/haskellwiki/Haskell_mode_for_Emacs#inf-haskell.el:_the_best_thing_since_the_breadknife][inf-haskell]], [[http://people.cs.uu.nl/andres/lhs2tex/][lhs2tex]] |
11140   | Matlab         | [[file:languages/org-babel-doc-octave-matlab.org][org-babel-doc-octave-matlab]] | matlab     | matlab, [[http://sourceforge.net/projects/matlab-emacs/][matlab.el]]                                                                                                                                                                                                                        |
11141   | LaTeX          | [[file:languages/org-babel-doc-LaTeX.org][org-babel-doc-latex]]                 | latex      | [[http://www.latex-project.org/][latex]], [[http://www.gnu.org/software/auctex/][auctex]], [[http://www.gnu.org/software/auctex/reftex.html][reftex]]                                                                                                                                       |
11142   | Objective Caml | org-babel-doc-ocaml                                                             | ocaml      | [[http://caml.inria.fr/][ocaml]], [[http://www-rock.inria.fr/~acohen/tuareg/][tuareg-mode]]                                                                                                                                                                                                 |
11143   | Octave         | [[file:languages/org-babel-doc-octave-matlab.org][org-babel-doc-octave-matlab]] | octave     | octave                                                                                                                                                                                                                                                                                      |
11144   | OZ             | [[file:languages/org-babel-doc-oz.org][org-babel-doc-oz]]                       | oz         | [[http://www.mozart-oz.org/][Mozart]] which includes a major mode                                                                                                                                                                                                                           |
11145   | Perl           | org-babel-doc-perl                                                              | perl       | [[http://www.perl.org/][perl]], [[http://www.emacswiki.org/emacs/CPerlMode][cperl-mode]] (optional)                                                                                                                                                                                         |
11146   | Python         | org-babel-doc-python                                                            | python     | [[http://www.python.org/][python]], [[https://launch pad.net/python-mode][python-mode]] (optional)                                                                                                                                                                                           |
11147   | R              | [[file:languages/org-babel-doc-R.org][org-babel-doc-R]]                         | R          | [[http://www.r-project.org/][R]], [[http://ess.r-project.org/][ess-mode]]                                                                                                                                                                                                                   |
11148   | Ruby           | org-babel-doc-ruby                                                              | ruby       | [[http://www.ruby-lang.org/][ruby]], [[http://www.ruby-lang.org/][irb]], [[http://github.com/eschulte/rinari/raw/master/util/ruby-mode.el][ruby-mode]], [[http://github.com/eschulte/rinari/raw/master/util/inf-ruby.el][inf-ruby mode]]                                                    |
11149   | Sass           | org-babel-doc-sass                                                              | sass       | [[http://sass-lang.com/][sass]], [[http://github.com/nex3/haml/blob/master/extra/sass-mode.el][sass-mode]]                                                                                                                                                                                  |
11150   | GNU Screen     | [[file:languages/org-babel-doc-screen.org][org-babel-doc-screen]]               | screen     | [[http://www.gnu.org/software/screen/][screen]], a terminal                                                                                                                                                                                                                                 |
11151   | shell          | org-babel-doc-sh                                                                | sh         | a shell                                                                                                                                                                                                                                                                                     |
11152   | SQL            | org-babel-doc-sql                                                               | sql        | none                                                                                                                                                                                                                                                                                        |
11155 @end ignore
11156  See the language specific documentation and an up to date list of languages
11157 that is available at
11158 @uref{http://orgmode.org/worg/org-contrib/babel/reference.php#languages}.
11161 To add support for a particular language to your installation, first
11162 make sure that the requirements of the language are met, then add a line like
11163 the following to your Emacs configuration, (replace ``identifier'' with one
11164 of the language names from the above table).
11166 @example
11167 (require 'org-babel-identifier)
11168 @end example
11171 @node Header arguments, Results, Languages, Working With Source Code
11172 @section Header arguments
11174 Most code block functionality is configurable using header arguments.  This
11175 section provides an overview of the use of header arguments, and then
11176 exhaustively covers all header arguments.
11178 @menu
11179 * Using Header arguments::
11180 * Specific Header arguments::
11181 @end menu
11183 @node Using Header arguments, Specific Header arguments, , Header arguments
11184 @subsection Using Header arguments
11186 The values of header arguments can be set in five different ways, each more
11187 specific (and having higher priority) than the last.
11188 @menu
11189 * System-wide header arguments::
11190 * Language-specific header arguments::
11191 * Buffer-wide header arguments::
11192 * Header arguments in Org-mode properties::
11193 * Code block specific header arguments::
11194 @end menu
11196 @node System-wide header arguments, Language Specific header arguments, , Using Header arguments
11197 @subsubheading System-wide header arguments
11198 System-wide values of header arguments can be specified by customizing the
11199 @code{org-babel-default-header-args} variable:
11201 @example
11202   org-babel-default-header-args is a variable defined in `org-babel.el'.
11203   Its value is
11204   ((:session . "none")
11205    (:results . "replace")
11206    (:exports . "code")
11207    (:cache . "no")
11208    (:noweb . "no"))
11211   Documentation:
11212   Default arguments to use when evaluating a code block.
11213 @end example
11215 For example, the following example could be used to set the default value of
11216 @code{:noweb} header arguments to @code{yes}.  This would have the effect of
11217 expanding @code{:noweb} references by default when evaluating source code
11218 blocks.
11220 @example
11221   (setq org-babel-default-header-args
11222         (cons '(:noweb . "yes")
11223               (assq-delete-all :noweb org-babel-default-header-args)))
11224 @end example
11226 @node Language Specific header arguments, Buffer Wide header arguments, System-wide header arguments, Using Header arguments
11227 @subsubheading Language-specific header arguments
11228 Each language can define its own set of default header arguments.  See the
11229 language-specific documentation available at
11230 @uref{http://orgmode.org/worg/org-contrib/babel/reference.php#languages}.
11231 for information on language-specific header arguments.
11233 @node Buffer Wide header arguments, header arguments in Org-mode Properties, Language Specific header arguments, Using Header arguments
11234 @subsubheading Buffer-wide header arguments
11235 FIXME
11237 @node header arguments in Org-mode Properties, Source Code Block specific header arguments, Buffer Wide header arguments, Using Header arguments
11238 @subsubheading header arguments in Org-mode Properties
11240 Header arguments are also read from Org-mode properties (see @ref{Property
11241 syntax}), which can be set on a buffer-wide or per-heading basis. An example
11242 of setting a header argument for all code blocks in a buffer is
11244 @example
11245 #+property: tangle yes
11246 @end example
11248 When properties are used to set default header arguments, they are looked up
11249 with inheritance, so the value of the @code{:cache} header argument will default
11250 to @code{yes} in all source code blocks in the subtree rooted at the following
11251 heading:
11253 @example
11254   * outline header
11255     :PROPERTIES:
11256     :cache:    yes
11257     :END:
11258 @end example
11260 Properties defined in this way override the properties set in
11261 @code{org-babel-default-header-args}.  It is convenient to use the
11262 @code{org-set-property} function bound to @key{C-c C-x p} to set properties
11263 in Org-mode documents.
11265 @node Source Code Block specific header arguments, , header arguments in Org-mode Properties, Using Header arguments
11266 @subsubheading Code block specific header arguments
11268 The most common way to assign values to header arguments is at the
11269 code block level.  This can be done by listing a sequence of header
11270 arguments and their values as part of the @code{#+begin_src} line.
11271 Properties set in this way override both the values of
11272 @code{org-babel-default-header-args} and header argument specified as
11273 properties.  In the following example, the @code{:results} header argument
11274 is set to @code{silent}, meaning the results of execution will not be
11275 inserted in the buffer, and the @code{:exports} header argument is set to
11276 @code{code}, meaning only the body of the source code block will be
11277 preserved on export to HTML or LaTeX.
11279 @example
11280   #+source: factorial
11281   #+begin_src haskell :results silent :exports code :var n=0
11282     fac 0 = 1
11283     fac n = n * fac (n-1)
11284   #+end_src
11285 @end example
11287 Similarly, it is possible to set header arguments for inline code blocks:
11289 @example
11290 src_haskell[:exports both]@{fac 5@}
11291 @end example
11293 Header arguments for ``Library of Babel'' or function call lines can be set as shown below:
11295 @example
11296 #+call: factorial(n=5) :exports results
11297 @end example
11299 @node Specific Header arguments, , Using Header arguments, Header arguments
11300 @subsection Specific Header arguments
11301 The following header arguments are defined:
11303 @menu
11304 * var::
11305 * results::
11306 * file::
11307 * dir and remote execution::
11308 * exports::
11309 * tangle::
11310 * no-expand::
11311 * session::
11312 * noweb::
11313 * cache::
11314 * hlines::
11315 * colnames::
11316 * rownames::
11317 @end menu
11319 @node var, results, , Specific Header arguments
11320 @subsubsection var
11321 The @code{:var} header argument is used to pass arguments to
11322 code blocks.  The specifics of how arguments are included
11323 in a code block vary by language; these are
11324 addressed in the language-specific documentation. However, the
11325 syntax used to specify arguments is the same across all
11326 languages.  The values passed to arguments can be
11327 @itemize @bullet
11328 @item literal values
11329 @item values from org-mode tables
11330 @item the results of other source code blocks
11331 @end itemize
11333 These values can be indexed in a manner similar to arrays---see the argument
11334 ``indexable variable values'' heading below.
11336 The following syntax is used to pass arguments to code blocks using the
11337 @code{:var} header argument.
11339 @example
11340   :var name=assign
11341 @end example
11343 where @code{assign} can take one of the following forms
11345 @itemize @bullet
11346 @item literal value
11347 either a string @code{"string"} or a number @code{9}.
11348 @item reference
11349 a table name:
11351 @example
11352   #+tblname: example-table
11353   | 1 |
11354   | 2 |
11355   | 3 |
11356   | 4 |
11358   #+source: table-length
11359   #+begin_src emacs-lisp :var table=example-table
11360     (length table)
11361   #+end_src
11363   #+results: table-length
11364   : 4
11365 @end example
11367 a source code block name, as assigned by @code{#+srcname:}, followed by
11368 parentheses:
11370 @example
11371   #+begin_src emacs-lisp :var length=table-length()
11372     (* 2 length)
11373   #+end_src
11375   #+results:
11376   : 8
11377 @end example
11379 In addition, an argument can be passed to the code block referenced
11380 by @code{:var}.  The argument is passed within the parentheses following the
11381 source code block name:
11383 @example
11384   #+source: double
11385   #+begin_src emacs-lisp :var input=8
11386     (* 2 input)
11387   #+end_src
11389   #+results: double
11390   : 16
11392   #+source: squared
11393   #+begin_src emacs-lisp :var input=double(input=1)
11394     (* input input)
11395   #+end_src
11397   #+results: squared
11398   : 4
11399 @end example
11400 @end itemize
11402 @subsubheading Alternate argument syntax
11403 It is also possible to specify arguments in a potentially more natural way
11404 using the @code{#+source:} line of a source code block.  As in the following
11405 example arguments can be packed inside of parenthesis, separated by commas,
11406 following the source name.
11408 @example
11409   #+source: double(input=0, x=2)
11410   #+begin_src emacs-lisp
11411     (* 2 (+ input x))
11412   #+end_src
11413 @end example
11415 @subsubheading indexable variable values
11416 It is possible to assign a portion of a value to a variable in a source
11417 block.  The following example assigns the second and third rows of the table
11418 @code{example-table} to the variable @code{data}:
11420 @example
11421   :var data=example-table[1:2]
11422 @end example
11424 Note: ranges are indexed using the @code{:} operator.
11426 Note: indices are 0 based.
11428 The following example assigns the second column of the first row of
11429 @code{example-table} to @code{data}:
11431 @example
11432   :var data=example-table[0,1]
11433 @end example
11435 It is possible to index into the results of code blocks as well as
11436 tables.  Any number of dimensions can be indexed.  Dimensions are separated
11437 from one another by commas.
11439 For more information on indexing behavior see the documentation for the
11440 @code{org-babel-ref-index-list} function, provided below.
11442 @example
11443   org-babel-ref-index-list is a Lisp function in `org-babel-ref.el'.
11445   (org-babel-ref-index-list INDEX LIS)
11447   Return the subset of LIS indexed by INDEX.  If INDEX is
11448   separated by ,s then each PORTION is assumed to index into the
11449   next deepest nesting or dimension.  A valid PORTION can consist
11450   of either an integer index, or two integers separated by a : in
11451   which case the entire range is returned.
11452 @end example
11454 @node results, file, var, Specific Header arguments
11455 @subsubsection results
11457 There are three types of results header argument.  Only one option of each
11458 type may be supplied per code block.
11460 @itemize @bullet
11461 @item collection
11462 arguments specify how the results should be collected from the source code
11463 block
11464 @item type
11465 header arguments specify what type of result the source code block will
11466 return---which has implications for how they will be inserted into the
11467 Org-mode buffer
11468 @item handling
11469 header arguments specify how the results of evaluating the source code block
11470 should be handled.
11471 @end itemize
11473 @subsubheading collection
11474 The following options are mutually exclusive, and specify how the results
11475 should be collected from the source code block.
11477 @itemize @bullet
11478 @item value
11479 This is the default.  The result is the value of the last statement in the
11480 source code block.  This header argument places the evaluation in functional
11481 mode.  Note that in some languages, e.g., python, use of this result type
11482 requires that a @code{return} statement be included in the body of the source
11483 code block. E.g., @code{:results value}.
11484 @item output
11485 The result is the collection of everything printed to STDOUT during the
11486 execution of the source code block.  This header argument places the
11487 evaluation in scripting mode.  E.g., @code{:results output}.
11488 @end itemize
11490 @subsubheading type
11492 The following options are mutually exclusive and specify what type of results
11493 the code block will return.  By default, results are inserted as either a
11494 table or scalar depending on their value.
11496 @itemize @bullet
11497 @item table, vector
11498 The results should be interpreted as an Org-mode table.  If a single value is
11499 returned, it will be converted into a table with one row and one column.
11500 E.g., @code{:results value table}.
11501 @item scalar, verbatim
11502 The results should be interpreted literally---they will not be
11503 converted into a table.  The results will be inserted into the Org-mode
11504 buffer as quoted text.  E.g., @code{:results value verbatim}.
11505 @item file
11506 The results will be interpreted as the path to a file, and will be inserted
11507 into the Org-mode buffer as a file link.  E.g., @code{:results value file}.
11508 @item raw, org
11509 The results are interpreted as raw Org-mode code and are inserted directly
11510 into the buffer.  If the results look like a table they will be aligned as
11511 such by Org-mode.  E.g., @code{:results value raw}.
11512 @item html
11513 Results are assumed to be HTML and will be enclosed in a @code{begin_html}
11514 block.  E.g., @code{:results value html}.
11515 @item latex
11516 Results assumed to be LaTeX and are enclosed in a @code{begin_latex} block.
11517 E.g., @code{:results value latex}.
11518 @item code
11519 Result are assumed to be parseable code and are enclosed in a code block.
11520 E.g., @code{:results value code}.
11521 @item pp
11522 The result is converted to pretty-printed code and is enclosed in a code
11523 block.  This option currently supports Emacs Lisp, python, and ruby.  E.g.,
11524 @code{:results value pp}.
11525 @end itemize
11527 @subsubheading handling
11528 The following results options indicate what Org-babel should do with the
11529 results once they are collected.
11531 @itemize @bullet
11532 @item silent
11533 The results will be echoed in the minibuffer but will not be inserted into
11534 the Org-mode buffer.  E.g., @code{:results output silent}.
11535 @item replace
11536 The default value.  Any existing results will be removed, and the new results
11537 will be inserted into the Org-mode buffer in their place.  E.g.,
11538 @code{:results output replace}.
11539 @item append
11540 If there are pre-existing results of the code block then the new results will
11541 be appended to the existing results.  Otherwise the new results will be
11542 inserted as with @code{replace}.
11543 @item prepend
11544 If there are pre-existing results of the code block then the new results will
11545 be prepended to the existing results.  Otherwise the new results will be
11546 inserted as with @code{replace}.
11547 @end itemize
11549 @node file, dir and remote execution, results, Specific Header arguments
11550 @subsubsection file
11551 @code{:file} is used to specify a path for file output in which case an
11552 Org-mode style link (see @ref{Link format}) @code{file:} link is inserted
11553 into the buffer as the result. Common examples are graphical output from R,
11554 gnuplot, ditaa and LaTeX blocks.
11556 Note that for some languages, including R, gnuplot, LaTeX and ditaa,
11557 graphical output is sent to the specified file without the file being
11558 referenced explicitly in the code block. See the documentation for the
11559 individual languages for details. In contrast, general purpose languages such
11560 as python and ruby require that the code explicitly create output
11561 corresponding to the path indicated by @code{:file}.
11564 @node dir and remote execution, exports, file, Specific Header arguments
11565 @subsubsection dir and remote execution
11566 While the @code{:file} header argument can be used to specify the path to the
11567 output file, @code{:dir} specifies the default directory during code block
11568 execution. If it is absent, then the directory associated with the current
11569 buffer is used. In other words, supplying @code{:dir path} temporarily has
11570 the same effect as changing the current directory with @key{M-x cd path}, and
11571 then not supplying @code{:dir}. Under the surface, @code{:dir} simply sets
11572 the value of the Emacs variable @code{default-directory}.
11574 When using @code{:dir}, you should supply a relative path for file output
11575 (e.g. @code{:file myfile.jpg} or @code{:file results/myfile.jpg}) in which
11576 case that path will be interpreted relative to the default directory.
11578 In other words, if you want your plot to go into a folder called Work in your
11579 home directory, you could use
11581 @example 
11582   #+begin_src R :file myplot.png :dir ~/Work
11583     matplot(matrix(rnorm(100), 10), type="l")
11584   #+end_src
11585 @end example
11587 @subsubheading Remote execution
11588 A directory on a remote machine can be specified using tramp file syntax, in
11589 which case the code will be evaluated on the remote machine. An example is
11591 @example 
11592 #+begin_src R :file plot.png :dir /dand@@yakuba.princeton.edu:
11593   plot(1:10, main=system("hostname", intern=TRUE))
11594 #+end_src
11595 @end example
11597 Text results will be returned to the local Org-mode buffer as usual, and file
11598 output will be created on the remote machine with relative paths interpreted
11599 relative to the remote directory. An Org-mode link to the remote file will be
11600 created.
11602 So, in the above example a plot will be created on the remote machine,
11603 and a link of the following form will be inserted in the org buffer:
11605 @example 
11606 [[file:/scp:dand@@yakuba.princeton.edu:/home/dand/plot.png][plot.png]]
11607 @end example
11609 Most of this functionality follows immediately from the fact that @code{:dir}
11610 sets the value of the Emacs variable @code{default-directory}, thanks to
11611 tramp. Those using XEmacs, or GNU Emacs prior to version 23 may need to
11612 install tramp separately in order for the these features to work correctly.
11614 @subsubheading Further points
11616 @itemize @bullet
11617 @item
11618 If @code{:dir} is used in conjunction with @code{:session}, although it will
11619 determine the starting directory for a new session as expected, no attempt is
11620 currently made to alter the directory associated with an existing session.
11621 @item
11622 @code{:dir} should typically not be used to create files during export with
11623 @code{:exports results} or @code{:exports both}. The reason is that, in order
11624 to retain portability of exported material between machines, during export
11625 links inserted into the buffer will *not* be expanded against @code{default
11626 directory}. Therefore, if @code{default-directory} is altered using
11627 @code{:dir}, it is probable that the file will be created in a location to
11628 which the link does not point.
11629 @end itemize
11631 @node exports, tangle, dir and remote execution, Specific Header arguments
11632 @subsubsection exports
11633 Specify what should be included in HTML or LaTeX exports of the Org-mode
11634 file.
11636 @itemize @bullet
11637 @item code
11638 the default.  The body of code is included into the exported file.  E.g.,
11639 @code{:exports code}.
11640 @item results
11641 the result of evaluating the code is included in the exported file. E.g.,
11642 @code{:exports results}.
11643 @item both
11644 both the code and results are included in the exported file. E.g.,
11645 @code{:exports both}.
11646 @item none
11647 nothing is included in the exported file.  E.g., @code{:exports none}.
11648 @end itemize
11650 @node tangle, no-expand, exports, Specific Header arguments
11651 @subsubsection tangle
11652 Specify whether or not the source code block should be included in tangled
11653 extraction of source code files.
11655 @itemize @bullet
11656 @item yes
11657 the source code block is exported to a source code file named after the
11658 basename (name w/o extension) of the Org-mode file.  E.g., @code{:tangle
11659 yes}.
11660 @item no
11661 the default.  The source code block is not exported to a source code file.
11662 E.g., @code{:tangle no}.
11663 @item other
11664 Any other string passed to the @code{:tangle} header argument is interpreted
11665 as a file basename to which the block will be exported.  E.g., @code{:tangle
11666 basename}.
11667 @end itemize
11669 @node no-expand, session, tangle, Specific Header arguments
11670 @subsubsection no-expand
11671 By default, code blocks are expanded with @code{org-babel-expand-src-block}
11672 during tangling.  This has the effect of assigning values to variables
11673 specified with @code{:var} (see @ref{var}), and of replacing ``noweb''
11674 references (see @ref{Noweb reference syntax}) with their targets.  The
11675 @code{:no-expand} header argument can be used to turn off this behavior.
11677 @node session, noweb, no-expand, Specific Header arguments
11678 @subsubsection session
11679 Start a session for an interpreted language where state is preserved.  This
11680 applies particularly to the supported languages python, R and ruby.
11682 By default, a session is not started.
11684 A string passed to the @code{:session} header argument will give the session
11685 a name.  This makes it possible to run concurrent sessions for each
11686 interpreted language.
11688 @node noweb, cache, session, Specific Header arguments
11689 @subsubsection noweb
11690 Controls the expansion of ``noweb'' style (see @ref{Noweb reference syntax})
11691 references in a source code block.  This header argument can have one of two
11692 values: @code{yes} or @code{no}.
11694 @itemize @bullet
11695 @item @code{no}
11696 the default.  No ``noweb'' syntax specific action is taken on evaluating
11697 source code blocks, However, noweb references will still be expanded during
11698 tangling.
11699 @item @code{yes}
11700 all ``noweb'' syntax references in the body of the source code block will be
11701 expanded before the block is evaluated.
11702 @end itemize
11704 @subsubheading Noweb Prefix Lines
11705 Noweb insertions are now placed behind the line prefix of the
11706 @code{<<reference>>}.
11707 This behavior is illustrated in the following example.  Because the
11708 @code{<<example>>} noweb reference appears behind the SQL comment syntax,
11709 each line of the expanded noweb reference will be commented.
11711 This source code block:
11713 @example
11714   -- <<example>>
11715 @end example
11718 expands to:
11720 @example
11721   -- this is the
11722   -- multi-line body of example
11723 @end example
11725 Note that noweb replacement text that does not contain any newlines will not
11726 be affected by this change, so it is still possible to use inline noweb
11727 references.
11729 @node cache, hlines, noweb, Specific Header arguments
11730 @subsubsection cache
11731 Controls the use of in-buffer caching of source code block results to avoid
11732 re-running unchanged source code blocks.  This header argument can have one
11733 of two values: @code{yes} or @code{no}.
11735 @itemize @bullet
11736 @item @code{no}
11737 The default.  No caching takes place and the source code block will be run
11738 every time it is evaluated.
11739 @item @code{yes}
11740 every time the source code block is run a sha1 hash of the code and arguments
11741 passed to the block will be generated.  This hash is packed into the
11742 @code{#+results:} line of the results and will be checked on subsequent
11743 executions of the source code block.  If the source code block has not
11744 changed since the last time it was evaluated, it will not be re-evaluated.
11745 @end itemize
11747 @node hlines, colnames, cache, Specific Header arguments
11748 @subsubsection hlines
11749 Tables are frequently represented with one or more horizontal lines, or
11750 hlines.  The @code{:hlines} argument to a code block accepts the
11751 values @code{yes} or @code{no}, with a default value of @code{no}.
11753 @itemize @bullet
11754 @item @code{no}
11755 Strips horizontal lines from the input table.  In most languages this is the
11756 desired effect because an @code{hline} symbol is interpreted as an unbound
11757 variable and raises an error.  Setting @code{:hlines no} or relying on the
11758 default value yields the following results.
11760 @example
11761 #+tblname: many-cols
11762 | a | b | c |
11763 |---+---+---|
11764 | d | e | f |
11765 |---+---+---|
11766 | g | h | i |
11768 #+source: echo-table
11769 #+begin_src python :var tab=many-cols
11770   return tab
11771 #+end_src
11773 #+results: echo-table
11774 | a | b | c |
11775 | d | e | f |
11776 | g | h | i |
11777 @end example
11779 @item @code{yes}
11780 Leaves hlines in the table. Setting @code{:hlines yes} has this effect.
11782 @example
11783 #+tblname: many-cols
11784 | a | b | c |
11785 |---+---+---|
11786 | d | e | f |
11787 |---+---+---|
11788 | g | h | i |
11790 #+source: echo-table
11791 #+begin_src python :var tab=many-cols :hlines yes
11792   return tab
11793 #+end_src
11795 #+results: echo-table
11796 | a | b | c |
11797 |---+---+---|
11798 | d | e | f |
11799 |---+---+---|
11800 | g | h | i |
11801 @end example
11802 @end itemize
11804 @node colnames, rownames, hlines, Specific Header arguments
11805 @subsubsection colnames
11806 The @code{:colnames} header argument accepts the values @code{yes},
11807 @code{no}, or @code{nil} for unassigned.  The default value is @code{nil}.
11809 @itemize @bullet
11810 @item @code{nil}
11811 If an input table looks like it has column names
11812 (because its second row is an hline), then the column
11813 names will be removed from the table before
11814 processing, then reapplied to the results.
11816 @example
11817 #+tblname: less-cols
11818 | a |
11819 |---|
11820 | b |
11821 | c |
11822   
11823 #+srcname: echo-table-again
11824 #+begin_src python :var tab=less-cols
11825   return [[val + '*' for val in row] for row in tab]
11826 #+end_src
11828 #+results: echo-table-again
11829 | a  |
11830 |----|
11831 | b* |
11832 | c* |
11833 @end example
11835 @item @code{no}
11836 No column name pre-processing takes place
11838 @item @code{yes}
11839 Column names are removed and reapplied as with @code{nil} even if the table
11840 does not ``look like'' it has column names (i.e. the second row is not an
11841 hline)
11842 @end itemize
11844 @node rownames, , colnames, Specific Header arguments
11845 @subsubsection rownames
11846 The @code{:rownames} header argument can take on the values @code{yes}
11847 or @code{no}, with a default value of @code{no}.
11849 @itemize @bullet
11850 @item @code{no}
11851 No row name pre-processing will take place.
11853 @item @code{yes}
11854 The first column of the table is removed from the table before processing,
11855 and is then reapplied to the results.
11857 @example
11858 #+tblname: with-rownames
11859 | one | 1 | 2 | 3 | 4 |  5 |
11860 | two | 6 | 7 | 8 | 9 | 10 | 
11862 #+srcname: echo-table-once-again
11863 #+begin_src python :var tab=with-rownames :rownames yes
11864   return [[val + 10 for val in row] for row in tab]            
11865 #+end_src
11867 #+results: echo-table-once-again
11868 | one | 11 | 12 | 13 | 14 | 15 |
11869 | two | 16 | 17 | 18 | 19 | 20 |
11870 @end example
11871 @end itemize
11873 @node Results, Noweb reference syntax, Header arguments, Working With Source Code
11874 @section Results
11875 The way in which results are handled depends on whether a session is invoked,
11876 as well as on whether @code{:results value} or @code{:results output} is
11877 used. The following table shows the possibilities:
11879 @multitable @columnfractions 0.32 0.32 0.32
11880 @item @tab non-session @tab session
11881 @item @code{results :value} @tab value of last expression @tab value of last expression
11882 @item @code{results :output} @tab contents of STDOUT @tab concatenation of interpreter output
11883 @end multitable
11885 Note: With @code{:results value}, the result in both @code{:session} and
11886 non-session is returned to Org-mode as a table (a one- or two-dimensional
11887 vector of strings or numbers) when appropriate.
11889 @subsection Non-session
11890 @subsubsection @code{:results value}
11891 This is the default. Internally, the value is obtained by wrapping the code
11892 in a function definition in the external language, and evaluating that
11893 function. Therefore, code should be written as if it were the body of such a
11894 function. In particular, note that python does not automatically return a
11895 value from a function unless a @code{return} statement is present, and so a
11896 @samp{return} statement will usually be required in python.
11898 This is the only one of the four evaluation contexts in which the code is
11899 automatically wrapped in a function definition.
11901 @subsubsection @code{:results output}
11902 The code is passed to the interpreter as an external process, and the
11903 contents of the standard output stream are returned as text. (In certain
11904 languages this also contains the error output stream; this is an area for
11905 future work.)
11907 @subsection @code{:session}
11908 @subsubsection @code{:results value}
11909 The code is passed to the interpreter running as an interactive Emacs
11910 inferior process. The result returned is the result of the last evaluation
11911 performed by the interpreter. (This is obtained in a language-specific
11912 manner: the value of the variable @code{_} in python and ruby, and the value
11913 of @code{.Last.value} in R).
11915 @subsubsection @code{:results output}
11916 The code is passed to the interpreter running as an interactive Emacs
11917 inferior process. The result returned is the concatenation of the sequence of
11918 (text) output from the interactive interpreter. Notice that this is not
11919 necessarily the same as what would be sent to @code{STDOUT} if the same code
11920 were passed to a non-interactive interpreter running as an external
11921 process. For example, compare the following two blocks:
11923 @example
11924 #+begin_src python :results output
11925  print "hello"
11927  print "bye"
11928 #+end_src
11930 #+resname:
11931 : hello
11932 : bye
11933 @end example
11935 In non-session mode, the '2' is not printed and does not appear.
11936 @example
11937 #+begin_src python :results output :session
11938  print "hello"
11940  print "bye"
11941 #+end_src
11943 #+resname:
11944 : hello
11945 : 2
11946 : bye
11947 @end example
11949 But in @code{:session} mode, the interactive interpreter receives input '2'
11950 and prints out its value, '2'. (Indeed, the other print statements are
11951 unnecessary here).
11953 @node Noweb reference syntax, Key bindings & useful functions, Results, Working With Source Code
11954 @section Noweb reference syntax
11955 The ``noweb'' (see @uref{http://www.cs.tufts.edu/~nr/noweb/}) Literate
11956 Programming system allows named blocks of code to be referenced by using the
11957 familiar Noweb syntax:
11959 @example
11960 <<code-block-name>>
11961 @end example
11963 When a source code block is tangled or evaluated, whether or not ``noweb''
11964 references are expanded depends upon the value of the @code{:noweb} header
11965 argument.  If @code{:noweb yes}, then a Noweb reference is expanded before
11966 evaluation.  If @code{:noweb no}, the default, then the reference is not
11967 expanded before evaluation.
11969 Note: the default value, @code{:noweb no}, was chosen to ensure that
11970 Org-babel does not break correct code in a language, such as Ruby, where
11971 @code{<<arg>>} is a syntactically valid construct.  If @code{<<arg>>} is not
11972 syntactically valid in languages that you use, then please consider setting
11973 the default value.
11975 @node Key bindings & useful functions, Batch execution, Noweb reference syntax, Working With Source Code
11976 @section Key bindings & useful functions
11978 Many common Org-mode key sequences are re-bound depending on
11979 the context.  Within a code block the following sequences
11980 are rebound:
11982 @multitable @columnfractions 0.25 0.75
11983 @item @key{C-c C-c} @tab org-babel-execute-src-block
11984 @item @key{C-c C-o} @tab org-babel-open-src-block-result
11985 @item @key{C-up}    @tab org-babel-load-in-session
11986 @item @key{M-down}  @tab org-babel-pop-to-session
11987 @end multitable
11989 @multitable @columnfractions 0.25 0.75
11990 @item @key{C-c C-v a} @tab org-babel-sha1-hash
11991 @item @key{C-c C-v b} @tab org-babel-execute-buffer
11992 @item @key{C-c C-v f} @tab org-babel-tangle-file
11993 @item @key{C-c C-v g} @tab org-babel-goto-named-source-block
11994 @item @key{C-c C-v h} @tab org-babel-describe-bindings
11995 @item @key{C-c C-v l} @tab org-babel-lob-ingest
11996 @item @key{C-c C-v p} @tab org-babel-expand-src-block
11997 @item @key{C-c C-v s} @tab org-babel-execute-subtree
11998 @item @key{C-c C-v t} @tab org-babel-tangle
11999 @item @key{C-c C-v z} @tab org-babel-switch-to-session
12000 @end multitable
12002 When possible these keybindings were extended to work when the control key is
12003 kept pressed, resulting in the following additional keybindings.
12005 @multitable @columnfractions 0.25 0.75
12006 @item @key{C-c C-v C-a} @tab org-babel-sha1-hash
12007 @item @key{C-c C-v C-b} @tab org-babel-execute-buffer
12008 @item @key{C-c C-v C-f} @tab org-babel-tangle-file
12009 @item @key{C-c C-v C-l} @tab org-babel-lob-ingest
12010 @item @key{C-c C-v C-p} @tab org-babel-expand-src-block
12011 @item @key{C-c C-v C-s} @tab org-babel-execute-subtree
12012 @item @key{C-c C-v C-t} @tab org-babel-tangle
12013 @item @key{C-c C-v C-z} @tab org-babel-switch-to-session
12014 @end multitable
12016 @node Batch execution, , Key bindings & useful functions, Working With Source Code
12017 @section Batch execution
12018 It is possible to call functions from the command line.  This shell
12019 script calls @code{org-babel-tangle} on every one of its arguments.
12021 Be sure to adjust the paths to fit your system.
12023 @example
12024 #!/bin/sh
12025 # -*- mode: shell-script -*-
12027 # tangle a file with org-babel
12029 DIR=`pwd`
12030 FILES=""
12032 # wrap each argument in the code required to call tangle on it
12033 for i in $@@; do
12034 FILES="$FILES \"$i\""
12035 done
12037 emacsclient \
12038 --eval "(progn
12039 (add-to-list 'load-path (expand-file-name \"~/src/org/lisp/\"))
12040 (add-to-list 'load-path (expand-file-name \"~/src/org/contrib/lisp/\"))
12041 (require 'org)(require 'org-exp)(require 'org-babel)
12042 (mapc (lambda (file)
12043        (find-file (expand-file-name file \"$DIR\"))
12044        (org-babel-tangle)
12045        (kill-buffer)) '($FILES)))"
12046 @end example
12048 @node Miscellaneous, Hacking, Working With Source Code, Top
12049 @chapter Miscellaneous
12051 @menu
12052 * Completion::                  M-TAB knows what you need
12053 * Speed keys::                  Electic commands at the beginning of a headline
12054 * Customization::               Adapting Org to your taste
12055 * In-buffer settings::          Overview of the #+KEYWORDS
12056 * The very busy C-c C-c key::   When in doubt, press C-c C-c
12057 * Clean view::                  Getting rid of leading stars in the outline
12058 * TTY keys::                    Using Org on a tty
12059 * Interaction::                 Other Emacs packages
12060 @end menu
12063 @node Completion, Speed keys, Miscellaneous, Miscellaneous
12064 @section Completion
12065 @cindex completion, of @TeX{} symbols
12066 @cindex completion, of TODO keywords
12067 @cindex completion, of dictionary words
12068 @cindex completion, of option keywords
12069 @cindex completion, of tags
12070 @cindex completion, of property keys
12071 @cindex completion, of link abbreviations
12072 @cindex @TeX{} symbol completion
12073 @cindex TODO keywords completion
12074 @cindex dictionary word completion
12075 @cindex option keyword completion
12076 @cindex tag completion
12077 @cindex link abbreviations, completion of
12079 Emacs would not be Emacs without completion, and Org-mode uses it whenever it
12080 makes sense.  If you prefer an @i{iswitchb}- or @i{ido}-like interface for
12081 some of the completion prompts, you can specify your preference by setting at
12082 most one of the variables @code{org-completion-use-iswitchb}
12083 @code{org-completion-use-ido}.
12085 Org supports in-buffer completion.  This type of completion does
12086 not make use of the minibuffer.  You simply type a few letters into
12087 the buffer and use the key to complete text right there.
12089 @table @kbd
12090 @kindex M-@key{TAB}
12091 @item M-@key{TAB}
12092 Complete word at point
12093 @itemize @bullet
12094 @item
12095 At the beginning of a headline, complete TODO keywords.
12096 @item
12097 After @samp{\}, complete @TeX{} symbols supported by the exporter.
12098 @item
12099 After @samp{*}, complete headlines in the current buffer so that they
12100 can be used in search links like @samp{[[*find this headline]]}.
12101 @item
12102 After @samp{:} in a headline, complete tags.  The list of tags is taken
12103 from the variable @code{org-tag-alist} (possibly set through the
12104 @samp{#+TAGS} in-buffer option, @pxref{Setting tags}), or it is created
12105 dynamically from all tags used in the current buffer.
12106 @item
12107 After @samp{:} and not in a headline, complete property keys.  The list
12108 of keys is constructed dynamically from all keys used in the current
12109 buffer.
12110 @item
12111 After @samp{[}, complete link abbreviations (@pxref{Link abbreviations}).
12112 @item
12113 After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
12114 @samp{OPTIONS} which set file-specific options for Org mode.  When the
12115 option keyword is already complete, pressing @kbd{M-@key{TAB}} again
12116 will insert example settings for this keyword.
12117 @item
12118 In the line after @samp{#+STARTUP: }, complete startup keywords,
12119 i.e. valid keys for this line.
12120 @item
12121 Elsewhere, complete dictionary words using Ispell.
12122 @end itemize
12123 @end table
12125 @node Speed keys, Customization, Completion, Miscellaneous
12126 @section Speed keys
12127 @cindex speed keys
12128 @vindex org-use-speed-commands
12129 @vindex org-speed-commands-user
12131 Single keys can be made to execute commands when the cursor is at the
12132 beginning of a headline, i.e. before the first star.  Configure the variable
12133 @code{org-use-speed-commands} to activate this feature.  There is a
12134 pre-defined list of commands, and you can add more such commands using the
12135 variable @code{org-speed-commands-user}.  Speed keys do not only speed up
12136 navigation and other commands, but they also provide an alternative way to
12137 execute commands bound to keys that are not or not easily available on a tty,
12138 or on a small mobile device with a limited keyboard.
12140 To see which commands are available, activate the feature and press @kbd{?}
12141 with the cursor at the beginning of a headline.
12143 @node Customization, In-buffer settings, Speed keys, Miscellaneous
12144 @section Customization
12145 @cindex customization
12146 @cindex options, for customization
12147 @cindex variables, for customization
12149 There are more than 180 variables that can be used to customize
12150 Org.  For the sake of compactness of the manual, I am not
12151 describing the variables here.  A structured overview of customization
12152 variables is available with @kbd{M-x org-customize}.  Or select
12153 @code{Browse Org Group} from the @code{Org->Customization} menu.  Many
12154 settings can also be activated on a per-file basis, by putting special
12155 lines into the buffer (@pxref{In-buffer settings}).
12157 @node In-buffer settings, The very busy C-c C-c key, Customization, Miscellaneous
12158 @section Summary of in-buffer settings
12159 @cindex in-buffer settings
12160 @cindex special keywords
12162 Org mode uses special lines in the buffer to define settings on a
12163 per-file basis.  These lines start with a @samp{#+} followed by a
12164 keyword, a colon, and then individual words defining a setting.  Several
12165 setting words can be in the same line, but you can also have multiple
12166 lines for the keyword.  While these settings are described throughout
12167 the manual, here is a summary.  After changing any of those lines in the
12168 buffer, press @kbd{C-c C-c} with the cursor still in the line to
12169 activate the changes immediately.  Otherwise they become effective only
12170 when the file is visited again in a new Emacs session.
12172 @vindex org-archive-location
12173 @table @kbd
12174 @item #+ARCHIVE: %s_done::
12175 This line sets the archive location for the agenda file.  It applies for
12176 all subsequent lines until the next @samp{#+ARCHIVE} line, or the end
12177 of the file.  The first such line also applies to any entries before it.
12178 The corresponding variable is @code{org-archive-location}.
12179 @item #+CATEGORY:
12180 This line sets the category for the agenda file.  The category applies
12181 for all subsequent lines until the next @samp{#+CATEGORY} line, or the
12182 end of the file.  The first such line also applies to any entries before it.
12183 @item #+COLUMNS: %25ITEM .....
12184 @cindex property, COLUMNS
12185 Set the default format for columns view.  This format applies when
12186 columns view is invoked in locations where no @code{COLUMNS} property
12187 applies.
12188 @item #+CONSTANTS: name1=value1 ...
12189 @vindex org-table-formula-constants
12190 @vindex org-table-formula
12191 Set file-local values for constants to be used in table formulas.  This
12192 line set the local variable @code{org-table-formula-constants-local}.
12193 The global version of this variable is
12194 @code{org-table-formula-constants}.
12195 @item #+FILETAGS: :tag1:tag2:tag3:
12196 Set tags that can be inherited by any entry in the file, including the
12197 top-level entries.
12198 @item #+DRAWERS: NAME1 .....
12199 @vindex org-drawers
12200 Set the file-local set of drawers.  The corresponding global variable is
12201 @code{org-drawers}.
12202 @item #+LINK:  linkword replace
12203 @vindex org-link-abbrev-alist
12204 These lines (several are allowed) specify link abbreviations.
12205 @xref{Link abbreviations}.  The corresponding variable is
12206 @code{org-link-abbrev-alist}.
12207 @item #+PRIORITIES: highest lowest default
12208 @vindex org-highest-priority
12209 @vindex org-lowest-priority
12210 @vindex org-default-priority
12211 This line sets the limits and the default for the priorities.  All three
12212 must be either letters A-Z or numbers 0-9.  The highest priority must
12213 have a lower ASCII number that the lowest priority.
12214 @item #+PROPERTY: Property_Name Value
12215 This line sets a default inheritance value for entries in the current
12216 buffer, most useful for specifying the allowed values of a property.
12217 @cindex #+SETUPFILE
12218 @item #+SETUPFILE: file
12219 This line defines a file that holds more in-buffer setup.  Normally this is
12220 entirely ignored.  Only when the buffer is parsed for option-setting lines
12221 (i.e. when starting Org mode for a file, when pressing @kbd{C-c C-c} in a
12222 settings line, or when exporting), then the contents of this file are parsed
12223 as if they had been included in the buffer.  In particular, the file can be
12224 any other Org mode file with internal setup.  You can visit the file the
12225 cursor is in the line with @kbd{C-c '}.
12226 @item #+STARTUP:
12227 @cindex #+STARTUP:
12228 This line sets options to be used at startup of Org mode, when an
12229 Org file is being visited.
12231 The first set of options deals with the initial visibility of the outline
12232 tree.  The corresponding variable for global default settings is
12233 @code{org-startup-folded}, with a default value @code{t}, which means
12234 @code{overview}.
12235 @vindex org-startup-folded
12236 @cindex @code{overview}, STARTUP keyword
12237 @cindex @code{content}, STARTUP keyword
12238 @cindex @code{showall}, STARTUP keyword
12239 @cindex @code{showeverything}, STARTUP keyword
12240 @example
12241 overview         @r{top-level headlines only}
12242 content          @r{all headlines}
12243 showall          @r{no folding of any entries}
12244 showeverything   @r{show even drawer contents}
12245 @end example
12247 @vindex org-startup-indented
12248 @cindex @code{indent}, STARTUP keyword
12249 @cindex @code{noindent}, STARTUP keyword
12250 Dynamic virtual indentation is controlled by the variable
12251 @code{org-startup-indented}@footnote{Emacs 23 and Org-mode 6.29 are required}
12252 @example
12253 indent     @r{start with @code{org-indent-mode} turned on}
12254 noindent   @r{start with @code{org-indent-mode} turned off}
12255 @end example
12257 @vindex org-startup-align-all-tables
12258 Then there are options for aligning tables upon visiting a file.  This
12259 is useful in files containing narrowed table columns.  The corresponding
12260 variable is @code{org-startup-align-all-tables}, with a default value
12261 @code{nil}.
12262 @cindex @code{align}, STARTUP keyword
12263 @cindex @code{noalign}, STARTUP keyword
12264 @example
12265 align      @r{align all tables}
12266 noalign    @r{don't align tables on startup}
12267 @end example
12268 @vindex org-log-done
12269 @vindex org-log-note-clock-out
12270 @vindex org-log-repeat
12271 Logging the closing and reopening of TODO items and clock intervals can be
12272 configured using these options (see variables @code{org-log-done},
12273 @code{org-log-note-clock-out} and @code{org-log-repeat})
12274 @cindex @code{logdone}, STARTUP keyword
12275 @cindex @code{lognotedone}, STARTUP keyword
12276 @cindex @code{nologdone}, STARTUP keyword
12277 @cindex @code{lognoteclock-out}, STARTUP keyword
12278 @cindex @code{nolognoteclock-out}, STARTUP keyword
12279 @cindex @code{logrepeat}, STARTUP keyword
12280 @cindex @code{lognoterepeat}, STARTUP keyword
12281 @cindex @code{nologrepeat}, STARTUP keyword
12282 @cindex @code{logreschedule}, STARTUP keyword
12283 @cindex @code{lognotereschedule}, STARTUP keyword
12284 @cindex @code{nologreschedule}, STARTUP keyword
12285 @cindex @code{logredeadline}, STARTUP keyword
12286 @cindex @code{lognoteredeadline}, STARTUP keyword
12287 @cindex @code{nologredeadline}, STARTUP keyword
12288 @cindex @code{logrefile}, STARTUP keyword
12289 @cindex @code{lognoterefile}, STARTUP keyword
12290 @cindex @code{nologrefile}, STARTUP keyword
12291 @example
12292 logdone            @r{record a timestamp when an item is marked DONE}
12293 lognotedone        @r{record timestamp and a note when DONE}
12294 nologdone          @r{don't record when items are marked DONE}
12295 logrepeat          @r{record a time when reinstating a repeating item}
12296 lognoterepeat      @r{record a note when reinstating a repeating item}
12297 nologrepeat        @r{do not record when reinstating repeating item}
12298 lognoteclock-out   @r{record a note when clocking out}
12299 nolognoteclock-out @r{don't record a note when clocking out}
12300 logreschedule      @r{record a timestamp when scheduling time changes}
12301 lognotereschedule  @r{record a note when scheduling time changes}
12302 nologreschedule    @r{do not record when a scheduling date changes}
12303 logredeadline      @r{record a timestamp when deadline changes}
12304 lognoteredeadline  @r{record a note when deadline changes}
12305 nologredeadline    @r{do not record when a deadline date changes}
12306 logrefile          @r{record a timestamp when refiling}
12307 lognoterefile      @r{record a note when refiling}
12308 nologrefile        @r{do not record when refiling}
12309 @end example
12310 @vindex org-hide-leading-stars
12311 @vindex org-odd-levels-only
12312 Here are the options for hiding leading stars in outline headings, and for
12313 indenting outlines.  The corresponding variables are
12314 @code{org-hide-leading-stars} and @code{org-odd-levels-only}, both with a
12315 default setting @code{nil} (meaning @code{showstars} and @code{oddeven}).
12316 @cindex @code{hidestars}, STARTUP keyword
12317 @cindex @code{showstars}, STARTUP keyword
12318 @cindex @code{odd}, STARTUP keyword
12319 @cindex @code{even}, STARTUP keyword
12320 @example
12321 hidestars  @r{make all but one of the stars starting a headline invisible.}
12322 showstars  @r{show all stars starting a headline}
12323 indent     @r{virtual indentation according to outline level}
12324 noindent   @r{no virtual indentation according to outline level}
12325 odd        @r{allow only odd outline levels (1,3,...)}
12326 oddeven    @r{allow all outline levels}
12327 @end example
12328 @vindex org-put-time-stamp-overlays
12329 @vindex org-time-stamp-overlay-formats
12330 To turn on custom format overlays over timestamps (variables
12331 @code{org-put-time-stamp-overlays} and
12332 @code{org-time-stamp-overlay-formats}), use
12333 @cindex @code{customtime}, STARTUP keyword
12334 @example
12335 customtime @r{overlay custom time format}
12336 @end example
12337 @vindex constants-unit-system
12338 The following options influence the table spreadsheet (variable
12339 @code{constants-unit-system}).
12340 @cindex @code{constcgs}, STARTUP keyword
12341 @cindex @code{constSI}, STARTUP keyword
12342 @example
12343 constcgs   @r{@file{constants.el} should use the c-g-s unit system}
12344 constSI    @r{@file{constants.el} should use the SI unit system}
12345 @end example
12346 @vindex org-footnote-define-inline
12347 @vindex org-footnote-auto-label
12348 @vindex org-footnote-auto-adjust
12349 To influence footnote settings, use the following keywords.  The
12350 corresponding variables are @code{org-footnote-define-inline},
12351 @code{org-footnote-auto-label}, and @code{org-footnote-auto-adjust}.
12352 @cindex @code{fninline}, STARTUP keyword
12353 @cindex @code{nofninline}, STARTUP keyword
12354 @cindex @code{fnlocal}, STARTUP keyword
12355 @cindex @code{fnprompt}, STARTUP keyword
12356 @cindex @code{fnauto}, STARTUP keyword
12357 @cindex @code{fnconfirm}, STARTUP keyword
12358 @cindex @code{fnplain}, STARTUP keyword
12359 @cindex @code{fnadjust}, STARTUP keyword
12360 @cindex @code{nofnadjust}, STARTUP keyword
12361 @example
12362 fninline    @r{define footnotes inline}
12363 fnnoinline  @r{define footnotes in separate section}
12364 fnlocal     @r{define footnotes near first reference, but not inline}
12365 fnprompt    @r{prompt for footnote labels}
12366 fnauto      @r{create [fn:1]-like labels automatically (default)}
12367 fnconfirm   @r{offer automatic label for editing or confirmation}
12368 fnplain     @r{create [1]-like labels automatically}
12369 fnadjust    @r{automatically renumber and sort footnotes}
12370 nofnadjust  @r{do not renumber and sort automatically}
12371 @end example
12372 @cindex org-hide-block-startup
12373 To hide blocks on startup, use these keywords. The corresponding variable is
12374 @code{org-hide-block-startup}.
12375 @cindex @code{hideblocks}, STARTUP keyword
12376 @cindex @code{nohideblocks}, STARTUP keyword
12377 @example
12378 hideblocks   @r{Hide all begin/end blocks on startup}
12379 nohideblocks @r{Do not hide blocks on startup}
12380 @end example
12381 @cindex org-pretty-entities
12382 The the display of entities as UTF8 characters is governed by the variable
12383 @code{org-pretty-entities} and the keywords
12384 @cindex @code{entitiespretty}, STARTUP keyword
12385 @cindex @code{entitiesplain}, STARTUP keyword
12386 @example
12387 entitiespretty  @r{Show entities as UTF8 characters where possible}
12388 entitiesplain   @r{Leave entities plain}
12389 @end example
12390 @item #+TAGS:  TAG1(c1) TAG2(c2)
12391 @vindex org-tag-alist
12392 These lines (several such lines are allowed) specify the valid tags in
12393 this file, and (potentially) the corresponding @emph{fast tag selection}
12394 keys.  The corresponding variable is @code{org-tag-alist}.
12395 @item #+TBLFM:
12396 This line contains the formulas for the table directly above the line.
12397 @item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+DATE:,
12398 @itemx #+OPTIONS:, #+BIND:, #+XSLT:,
12399 @itemx #+DESCRIPTION:, #+KEYWORDS:,
12400 @itemx #+LATEX_HEADER:, #+STYLE:, #+LINK_UP:, #+LINK_HOME:,
12401 @itemx #+EXPORT_SELECT_TAGS:, #+EXPORT_EXCLUDE_TAGS:
12402 These lines provide settings for exporting files.  For more details see
12403 @ref{Export options}.
12404 @item #+TODO:    #+SEQ_TODO:   #+TYP_TODO:
12405 @vindex org-todo-keywords
12406 These lines set the TODO keywords and their interpretation in the
12407 current file.  The corresponding variable is @code{org-todo-keywords}.
12408 @end table
12410 @node The very busy C-c C-c key, Clean view, In-buffer settings, Miscellaneous
12411 @section The very busy C-c C-c key
12412 @kindex C-c C-c
12413 @cindex C-c C-c, overview
12415 The key @kbd{C-c C-c} has many purposes in Org, which are all
12416 mentioned scattered throughout this manual.  One specific function of
12417 this key is to add @emph{tags} to a headline (@pxref{Tags}).  In many
12418 other circumstances it means something like @emph{``Hey Org, look
12419 here and update according to what you see here''}.  Here is a summary of
12420 what this means in different contexts.
12422 @itemize @minus
12423 @item
12424 If there are highlights in the buffer from the creation of a sparse
12425 tree, or from clock display, remove these highlights.
12426 @item
12427 If the cursor is in one of the special @code{#+KEYWORD} lines, this
12428 triggers scanning the buffer for these lines and updating the
12429 information.
12430 @item
12431 If the cursor is inside a table, realign the table.  This command
12432 works even if the automatic table editor has been turned off.
12433 @item
12434 If the cursor is on a @code{#+TBLFM} line, re-apply the formulas to
12435 the entire table.
12436 @item
12437 If the current buffer is a Remember buffer, close the note and file it.
12438 With a prefix argument, file it, without further interaction, to the
12439 default location.
12440 @item
12441 If the cursor is on a @code{<<<target>>>}, update radio targets and
12442 corresponding links in this buffer.
12443 @item
12444 If the cursor is in a property line or at the start or end of a property
12445 drawer, offer property commands.
12446 @item
12447 If the cursor is at a footnote reference, go to the corresponding
12448 definition, and vice versa.
12449 @item
12450 If the cursor is on a statistics cookie, update it.
12451 @item
12452 If the cursor is in a plain list item with a checkbox, toggle the status
12453 of the checkbox.
12454 @item
12455 If the cursor is on a numbered item in a plain list, renumber the
12456 ordered list.
12457 @item
12458 If the cursor is on the @code{#+BEGIN} line of a dynamic block, the
12459 block is updated.
12460 @end itemize
12462 @node Clean view, TTY keys, The very busy C-c C-c key, Miscellaneous
12463 @section A cleaner outline view
12464 @cindex hiding leading stars
12465 @cindex dynamic indentation
12466 @cindex odd-levels-only outlines
12467 @cindex clean outline view
12469 Some people find it noisy and distracting that the Org headlines start with a
12470 potentially large number of stars, and that text below the headlines is not
12471 indented.  While this is no problem when writing a @emph{book-like} document
12472 where the outline headings are really section headings, in a more
12473 @emph{list-oriented} outline, indented structure is a lot cleaner:
12475 @example
12476 @group
12477 * Top level headline             |    * Top level headline
12478 ** Second level                  |      * Second level
12479 *** 3rd level                    |        * 3rd level
12480 some text                        |          some text
12481 *** 3rd level                    |        * 3rd level
12482 more text                        |          more text
12483 * Another top level headline     |    * Another top level headline
12484 @end group
12485 @end example
12487 @noindent
12489 If you are using at least Emacs 23.2 and version 6.29 of Org, this kind of
12490 view can be achieved dynamically at display time using
12491 @code{org-indent-mode}.  @i{Using this with earlier versions of Emacs can
12492 lead to crashes.} In this minor
12493 mode, all lines are prefixed for display with the necessary amount of
12494 space@footnote{@code{org-indent-mode} also sets the @code{wrap-prefix}
12495 property, such that @code{visual-line-mode} (or purely setting
12496 @code{word-wrap}) wraps long lines (including headlines) correctly indented.
12497 }.  Also headlines are prefixed with additional stars, so that the amount of
12498 indentation shifts by two@footnote{See the variable
12499 @code{org-indent-indentation-per-level}.}  spaces per level.  All headline
12500 stars but the last one are made invisible using the @code{org-hide}
12501 face@footnote{Turning on @code{org-indent-mode} sets
12502 @code{org-hide-leading-stars} to @code{t} and @code{org-adapt-indentation} to
12503 @code{nil}.} - see below under @samp{2.} for more information on how this
12504 works.  You can turn on @code{org-indent-mode} for all files by customizing
12505 the variable @code{org-startup-indented}, or you can turn it on for
12506 individual files using
12508 @example
12509 #+STARTUP: indent
12510 @end example
12512 If you want a similar effect in earlier version of Emacs and/or Org, or if
12513 you want the indentation to be hard space characters so that the plain text
12514 file looks as similar as possible to the Emacs display, Org supports you in
12515 the following way:
12517 @enumerate
12518 @item
12519 @emph{Indentation of text below headlines}@*
12520 You may indent text below each headline to make the left boundary line up
12521 with the headline, like
12523 @example
12524 *** 3rd level
12525     more text, now indented
12526 @end example
12528 @vindex org-adapt-indentation
12529 Org supports this with paragraph filling, line wrapping, and structure
12530 editing@footnote{See also the variable @code{org-adapt-indentation}.},
12531 preserving or adapting the indentation as appropriate.
12533 @item
12534 @vindex org-hide-leading-stars
12535 @emph{Hiding leading stars}@* You can modify the display in such a way that
12536 all leading stars become invisible.  To do this in a global way, configure
12537 the variable @code{org-hide-leading-stars} or change this on a per-file basis
12538 with
12540 @example
12541 #+STARTUP: hidestars
12542 #+STARTUP: showstars
12543 @end example
12545 With hidden stars, the tree becomes:
12547 @example
12548 @group
12549 * Top level headline
12550  * Second level
12551   * 3rd level
12552   ...
12553 @end group
12554 @end example
12556 @noindent
12557 @vindex org-hide @r{(face)}
12558 The leading stars are not truly replaced by whitespace, they are only
12559 fontified with the face @code{org-hide} that uses the background color as
12560 font color.  If you are not using either white or black background, you may
12561 have to customize this face to get the wanted effect.  Another possibility is
12562 to set this font such that the extra stars are @i{almost} invisible, for
12563 example using the color @code{grey90} on a white background.
12565 @item
12566 @vindex org-odd-levels-only
12567 Things become cleaner still if you skip all the even levels and use only odd
12568 levels 1, 3, 5..., effectively adding two stars to go from one outline level
12569 to the next@footnote{When you need to specify a level for a property search
12570 or refile targets, @samp{LEVEL=2} will correspond to 3 stars, etc@.}.  In this
12571 way we get the outline view shown at the beginning of this section.  In order
12572 to make the structure editing and export commands handle this convention
12573 correctly, configure the variable @code{org-odd-levels-only}, or set this on
12574 a per-file basis with one of the following lines:
12576 @example
12577 #+STARTUP: odd
12578 #+STARTUP: oddeven
12579 @end example
12581 You can convert an Org file from single-star-per-level to the
12582 double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels
12583 RET} in that file.  The reverse operation is @kbd{M-x
12584 org-convert-to-oddeven-levels}.
12585 @end enumerate
12587 @node TTY keys, Interaction, Clean view, Miscellaneous
12588 @section Using Org on a tty
12589 @cindex tty key bindings
12591 Because Org contains a large number of commands, by default many of
12592 Org's core commands are bound to keys that are generally not
12593 accessible on a tty, such as the cursor keys (@key{left}, @key{right},
12594 @key{up}, @key{down}), @key{TAB} and @key{RET}, in particular when used
12595 together with modifiers like @key{Meta} and/or @key{Shift}.  To access
12596 these commands on a tty when special keys are unavailable, the following
12597 alternative bindings can be used.  The tty bindings below will likely be
12598 more cumbersome; you may find for some of the bindings below that a
12599 customized workaround suits you better.  For example, changing a timestamp
12600 is really only fun with @kbd{S-@key{cursor}} keys, whereas on a
12601 tty you would rather use @kbd{C-c .} to re-insert the timestamp.
12603 @multitable @columnfractions 0.15 0.2 0.1 0.2
12604 @item @b{Default} @tab @b{Alternative 1} @tab @b{Speed key} @tab @b{Alternative 2} 
12605 @item @kbd{S-@key{TAB}}     @tab @kbd{C-u @key{TAB}}       @tab @kbd{C} @tab                            
12606 @item @kbd{M-@key{left}}    @tab @kbd{C-c C-x l}           @tab @kbd{l} @tab @kbd{@key{Esc} @key{left}} 
12607 @item @kbd{M-S-@key{left}}  @tab @kbd{C-c C-x L}           @tab @kbd{L} @tab                            
12608 @item @kbd{M-@key{right}}   @tab @kbd{C-c C-x r}           @tab @kbd{r} @tab @kbd{@key{Esc} @key{right}}
12609 @item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R}           @tab @kbd{R} @tab                           
12610 @item @kbd{M-@key{up}}      @tab @kbd{C-c C-x u}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{up}}  
12611 @item @kbd{M-S-@key{up}}    @tab @kbd{C-c C-x U}           @tab @kbd{U} @tab                           
12612 @item @kbd{M-@key{down}}    @tab @kbd{C-c C-x d}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{down}}
12613 @item @kbd{M-S-@key{down}}  @tab @kbd{C-c C-x D}           @tab @kbd{D} @tab                            
12614 @item @kbd{S-@key{RET}}     @tab @kbd{C-c C-x c}           @tab @kbd{ } @tab
12615 @item @kbd{M-@key{RET}}     @tab @kbd{C-c C-x m}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{RET}}
12616 @item @kbd{M-S-@key{RET}}   @tab @kbd{C-c C-x M}           @tab @kbd{ } @tab
12617 @item @kbd{S-@key{left}}    @tab @kbd{C-c @key{left}}      @tab @kbd{ } @tab
12618 @item @kbd{S-@key{right}}   @tab @kbd{C-c @key{right}}     @tab @kbd{ } @tab
12619 @item @kbd{S-@key{up}}      @tab @kbd{C-c @key{up}}        @tab @kbd{ } @tab
12620 @item @kbd{S-@key{down}}    @tab @kbd{C-c @key{down}}      @tab @kbd{ } @tab
12621 @item @kbd{C-S-@key{left}}  @tab @kbd{C-c C-x @key{left}}  @tab @kbd{ } @tab
12622 @item @kbd{C-S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab @kbd{ } @tab
12623 @end multitable
12626 @node Interaction,  , TTY keys, Miscellaneous
12627 @section Interaction with other packages
12628 @cindex packages, interaction with other
12629 Org lives in the world of GNU Emacs and interacts in various ways
12630 with other code out there.
12632 @menu
12633 * Cooperation::                 Packages Org cooperates with
12634 * Conflicts::                   Packages that lead to conflicts
12635 @end menu
12637 @node Cooperation, Conflicts, Interaction, Interaction
12638 @subsection Packages that Org cooperates with
12640 @table @asis
12641 @cindex @file{calc.el}
12642 @cindex Gillespie, Dave
12643 @item @file{calc.el} by Dave Gillespie
12644 Org uses the Calc package for implementing spreadsheet
12645 functionality in its tables (@pxref{The spreadsheet}).  Org
12646 checks for the availability of Calc by looking for the function
12647 @code{calc-eval} which will have been autoloaded during setup if Calc has
12648 been installed properly.  As of Emacs 22, Calc is part of the Emacs
12649 distribution.  Another possibility for interaction between the two
12650 packages is using Calc for embedded calculations. @xref{Embedded Mode,
12651 , Embedded Mode, Calc, GNU Emacs Calc Manual}.
12652 @item @file{constants.el} by Carsten Dominik
12653 @cindex @file{constants.el}
12654 @cindex Dominik, Carsten
12655 @vindex org-table-formula-constants
12656 In a table formula (@pxref{The spreadsheet}), it is possible to use
12657 names for natural constants or units.  Instead of defining your own
12658 constants in the variable @code{org-table-formula-constants}, install
12659 the @file{constants} package which defines a large number of constants
12660 and units, and lets you use unit prefixes like @samp{M} for
12661 @samp{Mega}, etc@.  You will need version 2.0 of this package, available
12662 at @url{http://www.astro.uva.nl/~dominik/Tools}. Org checks for
12663 the function @code{constants-get}, which has to be autoloaded in your
12664 setup.  See the installation instructions in the file
12665 @file{constants.el}.
12666 @item @file{cdlatex.el} by Carsten Dominik
12667 @cindex @file{cdlatex.el}
12668 @cindex Dominik, Carsten
12669 Org mode can make use of the CDLa@TeX{} package to efficiently enter
12670 La@TeX{} fragments into Org files.  See @ref{CDLaTeX mode}.
12671 @item @file{imenu.el} by Ake Stenhoff and Lars Lindberg
12672 @cindex @file{imenu.el}
12673 Imenu allows menu access to an index of items in a file.  Org mode
12674 supports Imenu---all you need to do to get the index is the following:
12675 @lisp
12676 (add-hook 'org-mode-hook
12677           (lambda () (imenu-add-to-menubar "Imenu")))
12678 @end lisp
12679 @vindex org-imenu-depth
12680 By default the index is two levels deep---you can modify the depth using
12681 the option @code{org-imenu-depth}.
12682 @item @file{remember.el} by John Wiegley
12683 @cindex @file{remember.el}
12684 @cindex Wiegley, John
12685 Org cooperates with remember, see @ref{Remember}.
12686 As of Emacs 23, @file{Remember.el} is part of the Emacs distribution.
12687 @item @file{speedbar.el} by Eric M. Ludlam
12688 @cindex @file{speedbar.el}
12689 @cindex Ludlam, Eric M.
12690 Speedbar is a package that creates a special frame displaying files and
12691 index items in files.  Org mode supports Speedbar and allows you to
12692 drill into Org files directly from the Speedbar.  It also allows you to
12693 restrict the scope of agenda commands to a file or a subtree by using
12694 the command @kbd{<} in the Speedbar frame.
12695 @cindex @file{table.el}
12696 @item @file{table.el} by Takaaki Ota
12697 @kindex C-c C-c
12698 @cindex table editor, @file{table.el}
12699 @cindex @file{table.el}
12700 @cindex Ota, Takaaki
12702 Complex ASCII tables with automatic line wrapping, column- and row-spanning,
12703 and alignment can be created using the Emacs table package by Takaaki Ota
12704 (@uref{http://sourceforge.net/projects/table}, and also part of Emacs 22).
12705 Org-mode will recognize these tables and export them properly.  Because of
12706 interference with other Org-mode functionality, you unfortunately cannot edit
12707 these tables directly in the buffer.  Instead, you need to use the command
12708 @kbd{C-c '} to edit them, similar to source code snippets.
12710 @table @kbd
12711 @kindex C-c '
12712 @item C-c '
12713 Edit a @file{table.el} table.  Works when the cursor is in a table.el table.
12715 @kindex C-c ~
12716 @item C-c ~
12717 Insert a @file{table.el} table.  If there is already a table at point, this
12718 command converts it between the @file{table.el} format and the Org-mode
12719 format.  See the documentation string of the command
12720 @code{org-convert-table} for the restrictions under which this is
12721 possible.
12722 @end table
12723 @file{table.el} is part of Emacs since Emacs 22.
12724 @item @file{footnote.el} by Steven L. Baur
12725 @cindex @file{footnote.el}
12726 @cindex Baur, Steven L.
12727 Org mode recognizes numerical footnotes as provided by this package.
12728 However, Org mode also has its own footnote support (@pxref{Footnotes}),
12729 which makes using @file{footnote.el} unnecessary.
12730 @end table
12732 @node Conflicts,  , Cooperation, Interaction
12733 @subsection Packages that lead to conflicts with Org mode
12735 @table @asis
12737 @cindex @code{shift-selection-mode}
12738 @vindex org-support-shift-select
12739 In Emacs 23, @code{shift-selection-mode} is on by default, meaning that
12740 cursor motions combined with the shift key should start or enlarge regions.
12741 This conflicts with the use of @kbd{S-@key{cursor}} commands in Org to change
12742 timestamps, TODO keywords, priorities, and item bullet types if the cursor is
12743 at such a location.  By default, @kbd{S-@key{cursor}} commands outside
12744 special contexts don't do anything, but you can customize the variable
12745 @code{org-support-shift-select}.  Org mode then tries to accommodate shift
12746 selection by (i) using it outside of the special contexts where special
12747 commands apply, and by (ii) extending an existing active region even if the
12748 cursor moves across a special context.
12750 @item @file{CUA.el} by Kim. F. Storm
12751 @cindex @file{CUA.el}
12752 @cindex Storm, Kim. F.
12753 @vindex org-replace-disputed-keys
12754 Key bindings in Org conflict with the @kbd{S-<cursor>} keys used by CUA mode
12755 (as well as @code{pc-select-mode} and @code{s-region-mode}) to select and extend the
12756 region.  In fact, Emacs 23 has this built-in in the form of
12757 @code{shift-selection-mode}, see previous paragraph.  If you are using Emacs
12758 23, you probably don't want to use another package for this purpose.  However,
12759 if you prefer to leave these keys to a different package while working in
12760 Org mode, configure the variable @code{org-replace-disputed-keys}.  When set,
12761 Org will move the following key bindings in Org files, and in the agenda
12762 buffer (but not during date selection).
12764 @example
12765 S-UP      ->  M-p             S-DOWN     ->  M-n
12766 S-LEFT    ->  M--             S-RIGHT    ->  M-+
12767 C-S-LEFT  ->  M-S--           C-S-RIGHT  ->  M-S-+
12768 @end example
12770 @vindex org-disputed-keys
12771 Yes, these are unfortunately more difficult to remember.  If you want
12772 to have other replacement keys, look at the variable
12773 @code{org-disputed-keys}.
12775 @item @file{yasnippet.el}
12776 @cindex @file{yasnippet.el}
12777 The way Org-mode binds the TAB key (binding to @code{[tab]} instead of
12778 @code{"\t"}) overrules yasnippets' access to this key.  The following code
12779 fixed this problem:
12781 @lisp
12782 (add-hook 'org-mode-hook
12783           (lambda ()
12784             (org-set-local 'yas/trigger-key [tab])
12785             (define-key yas/keymap [tab] 'yas/next-field-group)))
12786 @end lisp
12788 @item @file{windmove.el} by Hovav Shacham
12789 @cindex @file{windmove.el}
12790 This package also uses the @kbd{S-<cursor>} keys, so everything written
12791 in the paragraph above about CUA mode also applies here.  If you want make
12792 the windmove function active in locations where Org-mode does not have
12793 special functionality on @kbd{S-@key{cursor}}, add this to your
12794 configuration:
12796 @lisp
12797 ;; Make windmove work in org-mode:
12798 (add-hook 'org-shiftup-final-hook 'windmove-up)
12799 (add-hook 'org-shiftleft-final-hook 'windmove-left)
12800 (add-hook 'org-shiftdown-final-hook 'windmove-down)
12801 (add-hook 'org-shiftright-final-hook 'windmove-right)
12802 @end lisp
12804 @item @file{viper.el} by Michael Kifer
12805 @cindex @file{viper.el}
12806 @kindex C-c /
12807 Viper uses @kbd{C-c /} and therefore makes this key not access the
12808 corresponding Org-mode command @code{org-sparse-tree}.  You need to find
12809 another key for this command, or override the key in
12810 @code{viper-vi-global-user-map} with
12812 @lisp
12813 (define-key viper-vi-global-user-map "C-c /" 'org-sparse-tree)
12814 @end lisp
12816 @end table
12819 @node Hacking, MobileOrg, Miscellaneous, Top
12820 @appendix Hacking
12821 @cindex hacking
12823 This appendix covers some aspects where users can extend the functionality of
12824 Org.
12826 @menu
12827 * Hooks::                       Who to reach into Org's internals
12828 * Add-on packages::             Available extensions
12829 * Adding hyperlink types::      New custom link types
12830 * Context-sensitive commands::  How to add functionality to such commands
12831 * Tables in arbitrary syntax::  Orgtbl for La@TeX{} and other programs
12832 * Dynamic blocks::              Automatically filled blocks
12833 * Special agenda views::        Customized views
12834 * Extracting agenda information::  Postprocessing of agenda information
12835 * Using the property API::      Writing programs that use entry properties
12836 * Using the mapping API::       Mapping over all or selected entries
12837 @end menu
12839 @node Hooks, Add-on packages, Hacking, Hacking
12840 @section Hooks
12841 @cindex hooks
12843 Org has a large number of hook variables that can be used to add
12844 functionality.  This appendix about hacking is going to illustrate the
12845 use of some of them.  A complete list of all hooks with documentation is
12846 maintained by the Worg project and can be found at
12847 @uref{http://orgmode.org/worg/org-configs/org-hooks.php}.
12849 @node Add-on packages, Adding hyperlink types, Hooks, Hacking
12850 @section Add-on packages
12851 @cindex add-on packages
12853 A large number of add-on packages have been written by various authors.
12854 These packages are not part of Emacs, but they are distributed as contributed
12855 packages with the separate release available at the Org mode home page at
12856 @uref{http://orgmode.org}.  The list of contributed packages, along with
12857 documentation about each package, is maintained by the Worg project at
12858 @uref{http://orgmode.org/worg/org-contrib/}.
12862 @node Adding hyperlink types, Context-sensitive commands, Add-on packages, Hacking
12863 @section Adding hyperlink types
12864 @cindex hyperlinks, adding new types
12866 Org has a large number of hyperlink types built-in
12867 (@pxref{Hyperlinks}).  If you would like to add new link types, Org
12868 provides an interface for doing so.  Let's look at an example file,
12869 @file{org-man.el}, that will add support for creating links like
12870 @samp{[[man:printf][The printf manpage]]} to show Unix manual pages inside
12871 Emacs:
12873 @lisp
12874 ;;; org-man.el - Support for links to manpages in Org
12876 (require 'org)
12878 (org-add-link-type "man" 'org-man-open)
12879 (add-hook 'org-store-link-functions 'org-man-store-link)
12881 (defcustom org-man-command 'man
12882   "The Emacs command to be used to display a man page."
12883   :group 'org-link
12884   :type '(choice (const man) (const woman)))
12886 (defun org-man-open (path)
12887   "Visit the manpage on PATH.
12888 PATH should be a topic that can be thrown at the man command."
12889   (funcall org-man-command path))
12891 (defun org-man-store-link ()
12892   "Store a link to a manpage."
12893   (when (memq major-mode '(Man-mode woman-mode))
12894     ;; This is a man page, we do make this link
12895     (let* ((page (org-man-get-page-name))
12896            (link (concat "man:" page))
12897            (description (format "Manpage for %s" page)))
12898       (org-store-link-props
12899        :type "man"
12900        :link link
12901        :description description))))
12903 (defun org-man-get-page-name ()
12904   "Extract the page name from the buffer name."
12905   ;; This works for both `Man-mode' and `woman-mode'.
12906   (if (string-match " \\(\\S-+\\)\\*" (buffer-name))
12907       (match-string 1 (buffer-name))
12908     (error "Cannot create link to this man page")))
12910 (provide 'org-man)
12912 ;;; org-man.el ends here
12913 @end lisp
12915 @noindent
12916 You would activate this new link type in @file{.emacs} with
12918 @lisp
12919 (require 'org-man)
12920 @end lisp
12922 @noindent
12923 Let's go through the file and see what it does.
12924 @enumerate
12925 @item
12926 It does @code{(require 'org)} to make sure that @file{org.el} has been
12927 loaded.
12928 @item
12929 The next line calls @code{org-add-link-type} to define a new link type
12930 with prefix @samp{man}.  The call also contains the name of a function
12931 that will be called to follow such a link.
12932 @item
12933 @vindex org-store-link-functions
12934 The next line adds a function to @code{org-store-link-functions}, in
12935 order to allow the command @kbd{C-c l} to record a useful link in a
12936 buffer displaying a man page.
12937 @end enumerate
12939 The rest of the file defines the necessary variables and functions.
12940 First there is a customization variable that determines which Emacs
12941 command should be used to display man pages.  There are two options,
12942 @code{man} and @code{woman}.  Then the function to follow a link is
12943 defined.  It gets the link path as an argument---in this case the link
12944 path is just a topic for the manual command.  The function calls the
12945 value of @code{org-man-command} to display the man page.
12947 Finally the function @code{org-man-store-link} is defined.  When you try
12948 to store a link with @kbd{C-c l}, this function will be called to
12949 try to make a link.  The function must first decide if it is supposed to
12950 create the link for this buffer type; we do this by checking the value
12951 of the variable @code{major-mode}.  If not, the function must exit and
12952 return the value @code{nil}.  If yes, the link is created by getting the
12953 manual topic from the buffer name and prefixing it with the string
12954 @samp{man:}.  Then it must call the command @code{org-store-link-props}
12955 and set the @code{:type} and @code{:link} properties.  Optionally you
12956 can also set the @code{:description} property to provide a default for
12957 the link description when the link is later inserted into an Org
12958 buffer with @kbd{C-c C-l}.
12960 When is makes sense for your new link type, you may also define a function
12961 @code{org-PREFIX-complete-link} that implements special (e.g. completion)
12962 support for inserting such a link with @kbd{C-c C-l}.  Such a function should
12963 not accept any arguments, and return the full link with prefix.
12965 @node Context-sensitive commands, Tables in arbitrary syntax, Adding hyperlink types, Hacking
12966 @section Context-sensitive commands
12967 @cindex context-sensitive commands, hooks
12968 @cindex add-ons, context-sensitive commands
12969 @vindex org-ctrl-c-ctrl-c-hook
12971 Org has several commands that act differently depending on context.  The most
12972 important example it the @kbd{C-c C-c} (@pxref{The very busy C-c C-c key}).
12973 Also the @kbd{M-cursor} and @kbd{M-S-cursor} keys have this property.
12975 Add-ons can tap into this functionality by providing a function that detects
12976 special context for that add-on and executes functionality appropriate for
12977 the context.  Here is an example from Dan Davison's @file{org-R.el} which
12978 allows you to evaluate commands based on the @file{R} programming language.  For
12979 this package, special contexts are lines that start with @code{#+R:} or
12980 @code{#+RR:}.
12982 @lisp
12983 (defun org-R-apply-maybe ()
12984   "Detect if this is context for org-R and execute R commands."
12985   (if (save-excursion
12986         (beginning-of-line 1)
12987         (looking-at "#\\+RR?:"))
12988       (progn (call-interactively 'org-R-apply)
12989              t) ;; to signal that we took action
12990     nil)) ;; to signal that we did not
12992 (add-hook 'org-ctrl-c-ctrl-c-hook 'org-R-apply-maybe)
12993 @end lisp
12995 The function first checks if the cursor is in such a line.  If that is the
12996 case, @code{org-R-apply} is called and the function returns @code{t} to
12997 signal that action was taken, and @kbd{C-c C-c} will stop looking for other
12998 contexts.  If the function finds it should do nothing locally, it returns @code{nil} so that other, similar functions can have a try.
13001 @node Tables in arbitrary syntax, Dynamic blocks, Context-sensitive commands, Hacking
13002 @section Tables and lists in arbitrary syntax
13003 @cindex tables, in other modes
13004 @cindex lists, in other modes
13005 @cindex Orgtbl mode
13007 Since Orgtbl mode can be used as a minor mode in arbitrary buffers, a
13008 frequent feature request has been to make it work with native tables in
13009 specific languages, for example La@TeX{}.  However, this is extremely
13010 hard to do in a general way, would lead to a customization nightmare,
13011 and would take away much of the simplicity of the Orgtbl-mode table
13012 editor.
13015 This appendix describes a different approach.  We keep the Orgtbl mode
13016 table in its native format (the @i{source table}), and use a custom
13017 function to @i{translate} the table to the correct syntax, and to
13018 @i{install} it in the right location (the @i{target table}).  This puts
13019 the burden of writing conversion functions on the user, but it allows
13020 for a very flexible system.
13022 Bastien added the ability to do the same with lists.  You can use Org's
13023 facilities to edit and structure lists by turning @code{orgstruct-mode}
13024 on, then locally exporting such lists in another format (HTML, La@TeX{}
13025 or Texinfo.)
13028 @menu
13029 * Radio tables::                Sending and receiving radio tables
13030 * A LaTeX example::             Step by step, almost a tutorial
13031 * Translator functions::        Copy and modify
13032 * Radio lists::                 Doing the same for lists
13033 @end menu
13035 @node Radio tables, A LaTeX example, Tables in arbitrary syntax, Tables in arbitrary syntax
13036 @subsection Radio tables
13037 @cindex radio tables
13039 To define the location of the target table, you first need to create two
13040 lines that are comments in the current mode, but contain magic words for
13041 Orgtbl mode to find.  Orgtbl mode will insert the translated table
13042 between these lines, replacing whatever was there before.  For example:
13044 @example
13045 /* BEGIN RECEIVE ORGTBL table_name */
13046 /* END RECEIVE ORGTBL table_name */
13047 @end example
13049 @noindent
13050 Just above the source table, we put a special line that tells
13051 Orgtbl mode how to translate this table and where to install it.  For
13052 example:
13053 @cindex #+ORGTBL
13054 @example
13055 #+ORGTBL: SEND table_name translation_function arguments....
13056 @end example
13058 @noindent
13059 @code{table_name} is the reference name for the table that is also used
13060 in the receiver lines. @code{translation_function} is the Lisp function
13061 that does the translation.  Furthermore, the line can contain a list of
13062 arguments (alternating key and value) at the end.  The arguments will be
13063 passed as a property list to the translation function for
13064 interpretation.  A few standard parameters are already recognized and
13065 acted upon before the translation function is called:
13067 @table @code
13068 @item :skip N
13069 Skip the first N lines of the table.  Hlines do count as separate lines for
13070 this parameter!
13072 @item :skipcols (n1 n2 ...)
13073 List of columns that should be skipped.  If the table has a column with
13074 calculation marks, that column is automatically discarded as well.
13075 Please note that the translator function sees the table @emph{after} the
13076 removal of these columns, the function never knows that there have been
13077 additional columns.
13078 @end table
13080 @noindent
13081 The one problem remaining is how to keep the source table in the buffer
13082 without disturbing the normal workings of the file, for example during
13083 compilation of a C file or processing of a La@TeX{} file.  There are a
13084 number of different solutions:
13086 @itemize @bullet
13087 @item
13088 The table could be placed in a block comment if that is supported by the
13089 language.  For example, in C mode you could wrap the table between
13090 @samp{/*} and @samp{*/} lines.
13091 @item
13092 Sometimes it is possible to put the table after some kind of @i{END}
13093 statement, for example @samp{\bye} in @TeX{} and @samp{\end@{document@}}
13094 in La@TeX{}.
13095 @item
13096 You can just comment the table line-by-line whenever you want to process
13097 the file, and uncomment it whenever you need to edit the table.  This
13098 only sounds tedious---the command @kbd{M-x orgtbl-toggle-comment}
13099 makes this comment-toggling very easy, in particular if you bind it to a
13100 key.
13101 @end itemize
13103 @node A LaTeX example, Translator functions, Radio tables, Tables in arbitrary syntax
13104 @subsection A La@TeX{} example of radio tables
13105 @cindex La@TeX{}, and Orgtbl mode
13107 The best way to wrap the source table in La@TeX{} is to use the
13108 @code{comment} environment provided by @file{comment.sty}.  It has to be
13109 activated by placing @code{\usepackage@{comment@}} into the document
13110 header.  Orgtbl mode can insert a radio table skeleton@footnote{By
13111 default this works only for La@TeX{}, HTML, and Texinfo.  Configure the
13112 variable @code{orgtbl-radio-tables} to install templates for other
13113 modes.}  with the command @kbd{M-x orgtbl-insert-radio-table}.  You will
13114 be prompted for a table name, let's say we use @samp{salesfigures}.  You
13115 will then get the following template:
13117 @cindex #+ORGTBL, SEND
13118 @example
13119 % BEGIN RECEIVE ORGTBL salesfigures
13120 % END RECEIVE ORGTBL salesfigures
13121 \begin@{comment@}
13122 #+ORGTBL: SEND salesfigures orgtbl-to-latex
13123 | | |
13124 \end@{comment@}
13125 @end example
13127 @noindent
13128 @vindex La@TeX{}-verbatim-environments
13129 The @code{#+ORGTBL: SEND} line tells Orgtbl mode to use the function
13130 @code{orgtbl-to-latex} to convert the table into La@TeX{} and to put it
13131 into the receiver location with name @code{salesfigures}.  You may now
13132 fill in the table, feel free to use the spreadsheet features@footnote{If
13133 the @samp{#+TBLFM} line contains an odd number of dollar characters,
13134 this may cause problems with font-lock in La@TeX{} mode.  As shown in the
13135 example you can fix this by adding an extra line inside the
13136 @code{comment} environment that is used to balance the dollar
13137 expressions.  If you are using AUC@TeX{} with the font-latex library, a
13138 much better solution is to add the @code{comment} environment to the
13139 variable @code{LaTeX-verbatim-environments}.}:
13141 @example
13142 % BEGIN RECEIVE ORGTBL salesfigures
13143 % END RECEIVE ORGTBL salesfigures
13144 \begin@{comment@}
13145 #+ORGTBL: SEND salesfigures orgtbl-to-latex
13146 | Month | Days | Nr sold | per day |
13147 |-------+------+---------+---------|
13148 | Jan   |   23 |      55 |     2.4 |
13149 | Feb   |   21 |      16 |     0.8 |
13150 | March |   22 |     278 |    12.6 |
13151 #+TBLFM: $4=$3/$2;%.1f
13152 % $ (optional extra dollar to keep font-lock happy, see footnote)
13153 \end@{comment@}
13154 @end example
13156 @noindent
13157 When you are done, press @kbd{C-c C-c} in the table to get the converted
13158 table inserted between the two marker lines.
13160 Now let's assume you want to make the table header by hand, because you
13161 want to control how columns are aligned, etc@.  In this case we make sure
13162 that the table translator skips the first 2 lines of the source
13163 table, and tell the command to work as a @i{splice}, i.e. to not produce
13164 header and footer commands of the target table:
13166 @example
13167 \begin@{tabular@}@{lrrr@}
13168 Month & \multicolumn@{1@}@{c@}@{Days@} & Nr.\ sold & per day\\
13169 % BEGIN RECEIVE ORGTBL salesfigures
13170 % END RECEIVE ORGTBL salesfigures
13171 \end@{tabular@}
13173 \begin@{comment@}
13174 #+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2
13175 | Month | Days | Nr sold | per day |
13176 |-------+------+---------+---------|
13177 | Jan   |   23 |      55 |     2.4 |
13178 | Feb   |   21 |      16 |     0.8 |
13179 | March |   22 |     278 |    12.6 |
13180 #+TBLFM: $4=$3/$2;%.1f
13181 \end@{comment@}
13182 @end example
13184 The La@TeX{} translator function @code{orgtbl-to-latex} is already part of
13185 Orgtbl mode.  It uses a @code{tabular} environment to typeset the table
13186 and marks horizontal lines with @code{\hline}.  Furthermore, it
13187 interprets the following parameters (see also @pxref{Translator functions}):
13189 @table @code
13190 @item :splice nil/t
13191 When set to t, return only table body lines, don't wrap them into a
13192 tabular environment.  Default is nil.
13194 @item :fmt fmt
13195 A format to be used to wrap each field, it should contain @code{%s} for the
13196 original field value.  For example, to wrap each field value in dollars,
13197 you could use @code{:fmt "$%s$"}.  This may also be a property list with
13198 column numbers and formats. for example @code{:fmt (2 "$%s$" 4 "%s\\%%")}.
13199 A function of one argument can be used in place of the strings; the
13200 function must return a formatted string.
13202 @item :efmt efmt
13203 Use this format to print numbers with exponentials.  The format should
13204 have @code{%s} twice for inserting mantissa and exponent, for example
13205 @code{"%s\\times10^@{%s@}"}.  The default is @code{"%s\\,(%s)"}.  This
13206 may also be a property list with column numbers and formats, for example
13207 @code{:efmt (2 "$%s\\times10^@{%s@}$" 4 "$%s\\cdot10^@{%s@}$")}.  After
13208 @code{efmt} has been applied to a value, @code{fmt} will also be
13209 applied.  Similar to @code{fmt}, functions of two arguments can be
13210 supplied instead of strings.
13211 @end table
13213 @node Translator functions, Radio lists, A LaTeX example, Tables in arbitrary syntax
13214 @subsection Translator functions
13215 @cindex HTML, and Orgtbl mode
13216 @cindex translator function
13218 Orgtbl mode has several translator functions built-in: @code{orgtbl-to-csv}
13219 (comma-separated values), @code{orgtbl-to-tsv} (TAB-separated values)
13220 @code{orgtbl-to-latex}, @code{orgtbl-to-html}, and @code{orgtbl-to-texinfo}.
13221 Except for @code{orgtbl-to-html}@footnote{The HTML translator uses the same
13222 code that produces tables during HTML export.}, these all use a generic
13223 translator, @code{orgtbl-to-generic}.  For example, @code{orgtbl-to-latex}
13224 itself is a very short function that computes the column definitions for the
13225 @code{tabular} environment, defines a few field and line separators and then
13226 hands processing over to the generic translator.  Here is the entire code:
13228 @lisp
13229 @group
13230 (defun orgtbl-to-latex (table params)
13231   "Convert the Orgtbl mode TABLE to LaTeX."
13232   (let* ((alignment (mapconcat (lambda (x) (if x "r" "l"))
13233                                org-table-last-alignment ""))
13234          (params2
13235           (list
13236            :tstart (concat "\\begin@{tabular@}@{" alignment "@}")
13237            :tend "\\end@{tabular@}"
13238            :lstart "" :lend " \\\\" :sep " & "
13239            :efmt "%s\\,(%s)" :hline "\\hline")))
13240     (orgtbl-to-generic table (org-combine-plists params2 params))))
13241 @end group
13242 @end lisp
13244 As you can see, the properties passed into the function (variable
13245 @var{PARAMS}) are combined with the ones newly defined in the function
13246 (variable @var{PARAMS2}).  The ones passed into the function (i.e. the
13247 ones set by the @samp{ORGTBL SEND} line) take precedence.  So if you
13248 would like to use the La@TeX{} translator, but wanted the line endings to
13249 be @samp{\\[2mm]} instead of the default @samp{\\}, you could just
13250 overrule the default with
13252 @example
13253 #+ORGTBL: SEND test orgtbl-to-latex :lend " \\\\[2mm]"
13254 @end example
13256 For a new language, you can either write your own converter function in
13257 analogy with the La@TeX{} translator, or you can use the generic function
13258 directly.  For example, if you have a language where a table is started
13259 with @samp{!BTBL!}, ended with @samp{!ETBL!}, and where table lines are
13260 started with @samp{!BL!}, ended with @samp{!EL!}, and where the field
13261 separator is a TAB, you could call the generic translator like this (on
13262 a single line!):
13264 @example
13265 #+ORGTBL: SEND test orgtbl-to-generic :tstart "!BTBL!" :tend "!ETBL!"
13266                               :lstart "!BL! " :lend " !EL!" :sep "\t"
13267 @end example
13269 @noindent
13270 Please check the documentation string of the function
13271 @code{orgtbl-to-generic} for a full list of parameters understood by
13272 that function, and remember that you can pass each of them into
13273 @code{orgtbl-to-latex}, @code{orgtbl-to-texinfo}, and any other function
13274 using the generic function.
13276 Of course you can also write a completely new function doing complicated
13277 things the generic translator cannot do.  A translator function takes
13278 two arguments.  The first argument is the table, a list of lines, each
13279 line either the symbol @code{hline} or a list of fields.  The second
13280 argument is the property list containing all parameters specified in the
13281 @samp{#+ORGTBL: SEND} line.  The function must return a single string
13282 containing the formatted table.  If you write a generally useful
13283 translator, please post it on @email{emacs-orgmode@@gnu.org} so that
13284 others can benefit from your work.
13286 @node  Radio lists,  , Translator functions, Tables in arbitrary syntax
13287 @subsection Radio lists
13288 @cindex radio lists
13289 @cindex org-list-insert-radio-list
13291 Sending and receiving radio lists works exactly the same way than sending and
13292 receiving radio tables (@pxref{Radio tables}).  As for radio tables, you can
13293 insert radio lists templates in HTML, La@TeX{} and Texinfo modes by calling
13294 @code{org-list-insert-radio-list}.
13296 Here are the differences with radio tables:
13298 @itemize @minus
13299 @item
13300 Use @code{ORGLST} instead of @code{ORGTBL}.
13301 @item
13302 The available translation functions for radio lists don't take
13303 parameters.
13304 @item
13305 @kbd{C-c C-c} will work when pressed on the first item of the list.
13306 @end itemize
13308 Here is a La@TeX{} example.  Let's say that you have this in your
13309 La@TeX{} file:
13311 @cindex #+ORGLIST
13312 @example
13313 % BEGIN RECEIVE ORGLST to-buy
13314 % END RECEIVE ORGLST to-buy
13315 \begin@{comment@}
13316 #+ORGLIST: SEND to-buy orgtbl-to-latex
13317 - a new house
13318 - a new computer
13319   + a new keyboard
13320   + a new mouse
13321 - a new life
13322 \end@{comment@}
13323 @end example
13325 Pressing `C-c C-c' on @code{a new house} and will insert the converted
13326 La@TeX{} list between the two marker lines.
13328 @node Dynamic blocks, Special agenda views, Tables in arbitrary syntax, Hacking
13329 @section Dynamic blocks
13330 @cindex dynamic blocks
13332 Org documents can contain @emph{dynamic blocks}.  These are
13333 specially marked regions that are updated by some user-written function.
13334 A good example for such a block is the clock table inserted by the
13335 command @kbd{C-c C-x C-r} (@pxref{Clocking work time}).
13337 Dynamic block are enclosed by a BEGIN-END structure that assigns a name
13338 to the block and can also specify parameters for the function producing
13339 the content of the block.
13341 #+BEGIN:dynamic block
13342 @example
13343 #+BEGIN: myblock :parameter1 value1 :parameter2 value2 ...
13345 #+END:
13346 @end example
13348 Dynamic blocks are updated with the following commands
13350 @table @kbd
13351 @kindex C-c C-x C-u
13352 @item C-c C-x C-u
13353 Update dynamic block at point.
13354 @kindex C-u C-c C-x C-u
13355 @item C-u C-c C-x C-u
13356 Update all dynamic blocks in the current file.
13357 @end table
13359 Updating a dynamic block means to remove all the text between BEGIN and
13360 END, parse the BEGIN line for parameters and then call the specific
13361 writer function for this block to insert the new content.  If you want
13362 to use the original content in the writer function, you can use the
13363 extra parameter @code{:content}.
13365 For a block with name @code{myblock}, the writer function is
13366 @code{org-dblock-write:myblock} with as only parameter a property list
13367 with the parameters given in the begin line.  Here is a trivial example
13368 of a block that keeps track of when the block update function was last
13369 run:
13371 @example
13372 #+BEGIN: block-update-time :format "on %m/%d/%Y at %H:%M"
13374 #+END:
13375 @end example
13377 @noindent
13378 The corresponding block writer function could look like this:
13380 @lisp
13381 (defun org-dblock-write:block-update-time (params)
13382    (let ((fmt (or (plist-get params :format) "%d. %m. %Y")))
13383      (insert "Last block update at: "
13384              (format-time-string fmt (current-time)))))
13385 @end lisp
13387 If you want to make sure that all dynamic blocks are always up-to-date,
13388 you could add the function @code{org-update-all-dblocks} to a hook, for
13389 example @code{before-save-hook}.  @code{org-update-all-dblocks} is
13390 written in a way such that it does nothing in buffers that are not in
13391 @code{org-mode}.
13393 @node Special agenda views, Extracting agenda information, Dynamic blocks, Hacking
13394 @section Special agenda views
13395 @cindex agenda views, user-defined
13397 Org provides a special hook that can be used to narrow down the
13398 selection made by any of the agenda views.  You may specify a function
13399 that is used at each match to verify if the match should indeed be part
13400 of the agenda view, and if not, how much should be skipped.
13402 Let's say you want to produce a list of projects that contain a WAITING
13403 tag anywhere in the project tree.  Let's further assume that you have
13404 marked all tree headings that define a project with the TODO keyword
13405 PROJECT.  In this case you would run a TODO search for the keyword
13406 PROJECT, but skip the match unless there is a WAITING tag anywhere in
13407 the subtree belonging to the project line.
13409 To achieve this, you must write a function that searches the subtree for
13410 the tag.  If the tag is found, the function must return @code{nil} to
13411 indicate that this match should not be skipped.  If there is no such
13412 tag, return the location of the end of the subtree, to indicate that
13413 search should continue from there.
13415 @lisp
13416 (defun my-skip-unless-waiting ()
13417   "Skip trees that are not waiting"
13418   (let ((subtree-end (save-excursion (org-end-of-subtree t))))
13419     (if (re-search-forward ":waiting:" subtree-end t)
13420         nil          ; tag found, do not skip
13421       subtree-end))) ; tag not found, continue after end of subtree
13422 @end lisp
13424 Now you may use this function in an agenda custom command, for example
13425 like this:
13427 @lisp
13428 (org-add-agenda-custom-command
13429  '("b" todo "PROJECT"
13430    ((org-agenda-skip-function 'my-skip-unless-waiting)
13431     (org-agenda-overriding-header "Projects waiting for something: "))))
13432 @end lisp
13434 @vindex org-agenda-overriding-header
13435 Note that this also binds @code{org-agenda-overriding-header} to get a
13436 meaningful header in the agenda view.
13438 @vindex org-odd-levels-only
13439 @vindex org-agenda-skip-function
13440 A general way to create custom searches is to base them on a search for
13441 entries with a certain level limit.  If you want to study all entries with
13442 your custom search function, simply do a search for
13443 @samp{LEVEL>0}@footnote{Note that, when using @code{org-odd-levels-only}, a
13444 level number corresponds to order in the hierarchy, not to the number of
13445 stars.}, and then use @code{org-agenda-skip-function} to select the entries
13446 you really want to have.
13448 You may also put a Lisp form into @code{org-agenda-skip-function}.  In
13449 particular, you may use the functions @code{org-agenda-skip-entry-if}
13450 and @code{org-agenda-skip-subtree-if} in this form, for example:
13452 @table @code
13453 @item '(org-agenda-skip-entry-if 'scheduled)
13454 Skip current entry if it has been scheduled.
13455 @item '(org-agenda-skip-entry-if 'notscheduled)
13456 Skip current entry if it has not been scheduled.
13457 @item '(org-agenda-skip-entry-if 'deadline)
13458 Skip current entry if it has a deadline.
13459 @item '(org-agenda-skip-entry-if 'scheduled 'deadline)
13460 Skip current entry if it has a deadline, or if it is scheduled.
13461 @item '(org-agenda-skip-entry-if 'todo '("TODO" "WAITING"))
13462 Skip current entry if the TODO keyword is TODO or WAITING.
13463 @item '(org-agenda-skip-entry-if 'todo 'done)
13464 Skip current entry if the TODO keyword marks a DONE state.
13465 @item '(org-agenda-skip-entry-if 'timestamp)
13466 Skip current entry if it has any timestamp, may also be deadline or scheduled.
13467 @item '(org-agenda-skip-entry 'regexp "regular expression")
13468 Skip current entry if the regular expression matches in the entry.
13469 @item '(org-agenda-skip-entry 'notregexp "regular expression")
13470 Skip current entry unless the regular expression matches.
13471 @item '(org-agenda-skip-subtree-if 'regexp "regular expression")
13472 Same as above, but check and skip the entire subtree.
13473 @end table
13475 Therefore we could also have written the search for WAITING projects
13476 like this, even without defining a special function:
13478 @lisp
13479 (org-add-agenda-custom-command
13480  '("b" todo "PROJECT"
13481    ((org-agenda-skip-function '(org-agenda-skip-subtree-if
13482                                 'regexp ":waiting:"))
13483     (org-agenda-overriding-header "Projects waiting for something: "))))
13484 @end lisp
13486 @node Extracting agenda information, Using the property API, Special agenda views, Hacking
13487 @section Extracting agenda information
13488 @cindex agenda, pipe
13489 @cindex Scripts, for agenda processing
13491 @vindex org-agenda-custom-commands
13492 Org provides commands to access agenda information for the command
13493 line in Emacs batch mode.  This extracted information can be sent
13494 directly to a printer, or it can be read by a program that does further
13495 processing of the data.  The first of these commands is the function
13496 @code{org-batch-agenda}, that produces an agenda view and sends it as
13497 ASCII text to STDOUT.  The command takes a single string as parameter.
13498 If the string has length 1, it is used as a key to one of the commands
13499 you have configured in @code{org-agenda-custom-commands}, basically any
13500 key you can use after @kbd{C-c a}.  For example, to directly print the
13501 current TODO list, you could use
13503 @example
13504 emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
13505 @end example
13507 If the parameter is a string with 2 or more characters, it is used as a
13508 tags/TODO match string.  For example, to print your local shopping list
13509 (all items with the tag @samp{shop}, but excluding the tag
13510 @samp{NewYork}), you could use
13512 @example
13513 emacs -batch -l ~/.emacs                                      \
13514       -eval '(org-batch-agenda "+shop-NewYork")' | lpr
13515 @end example
13517 @noindent
13518 You may also modify parameters on the fly like this:
13520 @example
13521 emacs -batch -l ~/.emacs                                      \
13522    -eval '(org-batch-agenda "a"                               \
13523             org-agenda-ndays 30                               \
13524             org-agenda-include-diary nil                      \
13525             org-agenda-files (quote ("~/org/project.org")))'  \
13526    | lpr
13527 @end example
13529 @noindent
13530 which will produce a 30-day agenda, fully restricted to the Org file
13531 @file{~/org/projects.org}, not even including the diary.
13533 If you want to process the agenda data in more sophisticated ways, you
13534 can use the command @code{org-batch-agenda-csv} to get a comma-separated
13535 list of values for each agenda item.  Each line in the output will
13536 contain a number of fields separated by commas.  The fields in a line
13537 are:
13539 @example
13540 category     @r{The category of the item}
13541 head         @r{The headline, without TODO keyword, TAGS and PRIORITY}
13542 type         @r{The type of the agenda entry, can be}
13543                 todo               @r{selected in TODO match}
13544                 tagsmatch          @r{selected in tags match}
13545                 diary              @r{imported from diary}
13546                 deadline           @r{a deadline}
13547                 scheduled          @r{scheduled}
13548                 timestamp          @r{appointment, selected by timestamp}
13549                 closed             @r{entry was closed on date}
13550                 upcoming-deadline  @r{warning about nearing deadline}
13551                 past-scheduled     @r{forwarded scheduled item}
13552                 block              @r{entry has date block including date}
13553 todo         @r{The TODO keyword, if any}
13554 tags         @r{All tags including inherited ones, separated by colons}
13555 date         @r{The relevant date, like 2007-2-14}
13556 time         @r{The time, like 15:00-16:50}
13557 extra        @r{String with extra planning info}
13558 priority-l   @r{The priority letter if any was given}
13559 priority-n   @r{The computed numerical priority}
13560 @end example
13562 @noindent
13563 Time and date will only be given if a timestamp (or deadline/scheduled)
13564 led to the selection of the item.
13566 A CSV list like this is very easy to use in a post-processing script.
13567 For example, here is a Perl program that gets the TODO list from
13568 Emacs/Org and prints all the items, preceded by a checkbox:
13570 @example
13571 #!/usr/bin/perl
13573 # define the Emacs command to run
13574 $cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'";
13576 # run it and capture the output
13577 $agenda = qx@{$cmd 2>/dev/null@};
13579 # loop over all lines
13580 foreach $line (split(/\n/,$agenda)) @{
13581   # get the individual values
13582   ($category,$head,$type,$todo,$tags,$date,$time,$extra,
13583    $priority_l,$priority_n) = split(/,/,$line);
13584   # process and print
13585   print "[ ] $head\n";
13587 @end example
13589 @node Using the property API, Using the mapping API, Extracting agenda information, Hacking
13590 @section Using the property API
13591 @cindex API, for properties
13592 @cindex properties, API
13594 Here is a description of the functions that can be used to work with
13595 properties.
13597 @defun org-entry-properties &optional pom which
13598 Get all properties of the entry at point-or-marker POM.@*
13599 This includes the TODO keyword, the tags, time strings for deadline,
13600 scheduled, and clocking, and any additional properties defined in the
13601 entry.  The return value is an alist, keys may occur multiple times
13602 if the property key was used several times.@*
13603 POM may also be nil, in which case the current entry is used.
13604 If WHICH is nil or `all', get all properties.  If WHICH is
13605 `special' or `standard', only get that subclass.
13606 @end defun
13607 @vindex org-use-property-inheritance
13608 @defun org-entry-get pom property &optional inherit
13609 Get value of PROPERTY for entry at point-or-marker POM.  By default,
13610 this only looks at properties defined locally in the entry.  If INHERIT
13611 is non-nil and the entry does not have the property, then also check
13612 higher levels of the hierarchy.  If INHERIT is the symbol
13613 @code{selective}, use inheritance if and only if the setting of
13614 @code{org-use-property-inheritance} selects PROPERTY for inheritance.
13615 @end defun
13617 @defun org-entry-delete pom property
13618 Delete the property PROPERTY from entry at point-or-marker POM.
13619 @end defun
13621 @defun org-entry-put pom property value
13622 Set PROPERTY to VALUE for entry at point-or-marker POM.
13623 @end defun
13625 @defun org-buffer-property-keys &optional include-specials
13626 Get all property keys in the current buffer.
13627 @end defun
13629 @defun org-insert-property-drawer
13630 Insert a property drawer at point.
13631 @end defun
13633 @defun org-entry-put-multivalued-property pom property &rest values
13634 Set PROPERTY at point-or-marker POM to VALUES.  VALUES should be a list of
13635 strings.  They will be concatenated, with spaces as separators.
13636 @end defun
13638 @defun org-entry-get-multivalued-property pom property
13639 Treat the value of the property PROPERTY as a whitespace-separated list of
13640 values and return the values as a list of strings.
13641 @end defun
13643 @defun org-entry-add-to-multivalued-property pom property value
13644 Treat the value of the property PROPERTY as a whitespace-separated list of
13645 values and make sure that VALUE is in this list.
13646 @end defun
13648 @defun org-entry-remove-from-multivalued-property pom property value
13649 Treat the value of the property PROPERTY as a whitespace-separated list of
13650 values and make sure that VALUE is @emph{not} in this list.
13651 @end defun
13653 @defun org-entry-member-in-multivalued-property pom property value
13654 Treat the value of the property PROPERTY as a whitespace-separated list of
13655 values and check if VALUE is in this list.
13656 @end defun
13658 @defopt org-property-allowed-value-functions
13659 Hook for functions supplying allowed values for specific.
13660 The functions must take a single argument, the name of the property, and
13661 return a flat list of allowed values.  If @samp{:ETC} is one of
13662 the values, use the values as completion help, but allow also other values
13663 to be entered.  The functions must return @code{nil} if they are not
13664 responsible for this property.
13665 @end defopt
13667 @node Using the mapping API,  , Using the property API, Hacking
13668 @section Using the mapping API
13669 @cindex API, for mapping
13670 @cindex mapping entries, API
13672 Org has sophisticated mapping capabilities to find all entries satisfying
13673 certain criteria.  Internally, this functionality is used to produce agenda
13674 views, but there is also an API that can be used to execute arbitrary
13675 functions for each or selected entries.  The main entry point for this API
13678 @defun org-map-entries func &optional match scope &rest skip
13679 Call FUNC at each headline selected by MATCH in SCOPE.
13681 FUNC is a function or a Lisp form.  The function will be called without
13682 arguments, with the cursor positioned at the beginning of the headline.
13683 The return values of all calls to the function will be collected and
13684 returned as a list.
13686 The call to FUNC will be wrapped into a save-excursion form, so FUNC
13687 does not need to preserve point.  After evaluation, the cursor will be
13688 moved to the end of the line (presumably of the headline of the
13689 processed entry) and search continues from there.  Under some
13690 circumstances, this may not produce the wanted results.  For example,
13691 if you have removed (e.g. archived) the current (sub)tree it could
13692 mean that the next entry will be skipped entirely.  In such cases, you
13693 can specify the position from where search should continue by making
13694 FUNC set the variable `org-map-continue-from' to the desired buffer
13695 position.
13697 MATCH is a tags/property/todo match as it is used in the agenda match view.
13698 Only headlines that are matched by this query will be considered during
13699 the iteration.  When MATCH is nil or t, all headlines will be
13700 visited by the iteration.
13702 SCOPE determines the scope of this command.  It can be any of:
13704 @example
13705 nil     @r{the current buffer, respecting the restriction if any}
13706 tree    @r{the subtree started with the entry at point}
13707 file    @r{the current buffer, without restriction}
13708 file-with-archives
13709         @r{the current buffer, and any archives associated with it}
13710 agenda  @r{all agenda files}
13711 agenda-with-archives
13712         @r{all agenda files with any archive files associated with them}
13713 (file1 file2 ...)
13714         @r{if this is a list, all files in the list will be scanned}
13715 @end example
13716 @noindent
13717 The remaining args are treated as settings for the skipping facilities of
13718 the scanner.  The following items can be given here:
13720 @vindex org-agenda-skip-function
13721 @example
13722 archive   @r{skip trees with the archive tag}
13723 comment   @r{skip trees with the COMMENT keyword}
13724 function or Lisp form
13725           @r{will be used as value for @code{org-agenda-skip-function},}
13726           @r{so whenever the function returns t, FUNC}
13727           @r{will not be called for that entry and search will}
13728           @r{continue from the point where the function leaves it}
13729 @end example
13730 @end defun
13732 The function given to that mapping routine can really do anything you like.
13733 It can use the property API (@pxref{Using the property API}) to gather more
13734 information about the entry, or in order to change metadata in the entry.
13735 Here are a couple of functions that might be handy:
13737 @defun org-todo &optional arg
13738 Change the TODO state of the entry, see the docstring of the functions for
13739 the many possible values for the argument ARG.
13740 @end defun
13742 @defun org-priority &optional action
13743 Change the priority of the entry, see the docstring of this function for the
13744 possible values for ACTION.
13745 @end defun
13747 @defun org-toggle-tag tag &optional onoff
13748 Toggle the tag TAG in the current entry.  Setting ONOFF to either @code{on}
13749 or @code{off} will not toggle tag, but ensure that it is either on or off.
13750 @end defun
13752 @defun org-promote
13753 Promote the current entry.
13754 @end defun
13756 @defun org-demote
13757 Demote the current entry.
13758 @end defun
13760 Here is a simple example that will turn all entries in the current file with
13761 a tag @code{TOMORROW} into TODO entries with the keyword @code{UPCOMING}.
13762 Entries in comment trees and in archive trees will be ignored.
13764 @lisp
13765 (org-map-entries
13766    '(org-todo "UPCOMING")
13767    "+TOMORROW" 'file 'archive 'comment)
13768 @end lisp
13770 The following example counts the number of entries with TODO keyword
13771 @code{WAITING}, in all agenda files.
13773 @lisp
13774 (length (org-map-entries t "/+WAITING" 'agenda))
13775 @end lisp
13777 @node MobileOrg, History and Acknowledgments, Hacking, Top
13778 @appendix MobileOrg
13779 @cindex iPhone
13780 @cindex MobileOrg
13782 @uref{http://mobileorg.ncogni.to/, MobileOrg} is an application for the
13783 @i{iPhone/iPod Touch} series of devices, developed by Richard Moreland.
13784 @i{MobileOrg} offers offline viewing and capture support for an Org-mode
13785 system rooted on a ``real'' computer.  It does also allow you to record
13786 changes to existing entries.  Android users should check out
13787 @uref{http://wiki.github.com/matburt/mobileorg-android/, MobileOrg Android}
13788 by Matt Jones.
13790 This appendix describes the support Org has for creating agenda views in a
13791 format that can be displayed by @i{MobileOrg}, and for integrating notes
13792 captured and changes made by @i{MobileOrg} into the main system.
13794 For changing tags and TODO states in MobileOrg, you should have set up the
13795 customization variables @code{org-todo-keywords} and @code{org-tags-alist} to
13796 cover all important tags and TODO keywords, even if individual files use only
13797 part of these.  MobileOrg will also offer you states and tags set up with
13798 in-buffer settings, but it will understand the logistics of TODO state
13799 @i{sets} (@pxref{Per-file keywords}) and @i{mutually exclusive} tags
13800 (@pxref{Setting tags}) only for those set in these variables.
13802 @menu
13803 * Setting up the staging area::  Where to interact with the mobile device
13804 * Pushing to MobileOrg::        Uploading Org files and agendas
13805 * Pulling from MobileOrg::      Integrating captured and flagged items
13806 @end menu
13808 @node Setting up the staging area, Pushing to MobileOrg, MobileOrg, MobileOrg
13809 @section Setting up the staging area
13811 MobileOrg needs to interact with Emacs through directory on a
13812 server@footnote{If you are using a public server, you might prefer to encrypt
13813 the files on the server.  This can be done with Org-mode 6.35 and, hopefully,
13814 with MobileOrg 1.4 (please check before trying to use this).  On the Emacs
13815 side, configure the variables @code{org-mobile-use-encryption} and
13816 @code{org-mobile-encryption-password}.}.  The easiest way to create that
13817 directory is to use a free @uref{http://dropbox.com,Dropbox.com}
13818 account@footnote{If you cannot use Dropbox, or if your version of MobileOrg
13819 does not support it, you can use a webdav server.  For more information,
13820 check out the the documentation of MobileOrg and also this
13821 @uref{http://orgmode.org/worg/org-faq.php#mobileorg_webdav, FAQ entry}.}.
13822 When MobileOrg first connects to your Dropbox, it will create a directory
13823 @i{MobileOrg} inside the Dropbox.  After the directory has been created, tell
13824 Emacs about it:
13826 @lisp
13827 (setq org-mobile-directory "~/Dropbox/MobileOrg")
13828 @end lisp
13830 Org-mode has commands to put files for @i{MobileOrg} into that directory,
13831 and to read captured notes from there. 
13833 @node Pushing to MobileOrg, Pulling from MobileOrg, Setting up the staging area, MobileOrg
13834 @section Pushing to MobileOrg
13836 This operation copies all files currently listed in @code{org-mobile-files}
13837 to the directory @code{org-mobile-directory}.  By default this list contains
13838 all agenda files (as listed in @code{org-agenda-files}), but additional files
13839 can be included by customizing @code{org-mobiles-files}.  File names will be
13840 staged with path relative to @code{org-directory}, so all files should be
13841 inside this directory.  The push operation also creates a special Org file
13842 @file{agendas.org} with all custom agenda view defined by the
13843 user@footnote{While creating the agendas, Org-mode will force (see the
13844 variable @code{org-mobile-force-id-on-agenda-items}) ID properties on all
13845 referenced entries, so that these entries can be uniquely
13846 identified if @i{MobileOrg} flags them for further action.}.  Finally, Org
13847 writes the file @file{index.org}, containing links to all other files.
13848 @i{MobileOrg} first reads this file from the server, and then downloads all
13849 agendas and Org files listed in it.  To speed up the download, MobileOrg will
13850 only read files whose checksums@footnote{stored automatically in the file
13851 @file{checksums.dat}} have changed.
13853 @node Pulling from MobileOrg,  , Pushing to MobileOrg, MobileOrg
13854 @section Pulling from MobileOrg
13856 When @i{MobileOrg} synchronizes with the server, it not only pulls the Org
13857 files for viewing.  It also appends captured entries and pointers to flagged
13858 and changed entries to the file @file{mobileorg.org} on the server.  Org has
13859 a @emph{pull} operation that integrates this information into an inbox file
13860 and operates on the pointers to flagged entries.  Here is how it works:
13862 @enumerate
13863 @item
13864 Org moves all entries found in
13865 @file{mobileorg.org}@footnote{@file{mobileorg.org} will be empty after this
13866 operation.} and appends them to the file pointed to by the variable
13867 @code{org-mobile-inbox-for-pull}.  Each captured entry and each editing event
13868 will be a top-level entry in the inbox file.
13869 @item
13870 After moving the entries, Org will attempt to implement the changes made in
13871 @i{MobileOrg}.  Some changes are applied directly and without user
13872 interaction.  Examples are all changes to tags, TODO state, headline and body
13873 text that can be cleanly applied.  Entries that have been flagged for further
13874 action will receive a tag @code{:FLAGGED:}, so that they can be easily found
13875 again.  When there is a problem finding an entry or applying the change, the
13876 pointer entry will remain in the inbox and will be marked with an error
13877 message.  You need to later resolve these issues by hand.
13878 @item
13879 Org will then generate an agenda view with all flagged entries.  The user
13880 should then go through these entries and do whatever actions are necessary.
13881 If a note has been stored while flagging an entry in @i{MobileOrg}, that note
13882 will be displayed in the echo area when the cursor is on the corresponding
13883 agenda line.
13884 @table @kbd
13885 @kindex ?
13886 @item ?
13887 Pressing @kbd{?} in that special agenda will display the full flagging note in
13888 another window and also push it onto the kill ring.  So you could use @kbd{?
13889 z C-y C-c C-c} to store that flagging note as a normal note in the entry.
13890 Pressing @kbd{?} twice in succession will offer to remove the
13891 @code{:FLAGGED:} tag along with the recorded flagging note (which is stored
13892 in a property).  In this way you indicate, that the intended processing for
13893 this flagged entry is finished.
13894 @end table
13895 @end enumerate
13897 @kindex C-c a ?
13898 If you are not able to process all flagged entries directly, you can always
13899 return to this agenda view using @kbd{C-c a ?}.  Note, however, that there is
13900 a subtle difference.  The view created automatically by @kbd{M-x
13901 org-mobile-pull RET} is guaranteed to search all files that have been
13902 addressed by the last pull.  This might include a file that is not currently
13903 in your list of agenda files.  If you later use @kbd{C-c a ?} to regenerate
13904 the view, only the current agenda files will be searched.
13906 @node History and Acknowledgments, Main Index, MobileOrg, Top
13907 @appendix History and Acknowledgments
13908 @cindex acknowledgements
13909 @cindex history
13910 @cindex thanks
13912 Org was born in 2003, out of frustration over the user interface
13913 of the Emacs Outline mode.  I was trying to organize my notes and
13914 projects, and using Emacs seemed to be the natural way to go.  However,
13915 having to remember eleven different commands with two or three keys per
13916 command, only to hide and show parts of the outline tree, that seemed
13917 entirely unacceptable to me.  Also, when using outlines to take notes, I
13918 constantly wanted to restructure the tree, organizing it parallel to my
13919 thoughts and plans.  @emph{Visibility cycling} and @emph{structure
13920 editing} were originally implemented in the package
13921 @file{outline-magic.el}, but quickly moved to the more general
13922 @file{org.el}.  As this environment became comfortable for project
13923 planning, the next step was adding @emph{TODO entries}, basic
13924 @emph{timestamps}, and @emph{table support}.  These areas highlighted the two main
13925 goals that Org still has today: to be a new, outline-based,
13926 plain text mode with innovative and intuitive editing features, and to
13927 incorporate project planning functionality directly into a notes file.
13929 A special thanks goes to @i{Bastien Guerry} who has not only written a large
13930 number of extensions to Org (most of them integrated into the core by now),
13931 but who has also helped in the development and maintenance of Org so much that he
13932 should be considered the main co-contributor to this package.
13934 Since the first release, literally thousands of emails to me or to
13935 @email{emacs-orgmode@@gnu.org} have provided a constant stream of bug
13936 reports, feedback, new ideas, and sometimes patches and add-on code.
13937 Many thanks to everyone who has helped to improve this package.  I am
13938 trying to keep here a list of the people who had significant influence
13939 in shaping one or more aspects of Org.  The list may not be
13940 complete, if I have forgotten someone, please accept my apologies and
13941 let me know.
13943 @itemize @bullet
13945 @item
13946 @i{Russel Adams} came up with the idea for drawers.
13947 @item
13948 @i{Thomas Baumann} wrote @file{org-bbdb.el} and @file{org-mhe.el}.
13949 @item
13950 @i{Christophe Bataillon} created the great unicorn logo that we use on the
13951 Org-mode website.
13952 @item
13953 @i{Alex Bochannek} provided a patch for rounding timestamps.
13954 @item
13955 @i{Jan Böcker} wrote @file{org-docview.el}.
13956 @item
13957 @i{Brad Bozarth} showed how to pull RSS feed data into Org-mode files.
13958 @item
13959 @i{Tom Breton} wrote @file{org-choose.el}.
13960 @item
13961 @i{Charles Cave}'s suggestion sparked the implementation of templates
13962 for Remember.
13963 @item
13964 @i{Pavel Chalmoviansky} influenced the agenda treatment of items with
13965 specified time.
13966 @item
13967 @i{Gregory Chernov} patched support for Lisp forms into table
13968 calculations and improved XEmacs compatibility, in particular by porting
13969 @file{nouline.el} to XEmacs.
13970 @item
13971 @i{Sacha Chua} suggested copying some linking code from Planner.
13972 @item
13973 @i{Baoqiu Cui} contributed the DocBook exporter.
13974 @item
13975 @i{Dan Davison} wrote (together with @i{Eric Schulte}) Org Babel.
13976 @item
13977 @i{Eddward DeVilla} proposed and tested checkbox statistics.  He also
13978 came up with the idea of properties, and that there should be an API for
13979 them.
13980 @item
13981 @i{Nick Dokos} tracked down several nasty bugs.
13982 @item
13983 @i{Kees Dullemond} used to edit projects lists directly in HTML and so
13984 inspired some of the early development, including HTML export.  He also
13985 asked for a way to narrow wide table columns.
13986 @item
13987 @i{Christian Egli} converted the documentation into Texinfo format,
13988 patched CSS formatting into the HTML exporter, and inspired the agenda.
13989 @item
13990 @i{David Emery} provided a patch for custom CSS support in exported
13991 HTML agendas.
13992 @item
13993 @i{Nic Ferrier} contributed mailcap and XOXO support.
13994 @item
13995 @i{Miguel A. Figueroa-Villanueva} implemented hierarchical checkboxes.
13996 @item
13997 @i{John Foerch} figured out how to make incremental search show context
13998 around a match in a hidden outline tree.
13999 @item
14000 @i{Raimar Finken} wrote @file{org-git-line.el}.
14001 @item
14002 @i{Mikael Fornius} works as a mailing list moderator.
14003 @item
14004 @i{Austin Frank} works as a mailing list moderator.
14005 @item
14006 @i{Niels Giesen} had the idea to automatically archive DONE trees.
14007 @item
14008 @i{Bastien Guerry} wrote the La@TeX{} exporter and @file{org-bibtex.el}, and
14009 has been prolific with patches, ideas, and bug reports.
14010 @item
14011 @i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
14012 @item
14013 @i{Bernt Hansen} has driven much of the support for auto-repeating tasks,
14014 task state change logging, and the clocktable.  His clear explanations have
14015 been critical when we started to adopt the Git version control system.
14016 @item
14017 @i{Manuel Hermenegildo} has contributed various ideas, small fixes and
14018 patches.
14019 @item
14020 @i{Phil Jackson} wrote @file{org-irc.el}.
14021 @item
14022 @i{Scott Jaderholm} proposed footnotes, control over whitespace between
14023 folded entries, and column view for properties.
14024 @item
14025 @i{Matt Jones} wrote @i{MobileOrg Android}.
14026 @item
14027 @i{Tokuya Kameshima} wrote @file{org-wl.el} and @file{org-mew.el}.
14028 @item
14029 @i{Shidai Liu} ("Leo") asked for embedded La@TeX{} and tested it.  He also
14030 provided frequent feedback and some patches.
14031 @item
14032 @i{Matt Lundin} has proposed last-row references for table formulas and named
14033 invisible anchors.  He has also worked a lot on the FAQ.
14034 @item
14035 @i{Jason F. McBrayer} suggested agenda export to CSV format.
14036 @item
14037 @i{Max Mikhanosha} came up with the idea of refiling.
14038 @item
14039 @i{Dmitri Minaev} sent a patch to set priority limits on a per-file
14040 basis.
14041 @item
14042 @i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler
14043 happy.
14044 @item
14045 @i{Richard Moreland} wrote @i{MobileOrg} for the iPhone.
14046 @item
14047 @i{Rick Moynihan} proposed allowing multiple TODO sequences in a file
14048 and being able to quickly restrict the agenda to a subtree.
14049 @item
14050 @i{Todd Neal} provided patches for links to Info files and Elisp forms.
14051 @item
14052 @i{Greg Newman} refreshed the unicorn logo into its current form.
14053 @item
14054 @i{Tim O'Callaghan} suggested in-file links, search options for general
14055 file links, and TAGS.
14056 @item
14057 @i{Osamu Okano} wrote @file{orgcard2ref.pl}, a perl program to create a text
14058 version of the reference card.
14059 @item
14060 @i{Takeshi Okano} translated the manual and David O'Toole's tutorial
14061 into Japanese.
14062 @item
14063 @i{Oliver Oppitz} suggested multi-state TODO items.
14064 @item
14065 @i{Scott Otterson} sparked the introduction of descriptive text for
14066 links, among other things.
14067 @item
14068 @i{Pete Phillips} helped during the development of the TAGS feature, and
14069 provided frequent feedback.
14070 @item
14071 @i{Martin Pohlack} provided the code snippet to bundle character insertion
14072 into bundles of 20 for undo.
14073 @item
14074 @i{T.V. Raman} reported bugs and suggested improvements.
14075 @item
14076 @i{Matthias Rempe} (Oelde) provided ideas, Windows support, and quality
14077 control.
14078 @item
14079 @i{Paul Rivier} provided the basic implementation of named footnotes.  He
14080 also acted as mailing list moderator for some time.
14081 @item
14082 @i{Kevin Rogers} contributed code to access VM files on remote hosts.
14083 @item
14084 @i{Sebastian Rose} wrote @file{org-info.js}, a Java script for displaying
14085 webpages derived from Org using an Info-like or a folding interface with
14086 single-key navigation, and make lots of improvements to the HTML exporter.
14087 @item
14088 @i{Frank Ruell} solved the mystery of the @code{keymapp nil} bug, a
14089 conflict with @file{allout.el}.
14090 @item
14091 @i{Jason Riedy} generalized the send-receive mechanism for Orgtbl tables with
14092 extensive patches.
14093 @item
14094 @i{Philip Rooke} created the Org reference card, provided lots
14095 of feedback, developed and applied standards to the Org documentation.
14096 @item
14097 @i{Christian Schlauer} proposed angular brackets around links, among
14098 other things.
14099 @item
14100 @i{Eric Schulte} wrote @file{org-plot.el} and (together with @i{Dan Davison})
14101 Org Babel, and contributed various patches, small features and modules.
14102 @item
14103 @i{Paul Sexton} wrote @file{org-ctags.el}.
14104 @item
14105 Linking to VM/BBDB/Gnus was first inspired by @i{Tom Shannon}'s
14106 @file{organizer-mode.el}.
14107 @item
14108 @i{Ilya Shlyakhter} proposed the Archive Sibling, line numbering in literal
14109 examples, and remote highlighting for referenced code lines.
14110 @item
14111 @i{Stathis Sideris} wrote the @file{ditaa.jar} ASCII to PNG converter that is
14112 now packaged into Org's @file{contrib} directory.
14113 @item
14114 @i{Daniel Sinder} came up with the idea of internal archiving by locking
14115 subtrees.
14116 @item
14117 @i{Dale Smith} proposed link abbreviations.
14118 @item
14119 @i{James TD Smith} has contributed a large number of patches for useful
14120 tweaks and features.
14121 @item
14122 @i{Adam Spiers} asked for global linking commands, inspired the link
14123 extension system, added support for mairix, and proposed the mapping API.
14124 @item
14125 @i{Ulf Stegemann} created the table to translate special symbols to HTML,
14126 LaTeX, UTF-8, Latin-1 and ASCII.
14127 @item
14128 @i{Andy Stewart} contributed code to @file{org-w3m.el}, to copy HTML content
14129 with links transformation to Org syntax.
14130 @item
14131 @i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
14132 chapter about publishing.
14133 @item
14134 @i{Stefan Vollmar} organized a video-recorded talk at the
14135 Max-Planck-Institute for Neurology.  He also inspired the creation of a
14136 concept index for HTML export.
14137 @item
14138 @i{J@"urgen Vollmer} contributed code generating the table of contents
14139 in HTML output.
14140 @item
14141 @i{Samuel Wales} has provided important feedback and bug reports.
14142 @item
14143 @i{Chris Wallace} provided a patch implementing the @samp{QUOTE}
14144 keyword.
14145 @item
14146 @i{David Wainberg} suggested archiving, and improvements to the linking
14147 system.
14148 @item
14149 @i{John Wiegley} wrote @file{emacs-wiki.el}, @file{planner.el}, and
14150 @file{muse.el}, which have some overlap with Org.  Initially the development
14151 of Org was fully independent because I was not aware of the existence of
14152 these packages.  But with time I have occasionally looked at John's code and
14153 learned a lot from it.  John has also contributed a number of great ideas and
14154 patches directly to Org, including the attachment system
14155 (@file{org-attach.el}), integration with Apple Mail
14156 (@file{org-mac-message.el}), hierarchical dependencies of TODO items, habit
14157 tracking (@file{org-habits.el}).
14158 @item
14159 @i{Carsten Wimmer} suggested some changes and helped fix a bug in
14160 linking to Gnus.
14161 @item
14162 @i{Roland Winkler} requested additional key bindings to make Org
14163 work on a tty.
14164 @item
14165 @i{Piotr Zielinski} wrote @file{org-mouse.el}, proposed agenda blocks
14166 and contributed various ideas and code snippets.
14167 @end itemize
14170 @node Main Index, Key Index, History and Acknowledgments, Top
14171 @unnumbered Concept Index
14173 @printindex cp
14175 @node Key Index, Variable Index, Main Index, Top
14176 @unnumbered Key Index
14178 @printindex ky
14180 @node Variable Index,  , Key Index, Top
14181 @unnumbered Variable Index
14183 This is not a complete index of variables and faces, only the ones that are
14184 mentioned in the manual.  For a more complete list, use @kbd{M-x
14185 org-customize @key{RET}} and then click yourself through the tree.
14187 @printindex vr
14189 @bye
14191 @ignore
14192         arch-tag: 7893d1Fe-cc57-4d13-b5e5-f494a1CBC7ac
14193 @end ignore
14195 @c Local variables:
14196 @c fill-column: 77
14197 @c End:
14200 @c  LocalWords:  webdavhost pre