ox-md.el (md): Export underlined text as verbatim
[org-mode.git] / doc / org.texi
blob2a4ebed6eca9175d3139863f325cb265ff01a7b8
1 \input texinfo
2 @c %**start of header
3 @setfilename ../../info/org
4 @settitle The Org Manual
6 @include org-version.inc
8 @c Use proper quote and backtick for code sections in PDF output
9 @c Cf. Texinfo manual 14.2
10 @set txicodequoteundirected
11 @set txicodequotebacktick
13 @c Version and Contact Info
14 @set MAINTAINERSITE @uref{http://orgmode.org,maintainers webpage}
15 @set AUTHOR Carsten Dominik
16 @set MAINTAINER Bastien Guerry
17 @set MAINTAINEREMAIL @email{bzg at gnu dot org}
18 @set MAINTAINERCONTACT @uref{mailto:bzg at gnu dot org,contact the maintainer}
19 @c %**end of header
20 @finalout
23 @c -----------------------------------------------------------------------------
25 @c Macro definitions for commands and keys
26 @c =======================================
28 @c The behavior of the key/command macros will depend on the flag cmdnames
29 @c When set, commands names are shown.  When clear, they are not shown.
31 @set cmdnames
33 @c Below we define the following macros for Org key tables:
35 @c orgkey{key}                        A key item
36 @c orgcmd{key,cmd}                    Key with command name
37 @c xorgcmd{key,cmd}                   Key with command name as @itemx
38 @c orgcmdnki{key,cmd}                 Like orgcmd, but do not index the key
39 @c orgcmdtkc{text,key,cmd}            Like orgcmd,special text instead of key
40 @c orgcmdkkc{key1,key2,cmd}           Two keys with one command name, use "or"
41 @c orgcmdkxkc{key1,key2,cmd}          Two keys with one command name, but
42 @c                                    different functions, so format as @itemx
43 @c orgcmdkskc{key1,key2,cmd}          Same as orgcmdkkc, but use "or short"
44 @c xorgcmdkskc{key1,key2,cmd}         Same as previous, but use @itemx
45 @c orgcmdkkcc{key1,key2,cmd1,cmd2}    Two keys and two commands
47 @c a key but no command
48 @c    Inserts:    @item key
49 @macro orgkey{key}
50 @kindex \key\
51 @item @kbd{\key\}
52 @end macro
54 @macro xorgkey{key}
55 @kindex \key\
56 @itemx @kbd{\key\}
57 @end macro
59 @c one key with a command
60 @c   Inserts:    @item KEY               COMMAND
61 @macro orgcmd{key,command}
62 @ifset cmdnames
63 @kindex \key\
64 @findex \command\
65 @iftex
66 @item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
67 @end iftex
68 @ifnottex
69 @item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
70 @end ifnottex
71 @end ifset
72 @ifclear cmdnames
73 @kindex \key\
74 @item @kbd{\key\}
75 @end ifclear
76 @end macro
78 @c One key with one command, formatted using @itemx
79 @c   Inserts:    @itemx KEY               COMMAND
80 @macro xorgcmd{key,command}
81 @ifset cmdnames
82 @kindex \key\
83 @findex \command\
84 @iftex
85 @itemx @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
86 @end iftex
87 @ifnottex
88 @itemx @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
89 @end ifnottex
90 @end ifset
91 @ifclear cmdnames
92 @kindex \key\
93 @itemx @kbd{\key\}
94 @end ifclear
95 @end macro
97 @c one key with a command, bit do not index the key
98 @c   Inserts:    @item KEY               COMMAND
99 @macro orgcmdnki{key,command}
100 @ifset cmdnames
101 @findex \command\
102 @iftex
103 @item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
104 @end iftex
105 @ifnottex
106 @item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
107 @end ifnottex
108 @end ifset
109 @ifclear cmdnames
110 @item @kbd{\key\}
111 @end ifclear
112 @end macro
114 @c one key with a command, and special text to replace key in item
115 @c   Inserts:    @item TEXT                    COMMAND
116 @macro orgcmdtkc{text,key,command}
117 @ifset cmdnames
118 @kindex \key\
119 @findex \command\
120 @iftex
121 @item @kbd{\text\} @hskip 0pt plus 1filll @code{\command\}
122 @end iftex
123 @ifnottex
124 @item @kbd{\text\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
125 @end ifnottex
126 @end ifset
127 @ifclear cmdnames
128 @kindex \key\
129 @item @kbd{\text\}
130 @end ifclear
131 @end macro
133 @c two keys with one command
134 @c   Inserts:    @item KEY1 or KEY2            COMMAND
135 @macro orgcmdkkc{key1,key2,command}
136 @ifset cmdnames
137 @kindex \key1\
138 @kindex \key2\
139 @findex \command\
140 @iftex
141 @item @kbd{\key1\} @ @r{or} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
142 @end iftex
143 @ifnottex
144 @item @kbd{\key1\} @ @r{or} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
145 @end ifnottex
146 @end ifset
147 @ifclear cmdnames
148 @kindex \key1\
149 @kindex \key2\
150 @item @kbd{\key1\} @ @r{or} @ @kbd{\key2\}
151 @end ifclear
152 @end macro
154 @c Two keys with one command name, but different functions, so format as
155 @c @itemx
156 @c   Inserts:    @item KEY1
157 @c               @itemx KEY2                COMMAND
158 @macro orgcmdkxkc{key1,key2,command}
159 @ifset cmdnames
160 @kindex \key1\
161 @kindex \key2\
162 @findex \command\
163 @iftex
164 @item @kbd{\key1\}
165 @itemx @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
166 @end iftex
167 @ifnottex
168 @item @kbd{\key1\}
169 @itemx @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
170 @end ifnottex
171 @end ifset
172 @ifclear cmdnames
173 @kindex \key1\
174 @kindex \key2\
175 @item @kbd{\key1\}
176 @itemx @kbd{\key2\}
177 @end ifclear
178 @end macro
180 @c Same as previous, but use "or short"
181 @c   Inserts:    @item KEY1 or short KEY2            COMMAND
182 @macro orgcmdkskc{key1,key2,command}
183 @ifset cmdnames
184 @kindex \key1\
185 @kindex \key2\
186 @findex \command\
187 @iftex
188 @item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
189 @end iftex
190 @ifnottex
191 @item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
192 @end ifnottex
193 @end ifset
194 @ifclear cmdnames
195 @kindex \key1\
196 @kindex \key2\
197 @item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\}
198 @end ifclear
199 @end macro
201 @c Same as previous, but use @itemx
202 @c   Inserts:    @itemx KEY1 or short KEY2            COMMAND
203 @macro xorgcmdkskc{key1,key2,command}
204 @ifset cmdnames
205 @kindex \key1\
206 @kindex \key2\
207 @findex \command\
208 @iftex
209 @itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
210 @end iftex
211 @ifnottex
212 @itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
213 @end ifnottex
214 @end ifset
215 @ifclear cmdnames
216 @kindex \key1\
217 @kindex \key2\
218 @itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\}
219 @end ifclear
220 @end macro
222 @c two keys with two commands
223 @c   Inserts:    @item KEY1                        COMMAND1
224 @c               @itemx KEY2                       COMMAND2
225 @macro orgcmdkkcc{key1,key2,command1,command2}
226 @ifset cmdnames
227 @kindex \key1\
228 @kindex \key2\
229 @findex \command1\
230 @findex \command2\
231 @iftex
232 @item @kbd{\key1\} @hskip 0pt plus 1filll @code{\command1\}
233 @itemx @kbd{\key2\} @hskip 0pt plus 1filll @code{\command2\}
234 @end iftex
235 @ifnottex
236 @item @kbd{\key1\} @tie{}@tie{}@tie{}@tie{}(@code{\command1\})
237 @itemx @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command2\})
238 @end ifnottex
239 @end ifset
240 @ifclear cmdnames
241 @kindex \key1\
242 @kindex \key2\
243 @item @kbd{\key1\}
244 @itemx @kbd{\key2\}
245 @end ifclear
246 @end macro
247 @c -----------------------------------------------------------------------------
249 @iftex
250 @c @hyphenation{time-stamp time-stamps time-stamp-ing time-stamp-ed}
251 @end iftex
253 @c Subheadings inside a table.
254 @macro tsubheading{text}
255 @ifinfo
256 @subsubheading \text\
257 @end ifinfo
258 @ifnotinfo
259 @item @b{\text\}
260 @end ifnotinfo
261 @end macro
263 @copying
264 This manual is for Org version @value{VERSION}.
266 Copyright @copyright{} 2004--2013 Free Software Foundation, Inc.
268 @quotation
269 Permission is granted to copy, distribute and/or modify this document
270 under the terms of the GNU Free Documentation License, Version 1.3 or
271 any later version published by the Free Software Foundation; with no
272 Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
273 and with the Back-Cover Texts as in (a) below.  A copy of the license
274 is included in the section entitled ``GNU Free Documentation License.''
276 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
277 modify this GNU manual.''
278 @end quotation
279 @end copying
281 @dircategory Emacs editing modes
282 @direntry
283 * Org Mode: (org).      Outline-based notes management and organizer
284 @end direntry
286 @titlepage
287 @title The Org Manual
289 @subtitle Release @value{VERSION}
290 @author by Carsten Dominik
291 with contributions by David O'Toole, Bastien Guerry, Philip Rooke, Dan Davison, Eric Schulte, Thomas Dye and Jambunathan K.
293 @c The following two commands start the copyright page.
294 @page
295 @vskip 0pt plus 1filll
296 @insertcopying
297 @end titlepage
299 @c Output the table of contents at the beginning.
300 @contents
302 @ifnottex
303 @c FIXME These hand-written next,prev,up node pointers make editing a lot
304 @c harder.  There should be no need for them, makeinfo can do it
305 @c automatically for any document with a normal structure.
306 @node Top, Introduction, (dir), (dir)
307 @top Org Mode Manual
309 @insertcopying
310 @end ifnottex
312 @menu
313 * Introduction::                Getting started
314 * Document Structure::          A tree works like your brain
315 * Tables::                      Pure magic for quick formatting
316 * Hyperlinks::                  Notes in context
317 * TODO Items::                  Every tree branch can be a TODO item
318 * Tags::                        Tagging headlines and matching sets of tags
319 * Properties and Columns::      Storing information about an entry
320 * Dates and Times::             Making items useful for planning
321 * Capture - Refile - Archive::  The ins and outs for projects
322 * Agenda Views::                Collecting information into views
323 * Markup::                      Prepare text for rich export
324 * Exporting::                   Sharing and publishing notes
325 * Publishing::                  Create a web site of linked Org files
326 * Working With Source Code::    Export, evaluate, and tangle code blocks
327 * Miscellaneous::               All the rest which did not fit elsewhere
328 * Hacking::                     How to hack your way around
329 * MobileOrg::                   Viewing and capture on a mobile device
330 * History and Acknowledgments::  How Org came into being
331 * GNU Free Documentation License::  The license for this documentation.
332 * Main Index::                  An index of Org's concepts and features
333 * Key Index::                   Key bindings and where they are described
334 * Command and Function Index::  Command names and some internal functions
335 * Variable Index::              Variables mentioned in the manual
337 @detailmenu
338  --- The Detailed Node Listing ---
340 Introduction
342 * Summary::                     Brief summary of what Org does
343 * Installation::                Installing Org
344 * Activation::                  How to activate Org for certain buffers
345 * Feedback::                    Bug reports, ideas, patches etc.
346 * Conventions::                 Typesetting conventions in the manual
348 Document structure
350 * Outlines::                    Org is based on Outline mode
351 * Headlines::                   How to typeset Org tree headlines
352 * Visibility cycling::          Show and hide, much simplified
353 * Motion::                      Jumping to other headlines
354 * Structure editing::           Changing sequence and level of headlines
355 * Sparse trees::                Matches embedded in context
356 * Plain lists::                 Additional structure within an entry
357 * Drawers::                     Tucking stuff away
358 * Blocks::                      Folding blocks
359 * Footnotes::                   How footnotes are defined in Org's syntax
360 * Orgstruct mode::              Structure editing outside Org
362 Tables
364 * Built-in table editor::       Simple tables
365 * Column width and alignment::  Overrule the automatic settings
366 * Column groups::               Grouping to trigger vertical lines
367 * Orgtbl mode::                 The table editor as minor mode
368 * The spreadsheet::             The table editor has spreadsheet capabilities
369 * Org-Plot::                    Plotting from org tables
371 The spreadsheet
373 * References::                  How to refer to another field or range
374 * Formula syntax for Calc::     Using Calc to compute stuff
375 * Formula syntax for Lisp::     Writing formulas in Emacs Lisp
376 * Durations and time values::   How to compute durations and time values
377 * Field and range formulas::    Formula for specific (ranges of) fields
378 * Column formulas::             Formulas valid for an entire column
379 * Lookup functions::            Lookup functions for searching tables
380 * Editing and debugging formulas::  Fixing formulas
381 * Updating the table::          Recomputing all dependent fields
382 * Advanced features::           Field and column names, parameters and automatic recalc
384 Hyperlinks
386 * Link format::                 How links in Org are formatted
387 * Internal links::              Links to other places in the current file
388 * External links::              URL-like links to the world
389 * Handling links::              Creating, inserting and following
390 * Using links outside Org::     Linking from my C source code?
391 * Link abbreviations::          Shortcuts for writing complex links
392 * Search options::              Linking to a specific location
393 * Custom searches::             When the default search is not enough
395 Internal links
397 * Radio targets::               Make targets trigger links in plain text
399 TODO items
401 * TODO basics::                 Marking and displaying TODO entries
402 * TODO extensions::             Workflow and assignments
403 * Progress logging::            Dates and notes for progress
404 * Priorities::                  Some things are more important than others
405 * Breaking down tasks::         Splitting a task into manageable pieces
406 * Checkboxes::                  Tick-off lists
408 Extended use of TODO keywords
410 * Workflow states::             From TODO to DONE in steps
411 * TODO types::                  I do this, Fred does the rest
412 * Multiple sets in one file::   Mixing it all, and still finding your way
413 * Fast access to TODO states::  Single letter selection of a state
414 * Per-file keywords::           Different files, different requirements
415 * Faces for TODO keywords::     Highlighting states
416 * TODO dependencies::           When one task needs to wait for others
418 Progress logging
420 * Closing items::               When was this entry marked DONE?
421 * Tracking TODO state changes::  When did the status change?
422 * Tracking your habits::        How consistent have you been?
424 Tags
426 * Tag inheritance::             Tags use the tree structure of the outline
427 * Setting tags::                How to assign tags to a headline
428 * Tag searches::                Searching for combinations of tags
430 Properties and columns
432 * Property syntax::             How properties are spelled out
433 * Special properties::          Access to other Org mode features
434 * Property searches::           Matching property values
435 * Property inheritance::        Passing values down the tree
436 * Column view::                 Tabular viewing and editing
437 * Property API::                Properties for Lisp programmers
439 Column view
441 * Defining columns::            The COLUMNS format property
442 * Using column view::           How to create and use column view
443 * Capturing column view::       A dynamic block for column view
445 Defining columns
447 * Scope of column definitions::  Where defined, where valid?
448 * Column attributes::           Appearance and content of a column
450 Dates and times
452 * Timestamps::                  Assigning a time to a tree entry
453 * Creating timestamps::         Commands which insert timestamps
454 * Deadlines and scheduling::    Planning your work
455 * Clocking work time::          Tracking how long you spend on a task
456 * Effort estimates::            Planning work effort in advance
457 * Relative timer::              Notes with a running timer
458 * Countdown timer::             Starting a countdown timer for a task
460 Creating timestamps
462 * The date/time prompt::        How Org mode helps you entering date and time
463 * Custom time format::          Making dates look different
465 Deadlines and scheduling
467 * Inserting deadline/schedule::  Planning items
468 * Repeated tasks::              Items that show up again and again
470 Clocking work time
472 * Clocking commands::           Starting and stopping a clock
473 * The clock table::             Detailed reports
474 * Resolving idle time::         Resolving time when you've been idle
476 Capture - Refile - Archive
478 * Capture::                     Capturing new stuff
479 * Attachments::                 Add files to tasks
480 * RSS Feeds::                   Getting input from RSS feeds
481 * Protocols::                   External (e.g., Browser) access to Emacs and Org
482 * Refile and copy::             Moving/copying a tree from one place to another
483 * Archiving::                   What to do with finished projects
485 Capture
487 * Setting up capture::          Where notes will be stored
488 * Using capture::               Commands to invoke and terminate capture
489 * Capture templates::           Define the outline of different note types
491 Capture templates
493 * Template elements::           What is needed for a complete template entry
494 * Template expansion::          Filling in information about time and context
495 * Templates in contexts::       Only show a template in a specific context
497 Archiving
499 * Moving subtrees::             Moving a tree to an archive file
500 * Internal archiving::          Switch off a tree but keep it in the file
502 Agenda views
504 * Agenda files::                Files being searched for agenda information
505 * Agenda dispatcher::           Keyboard access to agenda views
506 * Built-in agenda views::       What is available out of the box?
507 * Presentation and sorting::    How agenda items are prepared for display
508 * Agenda commands::             Remote editing of Org trees
509 * Custom agenda views::         Defining special searches and views
510 * Exporting Agenda Views::      Writing a view to a file
511 * Agenda column view::          Using column view for collected entries
513 The built-in agenda views
515 * Weekly/daily agenda::         The calendar page with current tasks
516 * Global TODO list::            All unfinished action items
517 * Matching tags and properties::  Structured information with fine-tuned search
518 * Timeline::                    Time-sorted view for single file
519 * Search view::                 Find entries by searching for text
520 * Stuck projects::              Find projects you need to review
522 Presentation and sorting
524 * Categories::                  Not all tasks are equal
525 * Time-of-day specifications::  How the agenda knows the time
526 * Sorting of agenda items::     The order of things
528 Custom agenda views
530 * Storing searches::            Type once, use often
531 * Block agenda::                All the stuff you need in a single buffer
532 * Setting Options::             Changing the rules
534 Markup for rich export
536 * Structural markup elements::  The basic structure as seen by the exporter
537 * Images and tables::           Tables and Images will be included
538 * Literal examples::            Source code examples with special formatting
539 * Include files::               Include additional files into a document
540 * Index entries::               Making an index
541 * Macro replacement::           Use macros to create complex output
542 * Embedded @LaTeX{}::           LaTeX can be freely used inside Org documents
544 Structural markup elements
546 * Document title::              Where the title is taken from
547 * Headings and sections::       The document structure as seen by the exporter
548 * Table of contents::           The if and where of the table of contents
549 * Lists::                       Lists
550 * Paragraphs::                  Paragraphs
551 * Footnote markup::             Footnotes
552 * Emphasis and monospace::      Bold, italic, etc.
553 * Horizontal rules::            Make a line
554 * Comment lines::               What will *not* be exported
556 Embedded @LaTeX{}
558 * Special symbols::             Greek letters and other symbols
559 * Subscripts and superscripts::  Simple syntax for raising/lowering text
560 * @LaTeX{} fragments::          Complex formulas made easy
561 * Previewing @LaTeX{} fragments::  What will this snippet look like?
562 * CDLaTeX mode::                Speed up entering of formulas
564 Exporting
566 * Selective export::            Using tags to select and exclude trees
567 * Export options::              Per-file export settings
568 * The export dispatcher::       How to access exporter commands
569 * ASCII/Latin-1/UTF-8 export::  Exporting to flat files with encoding
570 * HTML export::                 Exporting to HTML
571 * @LaTeX{} and PDF export::     Exporting to @LaTeX{}, and processing to PDF
572 * OpenDocument Text export::    Exporting to OpenDocument Text
573 * iCalendar export::            Exporting in iCalendar format
575 HTML export
577 * HTML Export commands::        How to invoke HTML export
578 * HTML preamble and postamble::  How to insert a preamble and a postamble
579 * Quoting HTML tags::           Using direct HTML in Org mode
580 * Links in HTML export::        How links will be interpreted and formatted
581 * Tables in HTML export::       How to modify the formatting of tables
582 * Images in HTML export::       How to insert figures into HTML output
583 * Math formatting in HTML export::  Beautiful math also on the web
584 * Text areas in HTML export::   An alternative way to show an example
585 * CSS support::                 Changing the appearance of the output
586 * JavaScript support::          Info and Folding in a web browser
588 @LaTeX{} and PDF export
590 * @LaTeX{}/PDF export commands::
591 * Header and sectioning::       Setting up the export file structure
592 * Quoting @LaTeX{} code::       Incorporating literal @LaTeX{} code
593 * Tables in @LaTeX{} export::   Options for exporting tables to @LaTeX{}
594 * Images in @LaTeX{} export::   How to insert figures into @LaTeX{} output
595 * Beamer class export::         Turning the file into a presentation
597 OpenDocument Text export
599 * Pre-requisites for ODT export::  What packages ODT exporter relies on
600 * ODT export commands::         How to invoke ODT export
601 * Extending ODT export::        How to produce @samp{doc}, @samp{pdf} files
602 * Applying custom styles::      How to apply custom styles to the output
603 * Links in ODT export::         How links will be interpreted and formatted
604 * Tables in ODT export::        How Tables are exported
605 * Images in ODT export::        How to insert images
606 * Math formatting in ODT export::  How @LaTeX{} fragments are formatted
607 * Labels and captions in ODT export::  How captions are rendered
608 * Literal examples in ODT export::  How source and example blocks are formatted
609 * Advanced topics in ODT export::  Read this if you are a power user
611 Math formatting in ODT export
613 * Working with @LaTeX{} math snippets::  How to embed @LaTeX{} math fragments
614 * Working with MathML or OpenDocument formula files::  How to embed equations in native format
616 Advanced topics in ODT export
618 * Configuring a document converter::  How to register a document converter
619 * Working with OpenDocument style files::  Explore the internals
620 * Creating one-off styles::     How to produce custom highlighting etc
621 * Customizing tables in ODT export::  How to define and use Table templates
622 * Validating OpenDocument XML::  How to debug corrupt OpenDocument files
624 Publishing
626 * Configuration::               Defining projects
627 * Uploading files::             How to get files up on the server
628 * Sample configuration::        Example projects
629 * Triggering publication::      Publication commands
631 Configuration
633 * Project alist::               The central configuration variable
634 * Sources and destinations::    From here to there
635 * Selecting files::             What files are part of the project?
636 * Publishing action::           Setting the function doing the publishing
637 * Publishing options::          Tweaking HTML/@LaTeX{} export
638 * Publishing links::            Which links keep working after publishing?
639 * Sitemap::                     Generating a list of all pages
640 * Generating an index::         An index that reaches across pages
642 Sample configuration
644 * Simple example::              One-component publishing
645 * Complex example::             A multi-component publishing example
647 Working with source code
649 * Structure of code blocks::    Code block syntax described
650 * Editing source code::         Language major-mode editing
651 * Exporting code blocks::       Export contents and/or results
652 * Extracting source code::      Create pure source code files
653 * Evaluating code blocks::      Place results of evaluation in the Org mode buffer
654 * Library of Babel::            Use and contribute to a library of useful code blocks
655 * Languages::                   List of supported code block languages
656 * Header arguments::            Configure code block functionality
657 * Results of evaluation::       How evaluation results are handled
658 * Noweb reference syntax::      Literate programming in Org mode
659 * Key bindings and useful functions::  Work quickly with code blocks
660 * Batch execution::             Call functions from the command line
662 Header arguments
664 * Using header arguments::      Different ways to set header arguments
665 * Specific header arguments::   List of header arguments
667 Using header arguments
669 * System-wide header arguments::  Set global default values
670 * Language-specific header arguments::  Set default values by language
671 * Buffer-wide header arguments::  Set default values for a specific buffer
672 * Header arguments in Org mode properties::  Set default values for a buffer or heading
673 * Code block specific header arguments::  The most common way to set values
674 * Header arguments in function calls::  The most specific level
676 Specific header arguments
678 * var::                         Pass arguments to code blocks
679 * results::                     Specify the type of results and how they will
680                                 be collected and handled
681 * file::                        Specify a path for file output
682 * file-desc::                   Specify a description for file results
683 * dir::                         Specify the default (possibly remote)
684                                 directory for code block execution
685 * exports::                     Export code and/or results
686 * tangle::                      Toggle tangling and specify file name
687 * mkdirp::                      Toggle creation of parent directories of target
688                                 files during tangling
689 * comments::                    Toggle insertion of comments in tangled
690                                 code files
691 * padline::                     Control insertion of padding lines in tangled
692                                 code files
693 * no-expand::                   Turn off variable assignment and noweb
694                                 expansion during tangling
695 * session::                     Preserve the state of code evaluation
696 * noweb::                       Toggle expansion of noweb references
697 * noweb-ref::                   Specify block's noweb reference resolution target
698 * noweb-sep::                   String used to separate noweb references
699 * cache::                       Avoid re-evaluating unchanged code blocks
700 * sep::                         Delimiter for writing tabular results outside Org
701 * hlines::                      Handle horizontal lines in tables
702 * colnames::                    Handle column names in tables
703 * rownames::                    Handle row names in tables
704 * shebang::                     Make tangled files executable
705 * eval::                        Limit evaluation of specific code blocks
706 * wrap::                        Mark source block evaluation results
708 Miscellaneous
710 * Completion::                  M-TAB knows what you need
711 * Easy Templates::              Quick insertion of structural elements
712 * Speed keys::                  Electric commands at the beginning of a headline
713 * Code evaluation security::    Org mode files evaluate inline code
714 * Customization::               Adapting Org to your taste
715 * In-buffer settings::          Overview of the #+KEYWORDS
716 * The very busy C-c C-c key::   When in doubt, press C-c C-c
717 * Clean view::                  Getting rid of leading stars in the outline
718 * TTY keys::                    Using Org on a tty
719 * Interaction::                 Other Emacs packages
720 * org-crypt.el::                Encrypting Org files
722 Interaction with other packages
724 * Cooperation::                 Packages Org cooperates with
725 * Conflicts::                   Packages that lead to conflicts
727 Hacking
729 * Hooks::                       How to reach into Org's internals
730 * Add-on packages::             Available extensions
731 * Adding hyperlink types::      New custom link types
732 * Context-sensitive commands::  How to add functionality to such commands
733 * Tables in arbitrary syntax::  Orgtbl for @LaTeX{} and other programs
734 * Dynamic blocks::              Automatically filled blocks
735 * Special agenda views::        Customized views
736 * Speeding up your agendas::    Tips on how to speed up your agendas
737 * Extracting agenda information::  Postprocessing of agenda information
738 * Using the property API::      Writing programs that use entry properties
739 * Using the mapping API::       Mapping over all or selected entries
741 Tables and lists in arbitrary syntax
743 * Radio tables::                Sending and receiving radio tables
744 * A @LaTeX{} example::          Step by step, almost a tutorial
745 * Translator functions::        Copy and modify
746 * Radio lists::                 Doing the same for lists
748 MobileOrg
750 * Setting up the staging area::  Where to interact with the mobile device
751 * Pushing to MobileOrg::        Uploading Org files and agendas
752 * Pulling from MobileOrg::      Integrating captured and flagged items
754 @end detailmenu
755 @end menu
757 @node Introduction, Document Structure, Top, Top
758 @chapter Introduction
759 @cindex introduction
761 @menu
762 * Summary::                     Brief summary of what Org does
763 * Installation::                Installing Org
764 * Activation::                  How to activate Org for certain buffers
765 * Feedback::                    Bug reports, ideas, patches etc.
766 * Conventions::                 Typesetting conventions in the manual
767 @end menu
769 @node Summary, Installation, Introduction, Introduction
770 @section Summary
771 @cindex summary
773 Org is a mode for keeping notes, maintaining TODO lists, and doing
774 project planning with a fast and effective plain-text system.
776 Org develops organizational tasks around NOTES files that contain
777 lists or information about projects as plain text.  Org is
778 implemented on top of Outline mode, which makes it possible to keep the
779 content of large files well structured.  Visibility cycling and
780 structure editing help to work with the tree.  Tables are easily created
781 with a built-in table editor.  Org supports TODO items, deadlines,
782 timestamps, and scheduling.  It dynamically compiles entries into an
783 agenda that utilizes and smoothly integrates much of the Emacs calendar
784 and diary.  Plain text URL-like links connect to websites, emails,
785 Usenet messages, BBDB entries, and any files related to the projects.
786 For printing and sharing notes, an Org file can be exported as a
787 structured ASCII file, as HTML, or (TODO and agenda items only) as an
788 iCalendar file.  It can also serve as a publishing tool for a set of
789 linked web pages.
791 As a project planning environment, Org works by adding metadata to outline
792 nodes.  Based on this data, specific entries can be extracted in queries and
793 create dynamic @i{agenda views}.
795 Org mode contains the Org Babel environment which allows you to work with
796 embedded source code blocks in a file, to facilitate code evaluation,
797 documentation, and literate programming techniques.
799 Org's automatic, context-sensitive table editor with spreadsheet
800 capabilities can be integrated into any major mode by activating the
801 minor Orgtbl mode.  Using a translation step, it can be used to maintain
802 tables in arbitrary file types, for example in @LaTeX{}.  The structure
803 editing and list creation capabilities can be used outside Org with
804 the minor Orgstruct mode.
806 Org keeps simple things simple.  When first fired up, it should
807 feel like a straightforward, easy to use outliner.  Complexity is not
808 imposed, but a large amount of functionality is available when you need
809 it.  Org is a toolbox and can be used in different ways and for different
810 ends, for example:
812 @example
813 @r{@bullet{} an outline extension with visibility cycling and structure editing}
814 @r{@bullet{} an ASCII system and table editor for taking structured notes}
815 @r{@bullet{} a TODO list editor}
816 @r{@bullet{} a full agenda and planner with deadlines and work scheduling}
817 @pindex GTD, Getting Things Done
818 @r{@bullet{} an environment in which to implement David Allen's GTD system}
819 @r{@bullet{} a simple hypertext system, with HTML and @LaTeX{} export}
820 @r{@bullet{} a publishing tool to create a set of interlinked webpages}
821 @r{@bullet{} an environment for literate programming}
822 @end example
824 @cindex FAQ
825 There is a website for Org which provides links to the newest
826 version of Org, as well as additional information, frequently asked
827 questions (FAQ), links to tutorials, etc.  This page is located at
828 @uref{http://orgmode.org}.
830 @cindex print edition
831 The version 7.3 of this manual is available as a
832 @uref{http://www.network-theory.co.uk/org/manual/, paperback book from Network
833 Theory Ltd.}
835 @page
838 @node Installation, Activation, Summary, Introduction
839 @section Installation
840 @cindex installation
841 @cindex XEmacs
843 Org is part of recent distributions of GNU Emacs, so you normally don't need
844 to install it.  If, for one reason or another, you want to install Org on top
845 of this pre-packaged version, there are three ways to do it:
847 @itemize @bullet
848 @item By using Emacs package system.
849 @item By downloading Org as an archive.
850 @item By using Org's git repository.
851 @end itemize
853 We @b{strongly recommend} to stick to a single installation method.
855 @subsubheading Using Emacs packaging system
857 Recent Emacs distributions include a packaging system which lets you install
858 Elisp libraries.  You can install Org with @kbd{M-x package-install RET org}.
859 You need to do this in a session where no @code{.org} file has been visited.
860 Then, to make sure your Org configuration is taken into account, initialize
861 the package system with @code{(package-initialize)} in your @file{.emacs}
862 before setting any Org option.  If you want to use Org's package repository,
863 check out the @uref{http://orgmode.org/elpa.html, Org ELPA page}.
865 @subsubheading Downloading Org as an archive
867 You can download Org latest release from @uref{http://orgmode.org/, Org's
868 website}.  In this case, make sure you set the load-path correctly in your
869 @file{.emacs}:
871 @example
872 (add-to-list 'load-path "~/path/to/orgdir/lisp")
873 @end example
875 The downloaded archive contains contributed libraries that are not included
876 in Emacs.  If you want to use them, add the @file{contrib} directory to your
877 load-path:
879 @example
880 (add-to-list 'load-path "~/path/to/orgdir/contrib/lisp" t)
881 @end example
883 Optionally, you can compile the files and/or install them in your system.
884 Run @code{make help} to list compilation and installation options.
886 @subsubheading Using Org's git repository
888 You can clone Org's repository and install Org like this:
890 @example
891 $ cd ~/src/
892 $ git clone git://orgmode.org/org-mode.git
893 $ make autoloads
894 @end example
896 Note that in this case, @code{make autoloads} is mandatory: it defines Org's
897 version in @file{org-version.el} and Org's autoloads in
898 @file{org-loaddefs.el}.
900 Remember to add the correct load-path as described in the method above.
902 You can also compile with @code{make}, generate the documentation with
903 @code{make doc}, create a local configuration with @code{make config} and
904 install Org with @code{make install}.  Please run @code{make help} to get
905 the list of compilation/installation options.
907 For more detailed explanations on Org's build system, please check the Org
908 Build System page on @uref{http://orgmode.org/worg/dev/org-build-system.html,
909 Worg}.
911 @node Activation, Feedback, Installation, Introduction
912 @section Activation
913 @cindex activation
914 @cindex autoload
915 @cindex ELPA
916 @cindex global key bindings
917 @cindex key bindings, global
918 @findex org-agenda
919 @findex org-capture
920 @findex org-store-link
921 @findex org-iswitchb
923 Since Emacs 22.2, files with the @file{.org} extension use Org mode by
924 default.  If you are using an earlier version of Emacs, add this line to your
925 @file{.emacs} file:
927 @lisp
928 (add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
929 @end lisp
931 Org mode buffers need font-lock to be turned on: this is the default in
932 Emacs@footnote{If you don't use font-lock globally, turn it on in Org buffer
933 with @code{(add-hook 'org-mode-hook 'turn-on-font-lock)}}.
935 There are compatibility issues between Org mode and some other Elisp
936 packages, please take the time to check the list (@pxref{Conflicts}).
938 The four Org commands @command{org-store-link}, @command{org-capture},
939 @command{org-agenda}, and @command{org-iswitchb} should be accessible through
940 global keys (i.e., anywhere in Emacs, not just in Org buffers).  Here are
941 suggested bindings for these keys, please modify the keys to your own
942 liking.
943 @lisp
944 (global-set-key "\C-cl" 'org-store-link)
945 (global-set-key "\C-cc" 'org-capture)
946 (global-set-key "\C-ca" 'org-agenda)
947 (global-set-key "\C-cb" 'org-iswitchb)
948 @end lisp
950 @cindex Org mode, turning on
951 With this setup, all files with extension @samp{.org} will be put
952 into Org mode.  As an alternative, make the first line of a file look
953 like this:
955 @example
956 MY PROJECTS    -*- mode: org; -*-
957 @end example
959 @vindex org-insert-mode-line-in-empty-file
960 @noindent which will select Org mode for this buffer no matter what
961 the file's name is.  See also the variable
962 @code{org-insert-mode-line-in-empty-file}.
964 Many commands in Org work on the region if the region is @i{active}.  To make
965 use of this, you need to have @code{transient-mark-mode}
966 (@code{zmacs-regions} in XEmacs) turned on.  In Emacs 23 this is the default,
967 in Emacs 22 you need to do this yourself with
968 @lisp
969 (transient-mark-mode 1)
970 @end lisp
971 @noindent If you do not like @code{transient-mark-mode}, you can create an
972 active region by using the mouse to select a region, or pressing
973 @kbd{C-@key{SPC}} twice before moving the cursor.
975 @node Feedback, Conventions, Activation, Introduction
976 @section Feedback
977 @cindex feedback
978 @cindex bug reports
979 @cindex maintainer
980 @cindex author
982 If you find problems with Org, or if you have questions, remarks, or ideas
983 about it, please mail to the Org mailing list @email{emacs-orgmode@@gnu.org}.
984 If you are not a member of the mailing list, your mail will be passed to the
985 list after a moderator has approved it@footnote{Please consider subscribing
986 to the mailing list, in order to minimize the work the mailing list
987 moderators have to do.}.
989 For bug reports, please first try to reproduce the bug with the latest
990 version of Org available---if you are running an outdated version, it is
991 quite possible that the bug has been fixed already.  If the bug persists,
992 prepare a report and provide as much information as possible, including the
993 version information of Emacs (@kbd{M-x emacs-version @key{RET}}) and Org
994 (@kbd{M-x org-version @key{RET}}), as well as the Org related setup in
995 @file{.emacs}.  The easiest way to do this is to use the command
996 @example
997 @kbd{M-x org-submit-bug-report}
998 @end example
999 @noindent which will put all this information into an Emacs mail buffer so
1000 that you only need to add your description.  If you re not sending the Email
1001 from within Emacs, please copy and paste the content into your Email program.
1003 Sometimes you might face a problem due to an error in your Emacs or Org mode
1004 setup.  Before reporting a bug, it is very helpful to start Emacs with minimal
1005 customizations and reproduce the problem.  Doing so often helps you determine
1006 if the problem is with your customization or with Org mode itself.  You can
1007 start a typical minimal session with a command like the example below.
1009 @example
1010 $ emacs -Q -l /path/to/minimal-org.el
1011 @end example
1013 However if you are using Org mode as distributed with Emacs, a minimal setup
1014 is not necessary.  In that case it is sufficient to start Emacs as
1015 @code{emacs -Q}.  The @code{minimal-org.el} setup file can have contents as
1016 shown below.
1018 @example
1019 ;;; Minimal setup to load latest `org-mode'
1021 ;; activate debugging
1022 (setq debug-on-error t
1023       debug-on-signal nil
1024       debug-on-quit nil)
1026 ;; add latest org-mode to load path
1027 (add-to-list 'load-path (expand-file-name "/path/to/org-mode/lisp"))
1028 (add-to-list 'load-path (expand-file-name "/path/to/org-mode/contrib/lisp" t))
1029 @end example
1031 If an error occurs, a backtrace can be very useful (see below on how to
1032 create one).  Often a small example file helps, along with clear information
1033 about:
1035 @enumerate
1036 @item What exactly did you do?
1037 @item What did you expect to happen?
1038 @item What happened instead?
1039 @end enumerate
1040 @noindent Thank you for helping to improve this program.
1042 @subsubheading How to create a useful backtrace
1044 @cindex backtrace of an error
1045 If working with Org produces an error with a message you don't
1046 understand, you may have hit a bug.  The best way to report this is by
1047 providing, in addition to what was mentioned above, a @emph{backtrace}.
1048 This is information from the built-in debugger about where and how the
1049 error occurred.  Here is how to produce a useful backtrace:
1051 @enumerate
1052 @item
1053 Reload uncompiled versions of all Org mode Lisp files.  The backtrace
1054 contains much more information if it is produced with uncompiled code.
1055 To do this, use
1056 @example
1057 C-u M-x org-reload RET
1058 @end example
1059 @noindent
1060 or select @code{Org -> Refresh/Reload -> Reload Org uncompiled} from the
1061 menu.
1062 @item
1063 Go to the @code{Options} menu and select @code{Enter Debugger on Error}
1064 (XEmacs has this option in the @code{Troubleshooting} sub-menu).
1065 @item
1066 Do whatever you have to do to hit the error.  Don't forget to
1067 document the steps you take.
1068 @item
1069 When you hit the error, a @file{*Backtrace*} buffer will appear on the
1070 screen.  Save this buffer to a file (for example using @kbd{C-x C-w}) and
1071 attach it to your bug report.
1072 @end enumerate
1074 @node Conventions,  , Feedback, Introduction
1075 @section Typesetting conventions used in this manual
1077 @subsubheading TODO keywords, tags, properties, etc.
1079 Org mainly uses three types of keywords: TODO keywords, tags and property
1080 names.  In this manual we use the following conventions:
1082 @table @code
1083 @item TODO
1084 @itemx WAITING
1085 TODO keywords are written with all capitals, even if they are
1086 user-defined.
1087 @item boss
1088 @itemx ARCHIVE
1089 User-defined tags are written in lowercase; built-in tags with special
1090 meaning are written with all capitals.
1091 @item Release
1092 @itemx PRIORITY
1093 User-defined properties are capitalized; built-in properties with
1094 special meaning are written with all capitals.
1095 @end table
1097 Moreover, Org uses @i{option keywords} (like @code{#+TITLE} to set the title)
1098 and @i{environment keywords} (like @code{#+BEGIN_HTML} to start a @code{HTML}
1099 environment).  They are written in uppercase in the manual to enhance its
1100 readability, but you can use lowercase in your Org files@footnote{Easy
1101 templates insert lowercase keywords and Babel dynamically inserts
1102 @code{#+results}.}
1104 @subsubheading Keybindings and commands
1105 @kindex C-c a
1106 @findex org-agenda
1107 @kindex C-c c
1108 @findex org-capture
1110 The manual suggests two global keybindings: @kbd{C-c a} for @code{org-agenda}
1111 and @kbd{C-c c} for @code{org-capture}.  These are only suggestions, but the
1112 rest of the manual assumes that you are using these keybindings.
1114 Also, the manual lists both the keys and the corresponding commands for
1115 accessing a functionality.  Org mode often uses the same key for different
1116 functions, depending on context.  The command that is bound to such keys has
1117 a generic name, like @code{org-metaright}.  In the manual we will, wherever
1118 possible, give the function that is internally called by the generic command.
1119 For example, in the chapter on document structure, @kbd{M-@key{right}} will
1120 be listed to call @code{org-do-demote}, while in the chapter on tables, it
1121 will be listed to call @code{org-table-move-column-right}.  If you prefer,
1122 you can compile the manual without the command names by unsetting the flag
1123 @code{cmdnames} in @file{org.texi}.
1125 @node Document Structure, Tables, Introduction, Top
1126 @chapter Document structure
1127 @cindex document structure
1128 @cindex structure of document
1130 Org is based on Outline mode and provides flexible commands to
1131 edit the structure of the document.
1133 @menu
1134 * Outlines::                    Org is based on Outline mode
1135 * Headlines::                   How to typeset Org tree headlines
1136 * Visibility cycling::          Show and hide, much simplified
1137 * Motion::                      Jumping to other headlines
1138 * Structure editing::           Changing sequence and level of headlines
1139 * Sparse trees::                Matches embedded in context
1140 * Plain lists::                 Additional structure within an entry
1141 * Drawers::                     Tucking stuff away
1142 * Blocks::                      Folding blocks
1143 * Footnotes::                   How footnotes are defined in Org's syntax
1144 * Orgstruct mode::              Structure editing outside Org
1145 @end menu
1147 @node Outlines, Headlines, Document Structure, Document Structure
1148 @section Outlines
1149 @cindex outlines
1150 @cindex Outline mode
1152 Org is implemented on top of Outline mode.  Outlines allow a
1153 document to be organized in a hierarchical structure, which (at least
1154 for me) is the best representation of notes and thoughts.  An overview
1155 of this structure is achieved by folding (hiding) large parts of the
1156 document to show only the general document structure and the parts
1157 currently being worked on.  Org greatly simplifies the use of
1158 outlines by compressing the entire show/hide functionality into a single
1159 command, @command{org-cycle}, which is bound to the @key{TAB} key.
1161 @node Headlines, Visibility cycling, Outlines, Document Structure
1162 @section Headlines
1163 @cindex headlines
1164 @cindex outline tree
1165 @vindex org-special-ctrl-a/e
1166 @vindex org-special-ctrl-k
1167 @vindex org-ctrl-k-protect-subtree
1169 Headlines define the structure of an outline tree.  The headlines in Org
1170 start with one or more stars, on the left margin@footnote{See the variables
1171 @code{org-special-ctrl-a/e}, @code{org-special-ctrl-k}, and
1172 @code{org-ctrl-k-protect-subtree} to configure special behavior of @kbd{C-a},
1173 @kbd{C-e}, and @kbd{C-k} in headlines.} @footnote{Clocking only works with
1174 headings indented less then 30 stars.}.  For example:
1176 @example
1177 * Top level headline
1178 ** Second level
1179 *** 3rd level
1180     some text
1181 *** 3rd level
1182     more text
1184 * Another top level headline
1185 @end example
1187 @noindent Some people find the many stars too noisy and would prefer an
1188 outline that has whitespace followed by a single star as headline
1189 starters.  @ref{Clean view}, describes a setup to realize this.
1191 @vindex org-cycle-separator-lines
1192 An empty line after the end of a subtree is considered part of it and
1193 will be hidden when the subtree is folded.  However, if you leave at
1194 least two empty lines, one empty line will remain visible after folding
1195 the subtree, in order to structure the collapsed view.  See the
1196 variable @code{org-cycle-separator-lines} to modify this behavior.
1198 @node Visibility cycling, Motion, Headlines, Document Structure
1199 @section Visibility cycling
1200 @cindex cycling, visibility
1201 @cindex visibility cycling
1202 @cindex trees, visibility
1203 @cindex show hidden text
1204 @cindex hide text
1206 Outlines make it possible to hide parts of the text in the buffer.
1207 Org uses just two commands, bound to @key{TAB} and
1208 @kbd{S-@key{TAB}} to change the visibility in the buffer.
1210 @cindex subtree visibility states
1211 @cindex subtree cycling
1212 @cindex folded, subtree visibility state
1213 @cindex children, subtree visibility state
1214 @cindex subtree, subtree visibility state
1215 @table @asis
1216 @orgcmd{@key{TAB},org-cycle}
1217 @emph{Subtree cycling}: Rotate current subtree among the states
1219 @example
1220 ,-> FOLDED -> CHILDREN -> SUBTREE --.
1221 '-----------------------------------'
1222 @end example
1224 @vindex org-cycle-emulate-tab
1225 @vindex org-cycle-global-at-bob
1226 The cursor must be on a headline for this to work@footnote{see, however,
1227 the option @code{org-cycle-emulate-tab}.}.  When the cursor is at the
1228 beginning of the buffer and the first line is not a headline, then
1229 @key{TAB} actually runs global cycling (see below)@footnote{see the
1230 option @code{org-cycle-global-at-bob}.}.  Also when called with a prefix
1231 argument (@kbd{C-u @key{TAB}}), global cycling is invoked.
1233 @cindex global visibility states
1234 @cindex global cycling
1235 @cindex overview, global visibility state
1236 @cindex contents, global visibility state
1237 @cindex show all, global visibility state
1238 @orgcmd{S-@key{TAB},org-global-cycle}
1239 @itemx C-u @key{TAB}
1240 @emph{Global cycling}: Rotate the entire buffer among the states
1242 @example
1243 ,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
1244 '--------------------------------------'
1245 @end example
1247 When @kbd{S-@key{TAB}} is called with a numeric prefix argument N, the
1248 CONTENTS view up to headlines of level N will be shown.  Note that inside
1249 tables, @kbd{S-@key{TAB}} jumps to the previous field.
1251 @cindex show all, command
1252 @orgcmd{C-u C-u C-u @key{TAB},show-all}
1253 Show all, including drawers.
1254 @cindex revealing context
1255 @orgcmd{C-c C-r,org-reveal}
1256 Reveal context around point, showing the current entry, the following heading
1257 and the hierarchy above.  Useful for working near a location that has been
1258 exposed by a sparse tree command (@pxref{Sparse trees}) or an agenda command
1259 (@pxref{Agenda commands}).  With a prefix argument show, on each
1260 level, all sibling headings.  With a double prefix argument, also show the
1261 entire subtree of the parent.
1262 @cindex show branches, command
1263 @orgcmd{C-c C-k,show-branches}
1264 Expose all the headings of the subtree, CONTENT view for just one subtree.
1265 @cindex show children, command
1266 @orgcmd{C-c @key{TAB},show-children}
1267 Expose all direct children of the subtree.  With a numeric prefix argument N,
1268 expose all children down to level N@.
1269 @orgcmd{C-c C-x b,org-tree-to-indirect-buffer}
1270 Show the current subtree in an indirect buffer@footnote{The indirect
1271 buffer
1272 @ifinfo
1273 (@pxref{Indirect Buffers,,,emacs,GNU Emacs Manual})
1274 @end ifinfo
1275 @ifnotinfo
1276 (see the Emacs manual for more information about indirect buffers)
1277 @end ifnotinfo
1278 will contain the entire buffer, but will be narrowed to the current
1279 tree.  Editing the indirect buffer will also change the original buffer,
1280 but without affecting visibility in that buffer.}.  With a numeric
1281 prefix argument N, go up to level N and then take that tree.  If N is
1282 negative then go up that many levels.  With a @kbd{C-u} prefix, do not remove
1283 the previously used indirect buffer.
1284 @orgcmd{C-c C-x v,org-copy-visible}
1285 Copy the @i{visible} text in the region into the kill ring.
1286 @end table
1288 @vindex org-startup-folded
1289 @vindex org-agenda-inhibit-startup
1290 @cindex @code{overview}, STARTUP keyword
1291 @cindex @code{content}, STARTUP keyword
1292 @cindex @code{showall}, STARTUP keyword
1293 @cindex @code{showeverything}, STARTUP keyword
1295 When Emacs first visits an Org file, the global state is set to
1296 OVERVIEW, i.e., only the top level headlines are visible.  This can be
1297 configured through the variable @code{org-startup-folded}, or on a
1298 per-file basis by adding one of the following lines anywhere in the
1299 buffer:
1301 @example
1302 #+STARTUP: overview
1303 #+STARTUP: content
1304 #+STARTUP: showall
1305 #+STARTUP: showeverything
1306 @end example
1308 The startup visibility options are ignored when the file is open for the
1309 first time during the agenda generation: if you want the agenda to honor
1310 the startup visibility, set @code{org-agenda-inhibit-startup} to nil.
1312 @cindex property, VISIBILITY
1313 @noindent
1314 Furthermore, any entries with a @samp{VISIBILITY} property (@pxref{Properties
1315 and Columns}) will get their visibility adapted accordingly.  Allowed values
1316 for this property are @code{folded}, @code{children}, @code{content}, and
1317 @code{all}.
1318 @table @asis
1319 @orgcmd{C-u C-u @key{TAB},org-set-startup-visibility}
1320 Switch back to the startup visibility of the buffer, i.e., whatever is
1321 requested by startup options and @samp{VISIBILITY} properties in individual
1322 entries.
1323 @end table
1325 @node Motion, Structure editing, Visibility cycling, Document Structure
1326 @section Motion
1327 @cindex motion, between headlines
1328 @cindex jumping, to headlines
1329 @cindex headline navigation
1330 The following commands jump to other headlines in the buffer.
1332 @table @asis
1333 @orgcmd{C-c C-n,outline-next-visible-heading}
1334 Next heading.
1335 @orgcmd{C-c C-p,outline-previous-visible-heading}
1336 Previous heading.
1337 @orgcmd{C-c C-f,org-forward-same-level}
1338 Next heading same level.
1339 @orgcmd{C-c C-b,org-backward-same-level}
1340 Previous heading same level.
1341 @orgcmd{C-c C-u,outline-up-heading}
1342 Backward to higher level heading.
1343 @orgcmd{C-c C-j,org-goto}
1344 Jump to a different place without changing the current outline
1345 visibility.  Shows the document structure in a temporary buffer, where
1346 you can use the following keys to find your destination:
1347 @vindex org-goto-auto-isearch
1348 @example
1349 @key{TAB}         @r{Cycle visibility.}
1350 @key{down} / @key{up}   @r{Next/previous visible headline.}
1351 @key{RET}         @r{Select this location.}
1352 @kbd{/}           @r{Do a Sparse-tree search}
1353 @r{The following keys work if you turn off @code{org-goto-auto-isearch}}
1354 n / p        @r{Next/previous visible headline.}
1355 f / b        @r{Next/previous headline same level.}
1356 u            @r{One level up.}
1357 0-9          @r{Digit argument.}
1358 q            @r{Quit}
1359 @end example
1360 @vindex org-goto-interface
1361 @noindent
1362 See also the variable @code{org-goto-interface}.
1363 @end table
1365 @node Structure editing, Sparse trees, Motion, Document Structure
1366 @section Structure editing
1367 @cindex structure editing
1368 @cindex headline, promotion and demotion
1369 @cindex promotion, of subtrees
1370 @cindex demotion, of subtrees
1371 @cindex subtree, cut and paste
1372 @cindex pasting, of subtrees
1373 @cindex cutting, of subtrees
1374 @cindex copying, of subtrees
1375 @cindex sorting, of subtrees
1376 @cindex subtrees, cut and paste
1378 @table @asis
1379 @orgcmd{M-@key{RET},org-insert-heading}
1380 @vindex org-M-RET-may-split-line
1381 Insert a new heading/item with the same level than the one at point.
1382 If the cursor is in a plain list item, a new item is created
1383 (@pxref{Plain lists}).  To prevent this behavior in lists, call the
1384 command with a prefix argument.  When this command is used in the
1385 middle of a line, the line is split and the rest of the line becomes
1386 the new item or headline@footnote{If you do not want the line to be
1387 split, customize the variable @code{org-M-RET-may-split-line}.}.  If
1388 the command is used at the @emph{beginning} of a headline, the new
1389 headline is created before the current line.  If the command is used
1390 at the @emph{end} of a folded subtree (i.e., behind the ellipses at
1391 the end of a headline), then a headline like the current one will be
1392 inserted after the end of the subtree.  Calling this command with
1393 @kbd{C-u C-u} will inconditionnally respect the headline's content and
1394 create a new item at the end of the parent subtree.
1395 @orgcmd{C-@key{RET},org-insert-heading-respect-content}
1396 Just like @kbd{M-@key{RET}}, except when adding a new heading below the
1397 current heading, the new heading is placed after the body instead of before
1398 it.  This command works from anywhere in the entry.
1399 @orgcmd{M-S-@key{RET},org-insert-todo-heading}
1400 @vindex org-treat-insert-todo-heading-as-state-change
1401 Insert new TODO entry with same level as current heading.  See also the
1402 variable @code{org-treat-insert-todo-heading-as-state-change}.
1403 @orgcmd{C-S-@key{RET},org-insert-todo-heading-respect-content}
1404 Insert new TODO entry with same level as current heading.  Like
1405 @kbd{C-@key{RET}}, the new headline will be inserted after the current
1406 subtree.
1407 @orgcmd{@key{TAB},org-cycle}
1408 In a new entry with no text yet, the first @key{TAB} demotes the entry to
1409 become a child of the previous one.  The next @key{TAB} makes it a parent,
1410 and so on, all the way to top level.  Yet another @key{TAB}, and you are back
1411 to the initial level.
1412 @orgcmd{M-@key{left},org-do-promote}
1413 Promote current heading by one level.
1414 @orgcmd{M-@key{right},org-do-demote}
1415 Demote current heading by one level.
1416 @orgcmd{M-S-@key{left},org-promote-subtree}
1417 Promote the current subtree by one level.
1418 @orgcmd{M-S-@key{right},org-demote-subtree}
1419 Demote the current subtree by one level.
1420 @orgcmd{M-S-@key{up},org-move-subtree-up}
1421 Move subtree up (swap with previous subtree of same
1422 level).
1423 @orgcmd{M-S-@key{down},org-move-subtree-down}
1424 Move subtree down (swap with next subtree of same level).
1425 @orgcmd{M-h,org-mark-element}
1426 Mark the element at point.  Hitting repeatedly will mark subsequent elements
1427 of the one just marked.  E.g., hitting @key{M-h} on a paragraph will mark it,
1428 hitting @key{M-h} immediately again will mark the next one.
1429 @orgcmd{C-c @@,org-mark-subtree}
1430 Mark the subtree at point.  Hitting repeatedly will mark subsequent subtrees
1431 of the same level than the marked subtree.
1432 @orgcmd{C-c C-x C-w,org-cut-subtree}
1433 Kill subtree, i.e., remove it from buffer but save in kill ring.
1434 With a numeric prefix argument N, kill N sequential subtrees.
1435 @orgcmd{C-c C-x M-w,org-copy-subtree}
1436 Copy subtree to kill ring.  With a numeric prefix argument N, copy the N
1437 sequential subtrees.
1438 @orgcmd{C-c C-x C-y,org-paste-subtree}
1439 Yank subtree from kill ring.  This does modify the level of the subtree to
1440 make sure the tree fits in nicely at the yank position.  The yank level can
1441 also be specified with a numeric prefix argument, or by yanking after a
1442 headline marker like @samp{****}.
1443 @orgcmd{C-y,org-yank}
1444 @vindex org-yank-adjusted-subtrees
1445 @vindex org-yank-folded-subtrees
1446 Depending on the variables @code{org-yank-adjusted-subtrees} and
1447 @code{org-yank-folded-subtrees}, Org's internal @code{yank} command will
1448 paste subtrees folded and in a clever way, using the same command as @kbd{C-c
1449 C-x C-y}.  With the default settings, no level adjustment will take place,
1450 but the yanked tree will be folded unless doing so would swallow text
1451 previously visible.  Any prefix argument to this command will force a normal
1452 @code{yank} to be executed, with the prefix passed along.  A good way to
1453 force a normal yank is @kbd{C-u C-y}.  If you use @code{yank-pop} after a
1454 yank, it will yank previous kill items plainly, without adjustment and
1455 folding.
1456 @orgcmd{C-c C-x c,org-clone-subtree-with-time-shift}
1457 Clone a subtree by making a number of sibling copies of it.  You will be
1458 prompted for the number of copies to make, and you can also specify if any
1459 timestamps in the entry should be shifted.  This can be useful, for example,
1460 to create a number of tasks related to a series of lectures to prepare.  For
1461 more details, see the docstring of the command
1462 @code{org-clone-subtree-with-time-shift}.
1463 @orgcmd{C-c C-w,org-refile}
1464 Refile entry or region to a different location.  @xref{Refile and copy}.
1465 @orgcmd{C-c ^,org-sort}
1466 Sort same-level entries.  When there is an active region, all entries in the
1467 region will be sorted.  Otherwise the children of the current headline are
1468 sorted.  The command prompts for the sorting method, which can be
1469 alphabetically, numerically, by time (first timestamp with active preferred,
1470 creation time, scheduled time, deadline time), by priority, by TODO keyword
1471 (in the sequence the keywords have been defined in the setup) or by the value
1472 of a property.  Reverse sorting is possible as well.  You can also supply
1473 your own function to extract the sorting key.  With a @kbd{C-u} prefix,
1474 sorting will be case-sensitive.
1475 @orgcmd{C-x n s,org-narrow-to-subtree}
1476 Narrow buffer to current subtree.
1477 @orgcmd{C-x n b,org-narrow-to-block}
1478 Narrow buffer to current block.
1479 @orgcmd{C-x n w,widen}
1480 Widen buffer to remove narrowing.
1481 @orgcmd{C-c *,org-toggle-heading}
1482 Turn a normal line or plain list item into a headline (so that it becomes a
1483 subheading at its location).  Also turn a headline into a normal line by
1484 removing the stars.  If there is an active region, turn all lines in the
1485 region into headlines.  If the first line in the region was an item, turn
1486 only the item lines into headlines.  Finally, if the first line is a
1487 headline, remove the stars from all headlines in the region.
1488 @end table
1490 @cindex region, active
1491 @cindex active region
1492 @cindex transient mark mode
1493 When there is an active region (Transient Mark mode), promotion and
1494 demotion work on all headlines in the region.  To select a region of
1495 headlines, it is best to place both point and mark at the beginning of a
1496 line, mark at the beginning of the first headline, and point at the line
1497 just after the last headline to change.  Note that when the cursor is
1498 inside a table (@pxref{Tables}), the Meta-Cursor keys have different
1499 functionality.
1502 @node Sparse trees, Plain lists, Structure editing, Document Structure
1503 @section Sparse trees
1504 @cindex sparse trees
1505 @cindex trees, sparse
1506 @cindex folding, sparse trees
1507 @cindex occur, command
1509 @vindex org-show-hierarchy-above
1510 @vindex org-show-following-heading
1511 @vindex org-show-siblings
1512 @vindex org-show-entry-below
1513 An important feature of Org mode is the ability to construct @emph{sparse
1514 trees} for selected information in an outline tree, so that the entire
1515 document is folded as much as possible, but the selected information is made
1516 visible along with the headline structure above it@footnote{See also the
1517 variables @code{org-show-hierarchy-above}, @code{org-show-following-heading},
1518 @code{org-show-siblings}, and @code{org-show-entry-below} for detailed
1519 control on how much context is shown around each match.}.  Just try it out
1520 and you will see immediately how it works.
1522 Org mode contains several commands creating such trees, all these
1523 commands can be accessed through a dispatcher:
1525 @table @asis
1526 @orgcmd{C-c /,org-sparse-tree}
1527 This prompts for an extra key to select a sparse-tree creating command.
1528 @orgcmd{C-c / r,org-occur}
1529 @vindex org-remove-highlights-with-change
1530 Prompts for a regexp and shows a sparse tree with all matches.  If
1531 the match is in a headline, the headline is made visible.  If the match is in
1532 the body of an entry, headline and body are made visible.  In order to
1533 provide minimal context, also the full hierarchy of headlines above the match
1534 is shown, as well as the headline following the match.  Each match is also
1535 highlighted; the highlights disappear when the buffer is changed by an
1536 editing command@footnote{This depends on the option
1537 @code{org-remove-highlights-with-change}}, or by pressing @kbd{C-c C-c}.
1538 When called with a @kbd{C-u} prefix argument, previous highlights are kept,
1539 so several calls to this command can be stacked.
1540 @orgcmdkkc{M-g n,M-g M-n,next-error}
1541 Jump to the next sparse tree match in this buffer.
1542 @orgcmdkkc{M-g p,M-g M-p,previous-error}
1543 Jump to the previous sparse tree match in this buffer.
1544 @end table
1547 @noindent
1548 @vindex org-agenda-custom-commands
1549 For frequently used sparse trees of specific search strings, you can
1550 use the variable @code{org-agenda-custom-commands} to define fast
1551 keyboard access to specific sparse trees.  These commands will then be
1552 accessible through the agenda dispatcher (@pxref{Agenda dispatcher}).
1553 For example:
1555 @lisp
1556 (setq org-agenda-custom-commands
1557       '(("f" occur-tree "FIXME")))
1558 @end lisp
1560 @noindent will define the key @kbd{C-c a f} as a shortcut for creating
1561 a sparse tree matching the string @samp{FIXME}.
1563 The other sparse tree commands select headings based on TODO keywords,
1564 tags, or properties and will be discussed later in this manual.
1566 @kindex C-c C-e v
1567 @cindex printing sparse trees
1568 @cindex visible text, printing
1569 To print a sparse tree, you can use the Emacs command
1570 @code{ps-print-buffer-with-faces} which does not print invisible parts
1571 of the document @footnote{This does not work under XEmacs, because
1572 XEmacs uses selective display for outlining, not text properties.}.
1573 Or you can use the command @kbd{C-c C-e v} to export only the visible
1574 part of the document and print the resulting file.
1576 @node Plain lists, Drawers, Sparse trees, Document Structure
1577 @section Plain lists
1578 @cindex plain lists
1579 @cindex lists, plain
1580 @cindex lists, ordered
1581 @cindex ordered lists
1583 Within an entry of the outline tree, hand-formatted lists can provide
1584 additional structure.  They also provide a way to create lists of checkboxes
1585 (@pxref{Checkboxes}).  Org supports editing such lists, and every exporter
1586 (@pxref{Exporting}) can parse and format them.
1588 Org knows ordered lists, unordered lists, and description lists.
1589 @itemize @bullet
1590 @item
1591 @emph{Unordered} list items start with @samp{-}, @samp{+}, or
1592 @samp{*}@footnote{When using @samp{*} as a bullet, lines must be indented or
1593 they will be seen as top-level headlines.  Also, when you are hiding leading
1594 stars to get a clean outline view, plain list items starting with a star may
1595 be hard to distinguish from true headlines.  In short: even though @samp{*}
1596 is supported, it may be better to not use it for plain list items.}  as
1597 bullets.
1598 @item
1599 @vindex org-plain-list-ordered-item-terminator
1600 @vindex org-alphabetical-lists
1601 @emph{Ordered} list items start with a numeral followed by either a period or
1602 a right parenthesis@footnote{You can filter out any of them by configuring
1603 @code{org-plain-list-ordered-item-terminator}.}, such as @samp{1.} or
1604 @samp{1)}@footnote{You can also get @samp{a.}, @samp{A.}, @samp{a)} and
1605 @samp{A)} by configuring @code{org-alphabetical-lists}.  To minimize
1606 confusion with normal text, those are limited to one character only.  Beyond
1607 that limit, bullets will automatically fallback to numbers.}.  If you want a
1608 list to start with a different value (e.g., 20), start the text of the item
1609 with @code{[@@20]}@footnote{If there's a checkbox in the item, the cookie
1610 must be put @emph{before} the checkbox.  If you have activated alphabetical
1611 lists, you can also use counters like @code{[@@b]}.}.  Those constructs can
1612 be used in any item of the list in order to enforce a particular numbering.
1613 @item
1614 @emph{Description} list items are unordered list items, and contain the
1615 separator @samp{ :: } to distinguish the description @emph{term} from the
1616 description.
1617 @end itemize
1619 Items belonging to the same list must have the same indentation on the first
1620 line.  In particular, if an ordered list reaches number @samp{10.}, then the
1621 2--digit numbers must be written left-aligned with the other numbers in the
1622 list.  An item ends before the next line that is less or equally indented
1623 than its bullet/number.
1625 @vindex org-empty-line-terminates-plain-lists
1626 A list ends whenever every item has ended, which means before any line less
1627 or equally indented than items at top level.  It also ends before two blank
1628 lines@footnote{See also @code{org-empty-line-terminates-plain-lists}.}.  In
1629 that case, all items are closed.  Here is an example:
1631 @example
1632 @group
1633 ** Lord of the Rings
1634    My favorite scenes are (in this order)
1635    1. The attack of the Rohirrim
1636    2. Eowyn's fight with the witch king
1637       + this was already my favorite scene in the book
1638       + I really like Miranda Otto.
1639    3. Peter Jackson being shot by Legolas
1640       - on DVD only
1641       He makes a really funny face when it happens.
1642    But in the end, no individual scenes matter but the film as a whole.
1643    Important actors in this film are:
1644    - @b{Elijah Wood} :: He plays Frodo
1645    - @b{Sean Austin} :: He plays Sam, Frodo's friend.  I still remember
1646      him very well from his role as Mikey Walsh in @i{The Goonies}.
1647 @end group
1648 @end example
1650 Org supports these lists by tuning filling and wrapping commands to deal with
1651 them correctly@footnote{Org only changes the filling settings for Emacs.  For
1652 XEmacs, you should use Kyle E. Jones' @file{filladapt.el}.  To turn this on,
1653 put into @file{.emacs}: @code{(require 'filladapt)}}, and by exporting them
1654 properly (@pxref{Exporting}).  Since indentation is what governs the
1655 structure of these lists, many structural constructs like @code{#+BEGIN_...}
1656 blocks can be indented to signal that they belong to a particular item.
1658 @vindex org-list-demote-modify-bullet
1659 @vindex org-list-indent-offset
1660 If you find that using a different bullet for a sub-list (than that used for
1661 the current list-level) improves readability, customize the variable
1662 @code{org-list-demote-modify-bullet}.  To get a greater difference of
1663 indentation between items and theirs sub-items, customize
1664 @code{org-list-indent-offset}.
1666 @vindex org-list-automatic-rules
1667 The following commands act on items when the cursor is in the first line of
1668 an item (the line with the bullet or number).  Some of them imply the
1669 application of automatic rules to keep list structure intact.  If some of
1670 these actions get in your way, configure @code{org-list-automatic-rules}
1671 to disable them individually.
1673 @table @asis
1674 @orgcmd{@key{TAB},org-cycle}
1675 @cindex cycling, in plain lists
1676 @vindex org-cycle-include-plain-lists
1677 Items can be folded just like headline levels.  Normally this works only if
1678 the cursor is on a plain list item.  For more details, see the variable
1679 @code{org-cycle-include-plain-lists}.  If this variable is set to
1680 @code{integrate}, plain list items will be treated like low-level
1681 headlines.  The level of an item is then given by the indentation of the
1682 bullet/number.  Items are always subordinate to real headlines, however; the
1683 hierarchies remain completely separated.  In a new item with no text yet, the
1684 first @key{TAB} demotes the item to become a child of the previous
1685 one.  Subsequent @key{TAB}s move the item to meaningful levels in the list
1686 and eventually get it back to its initial position.
1687 @orgcmd{M-@key{RET},org-insert-heading}
1688 @vindex org-M-RET-may-split-line
1689 @vindex org-list-automatic-rules
1690 Insert new item at current level.  With a prefix argument, force a new
1691 heading (@pxref{Structure editing}).  If this command is used in the middle
1692 of an item, that item is @emph{split} in two, and the second part becomes the
1693 new item@footnote{If you do not want the item to be split, customize the
1694 variable @code{org-M-RET-may-split-line}.}.  If this command is executed
1695 @emph{before item's body}, the new item is created @emph{before} the current
1696 one.
1697 @end table
1699 @table @kbd
1700 @kindex M-S-@key{RET}
1701 @item M-S-RET
1702 Insert a new item with a checkbox (@pxref{Checkboxes}).
1703 @kindex S-@key{down}
1704 @item S-up
1705 @itemx S-down
1706 @cindex shift-selection-mode
1707 @vindex org-support-shift-select
1708 @vindex org-list-use-circular-motion
1709 Jump to the previous/next item in the current list@footnote{If you want to
1710 cycle around items that way, you may customize
1711 @code{org-list-use-circular-motion}.}, but only if
1712 @code{org-support-shift-select} is off.  If not, you can still use paragraph
1713 jumping commands like @kbd{C-@key{up}} and @kbd{C-@key{down}} to quite
1714 similar effect.
1715 @kindex M-@key{up}
1716 @kindex M-@key{down}
1717 @item M-up
1718 @itemx M-down
1719 Move the item including subitems up/down@footnote{See
1720 @code{org-liste-use-circular-motion} for a cyclic behavior.} (swap with
1721 previous/next item of same indentation).  If the list is ordered, renumbering
1722 is automatic.
1723 @kindex M-@key{left}
1724 @kindex M-@key{right}
1725 @item M-left
1726 @itemx M-right
1727 Decrease/increase the indentation of an item, leaving children alone.
1728 @kindex M-S-@key{left}
1729 @kindex M-S-@key{right}
1730 @item M-S-left
1731 @itemx M-S-right
1732 Decrease/increase the indentation of the item, including subitems.
1733 Initially, the item tree is selected based on current indentation.  When
1734 these commands are executed several times in direct succession, the initially
1735 selected region is used, even if the new indentation would imply a different
1736 hierarchy.  To use the new hierarchy, break the command chain with a cursor
1737 motion or so.
1739 As a special case, using this command on the very first item of a list will
1740 move the whole list.  This behavior can be disabled by configuring
1741 @code{org-list-automatic-rules}.  The global indentation of a list has no
1742 influence on the text @emph{after} the list.
1743 @kindex C-c C-c
1744 @item C-c C-c
1745 If there is a checkbox (@pxref{Checkboxes}) in the item line, toggle the
1746 state of the checkbox.  In any case, verify bullets and indentation
1747 consistency in the whole list.
1748 @kindex C-c -
1749 @vindex org-plain-list-ordered-item-terminator
1750 @item C-c -
1751 Cycle the entire list level through the different itemize/enumerate bullets
1752 (@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}) or a subset of them,
1753 depending on @code{org-plain-list-ordered-item-terminator}, the type of list,
1754 and its indentation.  With a numeric prefix argument N, select the Nth bullet
1755 from this list.  If there is an active region when calling this, selected
1756 text will be changed into an item.  With a prefix argument, all lines will be
1757 converted to list items.  If the first line already was a list item, any item
1758 marker will be removed from the list.  Finally, even without an active
1759 region, a normal line will be converted into a list item.
1760 @kindex C-c *
1761 @item C-c *
1762 Turn a plain list item into a headline (so that it becomes a subheading at
1763 its location).  @xref{Structure editing}, for a detailed explanation.
1764 @kindex C-c C-*
1765 @item C-c C-*
1766 Turn the whole plain list into a subtree of the current heading.  Checkboxes
1767 (@pxref{Checkboxes}) will become TODO (resp. DONE) keywords when unchecked
1768 (resp. checked).
1769 @kindex S-@key{left}
1770 @kindex S-@key{right}
1771 @item S-left/right
1772 @vindex org-support-shift-select
1773 This command also cycles bullet styles when the cursor in on the bullet or
1774 anywhere in an item line, details depending on
1775 @code{org-support-shift-select}.
1776 @kindex C-c ^
1777 @item C-c ^
1778 Sort the plain list.  You will be prompted for the sorting method:
1779 numerically, alphabetically, by time, or by custom function.
1780 @end table
1782 @node Drawers, Blocks, Plain lists, Document Structure
1783 @section Drawers
1784 @cindex drawers
1785 @cindex #+DRAWERS
1786 @cindex visibility cycling, drawers
1788 @vindex org-drawers
1789 @cindex org-insert-drawer
1790 @kindex C-c C-x d
1791 Sometimes you want to keep information associated with an entry, but you
1792 normally don't want to see it.  For this, Org mode has @emph{drawers}.
1793 Drawers need to be configured with the variable
1794 @code{org-drawers}@footnote{You can define additional drawers on a
1795 per-file basis with a line like @code{#+DRAWERS: HIDDEN STATE}}.  Drawers
1796 look like this:
1798 @example
1799 ** This is a headline
1800    Still outside the drawer
1801    :DRAWERNAME:
1802    This is inside the drawer.
1803    :END:
1804    After the drawer.
1805 @end example
1807 You can interactively insert drawers at point by calling
1808 @code{org-insert-drawer}, which is bound to @key{C-c C-x d}.  With an active
1809 region, this command will put the region inside the drawer.  With a prefix
1810 argument, this command calls @code{org-insert-property-drawer} and add a
1811 property drawer right below the current headline.  Completion over drawer
1812 keywords is also possible using @key{M-TAB}.
1814 Visibility cycling (@pxref{Visibility cycling}) on the headline will hide and
1815 show the entry, but keep the drawer collapsed to a single line.  In order to
1816 look inside the drawer, you need to move the cursor to the drawer line and
1817 press @key{TAB} there.  Org mode uses the @code{PROPERTIES} drawer for
1818 storing properties (@pxref{Properties and Columns}), and you can also arrange
1819 for state change notes (@pxref{Tracking TODO state changes}) and clock times
1820 (@pxref{Clocking work time}) to be stored in a drawer @code{LOGBOOK}.  If you
1821 want to store a quick note in the LOGBOOK drawer, in a similar way to state changes, use
1823 @table @kbd
1824 @kindex C-c C-z
1825 @item C-c C-z
1826 Add a time-stamped note to the LOGBOOK drawer.
1827 @end table
1829 @node Blocks, Footnotes, Drawers, Document Structure
1830 @section Blocks
1832 @vindex org-hide-block-startup
1833 @cindex blocks, folding
1834 Org mode uses begin...end blocks for various purposes from including source
1835 code examples (@pxref{Literal examples}) to capturing time logging
1836 information (@pxref{Clocking work time}).  These blocks can be folded and
1837 unfolded by pressing TAB in the begin line.  You can also get all blocks
1838 folded at startup by configuring the variable @code{org-hide-block-startup}
1839 or on a per-file basis by using
1841 @cindex @code{hideblocks}, STARTUP keyword
1842 @cindex @code{nohideblocks}, STARTUP keyword
1843 @example
1844 #+STARTUP: hideblocks
1845 #+STARTUP: nohideblocks
1846 @end example
1848 @node Footnotes, Orgstruct mode, Blocks, Document Structure
1849 @section Footnotes
1850 @cindex footnotes
1852 Org mode supports the creation of footnotes.  In contrast to the
1853 @file{footnote.el} package, Org mode's footnotes are designed for work on
1854 a larger document, not only for one-off documents like emails.
1856 A footnote is started by a footnote marker in square brackets in column 0, no
1857 indentation allowed.  It ends at the next footnote definition, headline, or
1858 after two consecutive empty lines.  The footnote reference is simply the
1859 marker in square brackets, inside text.  For example:
1861 @example
1862 The Org homepage[fn:1] now looks a lot better than it used to.
1864 [fn:1] The link is: http://orgmode.org
1865 @end example
1867 Org mode extends the number-based syntax to @emph{named} footnotes and
1868 optional inline definition.  Using plain numbers as markers (as
1869 @file{footnote.el} does) is supported for backward compatibility, but not
1870 encouraged because of possible conflicts with @LaTeX{} snippets (@pxref{Embedded
1871 @LaTeX{}}).  Here are the valid references:
1873 @table @code
1874 @item [1]
1875 A plain numeric footnote marker.  Compatible with @file{footnote.el}, but not
1876 recommended because something like @samp{[1]} could easily be part of a code
1877 snippet.
1878 @item [fn:name]
1879 A named footnote reference, where @code{name} is a unique label word, or, for
1880 simplicity of automatic creation, a number.
1881 @item [fn:: This is the inline definition of this footnote]
1882 A @LaTeX{}-like anonymous footnote where the definition is given directly at the
1883 reference point.
1884 @item [fn:name: a definition]
1885 An inline definition of a footnote, which also specifies a name for the note.
1886 Since Org allows multiple references to the same note, you can then use
1887 @code{[fn:name]} to create additional references.
1888 @end table
1890 @vindex org-footnote-auto-label
1891 Footnote labels can be created automatically, or you can create names yourself.
1892 This is handled by the variable @code{org-footnote-auto-label} and its
1893 corresponding @code{#+STARTUP} keywords.  See the docstring of that variable
1894 for details.
1896 @noindent The following command handles footnotes:
1898 @table @kbd
1899 @kindex C-c C-x f
1900 @item C-c C-x f
1901 The footnote action command.
1903 When the cursor is on a footnote reference, jump to the definition.  When it
1904 is at a definition, jump to the (first) reference.
1906 @vindex org-footnote-define-inline
1907 @vindex org-footnote-section
1908 @vindex org-footnote-auto-adjust
1909 Otherwise, create a new footnote.  Depending on the variable
1910 @code{org-footnote-define-inline}@footnote{The corresponding in-buffer
1911 setting is: @code{#+STARTUP: fninline} or @code{#+STARTUP: nofninline}}, the
1912 definition will be placed right into the text as part of the reference, or
1913 separately into the location determined by the variable
1914 @code{org-footnote-section}.
1916 When this command is called with a prefix argument, a menu of additional
1917 options is offered:
1918 @example
1919 s   @r{Sort the footnote definitions by reference sequence.  During editing,}
1920     @r{Org makes no effort to sort footnote definitions into a particular}
1921     @r{sequence.  If you want them sorted, use this command, which will}
1922     @r{also move entries according to @code{org-footnote-section}.  Automatic}
1923     @r{sorting after each insertion/deletion can be configured using the}
1924     @r{variable @code{org-footnote-auto-adjust}.}
1925 r   @r{Renumber the simple @code{fn:N} footnotes.  Automatic renumbering}
1926     @r{after each insertion/deletion can be configured using the variable}
1927     @r{@code{org-footnote-auto-adjust}.}
1928 S   @r{Short for first @code{r}, then @code{s} action.}
1929 n   @r{Normalize the footnotes by collecting all definitions (including}
1930     @r{inline definitions) into a special section, and then numbering them}
1931     @r{in sequence.  The references will then also be numbers.  This is}
1932     @r{meant to be the final step before finishing a document (e.g., sending}
1933     @r{off an email).  The exporters do this automatically, and so could}
1934     @r{something like @code{message-send-hook}.}
1935 d   @r{Delete the footnote at point, and all definitions of and references}
1936     @r{to it.}
1937 @end example
1938 Depending on the variable @code{org-footnote-auto-adjust}@footnote{the
1939 corresponding in-buffer options are @code{fnadjust} and @code{nofnadjust}.},
1940 renumbering and sorting footnotes can be automatic after each insertion or
1941 deletion.
1943 @kindex C-c C-c
1944 @item C-c C-c
1945 If the cursor is on a footnote reference, jump to the definition.  If it is a
1946 the definition, jump back to the reference.  When called at a footnote
1947 location with a prefix argument, offer the same menu as @kbd{C-c C-x f}.
1948 @kindex C-c C-o
1949 @kindex mouse-1
1950 @kindex mouse-2
1951 @item C-c C-o  @r{or} mouse-1/2
1952 Footnote labels are also links to the corresponding definition/reference, and
1953 you can use the usual commands to follow these links.
1954 @end table
1956 @node Orgstruct mode,  , Footnotes, Document Structure
1957 @section The Orgstruct minor mode
1958 @cindex Orgstruct mode
1959 @cindex minor mode for structure editing
1961 If you like the intuitive way the Org mode structure editing and list
1962 formatting works, you might want to use these commands in other modes like
1963 Text mode or Mail mode as well.  The minor mode @code{orgstruct-mode} makes
1964 this possible.   Toggle the mode with @kbd{M-x orgstruct-mode}, or
1965 turn it on by default, for example in Message mode, with one of:
1967 @lisp
1968 (add-hook 'message-mode-hook 'turn-on-orgstruct)
1969 (add-hook 'message-mode-hook 'turn-on-orgstruct++)
1970 @end lisp
1972 When this mode is active and the cursor is on a line that looks to Org like a
1973 headline or the first line of a list item, most structure editing commands
1974 will work, even if the same keys normally have different functionality in the
1975 major mode you are using.  If the cursor is not in one of those special
1976 lines, Orgstruct mode lurks silently in the shadows.  When you use
1977 @code{orgstruct++-mode}, Org will also export indentation and autofill
1978 settings into that mode, and detect item context after the first line of an
1979 item.
1981 @node Tables, Hyperlinks, Document Structure, Top
1982 @chapter Tables
1983 @cindex tables
1984 @cindex editing tables
1986 Org comes with a fast and intuitive table editor.  Spreadsheet-like
1987 calculations are supported using the Emacs @file{calc} package
1988 (@pxref{Top, Calc, , calc, Gnu Emacs Calculator Manual}).
1990 @menu
1991 * Built-in table editor::       Simple tables
1992 * Column width and alignment::  Overrule the automatic settings
1993 * Column groups::               Grouping to trigger vertical lines
1994 * Orgtbl mode::                 The table editor as minor mode
1995 * The spreadsheet::             The table editor has spreadsheet capabilities
1996 * Org-Plot::                    Plotting from org tables
1997 @end menu
1999 @node Built-in table editor, Column width and alignment, Tables, Tables
2000 @section The built-in table editor
2001 @cindex table editor, built-in
2003 Org makes it easy to format tables in plain ASCII@.  Any line with @samp{|} as
2004 the first non-whitespace character is considered part of a table.  @samp{|}
2005 is also the column separator@footnote{To insert a vertical bar into a table
2006 field, use @code{\vert} or, inside a word @code{abc\vert@{@}def}.}.  A table
2007 might look like this:
2009 @example
2010 | Name  | Phone | Age |
2011 |-------+-------+-----|
2012 | Peter |  1234 |  17 |
2013 | Anna  |  4321 |  25 |
2014 @end example
2016 A table is re-aligned automatically each time you press @key{TAB} or
2017 @key{RET} or @kbd{C-c C-c} inside the table.  @key{TAB} also moves to
2018 the next field (@key{RET} to the next row) and creates new table rows
2019 at the end of the table or before horizontal lines.  The indentation
2020 of the table is set by the first line.  Any line starting with
2021 @samp{|-} is considered as a horizontal separator line and will be
2022 expanded on the next re-align to span the whole table width.  So, to
2023 create the above table, you would only type
2025 @example
2026 |Name|Phone|Age|
2028 @end example
2030 @noindent and then press @key{TAB} to align the table and start filling in
2031 fields.  Even faster would be to type @code{|Name|Phone|Age} followed by
2032 @kbd{C-c @key{RET}}.
2034 @vindex org-enable-table-editor
2035 @vindex org-table-auto-blank-field
2036 When typing text into a field, Org treats @key{DEL},
2037 @key{Backspace}, and all character keys in a special way, so that
2038 inserting and deleting avoids shifting other fields.  Also, when
2039 typing @emph{immediately after the cursor was moved into a new field
2040 with @kbd{@key{TAB}}, @kbd{S-@key{TAB}} or @kbd{@key{RET}}}, the
2041 field is automatically made blank.  If this behavior is too
2042 unpredictable for you, configure the variables
2043 @code{org-enable-table-editor} and @code{org-table-auto-blank-field}.
2045 @table @kbd
2046 @tsubheading{Creation and conversion}
2047 @orgcmd{C-c |,org-table-create-or-convert-from-region}
2048 Convert the active region to table.  If every line contains at least one
2049 TAB character, the function assumes that the material is tab separated.
2050 If every line contains a comma, comma-separated values (CSV) are assumed.
2051 If not, lines are split at whitespace into fields.  You can use a prefix
2052 argument to force a specific separator: @kbd{C-u} forces CSV, @kbd{C-u
2053 C-u} forces TAB, and a numeric argument N indicates that at least N
2054 consecutive spaces, or alternatively a TAB will be the separator.
2056 If there is no active region, this command creates an empty Org
2057 table.  But it is easier just to start typing, like
2058 @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
2060 @tsubheading{Re-aligning and field motion}
2061 @orgcmd{C-c C-c,org-table-align}
2062 Re-align the table and don't move to another field.
2064 @orgcmd{<TAB>,org-table-next-field}
2065 Re-align the table, move to the next field.  Creates a new row if
2066 necessary.
2068 @orgcmd{S-@key{TAB},org-table-previous-field}
2069 Re-align, move to previous field.
2071 @orgcmd{@key{RET},org-table-next-row}
2072 Re-align the table and move down to next row.  Creates a new row if
2073 necessary.  At the beginning or end of a line, @key{RET} still does
2074 NEWLINE, so it can be used to split a table.
2076 @orgcmd{M-a,org-table-beginning-of-field}
2077 Move to beginning of the current table field, or on to the previous field.
2078 @orgcmd{M-e,org-table-end-of-field}
2079 Move to end of the current table field, or on to the next field.
2081 @tsubheading{Column and row editing}
2082 @orgcmdkkcc{M-@key{left},M-@key{right},org-table-move-column-left,org-table-move-column-right}
2083 Move the current column left/right.
2085 @orgcmd{M-S-@key{left},org-table-delete-column}
2086 Kill the current column.
2088 @orgcmd{M-S-@key{right},org-table-insert-column}
2089 Insert a new column to the left of the cursor position.
2091 @orgcmdkkcc{M-@key{up},M-@key{down},org-table-move-row-up,org-table-move-row-down}
2092 Move the current row up/down.
2094 @orgcmd{M-S-@key{up},org-table-kill-row}
2095 Kill the current row or horizontal line.
2097 @orgcmd{M-S-@key{down},org-table-insert-row}
2098 Insert a new row above the current row.  With a prefix argument, the line is
2099 created below the current one.
2101 @orgcmd{C-c -,org-table-insert-hline}
2102 Insert a horizontal line below current row.  With a prefix argument, the line
2103 is created above the current line.
2105 @orgcmd{C-c @key{RET},org-table-hline-and-move}
2106 Insert a horizontal line below current row, and move the cursor into the row
2107 below that line.
2109 @orgcmd{C-c ^,org-table-sort-lines}
2110 Sort the table lines in the region.  The position of point indicates the
2111 column to be used for sorting, and the range of lines is the range
2112 between the nearest horizontal separator lines, or the entire table.  If
2113 point is before the first column, you will be prompted for the sorting
2114 column.  If there is an active region, the mark specifies the first line
2115 and the sorting column, while point should be in the last line to be
2116 included into the sorting.  The command prompts for the sorting type
2117 (alphabetically, numerically, or by time).  When called with a prefix
2118 argument, alphabetic sorting will be case-sensitive.
2120 @tsubheading{Regions}
2121 @orgcmd{C-c C-x M-w,org-table-copy-region}
2122 Copy a rectangular region from a table to a special clipboard.  Point and
2123 mark determine edge fields of the rectangle.  If there is no active region,
2124 copy just the current field.  The process ignores horizontal separator lines.
2126 @orgcmd{C-c C-x C-w,org-table-cut-region}
2127 Copy a rectangular region from a table to a special clipboard, and
2128 blank all fields in the rectangle.  So this is the ``cut'' operation.
2130 @orgcmd{C-c C-x C-y,org-table-paste-rectangle}
2131 Paste a rectangular region into a table.
2132 The upper left corner ends up in the current field.  All involved fields
2133 will be overwritten.  If the rectangle does not fit into the present table,
2134 the table is enlarged as needed.  The process ignores horizontal separator
2135 lines.
2137 @orgcmd{M-@key{RET},org-table-wrap-region}
2138 Split the current field at the cursor position and move the rest to the line
2139 below.  If there is an active region, and both point and mark are in the same
2140 column, the text in the column is wrapped to minimum width for the given
2141 number of lines.  A numeric prefix argument may be used to change the number
2142 of desired lines.  If there is no region, but you specify a prefix argument,
2143 the current field is made blank, and the content is appended to the field
2144 above.
2146 @tsubheading{Calculations}
2147 @cindex formula, in tables
2148 @cindex calculations, in tables
2149 @cindex region, active
2150 @cindex active region
2151 @cindex transient mark mode
2152 @orgcmd{C-c +,org-table-sum}
2153 Sum the numbers in the current column, or in the rectangle defined by
2154 the active region.  The result is shown in the echo area and can
2155 be inserted with @kbd{C-y}.
2157 @orgcmd{S-@key{RET},org-table-copy-down}
2158 @vindex org-table-copy-increment
2159 When current field is empty, copy from first non-empty field above.  When not
2160 empty, copy current field down to next row and move cursor along with it.
2161 Depending on the variable @code{org-table-copy-increment}, integer field
2162 values will be incremented during copy.  Integers that are too large will not
2163 be incremented.  Also, a @code{0} prefix argument temporarily disables the
2164 increment.  This key is also used by shift-selection and related modes
2165 (@pxref{Conflicts}).
2167 @tsubheading{Miscellaneous}
2168 @orgcmd{C-c `,org-table-edit-field}
2169 Edit the current field in a separate window.  This is useful for fields that
2170 are not fully visible (@pxref{Column width and alignment}).  When called with
2171 a @kbd{C-u} prefix, just make the full field visible, so that it can be
2172 edited in place.  When called with two @kbd{C-u} prefixes, make the editor
2173 window follow the cursor through the table and always show the current
2174 field.  The follow mode exits automatically when the cursor leaves the table,
2175 or when you repeat this command with @kbd{C-u C-u C-c `}.
2177 @item M-x org-table-import
2178 Import a file as a table.  The table should be TAB or whitespace
2179 separated.  Use, for example, to import a spreadsheet table or data
2180 from a database, because these programs generally can write
2181 TAB-separated text files.  This command works by inserting the file into
2182 the buffer and then converting the region to a table.  Any prefix
2183 argument is passed on to the converter, which uses it to determine the
2184 separator.
2185 @orgcmd{C-c |,org-table-create-or-convert-from-region}
2186 Tables can also be imported by pasting tabular text into the Org
2187 buffer, selecting the pasted text with @kbd{C-x C-x} and then using the
2188 @kbd{C-c |} command (see above under @i{Creation and conversion}).
2190 @item M-x org-table-export
2191 @findex org-table-export
2192 @vindex org-table-export-default-format
2193 Export the table, by default as a TAB-separated file.  Use for data
2194 exchange with, for example, spreadsheet or database programs.  The format
2195 used to export the file can be configured in the variable
2196 @code{org-table-export-default-format}.  You may also use properties
2197 @code{TABLE_EXPORT_FILE} and @code{TABLE_EXPORT_FORMAT} to specify the file
2198 name and the format for table export in a subtree.  Org supports quite
2199 general formats for exported tables.  The exporter format is the same as the
2200 format used by Orgtbl radio tables, see @ref{Translator functions}, for a
2201 detailed description.
2202 @end table
2204 If you don't like the automatic table editor because it gets in your
2205 way on lines which you would like to start with @samp{|}, you can turn
2206 it off with
2208 @lisp
2209 (setq org-enable-table-editor nil)
2210 @end lisp
2212 @noindent Then the only table command that still works is
2213 @kbd{C-c C-c} to do a manual re-align.
2215 @node Column width and alignment, Column groups, Built-in table editor, Tables
2216 @section Column width and alignment
2217 @cindex narrow columns in tables
2218 @cindex alignment in tables
2220 The width of columns is automatically determined by the table editor.  And
2221 also the alignment of a column is determined automatically from the fraction
2222 of number-like versus non-number fields in the column.
2224 Sometimes a single field or a few fields need to carry more text, leading to
2225 inconveniently wide columns.  Or maybe you want to make a table with several
2226 columns having a fixed width, regardless of content.  To set@footnote{This
2227 feature does not work on XEmacs.} the width of a column, one field anywhere
2228 in the column may contain just the string @samp{<N>} where @samp{N} is an
2229 integer specifying the width of the column in characters.  The next re-align
2230 will then set the width of this column to this value.
2232 @example
2233 @group
2234 |---+------------------------------|               |---+--------|
2235 |   |                              |               |   | <6>    |
2236 | 1 | one                          |               | 1 | one    |
2237 | 2 | two                          |     ----\     | 2 | two    |
2238 | 3 | This is a long chunk of text |     ----/     | 3 | This=> |
2239 | 4 | four                         |               | 4 | four   |
2240 |---+------------------------------|               |---+--------|
2241 @end group
2242 @end example
2244 @noindent
2245 Fields that are wider become clipped and end in the string @samp{=>}.
2246 Note that the full text is still in the buffer but is hidden.
2247 To see the full text, hold the mouse over the field---a tool-tip window
2248 will show the full content.  To edit such a field, use the command
2249 @kbd{C-c `} (that is @kbd{C-c} followed by the backquote).  This will
2250 open a new window with the full field.  Edit it and finish with @kbd{C-c
2251 C-c}.
2253 @vindex org-startup-align-all-tables
2254 When visiting a file containing a table with narrowed columns, the
2255 necessary character hiding has not yet happened, and the table needs to
2256 be aligned before it looks nice.  Setting the option
2257 @code{org-startup-align-all-tables} will realign all tables in a file
2258 upon visiting, but also slow down startup.  You can also set this option
2259 on a per-file basis with:
2261 @example
2262 #+STARTUP: align
2263 #+STARTUP: noalign
2264 @end example
2266 If you would like to overrule the automatic alignment of number-rich columns
2267 to the right and of string-rich column to the left, you can use @samp{<r>},
2268 @samp{<c>}@footnote{Centering does not work inside Emacs, but it does have an
2269 effect when exporting to HTML.} or @samp{<l>} in a similar fashion.  You may
2270 also combine alignment and field width like this: @samp{<r10>}.
2272 Lines which only contain these formatting cookies will be removed
2273 automatically when exporting the document.
2275 @node Column groups, Orgtbl mode, Column width and alignment, Tables
2276 @section Column groups
2277 @cindex grouping columns in tables
2279 When Org exports tables, it does so by default without vertical
2280 lines because that is visually more satisfying in general.  Occasionally
2281 however, vertical lines can be useful to structure a table into groups
2282 of columns, much like horizontal lines can do for groups of rows.  In
2283 order to specify column groups, you can use a special row where the
2284 first field contains only @samp{/}.  The further fields can either
2285 contain @samp{<} to indicate that this column should start a group,
2286 @samp{>} to indicate the end of a column, or @samp{<>} (no space between @samp{<}
2287 and @samp{>}) to make a column
2288 a group of its own.  Boundaries between column groups will upon export be
2289 marked with vertical lines.  Here is an example:
2291 @example
2292 | N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
2293 |---+-----+-----+-----+---------+------------|
2294 | / |   < |     |   > |       < |          > |
2295 | 1 |   1 |   1 |   1 |       1 |          1 |
2296 | 2 |   4 |   8 |  16 |  1.4142 |     1.1892 |
2297 | 3 |   9 |  27 |  81 |  1.7321 |     1.3161 |
2298 |---+-----+-----+-----+---------+------------|
2299 #+TBLFM: $2=$1^2::$3=$1^3::$4=$1^4::$5=sqrt($1)::$6=sqrt(sqrt(($1)))
2300 @end example
2302 It is also sufficient to just insert the column group starters after
2303 every vertical line you would like to have:
2305 @example
2306 |  N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
2307 |----+-----+-----+-----+---------+------------|
2308 | /  | <   |     |     | <       |            |
2309 @end example
2311 @node Orgtbl mode, The spreadsheet, Column groups, Tables
2312 @section The Orgtbl minor mode
2313 @cindex Orgtbl mode
2314 @cindex minor mode for tables
2316 If you like the intuitive way the Org table editor works, you
2317 might also want to use it in other modes like Text mode or Mail mode.
2318 The minor mode Orgtbl mode makes this possible.  You can always toggle
2319 the mode with @kbd{M-x orgtbl-mode}.  To turn it on by default, for
2320 example in Message mode, use
2322 @lisp
2323 (add-hook 'message-mode-hook 'turn-on-orgtbl)
2324 @end lisp
2326 Furthermore, with some special setup, it is possible to maintain tables
2327 in arbitrary syntax with Orgtbl mode.  For example, it is possible to
2328 construct @LaTeX{} tables with the underlying ease and power of
2329 Orgtbl mode, including spreadsheet capabilities.  For details, see
2330 @ref{Tables in arbitrary syntax}.
2332 @node The spreadsheet, Org-Plot, Orgtbl mode, Tables
2333 @section The spreadsheet
2334 @cindex calculations, in tables
2335 @cindex spreadsheet capabilities
2336 @cindex @file{calc} package
2338 The table editor makes use of the Emacs @file{calc} package to implement
2339 spreadsheet-like capabilities.  It can also evaluate Emacs Lisp forms to
2340 derive fields from other fields.  While fully featured, Org's implementation
2341 is not identical to other spreadsheets.  For example, Org knows the concept
2342 of a @emph{column formula} that will be applied to all non-header fields in a
2343 column without having to copy the formula to each relevant field.  There is
2344 also a formula debugger, and a formula editor with features for highlighting
2345 fields in the table corresponding to the references at the point in the
2346 formula, moving these references by arrow keys
2348 @menu
2349 * References::                  How to refer to another field or range
2350 * Formula syntax for Calc::     Using Calc to compute stuff
2351 * Formula syntax for Lisp::     Writing formulas in Emacs Lisp
2352 * Durations and time values::   How to compute durations and time values
2353 * Field and range formulas::    Formula for specific (ranges of) fields
2354 * Column formulas::             Formulas valid for an entire column
2355 * Lookup functions::            Lookup functions for searching tables
2356 * Editing and debugging formulas::  Fixing formulas
2357 * Updating the table::          Recomputing all dependent fields
2358 * Advanced features::           Field and column names, parameters and automatic recalc
2359 @end menu
2361 @node References, Formula syntax for Calc, The spreadsheet, The spreadsheet
2362 @subsection References
2363 @cindex references
2365 To compute fields in the table from other fields, formulas must
2366 reference other fields or ranges.  In Org, fields can be referenced
2367 by name, by absolute coordinates, and by relative coordinates.  To find
2368 out what the coordinates of a field are, press @kbd{C-c ?} in that
2369 field, or press @kbd{C-c @}} to toggle the display of a grid.
2371 @subsubheading Field references
2372 @cindex field references
2373 @cindex references, to fields
2375 Formulas can reference the value of another field in two ways.  Like in
2376 any other spreadsheet, you may reference fields with a letter/number
2377 combination like @code{B3}, meaning the 2nd field in the 3rd row.
2378 @vindex org-table-use-standard-references
2379 However, Org prefers@footnote{Org will understand references typed by the
2380 user as @samp{B4}, but it will not use this syntax when offering a formula
2381 for editing.  You can customize this behavior using the variable
2382 @code{org-table-use-standard-references}.}  to use another, more general
2383 representation that looks like this:
2384 @example
2385 @@@var{row}$@var{column}
2386 @end example
2388 Column specifications can be absolute like @code{$1},
2389 @code{$2},...@code{$@var{N}}, or relative to the current column (i.e., the
2390 column of the field which is being computed) like @code{$+1} or @code{$-2}.
2391 @code{$<} and @code{$>} are immutable references to the first and last
2392 column, respectively, and you can use @code{$>>>} to indicate the third
2393 column from the right.
2395 The row specification only counts data lines and ignores horizontal separator
2396 lines (hlines).  Like with columns, you can use absolute row numbers
2397 @code{@@1}, @code{@@2},...@code{@@@var{N}}, and row numbers relative to the
2398 current row like @code{@@+3} or @code{@@-1}.  @code{@@<} and @code{@@>} are
2399 immutable references the first and last@footnote{For backward compatibility
2400 you can also use special names like @code{$LR5} and @code{$LR12} to refer in
2401 a stable way to the 5th and 12th field in the last row of the table.
2402 However, this syntax is deprecated, it should not be used for new documents.
2403 Use @code{@@>$} instead.} row in the table, respectively.  You may also
2404 specify the row relative to one of the hlines: @code{@@I} refers to the first
2405 hline, @code{@@II} to the second, etc.  @code{@@-I} refers to the first such
2406 line above the current line, @code{@@+I} to the first such line below the
2407 current line.  You can also write @code{@@III+2} which is the second data line
2408 after the third hline in the table.
2410 @code{@@0} and @code{$0} refer to the current row and column, respectively,
2411 i.e., to the row/column for the field being computed.  Also, if you omit
2412 either the column or the row part of the reference, the current row/column is
2413 implied.
2415 Org's references with @emph{unsigned} numbers are fixed references
2416 in the sense that if you use the same reference in the formula for two
2417 different fields, the same field will be referenced each time.
2418 Org's references with @emph{signed} numbers are floating
2419 references because the same reference operator can reference different
2420 fields depending on the field being calculated by the formula.
2422 Here are a few examples:
2424 @example
2425 @@2$3      @r{2nd row, 3rd column (same as @code{C2})}
2426 $5        @r{column 5 in the current row (same as @code{E&})}
2427 @@2        @r{current column, row 2}
2428 @@-1$-3    @r{the field one row up, three columns to the left}
2429 @@-I$2     @r{field just under hline above current row, column 2}
2430 @@>$5      @r{field in the last row, in column 5}
2431 @end example
2433 @subsubheading Range references
2434 @cindex range references
2435 @cindex references, to ranges
2437 You may reference a rectangular range of fields by specifying two field
2438 references connected by two dots @samp{..}.  If both fields are in the
2439 current row, you may simply use @samp{$2..$7}, but if at least one field
2440 is in a different row, you need to use the general @code{@@row$column}
2441 format at least for the first field (i.e the reference must start with
2442 @samp{@@} in order to be interpreted correctly).  Examples:
2444 @example
2445 $1..$3        @r{first three fields in the current row}
2446 $P..$Q        @r{range, using column names (see under Advanced)}
2447 $<<<..$>>     @r{start in third column, continue to the one but last}
2448 @@2$1..@@4$3    @r{6 fields between these two fields (same as @code{A2..C4})}
2449 @@-1$-2..@@-1   @r{3 fields in the row above, starting from 2 columns on the left}
2450 @@I..II        @r{between first and second hline, short for @code{@@I..@@II}}
2451 @end example
2453 @noindent Range references return a vector of values that can be fed
2454 into Calc vector functions.  Empty fields in ranges are normally
2455 suppressed, so that the vector contains only the non-empty fields (but
2456 see the @samp{E} mode switch below).  If there are no non-empty fields,
2457 @samp{[0]} is returned to avoid syntax errors in formulas.
2459 @subsubheading Field coordinates in formulas
2460 @cindex field coordinates
2461 @cindex coordinates, of field
2462 @cindex row, of field coordinates
2463 @cindex column, of field coordinates
2465 For Calc formulas and Lisp formulas @code{@@#} and @code{$#} can be used to
2466 get the row or column number of the field where the formula result goes.
2467 The traditional Lisp formula equivalents are @code{org-table-current-dline}
2468 and @code{org-table-current-column}.  Examples:
2470 @example
2471 if(@@# % 2, $#, string(""))   @r{column number on odd lines only}
2472 $3 = remote(FOO, @@@@#$2)      @r{copy column 2 from table FOO into}
2473                              @r{column 3 of the current table}
2474 @end example
2476 @noindent For the second example, table FOO must have at least as many rows
2477 as the current table.  Note that this is inefficient@footnote{The computation time scales as
2478 O(N^2) because table FOO is parsed for each field to be copied.} for large
2479 number of rows.
2481 @subsubheading Named references
2482 @cindex named references
2483 @cindex references, named
2484 @cindex name, of column or field
2485 @cindex constants, in calculations
2486 @cindex #+CONSTANTS
2488 @vindex org-table-formula-constants
2489 @samp{$name} is interpreted as the name of a column, parameter or
2490 constant.  Constants are defined globally through the variable
2491 @code{org-table-formula-constants}, and locally (for the file) through a
2492 line like
2494 @example
2495 #+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6
2496 @end example
2498 @noindent
2499 @vindex constants-unit-system
2500 @pindex constants.el
2501 Also properties (@pxref{Properties and Columns}) can be used as
2502 constants in table formulas: for a property @samp{:Xyz:} use the name
2503 @samp{$PROP_Xyz}, and the property will be searched in the current
2504 outline entry and in the hierarchy above it.  If you have the
2505 @file{constants.el} package, it will also be used to resolve constants,
2506 including natural constants like @samp{$h} for Planck's constant, and
2507 units like @samp{$km} for kilometers@footnote{@file{constants.el} can
2508 supply the values of constants in two different unit systems, @code{SI}
2509 and @code{cgs}.  Which one is used depends on the value of the variable
2510 @code{constants-unit-system}.  You can use the @code{#+STARTUP} options
2511 @code{constSI} and @code{constcgs} to set this value for the current
2512 buffer.}.  Column names and parameters can be specified in special table
2513 lines.  These are described below, see @ref{Advanced features}.  All
2514 names must start with a letter, and further consist of letters and
2515 numbers.
2517 @subsubheading Remote references
2518 @cindex remote references
2519 @cindex references, remote
2520 @cindex references, to a different table
2521 @cindex name, of column or field
2522 @cindex constants, in calculations
2523 @cindex #+TBLNAME
2525 You may also reference constants, fields and ranges from a different table,
2526 either in the current file or even in a different file.  The syntax is
2528 @example
2529 remote(NAME-OR-ID,REF)
2530 @end example
2532 @noindent
2533 where NAME can be the name of a table in the current file as set by a
2534 @code{#+TBLNAME: NAME} line before the table.  It can also be the ID of an
2535 entry, even in a different file, and the reference then refers to the first
2536 table in that entry.  REF is an absolute field or range reference as
2537 described above for example @code{@@3$3} or @code{$somename}, valid in the
2538 referenced table.
2540 @node Formula syntax for Calc, Formula syntax for Lisp, References, The spreadsheet
2541 @subsection Formula syntax for Calc
2542 @cindex formula syntax, Calc
2543 @cindex syntax, of formulas
2545 A formula can be any algebraic expression understood by the Emacs
2546 @file{Calc} package.  @b{Note that @file{calc} has the
2547 non-standard convention that @samp{/} has lower precedence than
2548 @samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.}  Before
2549 evaluation by @code{calc-eval} (@pxref{Calling Calc from
2550 Your Programs, calc-eval, Calling Calc from Your Lisp Programs, calc, GNU
2551 Emacs Calc Manual}),
2552 variable substitution takes place according to the rules described above.
2553 @cindex vectors, in table calculations
2554 The range vectors can be directly fed into the Calc vector functions
2555 like @samp{vmean} and @samp{vsum}.
2557 @cindex format specifier
2558 @cindex mode, for @file{calc}
2559 @vindex org-calc-default-modes
2560 A formula can contain an optional mode string after a semicolon.  This
2561 string consists of flags to influence Calc and other modes during
2562 execution.  By default, Org uses the standard Calc modes (precision
2563 12, angular units degrees, fraction and symbolic modes off).  The display
2564 format, however, has been changed to @code{(float 8)} to keep tables
2565 compact.  The default settings can be configured using the variable
2566 @code{org-calc-default-modes}.
2568 @example
2569 p20           @r{set the internal Calc calculation precision to 20 digits}
2570 n3 s3 e2 f4   @r{Normal, scientific, engineering, or fixed}
2571               @r{format of the result of Calc passed back to Org.}
2572               @r{Calc formatting is unlimited in precision as}
2573               @r{long as the Calc calculation precision is greater.}
2574 D R           @r{angle modes: degrees, radians}
2575 F S           @r{fraction and symbolic modes}
2576 E             @r{keep empty fields in ranges and use nan (not a number)}
2577               @r{in Calc formulas for empty fields in range references and}
2578               @r{for empty field references; else suppress empty fields in}
2579               @r{range references and use 0 for empty field references, see}
2580               @r{also the notes for `Range references' in @pxref{References}}
2581 N             @r{interpret all fields as numbers, use 0 for non-numbers;}
2582               @r{N has higher precedence than E (for the value of the field)}
2583 L             @r{literal, for Lisp formulas only}
2584 @end example
2586 @noindent
2587 Unless you use large integer numbers or high-precision-calculation
2588 and -display for floating point numbers you may alternatively provide a
2589 @code{printf} format specifier to reformat the Calc result after it has been
2590 passed back to Org instead of letting Calc already do the
2591 formatting@footnote{The @code{printf} reformatting is limited in precision
2592 because the value passed to it is converted into an @code{integer} or
2593 @code{double}.  The @code{integer} is limited in size by truncating the
2594 signed value to 32 bits.  The @code{double} is limited in precision to 64
2595 bits overall which leaves approximately 16 significant decimal digits.}.
2596 A few examples:
2598 @example
2599 $1+$2                @r{Sum of first and second field}
2600 $1+$2;%.2f           @r{Same, format result to two decimals}
2601 exp($2)+exp($1)      @r{Math functions can be used}
2602 $0;%.1f              @r{Reformat current cell to 1 decimal}
2603 ($3-32)*5/9          @r{Degrees F -> C conversion}
2604 $c/$1/$cm            @r{Hz -> cm conversion, using @file{constants.el}}
2605 tan($1);Dp3s1        @r{Compute in degrees, precision 3, display SCI 1}
2606 sin($1);Dp3%.1e      @r{Same, but use printf specifier for display}
2607 vmean($2..$7)        @r{Compute column range mean, suppress empty fields}
2608 vmean($2..$7);EN     @r{Same, but treat empty fields as 0}
2609 taylor($3,x=7,2)     @r{Taylor series of $3, at x=7, second degree}
2610 @end example
2612 Calc also contains a complete set of logical operations.  For example
2614 @example
2615 if($1 < 20, teen, string(""))
2616                      @r{"teen" if age $1 is less than 20, else empty}
2617 if("$1" = "nan" || "$2" = "nan", string(""), $1 + $2); E
2618                      @r{sum of first two columns unless one or both empty}
2619 @end example
2621 Note that you can also use two org-specific flags @code{T} and @code{t} for
2622 durations computations @ref{Durations and time values}.
2624 You can add your own Calc functions defined in Emacs Lisp with @code{defmath}
2625 and use them in formula syntax for Calc.
2627 @node Formula syntax for Lisp, Durations and time values, Formula syntax for Calc, The spreadsheet
2628 @subsection Emacs Lisp forms as formulas
2629 @cindex Lisp forms, as table formulas
2631 It is also possible to write a formula in Emacs Lisp.  This can be useful
2632 for string manipulation and control structures, if Calc's functionality is
2633 not enough.
2635 If a formula starts with a single-quote followed by an opening parenthesis,
2636 then it is evaluated as a Lisp form.  The evaluation should return either a
2637 string or a number.  Just as with @file{calc} formulas, you can specify modes
2638 and a printf format after a semicolon.
2640 With Emacs Lisp forms, you need to be conscious about the way field
2641 references are interpolated into the form.  By default, a reference will be
2642 interpolated as a Lisp string (in double-quotes) containing the field.  If
2643 you provide the @samp{N} mode switch, all referenced elements will be numbers
2644 (non-number fields will be zero) and interpolated as Lisp numbers, without
2645 quotes.  If you provide the @samp{L} flag, all fields will be interpolated
2646 literally, without quotes.  I.e., if you want a reference to be interpreted
2647 as a string by the Lisp form, enclose the reference operator itself in
2648 double-quotes, like @code{"$3"}.  Ranges are inserted as space-separated
2649 fields, so you can embed them in list or vector syntax.
2651 Here are a few examples---note how the @samp{N} mode is used when we do
2652 computations in Lisp:
2654 @example
2655 @r{Swap the first two characters of the content of column 1}
2656   '(concat (substring $1 1 2) (substring $1 0 1) (substring $1 2))
2657 @r{Add columns 1 and 2, equivalent to Calc's @code{$1+$2}}
2658   '(+ $1 $2);N
2659 @r{Compute the sum of columns 1--4, like Calc's @code{vsum($1..$4)}}
2660   '(apply '+ '($1..$4));N
2661 @end example
2663 @node Durations and time values, Field and range formulas, Formula syntax for Lisp, The spreadsheet
2664 @subsection Durations and time values
2665 @cindex Duration, computing
2666 @cindex Time, computing
2667 @vindex org-table-duration-custom-format
2669 If you want to compute time values use the @code{T} flag, either in Calc
2670 formulas or Elisp formulas:
2672 @example
2673 @group
2674   |  Task 1 |   Task 2 |    Total |
2675   |---------+----------+----------|
2676   |    2:12 |     1:47 | 03:59:00 |
2677   | 3:02:20 | -2:07:00 |     0.92 |
2678   #+TBLFM: @@2$3=$1+$2;T::@@3$3=$1+$2;t
2679 @end group
2680 @end example
2682 Input duration values must be of the form @code{[HH:MM[:SS]}, where seconds
2683 are optional.  With the @code{T} flag, computed durations will be displayed
2684 as @code{HH:MM:SS} (see the first formula above).  With the @code{t} flag,
2685 computed durations will be displayed according to the value of the variable
2686 @code{org-table-duration-custom-format}, which defaults to @code{'hours} and
2687 will display the result as a fraction of hours (see the second formula in the
2688 example above).
2690 Negative duration values can be manipulated as well, and integers will be
2691 considered as seconds in addition and subtraction.
2693 @node Field and range formulas, Column formulas, Durations and time values, The spreadsheet
2694 @subsection Field and range formulas
2695 @cindex field formula
2696 @cindex range formula
2697 @cindex formula, for individual table field
2698 @cindex formula, for range of fields
2700 To assign a formula to a particular field, type it directly into the field,
2701 preceded by @samp{:=}, for example @samp{:=vsum(@@II..III)}.  When you press
2702 @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the field,
2703 the formula will be stored as the formula for this field, evaluated, and the
2704 current field will be replaced with the result.
2706 @cindex #+TBLFM
2707 Formulas are stored in a special line starting with @samp{#+TBLFM:} directly
2708 below the table.  If you type the equation in the 4th field of the 3rd data
2709 line in the table, the formula will look like @samp{@@3$4=$1+$2}.  When
2710 inserting/deleting/swapping column and rows with the appropriate commands,
2711 @i{absolute references} (but not relative ones) in stored formulas are
2712 modified in order to still reference the same field.  To avoid this from
2713 happening, in particular in range references, anchor ranges at the table
2714 borders (using @code{@@<}, @code{@@>}, @code{$<}, @code{$>}), or at hlines
2715 using the @code{@@I} notation.  Automatic adaptation of field references does
2716 of course not happen if you edit the table structure with normal editing
2717 commands---then you must fix the equations yourself.
2719 Instead of typing an equation into the field, you may also use the following
2720 command
2722 @table @kbd
2723 @orgcmd{C-u C-c =,org-table-eval-formula}
2724 Install a new formula for the current field.  The command prompts for a
2725 formula with default taken from the @samp{#+TBLFM:} line, applies
2726 it to the current field, and stores it.
2727 @end table
2729 The left-hand side of a formula can also be a special expression in order to
2730 assign the formula to a number of different fields.  There is no keyboard
2731 shortcut to enter such range formulas.  To add them, use the formula editor
2732 (@pxref{Editing and debugging formulas}) or edit the @code{#+TBLFM:} line
2733 directly.
2735 @table @code
2736 @item $2=
2737 Column formula, valid for the entire column.  This is so common that Org
2738 treats these formulas in a special way, see @ref{Column formulas}.
2739 @item @@3=
2740 Row formula, applies to all fields in the specified row.  @code{@@>=} means
2741 the last row.
2742 @item @@1$2..@@4$3=
2743 Range formula, applies to all fields in the given rectangular range.  This
2744 can also be used to assign a formula to some but not all fields in a row.
2745 @item $name=
2746 Named field, see @ref{Advanced features}.
2747 @end table
2749 @node Column formulas, Lookup functions, Field and range formulas, The spreadsheet
2750 @subsection Column formulas
2751 @cindex column formula
2752 @cindex formula, for table column
2754 When you assign a formula to a simple column reference like @code{$3=}, the
2755 same formula will be used in all fields of that column, with the following
2756 very convenient exceptions: (i) If the table contains horizontal separator
2757 hlines with rows above and below, everything before the first such hline is
2758 considered part of the table @emph{header} and will not be modified by column
2759 formulas.  Therefore a header is mandatory when you use column formulas and
2760 want to add hlines to group rows, like for example to separate a total row at
2761 the bottom from the summand rows above.  (ii) Fields that already get a value
2762 from a field/range formula will be left alone by column formulas.  These
2763 conditions make column formulas very easy to use.
2765 To assign a formula to a column, type it directly into any field in the
2766 column, preceded by an equal sign, like @samp{=$1+$2}.  When you press
2767 @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the field,
2768 the formula will be stored as the formula for the current column, evaluated
2769 and the current field replaced with the result.  If the field contains only
2770 @samp{=}, the previously stored formula for this column is used.  For each
2771 column, Org will only remember the most recently used formula.  In the
2772 @samp{#+TBLFM:} line, column formulas will look like @samp{$4=$1+$2}.  The
2773 left-hand side of a column formula can not be the name of column, it must be
2774 the numeric column reference or @code{$>}.
2776 Instead of typing an equation into the field, you may also use the
2777 following command:
2779 @table @kbd
2780 @orgcmd{C-c =,org-table-eval-formula}
2781 Install a new formula for the current column and replace current field with
2782 the result of the formula.  The command prompts for a formula, with default
2783 taken from the @samp{#+TBLFM} line, applies it to the current field and
2784 stores it.  With a numeric prefix argument(e.g., @kbd{C-5 C-c =}) the command
2785 will apply it to that many consecutive fields in the current column.
2786 @end table
2788 @node Lookup functions, Editing and debugging formulas, Column formulas, The spreadsheet
2789 @subsection Lookup functions
2790 @cindex lookup functions in tables
2791 @cindex table lookup functions
2793 Org has three predefined Emacs Lisp functions for lookups in tables.
2794 @table @code
2795 @item (org-lookup-first VAL S-LIST R-LIST &optional PREDICATE)
2796 @findex org-lookup-first
2797 Searches for the first element @code{S} in list @code{S-LIST} for which
2798 @lisp
2799 (PREDICATE VAL S)
2800 @end lisp
2801 is @code{t}; returns the value from the corresponding position in list
2802 @code{R-LIST}.  The default @code{PREDICATE} is @code{equal}.  Note that the
2803 parameters @code{VAL} and @code{S} are passed to @code{PREDICATE} in the same
2804 order as the correspoding parameters are in the call to
2805 @code{org-lookup-first}, where @code{VAL} precedes @code{S-LIST}.  If
2806 @code{R-LIST} is @code{nil}, the matching element @code{S} of @code{S-LIST}
2807 is returned.
2808 @item (org-lookup-last VAL S-LIST R-LIST &optional PREDICATE)
2809 @findex org-lookup-last
2810 Similar to @code{org-lookup-first} above, but searches for the @i{last}
2811 element for which @code{PREDICATE} is @code{t}.
2812 @item (org-lookup-all VAL S-LIST R-LIST &optional PREDICATE)
2813 @findex org-lookup-all
2814 Similar to @code{org-lookup-first}, but searches for @i{all} elements for
2815 which @code{PREDICATE} is @code{t}, and returns @i{all} corresponding
2816 values.  This function can not be used by itself in a formula, because it
2817 returns a list of values.  However, powerful lookups can be built when this
2818 function is combined with other Emacs Lisp functions.
2819 @end table
2821 If the ranges used in these functions contain empty fields, the @code{E} mode
2822 for the formula should usually be specified: otherwise empty fields will not be
2823 included in @code{S-LIST} and/or @code{R-LIST} which can, for example, result
2824 in an incorrect mapping from an element of @code{S-LIST} to the corresponding
2825 element of @code{R-LIST}.
2827 These three functions can be used to implement associative arrays, count
2828 matching cells, rank results, group data etc.  For practical examples
2829 see @uref{http://orgmode.org/worg/org-tutorials/org-lookups.html, this
2830 tutorial on Worg}.
2832 @node Editing and debugging formulas, Updating the table, Lookup functions, The spreadsheet
2833 @subsection Editing and debugging formulas
2834 @cindex formula editing
2835 @cindex editing, of table formulas
2837 @vindex org-table-use-standard-references
2838 You can edit individual formulas in the minibuffer or directly in the
2839 field.  Org can also prepare a special buffer with all active
2840 formulas of a table.  When offering a formula for editing, Org
2841 converts references to the standard format (like @code{B3} or @code{D&})
2842 if possible.  If you prefer to only work with the internal format (like
2843 @code{@@3$2} or @code{$4}), configure the variable
2844 @code{org-table-use-standard-references}.
2846 @table @kbd
2847 @orgcmdkkc{C-c =,C-u C-c =,org-table-eval-formula}
2848 Edit the formula associated with the current column/field in the
2849 minibuffer.  See @ref{Column formulas}, and @ref{Field and range formulas}.
2850 @orgcmd{C-u C-u C-c =,org-table-eval-formula}
2851 Re-insert the active formula (either a
2852 field formula, or a column formula) into the current field, so that you
2853 can edit it directly in the field.  The advantage over editing in the
2854 minibuffer is that you can use the command @kbd{C-c ?}.
2855 @orgcmd{C-c ?,org-table-field-info}
2856 While editing a formula in a table field, highlight the field(s)
2857 referenced by the reference at the cursor position in the formula.
2858 @kindex C-c @}
2859 @findex org-table-toggle-coordinate-overlays
2860 @item C-c @}
2861 Toggle the display of row and column numbers for a table, using overlays
2862 (@command{org-table-toggle-coordinate-overlays}).  These are updated each
2863 time the table is aligned; you can force it with @kbd{C-c C-c}.
2864 @kindex C-c @{
2865 @findex org-table-toggle-formula-debugger
2866 @item C-c @{
2867 Toggle the formula debugger on and off
2868 (@command{org-table-toggle-formula-debugger}).  See below.
2869 @orgcmd{C-c ',org-table-edit-formulas}
2870 Edit all formulas for the current table in a special buffer, where the
2871 formulas will be displayed one per line.  If the current field has an
2872 active formula, the cursor in the formula editor will mark it.
2873 While inside the special buffer, Org will automatically highlight
2874 any field or range reference at the cursor position.  You may edit,
2875 remove and add formulas, and use the following commands:
2876 @table @kbd
2877 @orgcmdkkc{C-c C-c,C-x C-s,org-table-fedit-finish}
2878 Exit the formula editor and store the modified formulas.  With @kbd{C-u}
2879 prefix, also apply the new formulas to the entire table.
2880 @orgcmd{C-c C-q,org-table-fedit-abort}
2881 Exit the formula editor without installing changes.
2882 @orgcmd{C-c C-r,org-table-fedit-toggle-ref-type}
2883 Toggle all references in the formula editor between standard (like
2884 @code{B3}) and internal (like @code{@@3$2}).
2885 @orgcmd{@key{TAB},org-table-fedit-lisp-indent}
2886 Pretty-print or indent Lisp formula at point.  When in a line containing
2887 a Lisp formula, format the formula according to Emacs Lisp rules.
2888 Another @key{TAB} collapses the formula back again.  In the open
2889 formula, @key{TAB} re-indents just like in Emacs Lisp mode.
2890 @orgcmd{M-@key{TAB},lisp-complete-symbol}
2891 Complete Lisp symbols, just like in Emacs Lisp mode.
2892 @kindex S-@key{up}
2893 @kindex S-@key{down}
2894 @kindex S-@key{left}
2895 @kindex S-@key{right}
2896 @findex org-table-fedit-ref-up
2897 @findex org-table-fedit-ref-down
2898 @findex org-table-fedit-ref-left
2899 @findex org-table-fedit-ref-right
2900 @item S-@key{up}/@key{down}/@key{left}/@key{right}
2901 Shift the reference at point.  For example, if the reference is
2902 @code{B3} and you press @kbd{S-@key{right}}, it will become @code{C3}.
2903 This also works for relative references and for hline references.
2904 @orgcmdkkcc{M-S-@key{up},M-S-@key{down},org-table-fedit-line-up,org-table-fedit-line-down}
2905 Move the test line for column formulas in the Org buffer up and
2906 down.
2907 @orgcmdkkcc{M-@key{up},M-@key{down},org-table-fedit-scroll-down,org-table-fedit-scroll-up}
2908 Scroll the window displaying the table.
2909 @kindex C-c @}
2910 @findex org-table-toggle-coordinate-overlays
2911 @item C-c @}
2912 Turn the coordinate grid in the table on and off.
2913 @end table
2914 @end table
2916 Making a table field blank does not remove the formula associated with
2917 the field, because that is stored in a different line (the @samp{#+TBLFM}
2918 line)---during the next recalculation the field will be filled again.
2919 To remove a formula from a field, you have to give an empty reply when
2920 prompted for the formula, or to edit the @samp{#+TBLFM} line.
2922 @kindex C-c C-c
2923 You may edit the @samp{#+TBLFM} directly and re-apply the changed
2924 equations with @kbd{C-c C-c} in that line or with the normal
2925 recalculation commands in the table.
2927 @subsubheading Debugging formulas
2928 @cindex formula debugging
2929 @cindex debugging, of table formulas
2930 When the evaluation of a formula leads to an error, the field content
2931 becomes the string @samp{#ERROR}.  If you would like see what is going
2932 on during variable substitution and calculation in order to find a bug,
2933 turn on formula debugging in the @code{Tbl} menu and repeat the
2934 calculation, for example by pressing @kbd{C-u C-u C-c = @key{RET}} in a
2935 field.  Detailed information will be displayed.
2937 @node Updating the table, Advanced features, Editing and debugging formulas, The spreadsheet
2938 @subsection Updating the table
2939 @cindex recomputing table fields
2940 @cindex updating, table
2942 Recalculation of a table is normally not automatic, but needs to be
2943 triggered by a command.  See @ref{Advanced features}, for a way to make
2944 recalculation at least semi-automatic.
2946 In order to recalculate a line of a table or the entire table, use the
2947 following commands:
2949 @table @kbd
2950 @orgcmd{C-c *,org-table-recalculate}
2951 Recalculate the current row by first applying the stored column formulas
2952 from left to right, and all field/range formulas in the current row.
2954 @kindex C-u C-c *
2955 @item C-u C-c *
2956 @kindex C-u C-c C-c
2957 @itemx C-u C-c C-c
2958 Recompute the entire table, line by line.  Any lines before the first
2959 hline are left alone, assuming that these are part of the table header.
2961 @orgcmdkkc{C-u C-u C-c *,C-u C-u C-c C-c,org-table-iterate}
2962 Iterate the table by recomputing it until no further changes occur.
2963 This may be necessary if some computed fields use the value of other
2964 fields that are computed @i{later} in the calculation sequence.
2965 @item M-x org-table-recalculate-buffer-tables
2966 @findex org-table-recalculate-buffer-tables
2967 Recompute all tables in the current buffer.
2968 @item M-x org-table-iterate-buffer-tables
2969 @findex org-table-iterate-buffer-tables
2970 Iterate all tables in the current buffer, in order to converge table-to-table
2971 dependencies.
2972 @end table
2974 @node Advanced features,  , Updating the table, The spreadsheet
2975 @subsection Advanced features
2977 If you want the recalculation of fields to happen automatically, or if you
2978 want to be able to assign @i{names}@footnote{Such names must start by an
2979 alphabetic character and use only alphanumeric/underscore characters.} to
2980 fields and columns, you need to reserve the first column of the table for
2981 special marking characters.
2983 @table @kbd
2984 @orgcmd{C-#,org-table-rotate-recalc-marks}
2985 Rotate the calculation mark in first column through the states @samp{ },
2986 @samp{#}, @samp{*}, @samp{!}, @samp{$}.  When there is an active region,
2987 change all marks in the region.
2988 @end table
2990 Here is an example of a table that collects exam results of students and
2991 makes use of these features:
2993 @example
2994 @group
2995 |---+---------+--------+--------+--------+-------+------|
2996 |   | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
2997 |---+---------+--------+--------+--------+-------+------|
2998 | ! |         |     P1 |     P2 |     P3 |   Tot |      |
2999 | # | Maximum |     10 |     15 |     25 |    50 | 10.0 |
3000 | ^ |         |     m1 |     m2 |     m3 |    mt |      |
3001 |---+---------+--------+--------+--------+-------+------|
3002 | # | Peter   |     10 |      8 |     23 |    41 |  8.2 |
3003 | # | Sam     |      2 |      4 |      3 |     9 |  1.8 |
3004 |---+---------+--------+--------+--------+-------+------|
3005 |   | Average |        |        |        |  25.0 |      |
3006 | ^ |         |        |        |        |    at |      |
3007 | $ | max=50  |        |        |        |       |      |
3008 |---+---------+--------+--------+--------+-------+------|
3009 #+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(@@-II..@@-I);%.1f
3010 @end group
3011 @end example
3013 @noindent @b{Important}: please note that for these special tables,
3014 recalculating the table with @kbd{C-u C-c *} will only affect rows that
3015 are marked @samp{#} or @samp{*}, and fields that have a formula assigned
3016 to the field itself.  The column formulas are not applied in rows with
3017 empty first field.
3019 @cindex marking characters, tables
3020 The marking characters have the following meaning:
3021 @table @samp
3022 @item !
3023 The fields in this line define names for the columns, so that you may
3024 refer to a column as @samp{$Tot} instead of @samp{$6}.
3025 @item ^
3026 This row defines names for the fields @emph{above} the row.  With such
3027 a definition, any formula in the table may use @samp{$m1} to refer to
3028 the value @samp{10}.  Also, if you assign a formula to a names field, it
3029 will be stored as @samp{$name=...}.
3030 @item _
3031 Similar to @samp{^}, but defines names for the fields in the row
3032 @emph{below}.
3033 @item $
3034 Fields in this row can define @emph{parameters} for formulas.  For
3035 example, if a field in a @samp{$} row contains @samp{max=50}, then
3036 formulas in this table can refer to the value 50 using @samp{$max}.
3037 Parameters work exactly like constants, only that they can be defined on
3038 a per-table basis.
3039 @item #
3040 Fields in this row are automatically recalculated when pressing
3041 @key{TAB} or @key{RET} or @kbd{S-@key{TAB}} in this row.  Also, this row
3042 is selected for a global recalculation with @kbd{C-u C-c *}.  Unmarked
3043 lines will be left alone by this command.
3044 @item *
3045 Selects this line for global recalculation with @kbd{C-u C-c *}, but
3046 not for automatic recalculation.  Use this when automatic
3047 recalculation slows down editing too much.
3048 @item @w{ }
3049 Unmarked lines are exempt from recalculation with @kbd{C-u C-c *}.
3050 All lines that should be recalculated should be marked with @samp{#}
3051 or @samp{*}.
3052 @item /
3053 Do not export this line.  Useful for lines that contain the narrowing
3054 @samp{<N>} markers or column group markers.
3055 @end table
3057 Finally, just to whet your appetite for what can be done with the
3058 fantastic @file{calc.el} package, here is a table that computes the Taylor
3059 series of degree @code{n} at location @code{x} for a couple of
3060 functions.
3062 @example
3063 @group
3064 |---+-------------+---+-----+--------------------------------------|
3065 |   | Func        | n | x   | Result                               |
3066 |---+-------------+---+-----+--------------------------------------|
3067 | # | exp(x)      | 1 | x   | 1 + x                                |
3068 | # | exp(x)      | 2 | x   | 1 + x + x^2 / 2                      |
3069 | # | exp(x)      | 3 | x   | 1 + x + x^2 / 2 + x^3 / 6            |
3070 | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
3071 | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2    |
3072 | * | tan(x)      | 3 | x   | 0.0175 x + 1.77e-6 x^3               |
3073 |---+-------------+---+-----+--------------------------------------|
3074 #+TBLFM: $5=taylor($2,$4,$3);n3
3075 @end group
3076 @end example
3078 @node Org-Plot,  , The spreadsheet, Tables
3079 @section Org-Plot
3080 @cindex graph, in tables
3081 @cindex plot tables using Gnuplot
3082 @cindex #+PLOT
3084 Org-Plot can produce 2D and 3D graphs of information stored in org tables
3085 using @file{Gnuplot} @uref{http://www.gnuplot.info/} and @file{gnuplot-mode}
3086 @uref{http://xafs.org/BruceRavel/GnuplotMode}.  To see this in action, ensure
3087 that you have both Gnuplot and Gnuplot mode installed on your system, then
3088 call @code{org-plot/gnuplot} on the following table.
3090 @example
3091 @group
3092 #+PLOT: title:"Citas" ind:1 deps:(3) type:2d with:histograms set:"yrange [0:]"
3093 | Sede      | Max cites | H-index |
3094 |-----------+-----------+---------|
3095 | Chile     |    257.72 |   21.39 |
3096 | Leeds     |    165.77 |   19.68 |
3097 | Sao Paolo |     71.00 |   11.50 |
3098 | Stockholm |    134.19 |   14.33 |
3099 | Morelia   |    257.56 |   17.67 |
3100 @end group
3101 @end example
3103 Notice that Org Plot is smart enough to apply the table's headers as labels.
3104 Further control over the labels, type, content, and appearance of plots can
3105 be exercised through the @code{#+PLOT:} lines preceding a table.  See below
3106 for a complete list of Org-plot options.  For more information and examples
3107 see the Org-plot tutorial at
3108 @uref{http://orgmode.org/worg/org-tutorials/org-plot.html}.
3110 @subsubheading Plot Options
3112 @table @code
3113 @item set
3114 Specify any @command{gnuplot} option to be set when graphing.
3116 @item title
3117 Specify the title of the plot.
3119 @item ind
3120 Specify which column of the table to use as the @code{x} axis.
3122 @item deps
3123 Specify the columns to graph as a Lisp style list, surrounded by parentheses
3124 and separated by spaces for example @code{dep:(3 4)} to graph the third and
3125 fourth columns (defaults to graphing all other columns aside from the @code{ind}
3126 column).
3128 @item type
3129 Specify whether the plot will be @code{2d}, @code{3d}, or @code{grid}.
3131 @item with
3132 Specify a @code{with} option to be inserted for every col being plotted
3133 (e.g., @code{lines}, @code{points}, @code{boxes}, @code{impulses}, etc...).
3134 Defaults to @code{lines}.
3136 @item file
3137 If you want to plot to a file, specify @code{"@var{path/to/desired/output-file}"}.
3139 @item labels
3140 List of labels to be used for the @code{deps} (defaults to the column headers
3141 if they exist).
3143 @item line
3144 Specify an entire line to be inserted in the Gnuplot script.
3146 @item map
3147 When plotting @code{3d} or @code{grid} types, set this to @code{t} to graph a
3148 flat mapping rather than a @code{3d} slope.
3150 @item timefmt
3151 Specify format of Org mode timestamps as they will be parsed by Gnuplot.
3152 Defaults to @samp{%Y-%m-%d-%H:%M:%S}.
3154 @item script
3155 If you want total control, you can specify a script file (place the file name
3156 between double-quotes) which will be used to plot.  Before plotting, every
3157 instance of @code{$datafile} in the specified script will be replaced with
3158 the path to the generated data file.  Note: even if you set this option, you
3159 may still want to specify the plot type, as that can impact the content of
3160 the data file.
3161 @end table
3163 @node Hyperlinks, TODO Items, Tables, Top
3164 @chapter Hyperlinks
3165 @cindex hyperlinks
3167 Like HTML, Org provides links inside a file, external links to
3168 other files, Usenet articles, emails, and much more.
3170 @menu
3171 * Link format::                 How links in Org are formatted
3172 * Internal links::              Links to other places in the current file
3173 * External links::              URL-like links to the world
3174 * Handling links::              Creating, inserting and following
3175 * Using links outside Org::     Linking from my C source code?
3176 * Link abbreviations::          Shortcuts for writing complex links
3177 * Search options::              Linking to a specific location
3178 * Custom searches::             When the default search is not enough
3179 @end menu
3181 @node Link format, Internal links, Hyperlinks, Hyperlinks
3182 @section Link format
3183 @cindex link format
3184 @cindex format, of links
3186 Org will recognize plain URL-like links and activate them as
3187 clickable links.  The general link format, however, looks like this:
3189 @example
3190 [[link][description]]       @r{or alternatively}           [[link]]
3191 @end example
3193 @noindent
3194 Once a link in the buffer is complete (all brackets present), Org
3195 will change the display so that @samp{description} is displayed instead
3196 of @samp{[[link][description]]} and @samp{link} is displayed instead of
3197 @samp{[[link]]}.  Links will be highlighted in the face @code{org-link},
3198 which by default is an underlined face.  You can directly edit the
3199 visible part of a link.  Note that this can be either the @samp{link}
3200 part (if there is no description) or the @samp{description} part.  To
3201 edit also the invisible @samp{link} part, use @kbd{C-c C-l} with the
3202 cursor on the link.
3204 If you place the cursor at the beginning or just behind the end of the
3205 displayed text and press @key{BACKSPACE}, you will remove the
3206 (invisible) bracket at that location.  This makes the link incomplete
3207 and the internals are again displayed as plain text.  Inserting the
3208 missing bracket hides the link internals again.  To show the
3209 internal structure of all links, use the menu entry
3210 @code{Org->Hyperlinks->Literal links}.
3212 @node Internal links, External links, Link format, Hyperlinks
3213 @section Internal links
3214 @cindex internal links
3215 @cindex links, internal
3216 @cindex targets, for links
3218 @cindex property, CUSTOM_ID
3219 If the link does not look like a URL, it is considered to be internal in the
3220 current file.  The most important case is a link like
3221 @samp{[[#my-custom-id]]} which will link to the entry with the
3222 @code{CUSTOM_ID} property @samp{my-custom-id}.  Such custom IDs are very good
3223 for HTML export (@pxref{HTML export}) where they produce pretty section
3224 links.  You are responsible yourself to make sure these custom IDs are unique
3225 in a file.
3227 Links such as @samp{[[My Target]]} or @samp{[[My Target][Find my target]]}
3228 lead to a text search in the current file.
3230 The link can be followed with @kbd{C-c C-o} when the cursor is on the link,
3231 or with a mouse click (@pxref{Handling links}).  Links to custom IDs will
3232 point to the corresponding headline.  The preferred match for a text link is
3233 a @i{dedicated target}: the same string in double angular brackets.  Targets
3234 may be located anywhere; sometimes it is convenient to put them into a
3235 comment line.  For example
3237 @example
3238 # <<My Target>>
3239 @end example
3241 @noindent In HTML export (@pxref{HTML export}), such targets will become
3242 named anchors for direct access through @samp{http} links@footnote{Note that
3243 text before the first headline is usually not exported, so the first such
3244 target should be after the first headline, or in the line directly before the
3245 first headline.}.
3247 If no dedicated target exists, Org will search for a headline that is exactly
3248 the link text but may also include a TODO keyword and tags@footnote{To insert
3249 a link targeting a headline, in-buffer completion can be used.  Just type a
3250 star followed by a few optional letters into the buffer and press
3251 @kbd{M-@key{TAB}}.  All headlines in the current buffer will be offered as
3252 completions.}.  In non-Org files, the search will look for the words in the
3253 link text.  In the above example the search would be for @samp{my target}.
3255 Following a link pushes a mark onto Org's own mark ring.  You can
3256 return to the previous position with @kbd{C-c &}.  Using this command
3257 several times in direct succession goes back to positions recorded
3258 earlier.
3260 @menu
3261 * Radio targets::               Make targets trigger links in plain text
3262 @end menu
3264 @node Radio targets,  , Internal links, Internal links
3265 @subsection Radio targets
3266 @cindex radio targets
3267 @cindex targets, radio
3268 @cindex links, radio targets
3270 Org can automatically turn any occurrences of certain target names
3271 in normal text into a link.  So without explicitly creating a link, the
3272 text connects to the target radioing its position.  Radio targets are
3273 enclosed by triple angular brackets.  For example, a target @samp{<<<My
3274 Target>>>} causes each occurrence of @samp{my target} in normal text to
3275 become activated as a link.  The Org file is scanned automatically
3276 for radio targets only when the file is first loaded into Emacs.  To
3277 update the target list during editing, press @kbd{C-c C-c} with the
3278 cursor on or at a target.
3280 @node External links, Handling links, Internal links, Hyperlinks
3281 @section External links
3282 @cindex links, external
3283 @cindex external links
3284 @cindex links, external
3285 @cindex Gnus links
3286 @cindex BBDB links
3287 @cindex IRC links
3288 @cindex URL links
3289 @cindex file links
3290 @cindex VM links
3291 @cindex RMAIL links
3292 @cindex WANDERLUST links
3293 @cindex MH-E links
3294 @cindex USENET links
3295 @cindex SHELL links
3296 @cindex Info links
3297 @cindex Elisp links
3299 Org supports links to files, websites, Usenet and email messages,
3300 BBDB database entries and links to both IRC conversations and their
3301 logs.  External links are URL-like locators.  They start with a short
3302 identifying string followed by a colon.  There can be no space after
3303 the colon.  The following list shows examples for each link type.
3305 @example
3306 http://www.astro.uva.nl/~dominik          @r{on the web}
3307 doi:10.1000/182                           @r{DOI for an electronic resource}
3308 file:/home/dominik/images/jupiter.jpg     @r{file, absolute path}
3309 /home/dominik/images/jupiter.jpg          @r{same as above}
3310 file:papers/last.pdf                      @r{file, relative path}
3311 ./papers/last.pdf                         @r{same as above}
3312 file:/myself@@some.where:papers/last.pdf   @r{file, path on remote machine}
3313 /myself@@some.where:papers/last.pdf        @r{same as above}
3314 file:sometextfile::NNN                    @r{file, jump to line number}
3315 file:projects.org                         @r{another Org file}
3316 file:projects.org::some words             @r{text search in Org file}@footnote{
3317 The actual behavior of the search will depend on the value of
3318 the variable @code{org-link-search-must-match-exact-headline}.  If its value
3319 is nil, then a fuzzy text search will be done.  If it is t, then only the
3320 exact headline will be matched.  If the value is @code{'query-to-create},
3321 then an exact headline will be searched; if it is not found, then the user
3322 will be queried to create it.}
3323 file:projects.org::*task title            @r{heading search in Org file}
3324 file+sys:/path/to/file                    @r{open via OS, like double-click}
3325 file+emacs:/path/to/file                  @r{force opening by Emacs}
3326 docview:papers/last.pdf::NNN              @r{open in doc-view mode at page}
3327 id:B7423F4D-2E8A-471B-8810-C40F074717E9   @r{Link to heading by ID}
3328 news:comp.emacs                           @r{Usenet link}
3329 mailto:adent@@galaxy.net                   @r{Mail link}
3330 vm:folder                                 @r{VM folder link}
3331 vm:folder#id                              @r{VM message link}
3332 vm://myself@@some.where.org/folder#id      @r{VM on remote machine}
3333 vm-imap:account:folder                    @r{VM IMAP folder link}
3334 vm-imap:account:folder#id                 @r{VM IMAP message link}
3335 wl:folder                                 @r{WANDERLUST folder link}
3336 wl:folder#id                              @r{WANDERLUST message link}
3337 mhe:folder                                @r{MH-E folder link}
3338 mhe:folder#id                             @r{MH-E message link}
3339 rmail:folder                              @r{RMAIL folder link}
3340 rmail:folder#id                           @r{RMAIL message link}
3341 gnus:group                                @r{Gnus group link}
3342 gnus:group#id                             @r{Gnus article link}
3343 bbdb:R.*Stallman                          @r{BBDB link (with regexp)}
3344 irc:/irc.com/#emacs/bob                   @r{IRC link}
3345 info:org#External links                   @r{Info node link}
3346 shell:ls *.org                            @r{A shell command}
3347 elisp:org-agenda                          @r{Interactive Elisp command}
3348 elisp:(find-file-other-frame "Elisp.org") @r{Elisp form to evaluate}
3349 @end example
3351 For customizing Org to add new link types @ref{Adding hyperlink types}.
3353 A link should be enclosed in double brackets and may contain a
3354 descriptive text to be displayed instead of the URL (@pxref{Link
3355 format}), for example:
3357 @example
3358 [[http://www.gnu.org/software/emacs/][GNU Emacs]]
3359 @end example
3361 @noindent
3362 If the description is a file name or URL that points to an image, HTML
3363 export (@pxref{HTML export}) will inline the image as a clickable
3364 button.  If there is no description at all and the link points to an
3365 image,
3366 that image will be inlined into the exported HTML file.
3368 @cindex square brackets, around links
3369 @cindex plain text external links
3370 Org also finds external links in the normal text and activates them
3371 as links.  If spaces must be part of the link (for example in
3372 @samp{bbdb:Richard Stallman}), or if you need to remove ambiguities
3373 about the end of the link, enclose them in square brackets.
3375 @node Handling links, Using links outside Org, External links, Hyperlinks
3376 @section Handling links
3377 @cindex links, handling
3379 Org provides methods to create a link in the correct syntax, to
3380 insert it into an Org file, and to follow the link.
3382 @table @kbd
3383 @orgcmd{C-c l,org-store-link}
3384 @cindex storing links
3385 Store a link to the current location.  This is a @emph{global} command (you
3386 must create the key binding yourself) which can be used in any buffer to
3387 create a link.  The link will be stored for later insertion into an Org
3388 buffer (see below).  What kind of link will be created depends on the current
3389 buffer:
3391 @b{Org mode buffers}@*
3392 For Org files, if there is a @samp{<<target>>} at the cursor, the link points
3393 to the target.  Otherwise it points to the current headline, which will also
3394 be the description@footnote{If the headline contains a timestamp, it will be
3395 removed from the link and result in a wrong link---you should avoid putting
3396 timestamp in the headline.}.
3398 @vindex org-id-link-to-org-use-id
3399 @cindex property, CUSTOM_ID
3400 @cindex property, ID
3401 If the headline has a @code{CUSTOM_ID} property, a link to this custom ID
3402 will be stored.  In addition or alternatively (depending on the value of
3403 @code{org-id-link-to-org-use-id}), a globally unique @code{ID} property will
3404 be created and/or used to construct a link@footnote{The library @code{org-id}
3405 must first be loaded, either through @code{org-customize} by enabling
3406 @code{id} in @code{org-modules} , or by adding @code{(require 'org-id)} in
3407 your @file{.emacs}.}. So using this command in Org
3408 buffers will potentially create two links: a human-readable from the custom
3409 ID, and one that is globally unique and works even if the entry is moved from
3410 file to file.  Later, when inserting the link, you need to decide which one
3411 to use.
3413 @b{Email/News clients: VM, Rmail, Wanderlust, MH-E, Gnus}@*
3414 Pretty much all Emacs mail clients are supported.  The link will point to the
3415 current article, or, in some GNUS buffers, to the group.  The description is
3416 constructed from the author and the subject.
3418 @b{Web browsers: W3 and W3M}@*
3419 Here the link will be the current URL, with the page title as description.
3421 @b{Contacts: BBDB}@*
3422 Links created in a BBDB buffer will point to the current entry.
3424 @b{Chat: IRC}@*
3425 @vindex org-irc-link-to-logs
3426 For IRC links, if you set the variable @code{org-irc-link-to-logs} to
3427 @code{t}, a @samp{file:/} style link to the relevant point in the logs for
3428 the current conversation is created.  Otherwise an @samp{irc:/} style link to
3429 the user/channel/server under the point will be stored.
3431 @b{Other files}@*
3432 For any other files, the link will point to the file, with a search string
3433 (@pxref{Search options}) pointing to the contents of the current line.  If
3434 there is an active region, the selected words will form the basis of the
3435 search string.  If the automatically created link is not working correctly or
3436 accurately enough, you can write custom functions to select the search string
3437 and to do the search for particular file types---see @ref{Custom searches}.
3438 The key binding @kbd{C-c l} is only a suggestion---see @ref{Installation}.
3440 @b{Agenda view}@*
3441 When the cursor is in an agenda view, the created link points to the
3442 entry referenced by the current line.
3445 @orgcmd{C-c C-l,org-insert-link}
3446 @cindex link completion
3447 @cindex completion, of links
3448 @cindex inserting links
3449 @vindex org-keep-stored-link-after-insertion
3450 Insert a link@footnote{ Note that you don't have to use this command to
3451 insert a link.  Links in Org are plain text, and you can type or paste them
3452 straight into the buffer.  By using this command, the links are automatically
3453 enclosed in double brackets, and you will be asked for the optional
3454 descriptive text.}.  This prompts for a link to be inserted into the buffer.
3455 You can just type a link, using text for an internal link, or one of the link
3456 type prefixes mentioned in the examples above.  The link will be inserted
3457 into the buffer@footnote{After insertion of a stored link, the link will be
3458 removed from the list of stored links.  To keep it in the list later use, use
3459 a triple @kbd{C-u} prefix argument to @kbd{C-c C-l}, or configure the option
3460 @code{org-keep-stored-link-after-insertion}.}, along with a descriptive text.
3461 If some text was selected when this command is called, the selected text
3462 becomes the default description.
3464 @b{Inserting stored links}@*
3465 All links stored during the
3466 current session are part of the history for this prompt, so you can access
3467 them with @key{up} and @key{down} (or @kbd{M-p/n}).
3469 @b{Completion support}@* Completion with @key{TAB} will help you to insert
3470 valid link prefixes like @samp{http:} or @samp{ftp:}, including the prefixes
3471 defined through link abbreviations (@pxref{Link abbreviations}).  If you
3472 press @key{RET} after inserting only the @var{prefix}, Org will offer
3473 specific completion support for some link types@footnote{This works by
3474 calling a special function @code{org-PREFIX-complete-link}.}  For
3475 example, if you type @kbd{file @key{RET}}, file name completion (alternative
3476 access: @kbd{C-u C-c C-l}, see below) will be offered, and after @kbd{bbdb
3477 @key{RET}} you can complete contact names.
3478 @orgkey C-u C-c C-l
3479 @cindex file name completion
3480 @cindex completion, of file names
3481 When @kbd{C-c C-l} is called with a @kbd{C-u} prefix argument, a link to
3482 a file will be inserted and you may use file name completion to select
3483 the name of the file.  The path to the file is inserted relative to the
3484 directory of the current Org file, if the linked file is in the current
3485 directory or in a sub-directory of it, or if the path is written relative
3486 to the current directory using @samp{../}.  Otherwise an absolute path
3487 is used, if possible with @samp{~/} for your home directory.  You can
3488 force an absolute path with two @kbd{C-u} prefixes.
3490 @item C-c C-l @ @r{(with cursor on existing link)}
3491 When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the
3492 link and description parts of the link.
3494 @cindex following links
3495 @orgcmd{C-c C-o,org-open-at-point}
3496 @vindex org-file-apps
3497 @vindex org-link-frame-setup
3498 Open link at point.  This will launch a web browser for URLs (using
3499 @command{browse-url-at-point}), run VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for
3500 the corresponding links, and execute the command in a shell link.  When the
3501 cursor is on an internal link, this command runs the corresponding search.
3502 When the cursor is on a TAG list in a headline, it creates the corresponding
3503 TAGS view.  If the cursor is on a timestamp, it compiles the agenda for that
3504 date.  Furthermore, it will visit text and remote files in @samp{file:} links
3505 with Emacs and select a suitable application for local non-text files.
3506 Classification of files is based on file extension only.  See option
3507 @code{org-file-apps}.  If you want to override the default application and
3508 visit the file with Emacs, use a @kbd{C-u} prefix.  If you want to avoid
3509 opening in Emacs, use a @kbd{C-u C-u} prefix.@*
3510 If the cursor is on a headline, but not on a link, offer all links in the
3511 headline and entry text.  If you want to setup the frame configuration for
3512 following links, customize @code{org-link-frame-setup}.
3514 @orgkey @key{RET}
3515 @vindex org-return-follows-link
3516 When @code{org-return-follows-link} is set, @kbd{@key{RET}} will also follow
3517 the link at point.
3519 @kindex mouse-2
3520 @kindex mouse-1
3521 @item mouse-2
3522 @itemx mouse-1
3523 On links, @kbd{mouse-2} will open the link just as @kbd{C-c C-o}
3524 would.  Under Emacs 22 and later, @kbd{mouse-1} will also follow a link.
3526 @kindex mouse-3
3527 @item mouse-3
3528 @vindex org-display-internal-link-with-indirect-buffer
3529 Like @kbd{mouse-2}, but force file links to be opened with Emacs, and
3530 internal links to be displayed in another window@footnote{See the
3531 variable @code{org-display-internal-link-with-indirect-buffer}}.
3533 @orgcmd{C-c C-x C-v,org-toggle-inline-images}
3534 @cindex inlining images
3535 @cindex images, inlining
3536 @vindex org-startup-with-inline-images
3537 @cindex @code{inlineimages}, STARTUP keyword
3538 @cindex @code{noinlineimages}, STARTUP keyword
3539 Toggle the inline display of linked images.  Normally this will only inline
3540 images that have no description part in the link, i.e., images that will also
3541 be inlined during export.  When called with a prefix argument, also display
3542 images that do have a link description.  You can ask for inline images to be
3543 displayed at startup by configuring the variable
3544 @code{org-startup-with-inline-images}@footnote{with corresponding
3545 @code{#+STARTUP} keywords @code{inlineimages} and @code{inlineimages}}.
3546 @orgcmd{C-c %,org-mark-ring-push}
3547 @cindex mark ring
3548 Push the current position onto the mark ring, to be able to return
3549 easily.  Commands following an internal link do this automatically.
3551 @orgcmd{C-c &,org-mark-ring-goto}
3552 @cindex links, returning to
3553 Jump back to a recorded position.  A position is recorded by the
3554 commands following internal links, and by @kbd{C-c %}.  Using this
3555 command several times in direct succession moves through a ring of
3556 previously recorded positions.
3558 @orgcmdkkcc{C-c C-x C-n,C-c C-x C-p,org-next-link,org-previous-link}
3559 @cindex links, finding next/previous
3560 Move forward/backward to the next link in the buffer.  At the limit of
3561 the buffer, the search fails once, and then wraps around.  The key
3562 bindings for this are really too long; you might want to bind this also
3563 to @kbd{C-n} and @kbd{C-p}
3564 @lisp
3565 (add-hook 'org-load-hook
3566   (lambda ()
3567     (define-key org-mode-map "\C-n" 'org-next-link)
3568     (define-key org-mode-map "\C-p" 'org-previous-link)))
3569 @end lisp
3570 @end table
3572 @node Using links outside Org, Link abbreviations, Handling links, Hyperlinks
3573 @section Using links outside Org
3575 You can insert and follow links that have Org syntax not only in
3576 Org, but in any Emacs buffer.  For this, you should create two
3577 global commands, like this (please select suitable global keys
3578 yourself):
3580 @lisp
3581 (global-set-key "\C-c L" 'org-insert-link-global)
3582 (global-set-key "\C-c o" 'org-open-at-point-global)
3583 @end lisp
3585 @node Link abbreviations, Search options, Using links outside Org, Hyperlinks
3586 @section Link abbreviations
3587 @cindex link abbreviations
3588 @cindex abbreviation, links
3590 Long URLs can be cumbersome to type, and often many similar links are
3591 needed in a document.  For this you can use link abbreviations.  An
3592 abbreviated link looks like this
3594 @example
3595 [[linkword:tag][description]]
3596 @end example
3598 @noindent
3599 @vindex org-link-abbrev-alist
3600 where the tag is optional.
3601 The @i{linkword} must be a word, starting with a letter, followed by
3602 letters, numbers, @samp{-}, and @samp{_}.  Abbreviations are resolved
3603 according to the information in the variable @code{org-link-abbrev-alist}
3604 that relates the linkwords to replacement text.  Here is an example:
3606 @smalllisp
3607 @group
3608 (setq org-link-abbrev-alist
3609   '(("bugzilla"  . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
3610     ("url-to-ja" . "http://translate.google.fr/translate?sl=en&tl=ja&u=%h")
3611     ("google"    . "http://www.google.com/search?q=")
3612     ("gmap"      . "http://maps.google.com/maps?q=%s")
3613     ("omap"      . "http://nominatim.openstreetmap.org/search?q=%s&polygon=1")
3614     ("ads"       . "http://adsabs.harvard.edu/cgi-bin/nph-abs_connect?author=%s&db_key=AST")))
3615 @end group
3616 @end smalllisp
3618 If the replacement text contains the string @samp{%s}, it will be
3619 replaced with the tag.  Using @samp{%h} instead of @samp{%s} will
3620 url-encode the tag (see the example above, where we need to encode
3621 the URL parameter.)  Using @samp{%(my-function)} will pass the tag
3622 to a custom function, and replace it by the resulting string.
3624 If the replacement text don't contain any specifier, it will simply
3625 be appended to the string in order to create the link.
3627 Instead of a string, you may also specify a function that will be
3628 called with the tag as the only argument to create the link.
3630 With the above setting, you could link to a specific bug with
3631 @code{[[bugzilla:129]]}, search the web for @samp{OrgMode} with
3632 @code{[[google:OrgMode]]}, show the map location of the Free Software
3633 Foundation @code{[[gmap:51 Franklin Street, Boston]]} or of Carsten office
3634 @code{[[omap:Science Park 904, Amsterdam, The Netherlands]]} and find out
3635 what the Org author is doing besides Emacs hacking with
3636 @code{[[ads:Dominik,C]]}.
3638 If you need special abbreviations just for a single Org buffer, you
3639 can define them in the file with
3641 @cindex #+LINK
3642 @example
3643 #+LINK: bugzilla  http://10.1.2.9/bugzilla/show_bug.cgi?id=
3644 #+LINK: google    http://www.google.com/search?q=%s
3645 @end example
3647 @noindent
3648 In-buffer completion (@pxref{Completion}) can be used after @samp{[} to
3649 complete link abbreviations.  You may also define a function
3650 @code{org-PREFIX-complete-link} that implements special (e.g., completion)
3651 support for inserting such a link with @kbd{C-c C-l}.  Such a function should
3652 not accept any arguments, and return the full link with prefix.
3654 @node Search options, Custom searches, Link abbreviations, Hyperlinks
3655 @section Search options in file links
3656 @cindex search option in file links
3657 @cindex file links, searching
3659 File links can contain additional information to make Emacs jump to a
3660 particular location in the file when following a link.  This can be a
3661 line number or a search option after a double@footnote{For backward
3662 compatibility, line numbers can also follow a single colon.} colon.  For
3663 example, when the command @kbd{C-c l} creates a link (@pxref{Handling
3664 links}) to a file, it encodes the words in the current line as a search
3665 string that can be used to find this line back later when following the
3666 link with @kbd{C-c C-o}.
3668 Here is the syntax of the different ways to attach a search to a file
3669 link, together with an explanation:
3671 @example
3672 [[file:~/code/main.c::255]]
3673 [[file:~/xx.org::My Target]]
3674 [[file:~/xx.org::*My Target]]
3675 [[file:~/xx.org::#my-custom-id]]
3676 [[file:~/xx.org::/regexp/]]
3677 @end example
3679 @table @code
3680 @item 255
3681 Jump to line 255.
3682 @item My Target
3683 Search for a link target @samp{<<My Target>>}, or do a text search for
3684 @samp{my target}, similar to the search in internal links, see
3685 @ref{Internal links}.  In HTML export (@pxref{HTML export}), such a file
3686 link will become a HTML reference to the corresponding named anchor in
3687 the linked file.
3688 @item *My Target
3689 In an Org file, restrict search to headlines.
3690 @item #my-custom-id
3691 Link to a heading with a @code{CUSTOM_ID} property
3692 @item /regexp/
3693 Do a regular expression search for @code{regexp}.  This uses the Emacs
3694 command @code{occur} to list all matches in a separate window.  If the
3695 target file is in Org mode, @code{org-occur} is used to create a
3696 sparse tree with the matches.
3697 @c If the target file is a directory,
3698 @c @code{grep} will be used to search all files in the directory.
3699 @end table
3701 As a degenerate case, a file link with an empty file name can be used
3702 to search the current file.  For example, @code{[[file:::find me]]} does
3703 a search for @samp{find me} in the current file, just as
3704 @samp{[[find me]]} would.
3706 @node Custom searches,  , Search options, Hyperlinks
3707 @section Custom Searches
3708 @cindex custom search strings
3709 @cindex search strings, custom
3711 The default mechanism for creating search strings and for doing the
3712 actual search related to a file link may not work correctly in all
3713 cases.  For example, Bib@TeX{} database files have many entries like
3714 @samp{year="1993"} which would not result in good search strings,
3715 because the only unique identification for a Bib@TeX{} entry is the
3716 citation key.
3718 @vindex org-create-file-search-functions
3719 @vindex org-execute-file-search-functions
3720 If you come across such a problem, you can write custom functions to set
3721 the right search string for a particular file type, and to do the search
3722 for the string in the file.  Using @code{add-hook}, these functions need
3723 to be added to the hook variables
3724 @code{org-create-file-search-functions} and
3725 @code{org-execute-file-search-functions}.  See the docstring for these
3726 variables for more information.  Org actually uses this mechanism
3727 for Bib@TeX{} database files, and you can use the corresponding code as
3728 an implementation example.  See the file @file{org-bibtex.el}.
3730 @node TODO Items, Tags, Hyperlinks, Top
3731 @chapter TODO items
3732 @cindex TODO items
3734 Org mode does not maintain TODO lists as separate documents@footnote{Of
3735 course, you can make a document that contains only long lists of TODO items,
3736 but this is not required.}.  Instead, TODO items are an integral part of the
3737 notes file, because TODO items usually come up while taking notes!  With Org
3738 mode, simply mark any entry in a tree as being a TODO item.  In this way,
3739 information is not duplicated, and the entire context from which the TODO
3740 item emerged is always present.
3742 Of course, this technique for managing TODO items scatters them
3743 throughout your notes file.  Org mode compensates for this by providing
3744 methods to give you an overview of all the things that you have to do.
3746 @menu
3747 * TODO basics::                 Marking and displaying TODO entries
3748 * TODO extensions::             Workflow and assignments
3749 * Progress logging::            Dates and notes for progress
3750 * Priorities::                  Some things are more important than others
3751 * Breaking down tasks::         Splitting a task into manageable pieces
3752 * Checkboxes::                  Tick-off lists
3753 @end menu
3755 @node TODO basics, TODO extensions, TODO Items, TODO Items
3756 @section Basic TODO functionality
3758 Any headline becomes a TODO item when it starts with the word
3759 @samp{TODO}, for example:
3761 @example
3762 *** TODO Write letter to Sam Fortune
3763 @end example
3765 @noindent
3766 The most important commands to work with TODO entries are:
3768 @table @kbd
3769 @orgcmd{C-c C-t,org-todo}
3770 @cindex cycling, of TODO states
3771 @vindex org-use-fast-todo-selection
3773 Rotate the TODO state of the current item among
3775 @example
3776 ,-> (unmarked) -> TODO -> DONE --.
3777 '--------------------------------'
3778 @end example
3780 If TODO keywords have fast access keys (see @ref{Fast access to TODO
3781 states}), you will be prompted for a TODO keyword through the fast selection
3782 interface; this is the default behavior when
3783 @var{org-use-fast-todo-selection} is @code{non-nil}.
3785 The same rotation can also be done ``remotely'' from the timeline and agenda
3786 buffers with the @kbd{t} command key (@pxref{Agenda commands}).
3788 @orgkey{C-u C-c C-t}
3789 When TODO keywords have no selection keys, select a specific keyword using
3790 completion; otherwise force cycling through TODO states with no prompt.  When
3791 @var{org-use-fast-todo-selection} is set to @code{prefix}, use the fast
3792 selection interface.
3794 @kindex S-@key{right}
3795 @kindex S-@key{left}
3796 @item S-@key{right} @ @r{/} @ S-@key{left}
3797 @vindex org-treat-S-cursor-todo-selection-as-state-change
3798 Select the following/preceding TODO state, similar to cycling.  Useful
3799 mostly if more than two TODO states are possible (@pxref{TODO
3800 extensions}).  See also @ref{Conflicts}, for a discussion of the interaction
3801 with @code{shift-selection-mode}.  See also the variable
3802 @code{org-treat-S-cursor-todo-selection-as-state-change}.
3803 @orgcmd{C-c / t,org-show-todo-tree}
3804 @cindex sparse tree, for TODO
3805 @vindex org-todo-keywords
3806 View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}).  Folds the
3807 entire buffer, but shows all TODO items (with not-DONE state) and the
3808 headings hierarchy above them.  With a prefix argument (or by using @kbd{C-c
3809 / T}), search for a specific TODO@.  You will be prompted for the keyword, and
3810 you can also give a list of keywords like @code{KWD1|KWD2|...} to list
3811 entries that match any one of these keywords.  With a numeric prefix argument
3812 N, show the tree for the Nth keyword in the variable
3813 @code{org-todo-keywords}.  With two prefix arguments, find all TODO states,
3814 both un-done and done.
3815 @orgcmd{C-c a t,org-todo-list}
3816 Show the global TODO list.  Collects the TODO items (with not-DONE states)
3817 from all agenda files (@pxref{Agenda Views}) into a single buffer.  The new
3818 buffer will be in @code{agenda-mode}, which provides commands to examine and
3819 manipulate the TODO entries from the new buffer (@pxref{Agenda commands}).
3820 @xref{Global TODO list}, for more information.
3821 @orgcmd{S-M-@key{RET},org-insert-todo-heading}
3822 Insert a new TODO entry below the current one.
3823 @end table
3825 @noindent
3826 @vindex org-todo-state-tags-triggers
3827 Changing a TODO state can also trigger tag changes.  See the docstring of the
3828 option @code{org-todo-state-tags-triggers} for details.
3830 @node TODO extensions, Progress logging, TODO basics, TODO Items
3831 @section Extended use of TODO keywords
3832 @cindex extended TODO keywords
3834 @vindex org-todo-keywords
3835 By default, marked TODO entries have one of only two states: TODO and
3836 DONE@.  Org mode allows you to classify TODO items in more complex ways
3837 with @emph{TODO keywords} (stored in @code{org-todo-keywords}).  With
3838 special setup, the TODO keyword system can work differently in different
3839 files.
3841 Note that @i{tags} are another way to classify headlines in general and
3842 TODO items in particular (@pxref{Tags}).
3844 @menu
3845 * Workflow states::             From TODO to DONE in steps
3846 * TODO types::                  I do this, Fred does the rest
3847 * Multiple sets in one file::   Mixing it all, and still finding your way
3848 * Fast access to TODO states::  Single letter selection of a state
3849 * Per-file keywords::           Different files, different requirements
3850 * Faces for TODO keywords::     Highlighting states
3851 * TODO dependencies::           When one task needs to wait for others
3852 @end menu
3854 @node Workflow states, TODO types, TODO extensions, TODO extensions
3855 @subsection TODO keywords as workflow states
3856 @cindex TODO workflow
3857 @cindex workflow states as TODO keywords
3859 You can use TODO keywords to indicate different @emph{sequential} states
3860 in the process of working on an item, for example@footnote{Changing
3861 this variable only becomes effective after restarting Org mode in a
3862 buffer.}:
3864 @lisp
3865 (setq org-todo-keywords
3866   '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
3867 @end lisp
3869 The vertical bar separates the TODO keywords (states that @emph{need
3870 action}) from the DONE states (which need @emph{no further action}).  If
3871 you don't provide the separator bar, the last state is used as the DONE
3872 state.
3873 @cindex completion, of TODO keywords
3874 With this setup, the command @kbd{C-c C-t} will cycle an entry from TODO
3875 to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED@.  You may
3876 also use a numeric prefix argument to quickly select a specific state.  For
3877 example @kbd{C-3 C-c C-t} will change the state immediately to VERIFY@.
3878 Or you can use @kbd{S-@key{left}} to go backward through the sequence.  If you
3879 define many keywords, you can use in-buffer completion
3880 (@pxref{Completion}) or even a special one-key selection scheme
3881 (@pxref{Fast access to TODO states}) to insert these words into the
3882 buffer.  Changing a TODO state can be logged with a timestamp, see
3883 @ref{Tracking TODO state changes}, for more information.
3885 @node TODO types, Multiple sets in one file, Workflow states, TODO extensions
3886 @subsection TODO keywords as types
3887 @cindex TODO types
3888 @cindex names as TODO keywords
3889 @cindex types as TODO keywords
3891 The second possibility is to use TODO keywords to indicate different
3892 @emph{types} of action items.  For example, you might want to indicate
3893 that items are for ``work'' or ``home''.  Or, when you work with several
3894 people on a single project, you might want to assign action items
3895 directly to persons, by using their names as TODO keywords.  This would
3896 be set up like this:
3898 @lisp
3899 (setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
3900 @end lisp
3902 In this case, different keywords do not indicate a sequence, but rather
3903 different types.  So the normal work flow would be to assign a task to a
3904 person, and later to mark it DONE@.  Org mode supports this style by adapting
3905 the workings of the command @kbd{C-c C-t}@footnote{This is also true for the
3906 @kbd{t} command in the timeline and agenda buffers.}.  When used several
3907 times in succession, it will still cycle through all names, in order to first
3908 select the right type for a task.  But when you return to the item after some
3909 time and execute @kbd{C-c C-t} again, it will switch from any name directly
3910 to DONE@.  Use prefix arguments or completion to quickly select a specific
3911 name.  You can also review the items of a specific TODO type in a sparse tree
3912 by using a numeric prefix to @kbd{C-c / t}.  For example, to see all things
3913 Lucy has to do, you would use @kbd{C-3 C-c / t}.  To collect Lucy's items
3914 from all agenda files into a single buffer, you would use the numeric prefix
3915 argument as well when creating the global TODO list: @kbd{C-3 C-c a t}.
3917 @node Multiple sets in one file, Fast access to TODO states, TODO types, TODO extensions
3918 @subsection Multiple keyword sets in one file
3919 @cindex TODO keyword sets
3921 Sometimes you may want to use different sets of TODO keywords in
3922 parallel.  For example, you may want to have the basic
3923 @code{TODO}/@code{DONE}, but also a workflow for bug fixing, and a
3924 separate state indicating that an item has been canceled (so it is not
3925 DONE, but also does not require action).  Your setup would then look
3926 like this:
3928 @lisp
3929 (setq org-todo-keywords
3930       '((sequence "TODO" "|" "DONE")
3931         (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
3932         (sequence "|" "CANCELED")))
3933 @end lisp
3935 The keywords should all be different, this helps Org mode to keep track
3936 of which subsequence should be used for a given entry.  In this setup,
3937 @kbd{C-c C-t} only operates within a subsequence, so it switches from
3938 @code{DONE} to (nothing) to @code{TODO}, and from @code{FIXED} to
3939 (nothing) to @code{REPORT}.  Therefore you need a mechanism to initially
3940 select the correct sequence.  Besides the obvious ways like typing a
3941 keyword or using completion, you may also apply the following commands:
3943 @table @kbd
3944 @kindex C-S-@key{right}
3945 @kindex C-S-@key{left}
3946 @kindex C-u C-u C-c C-t
3947 @item C-u C-u C-c C-t
3948 @itemx C-S-@key{right}
3949 @itemx C-S-@key{left}
3950 These keys jump from one TODO subset to the next.  In the above example,
3951 @kbd{C-u C-u C-c C-t} or @kbd{C-S-@key{right}} would jump from @code{TODO} or
3952 @code{DONE} to @code{REPORT}, and any of the words in the second row to
3953 @code{CANCELED}.  Note that the @kbd{C-S-} key binding conflict with
3954 @code{shift-selection-mode} (@pxref{Conflicts}).
3955 @kindex S-@key{right}
3956 @kindex S-@key{left}
3957 @item S-@key{right}
3958 @itemx S-@key{left}
3959 @kbd{S-@key{<left>}} and @kbd{S-@key{<right>}} and walk through @emph{all}
3960 keywords from all sets, so for example @kbd{S-@key{<right>}} would switch
3961 from @code{DONE} to @code{REPORT} in the example above.  See also
3962 @ref{Conflicts}, for a discussion of the interaction with
3963 @code{shift-selection-mode}.
3964 @end table
3966 @node Fast access to TODO states, Per-file keywords, Multiple sets in one file, TODO extensions
3967 @subsection Fast access to TODO states
3969 If you would like to quickly change an entry to an arbitrary TODO state
3970 instead of cycling through the states, you can set up keys for single-letter
3971 access to the states.  This is done by adding the selection character after
3972 each keyword, in parentheses@footnote{All characters are allowed except
3973 @code{@@^!}, which have a special meaning here.}.  For example:
3975 @lisp
3976 (setq org-todo-keywords
3977       '((sequence "TODO(t)" "|" "DONE(d)")
3978         (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
3979         (sequence "|" "CANCELED(c)")))
3980 @end lisp
3982 @vindex org-fast-tag-selection-include-todo
3983 If you then press @kbd{C-c C-t} followed by the selection key, the entry
3984 will be switched to this state.  @kbd{SPC} can be used to remove any TODO
3985 keyword from an entry.@footnote{Check also the variable
3986 @code{org-fast-tag-selection-include-todo}, it allows you to change the TODO
3987 state through the tags interface (@pxref{Setting tags}), in case you like to
3988 mingle the two concepts.  Note that this means you need to come up with
3989 unique keys across both sets of keywords.}
3991 @node Per-file keywords, Faces for TODO keywords, Fast access to TODO states, TODO extensions
3992 @subsection Setting up keywords for individual files
3993 @cindex keyword options
3994 @cindex per-file keywords
3995 @cindex #+TODO
3996 @cindex #+TYP_TODO
3997 @cindex #+SEQ_TODO
3999 It can be very useful to use different aspects of the TODO mechanism in
4000 different files.  For file-local settings, you need to add special lines
4001 to the file which set the keywords and interpretation for that file
4002 only.  For example, to set one of the two examples discussed above, you
4003 need one of the following lines, starting in column zero anywhere in the
4004 file:
4006 @example
4007 #+TODO: TODO FEEDBACK VERIFY | DONE CANCELED
4008 @end example
4009 @noindent (you may also write @code{#+SEQ_TODO} to be explicit about the
4010 interpretation, but it means the same as @code{#+TODO}), or
4011 @example
4012 #+TYP_TODO: Fred Sara Lucy Mike | DONE
4013 @end example
4015 A setup for using several sets in parallel would be:
4017 @example
4018 #+TODO: TODO | DONE
4019 #+TODO: REPORT BUG KNOWNCAUSE | FIXED
4020 #+TODO: | CANCELED
4021 @end example
4023 @cindex completion, of option keywords
4024 @kindex M-@key{TAB}
4025 @noindent To make sure you are using the correct keyword, type
4026 @samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
4028 @cindex DONE, final TODO keyword
4029 Remember that the keywords after the vertical bar (or the last keyword
4030 if no bar is there) must always mean that the item is DONE (although you
4031 may use a different word).  After changing one of these lines, use
4032 @kbd{C-c C-c} with the cursor still in the line to make the changes
4033 known to Org mode@footnote{Org mode parses these lines only when
4034 Org mode is activated after visiting a file.  @kbd{C-c C-c} with the
4035 cursor in a line starting with @samp{#+} is simply restarting Org mode
4036 for the current buffer.}.
4038 @node Faces for TODO keywords, TODO dependencies, Per-file keywords, TODO extensions
4039 @subsection Faces for TODO keywords
4040 @cindex faces, for TODO keywords
4042 @vindex org-todo @r{(face)}
4043 @vindex org-done @r{(face)}
4044 @vindex org-todo-keyword-faces
4045 Org mode highlights TODO keywords with special faces: @code{org-todo}
4046 for keywords indicating that an item still has to be acted upon, and
4047 @code{org-done} for keywords indicating that an item is finished.  If
4048 you are using more than 2 different states, you might want to use
4049 special faces for some of them.  This can be done using the variable
4050 @code{org-todo-keyword-faces}.  For example:
4052 @lisp
4053 @group
4054 (setq org-todo-keyword-faces
4055       '(("TODO" . org-warning) ("STARTED" . "yellow")
4056         ("CANCELED" . (:foreground "blue" :weight bold))))
4057 @end group
4058 @end lisp
4060 While using a list with face properties as shown for CANCELED @emph{should}
4061 work, this does not always seem to be the case.  If necessary, define a
4062 special face and use that.  A string is interpreted as a color.  The variable
4063 @code{org-faces-easy-properties} determines if that color is interpreted as a
4064 foreground or a background color.
4066 @node TODO dependencies,  , Faces for TODO keywords, TODO extensions
4067 @subsection TODO dependencies
4068 @cindex TODO dependencies
4069 @cindex dependencies, of TODO states
4071 @vindex org-enforce-todo-dependencies
4072 @cindex property, ORDERED
4073 The structure of Org files (hierarchy and lists) makes it easy to define TODO
4074 dependencies.  Usually, a parent TODO task should not be marked DONE until
4075 all subtasks (defined as children tasks) are marked as DONE@.  And sometimes
4076 there is a logical sequence to a number of (sub)tasks, so that one task
4077 cannot be acted upon before all siblings above it are done.  If you customize
4078 the variable @code{org-enforce-todo-dependencies}, Org will block entries
4079 from changing state to DONE while they have children that are not DONE@.
4080 Furthermore, if an entry has a property @code{ORDERED}, each of its children
4081 will be blocked until all earlier siblings are marked DONE@.  Here is an
4082 example:
4084 @example
4085 * TODO Blocked until (two) is done
4086 ** DONE one
4087 ** TODO two
4089 * Parent
4090   :PROPERTIES:
4091   :ORDERED: t
4092   :END:
4093 ** TODO a
4094 ** TODO b, needs to wait for (a)
4095 ** TODO c, needs to wait for (a) and (b)
4096 @end example
4098 @table @kbd
4099 @orgcmd{C-c C-x o,org-toggle-ordered-property}
4100 @vindex org-track-ordered-property-with-tag
4101 @cindex property, ORDERED
4102 Toggle the @code{ORDERED} property of the current entry.  A property is used
4103 for this behavior because this should be local to the current entry, not
4104 inherited like a tag.  However, if you would like to @i{track} the value of
4105 this property with a tag for better visibility, customize the variable
4106 @code{org-track-ordered-property-with-tag}.
4107 @orgkey{C-u C-u C-u C-c C-t}
4108 Change TODO state, circumventing any state blocking.
4109 @end table
4111 @vindex org-agenda-dim-blocked-tasks
4112 If you set the variable @code{org-agenda-dim-blocked-tasks}, TODO entries
4113 that cannot be closed because of such dependencies will be shown in a dimmed
4114 font or even made invisible in agenda views (@pxref{Agenda Views}).
4116 @cindex checkboxes and TODO dependencies
4117 @vindex org-enforce-todo-dependencies
4118 You can also block changes of TODO states by looking at checkboxes
4119 (@pxref{Checkboxes}).  If you set the variable
4120 @code{org-enforce-todo-checkbox-dependencies}, an entry that has unchecked
4121 checkboxes will be blocked from switching to DONE.
4123 If you need more complex dependency structures, for example dependencies
4124 between entries in different trees or files, check out the contributed
4125 module @file{org-depend.el}.
4127 @page
4128 @node Progress logging, Priorities, TODO extensions, TODO Items
4129 @section Progress logging
4130 @cindex progress logging
4131 @cindex logging, of progress
4133 Org mode can automatically record a timestamp and possibly a note when
4134 you mark a TODO item as DONE, or even each time you change the state of
4135 a TODO item.  This system is highly configurable; settings can be on a
4136 per-keyword basis and can be localized to a file or even a subtree.  For
4137 information on how to clock working time for a task, see @ref{Clocking
4138 work time}.
4140 @menu
4141 * Closing items::               When was this entry marked DONE?
4142 * Tracking TODO state changes::  When did the status change?
4143 * Tracking your habits::        How consistent have you been?
4144 @end menu
4146 @node Closing items, Tracking TODO state changes, Progress logging, Progress logging
4147 @subsection Closing items
4149 The most basic logging is to keep track of @emph{when} a certain TODO
4150 item was finished.  This is achieved with@footnote{The corresponding
4151 in-buffer setting is: @code{#+STARTUP: logdone}}
4153 @lisp
4154 (setq org-log-done 'time)
4155 @end lisp
4157 @noindent
4158 Then each time you turn an entry from a TODO (not-done) state into any
4159 of the DONE states, a line @samp{CLOSED: [timestamp]} will be inserted
4160 just after the headline.  If you turn the entry back into a TODO item
4161 through further state cycling, that line will be removed again.  If you
4162 want to record a note along with the timestamp, use@footnote{The
4163 corresponding in-buffer setting is: @code{#+STARTUP: lognotedone}}
4165 @lisp
4166 (setq org-log-done 'note)
4167 @end lisp
4169 @noindent
4170 You will then be prompted for a note, and that note will be stored below
4171 the entry with a @samp{Closing Note} heading.
4173 In the timeline (@pxref{Timeline}) and in the agenda
4174 (@pxref{Weekly/daily agenda}), you can then use the @kbd{l} key to
4175 display the TODO items with a @samp{CLOSED} timestamp on each day,
4176 giving you an overview of what has been done.
4178 @node Tracking TODO state changes, Tracking your habits, Closing items, Progress logging
4179 @subsection Tracking TODO state changes
4180 @cindex drawer, for state change recording
4182 @vindex org-log-states-order-reversed
4183 @vindex org-log-into-drawer
4184 @cindex property, LOG_INTO_DRAWER
4185 When TODO keywords are used as workflow states (@pxref{Workflow states}), you
4186 might want to keep track of when a state change occurred and maybe take a
4187 note about this change.  You can either record just a timestamp, or a
4188 time-stamped note for a change.  These records will be inserted after the
4189 headline as an itemized list, newest first@footnote{See the variable
4190 @code{org-log-states-order-reversed}}.  When taking a lot of notes, you might
4191 want to get the notes out of the way into a drawer (@pxref{Drawers}).
4192 Customize the variable @code{org-log-into-drawer} to get this behavior---the
4193 recommended drawer for this is called @code{LOGBOOK}@footnote{Note that the
4194 @code{LOGBOOK} drawer is unfolded when pressing @key{SPC} in the agenda to
4195 show an entry---use @key{C-u SPC} to keep it folded here}.  You can also
4196 overrule the setting of this variable for a subtree by setting a
4197 @code{LOG_INTO_DRAWER} property.
4199 Since it is normally too much to record a note for every state, Org mode
4200 expects configuration on a per-keyword basis for this.  This is achieved by
4201 adding special markers @samp{!} (for a timestamp) or @samp{@@} (for a note
4202 with timestamp) in parentheses after each keyword.  For example, with the
4203 setting
4205 @lisp
4206 (setq org-todo-keywords
4207   '((sequence "TODO(t)" "WAIT(w@@/!)" "|" "DONE(d!)" "CANCELED(c@@)")))
4208 @end lisp
4210 To record a timestamp without a note for TODO keywords configured with
4211 @samp{@@}, just type @kbd{C-c C-c} to enter a blank note when prompted.
4213 @noindent
4214 @vindex org-log-done
4215 you not only define global TODO keywords and fast access keys, but also
4216 request that a time is recorded when the entry is set to
4217 DONE@footnote{It is possible that Org mode will record two timestamps
4218 when you are using both @code{org-log-done} and state change logging.
4219 However, it will never prompt for two notes---if you have configured
4220 both, the state change recording note will take precedence and cancel
4221 the @samp{Closing Note}.}, and that a note is recorded when switching to
4222 WAIT or CANCELED@.  The setting for WAIT is even more special: the
4223 @samp{!} after the slash means that in addition to the note taken when
4224 entering the state, a timestamp should be recorded when @i{leaving} the
4225 WAIT state, if and only if the @i{target} state does not configure
4226 logging for entering it.  So it has no effect when switching from WAIT
4227 to DONE, because DONE is configured to record a timestamp only.  But
4228 when switching from WAIT back to TODO, the @samp{/!} in the WAIT
4229 setting now triggers a timestamp even though TODO has no logging
4230 configured.
4232 You can use the exact same syntax for setting logging preferences local
4233 to a buffer:
4234 @example
4235 #+TODO: TODO(t) WAIT(w@@/!) | DONE(d!) CANCELED(c@@)
4236 @end example
4238 @cindex property, LOGGING
4239 In order to define logging settings that are local to a subtree or a
4240 single item, define a LOGGING property in this entry.  Any non-empty
4241 LOGGING property resets all logging settings to nil.  You may then turn
4242 on logging for this specific tree using STARTUP keywords like
4243 @code{lognotedone} or @code{logrepeat}, as well as adding state specific
4244 settings like @code{TODO(!)}.  For example
4246 @example
4247 * TODO Log each state with only a time
4248   :PROPERTIES:
4249   :LOGGING: TODO(!) WAIT(!) DONE(!) CANCELED(!)
4250   :END:
4251 * TODO Only log when switching to WAIT, and when repeating
4252   :PROPERTIES:
4253   :LOGGING: WAIT(@@) logrepeat
4254   :END:
4255 * TODO No logging at all
4256   :PROPERTIES:
4257   :LOGGING: nil
4258   :END:
4259 @end example
4261 @node Tracking your habits,  , Tracking TODO state changes, Progress logging
4262 @subsection Tracking your habits
4263 @cindex habits
4265 Org has the ability to track the consistency of a special category of TODOs,
4266 called ``habits''.  A habit has the following properties:
4268 @enumerate
4269 @item
4270 You have enabled the @code{habits} module by customizing the variable
4271 @code{org-modules}.
4272 @item
4273 The habit is a TODO item, with a TODO keyword representing an open state.
4274 @item
4275 The property @code{STYLE} is set to the value @code{habit}.
4276 @item
4277 The TODO has a scheduled date, usually with a @code{.+} style repeat
4278 interval.  A @code{++} style may be appropriate for habits with time
4279 constraints, e.g., must be done on weekends, or a @code{+} style for an
4280 unusual habit that can have a backlog, e.g., weekly reports.
4281 @item
4282 The TODO may also have minimum and maximum ranges specified by using the
4283 syntax @samp{.+2d/3d}, which says that you want to do the task at least every
4284 three days, but at most every two days.
4285 @item
4286 You must also have state logging for the @code{DONE} state enabled
4287 (@pxref{Tracking TODO state changes}), in order for historical data to be
4288 represented in the consistency graph.  If it is not enabled it is not an
4289 error, but the consistency graphs will be largely meaningless.
4290 @end enumerate
4292 To give you an idea of what the above rules look like in action, here's an
4293 actual habit with some history:
4295 @example
4296 ** TODO Shave
4297    SCHEDULED: <2009-10-17 Sat .+2d/4d>
4298    - State "DONE"       from "TODO"       [2009-10-15 Thu]
4299    - State "DONE"       from "TODO"       [2009-10-12 Mon]
4300    - State "DONE"       from "TODO"       [2009-10-10 Sat]
4301    - State "DONE"       from "TODO"       [2009-10-04 Sun]
4302    - State "DONE"       from "TODO"       [2009-10-02 Fri]
4303    - State "DONE"       from "TODO"       [2009-09-29 Tue]
4304    - State "DONE"       from "TODO"       [2009-09-25 Fri]
4305    - State "DONE"       from "TODO"       [2009-09-19 Sat]
4306    - State "DONE"       from "TODO"       [2009-09-16 Wed]
4307    - State "DONE"       from "TODO"       [2009-09-12 Sat]
4308    :PROPERTIES:
4309    :STYLE:    habit
4310    :LAST_REPEAT: [2009-10-19 Mon 00:36]
4311    :END:
4312 @end example
4314 What this habit says is: I want to shave at most every 2 days (given by the
4315 @code{SCHEDULED} date and repeat interval) and at least every 4 days.  If
4316 today is the 15th, then the habit first appears in the agenda on Oct 17,
4317 after the minimum of 2 days has elapsed, and will appear overdue on Oct 19,
4318 after four days have elapsed.
4320 What's really useful about habits is that they are displayed along with a
4321 consistency graph, to show how consistent you've been at getting that task
4322 done in the past.  This graph shows every day that the task was done over the
4323 past three weeks, with colors for each day.  The colors used are:
4325 @table @code
4326 @item Blue
4327 If the task wasn't to be done yet on that day.
4328 @item Green
4329 If the task could have been done on that day.
4330 @item Yellow
4331 If the task was going to be overdue the next day.
4332 @item Red
4333 If the task was overdue on that day.
4334 @end table
4336 In addition to coloring each day, the day is also marked with an asterisk if
4337 the task was actually done that day, and an exclamation mark to show where
4338 the current day falls in the graph.
4340 There are several configuration variables that can be used to change the way
4341 habits are displayed in the agenda.
4343 @table @code
4344 @item org-habit-graph-column
4345 The buffer column at which the consistency graph should be drawn.  This will
4346 overwrite any text in that column, so it is a good idea to keep your habits'
4347 titles brief and to the point.
4348 @item org-habit-preceding-days
4349 The amount of history, in days before today, to appear in consistency graphs.
4350 @item org-habit-following-days
4351 The number of days after today that will appear in consistency graphs.
4352 @item org-habit-show-habits-only-for-today
4353 If non-nil, only show habits in today's agenda view.  This is set to true by
4354 default.
4355 @end table
4357 Lastly, pressing @kbd{K} in the agenda buffer will cause habits to
4358 temporarily be disabled and they won't appear at all.  Press @kbd{K} again to
4359 bring them back.  They are also subject to tag filtering, if you have habits
4360 which should only be done in certain contexts, for example.
4362 @node Priorities, Breaking down tasks, Progress logging, TODO Items
4363 @section Priorities
4364 @cindex priorities
4366 If you use Org mode extensively, you may end up with enough TODO items that
4367 it starts to make sense to prioritize them.  Prioritizing can be done by
4368 placing a @emph{priority cookie} into the headline of a TODO item, like this
4370 @example
4371 *** TODO [#A] Write letter to Sam Fortune
4372 @end example
4374 @noindent
4375 @vindex org-priority-faces
4376 By default, Org mode supports three priorities: @samp{A}, @samp{B}, and
4377 @samp{C}.  @samp{A} is the highest priority.  An entry without a cookie is
4378 treated just like priority @samp{B}.  Priorities make a difference only for
4379 sorting in the agenda (@pxref{Weekly/daily agenda}); outside the agenda, they
4380 have no inherent meaning to Org mode.  The cookies can be highlighted with
4381 special faces by customizing the variable @code{org-priority-faces}.
4383 Priorities can be attached to any outline node; they do not need to be TODO
4384 items.
4386 @table @kbd
4387 @item @kbd{C-c ,}
4388 @kindex @kbd{C-c ,}
4389 @findex org-priority
4390 Set the priority of the current headline (@command{org-priority}).  The
4391 command prompts for a priority character @samp{A}, @samp{B} or @samp{C}.
4392 When you press @key{SPC} instead, the priority cookie is removed from the
4393 headline.  The priorities can also be changed ``remotely'' from the timeline
4394 and agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
4396 @orgcmdkkcc{S-@key{up},S-@key{down},org-priority-up,org-priority-down}
4397 @vindex org-priority-start-cycle-with-default
4398 Increase/decrease priority of current headline@footnote{See also the option
4399 @code{org-priority-start-cycle-with-default}.}.  Note that these keys are
4400 also used to modify timestamps (@pxref{Creating timestamps}).  See also
4401 @ref{Conflicts}, for a discussion of the interaction with
4402 @code{shift-selection-mode}.
4403 @end table
4405 @vindex org-highest-priority
4406 @vindex org-lowest-priority
4407 @vindex org-default-priority
4408 You can change the range of allowed priorities by setting the variables
4409 @code{org-highest-priority}, @code{org-lowest-priority}, and
4410 @code{org-default-priority}.  For an individual buffer, you may set
4411 these values (highest, lowest, default) like this (please make sure that
4412 the highest priority is earlier in the alphabet than the lowest
4413 priority):
4415 @cindex #+PRIORITIES
4416 @example
4417 #+PRIORITIES: A C B
4418 @end example
4420 @node Breaking down tasks, Checkboxes, Priorities, TODO Items
4421 @section Breaking tasks down into subtasks
4422 @cindex tasks, breaking down
4423 @cindex statistics, for TODO items
4425 @vindex org-agenda-todo-list-sublevels
4426 It is often advisable to break down large tasks into smaller, manageable
4427 subtasks.  You can do this by creating an outline tree below a TODO item,
4428 with detailed subtasks on the tree@footnote{To keep subtasks out of the
4429 global TODO list, see the @code{org-agenda-todo-list-sublevels}.}.  To keep
4430 the overview over the fraction of subtasks that are already completed, insert
4431 either @samp{[/]} or @samp{[%]} anywhere in the headline.  These cookies will
4432 be updated each time the TODO status of a child changes, or when pressing
4433 @kbd{C-c C-c} on the cookie.  For example:
4435 @example
4436 * Organize Party [33%]
4437 ** TODO Call people [1/2]
4438 *** TODO Peter
4439 *** DONE Sarah
4440 ** TODO Buy food
4441 ** DONE Talk to neighbor
4442 @end example
4444 @cindex property, COOKIE_DATA
4445 If a heading has both checkboxes and TODO children below it, the meaning of
4446 the statistics cookie become ambiguous.  Set the property
4447 @code{COOKIE_DATA} to either @samp{checkbox} or @samp{todo} to resolve
4448 this issue.
4450 @vindex org-hierarchical-todo-statistics
4451 If you would like to have the statistics cookie count any TODO entries in the
4452 subtree (not just direct children), configure the variable
4453 @code{org-hierarchical-todo-statistics}.  To do this for a single subtree,
4454 include the word @samp{recursive} into the value of the @code{COOKIE_DATA}
4455 property.
4457 @example
4458 * Parent capturing statistics [2/20]
4459   :PROPERTIES:
4460   :COOKIE_DATA: todo recursive
4461   :END:
4462 @end example
4464 If you would like a TODO entry to automatically change to DONE
4465 when all children are done, you can use the following setup:
4467 @example
4468 (defun org-summary-todo (n-done n-not-done)
4469   "Switch entry to DONE when all subentries are done, to TODO otherwise."
4470   (let (org-log-done org-log-states)   ; turn off logging
4471     (org-todo (if (= n-not-done 0) "DONE" "TODO"))))
4473 (add-hook 'org-after-todo-statistics-hook 'org-summary-todo)
4474 @end example
4477 Another possibility is the use of checkboxes to identify (a hierarchy of) a
4478 large number of subtasks (@pxref{Checkboxes}).
4481 @node Checkboxes,  , Breaking down tasks, TODO Items
4482 @section Checkboxes
4483 @cindex checkboxes
4485 @vindex org-list-automatic-rules
4486 Every item in a plain list@footnote{With the exception of description
4487 lists.  But you can allow it by modifying @code{org-list-automatic-rules}
4488 accordingly.} (@pxref{Plain lists}) can be made into a checkbox by starting
4489 it with the string @samp{[ ]}.  This feature is similar to TODO items
4490 (@pxref{TODO Items}), but is more lightweight.  Checkboxes are not included
4491 in the global TODO list, so they are often great to split a task into a
4492 number of simple steps.  Or you can use them in a shopping list.  To toggle a
4493 checkbox, use @kbd{C-c C-c}, or use the mouse (thanks to Piotr Zielinski's
4494 @file{org-mouse.el}).
4496 Here is an example of a checkbox list.
4498 @example
4499 * TODO Organize party [2/4]
4500   - [-] call people [1/3]
4501     - [ ] Peter
4502     - [X] Sarah
4503     - [ ] Sam
4504   - [X] order food
4505   - [ ] think about what music to play
4506   - [X] talk to the neighbors
4507 @end example
4509 Checkboxes work hierarchically, so if a checkbox item has children that
4510 are checkboxes, toggling one of the children checkboxes will make the
4511 parent checkbox reflect if none, some, or all of the children are
4512 checked.
4514 @cindex statistics, for checkboxes
4515 @cindex checkbox statistics
4516 @cindex property, COOKIE_DATA
4517 @vindex org-hierarchical-checkbox-statistics
4518 The @samp{[2/4]} and @samp{[1/3]} in the first and second line are cookies
4519 indicating how many checkboxes present in this entry have been checked off,
4520 and the total number of checkboxes present.  This can give you an idea on how
4521 many checkboxes remain, even without opening a folded entry.  The cookies can
4522 be placed into a headline or into (the first line of) a plain list item.
4523 Each cookie covers checkboxes of direct children structurally below the
4524 headline/item on which the cookie appears@footnote{Set the variable
4525 @code{org-hierarchical-checkbox-statistics} if you want such cookies to
4526 count all checkboxes below the cookie, not just those belonging to direct
4527 children.}.  You have to insert the cookie yourself by typing either
4528 @samp{[/]} or @samp{[%]}.  With @samp{[/]} you get an @samp{n out of m}
4529 result, as in the examples above.  With @samp{[%]} you get information about
4530 the percentage of checkboxes checked (in the above example, this would be
4531 @samp{[50%]} and @samp{[33%]}, respectively).  In a headline, a cookie can
4532 count either checkboxes below the heading or TODO states of children, and it
4533 will display whatever was changed last.  Set the property @code{COOKIE_DATA}
4534 to either @samp{checkbox} or @samp{todo} to resolve this issue.
4536 @cindex blocking, of checkboxes
4537 @cindex checkbox blocking
4538 @cindex property, ORDERED
4539 If the current outline node has an @code{ORDERED} property, checkboxes must
4540 be checked off in sequence, and an error will be thrown if you try to check
4541 off a box while there are unchecked boxes above it.
4543 @noindent The following commands work with checkboxes:
4545 @table @kbd
4546 @orgcmd{C-c C-c,org-toggle-checkbox}
4547 Toggle checkbox status or (with prefix arg) checkbox presence at point.
4548 With a single prefix argument, add an empty checkbox or remove the current
4549 one@footnote{@kbd{C-u C-c C-c} on the @emph{first} item of a list with no checkbox
4550 will add checkboxes to the rest of the list.}.  With a double prefix argument, set it to @samp{[-]}, which is
4551 considered to be an intermediate state.
4552 @orgcmd{C-c C-x C-b,org-toggle-checkbox}
4553 Toggle checkbox status or (with prefix arg) checkbox presence at point.  With
4554 double prefix argument, set it to @samp{[-]}, which is considered to be an
4555 intermediate state.
4556 @itemize @minus
4557 @item
4558 If there is an active region, toggle the first checkbox in the region
4559 and set all remaining boxes to the same status as the first.  With a prefix
4560 arg, add or remove the checkbox for all items in the region.
4561 @item
4562 If the cursor is in a headline, toggle checkboxes in the region between
4563 this headline and the next (so @emph{not} the entire subtree).
4564 @item
4565 If there is no active region, just toggle the checkbox at point.
4566 @end itemize
4567 @orgcmd{M-S-@key{RET},org-insert-todo-heading}
4568 Insert a new item with a checkbox.  This works only if the cursor is already
4569 in a plain list item (@pxref{Plain lists}).
4570 @orgcmd{C-c C-x o,org-toggle-ordered-property}
4571 @vindex org-track-ordered-property-with-tag
4572 @cindex property, ORDERED
4573 Toggle the @code{ORDERED} property of the entry, to toggle if checkboxes must
4574 be checked off in sequence.  A property is used for this behavior because
4575 this should be local to the current entry, not inherited like a tag.
4576 However, if you would like to @i{track} the value of this property with a tag
4577 for better visibility, customize the variable
4578 @code{org-track-ordered-property-with-tag}.
4579 @orgcmd{C-c #,org-update-statistics-cookies}
4580 Update the statistics cookie in the current outline entry.  When called with
4581 a @kbd{C-u} prefix, update the entire file.  Checkbox statistic cookies are
4582 updated automatically if you toggle checkboxes with @kbd{C-c C-c} and make
4583 new ones with @kbd{M-S-@key{RET}}.  TODO statistics cookies update when
4584 changing TODO states.  If you delete boxes/entries or add/change them by
4585 hand, use this command to get things back into sync.
4586 @end table
4588 @node Tags, Properties and Columns, TODO Items, Top
4589 @chapter Tags
4590 @cindex tags
4591 @cindex headline tagging
4592 @cindex matching, tags
4593 @cindex sparse tree, tag based
4595 An excellent way to implement labels and contexts for cross-correlating
4596 information is to assign @i{tags} to headlines.  Org mode has extensive
4597 support for tags.
4599 @vindex org-tag-faces
4600 Every headline can contain a list of tags; they occur at the end of the
4601 headline.  Tags are normal words containing letters, numbers, @samp{_}, and
4602 @samp{@@}.  Tags must be preceded and followed by a single colon, e.g.,
4603 @samp{:work:}.  Several tags can be specified, as in @samp{:work:urgent:}.
4604 Tags will by default be in bold face with the same color as the headline.
4605 You may specify special faces for specific tags using the variable
4606 @code{org-tag-faces}, in much the same way as you can for TODO keywords
4607 (@pxref{Faces for TODO keywords}).
4609 @menu
4610 * Tag inheritance::             Tags use the tree structure of the outline
4611 * Setting tags::                How to assign tags to a headline
4612 * Tag searches::                Searching for combinations of tags
4613 @end menu
4615 @node Tag inheritance, Setting tags, Tags, Tags
4616 @section Tag inheritance
4617 @cindex tag inheritance
4618 @cindex inheritance, of tags
4619 @cindex sublevels, inclusion into tags match
4621 @i{Tags} make use of the hierarchical structure of outline trees.  If a
4622 heading has a certain tag, all subheadings will inherit the tag as
4623 well.  For example, in the list
4625 @example
4626 * Meeting with the French group      :work:
4627 ** Summary by Frank                  :boss:notes:
4628 *** TODO Prepare slides for him      :action:
4629 @end example
4631 @noindent
4632 the final heading will have the tags @samp{:work:}, @samp{:boss:},
4633 @samp{:notes:}, and @samp{:action:} even though the final heading is not
4634 explicitly marked with those tags.  You can also set tags that all entries in
4635 a file should inherit just as if these tags were defined in a hypothetical
4636 level zero that surrounds the entire file.  Use a line like this@footnote{As
4637 with all these in-buffer settings, pressing @kbd{C-c C-c} activates any
4638 changes in the line.}:
4640 @cindex #+FILETAGS
4641 @example
4642 #+FILETAGS: :Peter:Boss:Secret:
4643 @end example
4645 @noindent
4646 @vindex org-use-tag-inheritance
4647 @vindex org-tags-exclude-from-inheritance
4648 To limit tag inheritance to specific tags, use @code{org-tags-exclude-from-inheritance}.
4649 To turn it off entirely, use @code{org-use-tag-inheritance}.
4651 @vindex org-tags-match-list-sublevels
4652 When a headline matches during a tags search while tag inheritance is turned
4653 on, all the sublevels in the same tree will (for a simple match form) match
4654 as well@footnote{This is only true if the search does not involve more
4655 complex tests including properties (@pxref{Property searches}).}.  The list
4656 of matches may then become very long.  If you only want to see the first tags
4657 match in a subtree, configure the variable
4658 @code{org-tags-match-list-sublevels} (not recommended).
4660 @vindex org-agenda-use-tag-inheritance
4661 Tag inheritance is relevant when the agenda search tries to match a tag,
4662 either in the @code{tags} or @code{tags-todo} agenda types.  In other agenda
4663 types, @code{org-use-tag-inheritance} has no effect.  Still, you may want to
4664 have your tags correctly set in the agenda, so that tag filtering works fine,
4665 with inherited tags.  Set @code{org-agenda-use-tag-inheritance} to control
4666 this: the default value includes all agenda types, but setting this to nil
4667 can really speed up agenda generation.
4669 @node Setting tags, Tag searches, Tag inheritance, Tags
4670 @section Setting tags
4671 @cindex setting tags
4672 @cindex tags, setting
4674 @kindex M-@key{TAB}
4675 Tags can simply be typed into the buffer at the end of a headline.
4676 After a colon, @kbd{M-@key{TAB}} offers completion on tags.  There is
4677 also a special command for inserting tags:
4679 @table @kbd
4680 @orgcmd{C-c C-q,org-set-tags-command}
4681 @cindex completion, of tags
4682 @vindex org-tags-column
4683 Enter new tags for the current headline.  Org mode will either offer
4684 completion or a special single-key interface for setting tags, see
4685 below.  After pressing @key{RET}, the tags will be inserted and aligned
4686 to @code{org-tags-column}.  When called with a @kbd{C-u} prefix, all
4687 tags in the current buffer will be aligned to that column, just to make
4688 things look nice.  TAGS are automatically realigned after promotion,
4689 demotion, and TODO state changes (@pxref{TODO basics}).
4690 @orgcmd{C-c C-c,org-set-tags-command}
4691 When the cursor is in a headline, this does the same as @kbd{C-c C-q}.
4692 @end table
4694 @vindex org-tag-alist
4695 Org supports tag insertion based on a @emph{list of tags}.  By
4696 default this list is constructed dynamically, containing all tags
4697 currently used in the buffer.  You may also globally specify a hard list
4698 of tags with the variable @code{org-tag-alist}.  Finally you can set
4699 the default tags for a given file with lines like
4701 @cindex #+TAGS
4702 @example
4703 #+TAGS: @@work @@home @@tennisclub
4704 #+TAGS: laptop car pc sailboat
4705 @end example
4707 If you have globally defined your preferred set of tags using the
4708 variable @code{org-tag-alist}, but would like to use a dynamic tag list
4709 in a specific file, add an empty TAGS option line to that file:
4711 @example
4712 #+TAGS:
4713 @end example
4715 @vindex org-tag-persistent-alist
4716 If you have a preferred set of tags that you would like to use in every file,
4717 in addition to those defined on a per-file basis by TAGS option lines, then
4718 you may specify a list of tags with the variable
4719 @code{org-tag-persistent-alist}.  You may turn this off on a per-file basis
4720 by adding a STARTUP option line to that file:
4722 @example
4723 #+STARTUP: noptag
4724 @end example
4726 By default Org mode uses the standard minibuffer completion facilities for
4727 entering tags.  However, it also implements another, quicker, tag selection
4728 method called @emph{fast tag selection}.  This allows you to select and
4729 deselect tags with just a single key press.  For this to work well you should
4730 assign unique letters to most of your commonly used tags.  You can do this
4731 globally by configuring the variable @code{org-tag-alist} in your
4732 @file{.emacs} file.  For example, you may find the need to tag many items in
4733 different files with @samp{:@@home:}.  In this case you can set something
4734 like:
4736 @lisp
4737 (setq org-tag-alist '(("@@work" . ?w) ("@@home" . ?h) ("laptop" . ?l)))
4738 @end lisp
4740 @noindent If the tag is only relevant to the file you are working on, then you
4741 can instead set the TAGS option line as:
4743 @example
4744 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t)  laptop(l)  pc(p)
4745 @end example
4747 @noindent The tags interface will show the available tags in a splash
4748 window.  If you want to start a new line after a specific tag, insert
4749 @samp{\n} into the tag list
4751 @example
4752 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t) \n laptop(l)  pc(p)
4753 @end example
4755 @noindent or write them in two lines:
4757 @example
4758 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t)
4759 #+TAGS: laptop(l)  pc(p)
4760 @end example
4762 @noindent
4763 You can also group together tags that are mutually exclusive by using
4764 braces, as in:
4766 @example
4767 #+TAGS: @{ @@work(w)  @@home(h)  @@tennisclub(t) @}  laptop(l)  pc(p)
4768 @end example
4770 @noindent you indicate that at most one of @samp{@@work}, @samp{@@home},
4771 and @samp{@@tennisclub} should be selected.  Multiple such groups are allowed.
4773 @noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
4774 these lines to activate any changes.
4776 @noindent
4777 To set these mutually exclusive groups in the variable @code{org-tags-alist},
4778 you must use the dummy tags @code{:startgroup} and @code{:endgroup} instead
4779 of the braces.  Similarly, you can use @code{:newline} to indicate a line
4780 break.  The previous example would be set globally by the following
4781 configuration:
4783 @lisp
4784 (setq org-tag-alist '((:startgroup . nil)
4785                       ("@@work" . ?w) ("@@home" . ?h)
4786                       ("@@tennisclub" . ?t)
4787                       (:endgroup . nil)
4788                       ("laptop" . ?l) ("pc" . ?p)))
4789 @end lisp
4791 If at least one tag has a selection key then pressing @kbd{C-c C-c} will
4792 automatically present you with a special interface, listing inherited tags,
4793 the tags of the current headline, and a list of all valid tags with
4794 corresponding keys@footnote{Keys will automatically be assigned to tags which
4795 have no configured keys.}.  In this interface, you can use the following
4796 keys:
4798 @table @kbd
4799 @item a-z...
4800 Pressing keys assigned to tags will add or remove them from the list of
4801 tags in the current line.  Selecting a tag in a group of mutually
4802 exclusive tags will turn off any other tags from that group.
4803 @kindex @key{TAB}
4804 @item @key{TAB}
4805 Enter a tag in the minibuffer, even if the tag is not in the predefined
4806 list.  You will be able to complete on all tags present in the buffer.
4807 You can also add several tags: just separate them with a comma.
4809 @kindex @key{SPC}
4810 @item @key{SPC}
4811 Clear all tags for this line.
4812 @kindex @key{RET}
4813 @item @key{RET}
4814 Accept the modified set.
4815 @item C-g
4816 Abort without installing changes.
4817 @item q
4818 If @kbd{q} is not assigned to a tag, it aborts like @kbd{C-g}.
4819 @item !
4820 Turn off groups of mutually exclusive tags.  Use this to (as an
4821 exception) assign several tags from such a group.
4822 @item C-c
4823 Toggle auto-exit after the next change (see below).
4824 If you are using expert mode, the first @kbd{C-c} will display the
4825 selection window.
4826 @end table
4828 @noindent
4829 This method lets you assign tags to a headline with very few keys.  With
4830 the above setup, you could clear the current tags and set @samp{@@home},
4831 @samp{laptop} and @samp{pc} tags with just the following keys: @kbd{C-c
4832 C-c @key{SPC} h l p @key{RET}}.  Switching from @samp{@@home} to
4833 @samp{@@work} would be done with @kbd{C-c C-c w @key{RET}} or
4834 alternatively with @kbd{C-c C-c C-c w}.  Adding the non-predefined tag
4835 @samp{Sarah} could be done with @kbd{C-c C-c @key{TAB} S a r a h
4836 @key{RET} @key{RET}}.
4838 @vindex org-fast-tag-selection-single-key
4839 If you find that most of the time you need only a single key press to
4840 modify your list of tags, set the variable
4841 @code{org-fast-tag-selection-single-key}.  Then you no longer have to
4842 press @key{RET} to exit fast tag selection---it will immediately exit
4843 after the first change.  If you then occasionally need more keys, press
4844 @kbd{C-c} to turn off auto-exit for the current tag selection process
4845 (in effect: start selection with @kbd{C-c C-c C-c} instead of @kbd{C-c
4846 C-c}).  If you set the variable to the value @code{expert}, the special
4847 window is not even shown for single-key tag selection, it comes up only
4848 when you press an extra @kbd{C-c}.
4850 @node Tag searches,  , Setting tags, Tags
4851 @section Tag searches
4852 @cindex tag searches
4853 @cindex searching for tags
4855 Once a system of tags has been set up, it can be used to collect related
4856 information into special lists.
4858 @table @kbd
4859 @orgcmdkkc{C-c / m,C-c \\,org-match-sparse-tree}
4860 Create a sparse tree with all headlines matching a tags search.  With a
4861 @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
4862 @orgcmd{C-c a m,org-tags-view}
4863 Create a global list of tag matches from all agenda files.
4864 @xref{Matching tags and properties}.
4865 @orgcmd{C-c a M,org-tags-view}
4866 @vindex org-tags-match-list-sublevels
4867 Create a global list of tag matches from all agenda files, but check
4868 only TODO items and force checking subitems (see variable
4869 @code{org-tags-match-list-sublevels}).
4870 @end table
4872 These commands all prompt for a match string which allows basic Boolean logic
4873 like @samp{+boss+urgent-project1}, to find entries with tags @samp{boss} and
4874 @samp{urgent}, but not @samp{project1}, or @samp{Kathy|Sally} to find entries
4875 which are tagged, like @samp{Kathy} or @samp{Sally}.  The full syntax of the search
4876 string is rich and allows also matching against TODO keywords, entry levels
4877 and properties.  For a complete description with many examples, see
4878 @ref{Matching tags and properties}.
4881 @node Properties and Columns, Dates and Times, Tags, Top
4882 @chapter Properties and columns
4883 @cindex properties
4885 A property is a key-value pair associated with an entry.  Properties can be
4886 set so they are associated with a single entry, with every entry in a tree,
4887 or with every entry in an Org mode file.
4889 There are two main applications for properties in Org mode.  First,
4890 properties are like tags, but with a value.  Imagine maintaining a file where
4891 you document bugs and plan releases for a piece of software.  Instead of
4892 using tags like @code{:release_1:}, @code{:release_2:}, you can use a
4893 property, say @code{:Release:}, that in different subtrees has different
4894 values, such as @code{1.0} or @code{2.0}.  Second, you can use properties to
4895 implement (very basic) database capabilities in an Org buffer.  Imagine
4896 keeping track of your music CDs, where properties could be things such as the
4897 album, artist, date of release, number of tracks, and so on.
4899 Properties can be conveniently edited and viewed in column view
4900 (@pxref{Column view}).
4902 @menu
4903 * Property syntax::             How properties are spelled out
4904 * Special properties::          Access to other Org mode features
4905 * Property searches::           Matching property values
4906 * Property inheritance::        Passing values down the tree
4907 * Column view::                 Tabular viewing and editing
4908 * Property API::                Properties for Lisp programmers
4909 @end menu
4911 @node Property syntax, Special properties, Properties and Columns, Properties and Columns
4912 @section Property syntax
4913 @cindex property syntax
4914 @cindex drawer, for properties
4916 Properties are key-value pairs.  When they are associated with a single entry
4917 or with a tree they need to be inserted into a special
4918 drawer (@pxref{Drawers}) with the name @code{PROPERTIES}.  Each property
4919 is specified on a single line, with the key (surrounded by colons)
4920 first, and the value after it.  Here is an example:
4922 @example
4923 * CD collection
4924 ** Classic
4925 *** Goldberg Variations
4926     :PROPERTIES:
4927     :Title:     Goldberg Variations
4928     :Composer:  J.S. Bach
4929     :Artist:    Glen Gould
4930     :Publisher: Deutsche Grammophon
4931     :NDisks:    1
4932     :END:
4933 @end example
4935 Depending on the value of @code{org-use-property-inheritance}, a property set
4936 this way will either be associated with a single entry, or the sub-tree
4937 defined by the entry, see @ref{Property inheritance}.
4939 You may define the allowed values for a particular property @samp{:Xyz:}
4940 by setting a property @samp{:Xyz_ALL:}.  This special property is
4941 @emph{inherited}, so if you set it in a level 1 entry, it will apply to
4942 the entire tree.  When allowed values are defined, setting the
4943 corresponding property becomes easier and is less prone to typing
4944 errors.  For the example with the CD collection, we can predefine
4945 publishers and the number of disks in a box like this:
4947 @example
4948 * CD collection
4949   :PROPERTIES:
4950   :NDisks_ALL:  1 2 3 4
4951   :Publisher_ALL: "Deutsche Grammophon" Philips EMI
4952   :END:
4953 @end example
4955 If you want to set properties that can be inherited by any entry in a
4956 file, use a line like
4957 @cindex property, _ALL
4958 @cindex #+PROPERTY
4959 @example
4960 #+PROPERTY: NDisks_ALL 1 2 3 4
4961 @end example
4963 Contrary to properties set from a special drawer, you have to refresh the
4964 buffer with @kbd{C-c C-c} to activate this changes.
4966 If you want to add to the value of an existing property, append a @code{+} to
4967 the property name.  The following results in the property @code{var} having
4968 the value ``foo=1 bar=2''.
4969 @cindex property, +
4970 @example
4971 #+PROPERTY: var  foo=1
4972 #+PROPERTY: var+ bar=2
4973 @end example
4975 It is also possible to add to the values of inherited properties.  The
4976 following results in the @code{genres} property having the value ``Classic
4977 Baroque'' under the @code{Goldberg Variations} subtree.
4978 @cindex property, +
4979 @example
4980 * CD collection
4981 ** Classic
4982     :PROPERTIES:
4983     :GENRES: Classic
4984     :END:
4985 *** Goldberg Variations
4986     :PROPERTIES:
4987     :Title:     Goldberg Variations
4988     :Composer:  J.S. Bach
4989     :Artist:    Glen Gould
4990     :Publisher: Deutsche Grammophon
4991     :NDisks:    1
4992     :GENRES+:   Baroque
4993     :END:
4994 @end example
4995 Note that a property can only have one entry per Drawer.
4997 @vindex org-global-properties
4998 Property values set with the global variable
4999 @code{org-global-properties} can be inherited by all entries in all
5000 Org files.
5002 @noindent
5003 The following commands help to work with properties:
5005 @table @kbd
5006 @orgcmd{M-@key{TAB},pcomplete}
5007 After an initial colon in a line, complete property keys.  All keys used
5008 in the current file will be offered as possible completions.
5009 @orgcmd{C-c C-x p,org-set-property}
5010 Set a property.  This prompts for a property name and a value.  If
5011 necessary, the property drawer is created as well.
5012 @item C-u M-x org-insert-drawer
5013 @cindex org-insert-drawer
5014 Insert a property drawer into the current entry.  The drawer will be
5015 inserted early in the entry, but after the lines with planning
5016 information like deadlines.
5017 @orgcmd{C-c C-c,org-property-action}
5018 With the cursor in a property drawer, this executes property commands.
5019 @orgcmd{C-c C-c s,org-set-property}
5020 Set a property in the current entry.  Both the property and the value
5021 can be inserted using completion.
5022 @orgcmdkkcc{S-@key{right},S-@key{left},org-property-next-allowed-value,org-property-previous-allowed-value}
5023 Switch property at point to the next/previous allowed value.
5024 @orgcmd{C-c C-c d,org-delete-property}
5025 Remove a property from the current entry.
5026 @orgcmd{C-c C-c D,org-delete-property-globally}
5027 Globally remove a property, from all entries in the current file.
5028 @orgcmd{C-c C-c c,org-compute-property-at-point}
5029 Compute the property at point, using the operator and scope from the
5030 nearest column format definition.
5031 @end table
5033 @node Special properties, Property searches, Property syntax, Properties and Columns
5034 @section Special properties
5035 @cindex properties, special
5037 Special properties provide an alternative access method to Org mode features,
5038 like the TODO state or the priority of an entry, discussed in the previous
5039 chapters.  This interface exists so that you can include these states in a
5040 column view (@pxref{Column view}), or to use them in queries.  The following
5041 property names are special and (except for @code{:CATEGORY:}) should not be
5042 used as keys in the properties drawer:
5044 @cindex property, special, ID
5045 @cindex property, special, TODO
5046 @cindex property, special, TAGS
5047 @cindex property, special, ALLTAGS
5048 @cindex property, special, CATEGORY
5049 @cindex property, special, PRIORITY
5050 @cindex property, special, DEADLINE
5051 @cindex property, special, SCHEDULED
5052 @cindex property, special, CLOSED
5053 @cindex property, special, TIMESTAMP
5054 @cindex property, special, TIMESTAMP_IA
5055 @cindex property, special, CLOCKSUM
5056 @cindex property, special, CLOCKSUM_T
5057 @cindex property, special, BLOCKED
5058 @c guessing that ITEM is needed in this area; also, should this list be sorted?
5059 @cindex property, special, ITEM
5060 @cindex property, special, FILE
5061 @example
5062 ID           @r{A globally unique ID used for synchronization during}
5063              @r{iCalendar or MobileOrg export.}
5064 TODO         @r{The TODO keyword of the entry.}
5065 TAGS         @r{The tags defined directly in the headline.}
5066 ALLTAGS      @r{All tags, including inherited ones.}
5067 CATEGORY     @r{The category of an entry.}
5068 PRIORITY     @r{The priority of the entry, a string with a single letter.}
5069 DEADLINE     @r{The deadline time string, without the angular brackets.}
5070 SCHEDULED    @r{The scheduling timestamp, without the angular brackets.}
5071 CLOSED       @r{When was this entry closed?}
5072 TIMESTAMP    @r{The first keyword-less timestamp in the entry.}
5073 TIMESTAMP_IA @r{The first inactive timestamp in the entry.}
5074 CLOCKSUM     @r{The sum of CLOCK intervals in the subtree.  @code{org-clock-sum}}
5075              @r{must be run first to compute the values in the current buffer.}
5076 CLOCKSUM_T   @r{The sum of CLOCK intervals in the subtree for today.}
5077              @r{@code{org-clock-sum-today} must be run first to compute the}
5078              @r{values in the current buffer.}
5079 BLOCKED      @r{"t" if task is currently blocked by children or siblings}
5080 ITEM         @r{The headline of the entry.}
5081 FILE         @r{The filename the entry is located in.}
5082 @end example
5084 @node Property searches, Property inheritance, Special properties, Properties and Columns
5085 @section Property searches
5086 @cindex properties, searching
5087 @cindex searching, of properties
5089 To create sparse trees and special lists with selection based on properties,
5090 the same commands are used as for tag searches (@pxref{Tag searches}).
5091 @table @kbd
5092 @orgcmdkkc{C-c / m,C-c \\,org-match-sparse-tree}
5093 Create a sparse tree with all matching entries.  With a
5094 @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
5095 @orgcmd{C-c a m,org-tags-view}
5096 Create a global list of tag/property  matches from all agenda files.
5097 @xref{Matching tags and properties}.
5098 @orgcmd{C-c a M,org-tags-view}
5099 @vindex org-tags-match-list-sublevels
5100 Create a global list of tag matches from all agenda files, but check
5101 only TODO items and force checking of subitems (see variable
5102 @code{org-tags-match-list-sublevels}).
5103 @end table
5105 The syntax for the search string is described in @ref{Matching tags and
5106 properties}.
5108 There is also a special command for creating sparse trees based on a
5109 single property:
5111 @table @kbd
5112 @orgkey{C-c / p}
5113 Create a sparse tree based on the value of a property.  This first
5114 prompts for the name of a property, and then for a value.  A sparse tree
5115 is created with all entries that define this property with the given
5116 value.  If you enclose the value in curly braces, it is interpreted as
5117 a regular expression and matched against the property values.
5118 @end table
5120 @node Property inheritance, Column view, Property searches, Properties and Columns
5121 @section Property Inheritance
5122 @cindex properties, inheritance
5123 @cindex inheritance, of properties
5125 @vindex org-use-property-inheritance
5126 The outline structure of Org mode documents lends itself to an
5127 inheritance model of properties: if the parent in a tree has a certain
5128 property, the children can inherit this property.  Org mode does not
5129 turn this on by default, because it can slow down property searches
5130 significantly and is often not needed.  However, if you find inheritance
5131 useful, you can turn it on by setting the variable
5132 @code{org-use-property-inheritance}.  It may be set to @code{t} to make
5133 all properties inherited from the parent, to a list of properties
5134 that should be inherited, or to a regular expression that matches
5135 inherited properties.  If a property has the value @samp{nil}, this is
5136 interpreted as an explicit undefine of the property, so that inheritance
5137 search will stop at this value and return @code{nil}.
5139 Org mode has a few properties for which inheritance is hard-coded, at
5140 least for the special applications for which they are used:
5142 @cindex property, COLUMNS
5143 @table @code
5144 @item COLUMNS
5145 The @code{:COLUMNS:} property defines the format of column view
5146 (@pxref{Column view}).  It is inherited in the sense that the level
5147 where a @code{:COLUMNS:} property is defined is used as the starting
5148 point for a column view table, independently of the location in the
5149 subtree from where columns view is turned on.
5150 @item CATEGORY
5151 @cindex property, CATEGORY
5152 For agenda view, a category set through a @code{:CATEGORY:} property
5153 applies to the entire subtree.
5154 @item ARCHIVE
5155 @cindex property, ARCHIVE
5156 For archiving, the @code{:ARCHIVE:} property may define the archive
5157 location for the entire subtree (@pxref{Moving subtrees}).
5158 @item LOGGING
5159 @cindex property, LOGGING
5160 The LOGGING property may define logging settings for an entry or a
5161 subtree (@pxref{Tracking TODO state changes}).
5162 @end table
5164 @node Column view, Property API, Property inheritance, Properties and Columns
5165 @section Column view
5167 A great way to view and edit properties in an outline tree is
5168 @emph{column view}.  In column view, each outline node is turned into a
5169 table row.  Columns in this table provide access to properties of the
5170 entries.  Org mode implements columns by overlaying a tabular structure
5171 over the headline of each item.  While the headlines have been turned
5172 into a table row, you can still change the visibility of the outline
5173 tree.  For example, you get a compact table by switching to CONTENTS
5174 view (@kbd{S-@key{TAB} S-@key{TAB}}, or simply @kbd{c} while column view
5175 is active), but you can still open, read, and edit the entry below each
5176 headline.  Or, you can switch to column view after executing a sparse
5177 tree command and in this way get a table only for the selected items.
5178 Column view also works in agenda buffers (@pxref{Agenda Views}) where
5179 queries have collected selected items, possibly from a number of files.
5181 @menu
5182 * Defining columns::            The COLUMNS format property
5183 * Using column view::           How to create and use column view
5184 * Capturing column view::       A dynamic block for column view
5185 @end menu
5187 @node Defining columns, Using column view, Column view, Column view
5188 @subsection Defining columns
5189 @cindex column view, for properties
5190 @cindex properties, column view
5192 Setting up a column view first requires defining the columns.  This is
5193 done by defining a column format line.
5195 @menu
5196 * Scope of column definitions::  Where defined, where valid?
5197 * Column attributes::           Appearance and content of a column
5198 @end menu
5200 @node Scope of column definitions, Column attributes, Defining columns, Defining columns
5201 @subsubsection Scope of column definitions
5203 To define a column format for an entire file, use a line like
5205 @cindex #+COLUMNS
5206 @example
5207 #+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
5208 @end example
5210 To specify a format that only applies to a specific tree, add a
5211 @code{:COLUMNS:} property to the top node of that tree, for example:
5213 @example
5214 ** Top node for columns view
5215    :PROPERTIES:
5216    :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
5217    :END:
5218 @end example
5220 If a @code{:COLUMNS:} property is present in an entry, it defines columns
5221 for the entry itself, and for the entire subtree below it.  Since the
5222 column definition is part of the hierarchical structure of the document,
5223 you can define columns on level 1 that are general enough for all
5224 sublevels, and more specific columns further down, when you edit a
5225 deeper part of the tree.
5227 @node Column attributes,  , Scope of column definitions, Defining columns
5228 @subsubsection Column attributes
5229 A column definition sets the attributes of a column.  The general
5230 definition looks like this:
5232 @example
5233  %[@var{width}]@var{property}[(@var{title})][@{@var{summary-type}@}]
5234 @end example
5236 @noindent
5237 Except for the percent sign and the property name, all items are
5238 optional.  The individual parts have the following meaning:
5240 @example
5241 @var{width}           @r{An integer specifying the width of the column in characters.}
5242                 @r{If omitted, the width will be determined automatically.}
5243 @var{property}        @r{The property that should be edited in this column.}
5244                 @r{Special properties representing meta data are allowed here}
5245                 @r{as well (@pxref{Special properties})}
5246 @var{title}           @r{The header text for the column.  If omitted, the property}
5247                 @r{name is used.}
5248 @{@var{summary-type}@}  @r{The summary type.  If specified, the column values for}
5249                 @r{parent nodes are computed from the children.}
5250                 @r{Supported summary types are:}
5251                 @{+@}       @r{Sum numbers in this column.}
5252                 @{+;%.1f@}  @r{Like @samp{+}, but format result with @samp{%.1f}.}
5253                 @{$@}       @r{Currency, short for @samp{+;%.2f}.}
5254                 @{:@}       @r{Sum times, HH:MM, plain numbers are hours.}
5255                 @{X@}       @r{Checkbox status, @samp{[X]} if all children are @samp{[X]}.}
5256                 @{X/@}      @r{Checkbox status, @samp{[n/m]}.}
5257                 @{X%@}      @r{Checkbox status, @samp{[n%]}.}
5258                 @{min@}     @r{Smallest number in column.}
5259                 @{max@}     @r{Largest number.}
5260                 @{mean@}    @r{Arithmetic mean of numbers.}
5261                 @{:min@}    @r{Smallest time value in column.}
5262                 @{:max@}    @r{Largest time value.}
5263                 @{:mean@}   @r{Arithmetic mean of time values.}
5264                 @{@@min@}    @r{Minimum age (in days/hours/mins/seconds).}
5265                 @{@@max@}    @r{Maximum age (in days/hours/mins/seconds).}
5266                 @{@@mean@}   @r{Arithmetic mean of ages (in days/hours/mins/seconds).}
5267                 @{est+@}    @r{Add low-high estimates.}
5268 @end example
5270 @noindent
5271 Be aware that you can only have one summary type for any property you
5272 include.  Subsequent columns referencing the same property will all display the
5273 same summary information.
5275 The @code{est+} summary type requires further explanation.  It is used for
5276 combining estimates, expressed as low-high ranges.  For example, instead
5277 of estimating a particular task will take 5 days, you might estimate it as
5278 5--6 days if you're fairly confident you know how much work is required, or
5279 1--10 days if you don't really know what needs to be done.  Both ranges
5280 average at 5.5 days, but the first represents a more predictable delivery.
5282 When combining a set of such estimates, simply adding the lows and highs
5283 produces an unrealistically wide result.  Instead, @code{est+} adds the
5284 statistical mean and variance of the sub-tasks, generating a final estimate
5285 from the sum.  For example, suppose you had ten tasks, each of which was
5286 estimated at 0.5 to 2 days of work.  Straight addition produces an estimate
5287 of 5 to 20 days, representing what to expect if everything goes either
5288 extremely well or extremely poorly.  In contrast, @code{est+} estimates the
5289 full job more realistically, at 10--15 days.
5291 Here is an example for a complete columns definition, along with allowed
5292 values.
5294 @example
5295 :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.}
5296                    %10Time_Estimate@{:@} %CLOCKSUM %CLOCKSUM_T
5297 :Owner_ALL:    Tammy Mark Karl Lisa Don
5298 :Status_ALL:   "In progress" "Not started yet" "Finished" ""
5299 :Approved_ALL: "[ ]" "[X]"
5300 @end example
5302 @noindent
5303 The first column, @samp{%25ITEM}, means the first 25 characters of the
5304 item itself, i.e., of the headline.  You probably always should start the
5305 column definition with the @samp{ITEM} specifier.  The other specifiers
5306 create columns @samp{Owner} with a list of names as allowed values, for
5307 @samp{Status} with four different possible values, and for a checkbox
5308 field @samp{Approved}.  When no width is given after the @samp{%}
5309 character, the column will be exactly as wide as it needs to be in order
5310 to fully display all values.  The @samp{Approved} column does have a
5311 modified title (@samp{Approved?}, with a question mark).  Summaries will
5312 be created for the @samp{Time_Estimate} column by adding time duration
5313 expressions like HH:MM, and for the @samp{Approved} column, by providing
5314 an @samp{[X]} status if all children have been checked.  The
5315 @samp{CLOCKSUM} and @samp{CLOCKSUM_T} columns are special, they lists the
5316 sums of CLOCK intervals in the subtree, either for all clocks or just for
5317 today.
5319 @node Using column view, Capturing column view, Defining columns, Column view
5320 @subsection Using column view
5322 @table @kbd
5323 @tsubheading{Turning column view on and off}
5324 @orgcmd{C-c C-x C-c,org-columns}
5325 @vindex org-columns-default-format
5326 Turn on column view.  If the cursor is before the first headline in the file,
5327 column view is turned on for the entire file, using the @code{#+COLUMNS}
5328 definition.  If the cursor is somewhere inside the outline, this command
5329 searches the hierarchy, up from point, for a @code{:COLUMNS:} property that
5330 defines a format.  When one is found, the column view table is established
5331 for the tree starting at the entry that contains the @code{:COLUMNS:}
5332 property.  If no such property is found, the format is taken from the
5333 @code{#+COLUMNS} line or from the variable @code{org-columns-default-format},
5334 and column view is established for the current entry and its subtree.
5335 @orgcmd{r,org-columns-redo}
5336 Recreate the column view, to include recent changes made in the buffer.
5337 @orgcmd{g,org-columns-redo}
5338 Same as @kbd{r}.
5339 @orgcmd{q,org-columns-quit}
5340 Exit column view.
5341 @tsubheading{Editing values}
5342 @item @key{left} @key{right} @key{up} @key{down}
5343 Move through the column view from field to field.
5344 @kindex S-@key{left}
5345 @kindex S-@key{right}
5346 @item  S-@key{left}/@key{right}
5347 Switch to the next/previous allowed value of the field.  For this, you
5348 have to have specified allowed values for a property.
5349 @item 1..9,0
5350 Directly select the Nth allowed value, @kbd{0} selects the 10th value.
5351 @orgcmdkkcc{n,p,org-columns-next-allowed-value,org-columns-previous-allowed-value}
5352 Same as @kbd{S-@key{left}/@key{right}}
5353 @orgcmd{e,org-columns-edit-value}
5354 Edit the property at point.  For the special properties, this will
5355 invoke the same interface that you normally use to change that
5356 property.  For example, when editing a TAGS property, the tag completion
5357 or fast selection interface will pop up.
5358 @orgcmd{C-c C-c,org-columns-set-tags-or-toggle}
5359 When there is a checkbox at point, toggle it.
5360 @orgcmd{v,org-columns-show-value}
5361 View the full value of this property.  This is useful if the width of
5362 the column is smaller than that of the value.
5363 @orgcmd{a,org-columns-edit-allowed}
5364 Edit the list of allowed values for this property.  If the list is found
5365 in the hierarchy, the modified values is stored there.  If no list is
5366 found, the new value is stored in the first entry that is part of the
5367 current column view.
5368 @tsubheading{Modifying the table structure}
5369 @orgcmdkkcc{<,>,org-columns-narrow,org-columns-widen}
5370 Make the column narrower/wider by one character.
5371 @orgcmd{S-M-@key{right},org-columns-new}
5372 Insert a new column, to the left of the current column.
5373 @orgcmd{S-M-@key{left},org-columns-delete}
5374 Delete the current column.
5375 @end table
5377 @node Capturing column view,  , Using column view, Column view
5378 @subsection Capturing column view
5380 Since column view is just an overlay over a buffer, it cannot be
5381 exported or printed directly.  If you want to capture a column view, use
5382 a @code{columnview} dynamic block (@pxref{Dynamic blocks}).  The frame
5383 of this block looks like this:
5385 @cindex #+BEGIN, columnview
5386 @example
5387 * The column view
5388 #+BEGIN: columnview :hlines 1 :id "label"
5390 #+END:
5391 @end example
5393 @noindent This dynamic block has the following parameters:
5395 @table @code
5396 @item :id
5397 This is the most important parameter.  Column view is a feature that is
5398 often localized to a certain (sub)tree, and the capture block might be
5399 at a different location in the file.  To identify the tree whose view to
5400 capture, you can use 4 values:
5401 @cindex property, ID
5402 @example
5403 local     @r{use the tree in which the capture block is located}
5404 global    @r{make a global view, including all headings in the file}
5405 "file:@var{path-to-file}"
5406           @r{run column view at the top of this file}
5407 "@var{ID}"      @r{call column view in the tree that has an @code{:ID:}}
5408           @r{property with the value @i{label}.  You can use}
5409           @r{@kbd{M-x org-id-copy} to create a globally unique ID for}
5410           @r{the current entry and copy it to the kill-ring.}
5411 @end example
5412 @item :hlines
5413 When @code{t}, insert an hline after every line.  When a number @var{N}, insert
5414 an hline before each headline with level @code{<= @var{N}}.
5415 @item :vlines
5416 When set to @code{t}, force column groups to get vertical lines.
5417 @item :maxlevel
5418 When set to a number, don't capture entries below this level.
5419 @item :skip-empty-rows
5420 When set to @code{t}, skip rows where the only non-empty specifier of the
5421 column view is @code{ITEM}.
5423 @end table
5425 @noindent
5426 The following commands insert or update the dynamic block:
5428 @table @kbd
5429 @orgcmd{C-c C-x i,org-insert-columns-dblock}
5430 Insert a dynamic block capturing a column view.  You will be prompted
5431 for the scope or ID of the view.
5432 @orgcmdkkc{C-c C-c,C-c C-x C-u,org-dblock-update}
5433 Update dynamic block at point.  The cursor needs to be in the
5434 @code{#+BEGIN} line of the dynamic block.
5435 @orgcmd{C-u C-c C-x C-u,org-update-all-dblocks}
5436 Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
5437 you have several clock table blocks, column-capturing blocks or other dynamic
5438 blocks in a buffer.
5439 @end table
5441 You can add formulas to the column view table and you may add plotting
5442 instructions in front of the table---these will survive an update of the
5443 block.  If there is a @code{#+TBLFM:} after the table, the table will
5444 actually be recalculated automatically after an update.
5446 An alternative way to capture and process property values into a table is
5447 provided by Eric Schulte's @file{org-collector.el} which is a contributed
5448 package@footnote{Contributed packages are not part of Emacs, but are
5449 distributed with the main distribution of Org (visit
5450 @uref{http://orgmode.org}).}.  It provides a general API to collect
5451 properties from entries in a certain scope, and arbitrary Lisp expressions to
5452 process these values before inserting them into a table or a dynamic block.
5454 @node Property API,  , Column view, Properties and Columns
5455 @section The Property API
5456 @cindex properties, API
5457 @cindex API, for properties
5459 There is a full API for accessing and changing properties.  This API can
5460 be used by Emacs Lisp programs to work with properties and to implement
5461 features based on them.  For more information see @ref{Using the
5462 property API}.
5464 @node Dates and Times, Capture - Refile - Archive, Properties and Columns, Top
5465 @chapter Dates and times
5466 @cindex dates
5467 @cindex times
5468 @cindex timestamp
5469 @cindex date stamp
5471 To assist project planning, TODO items can be labeled with a date and/or
5472 a time.  The specially formatted string carrying the date and time
5473 information is called a @emph{timestamp} in Org mode.  This may be a
5474 little confusing because timestamp is often used as indicating when
5475 something was created or last changed.  However, in Org mode this term
5476 is used in a much wider sense.
5478 @menu
5479 * Timestamps::                  Assigning a time to a tree entry
5480 * Creating timestamps::         Commands which insert timestamps
5481 * Deadlines and scheduling::    Planning your work
5482 * Clocking work time::          Tracking how long you spend on a task
5483 * Effort estimates::            Planning work effort in advance
5484 * Relative timer::              Notes with a running timer
5485 * Countdown timer::             Starting a countdown timer for a task
5486 @end menu
5489 @node Timestamps, Creating timestamps, Dates and Times, Dates and Times
5490 @section Timestamps, deadlines, and scheduling
5491 @cindex timestamps
5492 @cindex ranges, time
5493 @cindex date stamps
5494 @cindex deadlines
5495 @cindex scheduling
5497 A timestamp is a specification of a date (possibly with a time or a range of
5498 times) in a special format, either @samp{<2003-09-16 Tue>}@footnote{In this
5499 simplest form, the day name is optional when you type the date yourself.
5500 However, any dates inserted or modified by Org will add that day name, for
5501 reading convenience.} or @samp{<2003-09-16 Tue 09:39>} or @samp{<2003-09-16
5502 Tue 12:00-12:30>}@footnote{This is inspired by the standard ISO 8601
5503 date/time format.  To use an alternative format, see @ref{Custom time
5504 format}.}.  A timestamp can appear anywhere in the headline or body of an Org
5505 tree entry.  Its presence causes entries to be shown on specific dates in the
5506 agenda (@pxref{Weekly/daily agenda}).  We distinguish:
5508 @table @var
5509 @item Plain timestamp; Event; Appointment
5510 @cindex timestamp
5511 @cindex appointment
5512 A simple timestamp just assigns a date/time to an item.  This is just
5513 like writing down an appointment or event in a paper agenda.  In the
5514 timeline and agenda displays, the headline of an entry associated with a
5515 plain timestamp will be shown exactly on that date.
5517 @example
5518 * Meet Peter at the movies
5519   <2006-11-01 Wed 19:15>
5520 * Discussion on climate change
5521   <2006-11-02 Thu 20:00-22:00>
5522 @end example
5524 @item Timestamp with repeater interval
5525 @cindex timestamp, with repeater interval
5526 A timestamp may contain a @emph{repeater interval}, indicating that it
5527 applies not only on the given date, but again and again after a certain
5528 interval of N days (d), weeks (w), months (m), or years (y).  The
5529 following will show up in the agenda every Wednesday:
5531 @example
5532 * Pick up Sam at school
5533   <2007-05-16 Wed 12:30 +1w>
5534 @end example
5536 @item Diary-style sexp entries
5537 For more complex date specifications, Org mode supports using the special
5538 sexp diary entries implemented in the Emacs calendar/diary
5539 package@footnote{When working with the standard diary sexp functions, you
5540 need to be very careful with the order of the arguments.  That order depend
5541 evilly on the variable @code{calendar-date-style} (or, for older Emacs
5542 versions, @code{european-calendar-style}).  For example, to specify a date
5543 December 12, 2005, the call might look like @code{(diary-date 12 1 2005)} or
5544 @code{(diary-date 1 12 2005)} or @code{(diary-date 2005 12 1)}, depending on
5545 the settings.  This has been the source of much confusion.  Org mode users
5546 can resort to special versions of these functions like @code{org-date} or
5547 @code{org-anniversary}.  These work just like the corresponding @code{diary-}
5548 functions, but with stable ISO order of arguments (year, month, day) wherever
5549 applicable, independent of the value of @code{calendar-date-style}.}.  For
5550 example with optional time
5552 @example
5553 * 22:00-23:00 The nerd meeting on every 2nd Thursday of the month
5554   <%%(diary-float t 4 2)>
5555 @end example
5557 @item Time/Date range
5558 @cindex timerange
5559 @cindex date range
5560 Two timestamps connected by @samp{--} denote a range.  The headline
5561 will be shown on the first and last day of the range, and on any dates
5562 that are displayed and fall in the range.  Here is an example:
5564 @example
5565 ** Meeting in Amsterdam
5566    <2004-08-23 Mon>--<2004-08-26 Thu>
5567 @end example
5569 @item Inactive timestamp
5570 @cindex timestamp, inactive
5571 @cindex inactive timestamp
5572 Just like a plain timestamp, but with square brackets instead of
5573 angular ones.  These timestamps are inactive in the sense that they do
5574 @emph{not} trigger an entry to show up in the agenda.
5576 @example
5577 * Gillian comes late for the fifth time
5578   [2006-11-01 Wed]
5579 @end example
5581 @end table
5583 @node Creating timestamps, Deadlines and scheduling, Timestamps, Dates and Times
5584 @section Creating timestamps
5585 @cindex creating timestamps
5586 @cindex timestamps, creating
5588 For Org mode to recognize timestamps, they need to be in the specific
5589 format.  All commands listed below produce timestamps in the correct
5590 format.
5592 @table @kbd
5593 @orgcmd{C-c .,org-time-stamp}
5594 Prompt for a date and insert a corresponding timestamp.  When the cursor is
5595 at an existing timestamp in the buffer, the command is used to modify this
5596 timestamp instead of inserting a new one.  When this command is used twice in
5597 succession, a time range is inserted.
5599 @orgcmd{C-c !,org-time-stamp-inactive}
5600 Like @kbd{C-c .}, but insert an inactive timestamp that will not cause
5601 an agenda entry.
5603 @kindex C-u C-c .
5604 @kindex C-u C-c !
5605 @item C-u C-c .
5606 @itemx C-u C-c !
5607 @vindex org-time-stamp-rounding-minutes
5608 Like @kbd{C-c .} and @kbd{C-c !}, but use the alternative format which
5609 contains date and time.  The default time can be rounded to multiples of 5
5610 minutes, see the option @code{org-time-stamp-rounding-minutes}.
5612 @orgkey{C-c C-c}
5613 Normalize timestamp, insert/fix day name if missing or wrong.
5615 @orgcmd{C-c <,org-date-from-calendar}
5616 Insert a timestamp corresponding to the cursor date in the Calendar.
5618 @orgcmd{C-c >,org-goto-calendar}
5619 Access the Emacs calendar for the current date.  If there is a
5620 timestamp in the current line, go to the corresponding date
5621 instead.
5623 @orgcmd{C-c C-o,org-open-at-point}
5624 Access the agenda for the date given by the timestamp or -range at
5625 point (@pxref{Weekly/daily agenda}).
5627 @orgcmdkkcc{S-@key{left},S-@key{right},org-timestamp-down-day,org-timestamp-up-day}
5628 Change date at cursor by one day.  These key bindings conflict with
5629 shift-selection and related modes (@pxref{Conflicts}).
5631 @orgcmdkkcc{S-@key{up},S-@key{down},org-timestamp-up,org-timestamp-down-down}
5632 Change the item under the cursor in a timestamp.  The cursor can be on a
5633 year, month, day, hour or minute.  When the timestamp contains a time range
5634 like @samp{15:30-16:30}, modifying the first time will also shift the second,
5635 shifting the time block with constant length.  To change the length, modify
5636 the second time.  Note that if the cursor is in a headline and not at a
5637 timestamp, these same keys modify the priority of an item.
5638 (@pxref{Priorities}).  The key bindings also conflict with shift-selection and
5639 related modes (@pxref{Conflicts}).
5641 @orgcmd{C-c C-y,org-evaluate-time-range}
5642 @cindex evaluate time range
5643 Evaluate a time range by computing the difference between start and end.
5644 With a prefix argument, insert result after the time range (in a table: into
5645 the following column).
5646 @end table
5649 @menu
5650 * The date/time prompt::        How Org mode helps you entering date and time
5651 * Custom time format::          Making dates look different
5652 @end menu
5654 @node The date/time prompt, Custom time format, Creating timestamps, Creating timestamps
5655 @subsection The date/time prompt
5656 @cindex date, reading in minibuffer
5657 @cindex time, reading in minibuffer
5659 @vindex org-read-date-prefer-future
5660 When Org mode prompts for a date/time, the default is shown in default
5661 date/time format, and the prompt therefore seems to ask for a specific
5662 format.  But it will in fact accept date/time information in a variety of
5663 formats.  Generally, the information should start at the beginning of the
5664 string.  Org mode will find whatever information is in
5665 there and derive anything you have not specified from the @emph{default date
5666 and time}.  The default is usually the current date and time, but when
5667 modifying an existing timestamp, or when entering the second stamp of a
5668 range, it is taken from the stamp in the buffer.  When filling in
5669 information, Org mode assumes that most of the time you will want to enter a
5670 date in the future: if you omit the month/year and the given day/month is
5671 @i{before} today, it will assume that you mean a future date@footnote{See the
5672 variable @code{org-read-date-prefer-future}.  You may set that variable to
5673 the symbol @code{time} to even make a time before now shift the date to
5674 tomorrow.}.  If the date has been automatically shifted into the future, the
5675 time prompt will show this with @samp{(=>F).}
5677 For example, let's assume that today is @b{June 13, 2006}.  Here is how
5678 various inputs will be interpreted, the items filled in by Org mode are
5679 in @b{bold}.
5681 @example
5682 3-2-5         @result{} 2003-02-05
5683 2/5/3         @result{} 2003-02-05
5684 14            @result{} @b{2006}-@b{06}-14
5685 12            @result{} @b{2006}-@b{07}-12
5686 2/5           @result{} @b{2007}-02-05
5687 Fri           @result{} nearest Friday (default date or later)
5688 sep 15        @result{} @b{2006}-09-15
5689 feb 15        @result{} @b{2007}-02-15
5690 sep 12 9      @result{} 2009-09-12
5691 12:45         @result{} @b{2006}-@b{06}-@b{13} 12:45
5692 22 sept 0:34  @result{} @b{2006}-09-22 0:34
5693 w4            @result{} ISO week for of the current year @b{2006}
5694 2012 w4 fri   @result{} Friday of ISO week 4 in 2012
5695 2012-w04-5    @result{} Same as above
5696 @end example
5698 Furthermore you can specify a relative date by giving, as the
5699 @emph{first} thing in the input: a plus/minus sign, a number and a
5700 letter ([dwmy]) to indicate change in days, weeks, months, or years.  With a
5701 single plus or minus, the date is always relative to today.  With a
5702 double plus or minus, it is relative to the default date.  If instead of
5703 a single letter, you use the abbreviation of day name, the date will be
5704 the Nth such day, e.g.:
5706 @example
5707 +0            @result{} today
5708 .             @result{} today
5709 +4d           @result{} four days from today
5710 +4            @result{} same as above
5711 +2w           @result{} two weeks from today
5712 ++5           @result{} five days from default date
5713 +2tue         @result{} second Tuesday from now.
5714 @end example
5716 @vindex parse-time-months
5717 @vindex parse-time-weekdays
5718 The function understands English month and weekday abbreviations.  If
5719 you want to use unabbreviated names and/or other languages, configure
5720 the variables @code{parse-time-months} and @code{parse-time-weekdays}.
5722 @vindex org-read-date-force-compatible-dates
5723 Not all dates can be represented in a given Emacs implementation.  By default
5724 Org mode forces dates into the compatibility range 1970--2037 which works on
5725 all Emacs implementations.  If you want to use dates outside of this range,
5726 read the docstring of the variable
5727 @code{org-read-date-force-compatible-dates}.
5729 You can specify a time range by giving start and end times or by giving a
5730 start time and a duration (in HH:MM format).  Use one or two dash(es) as the
5731 separator in the former case and use '+' as the separator in the latter
5732 case, e.g.:
5734 @example
5735 11am-1:15pm    @result{} 11:00-13:15
5736 11am--1:15pm   @result{} same as above
5737 11am+2:15      @result{} same as above
5738 @end example
5740 @cindex calendar, for selecting date
5741 @vindex org-popup-calendar-for-date-prompt
5742 Parallel to the minibuffer prompt, a calendar is popped up@footnote{If
5743 you don't need/want the calendar, configure the variable
5744 @code{org-popup-calendar-for-date-prompt}.}.  When you exit the date
5745 prompt, either by clicking on a date in the calendar, or by pressing
5746 @key{RET}, the date selected in the calendar will be combined with the
5747 information entered at the prompt.  You can control the calendar fully
5748 from the minibuffer:
5750 @kindex <
5751 @kindex >
5752 @kindex M-v
5753 @kindex C-v
5754 @kindex mouse-1
5755 @kindex S-@key{right}
5756 @kindex S-@key{left}
5757 @kindex S-@key{down}
5758 @kindex S-@key{up}
5759 @kindex M-S-@key{right}
5760 @kindex M-S-@key{left}
5761 @kindex @key{RET}
5762 @example
5763 @key{RET}           @r{Choose date at cursor in calendar.}
5764 mouse-1        @r{Select date by clicking on it.}
5765 S-@key{right}/@key{left}     @r{One day forward/backward.}
5766 S-@key{down}/@key{up}     @r{One week forward/backward.}
5767 M-S-@key{right}/@key{left}   @r{One month forward/backward.}
5768 > / <          @r{Scroll calendar forward/backward by one month.}
5769 M-v / C-v      @r{Scroll calendar forward/backward by 3 months.}
5770 @end example
5772 @vindex org-read-date-display-live
5773 The actions of the date/time prompt may seem complex, but I assure you they
5774 will grow on you, and you will start getting annoyed by pretty much any other
5775 way of entering a date/time out there.  To help you understand what is going
5776 on, the current interpretation of your input will be displayed live in the
5777 minibuffer@footnote{If you find this distracting, turn the display of with
5778 @code{org-read-date-display-live}.}.
5780 @node Custom time format,  , The date/time prompt, Creating timestamps
5781 @subsection Custom time format
5782 @cindex custom date/time format
5783 @cindex time format, custom
5784 @cindex date format, custom
5786 @vindex org-display-custom-times
5787 @vindex org-time-stamp-custom-formats
5788 Org mode uses the standard ISO notation for dates and times as it is
5789 defined in ISO 8601.  If you cannot get used to this and require another
5790 representation of date and time to keep you happy, you can get it by
5791 customizing the variables @code{org-display-custom-times} and
5792 @code{org-time-stamp-custom-formats}.
5794 @table @kbd
5795 @orgcmd{C-c C-x C-t,org-toggle-time-stamp-overlays}
5796 Toggle the display of custom formats for dates and times.
5797 @end table
5799 @noindent
5800 Org mode needs the default format for scanning, so the custom date/time
5801 format does not @emph{replace} the default format---instead it is put
5802 @emph{over} the default format using text properties.  This has the
5803 following consequences:
5804 @itemize @bullet
5805 @item
5806 You cannot place the cursor onto a timestamp anymore, only before or
5807 after.
5808 @item
5809 The @kbd{S-@key{up}/@key{down}} keys can no longer be used to adjust
5810 each component of a timestamp.  If the cursor is at the beginning of
5811 the stamp, @kbd{S-@key{up}/@key{down}} will change the stamp by one day,
5812 just like @kbd{S-@key{left}/@key{right}}.  At the end of the stamp, the
5813 time will be changed by one minute.
5814 @item
5815 If the timestamp contains a range of clock times or a repeater, these
5816 will not be overlaid, but remain in the buffer as they were.
5817 @item
5818 When you delete a timestamp character-by-character, it will only
5819 disappear from the buffer after @emph{all} (invisible) characters
5820 belonging to the ISO timestamp have been removed.
5821 @item
5822 If the custom timestamp format is longer than the default and you are
5823 using dates in tables, table alignment will be messed up.  If the custom
5824 format is shorter, things do work as expected.
5825 @end itemize
5828 @node Deadlines and scheduling, Clocking work time, Creating timestamps, Dates and Times
5829 @section Deadlines and scheduling
5831 A timestamp may be preceded by special keywords to facilitate planning:
5833 @table @var
5834 @item DEADLINE
5835 @cindex DEADLINE keyword
5837 Meaning: the task (most likely a TODO item, though not necessarily) is supposed
5838 to be finished on that date.
5840 @vindex org-deadline-warning-days
5841 @vindex org-agenda-skip-deadline-prewarning-if-scheduled
5842 On the deadline date, the task will be listed in the agenda.  In
5843 addition, the agenda for @emph{today} will carry a warning about the
5844 approaching or missed deadline, starting
5845 @code{org-deadline-warning-days} before the due date, and continuing
5846 until the entry is marked DONE@.  An example:
5848 @example
5849 *** TODO write article about the Earth for the Guide
5850     DEADLINE: <2004-02-29 Sun>
5851     The editor in charge is [[bbdb:Ford Prefect]]
5852 @end example
5854 You can specify a different lead time for warnings for a specific
5855 deadlines using the following syntax.  Here is an example with a warning
5856 period of 5 days @code{DEADLINE: <2004-02-29 Sun -5d>}.  This warning is
5857 deactivated if the task get scheduled and you set
5858 @code{org-agenda-skip-deadline-prewarning-if-scheduled} to @code{t}.
5860 @item SCHEDULED
5861 @cindex SCHEDULED keyword
5863 Meaning: you are planning to start working on that task on the given
5864 date.
5866 @vindex org-agenda-skip-scheduled-if-done
5867 The headline will be listed under the given date@footnote{It will still
5868 be listed on that date after it has been marked DONE@.  If you don't like
5869 this, set the variable @code{org-agenda-skip-scheduled-if-done}.}.  In
5870 addition, a reminder that the scheduled date has passed will be present
5871 in the compilation for @emph{today}, until the entry is marked DONE, i.e.,
5872 the task will automatically be forwarded until completed.
5874 @example
5875 *** TODO Call Trillian for a date on New Years Eve.
5876     SCHEDULED: <2004-12-25 Sat>
5877 @end example
5879 @vindex org-scheduled-delay-days
5880 @vindex org-agenda-skip-scheduled-delay-if-deadline
5881 If you want to @emph{delay} the display of this task in the agenda, use
5882 @code{SCHEDULED: <2004-12-25 Sat -2d>}: the task is still scheduled on the
5883 25th but will appear two days later.  In case the task contains a repeater,
5884 the delay is considered to affect all occurrences; if you want it to affect
5885 only the first scheduled occurrence of the task, use @code{--2d} instead.
5886 See @code{org-scheduled-delay-days} and
5887 @code{org-agenda-skip-scheduled-delay-if-deadline} for details on how to
5888 control this globally or per agenda.
5890 @noindent
5891 @b{Important:} Scheduling an item in Org mode should @i{not} be
5892 understood in the same way that we understand @i{scheduling a meeting}.
5893 Setting a date for a meeting is just a simple appointment, you should
5894 mark this entry with a simple plain timestamp, to get this item shown
5895 on the date where it applies.  This is a frequent misunderstanding by
5896 Org users.  In Org mode, @i{scheduling} means setting a date when you
5897 want to start working on an action item.
5898 @end table
5900 You may use timestamps with repeaters in scheduling and deadline
5901 entries.  Org mode will issue early and late warnings based on the
5902 assumption that the timestamp represents the @i{nearest instance} of
5903 the repeater.  However, the use of diary sexp entries like
5905 @code{<%%(diary-float t 42)>}
5907 in scheduling and deadline timestamps is limited.  Org mode does not
5908 know enough about the internals of each sexp function to issue early and
5909 late warnings.  However, it will show the item on each day where the
5910 sexp entry matches.
5912 @menu
5913 * Inserting deadline/schedule::  Planning items
5914 * Repeated tasks::              Items that show up again and again
5915 @end menu
5917 @node Inserting deadline/schedule, Repeated tasks, Deadlines and scheduling, Deadlines and scheduling
5918 @subsection Inserting deadlines or schedules
5920 The following commands allow you to quickly insert@footnote{The @samp{SCHEDULED} and
5921 @samp{DEADLINE} dates are inserted on the line right below the headline.  Don't put
5922 any text between this line and the headline.} a deadline or to schedule
5923 an item:
5925 @table @kbd
5927 @orgcmd{C-c C-d,org-deadline}
5928 Insert @samp{DEADLINE} keyword along with a stamp.  The insertion will happen
5929 in the line directly following the headline.  Any CLOSED timestamp will be
5930 removed.  When called with a prefix arg, an existing deadline will be removed
5931 from the entry.  Depending on the variable @code{org-log-redeadline}@footnote{with corresponding
5932 @code{#+STARTUP} keywords @code{logredeadline}, @code{lognoteredeadline},
5933 and @code{nologredeadline}}, a note will be taken when changing an existing
5934 deadline.
5936 @orgcmd{C-c C-s,org-schedule}
5937 Insert @samp{SCHEDULED} keyword along with a stamp.  The insertion will
5938 happen in the line directly following the headline.  Any CLOSED timestamp
5939 will be removed.  When called with a prefix argument, remove the scheduling
5940 date from the entry.  Depending on the variable
5941 @code{org-log-reschedule}@footnote{with corresponding @code{#+STARTUP}
5942 keywords @code{logreschedule}, @code{lognotereschedule}, and
5943 @code{nologreschedule}}, a note will be taken when changing an existing
5944 scheduling time.
5946 @orgcmd{C-c C-x C-k,org-mark-entry-for-agenda-action}
5947 @kindex k a
5948 @kindex k s
5949 Mark the current entry for agenda action.  After you have marked the entry
5950 like this, you can open the agenda or the calendar to find an appropriate
5951 date.  With the cursor on the selected date, press @kbd{k s} or @kbd{k d} to
5952 schedule the marked item.
5954 @orgcmd{C-c / d,org-check-deadlines}
5955 @cindex sparse tree, for deadlines
5956 @vindex org-deadline-warning-days
5957 Create a sparse tree with all deadlines that are either past-due, or
5958 which will become due within @code{org-deadline-warning-days}.
5959 With @kbd{C-u} prefix, show all deadlines in the file.  With a numeric
5960 prefix, check that many days.  For example, @kbd{C-1 C-c / d} shows
5961 all deadlines due tomorrow.
5963 @orgcmd{C-c / b,org-check-before-date}
5964 Sparse tree for deadlines and scheduled items before a given date.
5966 @orgcmd{C-c / a,org-check-after-date}
5967 Sparse tree for deadlines and scheduled items after a given date.
5968 @end table
5970 Note that @code{org-schedule} and @code{org-deadline} supports
5971 setting the date by indicating a relative time: e.g., +1d will set
5972 the date to the next day after today, and --1w will set the date
5973 to the previous week before any current timestamp.
5975 @node Repeated tasks,  , Inserting deadline/schedule, Deadlines and scheduling
5976 @subsection Repeated tasks
5977 @cindex tasks, repeated
5978 @cindex repeated tasks
5980 Some tasks need to be repeated again and again.  Org mode helps to
5981 organize such tasks using a so-called repeater in a DEADLINE, SCHEDULED,
5982 or plain timestamp.  In the following example
5983 @example
5984 ** TODO Pay the rent
5985    DEADLINE: <2005-10-01 Sat +1m>
5986 @end example
5987 @noindent
5988 the @code{+1m} is a repeater; the intended interpretation is that the task
5989 has a deadline on <2005-10-01> and repeats itself every (one) month starting
5990 from that time.  You can use yearly, monthly, weekly, daily and hourly repeat
5991 cookies by using the @code{y/w/m/d/h} letters.  If you need both a repeater
5992 and a special warning period in a deadline entry, the repeater should come
5993 first and the warning period last: @code{DEADLINE: <2005-10-01 Sat +1m -3d>}.
5995 @vindex org-todo-repeat-to-state
5996 Deadlines and scheduled items produce entries in the agenda when they are
5997 over-due, so it is important to be able to mark such an entry as completed
5998 once you have done so.  When you mark a DEADLINE or a SCHEDULE with the TODO
5999 keyword DONE, it will no longer produce entries in the agenda.  The problem
6000 with this is, however, that then also the @emph{next} instance of the
6001 repeated entry will not be active.  Org mode deals with this in the following
6002 way: When you try to mark such an entry DONE (using @kbd{C-c C-t}), it will
6003 shift the base date of the repeating timestamp by the repeater interval, and
6004 immediately set the entry state back to TODO@footnote{In fact, the target
6005 state is taken from, in this sequence, the @code{REPEAT_TO_STATE} property or
6006 the variable @code{org-todo-repeat-to-state}.  If neither of these is
6007 specified, the target state defaults to the first state of the TODO state
6008 sequence.}.  In the example above, setting the state to DONE would actually
6009 switch the date like this:
6011 @example
6012 ** TODO Pay the rent
6013    DEADLINE: <2005-11-01 Tue +1m>
6014 @end example
6016 @vindex org-log-repeat
6017 A timestamp@footnote{You can change this using the option
6018 @code{org-log-repeat}, or the @code{#+STARTUP} options @code{logrepeat},
6019 @code{lognoterepeat}, and @code{nologrepeat}.  With @code{lognoterepeat}, you
6020 will also be prompted for a note.} will be added under the deadline, to keep
6021 a record that you actually acted on the previous instance of this deadline.
6023 As a consequence of shifting the base date, this entry will no longer be
6024 visible in the agenda when checking past dates, but all future instances
6025 will be visible.
6027 With the @samp{+1m} cookie, the date shift will always be exactly one
6028 month.  So if you have not paid the rent for three months, marking this
6029 entry DONE will still keep it as an overdue deadline.  Depending on the
6030 task, this may not be the best way to handle it.  For example, if you
6031 forgot to call your father for 3 weeks, it does not make sense to call
6032 him 3 times in a single day to make up for it.  Finally, there are tasks
6033 like changing batteries which should always repeat a certain time
6034 @i{after} the last time you did it.  For these tasks, Org mode has
6035 special repeaters  @samp{++} and @samp{.+}.  For example:
6037 @example
6038 ** TODO Call Father
6039    DEADLINE: <2008-02-10 Sun ++1w>
6040    Marking this DONE will shift the date by at least one week,
6041    but also by as many weeks as it takes to get this date into
6042    the future.  However, it stays on a Sunday, even if you called
6043    and marked it done on Saturday.
6044 ** TODO Check the batteries in the smoke detectors
6045    DEADLINE: <2005-11-01 Tue .+1m>
6046    Marking this DONE will shift the date to one month after
6047    today.
6048 @end example
6050 You may have both scheduling and deadline information for a specific
6051 task---just make sure that the repeater intervals on both are the same.
6053 An alternative to using a repeater is to create a number of copies of a task
6054 subtree, with dates shifted in each copy.  The command @kbd{C-c C-x c} was
6055 created for this purpose, it is described in @ref{Structure editing}.
6058 @node Clocking work time, Effort estimates, Deadlines and scheduling, Dates and Times
6059 @section Clocking work time
6060 @cindex clocking time
6061 @cindex time clocking
6063 Org mode allows you to clock the time you spend on specific tasks in a
6064 project.  When you start working on an item, you can start the clock.  When
6065 you stop working on that task, or when you mark the task done, the clock is
6066 stopped and the corresponding time interval is recorded.  It also computes
6067 the total time spent on each subtree@footnote{Clocking only works if all
6068 headings are indented with less than 30 stars.  This is a hardcoded
6069 limitation of `lmax' in `org-clock-sum'.} of a project.  And it remembers a
6070 history or tasks recently clocked, to that you can jump quickly between a
6071 number of tasks absorbing your time.
6073 To save the clock history across Emacs sessions, use
6074 @lisp
6075 (setq org-clock-persist 'history)
6076 (org-clock-persistence-insinuate)
6077 @end lisp
6078 When you clock into a new task after resuming Emacs, the incomplete
6079 clock@footnote{To resume the clock under the assumption that you have worked
6080 on this task while outside Emacs, use @code{(setq org-clock-persist t)}.}
6081 will be found (@pxref{Resolving idle time}) and you will be prompted about
6082 what to do with it.
6084 @menu
6085 * Clocking commands::           Starting and stopping a clock
6086 * The clock table::             Detailed reports
6087 * Resolving idle time::         Resolving time when you've been idle
6088 @end menu
6090 @node Clocking commands, The clock table, Clocking work time, Clocking work time
6091 @subsection Clocking commands
6093 @table @kbd
6094 @orgcmd{C-c C-x C-i,org-clock-in}
6095 @vindex org-clock-into-drawer
6096 @vindex org-clock-continuously
6097 @cindex property, LOG_INTO_DRAWER
6098 Start the clock on the current item (clock-in).  This inserts the CLOCK
6099 keyword together with a timestamp.  If this is not the first clocking of
6100 this item, the multiple CLOCK lines will be wrapped into a
6101 @code{:LOGBOOK:} drawer (see also the variable
6102 @code{org-clock-into-drawer}).  You can also overrule
6103 the setting of this variable for a subtree by setting a
6104 @code{CLOCK_INTO_DRAWER} or @code{LOG_INTO_DRAWER} property.
6105 When called with a @kbd{C-u} prefix argument,
6106 select the task from a list of recently clocked tasks.  With two @kbd{C-u
6107 C-u} prefixes, clock into the task at point and mark it as the default task;
6108 the default task will then always be available with letter @kbd{d} when
6109 selecting a clocking task.  With three @kbd{C-u C-u C-u} prefixes, force
6110 continuous clocking by starting the clock when the last clock stopped.@*
6111 @cindex property: CLOCK_MODELINE_TOTAL
6112 @cindex property: LAST_REPEAT
6113 @vindex org-clock-modeline-total
6114 While the clock is running, the current clocking time is shown in the mode
6115 line, along with the title of the task.  The clock time shown will be all
6116 time ever clocked for this task and its children.  If the task has an effort
6117 estimate (@pxref{Effort estimates}), the mode line displays the current
6118 clocking time against it@footnote{To add an effort estimate ``on the fly'',
6119 hook a function doing this to @code{org-clock-in-prepare-hook}.}  If the task
6120 is a repeating one (@pxref{Repeated tasks}), only the time since the last
6121 reset of the task @footnote{as recorded by the @code{LAST_REPEAT} property}
6122 will be shown.  More control over what time is shown can be exercised with
6123 the @code{CLOCK_MODELINE_TOTAL} property.  It may have the values
6124 @code{current} to show only the current clocking instance, @code{today} to
6125 show all time clocked on this tasks today (see also the variable
6126 @code{org-extend-today-until}), @code{all} to include all time, or
6127 @code{auto} which is the default@footnote{See also the variable
6128 @code{org-clock-modeline-total}.}.@* Clicking with @kbd{mouse-1} onto the
6129 mode line entry will pop up a menu with clocking options.
6131 @orgcmd{C-c C-x C-o,org-clock-out}
6132 @vindex org-log-note-clock-out
6133 Stop the clock (clock-out).  This inserts another timestamp at the same
6134 location where the clock was last started.  It also directly computes
6135 the resulting time in inserts it after the time range as @samp{=>
6136 HH:MM}.  See the variable @code{org-log-note-clock-out} for the
6137 possibility to record an additional note together with the clock-out
6138 timestamp@footnote{The corresponding in-buffer setting is:
6139 @code{#+STARTUP: lognoteclock-out}}.
6140 @orgcmd{C-c C-x C-x,org-clock-in-last}
6141 @vindex org-clock-continuously
6142 Reclock the last clocked task.  With one @kbd{C-u} prefix argument,
6143 select the task from the clock history.  With two @kbd{C-u} prefixes,
6144 force continuous clocking by starting the clock when the last clock
6145 stopped.
6146 @orgcmd{C-c C-x C-e,org-clock-modify-effort-estimate}
6147 Update the effort estimate for the current clock task.
6148 @kindex C-c C-y
6149 @kindex C-c C-c
6150 @orgcmdkkc{C-c C-c,C-c C-y,org-evaluate-time-range}
6151 Recompute the time interval after changing one of the timestamps.  This
6152 is only necessary if you edit the timestamps directly.  If you change
6153 them with @kbd{S-@key{cursor}} keys, the update is automatic.
6154 @orgcmd{C-S-@key{up/down},org-clock-timestamps-up/down}
6155 On @code{CLOCK} log lines, increase/decrease both timestamps so that the
6156 clock duration keeps the same.
6157 @orgcmd{S-M-@key{up/down},org-timestamp-up/down}
6158 On @code{CLOCK} log lines, increase/decrease the timestamp at point and
6159 the one of the previous (or the next clock) timestamp by the same duration.
6160 For example, if you hit @kbd{S-M-@key{up}} to increase a clocked-out timestamp
6161 by five minutes, then the clocked-in timestamp of the next clock will be
6162 increased by five minutes.
6163 @orgcmd{C-c C-t,org-todo}
6164 Changing the TODO state of an item to DONE automatically stops the clock
6165 if it is running in this same item.
6166 @orgcmd{C-c C-x C-q,org-clock-cancel}
6167 Cancel the current clock.  This is useful if a clock was started by
6168 mistake, or if you ended up working on something else.
6169 @orgcmd{C-c C-x C-j,org-clock-goto}
6170 Jump to the headline of the currently clocked in task.  With a @kbd{C-u}
6171 prefix arg, select the target task from a list of recently clocked tasks.
6172 @orgcmd{C-c C-x C-d,org-clock-display}
6173 @vindex org-remove-highlights-with-change
6174 Display time summaries for each subtree in the current buffer.  This puts
6175 overlays at the end of each headline, showing the total time recorded under
6176 that heading, including the time of any subheadings.  You can use visibility
6177 cycling to study the tree, but the overlays disappear when you change the
6178 buffer (see variable @code{org-remove-highlights-with-change}) or press
6179 @kbd{C-c C-c}.
6180 @end table
6182 The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
6183 the agenda (@pxref{Weekly/daily agenda}) to show which tasks have been
6184 worked on or closed during a day.
6186 @strong{Important:} note that both @code{org-clock-out} and
6187 @code{org-clock-in-last} can have a global keybinding and will not
6188 modify the window disposition.
6190 @node The clock table, Resolving idle time, Clocking commands, Clocking work time
6191 @subsection The clock table
6192 @cindex clocktable, dynamic block
6193 @cindex report, of clocked time
6195 Org mode can produce quite complex reports based on the time clocking
6196 information.  Such a report is called a @emph{clock table}, because it is
6197 formatted as one or several Org tables.
6199 @table @kbd
6200 @orgcmd{C-c C-x C-r,org-clock-report}
6201 Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
6202 report as an Org mode table into the current file.  When the cursor is
6203 at an existing clock table, just update it.  When called with a prefix
6204 argument, jump to the first clock report in the current document and
6205 update it.  The clock table always includes also trees with
6206 @code{:ARCHIVE:} tag.
6207 @orgcmdkkc{C-c C-c,C-c C-x C-u,org-dblock-update}
6208 Update dynamic block at point.  The cursor needs to be in the
6209 @code{#+BEGIN} line of the dynamic block.
6210 @orgkey{C-u C-c C-x C-u}
6211 Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
6212 you have several clock table blocks in a buffer.
6213 @orgcmdkxkc{S-@key{left},S-@key{right},org-clocktable-try-shift}
6214 Shift the current @code{:block} interval and update the table.  The cursor
6215 needs to be in the @code{#+BEGIN: clocktable} line for this command.  If
6216 @code{:block} is @code{today}, it will be shifted to @code{today-1} etc.
6217 @end table
6220 Here is an example of the frame for a clock table as it is inserted into the
6221 buffer with the @kbd{C-c C-x C-r} command:
6223 @cindex #+BEGIN, clocktable
6224 @example
6225 #+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
6226 #+END: clocktable
6227 @end example
6228 @noindent
6229 @vindex org-clocktable-defaults
6230 The @samp{BEGIN} line and specify a number of options to define the scope,
6231 structure, and formatting of the report.  Defaults for all these options can
6232 be configured in the variable @code{org-clocktable-defaults}.
6234 @noindent First there are options that determine which clock entries are to
6235 be selected:
6236 @example
6237 :maxlevel    @r{Maximum level depth to which times are listed in the table.}
6238              @r{Clocks at deeper levels will be summed into the upper level.}
6239 :scope       @r{The scope to consider.  This can be any of the following:}
6240              nil        @r{the current buffer or narrowed region}
6241              file       @r{the full current buffer}
6242              subtree    @r{the subtree where the clocktable is located}
6243              tree@var{N}      @r{the surrounding level @var{N} tree, for example @code{tree3}}
6244              tree       @r{the surrounding level 1 tree}
6245              agenda     @r{all agenda files}
6246              ("file"..) @r{scan these files}
6247              file-with-archives    @r{current file and its archives}
6248              agenda-with-archives  @r{all agenda files, including archives}
6249 :block       @r{The time block to consider.  This block is specified either}
6250              @r{absolute, or relative to the current time and may be any of}
6251              @r{these formats:}
6252              2007-12-31    @r{New year eve 2007}
6253              2007-12       @r{December 2007}
6254              2007-W50      @r{ISO-week 50 in 2007}
6255              2007-Q2       @r{2nd quarter in 2007}
6256              2007          @r{the year 2007}
6257              today, yesterday, today-@var{N}          @r{a relative day}
6258              thisweek, lastweek, thisweek-@var{N}     @r{a relative week}
6259              thismonth, lastmonth, thismonth-@var{N}  @r{a relative month}
6260              thisyear, lastyear, thisyear-@var{N}     @r{a relative year}
6261              @r{Use @kbd{S-@key{left}/@key{right}} keys to shift the time interval.}
6262 :tstart      @r{A time string specifying when to start considering times.}
6263              @r{Relative times like @code{"<-2w>"} can also be used.  See}
6264              @r{@ref{Matching tags and properties} for relative time syntax.}
6265 :tend        @r{A time string specifying when to stop considering times.}
6266              @r{Relative times like @code{"<now>"} can also be used.  See}
6267              @r{@ref{Matching tags and properties} for relative time syntax.}
6268 :wstart      @r{The starting day of the week.  The default is 1 for monday.}
6269 :step        @r{@code{week} or @code{day}, to split the table into chunks.}
6270              @r{To use this, @code{:block} or @code{:tstart}, @code{:tend} are needed.}
6271 :stepskip0   @r{Do not show steps that have zero time.}
6272 :fileskip0   @r{Do not show table sections from files which did not contribute.}
6273 :tags        @r{A tags match to select entries that should contribute.  See}
6274              @r{@ref{Matching tags and properties} for the match syntax.}
6275 @end example
6277 Then there are options which determine the formatting of the table.  There
6278 options are interpreted by the function @code{org-clocktable-write-default},
6279 but you can specify your own function using the @code{:formatter} parameter.
6280 @example
6281 :emphasize   @r{When @code{t}, emphasize level one and level two items.}
6282 :lang        @r{Language@footnote{Language terms can be set through the variable @code{org-clock-clocktable-language-setup}.} to use for descriptive cells like "Task".}
6283 :link        @r{Link the item headlines in the table to their origins.}
6284 :narrow      @r{An integer to limit the width of the headline column in}
6285              @r{the org table.  If you write it like @samp{50!}, then the}
6286              @r{headline will also be shortened in export.}
6287 :indent      @r{Indent each headline field according to its level.}
6288 :tcolumns    @r{Number of columns to be used for times.  If this is smaller}
6289              @r{than @code{:maxlevel}, lower levels will be lumped into one column.}
6290 :level       @r{Should a level number column be included?}
6291 :compact     @r{Abbreviation for @code{:level nil :indent t :narrow 40! :tcolumns 1}}
6292              @r{All are overwritten except if there is an explicit @code{:narrow}}
6293 :timestamp   @r{A timestamp for the entry, when available.  Look for SCHEDULED,}
6294              @r{DEADLINE, TIMESTAMP and TIMESTAMP_IA, in this order.}
6295 :properties  @r{List of properties that should be shown in the table.  Each}
6296              @r{property will get its own column.}
6297 :inherit-props @r{When this flag is @code{t}, the values for @code{:properties} will be inherited.}
6298 :formula     @r{Content of a @code{#+TBLFM} line to be added and evaluated.}
6299              @r{As a special case, @samp{:formula %} adds a column with % time.}
6300              @r{If you do not specify a formula here, any existing formula}
6301              @r{below the clock table will survive updates and be evaluated.}
6302 :formatter   @r{A function to format clock data and insert it into the buffer.}
6303 @end example
6304 To get a clock summary of the current level 1 tree, for the current
6305 day, you could write
6306 @example
6307 #+BEGIN: clocktable :maxlevel 2 :block today :scope tree1 :link t
6308 #+END: clocktable
6309 @end example
6310 @noindent
6311 and to use a specific time range you could write@footnote{Note that all
6312 parameters must be specified in a single line---the line is broken here
6313 only to fit it into the manual.}
6314 @example
6315 #+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>"
6316                     :tend "<2006-08-10 Thu 12:00>"
6317 #+END: clocktable
6318 @end example
6319 A range starting a week ago and ending right now could be written as
6320 @example
6321 #+BEGIN: clocktable :tstart "<-1w>" :tend "<now>"
6322 #+END: clocktable
6323 @end example
6324 A summary of the current subtree with % times would be
6325 @example
6326 #+BEGIN: clocktable :scope subtree :link t :formula %
6327 #+END: clocktable
6328 @end example
6329 A horizontally compact representation of everything clocked during last week
6330 would be
6331 @example
6332 #+BEGIN: clocktable :scope agenda :block lastweek :compact t
6333 #+END: clocktable
6334 @end example
6336 @node Resolving idle time,  , The clock table, Clocking work time
6337 @subsection Resolving idle time and continuous clocking
6339 @subsubheading Resolving idle time
6340 @cindex resolve idle time
6341 @vindex org-clock-x11idle-program-name
6343 @cindex idle, resolve, dangling
6344 If you clock in on a work item, and then walk away from your
6345 computer---perhaps to take a phone call---you often need to ``resolve'' the
6346 time you were away by either subtracting it from the current clock, or
6347 applying it to another one.
6349 @vindex org-clock-idle-time
6350 By customizing the variable @code{org-clock-idle-time} to some integer, such
6351 as 10 or 15, Emacs can alert you when you get back to your computer after
6352 being idle for that many minutes@footnote{On computers using Mac OS X,
6353 idleness is based on actual user idleness, not just Emacs' idle time.  For
6354 X11, you can install a utility program @file{x11idle.c}, available in the
6355 @code{contrib/scripts} directory of the Org git distribution, or install the
6356 @file{xprintidle} package and set it to the variable
6357 @code{org-clock-x11idle-program-name} if you are running Debian, to get the
6358 same general treatment of idleness.  On other systems, idle time refers to
6359 Emacs idle time only.}, and ask what you want to do with the idle time.
6360 There will be a question waiting for you when you get back, indicating how
6361 much idle time has passed (constantly updated with the current amount), as
6362 well as a set of choices to correct the discrepancy:
6364 @table @kbd
6365 @item k
6366 To keep some or all of the minutes and stay clocked in, press @kbd{k}.  Org
6367 will ask how many of the minutes to keep.  Press @key{RET} to keep them all,
6368 effectively changing nothing, or enter a number to keep that many minutes.
6369 @item K
6370 If you use the shift key and press @kbd{K}, it will keep however many minutes
6371 you request and then immediately clock out of that task.  If you keep all of
6372 the minutes, this is the same as just clocking out of the current task.
6373 @item s
6374 To keep none of the minutes, use @kbd{s} to subtract all the away time from
6375 the clock, and then check back in from the moment you returned.
6376 @item S
6377 To keep none of the minutes and just clock out at the start of the away time,
6378 use the shift key and press @kbd{S}.  Remember that using shift will always
6379 leave you clocked out, no matter which option you choose.
6380 @item C
6381 To cancel the clock altogether, use @kbd{C}.  Note that if instead of
6382 canceling you subtract the away time, and the resulting clock amount is less
6383 than a minute, the clock will still be canceled rather than clutter up the
6384 log with an empty entry.
6385 @end table
6387 What if you subtracted those away minutes from the current clock, and now
6388 want to apply them to a new clock?  Simply clock in to any task immediately
6389 after the subtraction.  Org will notice that you have subtracted time ``on
6390 the books'', so to speak, and will ask if you want to apply those minutes to
6391 the next task you clock in on.
6393 There is one other instance when this clock resolution magic occurs.  Say you
6394 were clocked in and hacking away, and suddenly your cat chased a mouse who
6395 scared a hamster that crashed into your UPS's power button!  You suddenly
6396 lose all your buffers, but thanks to auto-save you still have your recent Org
6397 mode changes, including your last clock in.
6399 If you restart Emacs and clock into any task, Org will notice that you have a
6400 dangling clock which was never clocked out from your last session.  Using
6401 that clock's starting time as the beginning of the unaccounted-for period,
6402 Org will ask how you want to resolve that time.  The logic and behavior is
6403 identical to dealing with away time due to idleness; it is just happening due
6404 to a recovery event rather than a set amount of idle time.
6406 You can also check all the files visited by your Org agenda for dangling
6407 clocks at any time using @kbd{M-x org-resolve-clocks RET} (or @kbd{C-c C-x C-z}).
6409 @subsubheading Continuous clocking
6410 @cindex continuous clocking
6411 @vindex org-clock-continuously
6413 You may want to start clocking from the time when you clocked out the
6414 previous task.  To enable this systematically, set @code{org-clock-continuously}
6415 to @code{t}.  Each time you clock in, Org retrieves the clock-out time of the
6416 last clocked entry for this session, and start the new clock from there.
6418 If you only want this from time to time, use three universal prefix arguments
6419 with @code{org-clock-in} and two @kbd{C-u C-u} with @code{org-clock-in-last}.
6421 @node Effort estimates, Relative timer, Clocking work time, Dates and Times
6422 @section Effort estimates
6423 @cindex effort estimates
6425 @cindex property, Effort
6426 @vindex org-effort-property
6427 If you want to plan your work in a very detailed way, or if you need to
6428 produce offers with quotations of the estimated work effort, you may want to
6429 assign effort estimates to entries.  If you are also clocking your work, you
6430 may later want to compare the planned effort with the actual working time, a
6431 great way to improve planning estimates.  Effort estimates are stored in a
6432 special property @samp{Effort}@footnote{You may change the property being
6433 used with the variable @code{org-effort-property}.}.  You can set the effort
6434 for an entry with the following commands:
6436 @table @kbd
6437 @orgcmd{C-c C-x e,org-set-effort}
6438 Set the effort estimate for the current entry.  With a numeric prefix
6439 argument, set it to the Nth allowed value (see below).  This command is also
6440 accessible from the agenda with the @kbd{e} key.
6441 @orgcmd{C-c C-x C-e,org-clock-modify-effort-estimate}
6442 Modify the effort estimate of the item currently being clocked.
6443 @end table
6445 Clearly the best way to work with effort estimates is through column view
6446 (@pxref{Column view}).  You should start by setting up discrete values for
6447 effort estimates, and a @code{COLUMNS} format that displays these values
6448 together with clock sums (if you want to clock your time).  For a specific
6449 buffer you can use
6451 @example
6452 #+PROPERTY: Effort_ALL 0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00
6453 #+COLUMNS: %40ITEM(Task) %17Effort(Estimated Effort)@{:@} %CLOCKSUM
6454 @end example
6456 @noindent
6457 @vindex org-global-properties
6458 @vindex org-columns-default-format
6459 or, even better, you can set up these values globally by customizing the
6460 variables @code{org-global-properties} and @code{org-columns-default-format}.
6461 In particular if you want to use this setup also in the agenda, a global
6462 setup may be advised.
6464 The way to assign estimates to individual items is then to switch to column
6465 mode, and to use @kbd{S-@key{right}} and @kbd{S-@key{left}} to change the
6466 value.  The values you enter will immediately be summed up in the hierarchy.
6467 In the column next to it, any clocked time will be displayed.
6469 @vindex org-agenda-columns-add-appointments-to-effort-sum
6470 If you switch to column view in the daily/weekly agenda, the effort column
6471 will summarize the estimated work effort for each day@footnote{Please note
6472 the pitfalls of summing hierarchical data in a flat list (@pxref{Agenda
6473 column view}).}, and you can use this to find space in your schedule.  To get
6474 an overview of the entire part of the day that is committed, you can set the
6475 option @code{org-agenda-columns-add-appointments-to-effort-sum}.  The
6476 appointments on a day that take place over a specified time interval will
6477 then also be added to the load estimate of the day.
6479 Effort estimates can be used in secondary agenda filtering that is triggered
6480 with the @kbd{/} key in the agenda (@pxref{Agenda commands}).  If you have
6481 these estimates defined consistently, two or three key presses will narrow
6482 down the list to stuff that fits into an available time slot.
6484 @node Relative timer, Countdown timer, Effort estimates, Dates and Times
6485 @section Taking notes with a relative timer
6486 @cindex relative timer
6488 When taking notes during, for example, a meeting or a video viewing, it can
6489 be useful to have access to times relative to a starting time.  Org provides
6490 such a relative timer and make it easy to create timed notes.
6492 @table @kbd
6493 @orgcmd{C-c C-x .,org-timer}
6494 Insert a relative time into the buffer.  The first time you use this, the
6495 timer will be started.  When called with a prefix argument, the timer is
6496 restarted.
6497 @orgcmd{C-c C-x -,org-timer-item}
6498 Insert a description list item with the current relative time.  With a prefix
6499 argument, first reset the timer to 0.
6500 @orgcmd{M-@key{RET},org-insert-heading}
6501 Once the timer list is started, you can also use @kbd{M-@key{RET}} to insert
6502 new timer items.
6503 @c for key sequences with a comma, command name macros fail :(
6504 @kindex C-c C-x ,
6505 @item C-c C-x ,
6506 Pause the timer, or continue it if it is already paused
6507 (@command{org-timer-pause-or-continue}).
6508 @c removed the sentence because it is redundant to the following item
6509 @kindex C-u C-c C-x ,
6510 @item C-u C-c C-x ,
6511 Stop the timer.  After this, you can only start a new timer, not continue the
6512 old one.  This command also removes the timer from the mode line.
6513 @orgcmd{C-c C-x 0,org-timer-start}
6514 Reset the timer without inserting anything into the buffer.  By default, the
6515 timer is reset to 0.  When called with a @kbd{C-u} prefix, reset the timer to
6516 specific starting offset.  The user is prompted for the offset, with a
6517 default taken from a timer string at point, if any, So this can be used to
6518 restart taking notes after a break in the process.  When called with a double
6519 prefix argument @kbd{C-u C-u}, change all timer strings in the active region
6520 by a certain amount.  This can be used to fix timer strings if the timer was
6521 not started at exactly the right moment.
6522 @end table
6524 @node Countdown timer,  , Relative timer, Dates and Times
6525 @section Countdown timer
6526 @cindex Countdown timer
6527 @kindex C-c C-x ;
6528 @kindex ;
6530 Calling @code{org-timer-set-timer} from an Org mode buffer runs a countdown
6531 timer.  Use @kbd{;} from agenda buffers, @key{C-c C-x ;} everywhere else.
6533 @code{org-timer-set-timer} prompts the user for a duration and displays a
6534 countdown timer in the modeline.  @code{org-timer-default-timer} sets the
6535 default countdown value.  Giving a prefix numeric argument overrides this
6536 default value.
6538 @node Capture - Refile - Archive, Agenda Views, Dates and Times, Top
6539 @chapter Capture - Refile - Archive
6540 @cindex capture
6542 An important part of any organization system is the ability to quickly
6543 capture new ideas and tasks, and to associate reference material with them.
6544 Org does this using a process called @i{capture}.  It also can store files
6545 related to a task (@i{attachments}) in a special directory.  Once in the
6546 system, tasks and projects need to be moved around.  Moving completed project
6547 trees to an archive file keeps the system compact and fast.
6549 @menu
6550 * Capture::                     Capturing new stuff
6551 * Attachments::                 Add files to tasks
6552 * RSS Feeds::                   Getting input from RSS feeds
6553 * Protocols::                   External (e.g., Browser) access to Emacs and Org
6554 * Refile and copy::             Moving/copying a tree from one place to another
6555 * Archiving::                   What to do with finished projects
6556 @end menu
6558 @node Capture, Attachments, Capture - Refile - Archive, Capture - Refile - Archive
6559 @section Capture
6560 @cindex capture
6562 Capture lets you quickly store notes with little interruption of your work
6563 flow.  Org's method for capturing new items is heavily inspired by John
6564 Wiegley excellent @code{remember.el} package.  Up to version 6.36, Org
6565 used a special setup for @file{remember.el}, then replaced it with
6566 @file{org-remember.el}.  As of version 8.0, @file{org-remember.el} has
6567 been completely replaced by @file{org-capture.el}.
6569 If your configuration depends on @file{org-remember.el}, you need to update
6570 it and use the setup described below.  To convert your
6571 @code{org-remember-templates}, run the command
6572 @example
6573 @kbd{M-x org-capture-import-remember-templates @key{RET}}
6574 @end example
6575 @noindent and then customize the new variable with @kbd{M-x
6576 customize-variable org-capture-templates}, check the result, and save the
6577 customization.
6579 @menu
6580 * Setting up capture::          Where notes will be stored
6581 * Using capture::               Commands to invoke and terminate capture
6582 * Capture templates::           Define the outline of different note types
6583 @end menu
6585 @node Setting up capture, Using capture, Capture, Capture
6586 @subsection Setting up capture
6588 The following customization sets a default target file for notes, and defines
6589 a global key@footnote{Please select your own key, @kbd{C-c c} is only a
6590 suggestion.}  for capturing new material.
6592 @vindex org-default-notes-file
6593 @example
6594 (setq org-default-notes-file (concat org-directory "/notes.org"))
6595 (define-key global-map "\C-cc" 'org-capture)
6596 @end example
6598 @node Using capture, Capture templates, Setting up capture, Capture
6599 @subsection Using capture
6601 @table @kbd
6602 @orgcmd{C-c c,org-capture}
6603 Call the command @code{org-capture}.  Note that this keybinding is global and
6604 not active by default: you need to install it.  If you have templates
6605 @cindex date tree
6606 defined @pxref{Capture templates}, it will offer these templates for
6607 selection or use a new Org outline node as the default template.  It will
6608 insert the template into the target file and switch to an indirect buffer
6609 narrowed to this new node.  You may then insert the information you want.
6611 @orgcmd{C-c C-c,org-capture-finalize}
6612 Once you have finished entering information into the capture buffer, @kbd{C-c
6613 C-c} will return you to the window configuration before the capture process,
6614 so that you can resume your work without further distraction.  When called
6615 with a prefix arg, finalize and then jump to the captured item.
6617 @orgcmd{C-c C-w,org-capture-refile}
6618 Finalize the capture process by refiling (@pxref{Refile and copy}) the note to
6619 a different place.  Please realize that this is a normal refiling command
6620 that will be executed---so the cursor position at the moment you run this
6621 command is important.  If you have inserted a tree with a parent and
6622 children, first move the cursor back to the parent.  Any prefix argument
6623 given to this command will be passed on to the @code{org-refile} command.
6625 @orgcmd{C-c C-k,org-capture-kill}
6626 Abort the capture process and return to the previous state.
6628 @end table
6630 You can also call @code{org-capture} in a special way from the agenda, using
6631 the @kbd{k c} key combination.  With this access, any timestamps inserted by
6632 the selected capture template will default to the cursor date in the agenda,
6633 rather than to the current date.
6635 To find the locations of the last stored capture, use @code{org-capture} with
6636 prefix commands:
6638 @table @kbd
6639 @orgkey{C-u C-c c}
6640 Visit the target location of a capture template.  You get to select the
6641 template in the usual way.
6642 @orgkey{C-u C-u C-c c}
6643 Visit the last stored capture item in its buffer.
6644 @end table
6646 @vindex org-capture-bookmark
6647 @cindex org-capture-last-stored
6648 You can also jump to the bookmark @code{org-capture-last-stored}, which will
6649 automatically be created unless you set @code{org-capture-bookmark} to
6650 @code{nil}.
6652 To insert the capture at point in an Org buffer, call @code{org-capture} with
6653 a @code{C-0} prefix argument.
6655 @node Capture templates,  , Using capture, Capture
6656 @subsection Capture templates
6657 @cindex templates, for Capture
6659 You can use templates for different types of capture items, and
6660 for different target locations.  The easiest way to create such templates is
6661 through the customize interface.
6663 @table @kbd
6664 @orgkey{C-c c C}
6665 Customize the variable @code{org-capture-templates}.
6666 @end table
6668 Before we give the formal description of template definitions, let's look at
6669 an example.  Say you would like to use one template to create general TODO
6670 entries, and you want to put these entries under the heading @samp{Tasks} in
6671 your file @file{~/org/gtd.org}.  Also, a date tree in the file
6672 @file{journal.org} should capture journal entries.  A possible configuration
6673 would look like:
6675 @example
6676 (setq org-capture-templates
6677  '(("t" "Todo" entry (file+headline "~/org/gtd.org" "Tasks")
6678         "* TODO %?\n  %i\n  %a")
6679    ("j" "Journal" entry (file+datetree "~/org/journal.org")
6680         "* %?\nEntered on %U\n  %i\n  %a")))
6681 @end example
6683 @noindent If you then press @kbd{C-c c t}, Org will prepare the template
6684 for you like this:
6685 @example
6686 * TODO
6687   [[file:@var{link to where you initiated capture}]]
6688 @end example
6690 @noindent
6691 During expansion of the template, @code{%a} has been replaced by a link to
6692 the location from where you called the capture command.  This can be
6693 extremely useful for deriving tasks from emails, for example.  You fill in
6694 the task definition, press @code{C-c C-c} and Org returns you to the same
6695 place where you started the capture process.
6697 To define special keys to capture to a particular template without going
6698 through the interactive template selection, you can create your key binding
6699 like this:
6701 @lisp
6702 (define-key global-map "\C-cx"
6703    (lambda () (interactive) (org-capture nil "x")))
6704 @end lisp
6706 @menu
6707 * Template elements::           What is needed for a complete template entry
6708 * Template expansion::          Filling in information about time and context
6709 * Templates in contexts::       Only show a template in a specific context
6710 @end menu
6712 @node Template elements, Template expansion, Capture templates, Capture templates
6713 @subsubsection Template elements
6715 Now lets look at the elements of a template definition.  Each entry in
6716 @code{org-capture-templates} is a list with the following items:
6718 @table @var
6719 @item keys
6720 The keys that will select the template, as a string, characters
6721 only, for example @code{"a"} for a template to be selected with a
6722 single key, or @code{"bt"} for selection with two keys.  When using
6723 several keys, keys using the same prefix key must be sequential
6724 in the list and preceded by a 2-element entry explaining the
6725 prefix key, for example
6726 @example
6727          ("b" "Templates for marking stuff to buy")
6728 @end example
6729 @noindent If you do not define a template for the @kbd{C} key, this key will
6730 be used to open the customize buffer for this complex variable.
6732 @item description
6733 A short string describing the template, which will be shown during
6734 selection.
6736 @item type
6737 The type of entry, a symbol.  Valid values are:
6738 @table @code
6739 @item entry
6740 An Org mode node, with a headline.  Will be filed as the child of the target
6741 entry or as a top-level entry.  The target file should be an Org mode file.
6742 @item item
6743 A plain list item, placed in the first plain  list at the target
6744 location.  Again the target file should be an Org file.
6745 @item checkitem
6746 A checkbox item.  This only differs from the plain list item by the
6747 default template.
6748 @item table-line
6749 a new line in the first table at the target location.  Where exactly the
6750 line will be inserted depends on the properties @code{:prepend} and
6751 @code{:table-line-pos} (see below).
6752 @item plain
6753 Text to be inserted as it is.
6754 @end table
6756 @item target
6757 @vindex org-default-notes-file
6758 Specification of where the captured item should be placed.  In Org mode
6759 files, targets usually define a node.  Entries will become children of this
6760 node.  Other types will be added to the table or list in the body of this
6761 node.  Most target specifications contain a file name.  If that file name is
6762 the empty string, it defaults to @code{org-default-notes-file}.  A file can
6763 also be given as a variable, function, or Emacs Lisp form.
6765 Valid values are:
6766 @table @code
6767 @item (file "path/to/file")
6768 Text will be placed at the beginning or end of that file.
6770 @item (id "id of existing org entry")
6771 Filing as child of this entry, or in the body of the entry.
6773 @item (file+headline "path/to/file" "node headline")
6774 Fast configuration if the target heading is unique in the file.
6776 @item (file+olp "path/to/file" "Level 1 heading" "Level 2" ...)
6777 For non-unique headings, the full path is safer.
6779 @item (file+regexp  "path/to/file" "regexp to find location")
6780 Use a regular expression to position the cursor.
6782 @item (file+datetree "path/to/file")
6783 Will create a heading in a date tree for today's date.
6785 @item (file+datetree+prompt "path/to/file")
6786 Will create a heading in a date tree, but will prompt for the date.
6788 @item (file+function "path/to/file" function-finding-location)
6789 A function to find the right location in the file.
6791 @item (clock)
6792 File to the entry that is currently being clocked.
6794 @item (function function-finding-location)
6795 Most general way, write your own function to find both
6796 file and location.
6797 @end table
6799 @item template
6800 The template for creating the capture item.  If you leave this empty, an
6801 appropriate default template will be used.  Otherwise this is a string with
6802 escape codes, which will be replaced depending on time and context of the
6803 capture call.  The string with escapes may be loaded from a template file,
6804 using the special syntax @code{(file "path/to/template")}.  See below for
6805 more details.
6807 @item properties
6808 The rest of the entry is a property list of additional options.
6809 Recognized properties are:
6810 @table @code
6811 @item :prepend
6812 Normally new captured information will be appended at
6813 the target location (last child, last table line, last list item...).
6814 Setting this property will change that.
6816 @item :immediate-finish
6817 When set, do not offer to edit the information, just
6818 file it away immediately.  This makes sense if the template only needs
6819 information that can be added automatically.
6821 @item :empty-lines
6822 Set this to the number of lines to insert
6823 before and after the new item.  Default 0, only common other value is 1.
6825 @item :clock-in
6826 Start the clock in this item.
6828 @item :clock-keep
6829 Keep the clock running when filing the captured entry.
6831 @item :clock-resume
6832 If starting the capture interrupted a clock, restart that clock when finished
6833 with the capture.  Note that @code{:clock-keep} has precedence over
6834 @code{:clock-resume}.  When setting both to @code{t}, the current clock will
6835 run and the previous one will not be resumed.
6837 @item :unnarrowed
6838 Do not narrow the target buffer, simply show the full buffer.  Default is to
6839 narrow it so that you only see the new material.
6841 @item :table-line-pos
6842 Specification of the location in the table where the new line should be
6843 inserted.  It should be a string like @code{"II-3"} meaning that the new
6844 line should become the third line before the second horizontal separator
6845 line.
6847 @item :kill-buffer
6848 If the target file was not yet visited when capture was invoked, kill the
6849 buffer again after capture is completed.
6850 @end table
6851 @end table
6853 @node Template expansion, Templates in contexts, Template elements, Capture templates
6854 @subsubsection Template expansion
6856 In the template itself, special @kbd{%}-escapes@footnote{If you need one of
6857 these sequences literally, escape the @kbd{%} with a backslash.} allow
6858 dynamic insertion of content.  The templates are expanded in the order given here:
6860 @smallexample
6861 %[@var{file}]     @r{Insert the contents of the file given by @var{file}.}
6862 %(@var{sexp})     @r{Evaluate Elisp @var{sexp} and replace with the result.}
6863                   @r{For convenience, %:keyword (see below) placeholders}
6864                   @r{within the expression will be expanded prior to this.}
6865                   @r{The sexp must return a string.}
6866 %<...>      @r{The result of format-time-string on the ... format specification.}
6867 %t          @r{Timestamp, date only.}
6868 %T          @r{Timestamp, with date and time.}
6869 %u, %U      @r{Like the above, but inactive timestamps.}
6870 %i          @r{Initial content, the region when capture is called while the}
6871             @r{region is active.}
6872             @r{The entire text will be indented like @code{%i} itself.}
6873 %a          @r{Annotation, normally the link created with @code{org-store-link}.}
6874 %A          @r{Like @code{%a}, but prompt for the description part.}
6875 %l          @r{Like %a, but only insert the literal link.}
6876 %c          @r{Current kill ring head.}
6877 %x          @r{Content of the X clipboard.}
6878 %k          @r{Title of the currently clocked task.}
6879 %K          @r{Link to the currently clocked task.}
6880 %n          @r{User name (taken from @code{user-full-name}).}
6881 %f          @r{File visited by current buffer when org-capture was called.}
6882 %F          @r{Full path of the file or directory visited by current buffer.}
6883 %:keyword   @r{Specific information for certain link types, see below.}
6884 %^g         @r{Prompt for tags, with completion on tags in target file.}
6885 %^G         @r{Prompt for tags, with completion all tags in all agenda files.}
6886 %^t         @r{Like @code{%t}, but prompt for date.  Similarly @code{%^T}, @code{%^u}, @code{%^U}.}
6887             @r{You may define a prompt like @code{%^@{Birthday@}t}.}
6888 %^C         @r{Interactive selection of which kill or clip to use.}
6889 %^L         @r{Like @code{%^C}, but insert as link.}
6890 %^@{@var{prop}@}p   @r{Prompt the user for a value for property @var{prop}.}
6891 %^@{@var{prompt}@}  @r{prompt the user for a string and replace this sequence with it.}
6892             @r{You may specify a default value and a completion table with}
6893             @r{%^@{prompt|default|completion2|completion3...@}.}
6894             @r{The arrow keys access a prompt-specific history.}
6895 %\n         @r{Insert the text entered at the nth %^@{@var{prompt}@}, where @code{n} is}
6896             @r{a number, starting from 1.}
6897 %?          @r{After completing the template, position cursor here.}
6898 @end smallexample
6900 @noindent
6901 For specific link types, the following keywords will be
6902 defined@footnote{If you define your own link types (@pxref{Adding
6903 hyperlink types}), any property you store with
6904 @code{org-store-link-props} can be accessed in capture templates in a
6905 similar way.}:
6907 @vindex org-from-is-user-regexp
6908 @smallexample
6909 Link type                        |  Available keywords
6910 ---------------------------------+----------------------------------------------
6911 bbdb                             |  %:name %:company
6912 irc                              |  %:server %:port %:nick
6913 vm, vm-imap, wl, mh, mew, rmail  |  %:type %:subject %:message-id
6914                                  |  %:from %:fromname %:fromaddress
6915                                  |  %:to   %:toname   %:toaddress
6916                                  |  %:date @r{(message date header field)}
6917                                  |  %:date-timestamp @r{(date as active timestamp)}
6918                                  |  %:date-timestamp-inactive @r{(date as inactive timestamp)}
6919                                  |  %: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}.}}
6920 gnus                             |  %:group, @r{for messages also all email fields}
6921 w3, w3m                          |  %:url
6922 info                             |  %:file %:node
6923 calendar                         |  %:date
6924 @end smallexample
6926 @noindent
6927 To place the cursor after template expansion use:
6929 @smallexample
6930 %?          @r{After completing the template, position cursor here.}
6931 @end smallexample
6933 @node Templates in contexts,  , Template expansion, Capture templates
6934 @subsubsection Templates in contexts
6936 @vindex org-capture-templates-contexts
6937 To control whether a capture template should be accessible from a specific
6938 context, you can customize @var{org-capture-templates-contexts}.  Let's say
6939 for example that you have a capture template @code{"p"} for storing Gnus
6940 emails containing patches.  Then you would configure this option like this:
6942 @example
6943 (setq org-capture-templates-contexts
6944       '(("p" (in-mode . "message-mode"))))
6945 @end example
6947 You can also tell that the command key @code{"p"} should refer to another
6948 template.  In that case, add this command key like this:
6950 @example
6951 (setq org-capture-templates-contexts
6952       '(("p" "q" (in-mode . "message-mode"))))
6953 @end example
6955 See the docstring of the variable for more information.
6957 @node Attachments, RSS Feeds, Capture, Capture - Refile - Archive
6958 @section Attachments
6959 @cindex attachments
6961 @vindex org-attach-directory
6962 It is often useful to associate reference material with an outline node/task.
6963 Small chunks of plain text can simply be stored in the subtree of a project.
6964 Hyperlinks (@pxref{Hyperlinks}) can establish associations with
6965 files that live elsewhere on your computer or in the cloud, like emails or
6966 source code files belonging to a project.  Another method is @i{attachments},
6967 which are files located in a directory belonging to an outline node.  Org
6968 uses directories named by the unique ID of each entry.  These directories are
6969 located in the @file{data} directory which lives in the same directory where
6970 your Org file lives@footnote{If you move entries or Org files from one
6971 directory to another, you may want to configure @code{org-attach-directory}
6972 to contain an absolute path.}.  If you initialize this directory with
6973 @code{git init}, Org will automatically commit changes when it sees them.
6974 The attachment system has been contributed to Org by John Wiegley.
6976 In cases where it seems better to do so, you can also attach a directory of your
6977 choice to an entry.  You can also make children inherit the attachment
6978 directory from a parent, so that an entire subtree uses the same attached
6979 directory.
6981 @noindent The following commands deal with attachments:
6983 @table @kbd
6985 @orgcmd{C-c C-a,org-attach}
6986 The dispatcher for commands related to the attachment system.  After these
6987 keys, a list of commands is displayed and you must press an additional key
6988 to select a command:
6990 @table @kbd
6991 @orgcmdtkc{a,C-c C-a a,org-attach-attach}
6992 @vindex org-attach-method
6993 Select a file and move it into the task's attachment directory.  The file
6994 will be copied, moved, or linked, depending on @code{org-attach-method}.
6995 Note that hard links are not supported on all systems.
6997 @kindex C-c C-a c
6998 @kindex C-c C-a m
6999 @kindex C-c C-a l
7000 @item c/m/l
7001 Attach a file using the copy/move/link method.
7002 Note that hard links are not supported on all systems.
7004 @orgcmdtkc{n,C-c C-a n,org-attach-new}
7005 Create a new attachment as an Emacs buffer.
7007 @orgcmdtkc{z,C-c C-a z,org-attach-sync}
7008 Synchronize the current task with its attachment directory, in case you added
7009 attachments yourself.
7011 @orgcmdtkc{o,C-c C-a o,org-attach-open}
7012 @vindex org-file-apps
7013 Open current task's attachment.  If there is more than one, prompt for a
7014 file name first.  Opening will follow the rules set by @code{org-file-apps}.
7015 For more details, see the information on following hyperlinks
7016 (@pxref{Handling links}).
7018 @orgcmdtkc{O,C-c C-a O,org-attach-open-in-emacs}
7019 Also open the attachment, but force opening the file in Emacs.
7021 @orgcmdtkc{f,C-c C-a f,org-attach-reveal}
7022 Open the current task's attachment directory.
7024 @orgcmdtkc{F,C-c C-a F,org-attach-reveal-in-emacs}
7025 Also open the directory, but force using @command{dired} in Emacs.
7027 @orgcmdtkc{d,C-c C-a d,org-attach-delete-one}
7028 Select and delete a single attachment.
7030 @orgcmdtkc{D,C-c C-a D,org-attach-delete-all}
7031 Delete all of a task's attachments.  A safer way is to open the directory in
7032 @command{dired} and delete from there.
7034 @orgcmdtkc{s,C-c C-a s,org-attach-set-directory}
7035 @cindex property, ATTACH_DIR
7036 Set a specific directory as the entry's attachment directory.  This works by
7037 putting the directory path into the @code{ATTACH_DIR} property.
7039 @orgcmdtkc{i,C-c C-a i,org-attach-set-inherit}
7040 @cindex property, ATTACH_DIR_INHERIT
7041 Set the @code{ATTACH_DIR_INHERIT} property, so that children will use the
7042 same directory for attachments as the parent does.
7043 @end table
7044 @end table
7046 @node RSS Feeds, Protocols, Attachments, Capture - Refile - Archive
7047 @section RSS feeds
7048 @cindex RSS feeds
7049 @cindex Atom feeds
7051 Org can add and change entries based on information found in RSS feeds and
7052 Atom feeds.  You could use this to make a task out of each new podcast in a
7053 podcast feed.  Or you could use a phone-based note-creating service on the
7054 web to import tasks into Org.  To access feeds, configure the variable
7055 @code{org-feed-alist}.  The docstring of this variable has detailed
7056 information.  Here is just an example:
7058 @example
7059 (setq org-feed-alist
7060      '(("Slashdot"
7061          "http://rss.slashdot.org/Slashdot/slashdot"
7062          "~/txt/org/feeds.org" "Slashdot Entries")))
7063 @end example
7065 @noindent
7066 will configure that new items from the feed provided by
7067 @code{rss.slashdot.org} will result in new entries in the file
7068 @file{~/org/feeds.org} under the heading @samp{Slashdot Entries}, whenever
7069 the following command is used:
7071 @table @kbd
7072 @orgcmd{C-c C-x g,org-feed-update-all}
7073 @item C-c C-x g
7074 Collect items from the feeds configured in @code{org-feed-alist} and act upon
7075 them.
7076 @orgcmd{C-c C-x G,org-feed-goto-inbox}
7077 Prompt for a feed name and go to the inbox configured for this feed.
7078 @end table
7080 Under the same headline, Org will create a drawer @samp{FEEDSTATUS} in which
7081 it will store information about the status of items in the feed, to avoid
7082 adding the same item several times.  You should add @samp{FEEDSTATUS} to the
7083 list of drawers in that file:
7085 @example
7086 #+DRAWERS: LOGBOOK PROPERTIES FEEDSTATUS
7087 @end example
7089 For more information, including how to read atom feeds, see
7090 @file{org-feed.el} and the docstring of @code{org-feed-alist}.
7092 @node Protocols, Refile and copy, RSS Feeds, Capture - Refile - Archive
7093 @section Protocols for external access
7094 @cindex protocols, for external access
7095 @cindex emacsserver
7097 You can set up Org for handling protocol calls from outside applications that
7098 are passed to Emacs through the @file{emacsserver}.  For example, you can
7099 configure bookmarks in your web browser to send a link to the current page to
7100 Org and create a note from it using capture (@pxref{Capture}).  Or you
7101 could create a bookmark that will tell Emacs to open the local source file of
7102 a remote website you are looking at with the browser.  See
7103 @uref{http://orgmode.org/worg/org-contrib/org-protocol.php} for detailed
7104 documentation and setup instructions.
7106 @node Refile and copy, Archiving, Protocols, Capture - Refile - Archive
7107 @section Refile and copy
7108 @cindex refiling notes
7109 @cindex copying notes
7111 When reviewing the captured data, you may want to refile or to copy some of
7112 the entries into a different list, for example into a project.  Cutting,
7113 finding the right location, and then pasting the note is cumbersome.  To
7114 simplify this process, you can use the following special command:
7116 @table @kbd
7117 @orgcmd{C-c M-w,org-copy}
7118 @findex org-copy
7119 Copying works like refiling, except that the original note is not deleted.
7120 @orgcmd{C-c C-w,org-refile}
7121 @findex org-refile
7122 @vindex org-reverse-note-order
7123 @vindex org-refile-targets
7124 @vindex org-refile-use-outline-path
7125 @vindex org-outline-path-complete-in-steps
7126 @vindex org-refile-allow-creating-parent-nodes
7127 @vindex org-log-refile
7128 @vindex org-refile-use-cache
7129 Refile the entry or region at point.  This command offers possible locations
7130 for refiling the entry and lets you select one with completion.  The item (or
7131 all items in the region) is filed below the target heading as a subitem.
7132 Depending on @code{org-reverse-note-order}, it will be either the first or
7133 last subitem.@*
7134 By default, all level 1 headlines in the current buffer are considered to be
7135 targets, but you can have more complex definitions across a number of files.
7136 See the variable @code{org-refile-targets} for details.  If you would like to
7137 select a location via a file-path-like completion along the outline path, see
7138 the variables @code{org-refile-use-outline-path} and
7139 @code{org-outline-path-complete-in-steps}.  If you would like to be able to
7140 create new nodes as new parents for refiling on the fly, check the
7141 variable @code{org-refile-allow-creating-parent-nodes}.
7142 When the variable @code{org-log-refile}@footnote{with corresponding
7143 @code{#+STARTUP} keywords @code{logrefile}, @code{lognoterefile},
7144 and @code{nologrefile}} is set, a timestamp or a note will be
7145 recorded when an entry has been refiled.
7146 @orgkey{C-u C-c C-w}
7147 Use the refile interface to jump to a heading.
7148 @orgcmd{C-u C-u C-c C-w,org-refile-goto-last-stored}
7149 Jump to the location where @code{org-refile} last moved a tree to.
7150 @item C-2 C-c C-w
7151 Refile as the child of the item currently being clocked.
7152 @orgcmdtkc{C-0 C-c C-w @ @r{or} @ C-u C-u C-u C-c C-w,C-0 C-c C-w,org-refile-cache-clear}
7153 Clear the target cache.  Caching of refile targets can be turned on by
7154 setting @code{org-refile-use-cache}.  To make the command see new possible
7155 targets, you have to clear the cache with this command.
7156 @end table
7158 @node Archiving,  , Refile and copy, Capture - Refile - Archive
7159 @section Archiving
7160 @cindex archiving
7162 When a project represented by a (sub)tree is finished, you may want
7163 to move the tree out of the way and to stop it from contributing to the
7164 agenda.  Archiving is important to keep your working files compact and global
7165 searches like the construction of agenda views fast.
7167 @table @kbd
7168 @orgcmd{C-c C-x C-a,org-archive-subtree-default}
7169 @vindex org-archive-default-command
7170 Archive the current entry using the command specified in the variable
7171 @code{org-archive-default-command}.
7172 @end table
7174 @menu
7175 * Moving subtrees::             Moving a tree to an archive file
7176 * Internal archiving::          Switch off a tree but keep it in the file
7177 @end menu
7179 @node Moving subtrees, Internal archiving, Archiving, Archiving
7180 @subsection Moving a tree to the archive file
7181 @cindex external archiving
7183 The most common archiving action is to move a project tree to another file,
7184 the archive file.
7186 @table @kbd
7187 @orgcmdkskc{C-c C-x C-s,C-c $,org-archive-subtree}
7188 @vindex org-archive-location
7189 Archive the subtree starting at the cursor position to the location
7190 given by @code{org-archive-location}.
7191 @orgkey{C-u C-c C-x C-s}
7192 Check if any direct children of the current headline could be moved to
7193 the archive.  To do this, each subtree is checked for open TODO entries.
7194 If none are found, the command offers to move it to the archive
7195 location.  If the cursor is @emph{not} on a headline when this command
7196 is invoked, the level 1 trees will be checked.
7197 @end table
7199 @cindex archive locations
7200 The default archive location is a file in the same directory as the
7201 current file, with the name derived by appending @file{_archive} to the
7202 current file name.  You can also choose what heading to file archived
7203 items under, with the possibility to add them to a datetree in a file.
7204 For information and examples on how to specify the file and the heading,
7205 see the documentation string of the variable
7206 @code{org-archive-location}.
7208 There is also an in-buffer option for setting this variable, for
7209 example@footnote{For backward compatibility, the following also works:
7210 If there are several such lines in a file, each specifies the archive
7211 location for the text below it.  The first such line also applies to any
7212 text before its definition.  However, using this method is
7213 @emph{strongly} deprecated as it is incompatible with the outline
7214 structure of the document.  The correct method for setting multiple
7215 archive locations in a buffer is using properties.}:
7217 @cindex #+ARCHIVE
7218 @example
7219 #+ARCHIVE: %s_done::
7220 @end example
7222 @cindex property, ARCHIVE
7223 @noindent
7224 If you would like to have a special ARCHIVE location for a single entry
7225 or a (sub)tree, give the entry an @code{:ARCHIVE:} property with the
7226 location as the value (@pxref{Properties and Columns}).
7228 @vindex org-archive-save-context-info
7229 When a subtree is moved, it receives a number of special properties that
7230 record context information like the file from where the entry came, its
7231 outline path the archiving time etc.  Configure the variable
7232 @code{org-archive-save-context-info} to adjust the amount of information
7233 added.
7236 @node Internal archiving,  , Moving subtrees, Archiving
7237 @subsection Internal archiving
7239 If you want to just switch off (for agenda views) certain subtrees without
7240 moving them to a different file, you can use the @code{ARCHIVE tag}.
7242 A headline that is marked with the ARCHIVE tag (@pxref{Tags}) stays at
7243 its location in the outline tree, but behaves in the following way:
7244 @itemize @minus
7245 @item
7246 @vindex org-cycle-open-archived-trees
7247 It does not open when you attempt to do so with a visibility cycling
7248 command (@pxref{Visibility cycling}).  You can force cycling archived
7249 subtrees with @kbd{C-@key{TAB}}, or by setting the option
7250 @code{org-cycle-open-archived-trees}.  Also normal outline commands like
7251 @code{show-all} will open archived subtrees.
7252 @item
7253 @vindex org-sparse-tree-open-archived-trees
7254 During sparse tree construction (@pxref{Sparse trees}), matches in
7255 archived subtrees are not exposed, unless you configure the option
7256 @code{org-sparse-tree-open-archived-trees}.
7257 @item
7258 @vindex org-agenda-skip-archived-trees
7259 During agenda view construction (@pxref{Agenda Views}), the content of
7260 archived trees is ignored unless you configure the option
7261 @code{org-agenda-skip-archived-trees}, in which case these trees will always
7262 be included.  In the agenda you can press @kbd{v a} to get archives
7263 temporarily included.
7264 @item
7265 @vindex org-export-with-archived-trees
7266 Archived trees are not exported (@pxref{Exporting}), only the headline
7267 is.  Configure the details using the variable
7268 @code{org-export-with-archived-trees}.
7269 @item
7270 @vindex org-columns-skip-archived-trees
7271 Archived trees are excluded from column view unless the variable
7272 @code{org-columns-skip-archived-trees} is configured to @code{nil}.
7273 @end itemize
7275 The following commands help manage the ARCHIVE tag:
7277 @table @kbd
7278 @orgcmd{C-c C-x a,org-toggle-archive-tag}
7279 Toggle the ARCHIVE tag for the current headline.  When the tag is set,
7280 the headline changes to a shadowed face, and the subtree below it is
7281 hidden.
7282 @orgkey{C-u C-c C-x a}
7283 Check if any direct children of the current headline should be archived.
7284 To do this, each subtree is checked for open TODO entries.  If none are
7285 found, the command offers to set the ARCHIVE tag for the child.  If the
7286 cursor is @emph{not} on a headline when this command is invoked, the
7287 level 1 trees will be checked.
7288 @orgcmd{C-@kbd{TAB},org-force-cycle-archived}
7289 Cycle a tree even if it is tagged with ARCHIVE.
7290 @orgcmd{C-c C-x A,org-archive-to-archive-sibling}
7291 Move the current entry to the @emph{Archive Sibling}.  This is a sibling of
7292 the entry with the heading @samp{Archive} and the tag @samp{ARCHIVE}.  The
7293 entry becomes a child of that sibling and in this way retains a lot of its
7294 original context, including inherited tags and approximate position in the
7295 outline.
7296 @end table
7299 @node Agenda Views, Markup, Capture - Refile - Archive, Top
7300 @chapter Agenda views
7301 @cindex agenda views
7303 Due to the way Org works, TODO items, time-stamped items, and
7304 tagged headlines can be scattered throughout a file or even a number of
7305 files.  To get an overview of open action items, or of events that are
7306 important for a particular date, this information must be collected,
7307 sorted and displayed in an organized way.
7309 Org can select items based on various criteria and display them
7310 in a separate buffer.  Seven different view types are provided:
7312 @itemize @bullet
7313 @item
7314 an @emph{agenda} that is like a calendar and shows information
7315 for specific dates,
7316 @item
7317 a @emph{TODO list} that covers all unfinished
7318 action items,
7319 @item
7320 a @emph{match view}, showings headlines based on the tags, properties, and
7321 TODO state associated with them,
7322 @item
7323 a @emph{timeline view} that shows all events in a single Org file,
7324 in time-sorted view,
7325 @item
7326 a @emph{text search view} that shows all entries from multiple files
7327 that contain specified keywords,
7328 @item
7329 a @emph{stuck projects view} showing projects that currently don't move
7330 along, and
7331 @item
7332 @emph{custom views} that are special searches and combinations of different
7333 views.
7334 @end itemize
7336 @noindent
7337 The extracted information is displayed in a special @emph{agenda
7338 buffer}.  This buffer is read-only, but provides commands to visit the
7339 corresponding locations in the original Org files, and even to
7340 edit these files remotely.
7342 @vindex org-agenda-window-setup
7343 @vindex org-agenda-restore-windows-after-quit
7344 Two variables control how the agenda buffer is displayed and whether the
7345 window configuration is restored when the agenda exits:
7346 @code{org-agenda-window-setup} and
7347 @code{org-agenda-restore-windows-after-quit}.
7349 @menu
7350 * Agenda files::                Files being searched for agenda information
7351 * Agenda dispatcher::           Keyboard access to agenda views
7352 * Built-in agenda views::       What is available out of the box?
7353 * Presentation and sorting::    How agenda items are prepared for display
7354 * Agenda commands::             Remote editing of Org trees
7355 * Custom agenda views::         Defining special searches and views
7356 * Exporting Agenda Views::      Writing a view to a file
7357 * Agenda column view::          Using column view for collected entries
7358 @end menu
7360 @node Agenda files, Agenda dispatcher, Agenda Views, Agenda Views
7361 @section Agenda files
7362 @cindex agenda files
7363 @cindex files for agenda
7365 @vindex org-agenda-files
7366 The information to be shown is normally collected from all @emph{agenda
7367 files}, the files listed in the variable
7368 @code{org-agenda-files}@footnote{If the value of that variable is not a
7369 list, but a single file name, then the list of agenda files will be
7370 maintained in that external file.}.  If a directory is part of this list,
7371 all files with the extension @file{.org} in this directory will be part
7372 of the list.
7374 Thus, even if you only work with a single Org file, that file should
7375 be put into the list@footnote{When using the dispatcher, pressing
7376 @kbd{<} before selecting a command will actually limit the command to
7377 the current file, and ignore @code{org-agenda-files} until the next
7378 dispatcher command.}.  You can customize @code{org-agenda-files}, but
7379 the easiest way to maintain it is through the following commands
7381 @cindex files, adding to agenda list
7382 @table @kbd
7383 @orgcmd{C-c [,org-agenda-file-to-front}
7384 Add current file to the list of agenda files.  The file is added to
7385 the front of the list.  If it was already in the list, it is moved to
7386 the front.  With a prefix argument, file is added/moved to the end.
7387 @orgcmd{C-c ],org-remove-file}
7388 Remove current file from the list of agenda files.
7389 @kindex C-,
7390 @cindex cycling, of agenda files
7391 @orgcmd{C-',org-cycle-agenda-files}
7392 @itemx C-,
7393 Cycle through agenda file list, visiting one file after the other.
7394 @kindex M-x org-iswitchb
7395 @item M-x org-iswitchb
7396 Command to use an @code{iswitchb}-like interface to switch to and between Org
7397 buffers.
7398 @end table
7400 @noindent
7401 The Org menu contains the current list of files and can be used
7402 to visit any of them.
7404 If you would like to focus the agenda temporarily on a file not in
7405 this list, or on just one file in the list, or even on only a subtree in a
7406 file, then this can be done in different ways.  For a single agenda command,
7407 you may press @kbd{<} once or several times in the dispatcher
7408 (@pxref{Agenda dispatcher}).  To restrict the agenda scope for an
7409 extended period, use the following commands:
7411 @table @kbd
7412 @orgcmd{C-c C-x <,org-agenda-set-restriction-lock}
7413 Permanently restrict the agenda to the current subtree.  When with a
7414 prefix argument, or with the cursor before the first headline in a file,
7415 the agenda scope is set to the entire file.  This restriction remains in
7416 effect until removed with @kbd{C-c C-x >}, or by typing either @kbd{<}
7417 or @kbd{>} in the agenda dispatcher.  If there is a window displaying an
7418 agenda view, the new restriction takes effect immediately.
7419 @orgcmd{C-c C-x >,org-agenda-remove-restriction-lock}
7420 Remove the permanent restriction created by @kbd{C-c C-x <}.
7421 @end table
7423 @noindent
7424 When working with @file{speedbar.el}, you can use the following commands in
7425 the Speedbar frame:
7426 @table @kbd
7427 @orgcmdtkc{< @r{in the speedbar frame},<,org-speedbar-set-agenda-restriction}
7428 Permanently restrict the agenda to the item---either an Org file or a subtree
7429 in such a file---at the cursor in the Speedbar frame.
7430 If there is a window displaying an agenda view, the new restriction takes
7431 effect immediately.
7432 @orgcmdtkc{> @r{in the speedbar frame},>,org-agenda-remove-restriction-lock}
7433 Lift the restriction.
7434 @end table
7436 @node Agenda dispatcher, Built-in agenda views, Agenda files, Agenda Views
7437 @section The agenda dispatcher
7438 @cindex agenda dispatcher
7439 @cindex dispatching agenda commands
7440 The views are created through a dispatcher, which should be bound to a
7441 global key---for example @kbd{C-c a} (@pxref{Activation}).  In the
7442 following we will assume that @kbd{C-c a} is indeed how the dispatcher
7443 is accessed and list keyboard access to commands accordingly.  After
7444 pressing @kbd{C-c a}, an additional letter is required to execute a
7445 command.  The dispatcher offers the following default commands:
7446 @table @kbd
7447 @item a
7448 Create the calendar-like agenda (@pxref{Weekly/daily agenda}).
7449 @item t @r{/} T
7450 Create a list of all TODO items (@pxref{Global TODO list}).
7451 @item m @r{/} M
7452 Create a list of headlines matching a TAGS expression (@pxref{Matching
7453 tags and properties}).
7454 @item L
7455 Create the timeline view for the current buffer (@pxref{Timeline}).
7456 @item s
7457 Create a list of entries selected by a boolean expression of keywords
7458 and/or regular expressions that must or must not occur in the entry.
7459 @item /
7460 @vindex org-agenda-text-search-extra-files
7461 Search for a regular expression in all agenda files and additionally in
7462 the files listed in @code{org-agenda-text-search-extra-files}.  This
7463 uses the Emacs command @code{multi-occur}.  A prefix argument can be
7464 used to specify the number of context lines for each match, default is
7466 @item # @r{/} !
7467 Create a list of stuck projects (@pxref{Stuck projects}).
7468 @item <
7469 Restrict an agenda command to the current buffer@footnote{For backward
7470 compatibility, you can also press @kbd{1} to restrict to the current
7471 buffer.}.  After pressing @kbd{<}, you still need to press the character
7472 selecting the command.
7473 @item < <
7474 If there is an active region, restrict the following agenda command to
7475 the region.  Otherwise, restrict it to the current subtree@footnote{For
7476 backward compatibility, you can also press @kbd{0} to restrict to the
7477 current region/subtree.}.  After pressing @kbd{< <}, you still need to press the
7478 character selecting the command.
7480 @item *
7481 @vindex org-agenda-sticky
7482 Toggle sticky agenda views.  By default, Org maintains only a single agenda
7483 buffer and rebuilds it each time you change the view, to make sure everything
7484 is always up to date.  If you switch between views often and the build time
7485 bothers you, you can turn on sticky agenda buffers (make this the default by
7486 customizing the variable @code{org-agenda-sticky}).  With sticky agendas, the
7487 dispatcher only switches to the selected view, you need to update it by hand
7488 with @kbd{r} or @kbd{g}.  You can toggle sticky agenda view any time with
7489 @code{org-toggle-sticky-agenda}.
7490 @end table
7492 You can also define custom commands that will be accessible through the
7493 dispatcher, just like the default commands.  This includes the
7494 possibility to create extended agenda buffers that contain several
7495 blocks together, for example the weekly agenda, the global TODO list and
7496 a number of special tags matches.  @xref{Custom agenda views}.
7498 @node Built-in agenda views, Presentation and sorting, Agenda dispatcher, Agenda Views
7499 @section The built-in agenda views
7501 In this section we describe the built-in views.
7503 @menu
7504 * Weekly/daily agenda::         The calendar page with current tasks
7505 * Global TODO list::            All unfinished action items
7506 * Matching tags and properties::  Structured information with fine-tuned search
7507 * Timeline::                    Time-sorted view for single file
7508 * Search view::                 Find entries by searching for text
7509 * Stuck projects::              Find projects you need to review
7510 @end menu
7512 @node Weekly/daily agenda, Global TODO list, Built-in agenda views, Built-in agenda views
7513 @subsection The weekly/daily agenda
7514 @cindex agenda
7515 @cindex weekly agenda
7516 @cindex daily agenda
7518 The purpose of the weekly/daily @emph{agenda} is to act like a page of a
7519 paper agenda, showing all the tasks for the current week or day.
7521 @table @kbd
7522 @cindex org-agenda, command
7523 @orgcmd{C-c a a,org-agenda-list}
7524 Compile an agenda for the current week from a list of Org files.  The agenda
7525 shows the entries for each day.  With a numeric prefix@footnote{For backward
7526 compatibility, the universal prefix @kbd{C-u} causes all TODO entries to be
7527 listed before the agenda.  This feature is deprecated, use the dedicated TODO
7528 list, or a block agenda instead (@pxref{Block agenda}).}  (like @kbd{C-u 2 1
7529 C-c a a}) you may set the number of days to be displayed.
7530 @end table
7532 @vindex org-agenda-span
7533 @vindex org-agenda-ndays
7534 The default number of days displayed in the agenda is set by the variable
7535 @code{org-agenda-span} (or the obsolete @code{org-agenda-ndays}).  This
7536 variable can be set to any number of days you want to see by default in the
7537 agenda, or to a span name, such a @code{day}, @code{week}, @code{month} or
7538 @code{year}.
7540 Remote editing from the agenda buffer means, for example, that you can
7541 change the dates of deadlines and appointments from the agenda buffer.
7542 The commands available in the Agenda buffer are listed in @ref{Agenda
7543 commands}.
7545 @subsubheading Calendar/Diary integration
7546 @cindex calendar integration
7547 @cindex diary integration
7549 Emacs contains the calendar and diary by Edward M. Reingold.  The
7550 calendar displays a three-month calendar with holidays from different
7551 countries and cultures.  The diary allows you to keep track of
7552 anniversaries, lunar phases, sunrise/set, recurrent appointments
7553 (weekly, monthly) and more.  In this way, it is quite complementary to
7554 Org.  It can be very useful to combine output from Org with
7555 the diary.
7557 In order to include entries from the Emacs diary into Org mode's
7558 agenda, you only need to customize the variable
7560 @lisp
7561 (setq org-agenda-include-diary t)
7562 @end lisp
7564 @noindent After that, everything will happen automatically.  All diary
7565 entries including holidays, anniversaries, etc., will be included in the
7566 agenda buffer created by Org mode.  @key{SPC}, @key{TAB}, and
7567 @key{RET} can be used from the agenda buffer to jump to the diary
7568 file in order to edit existing diary entries.  The @kbd{i} command to
7569 insert new entries for the current date works in the agenda buffer, as
7570 well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
7571 Sunrise/Sunset times, show lunar phases and to convert to other
7572 calendars, respectively.  @kbd{c} can be used to switch back and forth
7573 between calendar and agenda.
7575 If you are using the diary only for sexp entries and holidays, it is
7576 faster to not use the above setting, but instead to copy or even move
7577 the entries into an Org file.  Org mode evaluates diary-style sexp
7578 entries, and does it faster because there is no overhead for first
7579 creating the diary display.  Note that the sexp entries must start at
7580 the left margin, no whitespace is allowed before them.  For example,
7581 the following segment of an Org file will be processed and entries
7582 will be made in the agenda:
7584 @example
7585 * Birthdays and similar stuff
7586 #+CATEGORY: Holiday
7587 %%(org-calendar-holiday)   ; special function for holiday names
7588 #+CATEGORY: Ann
7589 %%(org-anniversary 1956  5 14)@footnote{@code{org-anniversary} is just like @code{diary-anniversary}, but the argument order is always according to ISO and therefore independent of the value of @code{calendar-date-style}.} Arthur Dent is %d years old
7590 %%(org-anniversary 1869 10  2) Mahatma Gandhi would be %d years old
7591 @end example
7593 @subsubheading Anniversaries from BBDB
7594 @cindex BBDB, anniversaries
7595 @cindex anniversaries, from BBDB
7597 If you are using the Big Brothers Database to store your contacts, you will
7598 very likely prefer to store anniversaries in BBDB rather than in a
7599 separate Org or diary file.  Org supports this and will show BBDB
7600 anniversaries as part of the agenda.  All you need to do is to add the
7601 following to one of your agenda files:
7603 @example
7604 * Anniversaries
7605   :PROPERTIES:
7606   :CATEGORY: Anniv
7607   :END:
7608 %%(org-bbdb-anniversaries)
7609 @end example
7611 You can then go ahead and define anniversaries for a BBDB record.  Basically,
7612 you need to press @kbd{C-o anniversary @key{RET}} with the cursor in a BBDB
7613 record and then add the date in the format @code{YYYY-MM-DD} or @code{MM-DD},
7614 followed by a space and the class of the anniversary (@samp{birthday} or
7615 @samp{wedding}, or a format string).  If you omit the class, it will default to
7616 @samp{birthday}.  Here are a few examples, the header for the file
7617 @file{org-bbdb.el} contains more detailed information.
7619 @example
7620 1973-06-22
7621 06-22
7622 1955-08-02 wedding
7623 2008-04-14 %s released version 6.01 of org mode, %d years ago
7624 @end example
7626 After a change to BBDB, or for the first agenda display during an Emacs
7627 session, the agenda display will suffer a short delay as Org updates its
7628 hash with anniversaries.  However, from then on things will be very fast---much
7629 faster in fact than a long list of @samp{%%(diary-anniversary)} entries
7630 in an Org or Diary file.
7632 @subsubheading Appointment reminders
7633 @cindex @file{appt.el}
7634 @cindex appointment reminders
7635 @cindex appointment
7636 @cindex reminders
7638 Org can interact with Emacs appointments notification facility.  To add the
7639 appointments of your agenda files, use the command @code{org-agenda-to-appt}.
7640 This command lets you filter through the list of your appointments and add
7641 only those belonging to a specific category or matching a regular expression.
7642 It also reads a @code{APPT_WARNTIME} property which will then override the
7643 value of @code{appt-message-warning-time} for this appointment.  See the
7644 docstring for details.
7646 @node Global TODO list, Matching tags and properties, Weekly/daily agenda, Built-in agenda views
7647 @subsection The global TODO list
7648 @cindex global TODO list
7649 @cindex TODO list, global
7651 The global TODO list contains all unfinished TODO items formatted and
7652 collected into a single place.
7654 @table @kbd
7655 @orgcmd{C-c a t,org-todo-list}
7656 Show the global TODO list.  This collects the TODO items from all agenda
7657 files (@pxref{Agenda Views}) into a single buffer.  By default, this lists
7658 items with a state the is not a DONE state.  The buffer is in
7659 @code{agenda-mode}, so there are commands to examine and manipulate the TODO
7660 entries directly from that buffer (@pxref{Agenda commands}).
7661 @orgcmd{C-c a T,org-todo-list}
7662 @cindex TODO keyword matching
7663 @vindex org-todo-keywords
7664 Like the above, but allows selection of a specific TODO keyword.  You can
7665 also do this by specifying a prefix argument to @kbd{C-c a t}.  You are
7666 prompted for a keyword, and you may also specify several keywords by
7667 separating them with @samp{|} as the boolean OR operator.  With a numeric
7668 prefix, the Nth keyword in @code{org-todo-keywords} is selected.
7669 @kindex r
7670 The @kbd{r} key in the agenda buffer regenerates it, and you can give
7671 a prefix argument to this command to change the selected TODO keyword,
7672 for example @kbd{3 r}.  If you often need a search for a specific
7673 keyword, define a custom command for it (@pxref{Agenda dispatcher}).@*
7674 Matching specific TODO keywords can also be done as part of a tags
7675 search (@pxref{Tag searches}).
7676 @end table
7678 Remote editing of TODO items means that you can change the state of a
7679 TODO entry with a single key press.  The commands available in the
7680 TODO list are described in @ref{Agenda commands}.
7682 @cindex sublevels, inclusion into TODO list
7683 Normally the global TODO list simply shows all headlines with TODO
7684 keywords.  This list can become very long.  There are two ways to keep
7685 it more compact:
7686 @itemize @minus
7687 @item
7688 @vindex org-agenda-todo-ignore-scheduled
7689 @vindex org-agenda-todo-ignore-deadlines
7690 @vindex org-agenda-todo-ignore-timestamp
7691 @vindex org-agenda-todo-ignore-with-date
7692 Some people view a TODO item that has been @emph{scheduled} for execution or
7693 have a @emph{deadline} (@pxref{Timestamps}) as no longer @emph{open}.
7694 Configure the variables @code{org-agenda-todo-ignore-scheduled},
7695 @code{org-agenda-todo-ignore-deadlines},
7696 @code{org-agenda-todo-ignore-timestamp} and/or
7697 @code{org-agenda-todo-ignore-with-date} to exclude such items from the global
7698 TODO list.
7699 @item
7700 @vindex org-agenda-todo-list-sublevels
7701 TODO items may have sublevels to break up the task into subtasks.  In
7702 such cases it may be enough to list only the highest level TODO headline
7703 and omit the sublevels from the global list.  Configure the variable
7704 @code{org-agenda-todo-list-sublevels} to get this behavior.
7705 @end itemize
7707 @node Matching tags and properties, Timeline, Global TODO list, Built-in agenda views
7708 @subsection Matching tags and properties
7709 @cindex matching, of tags
7710 @cindex matching, of properties
7711 @cindex tags view
7712 @cindex match view
7714 If headlines in the agenda files are marked with @emph{tags} (@pxref{Tags}),
7715 or have properties (@pxref{Properties and Columns}), you can select headlines
7716 based on this metadata and collect them into an agenda buffer.  The match
7717 syntax described here also applies when creating sparse trees with @kbd{C-c /
7720 @table @kbd
7721 @orgcmd{C-c a m,org-tags-view}
7722 Produce a list of all headlines that match a given set of tags.  The
7723 command prompts for a selection criterion, which is a boolean logic
7724 expression with tags, like @samp{+work+urgent-withboss} or
7725 @samp{work|home} (@pxref{Tags}).  If you often need a specific search,
7726 define a custom command for it (@pxref{Agenda dispatcher}).
7727 @orgcmd{C-c a M,org-tags-view}
7728 @vindex org-tags-match-list-sublevels
7729 @vindex org-agenda-tags-todo-honor-ignore-options
7730 Like @kbd{C-c a m}, but only select headlines that are also TODO items in a
7731 not-DONE state and force checking subitems (see variable
7732 @code{org-tags-match-list-sublevels}).  To exclude scheduled/deadline items,
7733 see the variable @code{org-agenda-tags-todo-honor-ignore-options}.  Matching
7734 specific TODO keywords together with a tags match is also possible, see
7735 @ref{Tag searches}.
7736 @end table
7738 The commands available in the tags list are described in @ref{Agenda
7739 commands}.
7741 @subsubheading Match syntax
7743 @cindex Boolean logic, for tag/property searches
7744 A search string can use Boolean operators @samp{&} for AND and @samp{|} for
7745 OR@.  @samp{&} binds more strongly than @samp{|}.  Parentheses are currently
7746 not implemented.  Each element in the search is either a tag, a regular
7747 expression matching tags, or an expression like @code{PROPERTY OPERATOR
7748 VALUE} with a comparison operator, accessing a property value.  Each element
7749 may be preceded by @samp{-}, to select against it, and @samp{+} is syntactic
7750 sugar for positive selection.  The AND operator @samp{&} is optional when
7751 @samp{+} or @samp{-} is present.  Here are some examples, using only tags.
7753 @table @samp
7754 @item +work-boss
7755 Select headlines tagged @samp{:work:}, but discard those also tagged
7756 @samp{:boss:}.
7757 @item work|laptop
7758 Selects lines tagged @samp{:work:} or @samp{:laptop:}.
7759 @item work|laptop+night
7760 Like before, but require the @samp{:laptop:} lines to be tagged also
7761 @samp{:night:}.
7762 @end table
7764 @cindex regular expressions, with tags search
7765 Instead of a tag, you may also specify a regular expression enclosed in curly
7766 braces.  For example,
7767 @samp{work+@{^boss.*@}} matches headlines that contain the tag
7768 @samp{:work:} and any tag @i{starting} with @samp{boss}.
7770 @cindex TODO keyword matching, with tags search
7771 @cindex level, require for tags/property match
7772 @cindex category, require for tags/property match
7773 @vindex org-odd-levels-only
7774 You may also test for properties (@pxref{Properties and Columns}) at the same
7775 time as matching tags.  The properties may be real properties, or special
7776 properties that represent other metadata (@pxref{Special properties}).  For
7777 example, the ``property'' @code{TODO} represents the TODO keyword of the
7778 entry.  Or, the ``property'' @code{LEVEL} represents the level of an entry.
7779 So a search @samp{+LEVEL=3+boss-TODO="DONE"} lists all level three headlines
7780 that have the tag @samp{boss} and are @emph{not} marked with the TODO keyword
7781 DONE@.  In buffers with @code{org-odd-levels-only} set, @samp{LEVEL} does not
7782 count the number of stars, but @samp{LEVEL=2} will correspond to 3 stars etc.
7783 The ITEM special property cannot currently be used in tags/property
7784 searches@footnote{But @pxref{x-agenda-skip-entry-regexp,
7785 ,skipping entries based on regexp}.}.
7787 Here are more examples:
7788 @table @samp
7789 @item work+TODO="WAITING"
7790 Select @samp{:work:}-tagged TODO lines with the specific TODO
7791 keyword @samp{WAITING}.
7792 @item work+TODO="WAITING"|home+TODO="WAITING"
7793 Waiting tasks both at work and at home.
7794 @end table
7796 When matching properties, a number of different operators can be used to test
7797 the value of a property.  Here is a complex example:
7799 @example
7800 +work-boss+PRIORITY="A"+Coffee="unlimited"+Effort<2         \
7801          +With=@{Sarah\|Denny@}+SCHEDULED>="<2008-10-11>"
7802 @end example
7804 @noindent
7805 The type of comparison will depend on how the comparison value is written:
7806 @itemize @minus
7807 @item
7808 If the comparison value is a plain number, a numerical comparison is done,
7809 and the allowed operators are @samp{<}, @samp{=}, @samp{>}, @samp{<=},
7810 @samp{>=}, and @samp{<>}.
7811 @item
7812 If the comparison value is enclosed in double-quotes,
7813 a string comparison is done, and the same operators are allowed.
7814 @item
7815 If the comparison value is enclosed in double-quotes @emph{and} angular
7816 brackets (like @samp{DEADLINE<="<2008-12-24 18:30>"}), both values are
7817 assumed to be date/time specifications in the standard Org way, and the
7818 comparison will be done accordingly.  Special values that will be recognized
7819 are @code{"<now>"} for now (including time), and @code{"<today>"}, and
7820 @code{"<tomorrow>"} for these days at 0:00 hours, i.e., without a time
7821 specification.  Also strings like @code{"<+5d>"} or @code{"<-2m>"} with units
7822 @code{d}, @code{w}, @code{m}, and @code{y} for day, week, month, and year,
7823 respectively, can be used.
7824 @item
7825 If the comparison value is enclosed
7826 in curly braces, a regexp match is performed, with @samp{=} meaning that the
7827 regexp matches the property value, and @samp{<>} meaning that it does not
7828 match.
7829 @end itemize
7831 So the search string in the example finds entries tagged @samp{:work:} but
7832 not @samp{:boss:}, which also have a priority value @samp{A}, a
7833 @samp{:Coffee:} property with the value @samp{unlimited}, an @samp{Effort}
7834 property that is numerically smaller than 2, a @samp{:With:} property that is
7835 matched by the regular expression @samp{Sarah\|Denny}, and that are scheduled
7836 on or after October 11, 2008.
7838 Accessing TODO, LEVEL, and CATEGORY during a search is fast.  Accessing any
7839 other properties will slow down the search.  However, once you have paid the
7840 price by accessing one property, testing additional properties is cheap
7841 again.
7843 You can configure Org mode to use property inheritance during a search, but
7844 beware that this can slow down searches considerably.  See @ref{Property
7845 inheritance}, for details.
7847 For backward compatibility, and also for typing speed, there is also a
7848 different way to test TODO states in a search.  For this, terminate the
7849 tags/property part of the search string (which may include several terms
7850 connected with @samp{|}) with a @samp{/} and then specify a Boolean
7851 expression just for TODO keywords.  The syntax is then similar to that for
7852 tags, but should be applied with care: for example, a positive selection on
7853 several TODO keywords cannot meaningfully be combined with boolean AND@.
7854 However, @emph{negative selection} combined with AND can be meaningful.  To
7855 make sure that only lines are checked that actually have any TODO keyword
7856 (resulting in a speed-up), use @kbd{C-c a M}, or equivalently start the TODO
7857 part after the slash with @samp{!}.  Using @kbd{C-c a M} or @samp{/!} will
7858 not match TODO keywords in a DONE state.  Examples:
7860 @table @samp
7861 @item work/WAITING
7862 Same as @samp{work+TODO="WAITING"}
7863 @item work/!-WAITING-NEXT
7864 Select @samp{:work:}-tagged TODO lines that are neither @samp{WAITING}
7865 nor @samp{NEXT}
7866 @item work/!+WAITING|+NEXT
7867 Select @samp{:work:}-tagged TODO lines that are either @samp{WAITING} or
7868 @samp{NEXT}.
7869 @end table
7871 @node Timeline, Search view, Matching tags and properties, Built-in agenda views
7872 @subsection Timeline for a single file
7873 @cindex timeline, single file
7874 @cindex time-sorted view
7876 The timeline summarizes all time-stamped items from a single Org mode
7877 file in a @emph{time-sorted view}.  The main purpose of this command is
7878 to give an overview over events in a project.
7880 @table @kbd
7881 @orgcmd{C-c a L,org-timeline}
7882 Show a time-sorted view of the Org file, with all time-stamped items.
7883 When called with a @kbd{C-u} prefix, all unfinished TODO entries
7884 (scheduled or not) are also listed under the current date.
7885 @end table
7887 @noindent
7888 The commands available in the timeline buffer are listed in
7889 @ref{Agenda commands}.
7891 @node Search view, Stuck projects, Timeline, Built-in agenda views
7892 @subsection Search view
7893 @cindex search view
7894 @cindex text search
7895 @cindex searching, for text
7897 This agenda view is a general text search facility for Org mode entries.
7898 It is particularly useful to find notes.
7900 @table @kbd
7901 @orgcmd{C-c a s,org-search-view}
7902 This is a special search that lets you select entries by matching a substring
7903 or specific words using a boolean logic.
7904 @end table
7905 For example, the search string @samp{computer equipment} will find entries
7906 that contain @samp{computer equipment} as a substring.  If the two words are
7907 separated by more space or a line break, the search will still match.
7908 Search view can also search for specific keywords in the entry, using Boolean
7909 logic.  The search string @samp{+computer +wifi -ethernet -@{8\.11[bg]@}}
7910 will search for note entries that contain the keywords @code{computer}
7911 and @code{wifi}, but not the keyword @code{ethernet}, and which are also
7912 not matched by the regular expression @code{8\.11[bg]}, meaning to
7913 exclude both 8.11b and 8.11g.  The first @samp{+} is necessary to turn on
7914 word search, other @samp{+} characters are optional.  For more details, see
7915 the docstring of the command @code{org-search-view}.
7917 @vindex org-agenda-text-search-extra-files
7918 Note that in addition to the agenda files, this command will also search
7919 the files listed in @code{org-agenda-text-search-extra-files}.
7921 @node Stuck projects,  , Search view, Built-in agenda views
7922 @subsection Stuck projects
7923 @pindex GTD, Getting Things Done
7925 If you are following a system like David Allen's GTD to organize your
7926 work, one of the ``duties'' you have is a regular review to make sure
7927 that all projects move along.  A @emph{stuck} project is a project that
7928 has no defined next actions, so it will never show up in the TODO lists
7929 Org mode produces.  During the review, you need to identify such
7930 projects and define next actions for them.
7932 @table @kbd
7933 @orgcmd{C-c a #,org-agenda-list-stuck-projects}
7934 List projects that are stuck.
7935 @kindex C-c a !
7936 @item C-c a !
7937 @vindex org-stuck-projects
7938 Customize the variable @code{org-stuck-projects} to define what a stuck
7939 project is and how to find it.
7940 @end table
7942 You almost certainly will have to configure this view before it will
7943 work for you.  The built-in default assumes that all your projects are
7944 level-2 headlines, and that a project is not stuck if it has at least
7945 one entry marked with a TODO keyword TODO or NEXT or NEXTACTION.
7947 Let's assume that you, in your own way of using Org mode, identify
7948 projects with a tag PROJECT, and that you use a TODO keyword MAYBE to
7949 indicate a project that should not be considered yet.  Let's further
7950 assume that the TODO keyword DONE marks finished projects, and that NEXT
7951 and TODO indicate next actions.  The tag @@SHOP indicates shopping and
7952 is a next action even without the NEXT tag.  Finally, if the project
7953 contains the special word IGNORE anywhere, it should not be listed
7954 either.  In this case you would start by identifying eligible projects
7955 with a tags/todo match@footnote{@xref{Tag searches}.}
7956 @samp{+PROJECT/-MAYBE-DONE}, and then check for TODO, NEXT, @@SHOP, and
7957 IGNORE in the subtree to identify projects that are not stuck.  The
7958 correct customization for this is
7960 @lisp
7961 (setq org-stuck-projects
7962       '("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@@SHOP")
7963                                "\\<IGNORE\\>"))
7964 @end lisp
7966 Note that if a project is identified as non-stuck, the subtree of this entry
7967 will still be searched for stuck projects.
7969 @node Presentation and sorting, Agenda commands, Built-in agenda views, Agenda Views
7970 @section Presentation and sorting
7971 @cindex presentation, of agenda items
7973 @vindex org-agenda-prefix-format
7974 @vindex org-agenda-tags-column
7975 Before displaying items in an agenda view, Org mode visually prepares the
7976 items and sorts them.  Each item occupies a single line.  The line starts
7977 with a @emph{prefix} that contains the @emph{category} (@pxref{Categories})
7978 of the item and other important information.  You can customize in which
7979 column tags will be displayed through @code{org-agenda-tags-column}.  You can
7980 also customize the prefix using the option @code{org-agenda-prefix-format}.
7981 This prefix is followed by a cleaned-up version of the outline headline
7982 associated with the item.
7984 @menu
7985 * Categories::                  Not all tasks are equal
7986 * Time-of-day specifications::  How the agenda knows the time
7987 * Sorting of agenda items::     The order of things
7988 @end menu
7990 @node Categories, Time-of-day specifications, Presentation and sorting, Presentation and sorting
7991 @subsection Categories
7993 @cindex category
7994 @cindex #+CATEGORY
7995 The category is a broad label assigned to each agenda item.  By default,
7996 the category is simply derived from the file name, but you can also
7997 specify it with a special line in the buffer, like this@footnote{For
7998 backward compatibility, the following also works: if there are several
7999 such lines in a file, each specifies the category for the text below it.
8000 The first category also applies to any text before the first CATEGORY
8001 line.  However, using this method is @emph{strongly} deprecated as it is
8002 incompatible with the outline structure of the document.  The correct
8003 method for setting multiple categories in a buffer is using a
8004 property.}:
8006 @example
8007 #+CATEGORY: Thesis
8008 @end example
8010 @noindent
8011 @cindex property, CATEGORY
8012 If you would like to have a special CATEGORY for a single entry or a
8013 (sub)tree, give the entry a @code{:CATEGORY:} property with the
8014 special category you want to apply as the value.
8016 @noindent
8017 The display in the agenda buffer looks best if the category is not
8018 longer than 10 characters.
8020 @noindent
8021 You can set up icons for category by customizing the
8022 @code{org-agenda-category-icon-alist} variable.
8024 @node Time-of-day specifications, Sorting of agenda items, Categories, Presentation and sorting
8025 @subsection Time-of-day specifications
8026 @cindex time-of-day specification
8028 Org mode checks each agenda item for a time-of-day specification.  The
8029 time can be part of the timestamp that triggered inclusion into the
8030 agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}.  Time
8031 ranges can be specified with two timestamps, like
8033 @w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
8035 In the headline of the entry itself, a time(range) may also appear as
8036 plain text (like @samp{12:45} or a @samp{8:30-1pm}).  If the agenda
8037 integrates the Emacs diary (@pxref{Weekly/daily agenda}), time
8038 specifications in diary entries are recognized as well.
8040 For agenda display, Org mode extracts the time and displays it in a
8041 standard 24 hour format as part of the prefix.  The example times in
8042 the previous paragraphs would end up in the agenda like this:
8044 @example
8045     8:30-13:00 Arthur Dent lies in front of the bulldozer
8046    12:45...... Ford Prefect arrives and takes Arthur to the pub
8047    19:00...... The Vogon reads his poem
8048    20:30-22:15 Marvin escorts the Hitchhikers to the bridge
8049 @end example
8051 @cindex time grid
8052 If the agenda is in single-day mode, or for the display of today, the
8053 timed entries are embedded in a time grid, like
8055 @example
8056     8:00...... ------------------
8057     8:30-13:00 Arthur Dent lies in front of the bulldozer
8058    10:00...... ------------------
8059    12:00...... ------------------
8060    12:45...... Ford Prefect arrives and takes Arthur to the pub
8061    14:00...... ------------------
8062    16:00...... ------------------
8063    18:00...... ------------------
8064    19:00...... The Vogon reads his poem
8065    20:00...... ------------------
8066    20:30-22:15 Marvin escorts the Hitchhikers to the bridge
8067 @end example
8069 @vindex org-agenda-use-time-grid
8070 @vindex org-agenda-time-grid
8071 The time grid can be turned on and off with the variable
8072 @code{org-agenda-use-time-grid}, and can be configured with
8073 @code{org-agenda-time-grid}.
8075 @node Sorting of agenda items,  , Time-of-day specifications, Presentation and sorting
8076 @subsection Sorting of agenda items
8077 @cindex sorting, of agenda items
8078 @cindex priorities, of agenda items
8079 Before being inserted into a view, the items are sorted.  How this is
8080 done depends on the type of view.
8081 @itemize @bullet
8082 @item
8083 @vindex org-agenda-files
8084 For the daily/weekly agenda, the items for each day are sorted.  The
8085 default order is to first collect all items containing an explicit
8086 time-of-day specification.  These entries will be shown at the beginning
8087 of the list, as a @emph{schedule} for the day.  After that, items remain
8088 grouped in categories, in the sequence given by @code{org-agenda-files}.
8089 Within each category, items are sorted by priority (@pxref{Priorities}),
8090 which is composed of the base priority (2000 for priority @samp{A}, 1000
8091 for @samp{B}, and 0 for @samp{C}), plus additional increments for
8092 overdue scheduled or deadline items.
8093 @item
8094 For the TODO list, items remain in the order of categories, but within
8095 each category, sorting takes place according to priority
8096 (@pxref{Priorities}).  The priority used for sorting derives from the
8097 priority cookie, with additions depending on how close an item is to its due
8098 or scheduled date.
8099 @item
8100 For tags matches, items are not sorted at all, but just appear in the
8101 sequence in which they are found in the agenda files.
8102 @end itemize
8104 @vindex org-agenda-sorting-strategy
8105 Sorting can be customized using the variable
8106 @code{org-agenda-sorting-strategy}, and may also include criteria based on
8107 the estimated effort of an entry (@pxref{Effort estimates}).
8109 @node Agenda commands, Custom agenda views, Presentation and sorting, Agenda Views
8110 @section Commands in the agenda buffer
8111 @cindex commands, in agenda buffer
8113 Entries in the agenda buffer are linked back to the Org file or diary
8114 file where they originate.  You are not allowed to edit the agenda
8115 buffer itself, but commands are provided to show and jump to the
8116 original entry location, and to edit the Org files ``remotely'' from
8117 the agenda buffer.  In this way, all information is stored only once,
8118 removing the risk that your agenda and note files may diverge.
8120 Some commands can be executed with mouse clicks on agenda lines.  For
8121 the other commands, the cursor needs to be in the desired line.
8123 @table @kbd
8124 @tsubheading{Motion}
8125 @cindex motion commands in agenda
8126 @orgcmd{n,org-agenda-next-line}
8127 Next line (same as @key{down} and @kbd{C-n}).
8128 @orgcmd{p,org-agenda-previous-line}
8129 Previous line (same as @key{up} and @kbd{C-p}).
8130 @tsubheading{View/Go to Org file}
8131 @orgcmdkkc{@key{SPC},mouse-3,org-agenda-show-and-scroll-up}
8132 Display the original location of the item in another window.
8133 With prefix arg, make sure that the entire entry is made visible in the
8134 outline, not only the heading.
8136 @orgcmd{L,org-agenda-recenter}
8137 Display original location and recenter that window.
8139 @orgcmdkkc{@key{TAB},mouse-2,org-agenda-goto}
8140 Go to the original location of the item in another window.
8142 @orgcmd{@key{RET},org-agenda-switch-to}
8143 Go to the original location of the item and delete other windows.
8145 @orgcmd{F,org-agenda-follow-mode}
8146 @vindex org-agenda-start-with-follow-mode
8147 Toggle Follow mode.  In Follow mode, as you move the cursor through
8148 the agenda buffer, the other window always shows the corresponding
8149 location in the Org file.  The initial setting for this mode in new
8150 agenda buffers can be set with the variable
8151 @code{org-agenda-start-with-follow-mode}.
8153 @orgcmd{C-c C-x b,org-agenda-tree-to-indirect-buffer}
8154 Display the entire subtree of the current item in an indirect buffer.  With a
8155 numeric prefix argument N, go up to level N and then take that tree.  If N is
8156 negative, go up that many levels.  With a @kbd{C-u} prefix, do not remove the
8157 previously used indirect buffer.
8159 @orgcmd{C-c C-o,org-agenda-open-link}
8160 Follow a link in the entry.  This will offer a selection of any links in the
8161 text belonging to the referenced Org node.  If there is only one link, it
8162 will be followed without a selection prompt.
8164 @tsubheading{Change display}
8165 @cindex display changing, in agenda
8166 @kindex A
8167 @item A
8168 Interactively select another agenda view and append it to the current view.
8170 @kindex o
8171 @item o
8172 Delete other windows.
8174 @orgcmdkskc{v d,d,org-agenda-day-view}
8175 @xorgcmdkskc{v w,w,org-agenda-week-view}
8176 @xorgcmd{v m,org-agenda-month-view}
8177 @xorgcmd{v y,org-agenda-year-view}
8178 @xorgcmd{v SPC,org-agenda-reset-view}
8179 @vindex org-agenda-span
8180 Switch to day/week/month/year view.  When switching to day or week view, this
8181 setting becomes the default for subsequent agenda refreshes.  Since month and
8182 year views are slow to create, they do not become the default.  A numeric
8183 prefix argument may be used to jump directly to a specific day of the year,
8184 ISO week, month, or year, respectively.  For example, @kbd{32 d} jumps to
8185 February 1st, @kbd{9 w} to ISO week number 9.  When setting day, week, or
8186 month view, a year may be encoded in the prefix argument as well.  For
8187 example, @kbd{200712 w} will jump to week 12 in 2007.  If such a year
8188 specification has only one or two digits, it will be mapped to the interval
8189 1938--2037.  @kbd{v @key{SPC}} will reset to what is set in
8190 @code{org-agenda-span}.
8192 @orgcmd{f,org-agenda-later}
8193 Go forward in time to display the following @code{org-agenda-current-span} days.
8194 For example, if the display covers a week, switch to the following week.
8195 With prefix arg, go forward that many times @code{org-agenda-current-span} days.
8197 @orgcmd{b,org-agenda-earlier}
8198 Go backward in time to display earlier dates.
8200 @orgcmd{.,org-agenda-goto-today}
8201 Go to today.
8203 @orgcmd{j,org-agenda-goto-date}
8204 Prompt for a date and go there.
8206 @orgcmd{J,org-agenda-clock-goto}
8207 Go to the currently clocked-in task @i{in the agenda buffer}.
8209 @orgcmd{D,org-agenda-toggle-diary}
8210 Toggle the inclusion of diary entries.  See @ref{Weekly/daily agenda}.
8212 @orgcmdkskc{v l,l,org-agenda-log-mode}
8213 @kindex v L
8214 @vindex org-log-done
8215 @vindex org-agenda-log-mode-items
8216 Toggle Logbook mode.  In Logbook mode, entries that were marked DONE while
8217 logging was on (variable @code{org-log-done}) are shown in the agenda, as are
8218 entries that have been clocked on that day.  You can configure the entry
8219 types that should be included in log mode using the variable
8220 @code{org-agenda-log-mode-items}.  When called with a @kbd{C-u} prefix, show
8221 all possible logbook entries, including state changes.  When called with two
8222 prefix args @kbd{C-u C-u}, show only logging information, nothing else.
8223 @kbd{v L} is equivalent to @kbd{C-u v l}.
8225 @orgcmdkskc{v [,[,org-agenda-manipulate-query-add}
8226 Include inactive timestamps into the current view.  Only for weekly/daily
8227 agenda and timeline views.
8229 @orgcmd{v a,org-agenda-archives-mode}
8230 @xorgcmd{v A,org-agenda-archives-mode 'files}
8231 Toggle Archives mode.  In Archives mode, trees that are marked
8232 @code{ARCHIVED} are also scanned when producing the agenda.  When you use the
8233 capital @kbd{A}, even all archive files are included.  To exit archives mode,
8234 press @kbd{v a} again.
8236 @orgcmdkskc{v R,R,org-agenda-clockreport-mode}
8237 @vindex org-agenda-start-with-clockreport-mode
8238 @vindex org-clock-report-include-clocking-task
8239 Toggle Clockreport mode.  In Clockreport mode, the daily/weekly agenda will
8240 always show a table with the clocked times for the timespan and file scope
8241 covered by the current agenda view.  The initial setting for this mode in new
8242 agenda buffers can be set with the variable
8243 @code{org-agenda-start-with-clockreport-mode}.  By using a prefix argument
8244 when toggling this mode (i.e., @kbd{C-u R}), the clock table will not show
8245 contributions from entries that are hidden by agenda filtering@footnote{Only
8246 tags filtering will be respected here, effort filtering is ignored.}.  See
8247 also the variable @code{org-clock-report-include-clocking-task}.
8249 @orgkey{v c}
8250 @vindex org-agenda-clock-consistency-checks
8251 Show overlapping clock entries, clocking gaps, and other clocking problems in
8252 the current agenda range.  You can then visit clocking lines and fix them
8253 manually.  See the variable @code{org-agenda-clock-consistency-checks} for
8254 information on how to customize the definition of what constituted a clocking
8255 problem.  To return to normal agenda display, press @kbd{l} to exit Logbook
8256 mode.
8258 @orgcmdkskc{v E,E,org-agenda-entry-text-mode}
8259 @vindex org-agenda-start-with-entry-text-mode
8260 @vindex org-agenda-entry-text-maxlines
8261 Toggle entry text mode.  In entry text mode, a number of lines from the Org
8262 outline node referenced by an agenda line will be displayed below the line.
8263 The maximum number of lines is given by the variable
8264 @code{org-agenda-entry-text-maxlines}.  Calling this command with a numeric
8265 prefix argument will temporarily modify that number to the prefix value.
8267 @orgcmd{G,org-agenda-toggle-time-grid}
8268 @vindex org-agenda-use-time-grid
8269 @vindex org-agenda-time-grid
8270 Toggle the time grid on and off.  See also the variables
8271 @code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
8273 @orgcmd{r,org-agenda-redo}
8274 Recreate the agenda buffer, for example to reflect the changes after
8275 modification of the timestamps of items with @kbd{S-@key{left}} and
8276 @kbd{S-@key{right}}.  When the buffer is the global TODO list, a prefix
8277 argument is interpreted to create a selective list for a specific TODO
8278 keyword.
8279 @orgcmd{g,org-agenda-redo}
8280 Same as @kbd{r}.
8282 @orgcmdkskc{C-x C-s,s,org-save-all-org-buffers}
8283 Save all Org buffers in the current Emacs session, and also the locations of
8284 IDs.
8286 @orgcmd{C-c C-x C-c,org-agenda-columns}
8287 @vindex org-columns-default-format
8288 Invoke column view (@pxref{Column view}) in the agenda buffer.  The column
8289 view format is taken from the entry at point, or (if there is no entry at
8290 point), from the first entry in the agenda view.  So whatever the format for
8291 that entry would be in the original buffer (taken from a property, from a
8292 @code{#+COLUMNS} line, or from the default variable
8293 @code{org-columns-default-format}), will be used in the agenda.
8295 @orgcmd{C-c C-x >,org-agenda-remove-restriction-lock}
8296 Remove the restriction lock on the agenda, if it is currently restricted to a
8297 file or subtree (@pxref{Agenda files}).
8299 @tsubheading{Secondary filtering and query editing}
8300 @cindex filtering, by tag category and effort, in agenda
8301 @cindex tag filtering, in agenda
8302 @cindex category filtering, in agenda
8303 @cindex effort filtering, in agenda
8304 @cindex query editing, in agenda
8306 @orgcmd{<,org-agenda-filter-by-category}
8307 @vindex org-agenda-category-filter-preset
8309 Filter the current agenda view with respect to the category of the item at
8310 point.  Pressing @code{<} another time will remove this filter.  You can add
8311 a filter preset through the option @code{org-agenda-category-filter-preset}
8312 (see below.)
8314 @orgcmd{/,org-agenda-filter-by-tag}
8315 @vindex org-agenda-tag-filter-preset
8316 Filter the current agenda view with respect to a tag and/or effort estimates.
8317 The difference between this and a custom agenda command is that filtering is
8318 very fast, so that you can switch quickly between different filters without
8319 having to recreate the agenda.@footnote{Custom commands can preset a filter by
8320 binding the variable @code{org-agenda-tag-filter-preset} as an option.  This
8321 filter will then be applied to the view and persist as a basic filter through
8322 refreshes and more secondary filtering.  The filter is a global property of
8323 the entire agenda view---in a block agenda, you should only set this in the
8324 global options section, not in the section of an individual block.}
8326 You will be prompted for a tag selection letter; @key{SPC} will mean any tag at
8327 all.  Pressing @key{TAB} at that prompt will offer use completion to select a
8328 tag (including any tags that do not have a selection character).  The command
8329 then hides all entries that do not contain or inherit this tag.  When called
8330 with prefix arg, remove the entries that @emph{do} have the tag.  A second
8331 @kbd{/} at the prompt will turn off the filter and unhide any hidden entries.
8332 If the first key you press is either @kbd{+} or @kbd{-}, the previous filter
8333 will be narrowed by requiring or forbidding the selected additional tag.
8334 Instead of pressing @kbd{+} or @kbd{-} after @kbd{/}, you can also
8335 immediately use the @kbd{\} command.
8337 @vindex org-sort-agenda-noeffort-is-high
8338 In order to filter for effort estimates, you should set up allowed
8339 efforts globally, for example
8340 @lisp
8341 (setq org-global-properties
8342     '(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00")))
8343 @end lisp
8344 You can then filter for an effort by first typing an operator, one of
8345 @kbd{<}, @kbd{>}, and @kbd{=}, and then the one-digit index of an effort
8346 estimate in your array of allowed values, where @kbd{0} means the 10th value.
8347 The filter will then restrict to entries with effort smaller-or-equal, equal,
8348 or larger-or-equal than the selected value.  If the digits 0--9 are not used
8349 as fast access keys to tags, you can also simply press the index digit
8350 directly without an operator.  In this case, @kbd{<} will be assumed.  For
8351 application of the operator, entries without a defined effort will be treated
8352 according to the value of @code{org-sort-agenda-noeffort-is-high}.  To filter
8353 for tasks without effort definition, press @kbd{?} as the operator.
8355 Org also supports automatic, context-aware tag filtering.  If the variable
8356 @code{org-agenda-auto-exclude-function} is set to a user-defined function,
8357 that function can decide which tags should be excluded from the agenda
8358 automatically.  Once this is set, the @kbd{/} command then accepts @kbd{RET}
8359 as a sub-option key and runs the auto exclusion logic.  For example, let's
8360 say you use a @code{Net} tag to identify tasks which need network access, an
8361 @code{Errand} tag for errands in town, and a @code{Call} tag for making phone
8362 calls.  You could auto-exclude these tags based on the availability of the
8363 Internet, and outside of business hours, with something like this:
8365 @lisp
8366 @group
8367 (defun org-my-auto-exclude-function (tag)
8368   (and (cond
8369         ((string= tag "Net")
8370          (/= 0 (call-process "/sbin/ping" nil nil nil
8371                              "-c1" "-q" "-t1" "mail.gnu.org")))
8372         ((or (string= tag "Errand") (string= tag "Call"))
8373          (let ((hour (nth 2 (decode-time))))
8374            (or (< hour 8) (> hour 21)))))
8375        (concat "-" tag)))
8377 (setq org-agenda-auto-exclude-function 'org-my-auto-exclude-function)
8378 @end group
8379 @end lisp
8381 @orgcmd{\\,org-agenda-filter-by-tag-refine}
8382 Narrow the current agenda filter by an additional condition.  When called with
8383 prefix arg, remove the entries that @emph{do} have the tag, or that do match
8384 the effort criterion.  You can achieve the same effect by pressing @kbd{+} or
8385 @kbd{-} as the first key after the @kbd{/} command.
8388 @kindex [
8389 @kindex ]
8390 @kindex @{
8391 @kindex @}
8392 @item [ ] @{ @}
8393 @table @i
8394 @item @r{in} search view
8395 add new search words (@kbd{[} and @kbd{]}) or new regular expressions
8396 (@kbd{@{} and @kbd{@}}) to the query string.  The opening bracket/brace will
8397 add a positive search term prefixed by @samp{+}, indicating that this search
8398 term @i{must} occur/match in the entry.  The closing bracket/brace will add a
8399 negative search term which @i{must not} occur/match in the entry for it to be
8400 selected.
8401 @end table
8403 @tsubheading{Remote editing}
8404 @cindex remote editing, from agenda
8406 @item 0--9
8407 Digit argument.
8409 @cindex undoing remote-editing events
8410 @cindex remote editing, undo
8411 @orgcmd{C-_,org-agenda-undo}
8412 Undo a change due to a remote editing command.  The change is undone
8413 both in the agenda buffer and in the remote buffer.
8415 @orgcmd{t,org-agenda-todo}
8416 Change the TODO state of the item, both in the agenda and in the
8417 original org file.
8419 @orgcmd{C-S-@key{right},org-agenda-todo-nextset}
8420 @orgcmd{C-S-@key{left},org-agenda-todo-previousset}
8421 Switch to the next/previous set of TODO keywords.
8423 @orgcmd{C-k,org-agenda-kill}
8424 @vindex org-agenda-confirm-kill
8425 Delete the current agenda item along with the entire subtree belonging
8426 to it in the original Org file.  If the text to be deleted remotely
8427 is longer than one line, the kill needs to be confirmed by the user.  See
8428 variable @code{org-agenda-confirm-kill}.
8430 @orgcmd{C-c C-w,org-agenda-refile}
8431 Refile the entry at point.
8433 @orgcmdkskc{C-c C-x C-a,a,org-agenda-archive-default-with-confirmation}
8434 @vindex org-archive-default-command
8435 Archive the subtree corresponding to the entry at point using the default
8436 archiving command set in @code{org-archive-default-command}.  When using the
8437 @code{a} key, confirmation will be required.
8439 @orgcmd{C-c C-x a,org-agenda-toggle-archive-tag}
8440 Toggle the ARCHIVE tag for the current headline.
8442 @orgcmd{C-c C-x A,org-agenda-archive-to-archive-sibling}
8443 Move the subtree corresponding to the current entry to its @emph{archive
8444 sibling}.
8446 @orgcmdkskc{C-c C-x C-s,$,org-agenda-archive}
8447 Archive the subtree corresponding to the current headline.  This means the
8448 entry will be moved to the configured archive location, most likely a
8449 different file.
8451 @orgcmd{T,org-agenda-show-tags}
8452 @vindex org-agenda-show-inherited-tags
8453 Show all tags associated with the current item.  This is useful if you have
8454 turned off @code{org-agenda-show-inherited-tags}, but still want to see all
8455 tags of a headline occasionally.
8457 @orgcmd{:,org-agenda-set-tags}
8458 Set tags for the current headline.  If there is an active region in the
8459 agenda, change a tag for all headings in the region.
8461 @kindex ,
8462 @item ,
8463 Set the priority for the current item (@command{org-agenda-priority}).
8464 Org mode prompts for the priority character.  If you reply with @key{SPC},
8465 the priority cookie is removed from the entry.
8467 @orgcmd{P,org-agenda-show-priority}
8468 Display weighted priority of current item.
8470 @orgcmdkkc{+,S-@key{up},org-agenda-priority-up}
8471 Increase the priority of the current item.  The priority is changed in
8472 the original buffer, but the agenda is not resorted.  Use the @kbd{r}
8473 key for this.
8475 @orgcmdkkc{-,S-@key{down},org-agenda-priority-down}
8476 Decrease the priority of the current item.
8478 @orgcmdkkc{z,C-c C-z,org-agenda-add-note}
8479 @vindex org-log-into-drawer
8480 Add a note to the entry.  This note will be recorded, and then filed to the
8481 same location where state change notes are put.  Depending on
8482 @code{org-log-into-drawer}, this may be inside a drawer.
8484 @orgcmd{C-c C-a,org-attach}
8485 Dispatcher for all command related to attachments.
8487 @orgcmd{C-c C-s,org-agenda-schedule}
8488 Schedule this item.  With prefix arg remove the scheduling timestamp
8490 @orgcmd{C-c C-d,org-agenda-deadline}
8491 Set a deadline for this item.  With prefix arg remove the deadline.
8493 @orgcmd{S-@key{right},org-agenda-do-date-later}
8494 Change the timestamp associated with the current line by one day into the
8495 future.  If the date is in the past, the first call to this command will move
8496 it to today.@*
8497 With a numeric prefix argument, change it by that many days.  For example,
8498 @kbd{3 6 5 S-@key{right}} will change it by a year.  With a @kbd{C-u} prefix,
8499 change the time by one hour.  If you immediately repeat the command, it will
8500 continue to change hours even without the prefix arg.  With a double @kbd{C-u
8501 C-u} prefix, do the same for changing minutes.@*
8502 The stamp is changed in the original Org file, but the change is not directly
8503 reflected in the agenda buffer.  Use @kbd{r} or @kbd{g} to update the buffer.
8505 @orgcmd{S-@key{left},org-agenda-do-date-earlier}
8506 Change the timestamp associated with the current line by one day
8507 into the past.
8509 @orgcmd{>,org-agenda-date-prompt}
8510 Change the timestamp associated with the current line.  The key @kbd{>} has
8511 been chosen, because it is the same as @kbd{S-.}  on my keyboard.
8513 @orgcmd{I,org-agenda-clock-in}
8514 Start the clock on the current item.  If a clock is running already, it
8515 is stopped first.
8517 @orgcmd{O,org-agenda-clock-out}
8518 Stop the previously started clock.
8520 @orgcmd{X,org-agenda-clock-cancel}
8521 Cancel the currently running clock.
8523 @orgcmd{J,org-agenda-clock-goto}
8524 Jump to the running clock in another window.
8526 @orgcmd{k,org-agenda-capture}
8527 Like @code{org-capture}, but use the date at point as the default date for
8528 the capture template.  See @var{org-capture-use-agenda-date} to make this
8529 the default behavior of @code{org-capture}.
8530 @cindex capturing, from agenda
8531 @vindex org-capture-use-agenda-date
8533 @tsubheading{Bulk remote editing selected entries}
8534 @cindex remote editing, bulk, from agenda
8535 @vindex org-agenda-bulk-persistent-marks
8536 @vindex org-agenda-bulk-custom-functions
8538 @orgcmd{m,org-agenda-bulk-mark}
8539 Mark the entry at point for bulk action.  With prefix arg, mark that many
8540 successive entries.
8542 @orgcmd{%,org-agenda-bulk-mark-regexp}
8543 Mark entries matching a regular expression for bulk action.
8545 @orgcmd{u,org-agenda-bulk-unmark}
8546 Unmark entry for bulk action.
8548 @orgcmd{U,org-agenda-bulk-remove-all-marks}
8549 Unmark all marked entries for bulk action.
8551 @orgcmd{B,org-agenda-bulk-action}
8552 Bulk action: act on all marked entries in the agenda.  This will prompt for
8553 another key to select the action to be applied.  The prefix arg to @kbd{B}
8554 will be passed through to the @kbd{s} and @kbd{d} commands, to bulk-remove
8555 these special timestamps.  By default, marks are removed after the bulk.  If
8556 you want them to persist, set @code{org-agenda-bulk-persistent-marks} to
8557 @code{t} or hit @kbd{p} at the prompt.
8559 @example
8560 *  @r{Toggle persistent marks.}
8561 $  @r{Archive all selected entries.}
8562 A  @r{Archive entries by moving them to their respective archive siblings.}
8563 t  @r{Change TODO state.  This prompts for a single TODO keyword and}
8564    @r{changes the state of all selected entries, bypassing blocking and}
8565    @r{suppressing logging notes (but not timestamps).}
8566 +  @r{Add a tag to all selected entries.}
8567 -  @r{Remove a tag from all selected entries.}
8568 s  @r{Schedule all items to a new date.  To shift existing schedule dates}
8569    @r{by a fixed number of days, use something starting with double plus}
8570    @r{at the prompt, for example @samp{++8d} or @samp{++2w}.}
8571 d  @r{Set deadline to a specific date.}
8572 r  @r{Prompt for a single refile target and move all entries.  The entries}
8573    @r{will no longer be in the agenda; refresh (@kbd{g}) to bring them back.}
8574 S  @r{Reschedule randomly into the coming N days.  N will be prompted for.}
8575    @r{With prefix arg (@kbd{C-u B S}), scatter only across weekdays.}
8576 f  @r{Apply a function@footnote{You can also create persistent custom functions through@code{org-agenda-bulk-custom-functions}.} to marked entries.}
8577    @r{For example, the function below sets the CATEGORY property of the}
8578    @r{entries to web.}
8579    @r{(defun set-category ()}
8580    @r{  (interactive "P")}
8581    @r{  (let* ((marker (or (org-get-at-bol 'org-hd-marker)}
8582    @r{                     (org-agenda-error)))}
8583    @r{            (buffer (marker-buffer marker)))}
8584    @r{       (with-current-buffer buffer}
8585    @r{         (save-excursion}
8586    @r{           (save-restriction}
8587    @r{             (widen)}
8588    @r{             (goto-char marker)}
8589    @r{             (org-back-to-heading t)}
8590    @r{             (org-set-property "CATEGORY" "web"))))))}
8591 @end example
8594 @tsubheading{Calendar commands}
8595 @cindex calendar commands, from agenda
8597 @orgcmd{c,org-agenda-goto-calendar}
8598 Open the Emacs calendar and move to the date at the agenda cursor.
8600 @orgcmd{c,org-calendar-goto-agenda}
8601 When in the calendar, compute and show the Org mode agenda for the
8602 date at the cursor.
8604 @cindex diary entries, creating from agenda
8605 @orgcmd{i,org-agenda-diary-entry}
8606 @vindex org-agenda-diary-file
8607 Insert a new entry into the diary, using the date at the cursor and (for
8608 block entries) the date at the mark.  This will add to the Emacs diary
8609 file@footnote{This file is parsed for the agenda when
8610 @code{org-agenda-include-diary} is set.}, in a way similar to the @kbd{i}
8611 command in the calendar.  The diary file will pop up in another window, where
8612 you can add the entry.
8614 If you configure @code{org-agenda-diary-file} to point to an Org mode file,
8615 Org will create entries (in Org mode syntax) in that file instead.  Most
8616 entries will be stored in a date-based outline tree that will later make it
8617 easy to archive appointments from previous months/years.  The tree will be
8618 built under an entry with a @code{DATE_TREE} property, or else with years as
8619 top-level entries.  Emacs will prompt you for the entry text---if you specify
8620 it, the entry will be created in @code{org-agenda-diary-file} without further
8621 interaction.  If you directly press @key{RET} at the prompt without typing
8622 text, the target file will be shown in another window for you to finish the
8623 entry there.  See also the @kbd{k r} command.
8625 @orgcmd{M,org-agenda-phases-of-moon}
8626 Show the phases of the moon for the three months around current date.
8628 @orgcmd{S,org-agenda-sunrise-sunset}
8629 Show sunrise and sunset times.  The geographical location must be set
8630 with calendar variables, see the documentation for the Emacs calendar.
8632 @orgcmd{C,org-agenda-convert-date}
8633 Convert the date at cursor into many other cultural and historic
8634 calendars.
8636 @orgcmd{H,org-agenda-holidays}
8637 Show holidays for three months around the cursor date.
8639 @item M-x org-export-icalendar-combine-agenda-files
8640 Export a single iCalendar file containing entries from all agenda files.
8641 This is a globally available command, and also available in the agenda menu.
8643 @tsubheading{Exporting to a file}
8644 @orgcmd{C-x C-w,org-agenda-write}
8645 @cindex exporting agenda views
8646 @cindex agenda views, exporting
8647 @vindex org-agenda-exporter-settings
8648 Write the agenda view to a file.  Depending on the extension of the selected
8649 file name, the view will be exported as HTML (@file{.html} or @file{.htm}),
8650 Postscript (@file{.ps}), PDF (@file{.pdf}), Org (@file{.org}) and plain text
8651 (any other extension).  When exporting to Org, only the body of original
8652 headlines are exported, not subtrees or inherited tags.  When called with a
8653 @kbd{C-u} prefix argument, immediately open the newly created file.  Use the
8654 variable @code{org-agenda-exporter-settings} to set options for
8655 @file{ps-print} and for @file{htmlize} to be used during export.
8657 @tsubheading{Quit and Exit}
8658 @orgcmd{q,org-agenda-quit}
8659 Quit agenda, remove the agenda buffer.
8661 @cindex agenda files, removing buffers
8662 @orgcmd{x,org-agenda-exit}
8663 Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
8664 for the compilation of the agenda.  Buffers created by the user to
8665 visit Org files will not be removed.
8666 @end table
8669 @node Custom agenda views, Exporting Agenda Views, Agenda commands, Agenda Views
8670 @section Custom agenda views
8671 @cindex custom agenda views
8672 @cindex agenda views, custom
8674 Custom agenda commands serve two purposes: to store and quickly access
8675 frequently used TODO and tags searches, and to create special composite
8676 agenda buffers.  Custom agenda commands will be accessible through the
8677 dispatcher (@pxref{Agenda dispatcher}), just like the default commands.
8679 @menu
8680 * Storing searches::            Type once, use often
8681 * Block agenda::                All the stuff you need in a single buffer
8682 * Setting Options::             Changing the rules
8683 @end menu
8685 @node Storing searches, Block agenda, Custom agenda views, Custom agenda views
8686 @subsection Storing searches
8688 The first application of custom searches is the definition of keyboard
8689 shortcuts for frequently used searches, either creating an agenda
8690 buffer, or a sparse tree (the latter covering of course only the current
8691 buffer).
8692 @kindex C-c a C
8693 @vindex org-agenda-custom-commands
8694 @cindex agenda views, main example
8695 @cindex tags, as an agenda view
8696 @cindex todo, as an agenda view
8697 @cindex tags-todo
8698 @cindex todo-tree
8699 @cindex occur-tree
8700 @cindex tags-tree
8702 Custom commands are configured in the variable
8703 @code{org-agenda-custom-commands}.  You can customize this variable, for
8704 example by pressing @kbd{C-c a C}.  You can also directly set it with Emacs
8705 Lisp in @file{.emacs}.  The following example contains all valid search
8706 types:
8708 @lisp
8709 @group
8710 (setq org-agenda-custom-commands
8711       '(("w" todo "WAITING")
8712         ("W" todo-tree "WAITING")
8713         ("u" tags "+boss-urgent")
8714         ("v" tags-todo "+boss-urgent")
8715         ("U" tags-tree "+boss-urgent")
8716         ("f" occur-tree "\\<FIXME\\>")
8717         ("h" . "HOME+Name tags searches") ; description for "h" prefix
8718         ("hl" tags "+home+Lisa")
8719         ("hp" tags "+home+Peter")
8720         ("hk" tags "+home+Kim")))
8721 @end group
8722 @end lisp
8724 @noindent
8725 The initial string in each entry defines the keys you have to press
8726 after the dispatcher command @kbd{C-c a} in order to access the command.
8727 Usually this will be just a single character, but if you have many
8728 similar commands, you can also define two-letter combinations where the
8729 first character is the same in several combinations and serves as a
8730 prefix key@footnote{You can provide a description for a prefix key by
8731 inserting a cons cell with the prefix and the description.}.  The second
8732 parameter is the search type, followed by the string or regular
8733 expression to be used for the matching.  The example above will
8734 therefore define:
8736 @table @kbd
8737 @item C-c a w
8738 as a global search for TODO entries with @samp{WAITING} as the TODO
8739 keyword
8740 @item C-c a W
8741 as the same search, but only in the current buffer and displaying the
8742 results as a sparse tree
8743 @item C-c a u
8744 as a global tags search for headlines marked @samp{:boss:} but not
8745 @samp{:urgent:}
8746 @item C-c a v
8747 as the same search as @kbd{C-c a u}, but limiting the search to
8748 headlines that are also TODO items
8749 @item C-c a U
8750 as the same search as @kbd{C-c a u}, but only in the current buffer and
8751 displaying the result as a sparse tree
8752 @item C-c a f
8753 to create a sparse tree (again: current buffer only) with all entries
8754 containing the word @samp{FIXME}
8755 @item C-c a h
8756 as a prefix command for a HOME tags search where you have to press an
8757 additional key (@kbd{l}, @kbd{p} or @kbd{k}) to select a name (Lisa,
8758 Peter, or Kim) as additional tag to match.
8759 @end table
8761 Note that the @code{*-tree} agenda views need to be called from an
8762 Org buffer as they operate on the current buffer only.
8764 @node Block agenda, Setting Options, Storing searches, Custom agenda views
8765 @subsection Block agenda
8766 @cindex block agenda
8767 @cindex agenda, with block views
8769 Another possibility is the construction of agenda views that comprise
8770 the results of @emph{several} commands, each of which creates a block in
8771 the agenda buffer.  The available commands include @code{agenda} for the
8772 daily or weekly agenda (as created with @kbd{C-c a a}), @code{alltodo}
8773 for the global TODO list (as constructed with @kbd{C-c a t}), and the
8774 matching commands discussed above: @code{todo}, @code{tags}, and
8775 @code{tags-todo}.  Here are two examples:
8777 @lisp
8778 @group
8779 (setq org-agenda-custom-commands
8780       '(("h" "Agenda and Home-related tasks"
8781          ((agenda "")
8782           (tags-todo "home")
8783           (tags "garden")))
8784         ("o" "Agenda and Office-related tasks"
8785          ((agenda "")
8786           (tags-todo "work")
8787           (tags "office")))))
8788 @end group
8789 @end lisp
8791 @noindent
8792 This will define @kbd{C-c a h} to create a multi-block view for stuff
8793 you need to attend to at home.  The resulting agenda buffer will contain
8794 your agenda for the current week, all TODO items that carry the tag
8795 @samp{home}, and also all lines tagged with @samp{garden}.  Finally the
8796 command @kbd{C-c a o} provides a similar view for office tasks.
8798 @node Setting Options,  , Block agenda, Custom agenda views
8799 @subsection Setting options for custom commands
8800 @cindex options, for custom agenda views
8802 @vindex org-agenda-custom-commands
8803 Org mode contains a number of variables regulating agenda construction
8804 and display.  The global variables define the behavior for all agenda
8805 commands, including the custom commands.  However, if you want to change
8806 some settings just for a single custom view, you can do so.  Setting
8807 options requires inserting a list of variable names and values at the
8808 right spot in @code{org-agenda-custom-commands}.  For example:
8810 @lisp
8811 @group
8812 (setq org-agenda-custom-commands
8813       '(("w" todo "WAITING"
8814          ((org-agenda-sorting-strategy '(priority-down))
8815           (org-agenda-prefix-format "  Mixed: ")))
8816         ("U" tags-tree "+boss-urgent"
8817          ((org-show-following-heading nil)
8818           (org-show-hierarchy-above nil)))
8819         ("N" search ""
8820          ((org-agenda-files '("~org/notes.org"))
8821           (org-agenda-text-search-extra-files nil)))))
8822 @end group
8823 @end lisp
8825 @noindent
8826 Now the @kbd{C-c a w} command will sort the collected entries only by
8827 priority, and the prefix format is modified to just say @samp{  Mixed: }
8828 instead of giving the category of the entry.  The sparse tags tree of
8829 @kbd{C-c a U} will now turn out ultra-compact, because neither the
8830 headline hierarchy above the match, nor the headline following the match
8831 will be shown.  The command @kbd{C-c a N} will do a text search limited
8832 to only a single file.
8834 @vindex org-agenda-custom-commands
8835 For command sets creating a block agenda,
8836 @code{org-agenda-custom-commands} has two separate spots for setting
8837 options.  You can add options that should be valid for just a single
8838 command in the set, and options that should be valid for all commands in
8839 the set.  The former are just added to the command entry; the latter
8840 must come after the list of command entries.  Going back to the block
8841 agenda example (@pxref{Block agenda}), let's change the sorting strategy
8842 for the @kbd{C-c a h} commands to @code{priority-down}, but let's sort
8843 the results for GARDEN tags query in the opposite order,
8844 @code{priority-up}.  This would look like this:
8846 @lisp
8847 @group
8848 (setq org-agenda-custom-commands
8849       '(("h" "Agenda and Home-related tasks"
8850          ((agenda)
8851           (tags-todo "home")
8852           (tags "garden"
8853                 ((org-agenda-sorting-strategy '(priority-up)))))
8854          ((org-agenda-sorting-strategy '(priority-down))))
8855         ("o" "Agenda and Office-related tasks"
8856          ((agenda)
8857           (tags-todo "work")
8858           (tags "office")))))
8859 @end group
8860 @end lisp
8862 As you see, the values and parentheses setting is a little complex.
8863 When in doubt, use the customize interface to set this variable---it
8864 fully supports its structure.  Just one caveat: when setting options in
8865 this interface, the @emph{values} are just Lisp expressions.  So if the
8866 value is a string, you need to add the double-quotes around the value
8867 yourself.
8869 @vindex org-agenda-custom-commands-contexts
8870 To control whether an agenda command should be accessible from a specific
8871 context, you can customize @var{org-agenda-custom-commands-contexts}.  Let's
8872 say for example that you have an agenda commands @code{"o"} displaying a view
8873 that you only need when reading emails.  Then you would configure this option
8874 like this:
8876 @example
8877 (setq org-agenda-custom-commands-contexts
8878       '(("o" (in-mode . "message-mode"))))
8879 @end example
8881 You can also tell that the command key @code{"o"} should refer to another
8882 command key @code{"r"}.  In that case, add this command key like this:
8884 @example
8885 (setq org-agenda-custom-commands-contexts
8886       '(("o" "r" (in-mode . "message-mode"))))
8887 @end example
8889 See the docstring of the variable for more information.
8891 @node Exporting Agenda Views, Agenda column view, Custom agenda views, Agenda Views
8892 @section Exporting Agenda Views
8893 @cindex agenda views, exporting
8895 If you are away from your computer, it can be very useful to have a printed
8896 version of some agenda views to carry around.  Org mode can export custom
8897 agenda views as plain text, HTML@footnote{You need to install Hrvoje Niksic's
8898 @file{htmlize.el}.}, Postscript, PDF@footnote{To create PDF output, the
8899 ghostscript @file{ps2pdf} utility must be installed on the system.  Selecting
8900 a PDF file will also create the postscript file.}, and iCalendar files.  If
8901 you want to do this only occasionally, use the command
8903 @table @kbd
8904 @orgcmd{C-x C-w,org-agenda-write}
8905 @cindex exporting agenda views
8906 @cindex agenda views, exporting
8907 @vindex org-agenda-exporter-settings
8908 Write the agenda view to a file.  Depending on the extension of the selected
8909 file name, the view will be exported as HTML (extension @file{.html} or
8910 @file{.htm}), Postscript (extension @file{.ps}), iCalendar (extension
8911 @file{.ics}), or plain text (any other extension).  Use the variable
8912 @code{org-agenda-exporter-settings} to set options for @file{ps-print} and
8913 for @file{htmlize} to be used during export, for example
8915 @vindex org-agenda-add-entry-text-maxlines
8916 @vindex htmlize-output-type
8917 @vindex ps-number-of-columns
8918 @vindex ps-landscape-mode
8919 @lisp
8920 (setq org-agenda-exporter-settings
8921       '((ps-number-of-columns 2)
8922         (ps-landscape-mode t)
8923         (org-agenda-add-entry-text-maxlines 5)
8924         (htmlize-output-type 'css)))
8925 @end lisp
8926 @end table
8928 If you need to export certain agenda views frequently, you can associate
8929 any custom agenda command with a list of output file names
8930 @footnote{If you want to store standard views like the weekly agenda
8931 or the global TODO list as well, you need to define custom commands for
8932 them in order to be able to specify file names.}.  Here is an example
8933 that first defines custom commands for the agenda and the global
8934 TODO list, together with a number of files to which to export them.
8935 Then we define two block agenda commands and specify file names for them
8936 as well.  File names can be relative to the current working directory,
8937 or absolute.
8939 @lisp
8940 @group
8941 (setq org-agenda-custom-commands
8942       '(("X" agenda "" nil ("agenda.html" "agenda.ps"))
8943         ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
8944         ("h" "Agenda and Home-related tasks"
8945          ((agenda "")
8946           (tags-todo "home")
8947           (tags "garden"))
8948          nil
8949          ("~/views/home.html"))
8950         ("o" "Agenda and Office-related tasks"
8951          ((agenda)
8952           (tags-todo "work")
8953           (tags "office"))
8954          nil
8955          ("~/views/office.ps" "~/calendars/office.ics"))))
8956 @end group
8957 @end lisp
8959 The extension of the file name determines the type of export.  If it is
8960 @file{.html}, Org mode will use the @file{htmlize.el} package to convert
8961 the buffer to HTML and save it to this file name.  If the extension is
8962 @file{.ps}, @code{ps-print-buffer-with-faces} is used to produce
8963 Postscript output.  If the extension is @file{.ics}, iCalendar export is
8964 run export over all files that were used to construct the agenda, and
8965 limit the export to entries listed in the agenda.  Any other
8966 extension produces a plain ASCII file.
8968 The export files are @emph{not} created when you use one of those
8969 commands interactively because this might use too much overhead.
8970 Instead, there is a special command to produce @emph{all} specified
8971 files in one step:
8973 @table @kbd
8974 @orgcmd{C-c a e,org-store-agenda-views}
8975 Export all agenda views that have export file names associated with
8976 them.
8977 @end table
8979 You can use the options section of the custom agenda commands to also
8980 set options for the export commands.  For example:
8982 @lisp
8983 (setq org-agenda-custom-commands
8984       '(("X" agenda ""
8985          ((ps-number-of-columns 2)
8986           (ps-landscape-mode t)
8987           (org-agenda-prefix-format " [ ] ")
8988           (org-agenda-with-colors nil)
8989           (org-agenda-remove-tags t))
8990          ("theagenda.ps"))))
8991 @end lisp
8993 @noindent
8994 This command sets two options for the Postscript exporter, to make it
8995 print in two columns in landscape format---the resulting page can be cut
8996 in two and then used in a paper agenda.  The remaining settings modify
8997 the agenda prefix to omit category and scheduling information, and
8998 instead include a checkbox to check off items.  We also remove the tags
8999 to make the lines compact, and we don't want to use colors for the
9000 black-and-white printer.  Settings specified in
9001 @code{org-agenda-exporter-settings} will also apply, but the settings
9002 in @code{org-agenda-custom-commands} take precedence.
9004 @noindent
9005 From the command line you may also use
9006 @example
9007 emacs -eval (org-batch-store-agenda-views) -kill
9008 @end example
9009 @noindent
9010 or, if you need to modify some parameters@footnote{Quoting depends on the
9011 system you use, please check the FAQ for examples.}
9012 @example
9013 emacs -eval '(org-batch-store-agenda-views                      \
9014               org-agenda-span (quote month)                     \
9015               org-agenda-start-day "2007-11-01"                 \
9016               org-agenda-include-diary nil                      \
9017               org-agenda-files (quote ("~/org/project.org")))'  \
9018       -kill
9019 @end example
9020 @noindent
9021 which will create the agenda views restricted to the file
9022 @file{~/org/project.org}, without diary entries and with a 30-day
9023 extent.
9025 You can also extract agenda information in a way that allows further
9026 processing by other programs.  See @ref{Extracting agenda information}, for
9027 more information.
9030 @node Agenda column view,  , Exporting Agenda Views, Agenda Views
9031 @section Using column view in the agenda
9032 @cindex column view, in agenda
9033 @cindex agenda, column view
9035 Column view (@pxref{Column view}) is normally used to view and edit
9036 properties embedded in the hierarchical structure of an Org file.  It can be
9037 quite useful to use column view also from the agenda, where entries are
9038 collected by certain criteria.
9040 @table @kbd
9041 @orgcmd{C-c C-x C-c,org-agenda-columns}
9042 Turn on column view in the agenda.
9043 @end table
9045 To understand how to use this properly, it is important to realize that the
9046 entries in the agenda are no longer in their proper outline environment.
9047 This causes the following issues:
9049 @enumerate
9050 @item
9051 @vindex org-columns-default-format
9052 @vindex org-overriding-columns-format
9053 Org needs to make a decision which @code{COLUMNS} format to use.  Since the
9054 entries in the agenda are collected from different files, and different files
9055 may have different @code{COLUMNS} formats, this is a non-trivial problem.
9056 Org first checks if the variable @code{org-agenda-overriding-columns-format} is
9057 currently set, and if so, takes the format from there.  Otherwise it takes
9058 the format associated with the first item in the agenda, or, if that item
9059 does not have a specific format (defined in a property, or in its file), it
9060 uses @code{org-columns-default-format}.
9061 @item
9062 @cindex property, special, CLOCKSUM
9063 If any of the columns has a summary type defined (@pxref{Column attributes}),
9064 turning on column view in the agenda will visit all relevant agenda files and
9065 make sure that the computations of this property are up to date.  This is
9066 also true for the special @code{CLOCKSUM} property.  Org will then sum the
9067 values displayed in the agenda.  In the daily/weekly agenda, the sums will
9068 cover a single day; in all other views they cover the entire block.  It is
9069 vital to realize that the agenda may show the same entry @emph{twice} (for
9070 example as scheduled and as a deadline), and it may show two entries from the
9071 same hierarchy (for example a @emph{parent} and its @emph{child}).  In these
9072 cases, the summation in the agenda will lead to incorrect results because
9073 some values will count double.
9074 @item
9075 When the column view in the agenda shows the @code{CLOCKSUM}, that is always
9076 the entire clocked time for this item.  So even in the daily/weekly agenda,
9077 the clocksum listed in column view may originate from times outside the
9078 current view.  This has the advantage that you can compare these values with
9079 a column listing the planned total effort for a task---one of the major
9080 applications for column view in the agenda.  If you want information about
9081 clocked time in the displayed period use clock table mode (press @kbd{R} in
9082 the agenda).
9084 @item
9085 @cindex property, special, CLOCKSUM_T
9086 When the column view in the agenda shows the @code{CLOCKSUM_T}, that is
9087 always today's clocked time for this item.  So even in the weekly agenda,
9088 the clocksum listed in column view only originates from today.  This lets
9089 you compare the time you spent on a task for today, with the time already
9090 spent (via @code{CLOCKSUM}) and with the planned total effort for it.
9091 @end enumerate
9094 @node Markup, Exporting, Agenda Views, Top
9095 @chapter Markup for rich export
9097 When exporting Org mode documents, the exporter tries to reflect the
9098 structure of the document as accurately as possible in the backend.  Since
9099 export targets like HTML, @LaTeX{} allow much richer formatting, Org mode has
9100 rules on how to prepare text for rich export.  This section summarizes the
9101 markup rules used in an Org mode buffer.
9103 @menu
9104 * Structural markup elements::  The basic structure as seen by the exporter
9105 * Images and tables::           Tables and Images will be included
9106 * Literal examples::            Source code examples with special formatting
9107 * Include files::               Include additional files into a document
9108 * Index entries::               Making an index
9109 * Macro replacement::           Use macros to create complex output
9110 * Embedded @LaTeX{}::           LaTeX can be freely used inside Org documents
9111 @end menu
9113 @node Structural markup elements, Images and tables, Markup, Markup
9114 @section Structural markup elements
9116 @menu
9117 * Document title::              Where the title is taken from
9118 * Headings and sections::       The document structure as seen by the exporter
9119 * Table of contents::           The if and where of the table of contents
9120 * Lists::                       Lists
9121 * Paragraphs::                  Paragraphs
9122 * Footnote markup::             Footnotes
9123 * Emphasis and monospace::      Bold, italic, etc.
9124 * Horizontal rules::            Make a line
9125 * Comment lines::               What will *not* be exported
9126 @end menu
9128 @node Document title, Headings and sections, Structural markup elements, Structural markup elements
9129 @subheading Document title
9130 @cindex document title, markup rules
9132 @noindent
9133 The title of the exported document is taken from the special line
9135 @cindex #+TITLE
9136 @example
9137 #+TITLE: This is the title of the document
9138 @end example
9140 @noindent
9141 If this line does not exist, the title will be the name of the file
9142 associated to buffer, without extension, or the buffer name.
9144 @cindex property, EXPORT_TITLE
9145 If you are exporting only a subtree by marking is as the region, the heading
9146 of the subtree will become the title of the document.  If the subtree has a
9147 property @code{EXPORT_TITLE}, that will take precedence.
9149 @node Headings and sections, Table of contents, Document title, Structural markup elements
9150 @subheading Headings and sections
9151 @cindex headings and sections, markup rules
9153 @vindex org-export-headline-levels
9154 The outline structure of the document as described in @ref{Document
9155 Structure}, forms the basis for defining sections of the exported document.
9156 However, since the outline structure is also used for (for example) lists of
9157 tasks, only the first three outline levels will be used as headings.  Deeper
9158 levels will become itemized lists.  You can change the location of this
9159 switch globally by setting the variable @code{org-export-headline-levels}, or on a
9160 per-file basis with a line
9162 @cindex #+OPTIONS
9163 @example
9164 #+OPTIONS: H:4
9165 @end example
9167 @node Table of contents, Lists, Headings and sections, Structural markup elements
9168 @subheading Table of contents
9169 @cindex table of contents, markup rules
9171 @cindex #+TOC
9172 @vindex org-export-with-toc
9173 The table of contents is normally inserted directly before the first headline
9174 of the file.  If you would like to get it to a different location, insert
9175 @code{#+TOC: headlines} at the desired location.  The depth of the table of
9176 contents is by default the same as the number of headline levels, but you can
9177 choose a smaller number, or turn off the table of contents entirely, by
9178 configuring the variable @code{org-export-with-toc}, or on a per-file basis
9179 with a line like
9181 @example
9182 #+OPTIONS: toc:2          (only to two levels in TOC)
9183 #+TOC: headlines 2        (the same, at a specific location)
9184 #+OPTIONS: toc:nil        (no TOC at all)
9185 @end example
9187 The same @code{TOC} keyword can also generate a list of all tables
9188 (resp. a listings) with a caption in the buffer.
9190 @example
9191 #+TOC: listings           (build a list of listings)
9192 #+TOC: tables             (build a list of tables)
9193 @end example
9195 @cindex property, ALT_TITLE
9196 The headline's title usually determines its corresponding entry in a table of
9197 contents.  However, it is possible to specifify an alternative title by
9198 setting @code{ALT_TITLE} property accordingly.  It will then be used when
9199 building the table.
9201 @node Lists, Paragraphs, Table of contents, Structural markup elements
9202 @subheading Lists
9203 @cindex lists, markup rules
9205 Plain lists as described in @ref{Plain lists}, are translated to the backend's
9206 syntax for such lists.  Most backends support unordered, ordered, and
9207 description lists.
9209 @node Paragraphs, Footnote markup, Lists, Structural markup elements
9210 @subheading Paragraphs, line breaks, and quoting
9211 @cindex paragraphs, markup rules
9213 Paragraphs are separated by at least one empty line.  If you need to enforce
9214 a line break within a paragraph, use @samp{\\} at the end of a line.
9216 To keep the line breaks in a region, but otherwise use normal formatting, you
9217 can use this construct, which can also be used to format poetry.
9219 @cindex #+BEGIN_VERSE
9220 @example
9221 #+BEGIN_VERSE
9222  Great clouds overhead
9223  Tiny black birds rise and fall
9224  Snow covers Emacs
9226      -- AlexSchroeder
9227 #+END_VERSE
9228 @end example
9230 When quoting a passage from another document, it is customary to format this
9231 as a paragraph that is indented on both the left and the right margin.  You
9232 can include quotations in Org mode documents like this:
9234 @cindex #+BEGIN_QUOTE
9235 @example
9236 #+BEGIN_QUOTE
9237 Everything should be made as simple as possible,
9238 but not any simpler -- Albert Einstein
9239 #+END_QUOTE
9240 @end example
9242 If you would like to center some text, do it like this:
9243 @cindex #+BEGIN_CENTER
9244 @example
9245 #+BEGIN_CENTER
9246 Everything should be made as simple as possible, \\
9247 but not any simpler
9248 #+END_CENTER
9249 @end example
9252 @node Footnote markup, Emphasis and monospace, Paragraphs, Structural markup elements
9253 @subheading Footnote markup
9254 @cindex footnotes, markup rules
9255 @cindex @file{footnote.el}
9257 Footnotes defined in the way described in @ref{Footnotes}, will be exported
9258 by all backends.  Org allows multiple references to the same note, and
9259 multiple footnotes side by side.
9261 @node Emphasis and monospace, Horizontal rules, Footnote markup, Structural markup elements
9262 @subheading Emphasis and monospace
9264 @cindex underlined text, markup rules
9265 @cindex bold text, markup rules
9266 @cindex italic text, markup rules
9267 @cindex verbatim text, markup rules
9268 @cindex code text, markup rules
9269 @cindex strike-through text, markup rules
9270 @vindex org-fontify-emphasized-text
9271 @vindex org-emphasis-regexp-components
9272 You can make words @b{*bold*}, @i{/italic/}, _underlined_, @code{=code=}
9273 and @code{~verbatim~}, and, if you must, @samp{+strike-through+}.  Text
9274 in the code and verbatim string is not processed for Org mode specific
9275 syntax; it is exported verbatim.
9277 To turn off fontification for marked up text, you can set
9278 @code{org-fontify-emphasized-text} to @code{nil}.  To fine tune what
9279 characters are allowed before and after the special characters, see
9280 @code{org-emphasis-regexp-components}.
9282 @node Horizontal rules, Comment lines, Emphasis and monospace, Structural markup elements
9283 @subheading  Horizontal rules
9284 @cindex horizontal rules, markup rules
9285 A line consisting of only dashes, and at least 5 of them, will be exported as
9286 a horizontal line (@samp{<hr/>} in HTML and @code{\hrule} in @LaTeX{}).
9288 @node Comment lines,  , Horizontal rules, Structural markup elements
9289 @subheading Comment lines
9290 @cindex comment lines
9291 @cindex exporting, not
9292 @cindex #+BEGIN_COMMENT
9294 Lines starting with zero or more whitespace characters followed by one
9295 @samp{#} and a whitespace are treated as comments and will never be exported.
9296 Also entire subtrees starting with the word @samp{COMMENT} will never be
9297 exported.  Finally, regions surrounded by @samp{#+BEGIN_COMMENT}
9298 ... @samp{#+END_COMMENT} will not be exported.
9300 @table @kbd
9301 @kindex C-c ;
9302 @item C-c ;
9303 Toggle the COMMENT keyword at the beginning of an entry.
9304 @end table
9307 @node Images and tables, Literal examples, Structural markup elements, Markup
9308 @section Images and Tables
9310 @cindex tables, markup rules
9311 @cindex #+CAPTION
9312 @cindex #+LABEL
9313 Both the native Org mode tables (@pxref{Tables}) and tables formatted with
9314 the @file{table.el} package will be exported properly.  For Org mode tables,
9315 the lines before the first horizontal separator line will become table header
9316 lines.  You can use the following lines somewhere before the table to assign
9317 a caption and a label for cross references, and in the text you can refer to
9318 the object with @code{\ref@{tab:basic-data@}}:
9320 @example
9321 #+CAPTION: This is the caption for the next table (or link)
9322 #+LABEL:   tab:basic-data
9323    | ... | ...|
9324    |-----|----|
9325 @end example
9327 Optionally, the caption can take the form:
9328 @example
9329 #+CAPTION: [Caption for list of figures]@{Caption for table (or link).@}
9330 @end example
9332 @cindex inlined images, markup rules
9333 Some backends (HTML and @LaTeX{}) allow you to directly include images into
9334 the exported document.  Org does this, if a link to an image files does not
9335 have a description part, for example @code{[[./img/a.jpg]]}.  If you wish to
9336 define a caption for the image and maybe a label for internal cross
9337 references, make sure that the link is on a line by itself and precede it
9338 with @code{#+CAPTION} and @code{#+LABEL} as follows:
9340 @example
9341 #+CAPTION: This is the caption for the next figure link (or table)
9342 #+LABEL:   fig:SED-HR4049
9343 [[./img/a.jpg]]
9344 @end example
9346 You may also define additional attributes for the figure.  As this is
9347 backend-specific, see the sections about the individual backends for more
9348 information.
9350 @xref{Handling links,the discussion of image links}.
9352 @node Literal examples, Include files, Images and tables, Markup
9353 @section Literal examples
9354 @cindex literal examples, markup rules
9355 @cindex code line references, markup rules
9357 You can include literal examples that should not be subjected to
9358 markup.  Such examples will be typeset in monospace, so this is well suited
9359 for source code and similar examples.
9360 @cindex #+BEGIN_EXAMPLE
9362 @example
9363 #+BEGIN_EXAMPLE
9364 Some example from a text file.
9365 #+END_EXAMPLE
9366 @end example
9368 Note that such blocks may be @i{indented} in order to align nicely with
9369 indented text and in particular with plain list structure (@pxref{Plain
9370 lists}).  For simplicity when using small examples, you can also start the
9371 example lines with a colon followed by a space.  There may also be additional
9372 whitespace before the colon:
9374 @example
9375 Here is an example
9376    : Some example from a text file.
9377 @end example
9379 @cindex formatting source code, markup rules
9380 If the example is source code from a programming language, or any other text
9381 that can be marked up by font-lock in Emacs, you can ask for the example to
9382 look like the fontified Emacs buffer@footnote{This works automatically for
9383 the HTML backend (it requires version 1.34 of the @file{htmlize.el} package,
9384 which is distributed with Org).  Fontified code chunks in @LaTeX{} can be
9385 achieved using either the listings or the
9386 @url{http://code.google.com/p/minted, minted,} package.  Refer to
9387 @code{org-latex-listings} documentation for details.}.  This is done
9388 with the @samp{src} block, where you also need to specify the name of the
9389 major mode that should be used to fontify the example@footnote{Code in
9390 @samp{src} blocks may also be evaluated either interactively or on export.
9391 See @pxref{Working With Source Code} for more information on evaluating code
9392 blocks.}, see @ref{Easy Templates} for shortcuts to easily insert code
9393 blocks.
9394 @cindex #+BEGIN_SRC
9396 @example
9397 #+BEGIN_SRC emacs-lisp
9398   (defun org-xor (a b)
9399      "Exclusive or."
9400      (if a (not b) b))
9401 #+END_SRC
9402 @end example
9404 Both in @code{example} and in @code{src} snippets, you can add a @code{-n}
9405 switch to the end of the @code{BEGIN} line, to get the lines of the example
9406 numbered.  If you use a @code{+n} switch, the numbering from the previous
9407 numbered snippet will be continued in the current one.  In literal examples,
9408 Org will interpret strings like @samp{(ref:name)} as labels, and use them as
9409 targets for special hyperlinks like @code{[[(name)]]} (i.e., the reference name
9410 enclosed in single parenthesis).  In HTML, hovering the mouse over such a
9411 link will remote-highlight the corresponding code line, which is kind of
9412 cool.
9414 You can also add a @code{-r} switch which @i{removes} the labels from the
9415 source code@footnote{Adding @code{-k} to @code{-n -r} will @i{keep} the
9416 labels in the source code while using line numbers for the links, which might
9417 be useful to explain those in an Org mode example code.}.  With the @code{-n}
9418 switch, links to these references will be labeled by the line numbers from
9419 the code listing, otherwise links will use the labels with no parentheses.
9420 Here is an example:
9422 @example
9423 #+BEGIN_SRC emacs-lisp -n -r
9424 (save-excursion                  (ref:sc)
9425    (goto-char (point-min))       (ref:jump)
9426 #+END_SRC
9427 In line [[(sc)]] we remember the current position.  [[(jump)][Line (jump)]]
9428 jumps to point-min.
9429 @end example
9431 @vindex org-coderef-label-format
9432 If the syntax for the label format conflicts with the language syntax, use a
9433 @code{-l} switch to change the format, for example @samp{#+BEGIN_SRC pascal
9434 -n -r -l "((%s))"}.  See also the variable @code{org-coderef-label-format}.
9436 HTML export also allows examples to be published as text areas (@pxref{Text
9437 areas in HTML export}).
9439 Because the @code{#+BEGIN_...} and @code{#+END_...} patterns need to be added
9440 so often, shortcuts are provided using the Easy Templates facility
9441 (@pxref{Easy Templates}).
9443 @table @kbd
9444 @kindex C-c '
9445 @item C-c '
9446 Edit the source code example at point in its native mode.  This works by
9447 switching to a temporary buffer with the source code.  You need to exit by
9448 pressing @kbd{C-c '} again@footnote{Upon exit, lines starting with @samp{*},
9449 @samp{,*}, @samp{#+} and @samp{,#+} will get a comma prepended, to keep them
9450 from being interpreted by Org as outline nodes or special syntax.  These
9451 commas will be stripped for editing with @kbd{C-c '}, and also for export.}.
9452 The edited version will then replace the old version in the Org buffer.
9453 Fixed-width regions (where each line starts with a colon followed by a space)
9454 will be edited using @code{artist-mode}@footnote{You may select
9455 a different-mode with the variable @code{org-edit-fixed-width-region-mode}.}
9456 to allow creating ASCII drawings easily.  Using this command in an empty line
9457 will create a new fixed-width region.
9458 @kindex C-c l
9459 @item C-c l
9460 Calling @code{org-store-link} while editing a source code example in a
9461 temporary buffer created with @kbd{C-c '} will prompt for a label.  Make sure
9462 that it is unique in the current buffer, and insert it with the proper
9463 formatting like @samp{(ref:label)} at the end of the current line.  Then the
9464 label is stored as a link @samp{(label)}, for retrieval with @kbd{C-c C-l}.
9465 @end table
9468 @node Include files, Index entries, Literal examples, Markup
9469 @section Include files
9470 @cindex include files, markup rules
9472 During export, you can include the content of another file.  For example, to
9473 include your @file{.emacs} file, you could use:
9474 @cindex #+INCLUDE
9476 @example
9477 #+INCLUDE: "~/.emacs" src emacs-lisp
9478 @end example
9480 @noindent
9481 The optional second and third parameter are the markup (e.g., @samp{quote},
9482 @samp{example}, or @samp{src}), and, if the markup is @samp{src}, the
9483 language for formatting the contents.  The markup is optional; if it is not
9484 given, the text will be assumed to be in Org mode format and will be
9485 processed normally.  The include line will also allow additional keyword
9486 parameters @code{:prefix1} and @code{:prefix} to specify prefixes for the
9487 first line and for each following line, @code{:minlevel} in order to get
9488 Org mode content demoted to a specified level, as well as any options
9489 accepted by the selected markup.  For example, to include a file as an item,
9492 @example
9493 #+INCLUDE: "~/snippets/xx" :prefix1 "   + " :prefix "     "
9494 @end example
9496 You can also include a portion of a file by specifying a lines range using
9497 the @code{:lines} parameter.  The line at the upper end of the range will not
9498 be included.  The start and/or the end of the range may be omitted to use the
9499 obvious defaults.
9501 @example
9502 #+INCLUDE: "~/.emacs" :lines "5-10"   @r{Include lines 5 to 10, 10 excluded}
9503 #+INCLUDE: "~/.emacs" :lines "-10"    @r{Include lines 1 to 10, 10 excluded}
9504 #+INCLUDE: "~/.emacs" :lines "10-"    @r{Include lines from 10 to EOF}
9505 @end example
9507 @table @kbd
9508 @kindex C-c '
9509 @item C-c '
9510 Visit the include file at point.
9511 @end table
9513 @node Index entries, Macro replacement, Include files, Markup
9514 @section Index entries
9515 @cindex index entries, for publishing
9517 You can specify entries that will be used for generating an index during
9518 publishing.  This is done by lines starting with @code{#+INDEX}.  An entry
9519 the contains an exclamation mark will create a sub item.  See @ref{Generating
9520 an index} for more information.
9522 @example
9523 * Curriculum Vitae
9524 #+INDEX: CV
9525 #+INDEX: Application!CV
9526 @end example
9531 @node Macro replacement, Embedded @LaTeX{}, Index entries, Markup
9532 @section Macro replacement
9533 @cindex macro replacement, during export
9534 @cindex #+MACRO
9536 You can define text snippets with
9538 @example
9539 #+MACRO: name   replacement text $1, $2 are arguments
9540 @end example
9542 @noindent which can be referenced anywhere in the document (even in
9543 code examples) with @code{@{@{@{name(arg1,arg2)@}@}@}}.  In addition to
9544 defined macros, @code{@{@{@{title@}@}@}}, @code{@{@{@{author@}@}@}}, etc.,
9545 will reference information set by the @code{#+TITLE:}, @code{#+AUTHOR:}, and
9546 similar lines.  Also, @code{@{@{@{date(@var{FORMAT})@}@}@}} and
9547 @code{@{@{@{modification-time(@var{FORMAT})@}@}@}} refer to current date time
9548 and to the modification time of the file being exported, respectively.
9549 @var{FORMAT} should be a format string understood by
9550 @code{format-time-string}.
9552 Macro expansion takes place during export, and some people use it to
9553 construct complex HTML code.
9556 @node Embedded @LaTeX{},  , Macro replacement, Markup
9557 @section Embedded @LaTeX{}
9558 @cindex @TeX{} interpretation
9559 @cindex @LaTeX{} interpretation
9561 Plain ASCII is normally sufficient for almost all note taking.  Exceptions
9562 include scientific notes, which often require mathematical symbols and the
9563 occasional formula.  @LaTeX{}@footnote{@LaTeX{} is a macro system based on
9564 Donald E. Knuth's @TeX{} system.  Many of the features described here as
9565 ``@LaTeX{}'' are really from @TeX{}, but for simplicity I am blurring this
9566 distinction.}  is widely used to typeset scientific documents.  Org mode
9567 supports embedding @LaTeX{} code into its files, because many academics are
9568 used to writing and reading @LaTeX{} source code, and because it can be
9569 readily processed to produce pretty output for a number of export backends.
9571 @menu
9572 * Special symbols::             Greek letters and other symbols
9573 * Subscripts and superscripts::  Simple syntax for raising/lowering text
9574 * @LaTeX{} fragments::          Complex formulas made easy
9575 * Previewing @LaTeX{} fragments::  What will this snippet look like?
9576 * CDLaTeX mode::                Speed up entering of formulas
9577 @end menu
9579 @node Special symbols, Subscripts and superscripts, Embedded @LaTeX{}, Embedded @LaTeX{}
9580 @subsection Special symbols
9581 @cindex math symbols
9582 @cindex special symbols
9583 @cindex @TeX{} macros
9584 @cindex @LaTeX{} fragments, markup rules
9585 @cindex HTML entities
9586 @cindex @LaTeX{} entities
9588 You can use @LaTeX{} macros to insert special symbols like @samp{\alpha} to
9589 indicate the Greek letter, or @samp{\to} to indicate an arrow.  Completion
9590 for these macros is available, just type @samp{\} and maybe a few letters,
9591 and press @kbd{M-@key{TAB}} to see possible completions.  Unlike @LaTeX{}
9592 code, Org mode allows these macros to be present without surrounding math
9593 delimiters, for example:
9595 @example
9596 Angles are written as Greek letters \alpha, \beta and \gamma.
9597 @end example
9599 @vindex org-entities
9600 During export, these symbols will be transformed into the native format of
9601 the exporter backend.  Strings like @code{\alpha} will be exported as
9602 @code{&alpha;} in the HTML output, and as @code{$\alpha$} in the @LaTeX{}
9603 output.  Similarly, @code{\nbsp} will become @code{&nbsp;} in HTML and
9604 @code{~} in @LaTeX{}.  If you need such a symbol inside a word, terminate it
9605 like this: @samp{\Aacute@{@}stor}.
9607 A large number of entities is provided, with names taken from both HTML and
9608 @LaTeX{}; see the variable @code{org-entities} for the complete list.
9609 @samp{\-} is treated as a shy hyphen, and @samp{--}, @samp{---}, and
9610 @samp{...} are all converted into special commands creating hyphens of
9611 different lengths or a compact set of dots.
9613 If you would like to see entities displayed as UTF8 characters, use the
9614 following command@footnote{You can turn this on by default by setting the
9615 variable @code{org-pretty-entities}, or on a per-file base with the
9616 @code{#+STARTUP} option @code{entitiespretty}.}:
9618 @table @kbd
9619 @kindex C-c C-x \
9620 @item C-c C-x \
9621 Toggle display of entities as UTF-8 characters.  This does not change the
9622 buffer content which remains plain ASCII, but it overlays the UTF-8 character
9623 for display purposes only.
9624 @end table
9626 @node Subscripts and superscripts, @LaTeX{} fragments, Special symbols, Embedded @LaTeX{}
9627 @subsection Subscripts and superscripts
9628 @cindex subscript
9629 @cindex superscript
9631 Just like in @LaTeX{}, @samp{^} and @samp{_} are used to indicate super-
9632 and subscripts.  Again, these can be used without embedding them in
9633 math-mode delimiters.  To increase the readability of ASCII text, it is
9634 not necessary (but OK) to surround multi-character sub- and superscripts
9635 with curly braces.  For example
9637 @example
9638 The mass of the sun is M_sun = 1.989 x 10^30 kg.  The radius of
9639 the sun is R_@{sun@} = 6.96 x 10^8 m.
9640 @end example
9642 @vindex org-export-with-sub-superscripts
9643 To avoid interpretation as raised or lowered text, you can quote @samp{^} and
9644 @samp{_} with a backslash: @samp{\^} and @samp{\_}.  If you write a text
9645 where the underscore is often used in a different context, Org's convention
9646 to always interpret these as subscripts can get in your way.  Configure the
9647 variable @code{org-export-with-sub-superscripts} to globally change this
9648 convention, or use, on a per-file basis:
9650 @example
9651 #+OPTIONS: ^:@{@}
9652 @end example
9654 @noindent With this setting, @samp{a_b} will not be interpreted as a
9655 subscript, but @samp{a_@{b@}} will.
9657 @table @kbd
9658 @kindex C-c C-x \
9659 @item C-c C-x \
9660 In addition to showing entities as UTF-8 characters, this command will also
9661 format sub- and superscripts in a WYSIWYM way.
9662 @end table
9664 @node @LaTeX{} fragments, Previewing @LaTeX{} fragments, Subscripts and superscripts, Embedded @LaTeX{}
9665 @subsection @LaTeX{} fragments
9666 @cindex @LaTeX{} fragments
9668 @vindex org-format-latex-header
9669 Going beyond symbols and sub- and superscripts, a full formula language is
9670 needed.  Org mode can contain @LaTeX{} math fragments, and it supports ways
9671 to process these for several export backends.  When exporting to @LaTeX{},
9672 the code is obviously left as it is.  When exporting to HTML, Org invokes the
9673 @uref{http://www.mathjax.org, MathJax library} (@pxref{Math formatting in
9674 HTML export}) to process and display the math@footnote{If you plan to use
9675 this regularly or on pages with significant page views, you should install
9676 @file{MathJax} on your own
9677 server in order to limit the load of our server.}.  Finally, it can also
9678 process the mathematical expressions into images@footnote{For this to work
9679 you need to be on a system with a working @LaTeX{} installation.  You also
9680 need the @file{dvipng} program or the @file{convert}, respectively available
9681 at @url{http://sourceforge.net/projects/dvipng/} and from the
9682 @file{imagemagick} suite.  The @LaTeX{} header that will be used when
9683 processing a fragment can be configured with the variable
9684 @code{org-format-latex-header}.} that can be displayed in a browser.
9686 @LaTeX{} fragments don't need any special marking at all.  The following
9687 snippets will be identified as @LaTeX{} source code:
9688 @itemize @bullet
9689 @item
9690 Environments of any kind@footnote{When @file{MathJax} is used, only the
9691 environment recognized by @file{MathJax} will be processed.  When
9692 @file{dvipng} is used to create images, any @LaTeX{} environments will be
9693 handled.}.  The only requirement is that the @code{\begin} and @code{\end}
9694 statements appear on a new line, at the beginning of the line or after
9695 whitespaces only.
9696 @item
9697 Text within the usual @LaTeX{} math delimiters.  To avoid conflicts with
9698 currency specifications, single @samp{$} characters are only recognized as
9699 math delimiters if the enclosed text contains at most two line breaks, is
9700 directly attached to the @samp{$} characters with no whitespace in between,
9701 and if the closing @samp{$} is followed by whitespace, punctuation or a dash.
9702 For the other delimiters, there is no such restriction, so when in doubt, use
9703 @samp{\(...\)} as inline math delimiters.
9704 @end itemize
9706 @noindent For example:
9708 @example
9709 \begin@{equation@}                          % arbitrary environments,
9710 x=\sqrt@{b@}                                % even tables, figures
9711 \end@{equation@}                            % etc
9713 If $a^2=b$ and \( b=2 \), then the solution must be
9714 either $$ a=+\sqrt@{2@} $$ or \[ a=-\sqrt@{2@} \].
9715 @end example
9717 @noindent
9718 @vindex org-format-latex-options
9719 If you need any of the delimiter ASCII sequences for other purposes, you
9720 can configure the option @code{org-format-latex-options} to deselect the
9721 ones you do not wish to have interpreted by the @LaTeX{} converter.
9723 @vindex org-export-with-LaTeX-fragments
9724 @LaTeX{} processing can be configured with the variable
9725 @code{org-export-with-LaTeX-fragments}.  The default setting is @code{t}
9726 which means @file{MathJax} for HTML, and no processing for ASCII and @LaTeX{}
9727 backends.  You can also set this variable on a per-file basis using one of
9728 these lines:
9730 @example
9731 #+OPTIONS: LaTeX:t          @r{Do the right thing automatically (MathJax)}
9732 #+OPTIONS: LaTeX:dvipng     @r{Force using dvipng images}
9733 #+OPTIONS: LaTeX:nil        @r{Do not process @LaTeX{} fragments at all}
9734 #+OPTIONS: LaTeX:verbatim   @r{Verbatim export, for jsMath or so}
9735 @end example
9737 @node Previewing @LaTeX{} fragments, CDLaTeX mode, @LaTeX{} fragments, Embedded @LaTeX{}
9738 @subsection Previewing @LaTeX{} fragments
9739 @cindex @LaTeX{} fragments, preview
9741 If you have @file{dvipng} installed, @LaTeX{} fragments can be processed to
9742 produce preview images of the typeset expressions:
9744 @table @kbd
9745 @kindex C-c C-x C-l
9746 @item C-c C-x C-l
9747 Produce a preview image of the @LaTeX{} fragment at point and overlay it
9748 over the source code.  If there is no fragment at point, process all
9749 fragments in the current entry (between two headlines).  When called
9750 with a prefix argument, process the entire subtree.  When called with
9751 two prefix arguments, or when the cursor is before the first headline,
9752 process the entire buffer.
9753 @kindex C-c C-c
9754 @item C-c C-c
9755 Remove the overlay preview images.
9756 @end table
9758 @vindex org-format-latex-options
9759 You can customize the variable @code{org-format-latex-options} to influence
9760 some aspects of the preview.  In particular, the @code{:scale} (and for HTML
9761 export, @code{:html-scale}) property can be used to adjust the size of the
9762 preview images.
9764 @vindex org-startup-with-latex-preview
9765 You can turn on the previewing of all @LaTeX{} fragments in a file with
9767 @example
9768 #+STARTUP: latexpreview
9769 @end example
9771 To disable it, simply use
9773 @example
9774 #+STARTUP: nolatexpreview
9775 @end example
9777 @node CDLaTeX mode,  , Previewing @LaTeX{} fragments, Embedded @LaTeX{}
9778 @subsection Using CD@LaTeX{} to enter math
9779 @cindex CD@LaTeX{}
9781 CD@LaTeX{} mode is a minor mode that is normally used in combination with a
9782 major @LaTeX{} mode like AUC@TeX{} in order to speed-up insertion of
9783 environments and math templates.  Inside Org mode, you can make use of
9784 some of the features of CD@LaTeX{} mode.  You need to install
9785 @file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
9786 AUC@TeX{}) from @url{http://www.astro.uva.nl/~dominik/Tools/cdlatex}.
9787 Don't use CD@LaTeX{} mode itself under Org mode, but use the light
9788 version @code{org-cdlatex-mode} that comes as part of Org mode.  Turn it
9789 on for the current buffer with @code{M-x org-cdlatex-mode}, or for all
9790 Org files with
9792 @lisp
9793 (add-hook 'org-mode-hook 'turn-on-org-cdlatex)
9794 @end lisp
9796 When this mode is enabled, the following features are present (for more
9797 details see the documentation of CD@LaTeX{} mode):
9798 @itemize @bullet
9799 @kindex C-c @{
9800 @item
9801 Environment templates can be inserted with @kbd{C-c @{}.
9802 @item
9803 @kindex @key{TAB}
9804 The @key{TAB} key will do template expansion if the cursor is inside a
9805 @LaTeX{} fragment@footnote{Org mode has a method to test if the cursor is
9806 inside such a fragment, see the documentation of the function
9807 @code{org-inside-LaTeX-fragment-p}.}.  For example, @key{TAB} will
9808 expand @code{fr} to @code{\frac@{@}@{@}} and position the cursor
9809 correctly inside the first brace.  Another @key{TAB} will get you into
9810 the second brace.  Even outside fragments, @key{TAB} will expand
9811 environment abbreviations at the beginning of a line.  For example, if
9812 you write @samp{equ} at the beginning of a line and press @key{TAB},
9813 this abbreviation will be expanded to an @code{equation} environment.
9814 To get a list of all abbreviations, type @kbd{M-x cdlatex-command-help}.
9815 @item
9816 @kindex _
9817 @kindex ^
9818 @vindex cdlatex-simplify-sub-super-scripts
9819 Pressing @kbd{_} and @kbd{^} inside a @LaTeX{} fragment will insert these
9820 characters together with a pair of braces.  If you use @key{TAB} to move
9821 out of the braces, and if the braces surround only a single character or
9822 macro, they are removed again (depending on the variable
9823 @code{cdlatex-simplify-sub-super-scripts}).
9824 @item
9825 @kindex `
9826 Pressing the backquote @kbd{`} followed by a character inserts math
9827 macros, also outside @LaTeX{} fragments.  If you wait more than 1.5 seconds
9828 after the backquote, a help window will pop up.
9829 @item
9830 @kindex '
9831 Pressing the single-quote @kbd{'} followed by another character modifies
9832 the symbol before point with an accent or a font.  If you wait more than
9833 1.5 seconds after the single-quote, a help window will pop up.  Character
9834 modification will work only inside @LaTeX{} fragments; outside the quote
9835 is normal.
9836 @end itemize
9838 @node Exporting, Publishing, Markup, Top
9839 @chapter Exporting
9840 @cindex exporting
9842 Org mode documents can be exported into a variety of other formats.  For
9843 printing and sharing notes, ASCII export produces a readable and simple
9844 version of an Org file.  HTML export allows you to publish a notes file on
9845 the web.  @LaTeX{} export lets you use Org mode and its structured editing
9846 functions to easily create @LaTeX{} files.  OpenDocument Text (ODT) export
9847 allows seamless collaboration across organizational boundaries.  To
9848 incorporate entries with associated times like deadlines or appointments into
9849 a desktop calendar program like iCal, Org mode can also produce extracts in
9850 the iCalendar format.  Currently, Org mode only supports export, not import
9851 of these different formats.
9853 Org supports export of selected regions when @code{transient-mark-mode} is
9854 enabled (default in Emacs 23).
9856 @menu
9857 * Selective export::            Using tags to select and exclude trees
9858 * Export options::              Per-file export settings
9859 * The export dispatcher::       How to access exporter commands
9860 * ASCII/Latin-1/UTF-8 export::  Exporting to flat files with encoding
9861 * HTML export::                 Exporting to HTML
9862 * @LaTeX{} and PDF export::     Exporting to @LaTeX{}, and processing to PDF
9863 * OpenDocument Text export::    Exporting to OpenDocument Text
9864 * iCalendar export::            Exporting in iCalendar format
9865 @end menu
9867 @node Selective export, Export options, Exporting, Exporting
9868 @section Selective export
9869 @cindex export, selective by tags or TODO keyword
9871 @vindex org-export-select-tags
9872 @vindex org-export-exclude-tags
9873 @cindex org-export-with-tasks
9874 You may use tags to select the parts of a document that should be exported,
9875 or to exclude parts from export.  This behavior is governed by two variables:
9876 @code{org-export-select-tags} and @code{org-export-exclude-tags},
9877 respectively defaulting to @code{'(:export:)} and @code{'(:noexport:)}.
9879 @enumerate
9880 @item
9881 Org first checks if any of the @emph{select} tags is present in the
9882 buffer.  If yes, all trees that do not carry one of these tags will be
9883 excluded.  If a selected tree is a subtree, the heading hierarchy above it
9884 will also be selected for export, but not the text below those headings.
9886 @item
9887 If none of the select tags is found, the whole buffer will be selected for
9888 export.
9890 @item
9891 Finally, all subtrees that are marked by any of the @emph{exclude} tags will
9892 be removed from the export buffer.
9893 @end enumerate
9895 The variable @code{org-export-with-tasks} can be configured to select which
9896 kind of tasks should be included for export.  See the docstring of the
9897 variable for more information.
9899 @node Export options, The export dispatcher, Selective export, Exporting
9900 @section Export options
9901 @cindex options, for export
9903 @cindex completion, of option keywords
9904 The exporter recognizes special lines in the buffer which provide
9905 additional information.  These lines may be put anywhere in the file.
9906 The whole set of lines can be inserted into the buffer with @kbd{C-c
9907 C-e t}.  For individual lines, a good way to make sure the keyword is
9908 correct is to type @samp{#+} and then use @kbd{M-@key{TAB}} completion
9909 (@pxref{Completion}).   For a summary of other in-buffer settings not
9910 specifically related to export, see @ref{In-buffer settings}.
9911 In particular, note that you can place commonly-used (export) options in
9912 a separate file which can be included using @code{#+SETUPFILE}.
9914 @table @kbd
9915 @orgcmd{C-c C-e t,org-insert-export-options-template}
9916 Insert template with export options, see example below.
9917 @end table
9919 @cindex #+TITLE
9920 @cindex #+AUTHOR
9921 @cindex #+DATE
9922 @cindex #+EMAIL
9923 @cindex #+DESCRIPTION
9924 @cindex #+KEYWORDS
9925 @cindex #+LANGUAGE
9926 @cindex #+TEXT
9927 @cindex #+OPTIONS
9928 @cindex #+BIND
9929 @cindex #+HTML_LINK_UP
9930 @cindex #+HTML_LINK_HOME
9931 @cindex #+SELECT_TAGS
9932 @cindex #+EXCLUDE_TAGS
9933 @cindex #+LaTeX_HEADER
9934 @vindex user-full-name
9935 @vindex user-mail-address
9936 @vindex org-export-default-language
9937 @vindex org-export-date-timestamp-format
9938 @example
9939 #+TITLE:       the title to be shown (default is the buffer name)
9940 #+AUTHOR:      the author (default taken from @code{user-full-name})
9941 #+DATE:        a date, an Org timestamp@footnote{@code{org-export-date-timestamp-format} defines how this timestamp will be exported.}, or a format string for @code{format-time-string}
9942 #+EMAIL:       his/her email address (default from @code{user-mail-address})
9943 #+DESCRIPTION: the page description, e.g., for the XHTML meta tag
9944 #+KEYWORDS:    the page keywords, e.g., for the XHTML meta tag
9945 #+LANGUAGE:    language for HTML, e.g., @samp{en} (@code{org-export-default-language})
9946 #+TEXT:        Some descriptive text to be inserted at the beginning.
9947 #+TEXT:        Several lines may be given.
9948 #+OPTIONS:     H:2 num:t toc:t \n:nil @@:t ::t |:t ^:t f:t TeX:t ...
9949 #+BIND:        lisp-var lisp-val, e.g., @code{org-latex-image-default-option width=.7\\linewidth}
9950                @r{You need to confirm using these, or configure @code{org-export-allow-BIND}}
9951 #+HTML_LINK_UP:     the ``up'' link of an exported page
9952 #+HTML_LINK_HOME:   the ``home'' link of an exported page
9953 #+LaTeX_HEADER: extra line(s) for the @LaTeX{} header, like \usepackage@{xyz@}
9954 #+SELECT_TAGS:   Tags that select a tree for export
9955 #+EXCLUDE_TAGS:  Tags that exclude a tree from export
9956 @end example
9958 @noindent
9959 The @code{#+OPTIONS} line is a compact@footnote{If you want to configure many options
9960 this way, you can use several @code{#+OPTIONS} lines.} form to specify export
9961 settings.  Here you can:
9962 @cindex headline levels
9963 @cindex section-numbers
9964 @cindex table of contents
9965 @cindex line-break preservation
9966 @cindex quoted HTML tags
9967 @cindex fixed-width sections
9968 @cindex tables
9969 @cindex @TeX{}-like syntax for sub- and superscripts
9970 @cindex footnotes
9971 @cindex special strings
9972 @cindex emphasized text
9973 @cindex @TeX{} macros
9974 @cindex @LaTeX{} fragments
9975 @cindex author info, in export
9976 @cindex time info, in export
9977 @vindex org-export-plist-vars
9978 @vindex org-export-author-info
9979 @vindex org-export-creator-info
9980 @vindex org-export-email-info
9981 @vindex org-export-time-stamp-file
9982 @example
9983 H:         @r{set the number of headline levels for export}
9984 num:       @r{turn on/off section-numbers}
9985 toc:       @r{turn on/off table of contents, or set level limit (integer)}
9986 \n:        @r{turn on/off line-break-preservation (DOES NOT WORK)}
9987 @@:         @r{turn on/off quoted HTML tags}
9988 ::         @r{turn on/off fixed-width sections}
9989 |:         @r{turn on/off tables}
9990 ^:         @r{turn on/off @TeX{}-like syntax for sub- and superscripts.  If}
9991            @r{you write "^:@{@}", @code{a_@{b@}} will be interpreted, but}
9992            @r{the simple @code{a_b} will be left as it is.}
9993 -:         @r{turn on/off conversion of special strings.}
9994 f:         @r{turn on/off footnotes like this[1].}
9995 todo:      @r{turn on/off inclusion of TODO keywords into exported text}
9996 tasks:     @r{turn on/off inclusion of tasks (TODO items), can be nil to remove}
9997            @r{all tasks, @code{todo} to remove DONE tasks, or list of kwds to keep}
9998 pri:       @r{turn on/off priority cookies}
9999 tags:      @r{turn on/off inclusion of tags, may also be @code{not-in-toc}}
10000 <:         @r{turn on/off inclusion of any time/date stamps like DEADLINES}
10001 *:         @r{turn on/off emphasized text (bold, italic, underlined)}
10002 TeX:       @r{turn on/off simple @TeX{} macros in plain text}
10003 LaTeX:     @r{configure export of @LaTeX{} fragments.  Default @code{auto}}
10004 skip:      @r{turn on/off skipping the text before the first heading}
10005 author:    @r{turn on/off inclusion of author name/email into exported file}
10006 email:     @r{turn on/off inclusion of author email into exported file}
10007 creator:   @r{turn on/off inclusion of creator info into exported file}
10008 timestamp: @r{turn on/off inclusion creation time into exported file}
10009 d:         @r{turn on/off inclusion of drawers, or list drawers to include}
10010 @end example
10011 @noindent
10012 These options take effect in both the HTML and @LaTeX{} export, except for
10013 @code{TeX} and @code{LaTeX} options, which are respectively @code{t} and
10014 @code{nil} for the @LaTeX{} export.
10016 The default values for these and many other options are given by a set of
10017 variables.  For a list of such variables, the corresponding OPTIONS keys and
10018 also the publishing keys (@pxref{Project alist}), see the constant
10019 @code{org-export-plist-vars}.
10021 When exporting only a single subtree by selecting it with @kbd{C-c @@} before
10022 calling an export command, the subtree can overrule some of the file's export
10023 settings with properties @code{EXPORT_FILE_NAME}, @code{EXPORT_TITLE},
10024 @code{EXPORT_TEXT}, @code{EXPORT_AUTHOR}, @code{EXPORT_DATE}, and
10025 @code{EXPORT_OPTIONS}.
10027 @node The export dispatcher, ASCII/Latin-1/UTF-8 export, Export options, Exporting
10028 @section The export dispatcher
10029 @cindex dispatcher, for export commands
10031 All export commands can be reached using the export dispatcher, which is a
10032 prefix key that prompts for an additional key specifying the command.
10033 Normally the entire file is exported, but if there is an active region that
10034 contains one outline tree, the first heading is used as document title and
10035 the subtrees are exported.
10037 @table @kbd
10038 @orgcmd{C-c C-e,org-export}
10039 @vindex org-export-run-in-background
10040 Dispatcher for export and publishing commands.  Displays a help-window
10041 listing the additional key(s) needed to launch an export or publishing
10042 command.  The prefix arg is passed through to the exporter.  A double prefix
10043 @kbd{C-u C-u} causes most commands to be executed in the background, in a
10044 separate Emacs process@footnote{To make this behavior the default, customize
10045 the variable @code{org-export-run-in-background}.}.
10046 @orgcmd{C-c C-e v,org-export-visible}
10047 Like @kbd{C-c C-e}, but only export the text that is currently visible
10048 (i.e., not hidden by outline visibility).
10049 @orgcmd{C-u C-u C-c C-e,org-export}
10050 @vindex org-export-run-in-background
10051 Call the exporter, but reverse the setting of
10052 @code{org-export-run-in-background}, i.e., request background processing if
10053 not set, or force processing in the current Emacs process if set.
10054 @end table
10056 @node ASCII/Latin-1/UTF-8 export, HTML export, The export dispatcher, Exporting
10057 @section ASCII/Latin-1/UTF-8 export
10058 @cindex ASCII export
10059 @cindex Latin-1 export
10060 @cindex UTF-8 export
10062 ASCII export produces a simple and very readable version of an Org mode
10063 file, containing only plain ASCII@.  Latin-1 and UTF-8 export augment the file
10064 with special characters and symbols available in these encodings.
10066 @cindex region, active
10067 @cindex active region
10068 @cindex transient-mark-mode
10069 @table @kbd
10070 @orgcmd{C-c C-e a,org-export-as-ascii}
10071 @cindex property, EXPORT_FILE_NAME
10072 Export as an ASCII file.  For an Org file, @file{myfile.org}, the ASCII file
10073 will be @file{myfile.txt}.  The file will be overwritten without
10074 warning.  If there is an active region@footnote{This requires
10075 @code{transient-mark-mode} be turned on.}, only the region will be
10076 exported.  If the selected region is a single tree@footnote{To select the
10077 current subtree, use @kbd{C-c @@}.}, the tree head will
10078 become the document title.  If the tree head entry has or inherits an
10079 @code{EXPORT_FILE_NAME} property, that name will be used for the
10080 export.
10081 @orgcmd{C-c C-e A,org-export-as-ascii-to-buffer}
10082 Export to a temporary buffer.  Do not create a file.
10083 @orgcmd{C-c C-e n,org-export-as-latin1}
10084 @xorgcmd{C-c C-e N,org-export-as-latin1-to-buffer}
10085 Like the above commands, but use Latin-1 encoding.
10086 @orgcmd{C-c C-e u,org-export-as-utf8}
10087 @xorgcmd{C-c C-e U,org-export-as-utf8-to-buffer}
10088 Like the above commands, but use UTF-8 encoding.
10089 @item C-c C-e v a/n/u
10090 Export only the visible part of the document.
10091 @end table
10093 @cindex headline levels, for exporting
10094 In the exported version, the first 3 outline levels will become
10095 headlines, defining a general document structure.  Additional levels
10096 will be exported as itemized lists.  If you want that transition to occur
10097 at a different level, specify it with a prefix argument.  For example,
10099 @example
10100 @kbd{C-1 C-c C-e a}
10101 @end example
10103 @noindent
10104 creates only top level headlines and exports the rest as items.  When
10105 headlines are converted to items, the indentation of the text following
10106 the headline is changed to fit nicely under the item.  This is done with
10107 the assumption that the first body line indicates the base indentation of
10108 the body text.  Any indentation larger than this is adjusted to preserve
10109 the layout relative to the first line.  Should there be lines with less
10110 indentation than the first one, these are left alone.
10112 @vindex org-export-ascii-links-to-notes
10113 Links will be exported in a footnote-like style, with the descriptive part in
10114 the text and the link in a note before the next heading.  See the variable
10115 @code{org-export-ascii-links-to-notes} for details and other options.
10117 @node HTML export, @LaTeX{} and PDF export, ASCII/Latin-1/UTF-8 export, Exporting
10118 @section HTML export
10119 @cindex HTML export
10121 Org mode contains a HTML (XHTML 1.0 strict) exporter with extensive
10122 HTML formatting, in ways similar to John Gruber's @emph{markdown}
10123 language, but with additional support for tables.
10125 @menu
10126 * HTML Export commands::        How to invoke HTML export
10127 * HTML preamble and postamble::  How to insert a preamble and a postamble
10128 * Quoting HTML tags::           Using direct HTML in Org mode
10129 * Links in HTML export::        How links will be interpreted and formatted
10130 * Tables in HTML export::       How to modify the formatting of tables
10131 * Images in HTML export::       How to insert figures into HTML output
10132 * Math formatting in HTML export::  Beautiful math also on the web
10133 * Text areas in HTML export::   An alternative way to show an example
10134 * CSS support::                 Changing the appearance of the output
10135 * JavaScript support::          Info and Folding in a web browser
10136 @end menu
10138 @node HTML Export commands, HTML preamble and postamble, HTML export, HTML export
10139 @subsection HTML export commands
10141 @cindex region, active
10142 @cindex active region
10143 @cindex transient-mark-mode
10144 @table @kbd
10145 @orgcmd{C-c C-e h,org-export-as-html}
10146 @cindex property, EXPORT_FILE_NAME
10147 Export as a HTML file.  For an Org file @file{myfile.org},
10148 the HTML file will be @file{myfile.html}.  The file will be overwritten
10149 without warning.  If there is an active region@footnote{This requires
10150 @code{transient-mark-mode} be turned on.}, only the region will be
10151 exported.  If the selected region is a single tree@footnote{To select the
10152 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
10153 title.  If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
10154 property, that name will be used for the export.
10155 @orgcmd{C-c C-e b,org-export-as-html-and-open}
10156 Export as a HTML file and immediately open it with a browser.
10157 @orgcmd{C-c C-e H,org-export-as-html-to-buffer}
10158 Export to a temporary buffer.  Do not create a file.
10159 @orgcmd{C-c C-e R,org-export-region-as-html}
10160 Export the active region to a temporary buffer.  With a prefix argument, do
10161 not produce the file header and footer, but just the plain HTML section for
10162 the region.  This is good for cut-and-paste operations.
10163 @item C-c C-e v h/b/H/R
10164 Export only the visible part of the document.
10165 @item M-x org-export-region-as-html
10166 Convert the region to HTML under the assumption that it was in Org mode
10167 syntax before.  This is a global command that can be invoked in any
10168 buffer.
10169 @item M-x org-replace-region-by-HTML
10170 Replace the active region (assumed to be in Org mode syntax) by HTML
10171 code.
10172 @end table
10174 @cindex headline levels, for exporting
10175 In the exported version, the first 3 outline levels will become headlines,
10176 defining a general document structure.  Additional levels will be exported as
10177 itemized lists.  If you want that transition to occur at a different level,
10178 specify it with a numeric prefix argument.  For example,
10180 @example
10181 @kbd{C-2 C-c C-e b}
10182 @end example
10184 @noindent
10185 creates two levels of headings and does the rest as items.
10188 @node HTML preamble and postamble, Quoting HTML tags, HTML Export commands, HTML export
10189 @subsection HTML preamble and postamble
10190 @vindex org-html-preamble
10191 @vindex org-html-postamble
10192 @vindex org-html-preamble-format
10193 @vindex org-html-postamble-format
10194 @vindex org-html-validation-link
10195 @vindex org-export-author-info
10196 @vindex org-export-email-info
10197 @vindex org-export-creator-info
10198 @vindex org-export-time-stamp-file
10200 The HTML exporter lets you define a preamble and a postamble.
10202 The default value for @code{org-html-preamble} is @code{t}, which means
10203 that the preamble is inserted depending on the relevant format string in
10204 @code{org-html-preamble-format}.
10206 Setting @code{org-html-preamble} to a string will override the default
10207 format string.  Setting it to a function, will insert the output of the
10208 function, which must be a string; such a function takes no argument but you
10209 can check against the value of @code{opt-plist}, which contains the list of
10210 publishing properties for the current file.  Setting to @code{nil} will not
10211 insert any preamble.
10213 The default value for @code{org-html-postamble} is @code{'auto}, which
10214 means that the HTML exporter will look for the value of
10215 @code{org-export-author-info}, @code{org-export-email-info},
10216 @code{org-export-creator-info} and @code{org-export-time-stamp-file},
10217 @code{org-html-validation-link} and build the postamble from these
10218 values.  Setting @code{org-html-postamble} to @code{t} will insert the
10219 postamble from the relevant format string found in
10220 @code{org-html-postamble-format}.  Setting it to @code{nil} will not
10221 insert any postamble.
10223 @node Quoting HTML tags, Links in HTML export, HTML preamble and postamble, HTML export
10224 @subsection Quoting HTML tags
10226 Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
10227 @samp{&gt;} in HTML export.  If you want to include simple HTML tags
10228 which should be interpreted as such, mark them with @samp{@@} as in
10229 @samp{@@<b>bold text@@</b>}.  Note that this really works only for
10230 simple tags.  For more extensive HTML that should be copied verbatim to
10231 the exported file use either
10233 @cindex #+HTML
10234 @cindex #+BEGIN_HTML
10235 @example
10236 #+HTML: Literal HTML code for export
10237 @end example
10239 @noindent or
10240 @cindex #+BEGIN_HTML
10242 @example
10243 #+BEGIN_HTML
10244 All lines between these markers are exported literally
10245 #+END_HTML
10246 @end example
10249 @node Links in HTML export, Tables in HTML export, Quoting HTML tags, HTML export
10250 @subsection Links in HTML export
10252 @cindex links, in HTML export
10253 @cindex internal links, in HTML export
10254 @cindex external links, in HTML export
10255 Internal links (@pxref{Internal links}) will continue to work in HTML@.  This
10256 includes automatic links created by radio targets (@pxref{Radio
10257 targets}).  Links to external files will still work if the target file is on
10258 the same @i{relative} path as the published Org file.  Links to other
10259 @file{.org} files will be translated into HTML links under the assumption
10260 that a HTML version also exists of the linked file, at the same relative
10261 path.  @samp{id:} links can then be used to jump to specific entries across
10262 files.  For information related to linking files while publishing them to a
10263 publishing directory see @ref{Publishing links}.
10265 If you want to specify attributes for links, you can do so using a special
10266 @code{#+ATTR_HTML} line to define attributes that will be added to the
10267 @code{<a>} or @code{<img>} tags.  Here is an example that sets @code{title}
10268 and @code{style} attributes for a link:
10270 @cindex #+ATTR_HTML
10271 @example
10272 #+ATTR_HTML: title="The Org mode homepage" style="color:red;"
10273 [[http://orgmode.org]]
10274 @end example
10276 @node Tables in HTML export, Images in HTML export, Links in HTML export, HTML export
10277 @subsection Tables
10278 @cindex tables, in HTML
10279 @vindex org-html-table-tag
10281 Org mode tables are exported to HTML using the table tag defined in
10282 @code{org-html-table-tag}.  The default setting makes tables without
10283 cell borders and frame.  If you would like to change this for individual
10284 tables, place something like the following before the table:
10286 @cindex #+CAPTION
10287 @cindex #+ATTR_HTML
10288 @example
10289 #+CAPTION: This is a table with lines around and between cells
10290 #+ATTR_HTML: border="2" rules="all" frame="border"
10291 @end example
10293 @node Images in HTML export, Math formatting in HTML export, Tables in HTML export, HTML export
10294 @subsection Images in HTML export
10296 @cindex images, inline in HTML
10297 @cindex inlining images in HTML
10298 @vindex org-html-inline-images
10299 HTML export can inline images given as links in the Org file, and
10300 it can make an image the clickable part of a link.  By
10301 default@footnote{But see the variable
10302 @code{org-html-inline-images}.}, images are inlined if a link does
10303 not have a description.  So @samp{[[file:myimg.jpg]]} will be inlined,
10304 while @samp{[[file:myimg.jpg][the image]]} will just produce a link
10305 @samp{the image} that points to the image.  If the description part
10306 itself is a @code{file:} link or a @code{http:} URL pointing to an
10307 image, this image will be inlined and activated so that clicking on the
10308 image will activate the link.  For example, to include a thumbnail that
10309 will link to a high resolution version of the image, you could use:
10311 @example
10312 [[file:highres.jpg][file:thumb.jpg]]
10313 @end example
10315 If you need to add attributes to an inlined image, use a @code{#+ATTR_HTML}.
10316 In the example below we specify the @code{alt} and @code{title} attributes to
10317 support text viewers and accessibility, and align it to the right.
10319 @cindex #+CAPTION
10320 @cindex #+ATTR_HTML
10321 @example
10322 #+CAPTION: A black cat stalking a spider
10323 #+ATTR_HTML: alt="cat/spider image" title="Action!" align="right"
10324 [[./img/a.jpg]]
10325 @end example
10327 @noindent
10328 You could use @code{http} addresses just as well.
10330 @node Math formatting in HTML export, Text areas in HTML export, Images in HTML export, HTML export
10331 @subsection Math formatting in HTML export
10332 @cindex MathJax
10333 @cindex dvipng
10335 @LaTeX{} math snippets (@pxref{@LaTeX{} fragments}) can be displayed in two
10336 different ways on HTML pages.  The default is to use the
10337 @uref{http://www.mathjax.org, MathJax system} which should work out of the
10338 box with Org mode installation because @code{http://orgmode.org} serves
10339 @file{MathJax} for Org mode users for small applications and for testing
10340 purposes.  @b{If you plan to use this regularly or on pages with significant
10341 page views, you should install@footnote{Installation instructions can be
10342 found on the MathJax website, see
10343 @uref{http://www.mathjax.org/resources/docs/?installation.html}.} MathJax on
10344 your own server in order to limit the load of our server.}  To configure
10345 @file{MathJax}, use the variable @code{org-html-mathjax-options} or
10346 insert something like the following into the buffer:
10348 @example
10349 #+HTML_MATHJAX: align:"left" mathml:t path:"/MathJax/MathJax.js"
10350 @end example
10352 @noindent See the docstring of the variable
10353 @code{org-html-mathjax-options} for the meaning of the parameters in
10354 this line.
10356 If you prefer, you can also request that @LaTeX{} fragments are processed
10357 into small images that will be inserted into the browser page.  Before the
10358 availability of MathJax, this was the default method for Org files.  This
10359 method requires that the @file{dvipng} program is available on your system.
10360 You can still get this processing with
10362 @example
10363 #+OPTIONS: LaTeX:dvipng
10364 @end example
10366 @node Text areas in HTML export, CSS support, Math formatting in HTML export, HTML export
10367 @subsection Text areas in HTML export
10369 @cindex text areas, in HTML
10370 An alternative way to publish literal code examples in HTML is to use text
10371 areas, where the example can even be edited before pasting it into an
10372 application.  It is triggered by a @code{-t} switch at an @code{example} or
10373 @code{src} block.  Using this switch disables any options for syntax and
10374 label highlighting, and line numbering, which may be present.  You may also
10375 use @code{-h} and @code{-w} switches to specify the height and width of the
10376 text area, which default to the number of lines in the example, and 80,
10377 respectively.  For example
10379 @example
10380 #+BEGIN_EXAMPLE -t -w 40
10381   (defun org-xor (a b)
10382      "Exclusive or."
10383      (if a (not b) b))
10384 #+END_EXAMPLE
10385 @end example
10388 @node CSS support, JavaScript support, Text areas in HTML export, HTML export
10389 @subsection CSS support
10390 @cindex CSS, for HTML export
10391 @cindex HTML export, CSS
10393 @vindex org-html-todo-kwd-class-prefix
10394 @vindex org-html-tag-class-prefix
10395 You can also give style information for the exported file.  The HTML exporter
10396 assigns the following special CSS classes@footnote{If the classes on TODO
10397 keywords and tags lead to conflicts, use the variables
10398 @code{org-html-todo-kwd-class-prefix} and
10399 @code{org-html-tag-class-prefix} to make them unique.} to appropriate
10400 parts of the document---your style specifications may change these, in
10401 addition to any of the standard classes like for headlines, tables, etc.
10402 @example
10403 p.author            @r{author information, including email}
10404 p.date              @r{publishing date}
10405 p.creator           @r{creator info, about org mode version}
10406 .title              @r{document title}
10407 .todo               @r{TODO keywords, all not-done states}
10408 .done               @r{the DONE keywords, all states that count as done}
10409 .WAITING            @r{each TODO keyword also uses a class named after itself}
10410 .timestamp          @r{timestamp}
10411 .timestamp-kwd      @r{keyword associated with a timestamp, like SCHEDULED}
10412 .timestamp-wrapper  @r{span around keyword plus timestamp}
10413 .tag                @r{tag in a headline}
10414 ._HOME              @r{each tag uses itself as a class, "@@" replaced by "_"}
10415 .target             @r{target for links}
10416 .linenr             @r{the line number in a code example}
10417 .code-highlighted   @r{for highlighting referenced code lines}
10418 div.outline-N       @r{div for outline level N (headline plus text))}
10419 div.outline-text-N  @r{extra div for text at outline level N}
10420 .section-number-N   @r{section number in headlines, different for each level}
10421 div.figure          @r{how to format an inlined image}
10422 pre.src             @r{formatted source code}
10423 pre.example         @r{normal example}
10424 p.verse             @r{verse paragraph}
10425 div.footnotes       @r{footnote section headline}
10426 p.footnote          @r{footnote definition paragraph, containing a footnote}
10427 .footref            @r{a footnote reference number (always a <sup>)}
10428 .footnum            @r{footnote number in footnote definition (always <sup>)}
10429 @end example
10431 @vindex org-html-style-default
10432 @vindex org-html-head-include-default-style
10433 @vindex org-html-head
10434 @vindex org-html-head-extra
10435 @cindex #+HTML_INCLUDE_STYLE
10436 Each exported file contains a compact default style that defines these
10437 classes in a basic way@footnote{This style is defined in the constant
10438 @code{org-html-style-default}, which you should not modify.  To turn
10439 inclusion of these defaults off, customize
10440 @code{org-html-head-include-default-style} or set @code{#+HTML_INCLUDE_STYLE}
10441 to nil on a per-file basis.}.  You may overwrite these settings, or add to
10442 them by using the variables @code{org-html-head} and
10443 @code{org-html-head-extra}.  You can override the global values of these
10444 variables for each file by using these keywords:
10446 @cindex #+HTML_HEAD
10447 @cindex #+HTML_HEAD_EXTRA
10448 @example
10449 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="style1.css" />
10450 #+HTML_HEAD_EXTRA: <link rel="alternate stylesheet" type="text/css" href="style2.css" />
10451 @end example
10453 @noindent
10454 For longer style definitions, you can use several such lines.  You could also
10455 directly write a @code{<style>} @code{</style>} section in this way, without
10456 referring to an external file.
10458 In order to add styles to a subtree, use the @code{:HTML_CONTAINER_CLASS:}
10459 property to assign a class to the tree.  In order to specify CSS styles for a
10460 particular headline, you can use the id specified in a @code{:CUSTOM_ID:}
10461 property.
10463 @c FIXME: More about header and footer styles
10464 @c FIXME: Talk about links and targets.
10466 @node JavaScript support,  , CSS support, HTML export
10467 @subsection JavaScript supported display of web pages
10469 @cindex Rose, Sebastian
10470 Sebastian Rose has written a JavaScript program especially designed to
10471 enhance the web viewing experience of HTML files created with Org.  This
10472 program allows you to view large files in two different ways.  The first one
10473 is an @emph{Info}-like mode where each section is displayed separately and
10474 navigation can be done with the @kbd{n} and @kbd{p} keys (and some other keys
10475 as well, press @kbd{?} for an overview of the available keys).  The second
10476 view type is a @emph{folding} view much like Org provides inside Emacs.  The
10477 script is available at @url{http://orgmode.org/org-info.js} and you can find
10478 the documentation for it at @url{http://orgmode.org/worg/code/org-info-js/}.
10479 We host the script at our site, but if you use it a lot, you might
10480 not want to be dependent on @url{orgmode.org} and prefer to install a local
10481 copy on your own web server.
10483 To use the script, you need to make sure that the @file{org-jsinfo.el} module
10484 gets loaded.  It should be loaded by default, but you can try @kbd{M-x
10485 customize-variable @key{RET} org-modules @key{RET}} to convince yourself that
10486 this is indeed the case.  All it then takes to make use of the program is
10487 adding a single line to the Org file:
10489 @cindex #+INFOJS_OPT
10490 @example
10491 #+INFOJS_OPT: view:info toc:nil
10492 @end example
10494 @noindent
10495 If this line is found, the HTML header will automatically contain the code
10496 needed to invoke the script.  Using the line above, you can set the following
10497 viewing options:
10499 @example
10500 path:    @r{The path to the script.  The default is to grab the script from}
10501          @r{@url{http://orgmode.org/org-info.js}, but you might want to have}
10502          @r{a local copy and use a path like @samp{../scripts/org-info.js}.}
10503 view:    @r{Initial view when the website is first shown.  Possible values are:}
10504          info      @r{Info-like interface with one section per page.}
10505          overview  @r{Folding interface, initially showing only top-level.}
10506          content   @r{Folding interface, starting with all headlines visible.}
10507          showall   @r{Folding interface, all headlines and text visible.}
10508 sdepth:  @r{Maximum headline level that will still become an independent}
10509          @r{section for info and folding modes.  The default is taken from}
10510          @r{@code{org-export-headline-levels} (= the @code{H} switch in @code{#+OPTIONS}).}
10511          @r{If this is smaller than in @code{org-export-headline-levels}, each}
10512          @r{info/folding section can still contain child headlines.}
10513 toc:     @r{Should the table of contents @emph{initially} be visible?}
10514          @r{Even when @code{nil}, you can always get to the "toc" with @kbd{i}.}
10515 tdepth:  @r{The depth of the table of contents.  The defaults are taken from}
10516          @r{the variables @code{org-export-headline-levels} and @code{org-export-with-toc}.}
10517 ftoc:    @r{Does the CSS of the page specify a fixed position for the "toc"?}
10518          @r{If yes, the toc will never be displayed as a section.}
10519 ltoc:    @r{Should there be short contents (children) in each section?}
10520          @r{Make this @code{above} if the section should be above initial text.}
10521 mouse:   @r{Headings are highlighted when the mouse is over them.  Should be}
10522          @r{@samp{underline} (default) or a background color like @samp{#cccccc}.}
10523 buttons: @r{Should view-toggle buttons be everywhere?  When @code{nil} (the}
10524          @r{default), only one such button will be present.}
10525 @end example
10526 @noindent
10527 @vindex org-html-infojs-options
10528 @vindex org-html-use-infojs
10529 You can choose default values for these options by customizing the variable
10530 @code{org-html-infojs-options}.  If you always want to apply the script to your
10531 pages, configure the variable @code{org-html-use-infojs}.
10533 @node @LaTeX{} and PDF export, OpenDocument Text export, HTML export, Exporting
10534 @section @LaTeX{} and PDF export
10535 @cindex @LaTeX{} export
10536 @cindex PDF export
10537 @cindex Guerry, Bastien
10539 Org mode contains a @LaTeX{} exporter.  With further processing@footnote{The
10540 default @LaTeX{} output is designed for processing with @code{pdftex} or
10541 @LaTeX{}.  It includes packages that are not compatible with @code{xetex} and
10542 possibly @code{luatex}.  See the variables
10543 @code{org-latex-default-packages-alist} and
10544 @code{org-latex-packages-alist}.}, this backend is also used to produce PDF
10545 output.  Since the @LaTeX{} output uses @file{hyperref} to implement links
10546 and cross references, the PDF output file will be fully linked.  Beware of
10547 the fact that your @code{org} file has to be properly structured in order to
10548 be correctly exported: respect the hierarchy of sections.
10550 @menu
10551 * @LaTeX{}/PDF export commands::
10552 * Header and sectioning::       Setting up the export file structure
10553 * Quoting @LaTeX{} code::       Incorporating literal @LaTeX{} code
10554 * Tables in @LaTeX{} export::   Options for exporting tables to @LaTeX{}
10555 * Images in @LaTeX{} export::   How to insert figures into @LaTeX{} output
10556 * Beamer class export::         Turning the file into a presentation
10557 @end menu
10559 @node @LaTeX{}/PDF export commands, Header and sectioning, @LaTeX{} and PDF export, @LaTeX{} and PDF export
10560 @subsection @LaTeX{} export commands
10562 @cindex region, active
10563 @cindex active region
10564 @cindex transient-mark-mode
10565 @table @kbd
10566 @orgcmd{C-c C-e l,org-export-as-latex}
10567 @cindex property EXPORT_FILE_NAME
10568 Export as a @LaTeX{} file.  For an Org file
10569 @file{myfile.org}, the @LaTeX{} file will be @file{myfile.tex}.  The file will
10570 be overwritten without warning.  If there is an active region@footnote{This
10571 requires @code{transient-mark-mode} be turned on.}, only the region will be
10572 exported.  If the selected region is a single tree@footnote{To select the
10573 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
10574 title.  If the tree head entry has or inherits an @code{EXPORT_FILE_NAME}
10575 property, that name will be used for the export.
10576 @orgcmd{C-c C-e L,org-export-as-latex-to-buffer}
10577 Export to a temporary buffer.  Do not create a file.
10578 @item C-c C-e v l/L
10579 Export only the visible part of the document.
10580 @item M-x org-export-region-as-latex
10581 Convert the region to @LaTeX{} under the assumption that it was in Org mode
10582 syntax before.  This is a global command that can be invoked in any
10583 buffer.
10584 @item M-x org-replace-region-by-latex
10585 Replace the active region (assumed to be in Org mode syntax) by @LaTeX{}
10586 code.
10587 @orgcmd{C-c C-e p,org-export-as-pdf}
10588 Export as @LaTeX{} and then process to PDF.
10589 @orgcmd{C-c C-e d,org-export-as-pdf-and-open}
10590 Export as @LaTeX{} and then process to PDF, then open the resulting PDF file.
10591 @end table
10593 @cindex headline levels, for exporting
10594 @vindex org-latex-low-levels
10595 In the exported version, the first 3 outline levels will become
10596 headlines, defining a general document structure.  Additional levels
10597 will be exported as description lists.  The exporter can ignore them or
10598 convert them to a custom string depending on
10599 @code{org-latex-low-levels}.
10601 If you want that transition to occur at a different level, specify it
10602 with a numeric prefix argument.  For example,
10604 @example
10605 @kbd{C-2 C-c C-e l}
10606 @end example
10608 @noindent
10609 creates two levels of headings and does the rest as items.
10611 @node Header and sectioning, Quoting @LaTeX{} code, @LaTeX{}/PDF export commands, @LaTeX{} and PDF export
10612 @subsection Header and sectioning structure
10613 @cindex @LaTeX{} class
10614 @cindex @LaTeX{} sectioning structure
10615 @cindex @LaTeX{} header
10616 @cindex header, for @LaTeX{} files
10617 @cindex sectioning structure, for @LaTeX{} export
10619 By default, the @LaTeX{} output uses the class @code{article}.
10621 @vindex org-latex-default-class
10622 @vindex org-latex-classes
10623 @vindex org-latex-default-packages-alist
10624 @vindex org-latex-packages-alist
10625 @cindex #+LaTeX_HEADER
10626 @cindex #+LaTeX_CLASS
10627 @cindex #+LaTeX_CLASS_OPTIONS
10628 @cindex property, LaTeX_CLASS
10629 @cindex property, LaTeX_CLASS_OPTIONS
10630 You can change this globally by setting a different value for
10631 @code{org-latex-default-class} or locally by adding an option like
10632 @code{#+LaTeX_CLASS: myclass} in your file, or with a @code{:LaTeX_CLASS:}
10633 property that applies when exporting a region containing only this (sub)tree.
10634 The class must be listed in @code{org-latex-classes}.  This variable
10635 defines a header template for each class@footnote{Into which the values of
10636 @code{org-latex-default-packages-alist} and
10637 @code{org-latex-packages-alist} are spliced.}, and allows you to
10638 define the sectioning structure for each class.  You can also define your own
10639 classes there.  @code{#+LaTeX_CLASS_OPTIONS} or a @code{:LaTeX_CLASS_OPTIONS:}
10640 property can specify the options for the @code{\documentclass} macro.  The
10641 options to documentclass have to be provided, as expected by @LaTeX{}, within
10642 square brackets.  You can also use @code{#+LaTeX_HEADER: \usepackage@{xyz@}}
10643 to add lines to the header.  See the docstring of
10644 @code{org-latex-classes} for more information.  An example is shown
10645 below.
10647 @example
10648 #+LaTeX_CLASS: article
10649 #+LaTeX_CLASS_OPTIONS: [a4paper]
10650 #+LaTeX_HEADER: \usepackage@{xyz@}
10652 * Headline 1
10653   some text
10654 @end example
10656 @node Quoting @LaTeX{} code, Tables in @LaTeX{} export, Header and sectioning, @LaTeX{} and PDF export
10657 @subsection Quoting @LaTeX{} code
10659 Embedded @LaTeX{} as described in @ref{Embedded @LaTeX{}}, will be correctly
10660 inserted into the @LaTeX{} file.  This includes simple macros like
10661 @samp{\ref@{LABEL@}} to create a cross reference to a figure.  Furthermore,
10662 you can add special code that should only be present in @LaTeX{} export with
10663 the following constructs:
10665 @cindex #+LaTeX
10666 @cindex #+BEGIN_LaTeX
10667 @example
10668 #+LaTeX: Literal @LaTeX{} code for export
10669 @end example
10671 @noindent or
10672 @cindex #+BEGIN_LaTeX
10674 @example
10675 #+BEGIN_LaTeX
10676 All lines between these markers are exported literally
10677 #+END_LaTeX
10678 @end example
10681 @node Tables in @LaTeX{} export, Images in @LaTeX{} export, Quoting @LaTeX{} code, @LaTeX{} and PDF export
10682 @subsection Tables in @LaTeX{} export
10683 @cindex tables, in @LaTeX{} export
10685 For @LaTeX{} export of a table, you can specify a label, a caption and
10686 placement options (@pxref{Images and tables}).  You can also use the
10687 @code{ATTR_LaTeX} line to request a @code{longtable} environment for the
10688 table, so that it may span several pages, or to change the default table
10689 environment from @code{table} to @code{table*} or to change the default inner
10690 tabular environment to @code{tabularx} or @code{tabulary}.  Finally, you can
10691 set the alignment string, and (with @code{tabularx} or @code{tabulary}) the
10692 width:
10694 @cindex #+CAPTION
10695 @cindex #+LABEL
10696 @cindex #+ATTR_LaTeX
10697 @example
10698 #+CAPTION: A long table
10699 #+LABEL: tbl:long
10700 #+ATTR_LaTeX: longtable align=l|lp@{3cm@}r|l
10701 | ..... | ..... |
10702 | ..... | ..... |
10703 @end example
10705 or to specify a multicolumn table with @code{tabulary}
10707 @cindex #+CAPTION
10708 @cindex #+LABEL
10709 @cindex #+ATTR_LaTeX
10710 @example
10711 #+CAPTION: A wide table with tabulary
10712 #+LABEL: tbl:wide
10713 #+ATTR_LaTeX: table* tabulary width=\textwidth
10714 | ..... | ..... |
10715 | ..... | ..... |
10716 @end example
10718 @node Images in @LaTeX{} export, Beamer class export, Tables in @LaTeX{} export, @LaTeX{} and PDF export
10719 @subsection Images in @LaTeX{} export
10720 @cindex images, inline in @LaTeX{}
10721 @cindex inlining images in @LaTeX{}
10723 Images that are linked to without a description part in the link, like
10724 @samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]} will be inserted into the PDF
10725 output file resulting from @LaTeX{} processing.  Org will use an
10726 @code{\includegraphics} macro to insert the image.  If you have specified a
10727 caption and/or a label as described in @ref{Images and tables}, the figure
10728 will be wrapped into a @code{figure} environment and thus become a floating
10729 element.  You can use an @code{#+ATTR_LaTeX:} line to specify various other
10730 options.  You can ask org to export an image as a float without specifying
10731 a label or a caption by using the keyword @code{float} in this line.  Various
10732 optional arguments to the @code{\includegraphics} macro can also be specified
10733 in this fashion.  To modify the placement option of the floating environment,
10734 add something like @samp{placement=[h!]} to the attributes.  It is to be noted
10735 this option can be used with tables as well@footnote{One can also take
10736 advantage of this option to pass other, unrelated options into the figure or
10737 table environment.  For an example see the section ``Exporting org files'' in
10738 @url{http://orgmode.org/worg/org-hacks.html}}.
10740 If you would like to let text flow around the image, add the word @samp{wrap}
10741 to the @code{#+ATTR_LaTeX:} line, which will make the figure occupy the left
10742 half of the page.  To fine-tune, the @code{placement} field will be the set
10743 of additional arguments needed by the @code{wrapfigure} environment.  Note
10744 that if you change the size of the image, you need to use compatible settings
10745 for @code{\includegraphics} and @code{wrapfigure}.
10747 @cindex #+CAPTION
10748 @cindex #+LABEL
10749 @cindex #+ATTR_LaTeX
10750 @example
10751 #+CAPTION:    The black-body emission of the disk around HR 4049
10752 #+LABEL:      fig:SED-HR4049
10753 #+ATTR_LaTeX: width=5cm,angle=90
10754 [[./img/sed-hr4049.pdf]]
10756 #+ATTR_LaTeX: width=0.38\textwidth wrap placement=@{r@}@{0.4\textwidth@}
10757 [[./img/hst.png]]
10758 @end example
10760 If you wish to include an image which spans multiple columns in a page, you
10761 can use the keyword @code{multicolumn} in the @code{#+ATTR_LaTeX} line.  This
10762 will export the image wrapped in a @code{figure*} environment.
10764 If you need references to a label created in this way, write
10765 @samp{\ref@{fig:SED-HR4049@}} just like in @LaTeX{}.
10767 @node Beamer class export,  , Images in @LaTeX{} export, @LaTeX{} and PDF export
10768 @subsection Beamer class export
10770 The @LaTeX{} class @file{beamer} allows production of high quality presentations
10771 using @LaTeX{} and pdf processing.  Org mode has special support for turning an
10772 Org mode file or tree into a @file{beamer} presentation.
10774 When the @LaTeX{} class for the current buffer (as set with @code{#+LaTeX_CLASS:
10775 beamer}) or subtree (set with a @code{LaTeX_CLASS} property) is
10776 @code{beamer}, a special export mode will turn the file or tree into a beamer
10777 presentation.  Any tree with not-too-deep level nesting should in principle be
10778 exportable as a beamer presentation.  By default, the top-level entries (or
10779 the first level below the selected subtree heading) will be turned into
10780 frames, and the outline structure below this level will become itemize lists.
10781 You can also configure the variable @code{org-beamer-frame-level} to a
10782 different level---then the hierarchy above frames will produce the sectioning
10783 structure of the presentation.
10785 A template for useful in-buffer settings or properties can be inserted into
10786 the buffer with @kbd{M-x org-insert-beamer-options-template}.  Among other
10787 things, this will install a column view format which is very handy for
10788 editing special properties used by beamer.
10790 You can influence the structure of the presentation using the following
10791 properties:
10793 @table @code
10794 @item BEAMER_env
10795 The environment that should be used to format this entry.  Valid environments
10796 are defined in the constant @code{org-beamer-environments-default}, and you
10797 can define more in @code{org-beamer-environments-extra}.  If this property is
10798 set, the entry will also get a @code{:B_environment:} tag to make this
10799 visible.  This tag has no semantic meaning, it is only a visual aid.
10800 @item BEAMER_envargs
10801 The beamer-special arguments that should be used for the environment, like
10802 @code{[t]} or @code{[<+->]} of @code{<2-3>}.  If the @code{BEAMER_col}
10803 property is also set, something like @code{C[t]} can be added here as well to
10804 set an options argument for the implied @code{columns} environment.
10805 @code{c[t]} or @code{c<2->} will set an options for the implied @code{column}
10806 environment.
10807 @item BEAMER_col
10808 The width of a column that should start with this entry.  If this property is
10809 set, the entry will also get a @code{:BMCOL:} property to make this visible.
10810 Also this tag is only a visual aid.  When this is a plain number, it will be
10811 interpreted as a fraction of @code{\textwidth}.  Otherwise it will be assumed
10812 that you have specified the units, like @samp{3cm}.  The first such property
10813 in a frame will start a @code{columns} environment to surround the columns.
10814 This environment is closed when an entry has a @code{BEAMER_col} property
10815 with value 0 or 1, or automatically at the end of the frame.
10816 @item BEAMER_extra
10817 Additional commands that should be inserted after the environment has been
10818 opened.  For example, when creating a frame, this can be used to specify
10819 transitions.
10820 @end table
10822 Frames will automatically receive a @code{fragile} option if they contain
10823 source code that uses the verbatim environment.  Special @file{beamer}
10824 specific code can be inserted using @code{#+BEAMER:} and
10825 @code{#+BEGIN_BEAMER...#+END_BEAMER} constructs, similar to other export
10826 backends, but with the difference that @code{#+LaTeX:} stuff will be included
10827 in the presentation as well.
10829 Outline nodes with @code{BEAMER_env} property value @samp{note} or
10830 @samp{noteNH} will be formatted as beamer notes, i,e, they will be wrapped
10831 into @code{\note@{...@}}.  The former will include the heading as part of the
10832 note text, the latter will ignore the heading of that node.  To simplify note
10833 generation, it is actually enough to mark the note with a @emph{tag} (either
10834 @code{:B_note:} or @code{:B_noteNH:}) instead of creating the
10835 @code{BEAMER_env} property.
10837 You can turn on a special minor mode @code{org-beamer-mode} for editing
10838 support with
10840 @example
10841 #+STARTUP: beamer
10842 @end example
10844 @table @kbd
10845 @orgcmd{C-c C-b,org-beamer-select-environment}
10846 In @code{org-beamer-mode}, this key offers fast selection of a beamer
10847 environment or the @code{BEAMER_col} property.
10848 @end table
10850 Column view provides a great way to set the environment of a node and other
10851 important parameters.  Make sure you are using a COLUMN format that is geared
10852 toward this special purpose.  The command @kbd{M-x
10853 org-insert-beamer-options-template} defines such a format.
10855 Here is a simple example Org document that is intended for beamer export.
10857 @smallexample
10858 #+LaTeX_CLASS: beamer
10859 #+TITLE: Example Presentation
10860 #+AUTHOR: Carsten Dominik
10861 #+LaTeX_CLASS_OPTIONS: [presentation]
10862 #+BEAMER_FRAME_LEVEL: 2
10863 #+BEAMER_HEADER_EXTRA: \usetheme@{Madrid@}\usecolortheme@{default@}
10864 #+COLUMNS: %35ITEM %10BEAMER_env(Env) %10BEAMER_envargs(Args) %4BEAMER_col(Col) %8BEAMER_extra(Ex)
10866 * This is the first structural section
10868 ** Frame 1 \\ with a subtitle
10869 *** Thanks to Eric Fraga                                      :BMCOL:B_block:
10870     :PROPERTIES:
10871     :BEAMER_env: block
10872     :BEAMER_envargs: C[t]
10873     :BEAMER_col: 0.5
10874     :END:
10875     for the first viable beamer setup in Org
10876 *** Thanks to everyone else                                   :BMCOL:B_block:
10877     :PROPERTIES:
10878     :BEAMER_col: 0.5
10879     :BEAMER_env: block
10880     :BEAMER_envargs: <2->
10881     :END:
10882     for contributing to the discussion
10883 **** This will be formatted as a beamer note                  :B_note:
10884 ** Frame 2 \\ where we will not use columns
10885 *** Request                                                   :B_block:
10886     Please test this stuff!
10887     :PROPERTIES:
10888     :BEAMER_env: block
10889     :END:
10890 @end smallexample
10892 For more information, see the documentation on Worg.
10894 @c begin opendocument
10896 @node OpenDocument Text export, iCalendar export, @LaTeX{} and PDF export, Exporting
10897 @section OpenDocument Text export
10898 @cindex ODT
10899 @cindex OpenDocument
10900 @cindex export, OpenDocument
10901 @cindex LibreOffice
10902 @cindex org-odt.el
10903 @cindex org-modules
10905 Org Mode@footnote{Versions 7.8 or later} supports export to OpenDocument Text
10906 (ODT) format using the @file{org-odt.el} module.  Documents created
10907 by this exporter use the @cite{OpenDocument-v1.2
10908 specification}@footnote{@url{http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html,
10909 Open Document Format for Office Applications (OpenDocument) Version 1.2}} and
10910 are compatible with LibreOffice 3.4.
10912 @menu
10913 * Pre-requisites for ODT export::  What packages ODT exporter relies on
10914 * ODT export commands::         How to invoke ODT export
10915 * Extending ODT export::        How to produce @samp{doc}, @samp{pdf} files
10916 * Applying custom styles::      How to apply custom styles to the output
10917 * Links in ODT export::         How links will be interpreted and formatted
10918 * Tables in ODT export::        How Tables are exported
10919 * Images in ODT export::        How to insert images
10920 * Math formatting in ODT export::  How @LaTeX{} fragments are formatted
10921 * Labels and captions in ODT export::  How captions are rendered
10922 * Literal examples in ODT export::  How source and example blocks are formatted
10923 * Advanced topics in ODT export::  Read this if you are a power user
10924 @end menu
10926 @node Pre-requisites for ODT export, ODT export commands, OpenDocument Text export, OpenDocument Text export
10927 @subsection Pre-requisites for ODT export
10928 @cindex zip
10929 The ODT exporter relies on the @file{zip} program to create the final
10930 output.  Check the availability of this program before proceeding further.
10932 @node ODT export commands, Extending ODT export, Pre-requisites for ODT export, OpenDocument Text export
10933 @subsection ODT export commands
10935 @subsubheading Exporting to ODT
10936 @anchor{x-export-to-odt}
10938 @cindex region, active
10939 @cindex active region
10940 @cindex transient-mark-mode
10941 @table @kbd
10942 @orgcmd{C-c C-e o,org-export-as-odt}
10943 @cindex property EXPORT_FILE_NAME
10945 Export as OpenDocument Text file.
10947 @vindex org-export-odt-preferred-output-format
10948 If @code{org-export-odt-preferred-output-format} is specified, automatically
10949 convert the exported file to that format.  @xref{x-export-to-other-formats, ,
10950 Automatically exporting to other formats}.
10952 For an Org file @file{myfile.org}, the ODT file will be
10953 @file{myfile.odt}.  The file will be overwritten without warning.  If there
10954 is an active region,@footnote{This requires @code{transient-mark-mode} to be
10955 turned on} only the region will be exported.  If the selected region is a
10956 single tree,@footnote{To select the current subtree, use @kbd{C-c @@}} the
10957 tree head will become the document title.  If the tree head entry has, or
10958 inherits, an @code{EXPORT_FILE_NAME} property, that name will be used for the
10959 export.
10961 @orgcmd{C-c C-e O,org-export-as-odt-and-open}
10962 Export as an OpenDocument Text file and open the resulting file.
10964 @vindex org-export-odt-preferred-output-format
10965 If @code{org-export-odt-preferred-output-format} is specified, open the
10966 converted file instead.  @xref{x-export-to-other-formats, , Automatically
10967 exporting to other formats}.
10968 @end table
10970 @node Extending ODT export, Applying custom styles, ODT export commands, OpenDocument Text export
10971 @subsection Extending ODT export
10973 The ODT exporter can interface with a variety of document
10974 converters and supports popular converters out of the box.  As a result, you
10975 can use it to export to formats like @samp{doc} or convert a document from
10976 one format (say @samp{csv}) to another format (say @samp{ods} or @samp{xls}).
10978 @cindex @file{unoconv}
10979 @cindex LibreOffice
10980 If you have a working installation of LibreOffice, a document converter is
10981 pre-configured for you and you can use it right away.  If you would like to
10982 use @file{unoconv} as your preferred converter, customize the variable
10983 @code{org-export-odt-convert-process} to point to @code{unoconv}.  You can
10984 also use your own favorite converter or tweak the default settings of the
10985 @file{LibreOffice} and @samp{unoconv} converters.  @xref{Configuring a
10986 document converter}.
10988 @subsubsection Automatically exporting to other formats
10989 @anchor{x-export-to-other-formats}
10991 @vindex org-export-odt-preferred-output-format
10992 Very often, you will find yourself exporting to ODT format, only to
10993 immediately save the exported document to other formats like @samp{doc},
10994 @samp{docx}, @samp{rtf}, @samp{pdf} etc.  In such cases, you can specify your
10995 preferred output format by customizing the variable
10996 @code{org-export-odt-preferred-output-format}.  This way, the export commands
10997 (@pxref{x-export-to-odt,,Exporting to ODT}) can be extended to export to a
10998 format that is of immediate interest to you.
11000 @subsubsection Converting between document formats
11001 @anchor{x-convert-to-other-formats}
11003 There are many document converters in the wild which support conversion to
11004 and from various file formats, including, but not limited to the
11005 ODT format.  LibreOffice converter, mentioned above, is one such
11006 converter.  Once a converter is configured, you can interact with it using
11007 the following command.
11009 @vindex org-export-odt-convert
11010 @table @kbd
11012 @item M-x org-export-odt-convert
11013 Convert an existing document from one format to another.  With a prefix
11014 argument, also open the newly produced file.
11015 @end table
11017 @node Applying custom styles, Links in ODT export, Extending ODT export, OpenDocument Text export
11018 @subsection Applying custom styles
11019 @cindex styles, custom
11020 @cindex template, custom
11022 The ODT exporter ships with a set of OpenDocument styles
11023 (@pxref{Working with OpenDocument style files}) that ensure a well-formatted
11024 output.  These factory styles, however, may not cater to your specific
11025 tastes.  To customize the output, you can either modify the above styles
11026 files directly, or generate the required styles using an application like
11027 LibreOffice.  The latter method is suitable for expert and non-expert
11028 users alike, and is described here.
11030 @subsubsection Applying custom styles: the easy way
11032 @enumerate
11033 @item
11034 Create a sample @file{example.org} file with the below settings and export it
11035 to ODT format.
11037 @example
11038 #+OPTIONS: H:10 num:t
11039 @end example
11041 @item
11042 Open the above @file{example.odt} using LibreOffice.  Use the @file{Stylist}
11043 to locate the target styles---these typically have the @samp{Org} prefix---and
11044 modify those to your taste.  Save the modified file either as an
11045 OpenDocument Text (@file{.odt}) or OpenDocument Template (@file{.ott}) file.
11047 @item
11048 @cindex #+ODT_STYLES_FILE
11049 @vindex org-export-odt-styles-file
11050 Customize the variable @code{org-export-odt-styles-file} and point it to the
11051 newly created file.  For additional configuration options
11052 @pxref{x-overriding-factory-styles,,Overriding factory styles}.
11054 If you would like to choose a style on a per-file basis, you can use the
11055 @code{#+ODT_STYLES_FILE} option.  A typical setting will look like
11057 @example
11058 #+ODT_STYLES_FILE: "/path/to/example.ott"
11059 @end example
11063 @example
11064 #+ODT_STYLES_FILE: ("/path/to/file.ott" ("styles.xml" "image/hdr.png"))
11065 @end example
11067 @end enumerate
11069 @subsubsection Using third-party styles and templates
11071 You can use third-party styles and templates for customizing your output.
11072 This will produce the desired output only if the template provides all
11073 style names that the @samp{ODT} exporter relies on.  Unless this condition is
11074 met, the output is going to be less than satisfactory.  So it is highly
11075 recommended that you only work with templates that are directly derived from
11076 the factory settings.
11078 @node Links in ODT export, Tables in ODT export, Applying custom styles, OpenDocument Text export
11079 @subsection Links in ODT export
11080 @cindex links, in ODT export
11082 ODT exporter creates native cross-references for internal links.  It creates
11083 Internet-style links for all other links.
11085 A link with no description and destined to a regular (un-itemized) outline
11086 heading is replaced with a cross-reference and section number of the heading.
11088 A @samp{\ref@{label@}}-style reference to an image, table etc. is replaced
11089 with a cross-reference and sequence number of the labeled entity.
11090 @xref{Labels and captions in ODT export}.
11092 @node Tables in ODT export, Images in ODT export, Links in ODT export, OpenDocument Text export
11093 @subsection Tables in ODT export
11094 @cindex tables, in ODT export
11096 Export of native Org mode tables (@pxref{Tables}) and simple @file{table.el}
11097 tables is supported.  However, export of complex @file{table.el} tables---tables
11098 that have column or row spans---is not supported.  Such tables are
11099 stripped from the exported document.
11101 By default, a table is exported with top and bottom frames and with rules
11102 separating row and column groups (@pxref{Column groups}).  Furthermore, all
11103 tables are typeset to occupy the same width.  If the table specifies
11104 alignment and relative width for its columns (@pxref{Column width and
11105 alignment}) then these are honored on export.@footnote{The column widths are
11106 interpreted as weighted ratios with the default weight being 1}
11108 @cindex #+ATTR_ODT
11109 You can control the width of the table by specifying @code{:rel-width}
11110 property using an @code{#+ATTR_ODT} line.
11112 For example, consider the following table which makes use of all the rules
11113 mentioned above.
11115 @example
11116 #+ATTR_ODT: :rel-width 50
11117 | Area/Month    |   Jan |   Feb |   Mar |   Sum |
11118 |---------------+-------+-------+-------+-------|
11119 | /             |     < |       |       |     < |
11120 | <l13>         |  <r5> |  <r5> |  <r5> |  <r6> |
11121 | North America |     1 |    21 |   926 |   948 |
11122 | Middle East   |     6 |    75 |   844 |   925 |
11123 | Asia Pacific  |     9 |    27 |   790 |   826 |
11124 |---------------+-------+-------+-------+-------|
11125 | Sum           |    16 |   123 |  2560 |  2699 |
11126 @end example
11128 On export, the table will occupy 50% of text area.  The columns will be sized
11129 (roughly) in the ratio of 13:5:5:5:6.  The first column will be left-aligned
11130 and rest of the columns will be right-aligned.  There will be vertical rules
11131 after separating the header and last columns from other columns.  There will
11132 be horizontal rules separating the header and last rows from other rows.
11134 If you are not satisfied with the above formatting options, you can create
11135 custom table styles and associate them with a table using the
11136 @code{#+ATTR_ODT} line.  @xref{Customizing tables in ODT export}.
11138 @node Images in ODT export, Math formatting in ODT export, Tables in ODT export, OpenDocument Text export
11139 @subsection Images in ODT export
11140 @cindex images, embedding in ODT
11141 @cindex embedding images in ODT
11143 @subsubheading Embedding images
11144 You can embed images within the exported document by providing a link to the
11145 desired image file with no link description.  For example, to embed
11146 @samp{img.png} do either of the following:
11148 @example
11149 [[file:img.png]]
11150 @end example
11152 @example
11153 [[./img.png]]
11154 @end example
11156 @subsubheading Embedding clickable images
11157 You can create clickable images by providing a link whose description is a
11158 link to an image file.  For example, to embed a image
11159 @file{org-mode-unicorn.png} which when clicked jumps to
11160 @uref{http://Orgmode.org} website, do the following
11162 @example
11163 [[http://orgmode.org][./org-mode-unicorn.png]]
11164 @end example
11166 @subsubheading Sizing and scaling of embedded images
11168 @cindex #+ATTR_ODT
11169 You can control the size and scale of the embedded images using the
11170 @code{#+ATTR_ODT} attribute.
11172 @cindex identify, ImageMagick
11173 @vindex org-export-odt-pixels-per-inch
11174 The exporter specifies the desired size of the image in the final document in
11175 units of centimeters.  In order to scale the embedded images, the exporter
11176 queries for pixel dimensions of the images using one of a) ImageMagick's
11177 @file{identify} program or b) Emacs `create-image' and `image-size'
11178 APIs.@footnote{Use of @file{ImageMagick} is only desirable.  However, if you
11179 routinely produce documents that have large images or you export your Org
11180 files that has images using a Emacs batch script, then the use of
11181 @file{ImageMagick} is mandatory.} The pixel dimensions are subsequently
11182 converted in to units of centimeters using
11183 @code{org-export-odt-pixels-per-inch}.  The default value of this variable is
11184 set to @code{display-pixels-per-inch}.  You can tweak this variable to
11185 achieve the best results.
11187 The examples below illustrate the various possibilities.
11189 @table @asis
11190 @item Explicitly size the image
11191 To embed @file{img.png} as a 10 cm x 10 cm image, do the following:
11193 @example
11194 #+ATTR_ODT: :width 10 :height 10
11195 [[./img.png]]
11196 @end example
11198 @item Scale the image
11199 To embed @file{img.png} at half its size, do the following:
11201 @example
11202 #+ATTR_ODT: :scale 0.5
11203 [[./img.png]]
11204 @end example
11206 @item Scale the image to a specific width
11207 To embed @file{img.png} with a width of 10 cm while retaining the original
11208 height:width ratio, do the following:
11210 @example
11211 #+ATTR_ODT: :width 10
11212 [[./img.png]]
11213 @end example
11215 @item Scale the image to a specific height
11216 To embed @file{img.png} with a height of 10 cm while retaining the original
11217 height:width ratio, do the following
11219 @example
11220 #+ATTR_ODT: :height 10
11221 [[./img.png]]
11222 @end example
11223 @end table
11225 @subsubheading Anchoring of images
11227 @cindex #+ATTR_ODT
11228 You can control the manner in which an image is anchored by setting the
11229 @code{:anchor} property of it's @code{#+ATTR_ODT} line.  You can specify one
11230 of the the following three values for the @code{:anchor} property:
11231 @samp{"as-char"}, @samp{"paragraph"} and @samp{"page"}.
11233 To create an image that is anchored to a page, do the following:
11234 @example
11235 #+ATTR_ODT: :anchor "page"
11236 [[./img.png]]
11237 @end example
11239 @node Math formatting in ODT export, Labels and captions in ODT export, Images in ODT export, OpenDocument Text export
11240 @subsection Math formatting in ODT export
11242 The ODT exporter has special support for handling math.
11244 @menu
11245 * Working with @LaTeX{} math snippets::  How to embed @LaTeX{} math fragments
11246 * Working with MathML or OpenDocument formula files::  How to embed equations in native format
11247 @end menu
11249 @node Working with @LaTeX{} math snippets, Working with MathML or OpenDocument formula files, Math formatting in ODT export, Math formatting in ODT export
11250 @subsubsection Working with @LaTeX{} math snippets
11252 @LaTeX{} math snippets (@pxref{@LaTeX{} fragments}) can be embedded in the ODT
11253 document in one of the following ways:
11255 @cindex MathML
11256 @enumerate
11257 @item MathML
11259 This option is activated on a per-file basis with
11261 @example
11262 #+OPTIONS: LaTeX:t
11263 @end example
11265 With this option, @LaTeX{} fragments are first converted into MathML
11266 fragments using an external @LaTeX{}-to-MathML converter program.  The
11267 resulting MathML fragments are then embedded as an OpenDocument Formula in
11268 the exported document.
11270 @vindex org-latex-to-mathml-convert-command
11271 @vindex org-latex-to-mathml-jar-file
11273 You can specify the @LaTeX{}-to-MathML converter by customizing the variables
11274 @code{org-latex-to-mathml-convert-command} and
11275 @code{org-latex-to-mathml-jar-file}.
11277 If you prefer to use @file{MathToWeb}@footnote{See
11278 @uref{http://www.mathtoweb.com/cgi-bin/mathtoweb_home.pl, MathToWeb}} as your
11279 converter, you can configure the above variables as shown below.
11281 @lisp
11282 (setq org-latex-to-mathml-convert-command
11283       "java -jar %j -unicode -force -df %o %I"
11284       org-latex-to-mathml-jar-file
11285       "/path/to/mathtoweb.jar")
11286 @end lisp
11288 You can use the following commands to quickly verify the reliability of
11289 the @LaTeX{}-to-MathML converter.
11291 @table @kbd
11293 @item M-x org-export-as-odf
11294 Convert a @LaTeX{} math snippet to an OpenDocument formula (@file{.odf}) file.
11296 @item M-x org-export-as-odf-and-open
11297 Convert a @LaTeX{} math snippet to an OpenDocument formula (@file{.odf}) file
11298 and open the formula file with the system-registered application.
11299 @end table
11301 @cindex dvipng
11302 @item PNG images
11304 This option is activated on a per-file basis with
11306 @example
11307 #+OPTIONS: LaTeX:dvipng
11308 @end example
11310 With this option, @LaTeX{} fragments are processed into PNG images and the
11311 resulting images are embedded in the exported document.  This method requires
11312 that the @file{dvipng} program be available on your system.
11313 @end enumerate
11315 @node Working with MathML or OpenDocument formula files,  , Working with @LaTeX{} math snippets, Math formatting in ODT export
11316 @subsubsection Working with MathML or OpenDocument formula files
11318 For various reasons, you may find embedding @LaTeX{} math snippets in an
11319 ODT document less than reliable.  In that case, you can embed a
11320 math equation by linking to its MathML (@file{.mml}) source or its
11321 OpenDocument formula (@file{.odf}) file as shown below:
11323 @example
11324 [[./equation.mml]]
11325 @end example
11329 @example
11330 [[./equation.odf]]
11331 @end example
11333 @node Labels and captions in ODT export, Literal examples in ODT export, Math formatting in ODT export, OpenDocument Text export
11334 @subsection Labels and captions in ODT export
11336 You can label and caption various category of objects---an inline image, a
11337 table, a @LaTeX{} fragment or a Math formula---using @code{#+LABEL} and
11338 @code{#+CAPTION} lines.  @xref{Images and tables}.  ODT exporter enumerates
11339 each labeled or captioned object of a given category separately.  As a
11340 result, each such object is assigned a sequence number based on order of it's
11341 appearance in the Org file.
11343 In the exported document, a user-provided caption is augmented with the
11344 category and sequence number.  Consider the following inline image in an Org
11345 file.
11347 @example
11348 #+CAPTION: Bell curve
11349 #+LABEL:   fig:SED-HR4049
11350 [[./img/a.png]]
11351 @end example
11353 It could be rendered as shown below in the exported document.
11355 @example
11356 Figure 2: Bell curve
11357 @end example
11359 @vindex org-export-odt-category-strings
11360 You can modify the category component of the caption by customizing the
11361 variable @code{org-export-odt-category-strings}.  For example, to tag all
11362 embedded images with the string @samp{Illustration} (instead of the default
11363 @samp{Figure}) use the following setting.
11365 @lisp
11366 (setq org-export-odt-category-strings
11367       '(("en" "Table" "Illustration" "Equation" "Equation")))
11368 @end lisp
11370 With this, previous image will be captioned as below in the exported
11371 document.
11373 @example
11374 Illustration 2: Bell curve
11375 @end example
11377 @node Literal examples in ODT export, Advanced topics in ODT export, Labels and captions in ODT export, OpenDocument Text export
11378 @subsection Literal examples in ODT export
11380 Export of literal examples (@pxref{Literal examples}) with full fontification
11381 is supported.  Internally, the exporter relies on @file{htmlfontify.el} to
11382 generate all style definitions needed for a fancy listing.@footnote{Your
11383 @file{htmlfontify.el} library must at least be at Emacs 24.1 levels for
11384 fontification to be turned on.}  The auto-generated styles have @samp{OrgSrc}
11385 as prefix and inherit their color from the faces used by Emacs
11386 @code{font-lock} library for the source language.
11388 @vindex org-export-odt-fontify-srcblocks
11389 If you prefer to use your own custom styles for fontification, you can do so
11390 by customizing the variable
11391 @code{org-export-odt-create-custom-styles-for-srcblocks}.
11393 @vindex org-export-odt-create-custom-styles-for-srcblocks
11394 You can turn off fontification of literal examples by customizing the
11395 variable @code{org-export-odt-fontify-srcblocks}.
11397 @node Advanced topics in ODT export,  , Literal examples in ODT export, OpenDocument Text export
11398 @subsection Advanced topics in ODT export
11400 If you rely heavily on ODT export, you may want to exploit the full
11401 set of features that the exporter offers.  This section describes features
11402 that would be of interest to power users.
11404 @menu
11405 * Configuring a document converter::  How to register a document converter
11406 * Working with OpenDocument style files::  Explore the internals
11407 * Creating one-off styles::     How to produce custom highlighting etc
11408 * Customizing tables in ODT export::  How to define and use Table templates
11409 * Validating OpenDocument XML::  How to debug corrupt OpenDocument files
11410 @end menu
11412 @node Configuring a document converter, Working with OpenDocument style files, Advanced topics in ODT export, Advanced topics in ODT export
11413 @subsubsection Configuring a document converter
11414 @cindex convert
11415 @cindex doc, docx, rtf
11416 @cindex converter
11418 The ODT exporter can work with popular converters with little or no
11419 extra configuration from your side. @xref{Extending ODT export}.
11420 If you are using a converter that is not supported by default or if you would
11421 like to tweak the default converter settings, proceed as below.
11423 @enumerate
11424 @item Register the converter
11426 @vindex org-export-odt-convert-processes
11427 Name your converter and add it to the list of known converters by customizing
11428 the variable @code{org-export-odt-convert-processes}.  Also specify how the
11429 converter can be invoked via command-line to effect the conversion.
11431 @item Configure its capabilities
11433 @vindex org-export-odt-convert-capabilities
11434 @anchor{x-odt-converter-capabilities}
11435 Specify the set of formats the converter can handle by customizing the
11436 variable @code{org-export-odt-convert-capabilities}.  Use the default value
11437 for this variable as a guide for configuring your converter.  As suggested by
11438 the default setting, you can specify the full set of formats supported by the
11439 converter and not limit yourself to specifying formats that are related to
11440 just the OpenDocument Text format.
11442 @item Choose the converter
11444 @vindex org-export-odt-convert-process
11445 Select the newly added converter as the preferred one by customizing the
11446 variable @code{org-export-odt-convert-process}.
11447 @end enumerate
11449 @node Working with OpenDocument style files, Creating one-off styles, Configuring a document converter, Advanced topics in ODT export
11450 @subsubsection Working with OpenDocument style files
11451 @cindex styles, custom
11452 @cindex template, custom
11454 This section explores the internals of the ODT exporter and the
11455 means by which it produces styled documents.  Read this section if you are
11456 interested in exploring the automatic and custom OpenDocument styles used by
11457 the exporter.
11459 @anchor{x-factory-styles}
11460 @subsubheading Factory styles
11462 The ODT exporter relies on two files for generating its output.
11463 These files are bundled with the distribution under the directory pointed to
11464 by the variable @code{org-odt-styles-dir}.  The two files are:
11466 @itemize
11467 @anchor{x-orgodtstyles-xml}
11468 @item
11469 @file{OrgOdtStyles.xml}
11471 This file contributes to the @file{styles.xml} file of the final @samp{ODT}
11472 document.  This file gets modified for the following purposes:
11473 @enumerate
11475 @item
11476 To control outline numbering based on user settings.
11478 @item
11479 To add styles generated by @file{htmlfontify.el} for fontification of code
11480 blocks.
11481 @end enumerate
11483 @anchor{x-orgodtcontenttemplate-xml}
11484 @item
11485 @file{OrgOdtContentTemplate.xml}
11487 This file contributes to the @file{content.xml} file of the final @samp{ODT}
11488 document.  The contents of the Org outline are inserted between the
11489 @samp{<office:text>}@dots{}@samp{</office:text>} elements of this file.
11491 Apart from serving as a template file for the final @file{content.xml}, the
11492 file serves the following purposes:
11493 @enumerate
11495 @item
11496 It contains automatic styles for formatting of tables which are referenced by
11497 the exporter.
11499 @item
11500 It contains @samp{<text:sequence-decl>}@dots{}@samp{</text:sequence-decl>}
11501 elements that control how various entities---tables, images, equations,
11502 etc.---are numbered.
11503 @end enumerate
11504 @end itemize
11506 @anchor{x-overriding-factory-styles}
11507 @subsubheading Overriding factory styles
11508 The following two variables control the location from which the ODT
11509 exporter picks up the custom styles and content template files.  You can
11510 customize these variables to override the factory styles used by the
11511 exporter.
11513 @itemize
11514 @anchor{x-org-export-odt-styles-file}
11515 @item
11516 @code{org-export-odt-styles-file}
11518 Use this variable to specify the @file{styles.xml} that will be used in the
11519 final output.  You can specify one of the following values:
11521 @enumerate
11522 @item A @file{styles.xml} file
11524 Use this file instead of the default @file{styles.xml}
11526 @item A @file{.odt} or @file{.ott} file
11528 Use the @file{styles.xml} contained in the specified OpenDocument Text or
11529 Template file
11531 @item A @file{.odt} or @file{.ott} file and a subset of files contained within them
11533 Use the @file{styles.xml} contained in the specified OpenDocument Text or
11534 Template file.  Additionally extract the specified member files and embed
11535 those within the final @samp{ODT} document.
11537 Use this option if the @file{styles.xml} file references additional files
11538 like header and footer images.
11540 @item @code{nil}
11542 Use the default @file{styles.xml}
11543 @end enumerate
11545 @anchor{x-org-export-odt-content-template-file}
11546 @item
11547 @code{org-export-odt-content-template-file}
11549 Use this variable to specify the blank @file{content.xml} that will be used
11550 in the final output.
11551 @end itemize
11553 @node Creating one-off styles, Customizing tables in ODT export, Working with OpenDocument style files, Advanced topics in ODT export
11554 @subsubsection Creating one-off styles
11556 There are times when you would want one-off formatting in the exported
11557 document.  You can achieve this by embedding raw OpenDocument XML in the Org
11558 file.  The use of this feature is better illustrated with couple of examples.
11560 @enumerate
11561 @item Embedding ODT tags as part of regular text
11563 You can include simple OpenDocument tags by prefixing them with
11564 @samp{@@}.  For example, to highlight a region of text do the following:
11566 @example
11567 @@<text:span text:style-name="Highlight">This is a
11568 highlighted text@@</text:span>.  But this is a
11569 regular text.
11570 @end example
11572 @strong{Hint:} To see the above example in action, edit your
11573 @file{styles.xml} (@pxref{x-orgodtstyles-xml,,Factory styles}) and add a
11574 custom @samp{Highlight} style as shown below.
11576 @example
11577 <style:style style:name="Highlight" style:family="text">
11578   <style:text-properties fo:background-color="#ff0000"/>
11579 </style:style>
11580 @end example
11582 @item Embedding a one-line OpenDocument XML
11584 You can add a simple OpenDocument one-liner using the @code{#+ODT:}
11585 directive.  For example, to force a page break do the following:
11587 @example
11588 #+ODT: <text:p text:style-name="PageBreak"/>
11589 @end example
11591 @strong{Hint:} To see the above example in action, edit your
11592 @file{styles.xml} (@pxref{x-orgodtstyles-xml,,Factory styles}) and add a
11593 custom @samp{PageBreak} style as shown below.
11595 @example
11596 <style:style style:name="PageBreak" style:family="paragraph"
11597              style:parent-style-name="Text_20_body">
11598   <style:paragraph-properties fo:break-before="page"/>
11599 </style:style>
11600 @end example
11602 @item Embedding a block of OpenDocument XML
11604 You can add a large block of OpenDocument XML using the
11605 @code{#+BEGIN_ODT}@dots{}@code{#+END_ODT} construct.
11607 For example, to create a one-off paragraph that uses bold text, do the
11608 following:
11610 @example
11611 #+BEGIN_ODT
11612 <text:p text:style-name="Text_20_body_20_bold">
11613 This paragraph is specially formatted and uses bold text.
11614 </text:p>
11615 #+END_ODT
11616 @end example
11618 @end enumerate
11620 @node Customizing tables in ODT export, Validating OpenDocument XML, Creating one-off styles, Advanced topics in ODT export
11621 @subsubsection Customizing tables in ODT export
11622 @cindex tables, in ODT export
11624 @cindex #+ATTR_ODT
11625 You can override the default formatting of the table by specifying a custom
11626 table style with the @code{#+ATTR_ODT} line.  For a discussion on default
11627 formatting of tables @pxref{Tables in ODT export}.
11629 This feature closely mimics the way table templates are defined in the
11630 OpenDocument-v1.2
11631 specification.@footnote{@url{http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html,
11632 OpenDocument-v1.2 Specification}}
11636 @subsubheading Custom table styles: an illustration
11638 To have a quick preview of this feature, install the below setting and export
11639 the table that follows.
11641 @lisp
11642 (setq org-export-odt-table-styles
11643       (append org-export-odt-table-styles
11644               '(("TableWithHeaderRowAndColumn" "Custom"
11645                  ((use-first-row-styles . t)
11646                   (use-first-column-styles . t)))
11647                 ("TableWithFirstRowandLastRow" "Custom"
11648                  ((use-first-row-styles . t)
11649                   (use-last-row-styles . t))))))
11650 @end lisp
11652 @example
11653 #+ATTR_ODT: :style "TableWithHeaderRowAndColumn"
11654 | Name  | Phone | Age |
11655 | Peter |  1234 |  17 |
11656 | Anna  |  4321 |  25 |
11657 @end example
11659 In the above example, you used a template named @samp{Custom} and installed
11660 two table styles with the names @samp{TableWithHeaderRowAndColumn} and
11661 @samp{TableWithFirstRowandLastRow}.  (@strong{Important:} The OpenDocument
11662 styles needed for producing the above template have been pre-defined for you.
11663 These styles are available under the section marked @samp{Custom Table
11664 Template} in @file{OrgOdtContentTemplate.xml}
11665 (@pxref{x-orgodtcontenttemplate-xml,,Factory styles}).  If you need
11666 additional templates you have to define these styles yourselves.
11668 @subsubheading Custom table styles: the nitty-gritty
11669 To use this feature proceed as follows:
11671 @enumerate
11672 @item
11673 Create a table template@footnote{See the @code{<table:table-template>}
11674 element of the OpenDocument-v1.2 specification}
11676 A table template is nothing but a set of @samp{table-cell} and
11677 @samp{paragraph} styles for each of the following table cell categories:
11679 @itemize @minus
11680 @item Body
11681 @item First column
11682 @item Last column
11683 @item First row
11684 @item Last row
11685 @item Even row
11686 @item Odd row
11687 @item Even column
11688 @item Odd Column
11689 @end itemize
11691 The names for the above styles must be chosen based on the name of the table
11692 template using a well-defined convention.
11694 The naming convention is better illustrated with an example.  For a table
11695 template with the name @samp{Custom}, the needed style names are listed in
11696 the following table.
11698 @multitable  {Table cell type} {CustomEvenColumnTableCell} {CustomEvenColumnTableParagraph}
11699 @headitem Table cell type
11700 @tab @code{table-cell} style
11701 @tab @code{paragraph} style
11702 @item
11703 @tab
11704 @tab
11705 @item Body
11706 @tab @samp{CustomTableCell}
11707 @tab @samp{CustomTableParagraph}
11708 @item First column
11709 @tab @samp{CustomFirstColumnTableCell}
11710 @tab @samp{CustomFirstColumnTableParagraph}
11711 @item Last column
11712 @tab @samp{CustomLastColumnTableCell}
11713 @tab @samp{CustomLastColumnTableParagraph}
11714 @item First row
11715 @tab @samp{CustomFirstRowTableCell}
11716 @tab @samp{CustomFirstRowTableParagraph}
11717 @item Last row
11718 @tab @samp{CustomLastRowTableCell}
11719 @tab @samp{CustomLastRowTableParagraph}
11720 @item Even row
11721 @tab @samp{CustomEvenRowTableCell}
11722 @tab @samp{CustomEvenRowTableParagraph}
11723 @item Odd row
11724 @tab @samp{CustomOddRowTableCell}
11725 @tab @samp{CustomOddRowTableParagraph}
11726 @item Even column
11727 @tab @samp{CustomEvenColumnTableCell}
11728 @tab @samp{CustomEvenColumnTableParagraph}
11729 @item Odd column
11730 @tab @samp{CustomOddColumnTableCell}
11731 @tab @samp{CustomOddColumnTableParagraph}
11732 @end multitable
11734 To create a table template with the name @samp{Custom}, define the above
11735 styles in the
11736 @code{<office:automatic-styles>}...@code{</office:automatic-styles>} element
11737 of the content template file (@pxref{x-orgodtcontenttemplate-xml,,Factory
11738 styles}).
11740 @item
11741 Define a table style@footnote{See the attributes @code{table:template-name},
11742 @code{table:use-first-row-styles}, @code{table:use-last-row-styles},
11743 @code{table:use-first-column-styles}, @code{table:use-last-column-styles},
11744 @code{table:use-banding-rows-styles}, and
11745 @code{table:use-banding-column-styles} of the @code{<table:table>} element in
11746 the OpenDocument-v1.2 specification}
11748 @vindex org-export-odt-table-styles
11749 To define a table style, create an entry for the style in the variable
11750 @code{org-export-odt-table-styles} and specify the following:
11752 @itemize @minus
11753 @item the name of the table template created in step (1)
11754 @item the set of cell styles in that template that are to be activated
11755 @end itemize
11757 For example, the entry below defines two different table styles
11758 @samp{TableWithHeaderRowAndColumn} and @samp{TableWithFirstRowandLastRow}
11759 based on the same template @samp{Custom}.  The styles achieve their intended
11760 effect by selectively activating the individual cell styles in that template.
11762 @lisp
11763 (setq org-export-odt-table-styles
11764       (append org-export-odt-table-styles
11765               '(("TableWithHeaderRowAndColumn" "Custom"
11766                  ((use-first-row-styles . t)
11767                   (use-first-column-styles . t)))
11768                 ("TableWithFirstRowandLastRow" "Custom"
11769                  ((use-first-row-styles . t)
11770                   (use-last-row-styles . t))))))
11771 @end lisp
11773 @item
11774 Associate a table with the table style
11776 To do this, specify the table style created in step (2) as part of
11777 the @code{ATTR_ODT} line as shown below.
11779 @example
11780 #+ATTR_ODT: :style "TableWithHeaderRowAndColumn"
11781 | Name  | Phone | Age |
11782 | Peter |  1234 |  17 |
11783 | Anna  |  4321 |  25 |
11784 @end example
11785 @end enumerate
11787 @node Validating OpenDocument XML,  , Customizing tables in ODT export, Advanced topics in ODT export
11788 @subsubsection Validating OpenDocument XML
11790 Occasionally, you will discover that the document created by the
11791 ODT exporter cannot be opened by your favorite application.  One of
11792 the common reasons for this is that the @file{.odt} file is corrupt.  In such
11793 cases, you may want to validate the document against the OpenDocument RELAX
11794 NG Compact Syntax (RNC) schema.
11796 For de-compressing the @file{.odt} file@footnote{@file{.odt} files are
11797 nothing but @samp{zip} archives}: @inforef{File Archives,,emacs}.  For
11798 general help with validation (and schema-sensitive editing) of XML files:
11799 @inforef{Introduction,,nxml-mode}.
11801 @vindex org-export-odt-schema-dir
11802 If you have ready access to OpenDocument @file{.rnc} files and the needed
11803 schema-locating rules in a single folder, you can customize the variable
11804 @code{org-export-odt-schema-dir} to point to that directory.  The
11805 ODT exporter will take care of updating the
11806 @code{rng-schema-locating-files} for you.
11808 @c end opendocument
11810 @node iCalendar export,  , OpenDocument Text export, Exporting
11811 @section iCalendar export
11812 @cindex iCalendar export
11814 @vindex org-icalendar-include-todo
11815 @vindex org-icalendar-use-deadline
11816 @vindex org-icalendar-use-scheduled
11817 @vindex org-icalendar-categories
11818 @vindex org-icalendar-alarm-time
11819 Some people use Org mode for keeping track of projects, but still prefer a
11820 standard calendar application for anniversaries and appointments.  In this
11821 case it can be useful to show deadlines and other time-stamped items in Org
11822 files in the calendar application.  Org mode can export calendar information
11823 in the standard iCalendar format.  If you also want to have TODO entries
11824 included in the export, configure the variable
11825 @code{org-icalendar-include-todo}.  Plain timestamps are exported as VEVENT,
11826 and TODO items as VTODO@.  It will also create events from deadlines that are
11827 in non-TODO items.  Deadlines and scheduling dates in TODO items will be used
11828 to set the start and due dates for the TODO entry@footnote{See the variables
11829 @code{org-icalendar-use-deadline} and @code{org-icalendar-use-scheduled}.}.
11830 As categories, it will use the tags locally defined in the heading, and the
11831 file/tree category@footnote{To add inherited tags or the TODO state,
11832 configure the variable @code{org-icalendar-categories}.}.  See the variable
11833 @code{org-icalendar-alarm-time} for a way to assign alarms to entries with a
11834 time.
11836 @vindex org-icalendar-store-UID
11837 @cindex property, ID
11838 The iCalendar standard requires each entry to have a globally unique
11839 identifier (UID).  Org creates these identifiers during export.  If you set
11840 the variable @code{org-icalendar-store-UID}, the UID will be stored in the
11841 @code{:ID:} property of the entry and re-used next time you report this
11842 entry.  Since a single entry can give rise to multiple iCalendar entries (as
11843 a timestamp, a deadline, a scheduled item, and as a TODO item), Org adds
11844 prefixes to the UID, depending on what triggered the inclusion of the entry.
11845 In this way the UID remains unique, but a synchronization program can still
11846 figure out from which entry all the different instances originate.
11848 @table @kbd
11849 @orgcmd{C-c C-e i,org-export-icalendar-this-file}
11850 Create iCalendar entries for the current file and store them in the same
11851 directory, using a file extension @file{.ics}.
11852 @orgcmd{C-c C-e I, org-export-icalendar-all-agenda-files}
11853 @vindex org-agenda-files
11854 Like @kbd{C-c C-e i}, but do this for all files in
11855 @code{org-agenda-files}.  For each of these files, a separate iCalendar
11856 file will be written.
11857 @orgcmd{C-c C-e c,org-export-icalendar-combine-agenda-files}
11858 @vindex org-combined-agenda-icalendar-file
11859 Create a single large iCalendar file from all files in
11860 @code{org-agenda-files} and write it to the file given by
11861 @code{org-combined-agenda-icalendar-file}.
11862 @end table
11864 @vindex org-use-property-inheritance
11865 @vindex org-icalendar-include-body
11866 @cindex property, SUMMARY
11867 @cindex property, DESCRIPTION
11868 @cindex property, LOCATION
11869 The export will honor SUMMARY, DESCRIPTION and LOCATION@footnote{The LOCATION
11870 property can be inherited from higher in the hierarchy if you configure
11871 @code{org-use-property-inheritance} accordingly.} properties if the selected
11872 entries have them.  If not, the summary will be derived from the headline,
11873 and the description from the body (limited to
11874 @code{org-icalendar-include-body} characters).
11876 How this calendar is best read and updated, depends on the application
11877 you are using.  The FAQ covers this issue.
11879 @node Publishing, Working With Source Code, Exporting, Top
11880 @chapter Publishing
11881 @cindex publishing
11883 Org includes a publishing management system that allows you to configure
11884 automatic HTML conversion of @emph{projects} composed of interlinked org
11885 files.  You can also configure Org to automatically upload your exported HTML
11886 pages and related attachments, such as images and source code files, to a web
11887 server.
11889 You can also use Org to convert files into PDF, or even combine HTML and PDF
11890 conversion so that files are available in both formats on the server.
11892 Publishing has been contributed to Org by David O'Toole.
11894 @menu
11895 * Configuration::               Defining projects
11896 * Uploading files::             How to get files up on the server
11897 * Sample configuration::        Example projects
11898 * Triggering publication::      Publication commands
11899 @end menu
11901 @node Configuration, Uploading files, Publishing, Publishing
11902 @section Configuration
11904 Publishing needs significant configuration to specify files, destination
11905 and many other properties of a project.
11907 @menu
11908 * Project alist::               The central configuration variable
11909 * Sources and destinations::    From here to there
11910 * Selecting files::             What files are part of the project?
11911 * Publishing action::           Setting the function doing the publishing
11912 * Publishing options::          Tweaking HTML/@LaTeX{} export
11913 * Publishing links::            Which links keep working after publishing?
11914 * Sitemap::                     Generating a list of all pages
11915 * Generating an index::         An index that reaches across pages
11916 @end menu
11918 @node Project alist, Sources and destinations, Configuration, Configuration
11919 @subsection The variable @code{org-publish-project-alist}
11920 @cindex org-publish-project-alist
11921 @cindex projects, for publishing
11923 @vindex org-publish-project-alist
11924 Publishing is configured almost entirely through setting the value of one
11925 variable, called @code{org-publish-project-alist}.  Each element of the list
11926 configures one project, and may be in one of the two following forms:
11928 @lisp
11929    ("project-name" :property value :property value ...)
11930      @r{i.e., a well-formed property list with alternating keys and values}
11931 @r{or}
11932    ("project-name" :components ("project-name" "project-name" ...))
11934 @end lisp
11936 In both cases, projects are configured by specifying property values.  A
11937 project defines the set of files that will be published, as well as the
11938 publishing configuration to use when publishing those files.  When a project
11939 takes the second form listed above, the individual members of the
11940 @code{:components} property are taken to be sub-projects, which group
11941 together files requiring different publishing options.  When you publish such
11942 a ``meta-project'', all the components will also be published, in the
11943 sequence given.
11945 @node Sources and destinations, Selecting files, Project alist, Configuration
11946 @subsection Sources and destinations for files
11947 @cindex directories, for publishing
11949 Most properties are optional, but some should always be set.  In
11950 particular, Org needs to know where to look for source files,
11951 and where to put published files.
11953 @multitable @columnfractions 0.3 0.7
11954 @item @code{:base-directory}
11955 @tab Directory containing publishing source files
11956 @item @code{:publishing-directory}
11957 @tab Directory where output files will be published.  You can directly
11958 publish to a webserver using a file name syntax appropriate for
11959 the Emacs @file{tramp} package.  Or you can publish to a local directory and
11960 use external tools to upload your website (@pxref{Uploading files}).
11961 @item @code{:preparation-function}
11962 @tab Function or list of functions to be called before starting the
11963 publishing process, for example, to run @code{make} for updating files to be
11964 published.  The project property list is scoped into this call as the
11965 variable @code{project-plist}.
11966 @item @code{:completion-function}
11967 @tab Function or list of functions called after finishing the publishing
11968 process, for example, to change permissions of the resulting files.  The
11969 project property list is scoped into this call as the variable
11970 @code{project-plist}.
11971 @end multitable
11972 @noindent
11974 @node Selecting files, Publishing action, Sources and destinations, Configuration
11975 @subsection Selecting files
11976 @cindex files, selecting for publishing
11978 By default, all files with extension @file{.org} in the base directory
11979 are considered part of the project.  This can be modified by setting the
11980 properties
11981 @multitable @columnfractions 0.25 0.75
11982 @item @code{:base-extension}
11983 @tab Extension (without the dot!) of source files.  This actually is a
11984 regular expression.  Set this to the symbol @code{any} if you want to get all
11985 files in @code{:base-directory}, even without extension.
11987 @item @code{:exclude}
11988 @tab Regular expression to match file names that should not be
11989 published, even though they have been selected on the basis of their
11990 extension.
11992 @item @code{:include}
11993 @tab List of files to be included regardless of @code{:base-extension}
11994 and @code{:exclude}.
11996 @item @code{:recursive}
11997 @tab Non-nil means, check base-directory recursively for files to publish.
11998 @end multitable
12000 @node Publishing action, Publishing options, Selecting files, Configuration
12001 @subsection Publishing action
12002 @cindex action, for publishing
12004 Publishing means that a file is copied to the destination directory and
12005 possibly transformed in the process.  The default transformation is to export
12006 Org files as HTML files, and this is done by the function
12007 @code{org-html-publish-to-html} which calls the HTML exporter (@pxref{HTML
12008 export}).  But you also can publish your content as PDF files using
12009 @code{org-latex-publish-to-pdf}, or as @code{ascii}, @code{latin1} or
12010 @code{utf8} encoded files using the corresponding functions.  If you want to
12011 publish the Org file itself, but with @i{archived}, @i{commented}, and
12012 @i{tag-excluded} trees removed, use @code{org-org-publish-to-org} and set the
12013 parameters @code{:plain-source} and/or @code{:htmlized-source}.  This will
12014 produce @file{file.org} and @file{file.org.html} in the publishing
12015 directory@footnote{@file{file-source.org} and @file{file-source.org.html} if
12016 source and publishing directories are equal.  Note that with this kind of
12017 setup, you need to add @code{:exclude "-source\\.org"} to the project
12018 definition in @code{org-publish-project-alist} to prevent the published
12019 source files from being considered as new org files the next time the project
12020 is published.}.  Other files like images only need to be copied to the
12021 publishing destination; for this you may use @code{org-publish-attachment}.
12022 For non-Org files, you always need to specify the publishing function:
12024 @multitable @columnfractions 0.3 0.7
12025 @item @code{:publishing-function}
12026 @tab Function executing the publication of a file.  This may also be a
12027 list of functions, which will all be called in turn.
12028 @item @code{:plain-source}
12029 @tab Non-nil means, publish plain source.
12030 @item @code{:htmlized-source}
12031 @tab Non-nil means, publish htmlized source.
12032 @end multitable
12034 The function must accept three arguments: a property list containing at least
12035 a @code{:publishing-directory} property, the name of the file to be
12036 published, and the path to the publishing directory of the output file.  It
12037 should take the specified file, make the necessary transformation (if any)
12038 and place the result into the destination folder.
12040 @node Publishing options, Publishing links, Publishing action, Configuration
12041 @subsection Options for the HTML/@LaTeX{} exporters
12042 @cindex options, for publishing
12044 The property list can be used to set many export options for the HTML
12045 and @LaTeX{} exporters.  In most cases, these properties correspond to user
12046 variables in Org.  The table below lists these properties along
12047 with the variable they belong to.  See the documentation string for the
12048 respective variable for details.
12050 @vindex org-html-link-up
12051 @vindex org-html-link-home
12052 @vindex org-export-default-language
12053 @vindex org-display-custom-times
12054 @vindex org-export-headline-levels
12055 @vindex org-export-with-section-numbers
12056 @vindex org-export-section-number-format
12057 @vindex org-export-with-toc
12058 @vindex org-export-preserve-breaks
12059 @vindex org-export-with-archived-trees
12060 @vindex org-export-with-emphasize
12061 @vindex org-export-with-sub-superscripts
12062 @vindex org-export-with-special-strings
12063 @vindex org-export-with-footnotes
12064 @vindex org-export-with-drawers
12065 @vindex org-export-with-tags
12066 @vindex org-export-with-todo-keywords
12067 @vindex org-export-with-tasks
12068 @vindex org-export-with-done-tasks
12069 @vindex org-export-with-priority
12070 @vindex org-export-with-TeX-macros
12071 @vindex org-export-with-LaTeX-fragments
12072 @vindex org-export-skip-text-before-1st-heading
12073 @vindex org-export-with-fixed-width
12074 @vindex org-export-with-timestamps
12075 @vindex org-export-author-info
12076 @vindex org-export-email-info
12077 @vindex org-export-creator-info
12078 @vindex org-export-time-stamp-file
12079 @vindex org-export-with-tables
12080 @vindex org-export-highlight-first-table-line
12081 @vindex org-html-style-include-default
12082 @vindex org-html-style-include-scripts
12083 @vindex org-html-style
12084 @vindex org-html-style-extra
12085 @vindex org-html-link-org-files-as-html
12086 @vindex org-html-inline-images
12087 @vindex org-html-extension
12088 @vindex org-html-table-tag
12089 @vindex org-export-publishing-directory
12090 @vindex org-html-preamble
12091 @vindex org-html-postamble
12092 @vindex user-full-name
12093 @vindex user-mail-address
12094 @vindex org-export-select-tags
12095 @vindex org-export-exclude-tags
12097 @multitable @columnfractions 0.32 0.68
12098 @item @code{:link-up}               @tab @code{org-html-link-up}
12099 @item @code{:link-home}             @tab @code{org-html-link-home}
12100 @item @code{:language}              @tab @code{org-export-default-language}
12101 @item @code{:customtime}            @tab @code{org-display-custom-times}
12102 @item @code{:headline-levels}       @tab @code{org-export-headline-levels}
12103 @item @code{:section-numbers}       @tab @code{org-export-with-section-numbers}
12104 @item @code{:section-number-format} @tab @code{org-export-section-number-format}
12105 @item @code{:table-of-contents}     @tab @code{org-export-with-toc}
12106 @item @code{:preserve-breaks}       @tab @code{org-export-preserve-breaks}
12107 @item @code{:archived-trees}        @tab @code{org-export-with-archived-trees}
12108 @item @code{:emphasize}             @tab @code{org-export-with-emphasize}
12109 @item @code{:sub-superscript}       @tab @code{org-export-with-sub-superscripts}
12110 @item @code{:special-strings}       @tab @code{org-export-with-special-strings}
12111 @item @code{:footnotes}             @tab @code{org-export-with-footnotes}
12112 @item @code{:drawers}               @tab @code{org-export-with-drawers}
12113 @item @code{:tags}                  @tab @code{org-export-with-tags}
12114 @item @code{:todo-keywords}         @tab @code{org-export-with-todo-keywords}
12115 @item @code{:tasks}                 @tab @code{org-export-with-tasks}
12116 @item @code{:priority}              @tab @code{org-export-with-priority}
12117 @item @code{:TeX-macros}            @tab @code{org-export-with-TeX-macros}
12118 @item @code{:LaTeX-fragments}       @tab @code{org-export-with-LaTeX-fragments}
12119 @item @code{:latex-listings}        @tab @code{org-latex-listings}
12120 @item @code{:skip-before-1st-heading} @tab @code{org-export-skip-text-before-1st-heading}
12121 @item @code{:fixed-width}           @tab @code{org-export-with-fixed-width}
12122 @item @code{:timestamps}            @tab @code{org-export-with-timestamps}
12123 @item @code{:author}                @tab @code{user-full-name}
12124 @item @code{:email}                 @tab @code{user-mail-address} : @code{addr;addr;..}
12125 @item @code{:author-info}           @tab @code{org-export-author-info}
12126 @item @code{:email-info}            @tab @code{org-export-email-info}
12127 @item @code{:creator-info}          @tab @code{org-export-creator-info}
12128 @item @code{:tables}                @tab @code{org-export-with-tables}
12129 @item @code{:table-auto-headline}   @tab @code{org-export-highlight-first-table-line}
12130 @item @code{:style-include-default} @tab @code{org-html-style-include-default}
12131 @item @code{:style-include-scripts} @tab @code{org-html-style-include-scripts}
12132 @item @code{:style}                 @tab @code{org-html-style}
12133 @item @code{:style-extra}           @tab @code{org-html-style-extra}
12134 @item @code{:convert-org-links}     @tab @code{org-html-link-org-files-as-html}
12135 @item @code{:inline-images}         @tab @code{org-html-inline-images}
12136 @item @code{:html-extension}        @tab @code{org-html-extension}
12137 @item @code{:html-preamble}         @tab @code{org-html-preamble}
12138 @item @code{:html-postamble}        @tab @code{org-html-postamble}
12139 @item @code{:xml-declaration}       @tab @code{org-html-xml-declaration}
12140 @item @code{:html-table-tag}        @tab @code{org-html-table-tag}
12141 @item @code{:publishing-directory}  @tab @code{org-export-publishing-directory}
12142 @item @code{:select-tags}           @tab @code{org-export-select-tags}
12143 @item @code{:exclude-tags}          @tab @code{org-export-exclude-tags}
12144 @item @code{:latex-image-options}   @tab @code{org-latex-image-default-option}
12145 @end multitable
12147 Most of the @code{org-export-with-*} variables have the same effect in
12148 both HTML and @LaTeX{} exporters, except for @code{:TeX-macros} and
12149 @code{:LaTeX-fragments} options, respectively @code{nil} and @code{t} in the
12150 @LaTeX{} export.  See @code{org-export-plist-vars} to check this list of
12151 options.
12155 @vindex org-publish-project-alist
12156 When a property is given a value in @code{org-publish-project-alist},
12157 its setting overrides the value of the corresponding user variable (if
12158 any) during publishing.  Options set within a file (@pxref{Export
12159 options}), however, override everything.
12161 @node Publishing links, Sitemap, Publishing options, Configuration
12162 @subsection Links between published files
12163 @cindex links, publishing
12165 To create a link from one Org file to another, you would use
12166 something like @samp{[[file:foo.org][The foo]]} or simply
12167 @samp{file:foo.org.} (@pxref{Hyperlinks}).  When published, this link
12168 becomes a link to @file{foo.html}.  In this way, you can interlink the
12169 pages of your "org web" project and the links will work as expected when
12170 you publish them to HTML@.  If you also publish the Org source file and want
12171 to link to that, use an @code{http:} link instead of a @code{file:} link,
12172 because @code{file:} links are converted to link to the corresponding
12173 @file{html} file.
12175 You may also link to related files, such as images.  Provided you are careful
12176 with relative file names, and provided you have also configured Org to upload
12177 the related files, these links will work too.  See @ref{Complex example}, for
12178 an example of this usage.
12180 Sometimes an Org file to be published may contain links that are
12181 only valid in your production environment, but not in the publishing
12182 location.  In this case, use the property
12184 @multitable @columnfractions 0.4 0.6
12185 @item @code{:link-validation-function}
12186 @tab Function to validate links
12187 @end multitable
12189 @noindent
12190 to define a function for checking link validity.  This function must
12191 accept two arguments, the file name and a directory relative to which
12192 the file name is interpreted in the production environment.  If this
12193 function returns @code{nil}, then the HTML generator will only insert a
12194 description into the HTML file, but no link.  One option for this
12195 function is @code{org-publish-validate-link} which checks if the given
12196 file is part of any project in @code{org-publish-project-alist}.
12198 @node Sitemap, Generating an index, Publishing links, Configuration
12199 @subsection Generating a sitemap
12200 @cindex sitemap, of published pages
12202 The following properties may be used to control publishing of
12203 a map of files for a given project.
12205 @multitable @columnfractions 0.35 0.65
12206 @item @code{:auto-sitemap}
12207 @tab When non-nil, publish a sitemap during @code{org-publish-current-project}
12208 or @code{org-publish-all}.
12210 @item @code{:sitemap-filename}
12211 @tab Filename for output of sitemap.  Defaults to @file{sitemap.org} (which
12212 becomes @file{sitemap.html}).
12214 @item @code{:sitemap-title}
12215 @tab Title of sitemap page.  Defaults to name of file.
12217 @item @code{:sitemap-function}
12218 @tab Plug-in function to use for generation of the sitemap.
12219 Defaults to @code{org-publish-org-sitemap}, which generates a plain list
12220 of links to all files in the project.
12222 @item @code{:sitemap-sort-folders}
12223 @tab Where folders should appear in the sitemap.  Set this to @code{first}
12224 (default) or @code{last} to display folders first or last,
12225 respectively.  Any other value will mix files and folders.
12227 @item @code{:sitemap-sort-files}
12228 @tab How the files are sorted in the site map.  Set this to
12229 @code{alphabetically} (default), @code{chronologically} or
12230 @code{anti-chronologically}.  @code{chronologically} sorts the files with
12231 older date first while @code{anti-chronologically} sorts the files with newer
12232 date first.  @code{alphabetically} sorts the files alphabetically.  The date of
12233 a file is retrieved with @code{org-publish-find-date}.
12235 @item @code{:sitemap-ignore-case}
12236 @tab Should sorting be case-sensitive?  Default @code{nil}.
12238 @item @code{:sitemap-file-entry-format}
12239 @tab With this option one can tell how a sitemap's entry is formatted in the
12240 sitemap.  This is a format string with some escape sequences: @code{%t} stands
12241 for the title of the file, @code{%a} stands for the author of the file and
12242 @code{%d} stands for the date of the file.  The date is retrieved with the
12243 @code{org-publish-find-date} function and formatted with
12244 @code{org-publish-sitemap-date-format}.  Default @code{%t}.
12246 @item @code{:sitemap-date-format}
12247 @tab Format string for the @code{format-time-string} function that tells how
12248 a sitemap entry's date is to be formatted.  This property bypasses
12249 @code{org-publish-sitemap-date-format} which defaults to @code{%Y-%m-%d}.
12251 @item @code{:sitemap-sans-extension}
12252 @tab When non-nil, remove filenames' extensions from the generated sitemap.
12253 Useful to have cool URIs (see @uref{http://www.w3.org/Provider/Style/URI}).
12254 Defaults to @code{nil}.
12256 @end multitable
12258 @node Generating an index,  , Sitemap, Configuration
12259 @subsection Generating an index
12260 @cindex index, in a publishing project
12262 Org mode can generate an index across the files of a publishing project.
12264 @multitable @columnfractions 0.25 0.75
12265 @item @code{:makeindex}
12266 @tab When non-nil, generate in index in the file @file{theindex.org} and
12267 publish it as @file{theindex.html}.
12268 @end multitable
12270 The file will be created when first publishing a project with the
12271 @code{:makeindex} set.  The file only contains a statement @code{#+INCLUDE:
12272 "theindex.inc"}.  You can then build around this include statement by adding
12273 a title, style information, etc.
12275 @node Uploading files, Sample configuration, Configuration, Publishing
12276 @section Uploading files
12277 @cindex rsync
12278 @cindex unison
12280 For those people already utilizing third party sync tools such as
12281 @command{rsync} or @command{unison}, it might be preferable not to use the built in
12282 @i{remote} publishing facilities of Org mode which rely heavily on
12283 Tramp.  Tramp, while very useful and powerful, tends not to be
12284 so efficient for multiple file transfer and has been known to cause problems
12285 under heavy usage.
12287 Specialized synchronization utilities offer several advantages.  In addition
12288 to timestamp comparison, they also do content and permissions/attribute
12289 checks.  For this reason you might prefer to publish your web to a local
12290 directory (possibly even @i{in place} with your Org files) and then use
12291 @file{unison} or @file{rsync} to do the synchronization with the remote host.
12293 Since Unison (for example) can be configured as to which files to transfer to
12294 a certain remote destination, it can greatly simplify the project publishing
12295 definition.  Simply keep all files in the correct location, process your Org
12296 files with @code{org-publish} and let the synchronization tool do the rest.
12297 You do not need, in this scenario, to include attachments such as @file{jpg},
12298 @file{css} or @file{gif} files in the project definition since the 3rd party
12299 tool syncs them.
12301 Publishing to a local directory is also much faster than to a remote one, so
12302 that you can afford more easily to republish entire projects.  If you set
12303 @code{org-publish-use-timestamps-flag} to @code{nil}, you gain the main
12304 benefit of re-including any changed external files such as source example
12305 files you might include with @code{#+INCLUDE:}.  The timestamp mechanism in
12306 Org is not smart enough to detect if included files have been modified.
12308 @node Sample configuration, Triggering publication, Uploading files, Publishing
12309 @section Sample configuration
12311 Below we provide two example configurations.  The first one is a simple
12312 project publishing only a set of Org files.  The second example is
12313 more complex, with a multi-component project.
12315 @menu
12316 * Simple example::              One-component publishing
12317 * Complex example::             A multi-component publishing example
12318 @end menu
12320 @node Simple example, Complex example, Sample configuration, Sample configuration
12321 @subsection Example: simple publishing configuration
12323 This example publishes a set of Org files to the @file{public_html}
12324 directory on the local machine.
12326 @lisp
12327 (setq org-publish-project-alist
12328       '(("org"
12329          :base-directory "~/org/"
12330          :publishing-directory "~/public_html"
12331          :section-numbers nil
12332          :table-of-contents nil
12333          :style "<link rel=\"stylesheet\"
12334                 href=\"../other/mystyle.css\"
12335                 type=\"text/css\"/>")))
12336 @end lisp
12338 @node Complex example,  , Simple example, Sample configuration
12339 @subsection Example: complex publishing configuration
12341 This more complicated example publishes an entire website, including
12342 Org files converted to HTML, image files, Emacs Lisp source code, and
12343 style sheets.  The publishing directory is remote and private files are
12344 excluded.
12346 To ensure that links are preserved, care should be taken to replicate
12347 your directory structure on the web server, and to use relative file
12348 paths.  For example, if your Org files are kept in @file{~/org} and your
12349 publishable images in @file{~/images}, you would link to an image with
12351 @example
12352 file:../images/myimage.png
12353 @end example
12355 On the web server, the relative path to the image should be the
12356 same.  You can accomplish this by setting up an "images" folder in the
12357 right place on the web server, and publishing images to it.
12359 @lisp
12360 (setq org-publish-project-alist
12361       '(("orgfiles"
12362           :base-directory "~/org/"
12363           :base-extension "org"
12364           :publishing-directory "/ssh:user@@host:~/html/notebook/"
12365           :publishing-function org-html-publish-to-html
12366           :exclude "PrivatePage.org"   ;; regexp
12367           :headline-levels 3
12368           :section-numbers nil
12369           :table-of-contents nil
12370           :style "<link rel=\"stylesheet\"
12371                   href=\"../other/mystyle.css\" type=\"text/css\"/>"
12372           :html-preamble t)
12374          ("images"
12375           :base-directory "~/images/"
12376           :base-extension "jpg\\|gif\\|png"
12377           :publishing-directory "/ssh:user@@host:~/html/images/"
12378           :publishing-function org-publish-attachment)
12380          ("other"
12381           :base-directory "~/other/"
12382           :base-extension "css\\|el"
12383           :publishing-directory "/ssh:user@@host:~/html/other/"
12384           :publishing-function org-publish-attachment)
12385          ("website" :components ("orgfiles" "images" "other"))))
12386 @end lisp
12388 @node Triggering publication,  , Sample configuration, Publishing
12389 @section Triggering publication
12391 Once properly configured, Org can publish with the following commands:
12393 @table @kbd
12394 @orgcmd{C-c C-e X,org-publish}
12395 Prompt for a specific project and publish all files that belong to it.
12396 @orgcmd{C-c C-e P,org-publish-current-project}
12397 Publish the project containing the current file.
12398 @orgcmd{C-c C-e F,org-publish-current-file}
12399 Publish only the current file.
12400 @orgcmd{C-c C-e E,org-publish-all}
12401 Publish every project.
12402 @end table
12404 @vindex org-publish-use-timestamps-flag
12405 Org uses timestamps to track when a file has changed.  The above functions
12406 normally only publish changed files.  You can override this and force
12407 publishing of all files by giving a prefix argument to any of the commands
12408 above, or by customizing the variable @code{org-publish-use-timestamps-flag}.
12409 This may be necessary in particular if files include other files via
12410 @code{#+SETUPFILE:} or @code{#+INCLUDE:}.
12412 @comment  node-name,  next,  previous,  up
12413 @comment Working With Source Code, Miscellaneous, Publishing, Top
12415 @node Working With Source Code, Miscellaneous, Publishing, Top
12416 @chapter Working with source code
12417 @cindex Schulte, Eric
12418 @cindex Davison, Dan
12419 @cindex source code, working with
12421 Source code can be included in Org mode documents using a @samp{src} block,
12422 e.g.:
12424 @example
12425 #+BEGIN_SRC emacs-lisp
12426   (defun org-xor (a b)
12427      "Exclusive or."
12428      (if a (not b) b))
12429 #+END_SRC
12430 @end example
12432 Org mode provides a number of features for working with live source code,
12433 including editing of code blocks in their native major-mode, evaluation of
12434 code blocks, converting code blocks into source files (known as @dfn{tangling}
12435 in literate programming), and exporting code blocks and their
12436 results in several formats.  This functionality was contributed by Eric
12437 Schulte and Dan Davison, and was originally named Org-babel.
12439 The following sections describe Org mode's code block handling facilities.
12441 @menu
12442 * Structure of code blocks::    Code block syntax described
12443 * Editing source code::         Language major-mode editing
12444 * Exporting code blocks::       Export contents and/or results
12445 * Extracting source code::      Create pure source code files
12446 * Evaluating code blocks::      Place results of evaluation in the Org mode buffer
12447 * Library of Babel::            Use and contribute to a library of useful code blocks
12448 * Languages::                   List of supported code block languages
12449 * Header arguments::            Configure code block functionality
12450 * Results of evaluation::       How evaluation results are handled
12451 * Noweb reference syntax::      Literate programming in Org mode
12452 * Key bindings and useful functions::  Work quickly with code blocks
12453 * Batch execution::             Call functions from the command line
12454 @end menu
12456 @comment  node-name,  next,  previous,  up
12457 @comment  Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
12459 @node Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
12460 @section Structure of code blocks
12461 @cindex code block, structure
12462 @cindex source code, block structure
12463 @cindex #+NAME
12464 @cindex #+BEGIN_SRC
12466 Live code blocks can be specified with a @samp{src} block or
12467 inline.@footnote{Note that @samp{src} blocks may be inserted using Org mode's
12468 @ref{Easy Templates} system}  The structure of a @samp{src} block is
12470 @example
12471 #+NAME: <name>
12472 #+BEGIN_SRC <language> <switches> <header arguments>
12473   <body>
12474 #+END_SRC
12475 @end example
12477 The @code{#+NAME:} line is optional, and can be used to name the code
12478 block.  Live code blocks require that a language be specified on the
12479 @code{#+BEGIN_SRC} line.  Switches and header arguments are optional.
12480 @cindex source code, inline
12482 Live code blocks can also be specified inline using
12484 @example
12485 src_<language>@{<body>@}
12486 @end example
12490 @example
12491 src_<language>[<header arguments>]@{<body>@}
12492 @end example
12494 @table @code
12495 @item <#+NAME: name>
12496 This line associates a name with the code block.  This is similar to the
12497 @code{#+TBLNAME: NAME} lines that can be used to name tables in Org mode
12498 files.  Referencing the name of a code block makes it possible to evaluate
12499 the block from other places in the file, from other files, or from Org mode
12500 table formulas (see @ref{The spreadsheet}).  Names are assumed to be unique
12501 and the behavior of Org mode when two or more blocks share the same name is
12502 undefined.
12503 @cindex #+NAME
12504 @item <language>
12505 The language of the code in the block (see @ref{Languages}).
12506 @cindex source code, language
12507 @item <switches>
12508 Optional switches control code block export (see the discussion of switches in
12509 @ref{Literal examples})
12510 @cindex source code, switches
12511 @item <header arguments>
12512 Optional header arguments control many aspects of evaluation, export and
12513 tangling of code blocks (see @ref{Header arguments}).
12514 Header arguments can also be set on a per-buffer or per-subtree
12515 basis using properties.
12516 @item source code, header arguments
12517 @item <body>
12518 Source code in the specified language.
12519 @end table
12521 @comment  node-name,  next,  previous,  up
12522 @comment  Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
12524 @node Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
12525 @section Editing source code
12526 @cindex code block, editing
12527 @cindex source code, editing
12529 @kindex C-c '
12530 Use @kbd{C-c '} to edit the current code block.  This brings up
12531 a language major-mode edit buffer containing the body of the code
12532 block.  Saving this buffer will write the new contents back to the Org
12533 buffer.  Use @kbd{C-c '} again to exit.
12535 The @code{org-src-mode} minor mode will be active in the edit buffer.  The
12536 following variables can be used to configure the behavior of the edit
12537 buffer.  See also the customization group @code{org-edit-structure} for
12538 further configuration options.
12540 @table @code
12541 @item org-src-lang-modes
12542 If an Emacs major-mode named @code{<lang>-mode} exists, where
12543 @code{<lang>} is the language named in the header line of the code block,
12544 then the edit buffer will be placed in that major-mode.  This variable
12545 can be used to map arbitrary language names to existing major modes.
12546 @item org-src-window-setup
12547 Controls the way Emacs windows are rearranged when the edit buffer is created.
12548 @item org-src-preserve-indentation
12549 This variable is especially useful for tangling languages such as
12550 Python, in which whitespace indentation in the output is critical.
12551 @item org-src-ask-before-returning-to-edit-buffer
12552 By default, Org will ask before returning to an open edit buffer.  Set this
12553 variable to nil to switch without asking.
12554 @end table
12556 To turn on native code fontification in the @emph{Org} buffer, configure the
12557 variable @code{org-src-fontify-natively}.
12559 @comment  node-name,  next,  previous,  up
12560 @comment  Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
12562 @node Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
12563 @section Exporting code blocks
12564 @cindex code block, exporting
12565 @cindex source code, exporting
12567 It is possible to export the @emph{code} of code blocks, the @emph{results}
12568 of code block evaluation, @emph{both} the code and the results of code block
12569 evaluation, or @emph{none}.  For most languages, the default exports code.
12570 However, for some languages (e.g., @code{ditaa}) the default exports the
12571 results of code block evaluation.  For information on exporting code block
12572 bodies, see @ref{Literal examples}.
12574 The @code{:exports} header argument can be used to specify export
12575 behavior:
12577 @subsubheading Header arguments:
12578 @table @code
12579 @item :exports code
12580 The default in most languages.  The body of the code block is exported, as
12581 described in @ref{Literal examples}.
12582 @item :exports results
12583 The code block will be evaluated and the results will be placed in the
12584 Org mode buffer for export, either updating previous results of the code
12585 block located anywhere in the buffer or, if no previous results exist,
12586 placing the results immediately after the code block.  The body of the code
12587 block will not be exported.
12588 @item :exports both
12589 Both the code block and its results will be exported.
12590 @item :exports none
12591 Neither the code block nor its results will be exported.
12592 @end table
12594 It is possible to inhibit the evaluation of code blocks during export.
12595 Setting the @code{org-export-babel-evaluate} variable to @code{nil} will
12596 ensure that no code blocks are evaluated as part of the export process.  This
12597 can be useful in situations where potentially untrusted Org mode files are
12598 exported in an automated fashion, for example when Org mode is used as the
12599 markup language for a wiki.
12601 @comment  node-name,  next,  previous,  up
12602 @comment  Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
12603 @node Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
12604 @section Extracting source code
12605 @cindex tangling
12606 @cindex source code, extracting
12607 @cindex code block, extracting source code
12609 Creating pure source code files by extracting code from source blocks is
12610 referred to as ``tangling''---a term adopted from the literate programming
12611 community.  During ``tangling'' of code blocks their bodies are expanded
12612 using @code{org-babel-expand-src-block} which can expand both variable and
12613 ``noweb'' style references  (see @ref{Noweb reference syntax}).
12615 @subsubheading Header arguments
12616 @table @code
12617 @item :tangle no
12618 The default.  The code block is not included in the tangled output.
12619 @item :tangle yes
12620 Include the code block in the tangled output.  The output file name is the
12621 name of the org file with the extension @samp{.org} replaced by the extension
12622 for the block language.
12623 @item :tangle filename
12624 Include the code block in the tangled output to file @samp{filename}.
12625 @end table
12627 @kindex  C-c C-v t
12628 @subsubheading Functions
12629 @table @code
12630 @item org-babel-tangle
12631 Tangle the current file.  Bound to @kbd{C-c C-v t}.
12633 With prefix argument only tangle the current code block.
12634 @item org-babel-tangle-file
12635 Choose a file to tangle.  Bound to @kbd{C-c C-v f}.
12636 @end table
12638 @subsubheading Hooks
12639 @table @code
12640 @item org-babel-post-tangle-hook
12641 This hook is run from within code files tangled by @code{org-babel-tangle}.
12642 Example applications could include post-processing, compilation or evaluation
12643 of tangled code files.
12644 @end table
12646 @node Evaluating code blocks, Library of Babel, Extracting source code, Working With Source Code
12647 @section Evaluating code blocks
12648 @cindex code block, evaluating
12649 @cindex source code, evaluating
12650 @cindex #+RESULTS
12652 Code blocks can be evaluated@footnote{Whenever code is evaluated there is a
12653 potential for that code to do harm.  Org mode provides safeguards to ensure
12654 that code is only evaluated after explicit confirmation from the user.  For
12655 information on these safeguards (and on how to disable them) see @ref{Code
12656 evaluation security}.} and the results of evaluation optionally placed in the
12657 Org mode buffer.  The results of evaluation are placed following a line that
12658 begins by default with @code{#+RESULTS} and optionally a cache identifier
12659 and/or the name of the evaluated code block.  The default value of
12660 @code{#+RESULTS} can be changed with the customizable variable
12661 @code{org-babel-results-keyword}.
12663 By default, the evaluation facility is only enabled for Lisp code blocks
12664 specified as @code{emacs-lisp}.  However, source code blocks in many languages
12665 can be evaluated within Org mode (see @ref{Languages} for a list of supported
12666 languages and @ref{Structure of code blocks} for information on the syntax
12667 used to define a code block).
12669 @kindex C-c C-c
12670 There are a number of ways to evaluate code blocks.  The simplest is to press
12671 @kbd{C-c C-c} or @kbd{C-c C-v e} with the point on a code block@footnote{The
12672 @code{org-babel-no-eval-on-ctrl-c-ctrl-c} variable can be used to remove code
12673 evaluation from the @kbd{C-c C-c} key binding.}.  This will call the
12674 @code{org-babel-execute-src-block} function to evaluate the block and insert
12675 its results into the Org mode buffer.
12676 @cindex #+CALL
12678 It is also possible to evaluate named code blocks from anywhere in an Org
12679 mode buffer or an Org mode table.  Live code blocks located in the current
12680 Org mode buffer or in the ``Library of Babel'' (see @ref{Library of Babel})
12681 can be executed.  Named code blocks can be executed with a separate
12682 @code{#+CALL:} line or inline within a block of text.
12684 The syntax of the @code{#+CALL:} line is
12686 @example
12687 #+CALL: <name>(<arguments>)
12688 #+CALL: <name>[<inside header arguments>](<arguments>) <end header arguments>
12689 @end example
12691 The syntax for inline evaluation of named code blocks is
12693 @example
12694 ... call_<name>(<arguments>) ...
12695 ... call_<name>[<inside header arguments>](<arguments>)[<end header arguments>] ...
12696 @end example
12698 @table @code
12699 @item <name>
12700 The name of the code block to be evaluated (see @ref{Structure of code blocks}).
12701 @item <arguments>
12702 Arguments specified in this section will be passed to the code block.  These
12703 arguments use standard function call syntax, rather than
12704 header argument syntax.  For example, a @code{#+CALL:} line that passes the
12705 number four to a code block named @code{double}, which declares the header
12706 argument @code{:var n=2}, would be written as @code{#+CALL: double(n=4)}.
12707 @item <inside header arguments>
12708 Inside header arguments are passed through and applied to the named code
12709 block.  These arguments use header argument syntax rather than standard
12710 function call syntax.  Inside header arguments affect how the code block is
12711 evaluated.  For example, @code{[:results output]} will collect the results of
12712 everything printed to @code{STDOUT} during execution of the code block.
12713 @item <end header arguments>
12714 End header arguments are applied to the calling instance and do not affect
12715 evaluation of the named code block.  They affect how the results are
12716 incorporated into the Org mode buffer and how the call line is exported.  For
12717 example, @code{:results html} will insert the results of the call line
12718 evaluation in the Org buffer, wrapped in a @code{BEGIN_HTML:} block.
12720 For more examples of passing header arguments to @code{#+CALL:} lines see
12721 @ref{Header arguments in function calls}.
12722 @end table
12724 @node Library of Babel, Languages, Evaluating code blocks, Working With Source Code
12725 @section Library of Babel
12726 @cindex babel, library of
12727 @cindex source code, library
12728 @cindex code block, library
12730 The ``Library of Babel'' consists of code blocks that can be called from any
12731 Org mode file.  Code blocks defined in the ``Library of Babel'' can be called
12732 remotely as if they were in the current Org mode buffer (see @ref{Evaluating
12733 code blocks} for information on the syntax of remote code block evaluation).
12736 The central repository of code blocks in the ``Library of Babel'' is housed
12737 in an Org mode file located in the @samp{contrib} directory of Org mode.
12739 Users can add code blocks they believe to be generally useful to their
12740 ``Library of Babel.''  The code blocks can be stored in any Org mode file and
12741 then loaded into the library with @code{org-babel-lob-ingest}.
12744 @kindex C-c C-v i
12745 Code blocks located in any Org mode file can be loaded into the ``Library of
12746 Babel'' with the @code{org-babel-lob-ingest} function, bound to @kbd{C-c C-v
12749 @node Languages, Header arguments, Library of Babel, Working With Source Code
12750 @section Languages
12751 @cindex babel, languages
12752 @cindex source code, languages
12753 @cindex code block, languages
12755 Code blocks in the following languages are supported.
12757 @multitable @columnfractions 0.28 0.3 0.22 0.2
12758 @item @b{Language} @tab @b{Identifier} @tab @b{Language} @tab @b{Identifier}
12759 @item Asymptote @tab asymptote @tab Awk @tab awk
12760 @item Emacs Calc @tab calc @tab C @tab C
12761 @item C++ @tab C++ @tab Clojure @tab clojure
12762 @item CSS @tab css @tab ditaa @tab ditaa
12763 @item Graphviz @tab dot @tab Emacs Lisp @tab emacs-lisp
12764 @item gnuplot @tab gnuplot @tab Haskell @tab haskell
12765 @item Java @tab java @tab @tab
12766 @item Javascript @tab js @tab LaTeX @tab latex
12767 @item Ledger @tab ledger @tab Lisp @tab lisp
12768 @item Lilypond @tab lilypond @tab MATLAB @tab matlab
12769 @item Mscgen @tab mscgen @tab Objective Caml @tab ocaml
12770 @item Octave @tab octave @tab Org mode @tab org
12771 @item Oz @tab oz @tab Perl @tab perl
12772 @item Plantuml @tab plantuml @tab Python @tab python
12773 @item R @tab R @tab Ruby @tab ruby
12774 @item Sass @tab sass @tab Scheme @tab scheme
12775 @item GNU Screen @tab screen @tab shell @tab sh
12776 @item SQL @tab sql @tab SQLite @tab sqlite
12777 @end multitable
12779 Language-specific documentation is available for some languages.  If
12780 available, it can be found at
12781 @uref{http://orgmode.org/worg/org-contrib/babel/languages.html}.
12783 The @code{org-babel-load-languages} controls which languages are enabled for
12784 evaluation (by default only @code{emacs-lisp} is enabled).  This variable can
12785 be set using the customization interface or by adding code like the following
12786 to your emacs configuration.
12788 @quotation
12789 The following disables @code{emacs-lisp} evaluation and enables evaluation of
12790 @code{R} code blocks.
12791 @end quotation
12793 @lisp
12794 (org-babel-do-load-languages
12795  'org-babel-load-languages
12796  '((emacs-lisp . nil)
12797    (R . t)))
12798 @end lisp
12800 It is also possible to enable support for a language by loading the related
12801 elisp file with @code{require}.
12803 @quotation
12804 The following adds support for evaluating @code{clojure} code blocks.
12805 @end quotation
12807 @lisp
12808 (require 'ob-clojure)
12809 @end lisp
12811 @node Header arguments, Results of evaluation, Languages, Working With Source Code
12812 @section Header arguments
12813 @cindex code block, header arguments
12814 @cindex source code, block header arguments
12816 Code block functionality can be configured with header arguments.  This
12817 section provides an overview of the use of header arguments, and then
12818 describes each header argument in detail.
12820 @menu
12821 * Using header arguments::      Different ways to set header arguments
12822 * Specific header arguments::   List of header arguments
12823 @end menu
12825 @node Using header arguments, Specific header arguments, Header arguments, Header arguments
12826 @subsection Using header arguments
12828 The values of header arguments can be set in six different ways, each more
12829 specific (and having higher priority) than the last.
12830 @menu
12831 * System-wide header arguments::  Set global default values
12832 * Language-specific header arguments::  Set default values by language
12833 * Buffer-wide header arguments::  Set default values for a specific buffer
12834 * Header arguments in Org mode properties::  Set default values for a buffer or heading
12835 * Code block specific header arguments::  The most common way to set values
12836 * Header arguments in function calls::  The most specific level
12837 @end menu
12840 @node System-wide header arguments, Language-specific header arguments, Using header arguments, Using header arguments
12841 @subsubheading System-wide header arguments
12842 @vindex org-babel-default-header-args
12843 System-wide values of header arguments can be specified by customizing the
12844 @code{org-babel-default-header-args} variable:
12846 @example
12847 :session    => "none"
12848 :results    => "replace"
12849 :exports    => "code"
12850 :cache      => "no"
12851 :noweb      => "no"
12852 @end example
12854 @c @example
12855 @c   org-babel-default-header-args is a variable defined in `org-babel.el'.
12856 @c   Its value is
12857 @c   ((:session . "none")
12858 @c    (:results . "replace")
12859 @c    (:exports . "code")
12860 @c    (:cache . "no")
12861 @c    (:noweb . "no"))
12864 @c   Documentation:
12865 @c   Default arguments to use when evaluating a code block.
12866 @c @end example
12868 For example, the following example could be used to set the default value of
12869 @code{:noweb} header arguments to @code{yes}.  This would have the effect of
12870 expanding @code{:noweb} references by default when evaluating source code
12871 blocks.
12873 @lisp
12874 (setq org-babel-default-header-args
12875       (cons '(:noweb . "yes")
12876             (assq-delete-all :noweb org-babel-default-header-args)))
12877 @end lisp
12879 @node Language-specific header arguments, Buffer-wide header arguments, System-wide header arguments, Using header arguments
12880 @subsubheading Language-specific header arguments
12881 Each language can define its own set of default header arguments.  See the
12882 language-specific documentation available online at
12883 @uref{http://orgmode.org/worg/org-contrib/babel}.
12885 @node Buffer-wide header arguments, Header arguments in Org mode properties, Language-specific header arguments, Using header arguments
12886 @subsubheading Buffer-wide header arguments
12887 Buffer-wide header arguments may be specified as properties through the use
12888 of @code{#+PROPERTY:} lines placed anywhere in an Org mode file (see
12889 @ref{Property syntax}).
12891 For example the following would set @code{session} to @code{*R*}, and
12892 @code{results} to @code{silent} for every code block in the buffer, ensuring
12893 that all execution took place in the same session, and no results would be
12894 inserted into the buffer.
12896 @example
12897 #+PROPERTY: session *R*
12898 #+PROPERTY: results silent
12899 @end example
12901 @node Header arguments in Org mode properties, Code block specific header arguments, Buffer-wide header arguments, Using header arguments
12902 @subsubheading Header arguments in Org mode properties
12904 Header arguments are also read from Org mode properties (see @ref{Property
12905 syntax}), which can be set on a buffer-wide or per-heading basis.  An example
12906 of setting a header argument for all code blocks in a buffer is
12908 @example
12909 #+PROPERTY: tangle yes
12910 @end example
12912 @vindex org-use-property-inheritance
12913 When properties are used to set default header arguments, they are looked up
12914 with inheritance, regardless of the value of
12915 @code{org-use-property-inheritance}.  In the following example the value of
12916 the @code{:cache} header argument will default to @code{yes} in all code
12917 blocks in the subtree rooted at the following heading:
12919 @example
12920 * outline header
12921   :PROPERTIES:
12922   :cache:    yes
12923   :END:
12924 @end example
12926 @kindex C-c C-x p
12927 @vindex org-babel-default-header-args
12928 Properties defined in this way override the properties set in
12929 @code{org-babel-default-header-args}.  It is convenient to use the
12930 @code{org-set-property} function bound to @kbd{C-c C-x p} to set properties
12931 in Org mode documents.
12933 @node Code block specific header arguments, Header arguments in function calls, Header arguments in Org mode properties, Using header arguments
12934 @subsubheading Code block specific header arguments
12936 The most common way to assign values to header arguments is at the
12937 code block level.  This can be done by listing a sequence of header
12938 arguments and their values as part of the @code{#+BEGIN_SRC} line.
12939 Properties set in this way override both the values of
12940 @code{org-babel-default-header-args} and header arguments specified as
12941 properties.  In the following example, the @code{:results} header argument
12942 is set to @code{silent}, meaning the results of execution will not be
12943 inserted in the buffer, and the @code{:exports} header argument is set to
12944 @code{code}, meaning only the body of the code block will be
12945 preserved on export to HTML or @LaTeX{}.
12947 @example
12948 #+NAME: factorial
12949 #+BEGIN_SRC haskell :results silent :exports code :var n=0
12950 fac 0 = 1
12951 fac n = n * fac (n-1)
12952 #+END_SRC
12953 @end example
12954 Similarly, it is possible to set header arguments for inline code blocks
12956 @example
12957 src_haskell[:exports both]@{fac 5@}
12958 @end example
12960 Code block header arguments can span multiple lines using @code{#+HEADER:} or
12961 @code{#+HEADERS:} lines preceding a code block or nested between the
12962 @code{#+NAME:} line and the @code{#+BEGIN_SRC} line of a named code block.
12963 @cindex #+HEADER:
12964 @cindex #+HEADERS:
12966 Multi-line header arguments on an un-named code block:
12968 @example
12969  #+HEADERS: :var data1=1
12970  #+BEGIN_SRC emacs-lisp :var data2=2
12971    (message "data1:%S, data2:%S" data1 data2)
12972  #+END_SRC
12974  #+RESULTS:
12975  : data1:1, data2:2
12976 @end example
12978 Multi-line header arguments on a named code block:
12980 @example
12981    #+NAME: named-block
12982    #+HEADER: :var data=2
12983    #+BEGIN_SRC emacs-lisp
12984      (message "data:%S" data)
12985    #+END_SRC
12987    #+RESULTS: named-block
12988    : data:2
12989 @end example
12991 @node Header arguments in function calls,  , Code block specific header arguments, Using header arguments
12992 @comment  node-name,  next,  previous,  up
12993 @subsubheading Header arguments in function calls
12995 At the most specific level, header arguments for ``Library of Babel'' or
12996 @code{#+CALL:} lines can be set as shown in the two examples below.  For more
12997 information on the structure of @code{#+CALL:} lines see @ref{Evaluating code
12998 blocks}.
13000 The following will apply the @code{:exports results} header argument to the
13001 evaluation of the @code{#+CALL:} line.
13003 @example
13004 #+CALL: factorial(n=5) :exports results
13005 @end example
13007 The following will apply the @code{:session special} header argument to the
13008 evaluation of the @code{factorial} code block.
13010 @example
13011 #+CALL: factorial[:session special](n=5)
13012 @end example
13014 @node Specific header arguments,  , Using header arguments, Header arguments
13015 @subsection Specific header arguments
13016 Header arguments consist of an initial colon followed by the name of the
13017 argument in lowercase letters.  The following header arguments are defined:
13019 @menu
13020 * var::                         Pass arguments to code blocks
13021 * results::                     Specify the type of results and how they will
13022                                 be collected and handled
13023 * file::                        Specify a path for file output
13024 * file-desc::                   Specify a description for file results
13025 * dir::                         Specify the default (possibly remote)
13026                                 directory for code block execution
13027 * exports::                     Export code and/or results
13028 * tangle::                      Toggle tangling and specify file name
13029 * mkdirp::                      Toggle creation of parent directories of target
13030                                 files during tangling
13031 * comments::                    Toggle insertion of comments in tangled
13032                                 code files
13033 * padline::                     Control insertion of padding lines in tangled
13034                                 code files
13035 * no-expand::                   Turn off variable assignment and noweb
13036                                 expansion during tangling
13037 * session::                     Preserve the state of code evaluation
13038 * noweb::                       Toggle expansion of noweb references
13039 * noweb-ref::                   Specify block's noweb reference resolution target
13040 * noweb-sep::                   String used to separate noweb references
13041 * cache::                       Avoid re-evaluating unchanged code blocks
13042 * sep::                         Delimiter for writing tabular results outside Org
13043 * hlines::                      Handle horizontal lines in tables
13044 * colnames::                    Handle column names in tables
13045 * rownames::                    Handle row names in tables
13046 * shebang::                     Make tangled files executable
13047 * eval::                        Limit evaluation of specific code blocks
13048 * wrap::                        Mark source block evaluation results
13049 @end menu
13051 Additional header arguments are defined on a language-specific basis, see
13052 @ref{Languages}.
13054 @node var, results, Specific header arguments, Specific header arguments
13055 @subsubsection @code{:var}
13056 The @code{:var} header argument is used to pass arguments to code blocks.
13057 The specifics of how arguments are included in a code block vary by language;
13058 these are addressed in the language-specific documentation.  However, the
13059 syntax used to specify arguments is the same across all languages.  In every
13060 case, variables require a default value when they are declared.
13062 The values passed to arguments can either be literal values, references, or
13063 Emacs Lisp code (see @ref{var, Emacs Lisp evaluation of variables}).  References
13064 include anything in the Org mode file that takes a @code{#+NAME:},
13065 @code{#+TBLNAME:}, or @code{#+RESULTS:} line.  This includes tables, lists,
13066 @code{#+BEGIN_EXAMPLE} blocks, other code blocks, and the results of other
13067 code blocks.
13069 Argument values can be indexed in a manner similar to arrays (see @ref{var,
13070 Indexable variable values}).
13072 The following syntax is used to pass arguments to code blocks using the
13073 @code{:var} header argument.
13075 @example
13076 :var name=assign
13077 @end example
13079 The argument, @code{assign}, can either be a literal value, such as a string
13080 @samp{"string"} or a number @samp{9}, or a reference to a table, a list, a
13081 literal example, another code block (with or without arguments), or the
13082 results of evaluating another code block.
13084 Here are examples of passing values by reference:
13086 @table @dfn
13088 @item table
13089 an Org mode table named with either a @code{#+NAME:} or @code{#+TBLNAME:} line
13091 @example
13092 #+TBLNAME: example-table
13093 | 1 |
13094 | 2 |
13095 | 3 |
13096 | 4 |
13098 #+NAME: table-length
13099 #+BEGIN_SRC emacs-lisp :var table=example-table
13100 (length table)
13101 #+END_SRC
13103 #+RESULTS: table-length
13104 : 4
13105 @end example
13107 @item list
13108 a simple list named with a @code{#+NAME:} line (note that nesting is not
13109 carried through to the source code block)
13111 @example
13112 #+NAME: example-list
13113   - simple
13114     - not
13115     - nested
13116   - list
13118 #+BEGIN_SRC emacs-lisp :var x=example-list
13119   (print x)
13120 #+END_SRC
13122 #+RESULTS:
13123 | simple | list |
13124 @end example
13126 @item code block without arguments
13127 a code block name (from the example above), as assigned by @code{#+NAME:},
13128 optionally followed by parentheses
13130 @example
13131 #+BEGIN_SRC emacs-lisp :var length=table-length()
13132 (* 2 length)
13133 #+END_SRC
13135 #+RESULTS:
13136 : 8
13137 @end example
13139 @item code block with arguments
13140 a code block name, as assigned by @code{#+NAME:}, followed by parentheses and
13141 optional arguments passed within the parentheses following the
13142 code block name using standard function call syntax
13144 @example
13145 #+NAME: double
13146 #+BEGIN_SRC emacs-lisp :var input=8
13147 (* 2 input)
13148 #+END_SRC
13150 #+RESULTS: double
13151 : 16
13153 #+NAME: squared
13154 #+BEGIN_SRC emacs-lisp :var input=double(input=1)
13155 (* input input)
13156 #+END_SRC
13158 #+RESULTS: squared
13159 : 4
13160 @end example
13162 @item literal example
13163 a literal example block named with a @code{#+NAME:} line
13165 @example
13166 #+NAME: literal-example
13167 #+BEGIN_EXAMPLE
13168 A literal example
13169 on two lines
13170 #+END_EXAMPLE
13172 #+NAME: read-literal-example
13173 #+BEGIN_SRC emacs-lisp :var x=literal-example
13174   (concatenate 'string x " for you.")
13175 #+END_SRC
13177 #+RESULTS: read-literal-example
13178 : A literal example
13179 : on two lines for you.
13181 @end example
13183 @end table
13185 @subsubheading Alternate argument syntax
13186 It is also possible to specify arguments in a potentially more natural way
13187 using the @code{#+NAME:} line of a code block.  As in the following
13188 example, arguments can be packed inside of parentheses, separated by commas,
13189 following the source name.
13191 @example
13192 #+NAME: double(input=0, x=2)
13193 #+BEGIN_SRC emacs-lisp
13194 (* 2 (+ input x))
13195 #+END_SRC
13196 @end example
13198 @subsubheading Indexable variable values
13199 It is possible to reference portions of variable values by ``indexing'' into
13200 the variables.  Indexes are 0 based with negative values counting back from
13201 the end.  If an index is separated by @code{,}s then each subsequent section
13202 will index into the next deepest nesting or dimension of the value.  Note
13203 that this indexing occurs @emph{before} other table related header arguments
13204 like @code{:hlines}, @code{:colnames} and @code{:rownames} are applied.  The
13205 following example assigns the last cell of the first row the table
13206 @code{example-table} to the variable @code{data}:
13208 @example
13209 #+NAME: example-table
13210 | 1 | a |
13211 | 2 | b |
13212 | 3 | c |
13213 | 4 | d |
13215 #+BEGIN_SRC emacs-lisp :var data=example-table[0,-1]
13216   data
13217 #+END_SRC
13219 #+RESULTS:
13220 : a
13221 @end example
13223 Ranges of variable values can be referenced using two integers separated by a
13224 @code{:}, in which case the entire inclusive range is referenced.  For
13225 example the following assigns the middle three rows of @code{example-table}
13226 to @code{data}.
13228 @example
13229 #+NAME: example-table
13230 | 1 | a |
13231 | 2 | b |
13232 | 3 | c |
13233 | 4 | d |
13234 | 5 | 3 |
13236 #+BEGIN_SRC emacs-lisp :var data=example-table[1:3]
13237   data
13238 #+END_SRC
13240 #+RESULTS:
13241 | 2 | b |
13242 | 3 | c |
13243 | 4 | d |
13244 @end example
13246 Additionally, an empty index, or the single character @code{*}, are both
13247 interpreted to mean the entire range and as such are equivalent to
13248 @code{0:-1}, as shown in the following example in which the entire first
13249 column is referenced.
13251 @example
13252 #+NAME: example-table
13253 | 1 | a |
13254 | 2 | b |
13255 | 3 | c |
13256 | 4 | d |
13258 #+BEGIN_SRC emacs-lisp :var data=example-table[,0]
13259   data
13260 #+END_SRC
13262 #+RESULTS:
13263 | 1 | 2 | 3 | 4 |
13264 @end example
13266 It is possible to index into the results of code blocks as well as tables.
13267 Any number of dimensions can be indexed.  Dimensions are separated from one
13268 another by commas, as shown in the following example.
13270 @example
13271 #+NAME: 3D
13272 #+BEGIN_SRC emacs-lisp
13273   '(((1  2  3)  (4  5  6)  (7  8  9))
13274     ((10 11 12) (13 14 15) (16 17 18))
13275     ((19 20 21) (22 23 24) (25 26 27)))
13276 #+END_SRC
13278 #+BEGIN_SRC emacs-lisp :var data=3D[1,,1]
13279   data
13280 #+END_SRC
13282 #+RESULTS:
13283 | 11 | 14 | 17 |
13284 @end example
13286 @subsubheading Emacs Lisp evaluation of variables
13288 Emacs lisp code can be used to initialize variable values.  When a variable
13289 value starts with @code{(}, @code{[}, @code{'} or @code{`} it will be
13290 evaluated as Emacs Lisp and the result of the evaluation will be assigned as
13291 the variable value.  The following example demonstrates use of this
13292 evaluation to reliably pass the file-name of the Org mode buffer to a code
13293 block---note that evaluation of header arguments is guaranteed to take place
13294 in the original Org mode file, while there is no such guarantee for
13295 evaluation of the code block body.
13297 @example
13298 #+BEGIN_SRC sh :var filename=(buffer-file-name) :exports both
13299   wc -w $filename
13300 #+END_SRC
13301 @end example
13303 Note that values read from tables and lists will not be evaluated as
13304 Emacs Lisp, as shown in the following example.
13306 @example
13307 #+NAME: table
13308 | (a b c) |
13310 #+HEADERS: :var data=table[0,0]
13311 #+BEGIN_SRC perl
13312   $data
13313 #+END_SRC
13315 #+RESULTS:
13316 : (a b c)
13317 @end example
13319 @node results, file, var, Specific header arguments
13320 @subsubsection @code{:results}
13322 There are three classes of @code{:results} header argument.  Only one option
13323 per class may be supplied per code block.
13325 @itemize @bullet
13326 @item
13327 @b{collection} header arguments specify how the results should be collected
13328 from the code block
13329 @item
13330 @b{type} header arguments specify what type of result the code block will
13331 return---which has implications for how they will be inserted into the
13332 Org mode buffer
13333 @item
13334 @b{handling} header arguments specify how the results of evaluating the code
13335 block should be handled.
13336 @end itemize
13338 @subsubheading Collection
13339 The following options are mutually exclusive, and specify how the results
13340 should be collected from the code block.
13342 @itemize @bullet
13343 @item @code{value}
13344 This is the default.  The result is the value of the last statement in the
13345 code block.  This header argument places the evaluation in functional
13346 mode.  Note that in some languages, e.g., Python, use of this result type
13347 requires that a @code{return} statement be included in the body of the source
13348 code block.  E.g., @code{:results value}.
13349 @item @code{output}
13350 The result is the collection of everything printed to STDOUT during the
13351 execution of the code block.  This header argument places the
13352 evaluation in scripting mode.  E.g., @code{:results output}.
13353 @end itemize
13355 @subsubheading Type
13357 The following options are mutually exclusive and specify what type of results
13358 the code block will return.  By default, results are inserted as either a
13359 table or scalar depending on their value.
13361 @itemize @bullet
13362 @item @code{table}, @code{vector}
13363 The results should be interpreted as an Org mode table.  If a single value is
13364 returned, it will be converted into a table with one row and one column.
13365 E.g., @code{:results value table}.
13366 @item @code{list}
13367 The results should be interpreted as an Org mode list.  If a single scalar
13368 value is returned it will be converted into a list with only one element.
13369 @item @code{scalar}, @code{verbatim}
13370 The results should be interpreted literally---they will not be
13371 converted into a table.  The results will be inserted into the Org mode
13372 buffer as quoted text.  E.g., @code{:results value verbatim}.
13373 @item @code{file}
13374 The results will be interpreted as the path to a file, and will be inserted
13375 into the Org mode buffer as a file link.  E.g., @code{:results value file}.
13376 @item @code{raw}
13377 The results are interpreted as raw Org mode code and are inserted directly
13378 into the buffer.  If the results look like a table they will be aligned as
13379 such by Org mode.  E.g., @code{:results value raw}.
13380 @item @code{org}
13381 The results are will be enclosed in a @code{BEGIN_SRC org} block.
13382 They are not comma-escaped by default but they will be if you hit @kbd{TAB}
13383 in the block and/or if you export the file.  E.g., @code{:results value org}.
13384 @item @code{html}
13385 Results are assumed to be HTML and will be enclosed in a @code{BEGIN_HTML}
13386 block.  E.g., @code{:results value html}.
13387 @item @code{latex}
13388 Results assumed to be @LaTeX{} and are enclosed in a @code{BEGIN_LaTeX} block.
13389 E.g., @code{:results value latex}.
13390 @item @code{code}
13391 Result are assumed to be parsable code and are enclosed in a code block.
13392 E.g., @code{:results value code}.
13393 @item @code{pp}
13394 The result is converted to pretty-printed code and is enclosed in a code
13395 block.  This option currently supports Emacs Lisp, Python, and Ruby.  E.g.,
13396 @code{:results value pp}.
13397 @item @code{drawer}
13398 The result is wrapped in a RESULTS drawer.  This can be useful for
13399 inserting @code{raw} or @code{org} syntax results in such a way that their
13400 extent is known and they can be automatically removed or replaced.
13401 @end itemize
13403 @subsubheading Handling
13404 The following results options indicate what happens with the
13405 results once they are collected.
13407 @itemize @bullet
13408 @item @code{silent}
13409 The results will be echoed in the minibuffer but will not be inserted into
13410 the Org mode buffer.  E.g., @code{:results output silent}.
13411 @item @code{replace}
13412 The default value.  Any existing results will be removed, and the new results
13413 will be inserted into the Org mode buffer in their place.  E.g.,
13414 @code{:results output replace}.
13415 @item @code{append}
13416 If there are pre-existing results of the code block then the new results will
13417 be appended to the existing results.  Otherwise the new results will be
13418 inserted as with @code{replace}.
13419 @item @code{prepend}
13420 If there are pre-existing results of the code block then the new results will
13421 be prepended to the existing results.  Otherwise the new results will be
13422 inserted as with @code{replace}.
13423 @end itemize
13425 @node file, file-desc, results, Specific header arguments
13426 @subsubsection @code{:file}
13428 The header argument @code{:file} is used to specify an external file in which
13429 to save code block results.  After code block evaluation an Org mode style
13430 @code{[[file:]]} link (see @ref{Link format}) to the file will be inserted
13431 into the Org mode buffer.  Some languages including R, gnuplot, dot, and
13432 ditaa provide special handling of the @code{:file} header argument
13433 automatically wrapping the code block body in the boilerplate code required
13434 to save output to the specified file.  This is often useful for saving
13435 graphical output of a code block to the specified file.
13437 The argument to @code{:file} should be either a string specifying the path to
13438 a file, or a list of two strings in which case the first element of the list
13439 should be the path to a file and the second a description for the link.
13441 @node file-desc, dir, file, Specific header arguments
13442 @subsubsection @code{:file-desc}
13444 The value of the @code{:file-desc} header argument is used to provide a
13445 description for file code block results which are inserted as Org mode links
13446 (see @ref{Link format}).  If the @code{:file-desc} header argument is given
13447 with no value the link path will be placed in both the ``link'' and the
13448 ``description'' portion of the Org mode link.
13450 @node dir, exports, file-desc, Specific header arguments
13451 @subsubsection @code{:dir} and remote execution
13453 While the @code{:file} header argument can be used to specify the path to the
13454 output file, @code{:dir} specifies the default directory during code block
13455 execution.  If it is absent, then the directory associated with the current
13456 buffer is used.  In other words, supplying @code{:dir path} temporarily has
13457 the same effect as changing the current directory with @kbd{M-x cd path}, and
13458 then not supplying @code{:dir}.  Under the surface, @code{:dir} simply sets
13459 the value of the Emacs variable @code{default-directory}.
13461 When using @code{:dir}, you should supply a relative path for file output
13462 (e.g., @code{:file myfile.jpg} or @code{:file results/myfile.jpg}) in which
13463 case that path will be interpreted relative to the default directory.
13465 In other words, if you want your plot to go into a folder called @file{Work}
13466 in your home directory, you could use
13468 @example
13469 #+BEGIN_SRC R :file myplot.png :dir ~/Work
13470 matplot(matrix(rnorm(100), 10), type="l")
13471 #+END_SRC
13472 @end example
13474 @subsubheading Remote execution
13475 A directory on a remote machine can be specified using tramp file syntax, in
13476 which case the code will be evaluated on the remote machine.  An example is
13478 @example
13479 #+BEGIN_SRC R :file plot.png :dir /dand@@yakuba.princeton.edu:
13480 plot(1:10, main=system("hostname", intern=TRUE))
13481 #+END_SRC
13482 @end example
13484 Text results will be returned to the local Org mode buffer as usual, and file
13485 output will be created on the remote machine with relative paths interpreted
13486 relative to the remote directory.  An Org mode link to the remote file will be
13487 created.
13489 So, in the above example a plot will be created on the remote machine,
13490 and a link of the following form will be inserted in the org buffer:
13492 @example
13493 [[file:/scp:dand@@yakuba.princeton.edu:/home/dand/plot.png][plot.png]]
13494 @end example
13496 Most of this functionality follows immediately from the fact that @code{:dir}
13497 sets the value of the Emacs variable @code{default-directory}, thanks to
13498 tramp.  Those using XEmacs, or GNU Emacs prior to version 23 may need to
13499 install tramp separately in order for these features to work correctly.
13501 @subsubheading Further points
13503 @itemize @bullet
13504 @item
13505 If @code{:dir} is used in conjunction with @code{:session}, although it will
13506 determine the starting directory for a new session as expected, no attempt is
13507 currently made to alter the directory associated with an existing session.
13508 @item
13509 @code{:dir} should typically not be used to create files during export with
13510 @code{:exports results} or @code{:exports both}.  The reason is that, in order
13511 to retain portability of exported material between machines, during export
13512 links inserted into the buffer will @emph{not} be expanded against @code{default
13513 directory}.  Therefore, if @code{default-directory} is altered using
13514 @code{:dir}, it is probable that the file will be created in a location to
13515 which the link does not point.
13516 @end itemize
13518 @node exports, tangle, dir, Specific header arguments
13519 @subsubsection @code{:exports}
13521 The @code{:exports} header argument specifies what should be included in HTML
13522 or @LaTeX{} exports of the Org mode file.
13524 @itemize @bullet
13525 @item @code{code}
13526 The default.  The body of code is included into the exported file.  E.g.,
13527 @code{:exports code}.
13528 @item @code{results}
13529 The result of evaluating the code is included in the exported file.  E.g.,
13530 @code{:exports results}.
13531 @item @code{both}
13532 Both the code and results are included in the exported file.  E.g.,
13533 @code{:exports both}.
13534 @item @code{none}
13535 Nothing is included in the exported file.  E.g., @code{:exports none}.
13536 @end itemize
13538 @node tangle, mkdirp, exports, Specific header arguments
13539 @subsubsection @code{:tangle}
13541 The @code{:tangle} header argument specifies whether or not the code
13542 block should be included in tangled extraction of source code files.
13544 @itemize @bullet
13545 @item @code{tangle}
13546 The code block is exported to a source code file named after the full path
13547 (including the directory) and file name (w/o extension) of the Org mode file.
13548 E.g., @code{:tangle yes}.
13549 @item @code{no}
13550 The default.  The code block is not exported to a source code file.
13551 E.g., @code{:tangle no}.
13552 @item other
13553 Any other string passed to the @code{:tangle} header argument is interpreted
13554 as a path (directory and file name relative to the directory of the Org mode
13555 file) to which the block will be exported.  E.g., @code{:tangle path}.
13556 @end itemize
13558 @node mkdirp, comments, tangle, Specific header arguments
13559 @subsubsection @code{:mkdirp}
13561 The @code{:mkdirp} header argument can be used to create parent directories
13562 of tangled files when missing.  This can be set to @code{yes} to enable
13563 directory creation or to @code{no} to inhibit directory creation.
13565 @node comments, padline, mkdirp, Specific header arguments
13566 @subsubsection @code{:comments}
13567 By default code blocks are tangled to source-code files without any insertion
13568 of comments beyond those which may already exist in the body of the code
13569 block.  The @code{:comments} header argument can be set as follows to control
13570 the insertion of extra comments into the tangled code file.
13572 @itemize @bullet
13573 @item @code{no}
13574 The default.  No extra comments are inserted during tangling.
13575 @item @code{link}
13576 The code block is wrapped in comments which contain pointers back to the
13577 original Org file from which the code was tangled.
13578 @item @code{yes}
13579 A synonym for ``link'' to maintain backwards compatibility.
13580 @item @code{org}
13581 Include text from the Org mode file as a comment.
13582 The text is picked from the leading context of the tangled code and is
13583 limited by the nearest headline or source block as the case may be.
13584 @item @code{both}
13585 Turns on both the ``link'' and ``org'' comment options.
13586 @item @code{noweb}
13587 Turns on the ``link'' comment option, and additionally wraps expanded noweb
13588 references in the code block body in link comments.
13589 @end itemize
13591 @node padline, no-expand, comments, Specific header arguments
13592 @subsubsection @code{:padline}
13593 Control in insertion of padding lines around code block bodies in tangled
13594 code files.  The default value is @code{yes} which results in insertion of
13595 newlines before and after each tangled code block.  The following arguments
13596 are accepted.
13598 @itemize @bullet
13599 @item @code{yes}
13600 Insert newlines before and after each code block body in tangled code files.
13601 @item @code{no}
13602 Do not insert any newline padding in tangled output.
13603 @end itemize
13605 @node no-expand, session, padline, Specific header arguments
13606 @subsubsection @code{:no-expand}
13608 By default, code blocks are expanded with @code{org-babel-expand-src-block}
13609 during tangling.  This has the effect of assigning values to variables
13610 specified with @code{:var} (see @ref{var}), and of replacing ``noweb''
13611 references (see @ref{Noweb reference syntax}) with their targets.  The
13612 @code{:no-expand} header argument can be used to turn off this behavior.
13614 @node session, noweb, no-expand, Specific header arguments
13615 @subsubsection @code{:session}
13617 The @code{:session} header argument starts a session for an interpreted
13618 language where state is preserved.
13620 By default, a session is not started.
13622 A string passed to the @code{:session} header argument will give the session
13623 a name.  This makes it possible to run concurrent sessions for each
13624 interpreted language.
13626 @node noweb, noweb-ref, session, Specific header arguments
13627 @subsubsection @code{:noweb}
13629 The @code{:noweb} header argument controls expansion of ``noweb'' syntax
13630 references (see @ref{Noweb reference syntax}) when the code block is
13631 evaluated, tangled, or exported.  The @code{:noweb} header argument can have
13632 one of the five values: @code{no}, @code{yes}, @code{tangle}, or
13633 @code{no-export} @code{strip-export}.
13635 @itemize @bullet
13636 @item @code{no}
13637 The default.  ``Noweb'' syntax references in the body of the code block will
13638 not be expanded before the code block is evaluated, tangled or exported.
13639 @item @code{yes}
13640 ``Noweb'' syntax references in the body of the code block will be
13641 expanded before the code block is evaluated, tangled or exported.
13642 @item @code{tangle}
13643 ``Noweb'' syntax references in the body of the code block will be expanded
13644 before the code block is tangled.  However, ``noweb'' syntax references will
13645 not be expanded when the code block is evaluated or exported.
13646 @item @code{no-export}
13647 ``Noweb'' syntax references in the body of the code block will be expanded
13648 before the block is evaluated or tangled.  However, ``noweb'' syntax
13649 references will not be expanded when the code block is exported.
13650 @item @code{strip-export}
13651 ``Noweb'' syntax references in the body of the code block will be expanded
13652 before the block is evaluated or tangled.  However, ``noweb'' syntax
13653 references will not be removed when the code block is exported.
13654 @item @code{eval}
13655 ``Noweb'' syntax references in the body of the code block will only be
13656 expanded before the block is evaluated.
13657 @end itemize
13659 @subsubheading Noweb prefix lines
13660 Noweb insertions are now placed behind the line prefix of the
13661 @code{<<reference>>}.
13662 This behavior is illustrated in the following example.  Because the
13663 @code{<<example>>} noweb reference appears behind the SQL comment syntax,
13664 each line of the expanded noweb reference will be commented.
13666 This code block:
13668 @example
13669 -- <<example>>
13670 @end example
13672 expands to:
13674 @example
13675 -- this is the
13676 -- multi-line body of example
13677 @end example
13679 Note that noweb replacement text that does not contain any newlines will not
13680 be affected by this change, so it is still possible to use inline noweb
13681 references.
13683 @node noweb-ref, noweb-sep, noweb, Specific header arguments
13684 @subsubsection @code{:noweb-ref}
13685 When expanding ``noweb'' style references the bodies of all code block with
13686 @emph{either} a block name matching the reference name @emph{or} a
13687 @code{:noweb-ref} header argument matching the reference name will be
13688 concatenated together to form the replacement text.
13690 By setting this header argument at the sub-tree or file level, simple code
13691 block concatenation may be achieved.  For example, when tangling the
13692 following Org mode file, the bodies of code blocks will be concatenated into
13693 the resulting pure code file@footnote{(The example needs property inheritance
13694 to be turned on for the @code{noweb-ref} property, see @ref{Property
13695 inheritance}).}.
13697 @example
13698  #+BEGIN_SRC sh :tangle yes :noweb yes :shebang #!/bin/sh
13699    <<fullest-disk>>
13700  #+END_SRC
13701  * the mount point of the fullest disk
13702    :PROPERTIES:
13703    :noweb-ref: fullest-disk
13704    :END:
13706  ** query all mounted disks
13707  #+BEGIN_SRC sh
13708    df \
13709  #+END_SRC
13711  ** strip the header row
13712  #+BEGIN_SRC sh
13713    |sed '1d' \
13714  #+END_SRC
13716  ** sort by the percent full
13717  #+BEGIN_SRC sh
13718    |awk '@{print $5 " " $6@}'|sort -n |tail -1 \
13719  #+END_SRC
13721  ** extract the mount point
13722  #+BEGIN_SRC sh
13723    |awk '@{print $2@}'
13724  #+END_SRC
13725 @end example
13727 The @code{:noweb-sep} (see @ref{noweb-sep}) header argument holds the string
13728 used to separate accumulate noweb references like those above.  By default a
13729 newline is used.
13731 @node noweb-sep, cache, noweb-ref, Specific header arguments
13732 @subsubsection @code{:noweb-sep}
13734 The @code{:noweb-sep} header argument holds the string used to separate
13735 accumulate noweb references (see @ref{noweb-ref}).  By default a newline is
13736 used.
13738 @node cache, sep, noweb-sep, Specific header arguments
13739 @subsubsection @code{:cache}
13741 The @code{:cache} header argument controls the use of in-buffer caching of
13742 the results of evaluating code blocks.  It can be used to avoid re-evaluating
13743 unchanged code blocks.  Note that the @code{:cache} header argument will not
13744 attempt to cache results when the @code{:session} header argument is used,
13745 because the results of the code block execution may be stored in the session
13746 outside of the Org mode buffer.  The @code{:cache} header argument can have
13747 one of two values: @code{yes} or @code{no}.
13749 @itemize @bullet
13750 @item @code{no}
13751 The default.  No caching takes place, and the code block will be evaluated
13752 every time it is called.
13753 @item @code{yes}
13754 Every time the code block is run a SHA1 hash of the code and arguments
13755 passed to the block will be generated.  This hash is packed into the
13756 @code{#+RESULTS:} line and will be checked on subsequent
13757 executions of the code block.  If the code block has not
13758 changed since the last time it was evaluated, it will not be re-evaluated.
13759 @end itemize
13761 Code block caches notice if the value of a variable argument
13762 to the code block has changed.  If this is the case, the cache is
13763 invalidated and the code block is re-run.  In the following example,
13764 @code{caller} will not be re-run unless the results of @code{random} have
13765 changed since it was last run.
13767 @example
13768  #+NAME: random
13769  #+BEGIN_SRC R :cache yes
13770  runif(1)
13771  #+END_SRC
13773  #+RESULTS[a2a72cd647ad44515fab62e144796432793d68e1]: random
13774  0.4659510825295
13776  #+NAME: caller
13777  #+BEGIN_SRC emacs-lisp :var x=random :cache yes
13779  #+END_SRC
13781  #+RESULTS[bec9c8724e397d5df3b696502df3ed7892fc4f5f]: caller
13782  0.254227238707244
13783 @end example
13785 @node sep, hlines, cache, Specific header arguments
13786 @subsubsection @code{:sep}
13788 The @code{:sep} header argument can be used to control the delimiter used
13789 when writing tabular results out to files external to Org mode.  This is used
13790 either when opening tabular results of a code block by calling the
13791 @code{org-open-at-point} function bound to @kbd{C-c C-o} on the code block,
13792 or when writing code block results to an external file (see @ref{file})
13793 header argument.
13795 By default, when @code{:sep} is not specified output tables are tab
13796 delimited.
13798 @node hlines, colnames, sep, Specific header arguments
13799 @subsubsection @code{:hlines}
13801 Tables are frequently represented with one or more horizontal lines, or
13802 hlines.  The @code{:hlines} argument to a code block accepts the
13803 values @code{yes} or @code{no}, with a default value of @code{no}.
13805 @itemize @bullet
13806 @item @code{no}
13807 Strips horizontal lines from the input table.  In most languages this is the
13808 desired effect because an @code{hline} symbol is interpreted as an unbound
13809 variable and raises an error.  Setting @code{:hlines no} or relying on the
13810 default value yields the following results.  Note that the @code{:hline}
13811 header argument has no effect for Emacs Lisp code blocks.
13813 @example
13814 #+TBLNAME: many-cols
13815 | a | b | c |
13816 |---+---+---|
13817 | d | e | f |
13818 |---+---+---|
13819 | g | h | i |
13821 #+NAME: echo-table
13822 #+BEGIN_SRC python :var tab=many-cols
13823   return tab
13824 #+END_SRC
13826 #+RESULTS: echo-table
13827 | a | b | c |
13828 | d | e | f |
13829 | g | h | i |
13830 @end example
13832 @item @code{yes}
13833 Leaves hlines in the table.  Setting @code{:hlines yes} has this effect.
13835 @example
13836 #+TBLNAME: many-cols
13837 | a | b | c |
13838 |---+---+---|
13839 | d | e | f |
13840 |---+---+---|
13841 | g | h | i |
13843 #+NAME: echo-table
13844 #+BEGIN_SRC python :var tab=many-cols :hlines yes
13845   return tab
13846 #+END_SRC
13848 #+RESULTS: echo-table
13849 | a | b | c |
13850 |---+---+---|
13851 | d | e | f |
13852 |---+---+---|
13853 | g | h | i |
13854 @end example
13855 @end itemize
13857 @node colnames, rownames, hlines, Specific header arguments
13858 @subsubsection @code{:colnames}
13860 The @code{:colnames} header argument accepts the values @code{yes},
13861 @code{no}, or @code{nil} for unassigned.  The default value is @code{nil}.
13862 Note that the behavior of the @code{:colnames} header argument may differ
13863 across languages.  For example Emacs Lisp code blocks ignore the
13864 @code{:colnames} header argument entirely given the ease with which tables
13865 with column names may be handled directly in Emacs Lisp.
13867 @itemize @bullet
13868 @item @code{nil}
13869 If an input table looks like it has column names
13870 (because its second row is an hline), then the column
13871 names will be removed from the table before
13872 processing, then reapplied to the results.
13874 @example
13875 #+TBLNAME: less-cols
13876 | a |
13877 |---|
13878 | b |
13879 | c |
13881 #+NAME: echo-table-again
13882 #+BEGIN_SRC python :var tab=less-cols
13883   return [[val + '*' for val in row] for row in tab]
13884 #+END_SRC
13886 #+RESULTS: echo-table-again
13887 | a  |
13888 |----|
13889 | b* |
13890 | c* |
13891 @end example
13893 Please note that column names are not removed before the table is indexed
13894 using variable indexing @xref{var, Indexable variable values}.
13896 @item @code{no}
13897 No column name pre-processing takes place
13899 @item @code{yes}
13900 Column names are removed and reapplied as with @code{nil} even if the table
13901 does not ``look like'' it has column names (i.e., the second row is not an
13902 hline)
13903 @end itemize
13905 @node rownames, shebang, colnames, Specific header arguments
13906 @subsubsection @code{:rownames}
13908 The @code{:rownames} header argument can take on the values @code{yes} or
13909 @code{no}, with a default value of @code{no}.  Note that Emacs Lisp code
13910 blocks ignore the @code{:rownames} header argument entirely given the ease
13911 with which tables with row names may be handled directly in Emacs Lisp.
13913 @itemize @bullet
13914 @item @code{no}
13915 No row name pre-processing will take place.
13917 @item @code{yes}
13918 The first column of the table is removed from the table before processing,
13919 and is then reapplied to the results.
13921 @example
13922 #+TBLNAME: with-rownames
13923 | one | 1 | 2 | 3 | 4 |  5 |
13924 | two | 6 | 7 | 8 | 9 | 10 |
13926 #+NAME: echo-table-once-again
13927 #+BEGIN_SRC python :var tab=with-rownames :rownames yes
13928   return [[val + 10 for val in row] for row in tab]
13929 #+END_SRC
13931 #+RESULTS: echo-table-once-again
13932 | one | 11 | 12 | 13 | 14 | 15 |
13933 | two | 16 | 17 | 18 | 19 | 20 |
13934 @end example
13936 Please note that row names are not removed before the table is indexed using
13937 variable indexing @xref{var, Indexable variable values}.
13939 @end itemize
13941 @node shebang, eval, rownames, Specific header arguments
13942 @subsubsection @code{:shebang}
13944 Setting the @code{:shebang} header argument to a string value
13945 (e.g., @code{:shebang "#!/bin/bash"}) causes the string to be inserted as the
13946 first line of any tangled file holding the code block, and the file
13947 permissions of the tangled file are set to make it executable.
13949 @node eval, wrap, shebang, Specific header arguments
13950 @subsubsection @code{:eval}
13951 The @code{:eval} header argument can be used to limit the evaluation of
13952 specific code blocks.  The @code{:eval} header argument can be useful for
13953 protecting against the evaluation of dangerous code blocks or to ensure that
13954 evaluation will require a query regardless of the value of the
13955 @code{org-confirm-babel-evaluate} variable.  The possible values of
13956 @code{:eval} and their effects are shown below.
13958 @table @code
13959 @item never or no
13960 The code block will not be evaluated under any circumstances.
13961 @item query
13962 Evaluation of the code block will require a query.
13963 @item never-export or no-export
13964 The code block will not be evaluated during export but may still be called
13965 interactively.
13966 @item query-export
13967 Evaluation of the code block during export will require a query.
13968 @end table
13970 If this header argument is not set then evaluation is determined by the value
13971 of the @code{org-confirm-babel-evaluate} variable see @ref{Code evaluation
13972 security}.
13974 @node wrap,  , eval, Specific header arguments
13975 @subsubsection @code{:wrap}
13976 The @code{:wrap} header argument is used to mark the results of source block
13977 evaluation.  The header argument can be passed a string that will be appended
13978 to @code{#+BEGIN_} and @code{#+END_}, which will then be used to wrap the
13979 results.  If not string is specified then the results will be wrapped in a
13980 @code{#+BEGIN/END_RESULTS} block.
13982 @node Results of evaluation, Noweb reference syntax, Header arguments, Working With Source Code
13983 @section Results of evaluation
13984 @cindex code block, results of evaluation
13985 @cindex source code, results of evaluation
13987 The way in which results are handled depends on whether a session is invoked,
13988 as well as on whether @code{:results value} or @code{:results output} is
13989 used.  The following table shows the table possibilities.  For a full listing
13990 of the possible results header arguments see @ref{results}.
13992 @multitable @columnfractions 0.26 0.33 0.41
13993 @item @tab @b{Non-session} @tab @b{Session}
13994 @item @code{:results value} @tab value of last expression @tab value of last expression
13995 @item @code{:results output} @tab contents of STDOUT @tab concatenation of interpreter output
13996 @end multitable
13998 Note: With @code{:results value}, the result in both @code{:session} and
13999 non-session is returned to Org mode as a table (a one- or two-dimensional
14000 vector of strings or numbers) when appropriate.
14002 @subsection Non-session
14003 @subsubsection @code{:results value}
14004 This is the default.  Internally, the value is obtained by wrapping the code
14005 in a function definition in the external language, and evaluating that
14006 function.  Therefore, code should be written as if it were the body of such a
14007 function.  In particular, note that Python does not automatically return a
14008 value from a function unless a @code{return} statement is present, and so a
14009 @samp{return} statement will usually be required in Python.
14011 This is the only one of the four evaluation contexts in which the code is
14012 automatically wrapped in a function definition.
14014 @subsubsection @code{:results output}
14015 The code is passed to the interpreter as an external process, and the
14016 contents of the standard output stream are returned as text.  (In certain
14017 languages this also contains the error output stream; this is an area for
14018 future work.)
14020 @subsection Session
14021 @subsubsection @code{:results value}
14022 The code is passed to an interpreter running as an interactive Emacs inferior
14023 process.  Only languages which provide tools for interactive evaluation of
14024 code have session support, so some language (e.g., C and ditaa) do not
14025 support the @code{:session} header argument, and in other languages (e.g.,
14026 Python and Haskell) which have limitations on the code which may be entered
14027 into interactive sessions, those limitations apply to the code in code blocks
14028 using the @code{:session} header argument as well.
14030 Unless the @code{:results output} option is supplied (see below) the result
14031 returned is the result of the last evaluation performed by the
14032 interpreter.  (This is obtained in a language-specific manner: the value of
14033 the variable @code{_} in Python and Ruby, and the value of @code{.Last.value}
14034 in R).
14036 @subsubsection @code{:results output}
14037 The code is passed to the interpreter running as an interactive Emacs
14038 inferior process.  The result returned is the concatenation of the sequence of
14039 (text) output from the interactive interpreter.  Notice that this is not
14040 necessarily the same as what would be sent to @code{STDOUT} if the same code
14041 were passed to a non-interactive interpreter running as an external
14042 process.  For example, compare the following two blocks:
14044 @example
14045 #+BEGIN_SRC python :results output
14046  print "hello"
14048  print "bye"
14049 #+END_SRC
14051 #+RESULTS:
14052 : hello
14053 : bye
14054 @end example
14056 In non-session mode, the `2' is not printed and does not appear.
14058 @example
14059 #+BEGIN_SRC python :results output :session
14060  print "hello"
14062  print "bye"
14063 #+END_SRC
14065 #+RESULTS:
14066 : hello
14067 : 2
14068 : bye
14069 @end example
14071 But in @code{:session} mode, the interactive interpreter receives input `2'
14072 and prints out its value, `2'.  (Indeed, the other print statements are
14073 unnecessary here).
14075 @node Noweb reference syntax, Key bindings and useful functions, Results of evaluation, Working With Source Code
14076 @section Noweb reference syntax
14077 @cindex code block, noweb reference
14078 @cindex syntax, noweb
14079 @cindex source code, noweb reference
14081 The ``noweb'' (see @uref{http://www.cs.tufts.edu/~nr/noweb/}) Literate
14082 Programming system allows named blocks of code to be referenced by using the
14083 familiar Noweb syntax:
14085 @example
14086 <<code-block-name>>
14087 @end example
14089 When a code block is tangled or evaluated, whether or not ``noweb''
14090 references are expanded depends upon the value of the @code{:noweb} header
14091 argument.  If @code{:noweb yes}, then a Noweb reference is expanded before
14092 evaluation.  If @code{:noweb no}, the default, then the reference is not
14093 expanded before evaluation.  See the @ref{noweb-ref} header argument for
14094 a more flexible way to resolve noweb references.
14096 It is possible to include the @emph{results} of a code block rather than the
14097 body.  This is done by appending parenthesis to the code block name which may
14098 optionally contain arguments to the code block as shown below.
14100 @example
14101 <<code-block-name(optional arguments)>>
14102 @end example
14104 Note: the default value, @code{:noweb no}, was chosen to ensure that
14105 correct code is not broken in a language, such as Ruby, where
14106 @code{<<arg>>} is a syntactically valid construct.  If @code{<<arg>>} is not
14107 syntactically valid in languages that you use, then please consider setting
14108 the default value.
14110 Note: if noweb tangling is slow in large Org mode files consider setting the
14111 @code{*org-babel-use-quick-and-dirty-noweb-expansion*} variable to true.
14112 This will result in faster noweb reference resolution at the expense of not
14113 correctly resolving inherited values of the @code{:noweb-ref} header
14114 argument.
14116 @node Key bindings and useful functions, Batch execution, Noweb reference syntax, Working With Source Code
14117 @section Key bindings and useful functions
14118 @cindex code block, key bindings
14120 Many common Org mode key sequences are re-bound depending on
14121 the context.
14123 Within a code block, the following key bindings
14124 are active:
14126 @multitable @columnfractions 0.25 0.75
14127 @kindex C-c C-c
14128 @item @kbd{C-c C-c} @tab @code{org-babel-execute-src-block}
14129 @kindex C-c C-o
14130 @item @kbd{C-c C-o} @tab @code{org-babel-open-src-block-result}
14131 @kindex C-up
14132 @item @kbd{C-@key{up}}    @tab @code{org-babel-load-in-session}
14133 @kindex M-down
14134 @item @kbd{M-@key{down}}  @tab @code{org-babel-pop-to-session}
14135 @end multitable
14137 In an Org mode buffer, the following key bindings are active:
14139 @multitable @columnfractions 0.45 0.55
14140 @kindex C-c C-v p
14141 @kindex C-c C-v C-p
14142 @item @kbd{C-c C-v p} @ @ @r{or} @ @ @kbd{C-c C-v C-p} @tab @code{org-babel-previous-src-block}
14143 @kindex C-c C-v n
14144 @kindex C-c C-v C-n
14145 @item @kbd{C-c C-v n} @ @ @r{or} @ @ @kbd{C-c C-v C-n} @tab @code{org-babel-next-src-block}
14146 @kindex C-c C-v e
14147 @kindex C-c C-v C-e
14148 @item @kbd{C-c C-v e} @ @ @r{or} @ @ @kbd{C-c C-v C-e} @tab @code{org-babel-execute-maybe}
14149 @kindex C-c C-v o
14150 @kindex C-c C-v C-o
14151 @item @kbd{C-c C-v o} @ @ @r{or} @ @ @kbd{C-c C-v C-o} @tab @code{org-babel-open-src-block-result}
14152 @kindex C-c C-v v
14153 @kindex C-c C-v C-v
14154 @item @kbd{C-c C-v v} @ @ @r{or} @ @ @kbd{C-c C-v C-v} @tab @code{org-babel-expand-src-block}
14155 @kindex C-c C-v u
14156 @kindex C-c C-v C-u
14157 @item @kbd{C-c C-v u} @ @ @r{or} @ @ @kbd{C-c C-v C-u} @tab @code{org-babel-goto-src-block-head}
14158 @kindex C-c C-v g
14159 @kindex C-c C-v C-g
14160 @item @kbd{C-c C-v g} @ @ @r{or} @ @ @kbd{C-c C-v C-g} @tab @code{org-babel-goto-named-src-block}
14161 @kindex C-c C-v r
14162 @kindex C-c C-v C-r
14163 @item @kbd{C-c C-v r} @ @ @r{or} @ @ @kbd{C-c C-v C-r} @tab @code{org-babel-goto-named-result}
14164 @kindex C-c C-v b
14165 @kindex C-c C-v C-b
14166 @item @kbd{C-c C-v b} @ @ @r{or} @ @ @kbd{C-c C-v C-b} @tab @code{org-babel-execute-buffer}
14167 @kindex C-c C-v s
14168 @kindex C-c C-v C-s
14169 @item @kbd{C-c C-v s} @ @ @r{or} @ @ @kbd{C-c C-v C-s} @tab @code{org-babel-execute-subtree}
14170 @kindex C-c C-v d
14171 @kindex C-c C-v C-d
14172 @item @kbd{C-c C-v d} @ @ @r{or} @ @ @kbd{C-c C-v C-d} @tab @code{org-babel-demarcate-block}
14173 @kindex C-c C-v t
14174 @kindex C-c C-v C-t
14175 @item @kbd{C-c C-v t} @ @ @r{or} @ @ @kbd{C-c C-v C-t} @tab @code{org-babel-tangle}
14176 @kindex C-c C-v f
14177 @kindex C-c C-v C-f
14178 @item @kbd{C-c C-v f} @ @ @r{or} @ @ @kbd{C-c C-v C-f} @tab @code{org-babel-tangle-file}
14179 @kindex C-c C-v c
14180 @kindex C-c C-v C-c
14181 @item @kbd{C-c C-v c} @ @ @r{or} @ @ @kbd{C-c C-v C-c} @tab @code{org-babel-check-src-block}
14182 @kindex C-c C-v j
14183 @kindex C-c C-v C-j
14184 @item @kbd{C-c C-v j} @ @ @r{or} @ @ @kbd{C-c C-v C-j} @tab @code{org-babel-insert-header-arg}
14185 @kindex C-c C-v l
14186 @kindex C-c C-v C-l
14187 @item @kbd{C-c C-v l} @ @ @r{or} @ @ @kbd{C-c C-v C-l} @tab @code{org-babel-load-in-session}
14188 @kindex C-c C-v i
14189 @kindex C-c C-v C-i
14190 @item @kbd{C-c C-v i} @ @ @r{or} @ @ @kbd{C-c C-v C-i} @tab @code{org-babel-lob-ingest}
14191 @kindex C-c C-v I
14192 @kindex C-c C-v C-I
14193 @item @kbd{C-c C-v I} @ @ @r{or} @ @ @kbd{C-c C-v C-I} @tab @code{org-babel-view-src-block-info}
14194 @kindex C-c C-v z
14195 @kindex C-c C-v C-z
14196 @item @kbd{C-c C-v z} @ @ @r{or} @ @ @kbd{C-c C-v C-z} @tab @code{org-babel-switch-to-session-with-code}
14197 @kindex C-c C-v a
14198 @kindex C-c C-v C-a
14199 @item @kbd{C-c C-v a} @ @ @r{or} @ @ @kbd{C-c C-v C-a} @tab @code{org-babel-sha1-hash}
14200 @kindex C-c C-v h
14201 @kindex C-c C-v C-h
14202 @item @kbd{C-c C-v h} @ @ @r{or} @ @ @kbd{C-c C-v C-h} @tab @code{org-babel-describe-bindings}
14203 @kindex C-c C-v x
14204 @kindex C-c C-v C-x
14205 @item @kbd{C-c C-v x} @ @ @r{or} @ @ @kbd{C-c C-v C-x} @tab @code{org-babel-do-key-sequence-in-edit-buffer}
14206 @end multitable
14208 @c When possible these keybindings were extended to work when the control key is
14209 @c kept pressed, resulting in the following additional keybindings.
14211 @c @multitable @columnfractions 0.25 0.75
14212 @c @item @kbd{C-c C-v C-a} @tab @code{org-babel-sha1-hash}
14213 @c @item @kbd{C-c C-v C-b} @tab @code{org-babel-execute-buffer}
14214 @c @item @kbd{C-c C-v C-f} @tab @code{org-babel-tangle-file}
14215 @c @item @kbd{C-c C-v C-l} @tab @code{org-babel-lob-ingest}
14216 @c @item @kbd{C-c C-v C-p} @tab @code{org-babel-expand-src-block}
14217 @c @item @kbd{C-c C-v C-s} @tab @code{org-babel-execute-subtree}
14218 @c @item @kbd{C-c C-v C-t} @tab @code{org-babel-tangle}
14219 @c @item @kbd{C-c C-v C-z} @tab @code{org-babel-switch-to-session}
14220 @c @end multitable
14222 @node Batch execution,  , Key bindings and useful functions, Working With Source Code
14223 @section Batch execution
14224 @cindex code block, batch execution
14225 @cindex source code, batch execution
14227 It is possible to call functions from the command line.  This shell
14228 script calls @code{org-babel-tangle} on every one of its arguments.
14230 Be sure to adjust the paths to fit your system.
14232 @example
14233 #!/bin/sh
14234 # -*- mode: shell-script -*-
14236 # tangle files with org-mode
14238 DIR=`pwd`
14239 FILES=""
14241 # wrap each argument in the code required to call tangle on it
14242 for i in $@@; do
14243     FILES="$FILES \"$i\""
14244 done
14246 emacs -Q --batch \
14247 --eval "(progn
14248 (add-to-list 'load-path (expand-file-name \"~/src/org/lisp/\"))
14249 (add-to-list 'load-path (expand-file-name \"~/src/org/contrib/lisp/\" t))
14250 (require 'org)(require 'org-exp)(require 'ob)(require 'ob-tangle)
14251 (mapc (lambda (file)
14252        (find-file (expand-file-name file \"$DIR\"))
14253        (org-babel-tangle)
14254        (kill-buffer)) '($FILES)))" 2>&1 |grep tangled
14255 @end example
14257 @node Miscellaneous, Hacking, Working With Source Code, Top
14258 @chapter Miscellaneous
14260 @menu
14261 * Completion::                  M-TAB knows what you need
14262 * Easy Templates::              Quick insertion of structural elements
14263 * Speed keys::                  Electric commands at the beginning of a headline
14264 * Code evaluation security::    Org mode files evaluate inline code
14265 * Customization::               Adapting Org to your taste
14266 * In-buffer settings::          Overview of the #+KEYWORDS
14267 * The very busy C-c C-c key::   When in doubt, press C-c C-c
14268 * Clean view::                  Getting rid of leading stars in the outline
14269 * TTY keys::                    Using Org on a tty
14270 * Interaction::                 Other Emacs packages
14271 * org-crypt.el::                Encrypting Org files
14272 @end menu
14275 @node Completion, Easy Templates, Miscellaneous, Miscellaneous
14276 @section Completion
14277 @cindex completion, of @TeX{} symbols
14278 @cindex completion, of TODO keywords
14279 @cindex completion, of dictionary words
14280 @cindex completion, of option keywords
14281 @cindex completion, of tags
14282 @cindex completion, of property keys
14283 @cindex completion, of link abbreviations
14284 @cindex @TeX{} symbol completion
14285 @cindex TODO keywords completion
14286 @cindex dictionary word completion
14287 @cindex option keyword completion
14288 @cindex tag completion
14289 @cindex link abbreviations, completion of
14291 Emacs would not be Emacs without completion, and Org mode uses it whenever it
14292 makes sense.  If you prefer an @i{iswitchb}- or @i{ido}-like interface for
14293 some of the completion prompts, you can specify your preference by setting at
14294 most one of the variables @code{org-completion-use-iswitchb}
14295 @code{org-completion-use-ido}.
14297 Org supports in-buffer completion.  This type of completion does
14298 not make use of the minibuffer.  You simply type a few letters into
14299 the buffer and use the key to complete text right there.
14301 @table @kbd
14302 @kindex M-@key{TAB}
14303 @item M-@key{TAB}
14304 Complete word at point
14305 @itemize @bullet
14306 @item
14307 At the beginning of a headline, complete TODO keywords.
14308 @item
14309 After @samp{\}, complete @TeX{} symbols supported by the exporter.
14310 @item
14311 After @samp{*}, complete headlines in the current buffer so that they
14312 can be used in search links like @samp{[[*find this headline]]}.
14313 @item
14314 After @samp{:} in a headline, complete tags.  The list of tags is taken
14315 from the variable @code{org-tag-alist} (possibly set through the
14316 @samp{#+TAGS} in-buffer option, @pxref{Setting tags}), or it is created
14317 dynamically from all tags used in the current buffer.
14318 @item
14319 After @samp{:} and not in a headline, complete property keys.  The list
14320 of keys is constructed dynamically from all keys used in the current
14321 buffer.
14322 @item
14323 After @samp{[}, complete link abbreviations (@pxref{Link abbreviations}).
14324 @item
14325 After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
14326 @samp{OPTIONS} which set file-specific options for Org mode.  When the
14327 option keyword is already complete, pressing @kbd{M-@key{TAB}} again
14328 will insert example settings for this keyword.
14329 @item
14330 In the line after @samp{#+STARTUP: }, complete startup keywords,
14331 i.e., valid keys for this line.
14332 @item
14333 Elsewhere, complete dictionary words using Ispell.
14334 @end itemize
14335 @end table
14337 @node Easy Templates, Speed keys, Completion, Miscellaneous
14338 @section Easy Templates
14339 @cindex template insertion
14340 @cindex insertion, of templates
14342 Org mode supports insertion of empty structural elements (like
14343 @code{#+BEGIN_SRC} and @code{#+END_SRC} pairs) with just a few key
14344 strokes.  This is achieved through a native template expansion mechanism.
14345 Note that Emacs has several other template mechanisms which could be used in
14346 a similar way, for example @file{yasnippet}.
14348 To insert a structural element, type a @samp{<}, followed by a template
14349 selector and @kbd{@key{TAB}}.  Completion takes effect only when the above
14350 keystrokes are typed on a line by itself.
14352 The following template selectors are currently supported.
14354 @multitable @columnfractions 0.1 0.9
14355 @item @kbd{s} @tab @code{#+BEGIN_SRC     ... #+END_SRC}
14356 @item @kbd{e} @tab @code{#+BEGIN_EXAMPLE ... #+END_EXAMPLE}
14357 @item @kbd{q} @tab @code{#+BEGIN_QUOTE   ... #+END_QUOTE}
14358 @item @kbd{v} @tab @code{#+BEGIN_VERSE   ... #+END_VERSE}
14359 @item @kbd{c} @tab @code{#+BEGIN_CENTER  ... #+END_CENTER}
14360 @item @kbd{l} @tab @code{#+BEGIN_LaTeX   ... #+END_LaTeX}
14361 @item @kbd{L} @tab @code{#+LaTeX:}
14362 @item @kbd{h} @tab @code{#+BEGIN_HTML    ... #+END_HTML}
14363 @item @kbd{H} @tab @code{#+HTML:}
14364 @item @kbd{a} @tab @code{#+BEGIN_ASCII   ... #+END_ASCII}
14365 @item @kbd{A} @tab @code{#+ASCII:}
14366 @item @kbd{i} @tab @code{#+INDEX:} line
14367 @item @kbd{I} @tab @code{#+INCLUDE:} line
14368 @end multitable
14370 For example, on an empty line, typing "<e" and then pressing TAB, will expand
14371 into a complete EXAMPLE template.
14373 You can install additional templates by customizing the variable
14374 @code{org-structure-template-alist}.  See the docstring of the variable for
14375 additional details.
14377 @node Speed keys, Code evaluation security, Easy Templates, Miscellaneous
14378 @section Speed keys
14379 @cindex speed keys
14380 @vindex org-use-speed-commands
14381 @vindex org-speed-commands-user
14383 Single keys can be made to execute commands when the cursor is at the
14384 beginning of a headline, i.e., before the first star.  Configure the variable
14385 @code{org-use-speed-commands} to activate this feature.  There is a
14386 pre-defined list of commands, and you can add more such commands using the
14387 variable @code{org-speed-commands-user}.  Speed keys do not only speed up
14388 navigation and other commands, but they also provide an alternative way to
14389 execute commands bound to keys that are not or not easily available on a TTY,
14390 or on a small mobile device with a limited keyboard.
14392 To see which commands are available, activate the feature and press @kbd{?}
14393 with the cursor at the beginning of a headline.
14395 @node Code evaluation security, Customization, Speed keys, Miscellaneous
14396 @section Code evaluation and security issues
14398 Org provides tools to work with the code snippets, including evaluating them.
14400 Running code on your machine always comes with a security risk.  Badly
14401 written or malicious code can be executed on purpose or by accident.  Org has
14402 default settings which will only evaluate such code if you give explicit
14403 permission to do so, and as a casual user of these features you should leave
14404 these precautions intact.
14406 For people who regularly work with such code, the confirmation prompts can
14407 become annoying, and you might want to turn them off.  This can be done, but
14408 you must be aware of the risks that are involved.
14410 Code evaluation can happen under the following circumstances:
14412 @table @i
14413 @item Source code blocks
14414 Source code blocks can be evaluated during export, or when pressing @kbd{C-c
14415 C-c} in the block.  The most important thing to realize here is that Org mode
14416 files which contain code snippets are, in a certain sense, like executable
14417 files.  So you should accept them and load them into Emacs only from trusted
14418 sources---just like you would do with a program you install on your computer.
14420 Make sure you know what you are doing before customizing the variables
14421 which take off the default security brakes.
14423 @defopt org-confirm-babel-evaluate
14424 When t (the default), the user is asked before every code block evaluation.
14425 When nil, the user is not asked.  When set to a function, it is called with
14426 two arguments (language and body of the code block) and should return t to
14427 ask and nil not to ask.
14428 @end defopt
14430 For example, here is how to execute "ditaa" code (which is considered safe)
14431 without asking:
14433 @example
14434 (defun my-org-confirm-babel-evaluate (lang body)
14435   (not (string= lang "ditaa")))  ; don't ask for ditaa
14436 (setq org-confirm-babel-evaluate 'my-org-confirm-babel-evaluate)
14437 @end example
14439 @item Following @code{shell} and @code{elisp} links
14440 Org has two link types that can directly evaluate code (@pxref{External
14441 links}).  These links can be problematic because the code to be evaluated is
14442 not visible.
14444 @defopt org-confirm-shell-link-function
14445 Function to queries user about shell link execution.
14446 @end defopt
14447 @defopt org-confirm-elisp-link-function
14448 Functions to query user for Emacs Lisp link execution.
14449 @end defopt
14451 @item Formulas in tables
14452 Formulas in tables (@pxref{The spreadsheet}) are code that is evaluated
14453 either by the @i{calc} interpreter, or by the @i{Emacs Lisp} interpreter.
14454 @end table
14456 @node Customization, In-buffer settings, Code evaluation security, Miscellaneous
14457 @section Customization
14458 @cindex customization
14459 @cindex options, for customization
14460 @cindex variables, for customization
14462 There are more than 500 variables that can be used to customize
14463 Org.  For the sake of compactness of the manual, I am not
14464 describing the variables here.  A structured overview of customization
14465 variables is available with @kbd{M-x org-customize}.  Or select
14466 @code{Browse Org Group} from the @code{Org->Customization} menu.  Many
14467 settings can also be activated on a per-file basis, by putting special
14468 lines into the buffer (@pxref{In-buffer settings}).
14470 @node In-buffer settings, The very busy C-c C-c key, Customization, Miscellaneous
14471 @section Summary of in-buffer settings
14472 @cindex in-buffer settings
14473 @cindex special keywords
14475 Org mode uses special lines in the buffer to define settings on a
14476 per-file basis.  These lines start with a @samp{#+} followed by a
14477 keyword, a colon, and then individual words defining a setting.  Several
14478 setting words can be in the same line, but you can also have multiple
14479 lines for the keyword.  While these settings are described throughout
14480 the manual, here is a summary.  After changing any of those lines in the
14481 buffer, press @kbd{C-c C-c} with the cursor still in the line to
14482 activate the changes immediately.  Otherwise they become effective only
14483 when the file is visited again in a new Emacs session.
14485 @vindex org-archive-location
14486 @table @kbd
14487 @item #+ARCHIVE: %s_done::
14488 This line sets the archive location for the agenda file.  It applies for
14489 all subsequent lines until the next @samp{#+ARCHIVE} line, or the end
14490 of the file.  The first such line also applies to any entries before it.
14491 The corresponding variable is @code{org-archive-location}.
14492 @item #+CATEGORY:
14493 This line sets the category for the agenda file.  The category applies
14494 for all subsequent lines until the next @samp{#+CATEGORY} line, or the
14495 end of the file.  The first such line also applies to any entries before it.
14496 @item #+COLUMNS: %25ITEM .....
14497 @cindex property, COLUMNS
14498 Set the default format for columns view.  This format applies when
14499 columns view is invoked in locations where no @code{COLUMNS} property
14500 applies.
14501 @item #+CONSTANTS: name1=value1 ...
14502 @vindex org-table-formula-constants
14503 @vindex org-table-formula
14504 Set file-local values for constants to be used in table formulas.  This
14505 line sets the local variable @code{org-table-formula-constants-local}.
14506 The global version of this variable is
14507 @code{org-table-formula-constants}.
14508 @item #+FILETAGS: :tag1:tag2:tag3:
14509 Set tags that can be inherited by any entry in the file, including the
14510 top-level entries.
14511 @item #+DRAWERS: NAME1 .....
14512 @vindex org-drawers
14513 Set the file-local set of additional drawers.  The corresponding global
14514 variable is @code{org-drawers}.
14515 @item #+LINK:  linkword replace
14516 @vindex org-link-abbrev-alist
14517 These lines (several are allowed) specify link abbreviations.
14518 @xref{Link abbreviations}.  The corresponding variable is
14519 @code{org-link-abbrev-alist}.
14520 @item #+PRIORITIES: highest lowest default
14521 @vindex org-highest-priority
14522 @vindex org-lowest-priority
14523 @vindex org-default-priority
14524 This line sets the limits and the default for the priorities.  All three
14525 must be either letters A--Z or numbers 0--9.  The highest priority must
14526 have a lower ASCII number than the lowest priority.
14527 @item #+PROPERTY: Property_Name Value
14528 This line sets a default inheritance value for entries in the current
14529 buffer, most useful for specifying the allowed values of a property.
14530 @cindex #+SETUPFILE
14531 @item #+SETUPFILE: file
14532 This line defines a file that holds more in-buffer setup.  Normally this is
14533 entirely ignored.  Only when the buffer is parsed for option-setting lines
14534 (i.e., when starting Org mode for a file, when pressing @kbd{C-c C-c} in a
14535 settings line, or when exporting), then the contents of this file are parsed
14536 as if they had been included in the buffer.  In particular, the file can be
14537 any other Org mode file with internal setup.  You can visit the file the
14538 cursor is in the line with @kbd{C-c '}.
14539 @item #+STARTUP:
14540 @cindex #+STARTUP:
14541 This line sets options to be used at startup of Org mode, when an
14542 Org file is being visited.
14544 The first set of options deals with the initial visibility of the outline
14545 tree.  The corresponding variable for global default settings is
14546 @code{org-startup-folded}, with a default value @code{t}, which means
14547 @code{overview}.
14548 @vindex org-startup-folded
14549 @cindex @code{overview}, STARTUP keyword
14550 @cindex @code{content}, STARTUP keyword
14551 @cindex @code{showall}, STARTUP keyword
14552 @cindex @code{showeverything}, STARTUP keyword
14553 @example
14554 overview         @r{top-level headlines only}
14555 content          @r{all headlines}
14556 showall          @r{no folding of any entries}
14557 showeverything   @r{show even drawer contents}
14558 @end example
14560 @vindex org-startup-indented
14561 @cindex @code{indent}, STARTUP keyword
14562 @cindex @code{noindent}, STARTUP keyword
14563 Dynamic virtual indentation is controlled by the variable
14564 @code{org-startup-indented}@footnote{Emacs 23 and Org mode 6.29 are required}
14565 @example
14566 indent     @r{start with @code{org-indent-mode} turned on}
14567 noindent   @r{start with @code{org-indent-mode} turned off}
14568 @end example
14570 @vindex org-startup-align-all-tables
14571 Then there are options for aligning tables upon visiting a file.  This
14572 is useful in files containing narrowed table columns.  The corresponding
14573 variable is @code{org-startup-align-all-tables}, with a default value
14574 @code{nil}.
14575 @cindex @code{align}, STARTUP keyword
14576 @cindex @code{noalign}, STARTUP keyword
14577 @example
14578 align      @r{align all tables}
14579 noalign    @r{don't align tables on startup}
14580 @end example
14582 @vindex org-startup-with-inline-images
14583 When visiting a file, inline images can be automatically displayed.  The
14584 corresponding variable is @code{org-startup-with-inline-images}, with a
14585 default value @code{nil} to avoid delays when visiting a file.
14586 @cindex @code{inlineimages}, STARTUP keyword
14587 @cindex @code{noinlineimages}, STARTUP keyword
14588 @example
14589 inlineimages   @r{show inline images}
14590 noinlineimages @r{don't show inline images on startup}
14591 @end example
14593 @vindex org-startup-with-latex-preview
14594 When visiting a file, @LaTeX{} fragments can be converted to images
14595 automatically.  The variable @code{org-startup-with-latex-preview} which
14596 controls this behavior, is set to @code{nil} by default to avoid delays on
14597 startup.
14598 @cindex @code{latexpreview}, STARTUP keyword
14599 @cindex @code{nolatexpreview}, STARTUP keyword
14600 @example
14601 latexpreview   @r{preview @LaTeX{} fragments}
14602 nolatexpreview @r{don't preview @LaTeX{} fragments}
14603 @end example
14605 @vindex org-log-done
14606 @vindex org-log-note-clock-out
14607 @vindex org-log-repeat
14608 Logging the closing and reopening of TODO items and clock intervals can be
14609 configured using these options (see variables @code{org-log-done},
14610 @code{org-log-note-clock-out} and @code{org-log-repeat})
14611 @cindex @code{logdone}, STARTUP keyword
14612 @cindex @code{lognotedone}, STARTUP keyword
14613 @cindex @code{nologdone}, STARTUP keyword
14614 @cindex @code{lognoteclock-out}, STARTUP keyword
14615 @cindex @code{nolognoteclock-out}, STARTUP keyword
14616 @cindex @code{logrepeat}, STARTUP keyword
14617 @cindex @code{lognoterepeat}, STARTUP keyword
14618 @cindex @code{nologrepeat}, STARTUP keyword
14619 @cindex @code{logreschedule}, STARTUP keyword
14620 @cindex @code{lognotereschedule}, STARTUP keyword
14621 @cindex @code{nologreschedule}, STARTUP keyword
14622 @cindex @code{logredeadline}, STARTUP keyword
14623 @cindex @code{lognoteredeadline}, STARTUP keyword
14624 @cindex @code{nologredeadline}, STARTUP keyword
14625 @cindex @code{logrefile}, STARTUP keyword
14626 @cindex @code{lognoterefile}, STARTUP keyword
14627 @cindex @code{nologrefile}, STARTUP keyword
14628 @cindex @code{logdrawer}, STARTUP keyword
14629 @cindex @code{nologdrawer}, STARTUP keyword
14630 @cindex @code{logstatesreversed}, STARTUP keyword
14631 @cindex @code{nologstatesreversed}, STARTUP keyword
14632 @example
14633 logdone             @r{record a timestamp when an item is marked DONE}
14634 lognotedone         @r{record timestamp and a note when DONE}
14635 nologdone           @r{don't record when items are marked DONE}
14636 logrepeat           @r{record a time when reinstating a repeating item}
14637 lognoterepeat       @r{record a note when reinstating a repeating item}
14638 nologrepeat         @r{do not record when reinstating repeating item}
14639 lognoteclock-out    @r{record a note when clocking out}
14640 nolognoteclock-out  @r{don't record a note when clocking out}
14641 logreschedule       @r{record a timestamp when scheduling time changes}
14642 lognotereschedule   @r{record a note when scheduling time changes}
14643 nologreschedule     @r{do not record when a scheduling date changes}
14644 logredeadline       @r{record a timestamp when deadline changes}
14645 lognoteredeadline   @r{record a note when deadline changes}
14646 nologredeadline     @r{do not record when a deadline date changes}
14647 logrefile           @r{record a timestamp when refiling}
14648 lognoterefile       @r{record a note when refiling}
14649 nologrefile         @r{do not record when refiling}
14650 logdrawer           @r{store log into drawer}
14651 nologdrawer         @r{store log outside of drawer}
14652 logstatesreversed   @r{reverse the order of states notes}
14653 nologstatesreversed @r{do not reverse the order of states notes}
14654 @end example
14656 @vindex org-hide-leading-stars
14657 @vindex org-odd-levels-only
14658 Here are the options for hiding leading stars in outline headings, and for
14659 indenting outlines.  The corresponding variables are
14660 @code{org-hide-leading-stars} and @code{org-odd-levels-only}, both with a
14661 default setting @code{nil} (meaning @code{showstars} and @code{oddeven}).
14662 @cindex @code{hidestars}, STARTUP keyword
14663 @cindex @code{showstars}, STARTUP keyword
14664 @cindex @code{odd}, STARTUP keyword
14665 @cindex @code{even}, STARTUP keyword
14666 @example
14667 hidestars  @r{make all but one of the stars starting a headline invisible.}
14668 showstars  @r{show all stars starting a headline}
14669 indent     @r{virtual indentation according to outline level}
14670 noindent   @r{no virtual indentation according to outline level}
14671 odd        @r{allow only odd outline levels (1,3,...)}
14672 oddeven    @r{allow all outline levels}
14673 @end example
14675 @vindex org-put-time-stamp-overlays
14676 @vindex org-time-stamp-overlay-formats
14677 To turn on custom format overlays over timestamps (variables
14678 @code{org-put-time-stamp-overlays} and
14679 @code{org-time-stamp-overlay-formats}), use
14680 @cindex @code{customtime}, STARTUP keyword
14681 @example
14682 customtime @r{overlay custom time format}
14683 @end example
14685 @vindex constants-unit-system
14686 The following options influence the table spreadsheet (variable
14687 @code{constants-unit-system}).
14688 @cindex @code{constcgs}, STARTUP keyword
14689 @cindex @code{constSI}, STARTUP keyword
14690 @example
14691 constcgs   @r{@file{constants.el} should use the c-g-s unit system}
14692 constSI    @r{@file{constants.el} should use the SI unit system}
14693 @end example
14695 @vindex org-footnote-define-inline
14696 @vindex org-footnote-auto-label
14697 @vindex org-footnote-auto-adjust
14698 To influence footnote settings, use the following keywords.  The
14699 corresponding variables are @code{org-footnote-define-inline},
14700 @code{org-footnote-auto-label}, and @code{org-footnote-auto-adjust}.
14701 @cindex @code{fninline}, STARTUP keyword
14702 @cindex @code{nofninline}, STARTUP keyword
14703 @cindex @code{fnlocal}, STARTUP keyword
14704 @cindex @code{fnprompt}, STARTUP keyword
14705 @cindex @code{fnauto}, STARTUP keyword
14706 @cindex @code{fnconfirm}, STARTUP keyword
14707 @cindex @code{fnplain}, STARTUP keyword
14708 @cindex @code{fnadjust}, STARTUP keyword
14709 @cindex @code{nofnadjust}, STARTUP keyword
14710 @example
14711 fninline    @r{define footnotes inline}
14712 fnnoinline  @r{define footnotes in separate section}
14713 fnlocal     @r{define footnotes near first reference, but not inline}
14714 fnprompt    @r{prompt for footnote labels}
14715 fnauto      @r{create @code{[fn:1]}-like labels automatically (default)}
14716 fnconfirm   @r{offer automatic label for editing or confirmation}
14717 fnplain     @r{create @code{[1]}-like labels automatically}
14718 fnadjust    @r{automatically renumber and sort footnotes}
14719 nofnadjust  @r{do not renumber and sort automatically}
14720 @end example
14722 @cindex org-hide-block-startup
14723 To hide blocks on startup, use these keywords.  The corresponding variable is
14724 @code{org-hide-block-startup}.
14725 @cindex @code{hideblocks}, STARTUP keyword
14726 @cindex @code{nohideblocks}, STARTUP keyword
14727 @example
14728 hideblocks   @r{Hide all begin/end blocks on startup}
14729 nohideblocks @r{Do not hide blocks on startup}
14730 @end example
14732 @cindex org-pretty-entities
14733 The display of entities as UTF-8 characters is governed by the variable
14734 @code{org-pretty-entities} and the keywords
14735 @cindex @code{entitiespretty}, STARTUP keyword
14736 @cindex @code{entitiesplain}, STARTUP keyword
14737 @example
14738 entitiespretty  @r{Show entities as UTF-8 characters where possible}
14739 entitiesplain   @r{Leave entities plain}
14740 @end example
14742 @item #+TAGS:  TAG1(c1) TAG2(c2)
14743 @vindex org-tag-alist
14744 These lines (several such lines are allowed) specify the valid tags in
14745 this file, and (potentially) the corresponding @emph{fast tag selection}
14746 keys.  The corresponding variable is @code{org-tag-alist}.
14747 @item #+TBLFM:
14748 This line contains the formulas for the table directly above the line.
14749 @item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+DATE:,
14750 @itemx #+OPTIONS:, #+BIND:,
14751 @itemx #+DESCRIPTION:, #+KEYWORDS:,
14752 @itemx #+LaTeX_HEADER:, #+HTML_HEAD:, #+HTML_LINK_UP:, #+HTML_LINK_HOME:,
14753 @itemx #+SELECT_TAGS:, #+EXCLUDE_TAGS:
14754 These lines provide settings for exporting files.  For more details see
14755 @ref{Export options}.
14756 @item #+TODO:    #+SEQ_TODO:   #+TYP_TODO:
14757 @vindex org-todo-keywords
14758 These lines set the TODO keywords and their interpretation in the
14759 current file.  The corresponding variable is @code{org-todo-keywords}.
14760 @end table
14762 @node The very busy C-c C-c key, Clean view, In-buffer settings, Miscellaneous
14763 @section The very busy C-c C-c key
14764 @kindex C-c C-c
14765 @cindex C-c C-c, overview
14767 The key @kbd{C-c C-c} has many purposes in Org, which are all
14768 mentioned scattered throughout this manual.  One specific function of
14769 this key is to add @emph{tags} to a headline (@pxref{Tags}).  In many
14770 other circumstances it means something like @emph{``Hey Org, look
14771 here and update according to what you see here''}.  Here is a summary of
14772 what this means in different contexts.
14774 @itemize @minus
14775 @item
14776 If there are highlights in the buffer from the creation of a sparse
14777 tree, or from clock display, remove these highlights.
14778 @item
14779 If the cursor is in one of the special @code{#+KEYWORD} lines, this
14780 triggers scanning the buffer for these lines and updating the
14781 information.
14782 @item
14783 If the cursor is inside a table, realign the table.  This command
14784 works even if the automatic table editor has been turned off.
14785 @item
14786 If the cursor is on a @code{#+TBLFM} line, re-apply the formulas to
14787 the entire table.
14788 @item
14789 If the current buffer is a capture buffer, close the note and file it.
14790 With a prefix argument, file it, without further interaction, to the
14791 default location.
14792 @item
14793 If the cursor is on a @code{<<<target>>>}, update radio targets and
14794 corresponding links in this buffer.
14795 @item
14796 If the cursor is in a property line or at the start or end of a property
14797 drawer, offer property commands.
14798 @item
14799 If the cursor is at a footnote reference, go to the corresponding
14800 definition, and vice versa.
14801 @item
14802 If the cursor is on a statistics cookie, update it.
14803 @item
14804 If the cursor is in a plain list item with a checkbox, toggle the status
14805 of the checkbox.
14806 @item
14807 If the cursor is on a numbered item in a plain list, renumber the
14808 ordered list.
14809 @item
14810 If the cursor is on the @code{#+BEGIN} line of a dynamic block, the
14811 block is updated.
14812 @item
14813 If the cursor is at a timestamp, fix the day name in the timestamp.
14814 @end itemize
14816 @node Clean view, TTY keys, The very busy C-c C-c key, Miscellaneous
14817 @section A cleaner outline view
14818 @cindex hiding leading stars
14819 @cindex dynamic indentation
14820 @cindex odd-levels-only outlines
14821 @cindex clean outline view
14823 Some people find it noisy and distracting that the Org headlines start with a
14824 potentially large number of stars, and that text below the headlines is not
14825 indented.  While this is no problem when writing a @emph{book-like} document
14826 where the outline headings are really section headings, in a more
14827 @emph{list-oriented} outline, indented structure is a lot cleaner:
14829 @example
14830 @group
14831 * Top level headline             |    * Top level headline
14832 ** Second level                  |      * Second level
14833 *** 3rd level                    |        * 3rd level
14834 some text                        |          some text
14835 *** 3rd level                    |        * 3rd level
14836 more text                        |          more text
14837 * Another top level headline     |    * Another top level headline
14838 @end group
14839 @end example
14841 @noindent
14843 If you are using at least Emacs 23.2@footnote{Emacs 23.1 can actually crash
14844 with @code{org-indent-mode}} and version 6.29 of Org, this kind of view can
14845 be achieved dynamically at display time using @code{org-indent-mode}.  In
14846 this minor mode, all lines are prefixed for display with the necessary amount
14847 of space@footnote{@code{org-indent-mode} also sets the @code{wrap-prefix}
14848 property, such that @code{visual-line-mode} (or purely setting
14849 @code{word-wrap}) wraps long lines (including headlines) correctly indented.
14850 }.  Also headlines are prefixed with additional stars, so that the amount of
14851 indentation shifts by two@footnote{See the variable
14852 @code{org-indent-indentation-per-level}.}  spaces per level.  All headline
14853 stars but the last one are made invisible using the @code{org-hide}
14854 face@footnote{Turning on @code{org-indent-mode} sets
14855 @code{org-hide-leading-stars} to @code{t} and @code{org-adapt-indentation} to
14856 @code{nil}.}; see below under @samp{2.} for more information on how this
14857 works.  You can turn on @code{org-indent-mode} for all files by customizing
14858 the variable @code{org-startup-indented}, or you can turn it on for
14859 individual files using
14861 @example
14862 #+STARTUP: indent
14863 @end example
14865 If you want a similar effect in an earlier version of Emacs and/or Org, or if
14866 you want the indentation to be hard space characters so that the plain text
14867 file looks as similar as possible to the Emacs display, Org supports you in
14868 the following way:
14870 @enumerate
14871 @item
14872 @emph{Indentation of text below headlines}@*
14873 You may indent text below each headline to make the left boundary line up
14874 with the headline, like
14876 @example
14877 *** 3rd level
14878     more text, now indented
14879 @end example
14881 @vindex org-adapt-indentation
14882 Org supports this with paragraph filling, line wrapping, and structure
14883 editing@footnote{See also the variable @code{org-adapt-indentation}.},
14884 preserving or adapting the indentation as appropriate.
14886 @item
14887 @vindex org-hide-leading-stars
14888 @emph{Hiding leading stars}@* You can modify the display in such a way that
14889 all leading stars become invisible.  To do this in a global way, configure
14890 the variable @code{org-hide-leading-stars} or change this on a per-file basis
14891 with
14893 @example
14894 #+STARTUP: hidestars
14895 #+STARTUP: showstars
14896 @end example
14898 With hidden stars, the tree becomes:
14900 @example
14901 @group
14902 * Top level headline
14903  * Second level
14904   * 3rd level
14905   ...
14906 @end group
14907 @end example
14909 @noindent
14910 @vindex org-hide @r{(face)}
14911 The leading stars are not truly replaced by whitespace, they are only
14912 fontified with the face @code{org-hide} that uses the background color as
14913 font color.  If you are not using either white or black background, you may
14914 have to customize this face to get the wanted effect.  Another possibility is
14915 to set this font such that the extra stars are @i{almost} invisible, for
14916 example using the color @code{grey90} on a white background.
14918 @item
14919 @vindex org-odd-levels-only
14920 Things become cleaner still if you skip all the even levels and use only odd
14921 levels 1, 3, 5..., effectively adding two stars to go from one outline level
14922 to the next@footnote{When you need to specify a level for a property search
14923 or refile targets, @samp{LEVEL=2} will correspond to 3 stars, etc.}.  In this
14924 way we get the outline view shown at the beginning of this section.  In order
14925 to make the structure editing and export commands handle this convention
14926 correctly, configure the variable @code{org-odd-levels-only}, or set this on
14927 a per-file basis with one of the following lines:
14929 @example
14930 #+STARTUP: odd
14931 #+STARTUP: oddeven
14932 @end example
14934 You can convert an Org file from single-star-per-level to the
14935 double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels
14936 RET} in that file.  The reverse operation is @kbd{M-x
14937 org-convert-to-oddeven-levels}.
14938 @end enumerate
14940 @node TTY keys, Interaction, Clean view, Miscellaneous
14941 @section Using Org on a tty
14942 @cindex tty key bindings
14944 Because Org contains a large number of commands, by default many of
14945 Org's core commands are bound to keys that are generally not
14946 accessible on a tty, such as the cursor keys (@key{left}, @key{right},
14947 @key{up}, @key{down}), @key{TAB} and @key{RET}, in particular when used
14948 together with modifiers like @key{Meta} and/or @key{Shift}.  To access
14949 these commands on a tty when special keys are unavailable, the following
14950 alternative bindings can be used.  The tty bindings below will likely be
14951 more cumbersome; you may find for some of the bindings below that a
14952 customized workaround suits you better.  For example, changing a timestamp
14953 is really only fun with @kbd{S-@key{cursor}} keys, whereas on a
14954 tty you would rather use @kbd{C-c .} to re-insert the timestamp.
14956 @multitable @columnfractions 0.15 0.2 0.1 0.2
14957 @item @b{Default} @tab @b{Alternative 1} @tab @b{Speed key} @tab @b{Alternative 2}
14958 @item @kbd{S-@key{TAB}}     @tab @kbd{C-u @key{TAB}}       @tab @kbd{C} @tab
14959 @item @kbd{M-@key{left}}    @tab @kbd{C-c C-x l}           @tab @kbd{l} @tab @kbd{@key{Esc} @key{left}}
14960 @item @kbd{M-S-@key{left}}  @tab @kbd{C-c C-x L}           @tab @kbd{L} @tab
14961 @item @kbd{M-@key{right}}   @tab @kbd{C-c C-x r}           @tab @kbd{r} @tab @kbd{@key{Esc} @key{right}}
14962 @item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R}           @tab @kbd{R} @tab
14963 @item @kbd{M-@key{up}}      @tab @kbd{C-c C-x u}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{up}}
14964 @item @kbd{M-S-@key{up}}    @tab @kbd{C-c C-x U}           @tab @kbd{U} @tab
14965 @item @kbd{M-@key{down}}    @tab @kbd{C-c C-x d}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{down}}
14966 @item @kbd{M-S-@key{down}}  @tab @kbd{C-c C-x D}           @tab @kbd{D} @tab
14967 @item @kbd{S-@key{RET}}     @tab @kbd{C-c C-x c}           @tab @kbd{ } @tab
14968 @item @kbd{M-@key{RET}}     @tab @kbd{C-c C-x m}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{RET}}
14969 @item @kbd{M-S-@key{RET}}   @tab @kbd{C-c C-x M}           @tab @kbd{ } @tab
14970 @item @kbd{S-@key{left}}    @tab @kbd{C-c @key{left}}      @tab @kbd{ } @tab
14971 @item @kbd{S-@key{right}}   @tab @kbd{C-c @key{right}}     @tab @kbd{ } @tab
14972 @item @kbd{S-@key{up}}      @tab @kbd{C-c @key{up}}        @tab @kbd{ } @tab
14973 @item @kbd{S-@key{down}}    @tab @kbd{C-c @key{down}}      @tab @kbd{ } @tab
14974 @item @kbd{C-S-@key{left}}  @tab @kbd{C-c C-x @key{left}}  @tab @kbd{ } @tab
14975 @item @kbd{C-S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab @kbd{ } @tab
14976 @end multitable
14979 @node Interaction, org-crypt.el, TTY keys, Miscellaneous
14980 @section Interaction with other packages
14981 @cindex packages, interaction with other
14982 Org lives in the world of GNU Emacs and interacts in various ways
14983 with other code out there.
14985 @menu
14986 * Cooperation::                 Packages Org cooperates with
14987 * Conflicts::                   Packages that lead to conflicts
14988 @end menu
14990 @node Cooperation, Conflicts, Interaction, Interaction
14991 @subsection Packages that Org cooperates with
14993 @table @asis
14994 @cindex @file{calc.el}
14995 @cindex Gillespie, Dave
14996 @item @file{calc.el} by Dave Gillespie
14997 Org uses the Calc package for implementing spreadsheet
14998 functionality in its tables (@pxref{The spreadsheet}).  Org
14999 checks for the availability of Calc by looking for the function
15000 @code{calc-eval} which will have been autoloaded during setup if Calc has
15001 been installed properly.  As of Emacs 22, Calc is part of the Emacs
15002 distribution.  Another possibility for interaction between the two
15003 packages is using Calc for embedded calculations.  @xref{Embedded Mode,
15004 , Embedded Mode, calc, GNU Emacs Calc Manual}.
15005 @item @file{constants.el} by Carsten Dominik
15006 @cindex @file{constants.el}
15007 @cindex Dominik, Carsten
15008 @vindex org-table-formula-constants
15009 In a table formula (@pxref{The spreadsheet}), it is possible to use
15010 names for natural constants or units.  Instead of defining your own
15011 constants in the variable @code{org-table-formula-constants}, install
15012 the @file{constants} package which defines a large number of constants
15013 and units, and lets you use unit prefixes like @samp{M} for
15014 @samp{Mega}, etc.  You will need version 2.0 of this package, available
15015 at @url{http://www.astro.uva.nl/~dominik/Tools}.  Org checks for
15016 the function @code{constants-get}, which has to be autoloaded in your
15017 setup.  See the installation instructions in the file
15018 @file{constants.el}.
15019 @item @file{cdlatex.el} by Carsten Dominik
15020 @cindex @file{cdlatex.el}
15021 @cindex Dominik, Carsten
15022 Org mode can make use of the CD@LaTeX{} package to efficiently enter
15023 @LaTeX{} fragments into Org files.  See @ref{CDLaTeX mode}.
15024 @item @file{imenu.el} by Ake Stenhoff and Lars Lindberg
15025 @cindex @file{imenu.el}
15026 Imenu allows menu access to an index of items in a file.  Org mode
15027 supports Imenu---all you need to do to get the index is the following:
15028 @lisp
15029 (add-hook 'org-mode-hook
15030           (lambda () (imenu-add-to-menubar "Imenu")))
15031 @end lisp
15032 @vindex org-imenu-depth
15033 By default the index is two levels deep---you can modify the depth using
15034 the option @code{org-imenu-depth}.
15035 @item @file{remember.el} by John Wiegley
15036 @cindex @file{remember.el}
15037 @cindex Wiegley, John
15038 Org used to use this package for capture, but no longer does.
15039 @item @file{speedbar.el} by Eric M. Ludlam
15040 @cindex @file{speedbar.el}
15041 @cindex Ludlam, Eric M.
15042 Speedbar is a package that creates a special frame displaying files and
15043 index items in files.  Org mode supports Speedbar and allows you to
15044 drill into Org files directly from the Speedbar.  It also allows you to
15045 restrict the scope of agenda commands to a file or a subtree by using
15046 the command @kbd{<} in the Speedbar frame.
15047 @cindex @file{table.el}
15048 @item @file{table.el} by Takaaki Ota
15049 @kindex C-c C-c
15050 @cindex table editor, @file{table.el}
15051 @cindex @file{table.el}
15052 @cindex Ota, Takaaki
15054 Complex ASCII tables with automatic line wrapping, column- and row-spanning,
15055 and alignment can be created using the Emacs table package by Takaaki Ota
15056 (@uref{http://sourceforge.net/projects/table}, and also part of Emacs 22).
15057 Org mode will recognize these tables and export them properly.  Because of
15058 interference with other Org mode functionality, you unfortunately cannot edit
15059 these tables directly in the buffer.  Instead, you need to use the command
15060 @kbd{C-c '} to edit them, similar to source code snippets.
15062 @table @kbd
15063 @orgcmd{C-c ',org-edit-special}
15064 Edit a @file{table.el} table.  Works when the cursor is in a table.el table.
15066 @orgcmd{C-c ~,org-table-create-with-table.el}
15067 Insert a @file{table.el} table.  If there is already a table at point, this
15068 command converts it between the @file{table.el} format and the Org mode
15069 format.  See the documentation string of the command
15070 @code{org-convert-table} for the restrictions under which this is
15071 possible.
15072 @end table
15073 @file{table.el} is part of Emacs since Emacs 22.
15074 @item @file{footnote.el} by Steven L. Baur
15075 @cindex @file{footnote.el}
15076 @cindex Baur, Steven L.
15077 Org mode recognizes numerical footnotes as provided by this package.
15078 However, Org mode also has its own footnote support (@pxref{Footnotes}),
15079 which makes using @file{footnote.el} unnecessary.
15080 @end table
15082 @node Conflicts,  , Cooperation, Interaction
15083 @subsection Packages that lead to conflicts with Org mode
15085 @table @asis
15087 @cindex @code{shift-selection-mode}
15088 @vindex org-support-shift-select
15089 In Emacs 23, @code{shift-selection-mode} is on by default, meaning that
15090 cursor motions combined with the shift key should start or enlarge regions.
15091 This conflicts with the use of @kbd{S-@key{cursor}} commands in Org to change
15092 timestamps, TODO keywords, priorities, and item bullet types if the cursor is
15093 at such a location.  By default, @kbd{S-@key{cursor}} commands outside
15094 special contexts don't do anything, but you can customize the variable
15095 @code{org-support-shift-select}.  Org mode then tries to accommodate shift
15096 selection by (i) using it outside of the special contexts where special
15097 commands apply, and by (ii) extending an existing active region even if the
15098 cursor moves across a special context.
15100 @item @file{CUA.el} by Kim. F. Storm
15101 @cindex @file{CUA.el}
15102 @cindex Storm, Kim. F.
15103 @vindex org-replace-disputed-keys
15104 Key bindings in Org conflict with the @kbd{S-<cursor>} keys used by CUA mode
15105 (as well as @code{pc-select-mode} and @code{s-region-mode}) to select and extend the
15106 region.  In fact, Emacs 23 has this built-in in the form of
15107 @code{shift-selection-mode}, see previous paragraph.  If you are using Emacs
15108 23, you probably don't want to use another package for this purpose.  However,
15109 if you prefer to leave these keys to a different package while working in
15110 Org mode, configure the variable @code{org-replace-disputed-keys}.  When set,
15111 Org will move the following key bindings in Org files, and in the agenda
15112 buffer (but not during date selection).
15114 @example
15115 S-UP      @result{}  M-p             S-DOWN     @result{}  M-n
15116 S-LEFT    @result{}  M--             S-RIGHT    @result{}  M-+
15117 C-S-LEFT  @result{}  M-S--           C-S-RIGHT  @result{}  M-S-+
15118 @end example
15120 @vindex org-disputed-keys
15121 Yes, these are unfortunately more difficult to remember.  If you want
15122 to have other replacement keys, look at the variable
15123 @code{org-disputed-keys}.
15125 @item @file{filladapt.el} by Kyle Jones
15126 @cindex @file{filladapt.el}
15128 Org mode tries to do the right thing when filling paragraphs, list items and
15129 other elements.  Many users reported they had problems using both
15130 @file{filladapt.el} and Org mode, so a safe thing to do is to disable it like
15131 this:
15133 @lisp
15134 (add-hook 'org-mode-hook 'turn-off-filladapt-mode)
15135 @end lisp
15137 @item @file{yasnippet.el}
15138 @cindex @file{yasnippet.el}
15139 The way Org mode binds the TAB key (binding to @code{[tab]} instead of
15140 @code{"\t"}) overrules YASnippet's access to this key.  The following code
15141 fixed this problem:
15143 @lisp
15144 (add-hook 'org-mode-hook
15145           (lambda ()
15146             (org-set-local 'yas/trigger-key [tab])
15147             (define-key yas/keymap [tab] 'yas/next-field-or-maybe-expand)))
15148 @end lisp
15150 The latest version of yasnippet doesn't play well with Org mode.  If the
15151 above code does not fix the conflict, start by defining the following
15152 function:
15154 @lisp
15155 (defun yas/org-very-safe-expand ()
15156   (let ((yas/fallback-behavior 'return-nil)) (yas/expand)))
15157 @end lisp
15159 Then, tell Org mode what to do with the new function:
15161 @lisp
15162 (add-hook 'org-mode-hook
15163           (lambda ()
15164             (make-variable-buffer-local 'yas/trigger-key)
15165             (setq yas/trigger-key [tab])
15166             (add-to-list 'org-tab-first-hook 'yas/org-very-safe-expand)
15167             (define-key yas/keymap [tab] 'yas/next-field)))
15168 @end lisp
15170 @item @file{windmove.el} by Hovav Shacham
15171 @cindex @file{windmove.el}
15172 This package also uses the @kbd{S-<cursor>} keys, so everything written
15173 in the paragraph above about CUA mode also applies here.  If you want make
15174 the windmove function active in locations where Org mode does not have
15175 special functionality on @kbd{S-@key{cursor}}, add this to your
15176 configuration:
15178 @lisp
15179 ;; Make windmove work in org-mode:
15180 (add-hook 'org-shiftup-final-hook 'windmove-up)
15181 (add-hook 'org-shiftleft-final-hook 'windmove-left)
15182 (add-hook 'org-shiftdown-final-hook 'windmove-down)
15183 (add-hook 'org-shiftright-final-hook 'windmove-right)
15184 @end lisp
15186 @item @file{viper.el} by Michael Kifer
15187 @cindex @file{viper.el}
15188 @kindex C-c /
15189 Viper uses @kbd{C-c /} and therefore makes this key not access the
15190 corresponding Org mode command @code{org-sparse-tree}.  You need to find
15191 another key for this command, or override the key in
15192 @code{viper-vi-global-user-map} with
15194 @lisp
15195 (define-key viper-vi-global-user-map "C-c /" 'org-sparse-tree)
15196 @end lisp
15198 @end table
15200 @node org-crypt.el,  , Interaction, Miscellaneous
15201 @section org-crypt.el
15202 @cindex @file{org-crypt.el}
15203 @cindex @code{org-decrypt-entry}
15205 Org-crypt will encrypt the text of an entry, but not the headline, or
15206 properties.  Org-crypt uses the Emacs EasyPG library to encrypt and decrypt
15207 files.
15209 Any text below a headline that has a @samp{:crypt:} tag will be automatically
15210 be encrypted when the file is saved.  If you want to use a different tag just
15211 customize the @code{org-crypt-tag-matcher} setting.
15213 To use org-crypt it is suggested that you have the following in your
15214 @file{.emacs}:
15216 @example
15217 (require 'org-crypt)
15218 (org-crypt-use-before-save-magic)
15219 (setq org-tags-exclude-from-inheritance (quote ("crypt")))
15221 (setq org-crypt-key nil)
15222   ;; GPG key to use for encryption
15223   ;; Either the Key ID or set to nil to use symmetric encryption.
15225 (setq auto-save-default nil)
15226   ;; Auto-saving does not cooperate with org-crypt.el: so you need
15227   ;; to turn it off if you plan to use org-crypt.el quite often.
15228   ;; Otherwise, you'll get an (annoying) message each time you
15229   ;; start Org.
15231   ;; To turn it off only locally, you can insert this:
15232   ;;
15233   ;; # -*- buffer-auto-save-file-name: nil; -*-
15234 @end example
15236 Excluding the crypt tag from inheritance prevents already encrypted text
15237 being encrypted again.
15239 @node Hacking, MobileOrg, Miscellaneous, Top
15240 @appendix Hacking
15241 @cindex hacking
15243 This appendix covers some aspects where users can extend the functionality of
15244 Org.
15246 @menu
15247 * Hooks::                       How to reach into Org's internals
15248 * Add-on packages::             Available extensions
15249 * Adding hyperlink types::      New custom link types
15250 * Context-sensitive commands::  How to add functionality to such commands
15251 * Tables in arbitrary syntax::  Orgtbl for @LaTeX{} and other programs
15252 * Dynamic blocks::              Automatically filled blocks
15253 * Special agenda views::        Customized views
15254 * Speeding up your agendas::    Tips on how to speed up your agendas
15255 * Extracting agenda information::  Postprocessing of agenda information
15256 * Using the property API::      Writing programs that use entry properties
15257 * Using the mapping API::       Mapping over all or selected entries
15258 @end menu
15260 @node Hooks, Add-on packages, Hacking, Hacking
15261 @section Hooks
15262 @cindex hooks
15264 Org has a large number of hook variables that can be used to add
15265 functionality.  This appendix about hacking is going to illustrate the
15266 use of some of them.  A complete list of all hooks with documentation is
15267 maintained by the Worg project and can be found at
15268 @uref{http://orgmode.org/worg/org-configs/org-hooks.php}.
15270 @node Add-on packages, Adding hyperlink types, Hooks, Hacking
15271 @section Add-on packages
15272 @cindex add-on packages
15274 A large number of add-on packages have been written by various authors.
15275 These packages are not part of Emacs, but they are distributed as contributed
15276 packages with the separate release available at the Org mode home page at
15277 @uref{http://orgmode.org}.  The list of contributed packages, along with
15278 documentation about each package, is maintained by the Worg project at
15279 @uref{http://orgmode.org/worg/org-contrib/}.
15283 @node Adding hyperlink types, Context-sensitive commands, Add-on packages, Hacking
15284 @section Adding hyperlink types
15285 @cindex hyperlinks, adding new types
15287 Org has a large number of hyperlink types built-in
15288 (@pxref{Hyperlinks}).  If you would like to add new link types, Org
15289 provides an interface for doing so.  Let's look at an example file,
15290 @file{org-man.el}, that will add support for creating links like
15291 @samp{[[man:printf][The printf manpage]]} to show Unix manual pages inside
15292 Emacs:
15294 @lisp
15295 ;;; org-man.el - Support for links to manpages in Org
15297 (require 'org)
15299 (org-add-link-type "man" 'org-man-open)
15300 (add-hook 'org-store-link-functions 'org-man-store-link)
15302 (defcustom org-man-command 'man
15303   "The Emacs command to be used to display a man page."
15304   :group 'org-link
15305   :type '(choice (const man) (const woman)))
15307 (defun org-man-open (path)
15308   "Visit the manpage on PATH.
15309 PATH should be a topic that can be thrown at the man command."
15310   (funcall org-man-command path))
15312 (defun org-man-store-link ()
15313   "Store a link to a manpage."
15314   (when (memq major-mode '(Man-mode woman-mode))
15315     ;; This is a man page, we do make this link
15316     (let* ((page (org-man-get-page-name))
15317            (link (concat "man:" page))
15318            (description (format "Manpage for %s" page)))
15319       (org-store-link-props
15320        :type "man"
15321        :link link
15322        :description description))))
15324 (defun org-man-get-page-name ()
15325   "Extract the page name from the buffer name."
15326   ;; This works for both `Man-mode' and `woman-mode'.
15327   (if (string-match " \\(\\S-+\\)\\*" (buffer-name))
15328       (match-string 1 (buffer-name))
15329     (error "Cannot create link to this man page")))
15331 (provide 'org-man)
15333 ;;; org-man.el ends here
15334 @end lisp
15336 @noindent
15337 You would activate this new link type in @file{.emacs} with
15339 @lisp
15340 (require 'org-man)
15341 @end lisp
15343 @noindent
15344 Let's go through the file and see what it does.
15345 @enumerate
15346 @item
15347 It does @code{(require 'org)} to make sure that @file{org.el} has been
15348 loaded.
15349 @item
15350 The next line calls @code{org-add-link-type} to define a new link type
15351 with prefix @samp{man}.  The call also contains the name of a function
15352 that will be called to follow such a link.
15353 @item
15354 @vindex org-store-link-functions
15355 The next line adds a function to @code{org-store-link-functions}, in
15356 order to allow the command @kbd{C-c l} to record a useful link in a
15357 buffer displaying a man page.
15358 @end enumerate
15360 The rest of the file defines the necessary variables and functions.
15361 First there is a customization variable that determines which Emacs
15362 command should be used to display man pages.  There are two options,
15363 @code{man} and @code{woman}.  Then the function to follow a link is
15364 defined.  It gets the link path as an argument---in this case the link
15365 path is just a topic for the manual command.  The function calls the
15366 value of @code{org-man-command} to display the man page.
15368 Finally the function @code{org-man-store-link} is defined.  When you try
15369 to store a link with @kbd{C-c l}, this function will be called to
15370 try to make a link.  The function must first decide if it is supposed to
15371 create the link for this buffer type; we do this by checking the value
15372 of the variable @code{major-mode}.  If not, the function must exit and
15373 return the value @code{nil}.  If yes, the link is created by getting the
15374 manual topic from the buffer name and prefixing it with the string
15375 @samp{man:}.  Then it must call the command @code{org-store-link-props}
15376 and set the @code{:type} and @code{:link} properties.  Optionally you
15377 can also set the @code{:description} property to provide a default for
15378 the link description when the link is later inserted into an Org
15379 buffer with @kbd{C-c C-l}.
15381 When it makes sense for your new link type, you may also define a function
15382 @code{org-PREFIX-complete-link} that implements special (e.g., completion)
15383 support for inserting such a link with @kbd{C-c C-l}.  Such a function should
15384 not accept any arguments, and return the full link with prefix.
15386 @node Context-sensitive commands, Tables in arbitrary syntax, Adding hyperlink types, Hacking
15387 @section Context-sensitive commands
15388 @cindex context-sensitive commands, hooks
15389 @cindex add-ons, context-sensitive commands
15390 @vindex org-ctrl-c-ctrl-c-hook
15392 Org has several commands that act differently depending on context.  The most
15393 important example is the @kbd{C-c C-c} (@pxref{The very busy C-c C-c key}).
15394 Also the @kbd{M-cursor} and @kbd{M-S-cursor} keys have this property.
15396 Add-ons can tap into this functionality by providing a function that detects
15397 special context for that add-on and executes functionality appropriate for
15398 the context.  Here is an example from Dan Davison's @file{org-R.el} which
15399 allows you to evaluate commands based on the @file{R} programming language
15400 @footnote{@file{org-R.el} has been replaced by the Org mode functionality
15401 described in @ref{Working With Source Code} and is now obsolete.}.  For this
15402 package, special contexts are lines that start with @code{#+R:} or
15403 @code{#+RR:}.
15405 @lisp
15406 (defun org-R-apply-maybe ()
15407   "Detect if this is context for org-R and execute R commands."
15408   (if (save-excursion
15409         (beginning-of-line 1)
15410         (looking-at "#\\+RR?:"))
15411       (progn (call-interactively 'org-R-apply)
15412              t) ;; to signal that we took action
15413     nil)) ;; to signal that we did not
15415 (add-hook 'org-ctrl-c-ctrl-c-hook 'org-R-apply-maybe)
15416 @end lisp
15418 The function first checks if the cursor is in such a line.  If that is the
15419 case, @code{org-R-apply} is called and the function returns @code{t} to
15420 signal that action was taken, and @kbd{C-c C-c} will stop looking for other
15421 contexts.  If the function finds it should do nothing locally, it returns
15422 @code{nil} so that other, similar functions can have a try.
15425 @node Tables in arbitrary syntax, Dynamic blocks, Context-sensitive commands, Hacking
15426 @section Tables and lists in arbitrary syntax
15427 @cindex tables, in other modes
15428 @cindex lists, in other modes
15429 @cindex Orgtbl mode
15431 Since Orgtbl mode can be used as a minor mode in arbitrary buffers, a
15432 frequent feature request has been to make it work with native tables in
15433 specific languages, for example @LaTeX{}.  However, this is extremely
15434 hard to do in a general way, would lead to a customization nightmare,
15435 and would take away much of the simplicity of the Orgtbl mode table
15436 editor.
15438 This appendix describes a different approach.  We keep the Orgtbl mode
15439 table in its native format (the @i{source table}), and use a custom
15440 function to @i{translate} the table to the correct syntax, and to
15441 @i{install} it in the right location (the @i{target table}).  This puts
15442 the burden of writing conversion functions on the user, but it allows
15443 for a very flexible system.
15445 Bastien added the ability to do the same with lists, in Orgstruct mode.  You
15446 can use Org's facilities to edit and structure lists by turning
15447 @code{orgstruct-mode} on, then locally exporting such lists in another format
15448 (HTML, @LaTeX{} or Texinfo.)
15451 @menu
15452 * Radio tables::                Sending and receiving radio tables
15453 * A @LaTeX{} example::          Step by step, almost a tutorial
15454 * Translator functions::        Copy and modify
15455 * Radio lists::                 Doing the same for lists
15456 @end menu
15458 @node Radio tables, A @LaTeX{} example, Tables in arbitrary syntax, Tables in arbitrary syntax
15459 @subsection Radio tables
15460 @cindex radio tables
15462 To define the location of the target table, you first need to create two
15463 lines that are comments in the current mode, but contain magic words for
15464 Orgtbl mode to find.  Orgtbl mode will insert the translated table
15465 between these lines, replacing whatever was there before.  For example:
15467 @example
15468 /* BEGIN RECEIVE ORGTBL table_name */
15469 /* END RECEIVE ORGTBL table_name */
15470 @end example
15472 @noindent
15473 Just above the source table, we put a special line that tells
15474 Orgtbl mode how to translate this table and where to install it.  For
15475 example:
15476 @cindex #+ORGTBL
15477 @example
15478 #+ORGTBL: SEND table_name translation_function arguments....
15479 @end example
15481 @noindent
15482 @code{table_name} is the reference name for the table that is also used
15483 in the receiver lines.  @code{translation_function} is the Lisp function
15484 that does the translation.  Furthermore, the line can contain a list of
15485 arguments (alternating key and value) at the end.  The arguments will be
15486 passed as a property list to the translation function for
15487 interpretation.  A few standard parameters are already recognized and
15488 acted upon before the translation function is called:
15490 @table @code
15491 @item :skip N
15492 Skip the first N lines of the table.  Hlines do count as separate lines for
15493 this parameter!
15495 @item :skipcols (n1 n2 ...)
15496 List of columns that should be skipped.  If the table has a column with
15497 calculation marks, that column is automatically discarded as well.
15498 Please note that the translator function sees the table @emph{after} the
15499 removal of these columns, the function never knows that there have been
15500 additional columns.
15502 @item :no-escape t
15503 When non-nil, do not escape special characters @code{&%#_^} when exporting
15504 the table.  The default value is nil.
15505 @end table
15507 @noindent
15508 The one problem remaining is how to keep the source table in the buffer
15509 without disturbing the normal workings of the file, for example during
15510 compilation of a C file or processing of a @LaTeX{} file.  There are a
15511 number of different solutions:
15513 @itemize @bullet
15514 @item
15515 The table could be placed in a block comment if that is supported by the
15516 language.  For example, in C mode you could wrap the table between
15517 @samp{/*} and @samp{*/} lines.
15518 @item
15519 Sometimes it is possible to put the table after some kind of @i{END}
15520 statement, for example @samp{\bye} in @TeX{} and @samp{\end@{document@}}
15521 in @LaTeX{}.
15522 @item
15523 You can just comment the table line-by-line whenever you want to process
15524 the file, and uncomment it whenever you need to edit the table.  This
15525 only sounds tedious---the command @kbd{M-x orgtbl-toggle-comment}
15526 makes this comment-toggling very easy, in particular if you bind it to a
15527 key.
15528 @end itemize
15530 @node A @LaTeX{} example, Translator functions, Radio tables, Tables in arbitrary syntax
15531 @subsection A @LaTeX{} example of radio tables
15532 @cindex @LaTeX{}, and Orgtbl mode
15534 The best way to wrap the source table in @LaTeX{} is to use the
15535 @code{comment} environment provided by @file{comment.sty}.  It has to be
15536 activated by placing @code{\usepackage@{comment@}} into the document
15537 header.  Orgtbl mode can insert a radio table skeleton@footnote{By
15538 default this works only for @LaTeX{}, HTML, and Texinfo.  Configure the
15539 variable @code{orgtbl-radio-tables} to install templates for other
15540 modes.}  with the command @kbd{M-x orgtbl-insert-radio-table}.  You will
15541 be prompted for a table name, let's say we use @samp{salesfigures}.  You
15542 will then get the following template:
15544 @cindex #+ORGTBL, SEND
15545 @example
15546 % BEGIN RECEIVE ORGTBL salesfigures
15547 % END RECEIVE ORGTBL salesfigures
15548 \begin@{comment@}
15549 #+ORGTBL: SEND salesfigures orgtbl-to-latex
15550 | | |
15551 \end@{comment@}
15552 @end example
15554 @noindent
15555 @vindex @LaTeX{}-verbatim-environments
15556 The @code{#+ORGTBL: SEND} line tells Orgtbl mode to use the function
15557 @code{orgtbl-to-latex} to convert the table into @LaTeX{} and to put it
15558 into the receiver location with name @code{salesfigures}.  You may now
15559 fill in the table---feel free to use the spreadsheet features@footnote{If
15560 the @samp{#+TBLFM} line contains an odd number of dollar characters,
15561 this may cause problems with font-lock in @LaTeX{} mode.  As shown in the
15562 example you can fix this by adding an extra line inside the
15563 @code{comment} environment that is used to balance the dollar
15564 expressions.  If you are using AUC@TeX{} with the font-latex library, a
15565 much better solution is to add the @code{comment} environment to the
15566 variable @code{LaTeX-verbatim-environments}.}:
15568 @example
15569 % BEGIN RECEIVE ORGTBL salesfigures
15570 % END RECEIVE ORGTBL salesfigures
15571 \begin@{comment@}
15572 #+ORGTBL: SEND salesfigures orgtbl-to-latex
15573 | Month | Days | Nr sold | per day |
15574 |-------+------+---------+---------|
15575 | Jan   |   23 |      55 |     2.4 |
15576 | Feb   |   21 |      16 |     0.8 |
15577 | March |   22 |     278 |    12.6 |
15578 #+TBLFM: $4=$3/$2;%.1f
15579 % $ (optional extra dollar to keep font-lock happy, see footnote)
15580 \end@{comment@}
15581 @end example
15583 @noindent
15584 When you are done, press @kbd{C-c C-c} in the table to get the converted
15585 table inserted between the two marker lines.
15587 Now let's assume you want to make the table header by hand, because you
15588 want to control how columns are aligned, etc.  In this case we make sure
15589 that the table translator skips the first 2 lines of the source
15590 table, and tell the command to work as a @i{splice}, i.e., to not produce
15591 header and footer commands of the target table:
15593 @example
15594 \begin@{tabular@}@{lrrr@}
15595 Month & \multicolumn@{1@}@{c@}@{Days@} & Nr.\ sold & per day\\
15596 % BEGIN RECEIVE ORGTBL salesfigures
15597 % END RECEIVE ORGTBL salesfigures
15598 \end@{tabular@}
15600 \begin@{comment@}
15601 #+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2
15602 | Month | Days | Nr sold | per day |
15603 |-------+------+---------+---------|
15604 | Jan   |   23 |      55 |     2.4 |
15605 | Feb   |   21 |      16 |     0.8 |
15606 | March |   22 |     278 |    12.6 |
15607 #+TBLFM: $4=$3/$2;%.1f
15608 \end@{comment@}
15609 @end example
15611 The @LaTeX{} translator function @code{orgtbl-to-latex} is already part of
15612 Orgtbl mode.  It uses a @code{tabular} environment to typeset the table
15613 and marks horizontal lines with @code{\hline}.  Furthermore, it
15614 interprets the following parameters (see also @pxref{Translator functions}):
15616 @table @code
15617 @item :splice nil/t
15618 When set to t, return only table body lines, don't wrap them into a
15619 tabular environment.  Default is nil.
15621 @item :fmt fmt
15622 A format to be used to wrap each field, it should contain @code{%s} for the
15623 original field value.  For example, to wrap each field value in dollars,
15624 you could use @code{:fmt "$%s$"}.  This may also be a property list with
15625 column numbers and formats, for example @code{:fmt (2 "$%s$" 4 "%s\\%%")}.
15626 A function of one argument can be used in place of the strings; the
15627 function must return a formatted string.
15629 @item :efmt efmt
15630 Use this format to print numbers with exponentials.  The format should
15631 have @code{%s} twice for inserting mantissa and exponent, for example
15632 @code{"%s\\times10^@{%s@}"}.  The default is @code{"%s\\,(%s)"}.  This
15633 may also be a property list with column numbers and formats, for example
15634 @code{:efmt (2 "$%s\\times10^@{%s@}$" 4 "$%s\\cdot10^@{%s@}$")}.  After
15635 @code{efmt} has been applied to a value, @code{fmt} will also be
15636 applied.  Similar to @code{fmt}, functions of two arguments can be
15637 supplied instead of strings.
15638 @end table
15640 @node Translator functions, Radio lists, A @LaTeX{} example, Tables in arbitrary syntax
15641 @subsection Translator functions
15642 @cindex HTML, and Orgtbl mode
15643 @cindex translator function
15645 Orgtbl mode has several translator functions built-in: @code{orgtbl-to-csv}
15646 (comma-separated values), @code{orgtbl-to-tsv} (TAB-separated values)
15647 @code{orgtbl-to-latex}, @code{orgtbl-to-html}, and @code{orgtbl-to-texinfo}.
15648 Except for @code{orgtbl-to-html}@footnote{The HTML translator uses the same
15649 code that produces tables during HTML export.}, these all use a generic
15650 translator, @code{orgtbl-to-generic}.  For example, @code{orgtbl-to-latex}
15651 itself is a very short function that computes the column definitions for the
15652 @code{tabular} environment, defines a few field and line separators and then
15653 hands processing over to the generic translator.  Here is the entire code:
15655 @lisp
15656 @group
15657 (defun orgtbl-to-latex (table params)
15658   "Convert the Orgtbl mode TABLE to LaTeX."
15659   (let* ((alignment (mapconcat (lambda (x) (if x "r" "l"))
15660                                org-table-last-alignment ""))
15661          (params2
15662           (list
15663            :tstart (concat "\\begin@{tabular@}@{" alignment "@}")
15664            :tend "\\end@{tabular@}"
15665            :lstart "" :lend " \\\\" :sep " & "
15666            :efmt "%s\\,(%s)" :hline "\\hline")))
15667     (orgtbl-to-generic table (org-combine-plists params2 params))))
15668 @end group
15669 @end lisp
15671 As you can see, the properties passed into the function (variable
15672 @var{PARAMS}) are combined with the ones newly defined in the function
15673 (variable @var{PARAMS2}).  The ones passed into the function (i.e., the
15674 ones set by the @samp{ORGTBL SEND} line) take precedence.  So if you
15675 would like to use the @LaTeX{} translator, but wanted the line endings to
15676 be @samp{\\[2mm]} instead of the default @samp{\\}, you could just
15677 overrule the default with
15679 @example
15680 #+ORGTBL: SEND test orgtbl-to-latex :lend " \\\\[2mm]"
15681 @end example
15683 For a new language, you can either write your own converter function in
15684 analogy with the @LaTeX{} translator, or you can use the generic function
15685 directly.  For example, if you have a language where a table is started
15686 with @samp{!BTBL!}, ended with @samp{!ETBL!}, and where table lines are
15687 started with @samp{!BL!}, ended with @samp{!EL!}, and where the field
15688 separator is a TAB, you could call the generic translator like this (on
15689 a single line!):
15691 @example
15692 #+ORGTBL: SEND test orgtbl-to-generic :tstart "!BTBL!" :tend "!ETBL!"
15693                               :lstart "!BL! " :lend " !EL!" :sep "\t"
15694 @end example
15696 @noindent
15697 Please check the documentation string of the function
15698 @code{orgtbl-to-generic} for a full list of parameters understood by
15699 that function, and remember that you can pass each of them into
15700 @code{orgtbl-to-latex}, @code{orgtbl-to-texinfo}, and any other function
15701 using the generic function.
15703 Of course you can also write a completely new function doing complicated
15704 things the generic translator cannot do.  A translator function takes
15705 two arguments.  The first argument is the table, a list of lines, each
15706 line either the symbol @code{hline} or a list of fields.  The second
15707 argument is the property list containing all parameters specified in the
15708 @samp{#+ORGTBL: SEND} line.  The function must return a single string
15709 containing the formatted table.  If you write a generally useful
15710 translator, please post it on @email{emacs-orgmode@@gnu.org} so that
15711 others can benefit from your work.
15713 @node Radio lists,  , Translator functions, Tables in arbitrary syntax
15714 @subsection Radio lists
15715 @cindex radio lists
15716 @cindex org-list-insert-radio-list
15718 Sending and receiving radio lists works exactly the same way as sending and
15719 receiving radio tables (@pxref{Radio tables}).  As for radio tables, you can
15720 insert radio list templates in HTML, @LaTeX{} and Texinfo modes by calling
15721 @code{org-list-insert-radio-list}.
15723 Here are the differences with radio tables:
15725 @itemize @minus
15726 @item
15727 Orgstruct mode must be active.
15728 @item
15729 Use the @code{ORGLST} keyword instead of @code{ORGTBL}.
15730 @item
15731 The available translation functions for radio lists don't take
15732 parameters.
15733 @item
15734 @kbd{C-c C-c} will work when pressed on the first item of the list.
15735 @end itemize
15737 Here is a @LaTeX{} example.  Let's say that you have this in your
15738 @LaTeX{} file:
15740 @cindex #+ORGLST
15741 @example
15742 % BEGIN RECEIVE ORGLST to-buy
15743 % END RECEIVE ORGLST to-buy
15744 \begin@{comment@}
15745 #+ORGLST: SEND to-buy org-list-to-latex
15746 - a new house
15747 - a new computer
15748   + a new keyboard
15749   + a new mouse
15750 - a new life
15751 \end@{comment@}
15752 @end example
15754 Pressing @kbd{C-c C-c} on @code{a new house} and will insert the converted
15755 @LaTeX{} list between the two marker lines.
15757 @node Dynamic blocks, Special agenda views, Tables in arbitrary syntax, Hacking
15758 @section Dynamic blocks
15759 @cindex dynamic blocks
15761 Org documents can contain @emph{dynamic blocks}.  These are
15762 specially marked regions that are updated by some user-written function.
15763 A good example for such a block is the clock table inserted by the
15764 command @kbd{C-c C-x C-r} (@pxref{Clocking work time}).
15766 Dynamic blocks are enclosed by a BEGIN-END structure that assigns a name
15767 to the block and can also specify parameters for the function producing
15768 the content of the block.
15770 @cindex #+BEGIN:dynamic block
15771 @example
15772 #+BEGIN: myblock :parameter1 value1 :parameter2 value2 ...
15774 #+END:
15775 @end example
15777 Dynamic blocks are updated with the following commands
15779 @table @kbd
15780 @orgcmd{C-c C-x C-u,org-dblock-update}
15781 Update dynamic block at point.
15782 @orgkey{C-u C-c C-x C-u}
15783 Update all dynamic blocks in the current file.
15784 @end table
15786 Updating a dynamic block means to remove all the text between BEGIN and
15787 END, parse the BEGIN line for parameters and then call the specific
15788 writer function for this block to insert the new content.  If you want
15789 to use the original content in the writer function, you can use the
15790 extra parameter @code{:content}.
15792 For a block with name @code{myblock}, the writer function is
15793 @code{org-dblock-write:myblock} with as only parameter a property list
15794 with the parameters given in the begin line.  Here is a trivial example
15795 of a block that keeps track of when the block update function was last
15796 run:
15798 @example
15799 #+BEGIN: block-update-time :format "on %m/%d/%Y at %H:%M"
15801 #+END:
15802 @end example
15804 @noindent
15805 The corresponding block writer function could look like this:
15807 @lisp
15808 (defun org-dblock-write:block-update-time (params)
15809   (let ((fmt (or (plist-get params :format) "%d. %m. %Y")))
15810     (insert "Last block update at: "
15811             (format-time-string fmt (current-time)))))
15812 @end lisp
15814 If you want to make sure that all dynamic blocks are always up-to-date,
15815 you could add the function @code{org-update-all-dblocks} to a hook, for
15816 example @code{before-save-hook}.  @code{org-update-all-dblocks} is
15817 written in a way such that it does nothing in buffers that are not in
15818 @code{org-mode}.
15820 You can narrow the current buffer to the current dynamic block (like any
15821 other block) with @code{org-narrow-to-block}.
15823 @node Special agenda views, Speeding up your agendas, Dynamic blocks, Hacking
15824 @section Special agenda views
15825 @cindex agenda views, user-defined
15827 @vindex org-agenda-skip-function
15828 @vindex org-agenda-skip-function-global
15829 Org provides a special hook that can be used to narrow down the selection
15830 made by these agenda views: @code{agenda}, @code{todo}, @code{alltodo},
15831 @code{tags}, @code{tags-todo}, @code{tags-tree}.  You may specify a function
15832 that is used at each match to verify if the match should indeed be part of
15833 the agenda view, and if not, how much should be skipped.  You can specify a
15834 global condition that will be applied to all agenda views, this condition
15835 would be stored in the variable @code{org-agenda-skip-function-global}.  More
15836 commonly, such a definition is applied only to specific custom searches,
15837 using @code{org-agenda-skip-function}.
15839 Let's say you want to produce a list of projects that contain a WAITING
15840 tag anywhere in the project tree.  Let's further assume that you have
15841 marked all tree headings that define a project with the TODO keyword
15842 PROJECT@.  In this case you would run a TODO search for the keyword
15843 PROJECT, but skip the match unless there is a WAITING tag anywhere in
15844 the subtree belonging to the project line.
15846 To achieve this, you must write a function that searches the subtree for
15847 the tag.  If the tag is found, the function must return @code{nil} to
15848 indicate that this match should not be skipped.  If there is no such
15849 tag, return the location of the end of the subtree, to indicate that
15850 search should continue from there.
15852 @lisp
15853 (defun my-skip-unless-waiting ()
15854   "Skip trees that are not waiting"
15855   (let ((subtree-end (save-excursion (org-end-of-subtree t))))
15856     (if (re-search-forward ":waiting:" subtree-end t)
15857         nil          ; tag found, do not skip
15858       subtree-end))) ; tag not found, continue after end of subtree
15859 @end lisp
15861 Now you may use this function in an agenda custom command, for example
15862 like this:
15864 @lisp
15865 (org-add-agenda-custom-command
15866  '("b" todo "PROJECT"
15867    ((org-agenda-skip-function 'my-skip-unless-waiting)
15868     (org-agenda-overriding-header "Projects waiting for something: "))))
15869 @end lisp
15871 @vindex org-agenda-overriding-header
15872 Note that this also binds @code{org-agenda-overriding-header} to get a
15873 meaningful header in the agenda view.
15875 @vindex org-odd-levels-only
15876 @vindex org-agenda-skip-function
15877 A general way to create custom searches is to base them on a search for
15878 entries with a certain level limit.  If you want to study all entries with
15879 your custom search function, simply do a search for
15880 @samp{LEVEL>0}@footnote{Note that, when using @code{org-odd-levels-only}, a
15881 level number corresponds to order in the hierarchy, not to the number of
15882 stars.}, and then use @code{org-agenda-skip-function} to select the entries
15883 you really want to have.
15885 You may also put a Lisp form into @code{org-agenda-skip-function}.  In
15886 particular, you may use the functions @code{org-agenda-skip-entry-if}
15887 and @code{org-agenda-skip-subtree-if} in this form, for example:
15889 @table @code
15890 @item (org-agenda-skip-entry-if 'scheduled)
15891 Skip current entry if it has been scheduled.
15892 @item (org-agenda-skip-entry-if 'notscheduled)
15893 Skip current entry if it has not been scheduled.
15894 @item (org-agenda-skip-entry-if 'deadline)
15895 Skip current entry if it has a deadline.
15896 @item (org-agenda-skip-entry-if 'scheduled 'deadline)
15897 Skip current entry if it has a deadline, or if it is scheduled.
15898 @item (org-agenda-skip-entry-if 'todo '("TODO" "WAITING"))
15899 Skip current entry if the TODO keyword is TODO or WAITING.
15900 @item (org-agenda-skip-entry-if 'todo 'done)
15901 Skip current entry if the TODO keyword marks a DONE state.
15902 @item (org-agenda-skip-entry-if 'timestamp)
15903 Skip current entry if it has any timestamp, may also be deadline or scheduled.
15904 @anchor{x-agenda-skip-entry-regexp}
15905 @item (org-agenda-skip-entry-if 'regexp "regular expression")
15906 Skip current entry if the regular expression matches in the entry.
15907 @item (org-agenda-skip-entry-if 'notregexp "regular expression")
15908 Skip current entry unless the regular expression matches.
15909 @item (org-agenda-skip-subtree-if 'regexp "regular expression")
15910 Same as above, but check and skip the entire subtree.
15911 @end table
15913 Therefore we could also have written the search for WAITING projects
15914 like this, even without defining a special function:
15916 @lisp
15917 (org-add-agenda-custom-command
15918  '("b" todo "PROJECT"
15919    ((org-agenda-skip-function '(org-agenda-skip-subtree-if
15920                                 'regexp ":waiting:"))
15921     (org-agenda-overriding-header "Projects waiting for something: "))))
15922 @end lisp
15924 @node Speeding up your agendas, Extracting agenda information, Special agenda views, Hacking
15925 @section Speeding up your agendas
15926 @cindex agenda views, optimization
15928 When your Org files grow in both number and size, agenda commands may start
15929 to become slow.  Below are some tips on how to speed up the agenda commands.
15931 @enumerate
15932 @item
15933 Reduce the number of Org agenda files: this will reduce the slowliness caused
15934 by accessing to a harddrive.
15935 @item
15936 Reduce the number of DONE and archived headlines: this way the agenda does
15937 not need to skip them.
15938 @item
15939 @vindex org-agenda-dim-blocked-tasks
15940 Inhibit the dimming of blocked tasks: 
15941 @lisp
15942 (setq org-agenda-dim-blocked-tasks nil)
15943 @end lisp
15944 @item
15945 @vindex org-startup-folded
15946 @vindex org-agenda-inhibit-startup
15947 Inhibit agenda files startup options:
15948 @lisp
15949 (setq org-agenda-inhibit-startup nil)
15950 @end lisp
15951 @item
15952 @vindex org-agenda-show-inherited-tags
15953 @vindex org-agenda-use-tag-inheritance
15954 Disable tag inheritance in agenda:
15955 @lisp
15956 (setq org-agenda-use-tag-inheritance nil)
15957 @end lisp
15958 @end enumerate
15960 You can set these options for specific agenda views only.  See the docstrings
15961 of these variables for details on why they affect the agenda generation, and
15962 this @uref{http://orgmode.org/worg/agenda-optimization.html, dedicated Worg
15963 page} for further explanations.
15965 @node Extracting agenda information, Using the property API, Speeding up your agendas, Hacking
15966 @section Extracting agenda information
15967 @cindex agenda, pipe
15968 @cindex Scripts, for agenda processing
15970 @vindex org-agenda-custom-commands
15971 Org provides commands to access agenda information for the command
15972 line in Emacs batch mode.  This extracted information can be sent
15973 directly to a printer, or it can be read by a program that does further
15974 processing of the data.  The first of these commands is the function
15975 @code{org-batch-agenda}, that produces an agenda view and sends it as
15976 ASCII text to STDOUT@.  The command takes a single string as parameter.
15977 If the string has length 1, it is used as a key to one of the commands
15978 you have configured in @code{org-agenda-custom-commands}, basically any
15979 key you can use after @kbd{C-c a}.  For example, to directly print the
15980 current TODO list, you could use
15982 @example
15983 emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
15984 @end example
15986 If the parameter is a string with 2 or more characters, it is used as a
15987 tags/TODO match string.  For example, to print your local shopping list
15988 (all items with the tag @samp{shop}, but excluding the tag
15989 @samp{NewYork}), you could use
15991 @example
15992 emacs -batch -l ~/.emacs                                      \
15993       -eval '(org-batch-agenda "+shop-NewYork")' | lpr
15994 @end example
15996 @noindent
15997 You may also modify parameters on the fly like this:
15999 @example
16000 emacs -batch -l ~/.emacs                                      \
16001    -eval '(org-batch-agenda "a"                               \
16002             org-agenda-span (quote month)                     \
16003             org-agenda-include-diary nil                      \
16004             org-agenda-files (quote ("~/org/project.org")))'  \
16005    | lpr
16006 @end example
16008 @noindent
16009 which will produce a 30-day agenda, fully restricted to the Org file
16010 @file{~/org/projects.org}, not even including the diary.
16012 If you want to process the agenda data in more sophisticated ways, you
16013 can use the command @code{org-batch-agenda-csv} to get a comma-separated
16014 list of values for each agenda item.  Each line in the output will
16015 contain a number of fields separated by commas.  The fields in a line
16016 are:
16018 @example
16019 category     @r{The category of the item}
16020 head         @r{The headline, without TODO keyword, TAGS and PRIORITY}
16021 type         @r{The type of the agenda entry, can be}
16022                 todo               @r{selected in TODO match}
16023                 tagsmatch          @r{selected in tags match}
16024                 diary              @r{imported from diary}
16025                 deadline           @r{a deadline}
16026                 scheduled          @r{scheduled}
16027                 timestamp          @r{appointment, selected by timestamp}
16028                 closed             @r{entry was closed on date}
16029                 upcoming-deadline  @r{warning about nearing deadline}
16030                 past-scheduled     @r{forwarded scheduled item}
16031                 block              @r{entry has date block including date}
16032 todo         @r{The TODO keyword, if any}
16033 tags         @r{All tags including inherited ones, separated by colons}
16034 date         @r{The relevant date, like 2007-2-14}
16035 time         @r{The time, like 15:00-16:50}
16036 extra        @r{String with extra planning info}
16037 priority-l   @r{The priority letter if any was given}
16038 priority-n   @r{The computed numerical priority}
16039 @end example
16041 @noindent
16042 Time and date will only be given if a timestamp (or deadline/scheduled)
16043 led to the selection of the item.
16045 A CSV list like this is very easy to use in a post-processing script.
16046 For example, here is a Perl program that gets the TODO list from
16047 Emacs/Org and prints all the items, preceded by a checkbox:
16049 @example
16050 #!/usr/bin/perl
16052 # define the Emacs command to run
16053 $cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'";
16055 # run it and capture the output
16056 $agenda = qx@{$cmd 2>/dev/null@};
16058 # loop over all lines
16059 foreach $line (split(/\n/,$agenda)) @{
16060   # get the individual values
16061   ($category,$head,$type,$todo,$tags,$date,$time,$extra,
16062    $priority_l,$priority_n) = split(/,/,$line);
16063   # process and print
16064   print "[ ] $head\n";
16066 @end example
16068 @node Using the property API, Using the mapping API, Extracting agenda information, Hacking
16069 @section Using the property API
16070 @cindex API, for properties
16071 @cindex properties, API
16073 Here is a description of the functions that can be used to work with
16074 properties.
16076 @defun org-entry-properties &optional pom which
16077 Get all properties of the entry at point-or-marker POM.@*
16078 This includes the TODO keyword, the tags, time strings for deadline,
16079 scheduled, and clocking, and any additional properties defined in the
16080 entry.  The return value is an alist.  Keys may occur multiple times
16081 if the property key was used several times.@*
16082 POM may also be nil, in which case the current entry is used.
16083 If WHICH is nil or `all', get all properties.  If WHICH is
16084 `special' or `standard', only get that subclass.
16085 @end defun
16086 @vindex org-use-property-inheritance
16087 @findex org-insert-property-drawer
16088 @defun org-entry-get pom property &optional inherit
16089 Get value of PROPERTY for entry at point-or-marker POM@.  By default,
16090 this only looks at properties defined locally in the entry.  If INHERIT
16091 is non-nil and the entry does not have the property, then also check
16092 higher levels of the hierarchy.  If INHERIT is the symbol
16093 @code{selective}, use inheritance if and only if the setting of
16094 @code{org-use-property-inheritance} selects PROPERTY for inheritance.
16095 @end defun
16097 @defun org-entry-delete pom property
16098 Delete the property PROPERTY from entry at point-or-marker POM.
16099 @end defun
16101 @defun org-entry-put pom property value
16102 Set PROPERTY to VALUE for entry at point-or-marker POM.
16103 @end defun
16105 @defun org-buffer-property-keys &optional include-specials
16106 Get all property keys in the current buffer.
16107 @end defun
16109 @defun org-insert-property-drawer
16110 Insert a property drawer for the current entry.  Also
16111 @end defun
16113 @defun org-entry-put-multivalued-property pom property &rest values
16114 Set PROPERTY at point-or-marker POM to VALUES@.  VALUES should be a list of
16115 strings.  They will be concatenated, with spaces as separators.
16116 @end defun
16118 @defun org-entry-get-multivalued-property pom property
16119 Treat the value of the property PROPERTY as a whitespace-separated list of
16120 values and return the values as a list of strings.
16121 @end defun
16123 @defun org-entry-add-to-multivalued-property pom property value
16124 Treat the value of the property PROPERTY as a whitespace-separated list of
16125 values and make sure that VALUE is in this list.
16126 @end defun
16128 @defun org-entry-remove-from-multivalued-property pom property value
16129 Treat the value of the property PROPERTY as a whitespace-separated list of
16130 values and make sure that VALUE is @emph{not} in this list.
16131 @end defun
16133 @defun org-entry-member-in-multivalued-property pom property value
16134 Treat the value of the property PROPERTY as a whitespace-separated list of
16135 values and check if VALUE is in this list.
16136 @end defun
16138 @defopt org-property-allowed-value-functions
16139 Hook for functions supplying allowed values for a specific property.
16140 The functions must take a single argument, the name of the property, and
16141 return a flat list of allowed values.  If @samp{:ETC} is one of
16142 the values, use the values as completion help, but allow also other values
16143 to be entered.  The functions must return @code{nil} if they are not
16144 responsible for this property.
16145 @end defopt
16147 @node Using the mapping API,  , Using the property API, Hacking
16148 @section Using the mapping API
16149 @cindex API, for mapping
16150 @cindex mapping entries, API
16152 Org has sophisticated mapping capabilities to find all entries satisfying
16153 certain criteria.  Internally, this functionality is used to produce agenda
16154 views, but there is also an API that can be used to execute arbitrary
16155 functions for each or selected entries.  The main entry point for this API
16158 @defun org-map-entries func &optional match scope &rest skip
16159 Call FUNC at each headline selected by MATCH in SCOPE.
16161 FUNC is a function or a Lisp form.  The function will be called without
16162 arguments, with the cursor positioned at the beginning of the headline.
16163 The return values of all calls to the function will be collected and
16164 returned as a list.
16166 The call to FUNC will be wrapped into a save-excursion form, so FUNC
16167 does not need to preserve point.  After evaluation, the cursor will be
16168 moved to the end of the line (presumably of the headline of the
16169 processed entry) and search continues from there.  Under some
16170 circumstances, this may not produce the wanted results.  For example,
16171 if you have removed (e.g., archived) the current (sub)tree it could
16172 mean that the next entry will be skipped entirely.  In such cases, you
16173 can specify the position from where search should continue by making
16174 FUNC set the variable `org-map-continue-from' to the desired buffer
16175 position.
16177 MATCH is a tags/property/todo match as it is used in the agenda match view.
16178 Only headlines that are matched by this query will be considered during
16179 the iteration.  When MATCH is nil or t, all headlines will be
16180 visited by the iteration.
16182 SCOPE determines the scope of this command.  It can be any of:
16184 @example
16185 nil     @r{the current buffer, respecting the restriction if any}
16186 tree    @r{the subtree started with the entry at point}
16187 region  @r{The entries within the active region, if any}
16188 file    @r{the current buffer, without restriction}
16189 file-with-archives
16190         @r{the current buffer, and any archives associated with it}
16191 agenda  @r{all agenda files}
16192 agenda-with-archives
16193         @r{all agenda files with any archive files associated with them}
16194 (file1 file2 ...)
16195         @r{if this is a list, all files in the list will be scanned}
16196 @end example
16197 @noindent
16198 The remaining args are treated as settings for the skipping facilities of
16199 the scanner.  The following items can be given here:
16201 @vindex org-agenda-skip-function
16202 @example
16203 archive   @r{skip trees with the archive tag}
16204 comment   @r{skip trees with the COMMENT keyword}
16205 function or Lisp form
16206           @r{will be used as value for @code{org-agenda-skip-function},}
16207           @r{so whenever the function returns t, FUNC}
16208           @r{will not be called for that entry and search will}
16209           @r{continue from the point where the function leaves it}
16210 @end example
16211 @end defun
16213 The function given to that mapping routine can really do anything you like.
16214 It can use the property API (@pxref{Using the property API}) to gather more
16215 information about the entry, or in order to change metadata in the entry.
16216 Here are a couple of functions that might be handy:
16218 @defun org-todo &optional arg
16219 Change the TODO state of the entry.  See the docstring of the functions for
16220 the many possible values for the argument ARG.
16221 @end defun
16223 @defun org-priority &optional action
16224 Change the priority of the entry.  See the docstring of this function for the
16225 possible values for ACTION.
16226 @end defun
16228 @defun org-toggle-tag tag &optional onoff
16229 Toggle the tag TAG in the current entry.  Setting ONOFF to either @code{on}
16230 or @code{off} will not toggle tag, but ensure that it is either on or off.
16231 @end defun
16233 @defun org-promote
16234 Promote the current entry.
16235 @end defun
16237 @defun org-demote
16238 Demote the current entry.
16239 @end defun
16241 Here is a simple example that will turn all entries in the current file with
16242 a tag @code{TOMORROW} into TODO entries with the keyword @code{UPCOMING}.
16243 Entries in comment trees and in archive trees will be ignored.
16245 @lisp
16246 (org-map-entries
16247  '(org-todo "UPCOMING")
16248  "+TOMORROW" 'file 'archive 'comment)
16249 @end lisp
16251 The following example counts the number of entries with TODO keyword
16252 @code{WAITING}, in all agenda files.
16254 @lisp
16255 (length (org-map-entries t "/+WAITING" 'agenda))
16256 @end lisp
16258 @node MobileOrg, History and Acknowledgments, Hacking, Top
16259 @appendix MobileOrg
16260 @cindex iPhone
16261 @cindex MobileOrg
16263 @i{MobileOrg} is the name of the mobile companion app for Org mode, currently
16264 available for iOS and for Android.  @i{MobileOrg} offers offline viewing and
16265 capture support for an Org mode system rooted on a ``real'' computer.  It
16266 does also allow you to record changes to existing entries.
16267 The @uref{http://mobileorg.ncogni.to/, iOS implementation} for the
16268 @i{iPhone/iPod Touch/iPad} series of devices, was developed by Richard
16269 Moreland.  Android users should check out
16270 @uref{http://wiki.github.com/matburt/mobileorg-android/, MobileOrg Android}
16271 by Matt Jones.  The two implementations are not identical but offer similar
16272 features.
16274 This appendix describes the support Org has for creating agenda views in a
16275 format that can be displayed by @i{MobileOrg}, and for integrating notes
16276 captured and changes made by @i{MobileOrg} into the main system.
16278 For changing tags and TODO states in MobileOrg, you should have set up the
16279 customization variables @code{org-todo-keywords} and @code{org-tags-alist} to
16280 cover all important tags and TODO keywords, even if individual files use only
16281 part of these.  MobileOrg will also offer you states and tags set up with
16282 in-buffer settings, but it will understand the logistics of TODO state
16283 @i{sets} (@pxref{Per-file keywords}) and @i{mutually exclusive} tags
16284 (@pxref{Setting tags}) only for those set in these variables.
16286 @menu
16287 * Setting up the staging area::  Where to interact with the mobile device
16288 * Pushing to MobileOrg::        Uploading Org files and agendas
16289 * Pulling from MobileOrg::      Integrating captured and flagged items
16290 @end menu
16292 @node Setting up the staging area, Pushing to MobileOrg, MobileOrg, MobileOrg
16293 @section Setting up the staging area
16295 MobileOrg needs to interact with Emacs through a directory on a server.  If you
16296 are using a public server, you should consider to encrypt the files that are
16297 uploaded to the server.  This can be done with Org mode 7.02 and with
16298 @i{MobileOrg 1.5} (iPhone version), and you need an @file{openssl}
16299 installation on your system.  To turn on encryption, set a password in
16300 @i{MobileOrg} and, on the Emacs side, configure the variable
16301 @code{org-mobile-use-encryption}@footnote{If you can safely store the
16302 password in your Emacs setup, you might also want to configure
16303 @code{org-mobile-encryption-password}.  Please read the docstring of that
16304 variable.  Note that encryption will apply only to the contents of the
16305 @file{.org} files.  The file names themselves will remain visible.}.
16307 The easiest way to create that directory is to use a free
16308 @uref{http://dropbox.com,Dropbox.com} account@footnote{If you cannot use
16309 Dropbox, or if your version of MobileOrg does not support it, you can use a
16310 webdav server.  For more information, check out the documentation of MobileOrg and also this
16311 @uref{http://orgmode.org/worg/org-faq.html#mobileorg_webdav, FAQ entry}.}.
16312 When MobileOrg first connects to your Dropbox, it will create a directory
16313 @i{MobileOrg} inside the Dropbox.  After the directory has been created, tell
16314 Emacs about it:
16316 @lisp
16317 (setq org-mobile-directory "~/Dropbox/MobileOrg")
16318 @end lisp
16320 Org mode has commands to put files for @i{MobileOrg} into that directory,
16321 and to read captured notes from there.
16323 @node Pushing to MobileOrg, Pulling from MobileOrg, Setting up the staging area, MobileOrg
16324 @section Pushing to MobileOrg
16326 This operation copies all files currently listed in @code{org-mobile-files}
16327 to the directory @code{org-mobile-directory}.  By default this list contains
16328 all agenda files (as listed in @code{org-agenda-files}), but additional files
16329 can be included by customizing @code{org-mobile-files}.  File names will be
16330 staged with paths relative to @code{org-directory}, so all files should be
16331 inside this directory@footnote{Symbolic links in @code{org-directory} need to
16332 have the same name than their targets.}.
16334 The push operation also creates a special Org file @file{agendas.org} with
16335 all custom agenda view defined by the user@footnote{While creating the
16336 agendas, Org mode will force ID properties on all referenced entries, so that
16337 these entries can be uniquely identified if @i{MobileOrg} flags them for
16338 further action.  If you do not want to get these properties in so many
16339 entries, you can set the variable @code{org-mobile-force-id-on-agenda-items}
16340 to @code{nil}.  Org mode will then rely on outline paths, in the hope that
16341 these will be unique enough.}.
16343 Finally, Org writes the file @file{index.org}, containing links to all other
16344 files.  @i{MobileOrg} first reads this file from the server, and then
16345 downloads all agendas and Org files listed in it.  To speed up the download,
16346 MobileOrg will only read files whose checksums@footnote{Checksums are stored
16347 automatically in the file @file{checksums.dat}} have changed.
16349 @node Pulling from MobileOrg,  , Pushing to MobileOrg, MobileOrg
16350 @section Pulling from MobileOrg
16352 When @i{MobileOrg} synchronizes with the server, it not only pulls the Org
16353 files for viewing.  It also appends captured entries and pointers to flagged
16354 and changed entries to the file @file{mobileorg.org} on the server.  Org has
16355 a @emph{pull} operation that integrates this information into an inbox file
16356 and operates on the pointers to flagged entries.  Here is how it works:
16358 @enumerate
16359 @item
16360 Org moves all entries found in
16361 @file{mobileorg.org}@footnote{@file{mobileorg.org} will be empty after this
16362 operation.} and appends them to the file pointed to by the variable
16363 @code{org-mobile-inbox-for-pull}.  Each captured entry and each editing event
16364 will be a top-level entry in the inbox file.
16365 @item
16366 After moving the entries, Org will attempt to implement the changes made in
16367 @i{MobileOrg}.  Some changes are applied directly and without user
16368 interaction.  Examples are all changes to tags, TODO state, headline and body
16369 text that can be cleanly applied.  Entries that have been flagged for further
16370 action will receive a tag @code{:FLAGGED:}, so that they can be easily found
16371 again.  When there is a problem finding an entry or applying the change, the
16372 pointer entry will remain in the inbox and will be marked with an error
16373 message.  You need to later resolve these issues by hand.
16374 @item
16375 Org will then generate an agenda view with all flagged entries.  The user
16376 should then go through these entries and do whatever actions are necessary.
16377 If a note has been stored while flagging an entry in @i{MobileOrg}, that note
16378 will be displayed in the echo area when the cursor is on the corresponding
16379 agenda line.
16380 @table @kbd
16381 @kindex ?
16382 @item ?
16383 Pressing @kbd{?} in that special agenda will display the full flagging note in
16384 another window and also push it onto the kill ring.  So you could use @kbd{?
16385 z C-y C-c C-c} to store that flagging note as a normal note in the entry.
16386 Pressing @kbd{?} twice in succession will offer to remove the
16387 @code{:FLAGGED:} tag along with the recorded flagging note (which is stored
16388 in a property).  In this way you indicate that the intended processing for
16389 this flagged entry is finished.
16390 @end table
16391 @end enumerate
16393 @kindex C-c a ?
16394 If you are not able to process all flagged entries directly, you can always
16395 return to this agenda view@footnote{Note, however, that there is a subtle
16396 difference.  The view created automatically by @kbd{M-x org-mobile-pull
16397 @key{RET}} is guaranteed to search all files that have been addressed by the
16398 last pull.  This might include a file that is not currently in your list of
16399 agenda files.  If you later use @kbd{C-c a ?} to regenerate the view, only
16400 the current agenda files will be searched.} using @kbd{C-c a ?}.
16402 @node History and Acknowledgments, GNU Free Documentation License, MobileOrg, Top
16403 @appendix History and acknowledgments
16404 @cindex acknowledgments
16405 @cindex history
16406 @cindex thanks
16408 @section From Carsten
16410 Org was born in 2003, out of frustration over the user interface of the Emacs
16411 Outline mode.  I was trying to organize my notes and projects, and using
16412 Emacs seemed to be the natural way to go.  However, having to remember eleven
16413 different commands with two or three keys per command, only to hide and show
16414 parts of the outline tree, that seemed entirely unacceptable to me.  Also,
16415 when using outlines to take notes, I constantly wanted to restructure the
16416 tree, organizing it parallel to my thoughts and plans.  @emph{Visibility
16417 cycling} and @emph{structure editing} were originally implemented in the
16418 package @file{outline-magic.el}, but quickly moved to the more general
16419 @file{org.el}.  As this environment became comfortable for project planning,
16420 the next step was adding @emph{TODO entries}, basic @emph{timestamps}, and
16421 @emph{table support}.  These areas highlighted the two main goals that Org
16422 still has today: to be a new, outline-based, plain text mode with innovative
16423 and intuitive editing features, and to incorporate project planning
16424 functionality directly into a notes file.
16426 Since the first release, literally thousands of emails to me or to
16427 @email{emacs-orgmode@@gnu.org} have provided a constant stream of bug
16428 reports, feedback, new ideas, and sometimes patches and add-on code.
16429 Many thanks to everyone who has helped to improve this package.  I am
16430 trying to keep here a list of the people who had significant influence
16431 in shaping one or more aspects of Org.  The list may not be
16432 complete, if I have forgotten someone, please accept my apologies and
16433 let me know.
16435 Before I get to this list, a few special mentions are in order:
16437 @table @i
16438 @item Bastien Guerry
16439 Bastien has written a large number of extensions to Org (most of them
16440 integrated into the core by now), including the @LaTeX{} exporter and the plain
16441 list parser.  His support during the early days, when he basically acted as
16442 co-maintainer, was central to the success of this project.  Bastien also
16443 invented Worg, helped establishing the Web presence of Org, and sponsored
16444 hosting costs for the orgmode.org website.
16445 @item Eric Schulte and Dan Davison
16446 Eric and Dan are jointly responsible for the Org-babel system, which turns
16447 Org into a multi-language environment for evaluating code and doing literate
16448 programming and reproducible research.
16449 @item John Wiegley
16450 John has contributed a number of great ideas and patches directly to Org,
16451 including the attachment system (@file{org-attach.el}), integration with
16452 Apple Mail (@file{org-mac-message.el}), hierarchical dependencies of TODO
16453 items, habit tracking (@file{org-habits.el}), and encryption
16454 (@file{org-crypt.el}).  Also, the capture system is really an extended copy
16455 of his great @file{remember.el}.
16456 @item Sebastian Rose
16457 Without Sebastian, the HTML/XHTML publishing of Org would be the pitiful work
16458 of an ignorant amateur.  Sebastian has pushed this part of Org onto a much
16459 higher level.  He also wrote @file{org-info.js}, a Java script for displaying
16460 webpages derived from Org using an Info-like or a folding interface with
16461 single-key navigation.
16462 @end table
16464 @noindent See below for the full list of contributions!  Again, please
16465 let me know what I am missing here!
16467 @section From Bastien
16469 I (Bastien) have been maintaining Org since January 2011.  This appendix
16470 would not be complete without adding a few more acknowledgements and thanks
16471 to Carsten's ones above.
16473 I am first grateful to Carsten for his trust while handing me over the
16474 maintainership of Org.  His support as been great since day one of this new
16475 adventure, and it helped a lot.
16477 When I took over maintainership, I knew I would have to make Org more
16478 collaborative than ever, as I would have to rely on people that are more
16479 knowledgeable than I am on many parts of the code.  Here is a list of the
16480 persons I could rely on, they should really be considered co-maintainers,
16481 either of the code or the community:
16483 @table @i
16484 @item Eric Schulte
16485 Eric is maintaining the Babel parts of Org.  His reactivity here kept me away
16486 from worrying about possible bugs here and let me focus on other parts.
16488 @item Nicolas Goaziou
16489 Nicolas is maintaining the consistency of the deepest parts of Org.  His work
16490 on @file{org-element.el} and @file{org-export.el} has been outstanding, and
16491 opened the doors for many new ideas and features.
16493 @item Achim Gratz
16494 Achim rewrote the building process of Org, turning some @emph{ad hoc} tools
16495 into a flexible and conceptually clean process.  He patiently coped with the
16496 many hiccups that such a change can create for users.
16498 @item Nick Dokos
16499 The Org mode mailing list would not be such a nice place without Nick, who
16500 patiently helped users so many times.  It is impossible to overestimate such
16501 a great help, and the list would not be so active without him.
16502 @end table
16504 I received support from so many users that it is clearly impossible to be
16505 fair when shortlisting a few of them, but Org's history would not be
16506 complete if the ones above were not mentioned in this manual.
16508 @section List of contributions
16510 @itemize @bullet
16512 @item
16513 @i{Russel Adams} came up with the idea for drawers.
16514 @item
16515 @i{Suvayu Ali} has steadily helped on the mailing list, providing useful
16516 feedback on many features and several patches.
16517 @item
16518 @i{Luis Anaya} wrote @file{ox-man.el}.
16519 @item
16520 @i{Thomas Baumann} wrote @file{org-bbdb.el} and @file{org-mhe.el}.
16521 @item
16522 @i{Michael Brand} helped by reporting many bugs and testing many features.
16523 He also implemented the distinction between empty fields and 0-value fields
16524 in Org's spreadsheets.
16525 @item
16526 @i{Christophe Bataillon} created the great unicorn logo that we use on the
16527 Org mode website.
16528 @item
16529 @i{Alex Bochannek} provided a patch for rounding timestamps.
16530 @item
16531 @i{Jan Böcker} wrote @file{org-docview.el}.
16532 @item
16533 @i{Brad Bozarth} showed how to pull RSS feed data into Org mode files.
16534 @item
16535 @i{Tom Breton} wrote @file{org-choose.el}.
16536 @item
16537 @i{Charles Cave}'s suggestion sparked the implementation of templates
16538 for Remember, which are now templates for capture.
16539 @item
16540 @i{Pavel Chalmoviansky} influenced the agenda treatment of items with
16541 specified time.
16542 @item
16543 @i{Gregory Chernov} patched support for Lisp forms into table
16544 calculations and improved XEmacs compatibility, in particular by porting
16545 @file{nouline.el} to XEmacs.
16546 @item
16547 @i{Sacha Chua} suggested copying some linking code from Planner.
16548 @item
16549 @i{Toby S. Cubitt} contributed to the code for clock formats.
16550 @item
16551 @i{Baoqiu Cui} contributed the DocBook exporter.  It has been deleted from
16552 Org 8.0: you can now export to Texinfo and export the @code{.texi} file to
16553 DocBook using @code{makeinfo}.
16554 @item
16555 @i{Eddward DeVilla} proposed and tested checkbox statistics.  He also
16556 came up with the idea of properties, and that there should be an API for
16557 them.
16558 @item
16559 @i{Nick Dokos} tracked down several nasty bugs.
16560 @item
16561 @i{Kees Dullemond} used to edit projects lists directly in HTML and so
16562 inspired some of the early development, including HTML export.  He also
16563 asked for a way to narrow wide table columns.
16564 @item
16565 @i{Thomas S. Dye} contributed documentation on Worg and helped integrating
16566 the Org-Babel documentation into the manual.
16567 @item
16568 @i{Christian Egli} converted the documentation into Texinfo format, inspired
16569 the agenda, patched CSS formatting into the HTML exporter, and wrote
16570 @file{org-taskjuggler.el}, which has been rewritten by Nicolas Goaziou as
16571 @file{ox-taskjuggler.el} for Org 8.0.
16572 @item
16573 @i{David Emery} provided a patch for custom CSS support in exported
16574 HTML agendas.
16575 @item
16576 @i{Nic Ferrier} contributed mailcap and XOXO support.
16577 @item
16578 @i{Miguel A. Figueroa-Villanueva} implemented hierarchical checkboxes.
16579 @item
16580 @i{John Foerch} figured out how to make incremental search show context
16581 around a match in a hidden outline tree.
16582 @item
16583 @i{Raimar Finken} wrote @file{org-git-line.el}.
16584 @item
16585 @i{Mikael Fornius} works as a mailing list moderator.
16586 @item
16587 @i{Austin Frank} works as a mailing list moderator.
16588 @item
16589 @i{Eric Fraga} drove the development of BEAMER export with ideas and
16590 testing.
16591 @item
16592 @i{Barry Gidden} did proofreading the manual in preparation for the book
16593 publication through Network Theory Ltd.
16594 @item
16595 @i{Niels Giesen} had the idea to automatically archive DONE trees.
16596 @item
16597 @i{Nicolas Goaziou} rewrote much of the plain list code.  He also wrote
16598 @file{org-element.el} and @file{org-export.el}, which was a huge step forward
16599 in implementing a clean framework for Org exporters.
16600 @item
16601 @i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
16602 @item
16603 @i{Brian Gough} of Network Theory Ltd publishes the Org mode manual as a
16604 book.
16605 @item
16606 @i{Bernt Hansen} has driven much of the support for auto-repeating tasks,
16607 task state change logging, and the clocktable.  His clear explanations have
16608 been critical when we started to adopt the Git version control system.
16609 @item
16610 @i{Manuel Hermenegildo} has contributed various ideas, small fixes and
16611 patches.
16612 @item
16613 @i{Phil Jackson} wrote @file{org-irc.el}.
16614 @item
16615 @i{Scott Jaderholm} proposed footnotes, control over whitespace between
16616 folded entries, and column view for properties.
16617 @item
16618 @i{Matt Jones} wrote @i{MobileOrg Android}.
16619 @item
16620 @i{Tokuya Kameshima} wrote @file{org-wl.el} and @file{org-mew.el}.
16621 @item
16622 @i{Jonathan Leech-Pepin} wrote @file{ox-texinfo.el}.
16623 @item
16624 @i{Shidai Liu} ("Leo") asked for embedded @LaTeX{} and tested it.  He also
16625 provided frequent feedback and some patches.
16626 @item
16627 @i{Matt Lundin} has proposed last-row references for table formulas and named
16628 invisible anchors.  He has also worked a lot on the FAQ.
16629 @item
16630 @i{David Maus} wrote @file{org-atom.el}, maintains the issues file for Org,
16631 and is a prolific contributor on the mailing list with competent replies,
16632 small fixes and patches.
16633 @item
16634 @i{Jason F. McBrayer} suggested agenda export to CSV format.
16635 @item
16636 @i{Max Mikhanosha} came up with the idea of refiling and sticky agendas.
16637 @item
16638 @i{Dmitri Minaev} sent a patch to set priority limits on a per-file
16639 basis.
16640 @item
16641 @i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler
16642 happy.
16643 @item
16644 @i{Richard Moreland} wrote @i{MobileOrg} for the iPhone.
16645 @item
16646 @i{Rick Moynihan} proposed allowing multiple TODO sequences in a file
16647 and being able to quickly restrict the agenda to a subtree.
16648 @item
16649 @i{Todd Neal} provided patches for links to Info files and Elisp forms.
16650 @item
16651 @i{Greg Newman} refreshed the unicorn logo into its current form.
16652 @item
16653 @i{Tim O'Callaghan} suggested in-file links, search options for general
16654 file links, and TAGS.
16655 @item
16656 @i{Osamu Okano} wrote @file{orgcard2ref.pl}, a Perl program to create a text
16657 version of the reference card.
16658 @item
16659 @i{Takeshi Okano} translated the manual and David O'Toole's tutorial
16660 into Japanese.
16661 @item
16662 @i{Oliver Oppitz} suggested multi-state TODO items.
16663 @item
16664 @i{Scott Otterson} sparked the introduction of descriptive text for
16665 links, among other things.
16666 @item
16667 @i{Pete Phillips} helped during the development of the TAGS feature, and
16668 provided frequent feedback.
16669 @item
16670 @i{Francesco Pizzolante} provided patches that helped speeding up the agenda
16671 generation.
16672 @item
16673 @i{Martin Pohlack} provided the code snippet to bundle character insertion
16674 into bundles of 20 for undo.
16675 @item
16676 @i{T.V. Raman} reported bugs and suggested improvements.
16677 @item
16678 @i{Matthias Rempe} (Oelde) provided ideas, Windows support, and quality
16679 control.
16680 @item
16681 @i{Paul Rivier} provided the basic implementation of named footnotes.  He
16682 also acted as mailing list moderator for some time.
16683 @item
16684 @i{Kevin Rogers} contributed code to access VM files on remote hosts.
16685 @item
16686 @i{Frank Ruell} solved the mystery of the @code{keymapp nil} bug, a
16687 conflict with @file{allout.el}.
16688 @item
16689 @i{Jason Riedy} generalized the send-receive mechanism for Orgtbl tables with
16690 extensive patches.
16691 @item
16692 @i{Philip Rooke} created the Org reference card, provided lots
16693 of feedback, developed and applied standards to the Org documentation.
16694 @item
16695 @i{Christian Schlauer} proposed angular brackets around links, among
16696 other things.
16697 @item
16698 @i{Christopher Schmidt} reworked @code{orgstruct-mode} so that users can
16699 enjoy folding in non-org buffers by using Org headlines in comments.
16700 @item
16701 @i{Paul Sexton} wrote @file{org-ctags.el}.
16702 @item
16703 Linking to VM/BBDB/Gnus was first inspired by @i{Tom Shannon}'s
16704 @file{organizer-mode.el}.
16705 @item
16706 @i{Ilya Shlyakhter} proposed the Archive Sibling, line numbering in literal
16707 examples, and remote highlighting for referenced code lines.
16708 @item
16709 @i{Stathis Sideris} wrote the @file{ditaa.jar} ASCII to PNG converter that is
16710 now packaged into Org's @file{contrib} directory.
16711 @item
16712 @i{Daniel Sinder} came up with the idea of internal archiving by locking
16713 subtrees.
16714 @item
16715 @i{Dale Smith} proposed link abbreviations.
16716 @item
16717 @i{James TD Smith} has contributed a large number of patches for useful
16718 tweaks and features.
16719 @item
16720 @i{Adam Spiers} asked for global linking commands, inspired the link
16721 extension system, added support for mairix, and proposed the mapping API.
16722 @item
16723 @i{Ulf Stegemann} created the table to translate special symbols to HTML,
16724 @LaTeX{}, UTF-8, Latin-1 and ASCII.
16725 @item
16726 @i{Andy Stewart} contributed code to @file{org-w3m.el}, to copy HTML content
16727 with links transformation to Org syntax.
16728 @item
16729 @i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
16730 chapter about publishing.
16731 @item
16732 @i{Jambunathan K} contributed the ODT exporter and rewrote the HTML exporter.
16733 @item
16734 @i{Sebastien Vauban} reported many issues with @LaTeX{} and BEAMER export and
16735 enabled source code highlighting in Gnus.
16736 @item
16737 @i{Stefan Vollmar} organized a video-recorded talk at the
16738 Max-Planck-Institute for Neurology.  He also inspired the creation of a
16739 concept index for HTML export.
16740 @item
16741 @i{J@"urgen Vollmer} contributed code generating the table of contents
16742 in HTML output.
16743 @item
16744 @i{Samuel Wales} has provided important feedback and bug reports.
16745 @item
16746 @i{Chris Wallace} provided a patch implementing the @samp{QUOTE}
16747 keyword.
16748 @item
16749 @i{David Wainberg} suggested archiving, and improvements to the linking
16750 system.
16751 @item
16752 @i{Carsten Wimmer} suggested some changes and helped fix a bug in
16753 linking to Gnus.
16754 @item
16755 @i{Roland Winkler} requested additional key bindings to make Org
16756 work on a tty.
16757 @item
16758 @i{Piotr Zielinski} wrote @file{org-mouse.el}, proposed agenda blocks
16759 and contributed various ideas and code snippets.
16760 @end itemize
16763 @node GNU Free Documentation License, Main Index, History and Acknowledgments, Top
16764 @appendix GNU Free Documentation License
16765 @include doclicense.texi
16768 @node Main Index, Key Index, GNU Free Documentation License, Top
16769 @unnumbered Concept index
16771 @printindex cp
16773 @node Key Index, Command and Function Index, Main Index, Top
16774 @unnumbered Key index
16776 @printindex ky
16778 @node Command and Function Index, Variable Index, Key Index, Top
16779 @unnumbered Command and function index
16781 @printindex fn
16783 @node Variable Index,  , Command and Function Index, Top
16784 @unnumbered Variable index
16786 This is not a complete index of variables and faces, only the ones that are
16787 mentioned in the manual.  For a more complete list, use @kbd{M-x
16788 org-customize @key{RET}} and then click yourself through the tree.
16790 @printindex vr
16792 @bye
16794 @c Local variables:
16795 @c fill-column: 77
16796 @c indent-tabs-mode: nil
16797 @c paragraph-start:    "\b\\|^@[a-zA-Z]*[ \n]\\|^@x?org\\(key\\|cmd\\)\\|\f\\|[  ]*$"
16798 @c paragraph-separate: "\b\\|^@[a-zA-Z]*[ \n]\\|^@x?org\\(key\\|cmd\\)\\|[       \f]*$"
16799 @c End:
16802 @c  LocalWords:  webdavhost pre