org-element: Parse contents of DATE keyword
[org-mode.git] / doc / org.texi
blob28d2a0613c599bc304cda7a027b528589f78a0b6
2 \input texinfo
3 @c %**start of header
4 @setfilename ../../info/org
5 @settitle The Org Manual
7 @include org-version.inc
9 @c Use proper quote and backtick for code sections in PDF output
10 @c Cf. Texinfo manual 14.2
11 @set txicodequoteundirected
12 @set txicodequotebacktick
14 @c Version and Contact Info
15 @set MAINTAINERSITE @uref{http://orgmode.org,maintainers webpage}
16 @set AUTHOR Carsten Dominik
17 @set MAINTAINER Carsten Dominik
18 @set MAINTAINEREMAIL @email{carsten at orgmode dot org}
19 @set MAINTAINERCONTACT @uref{mailto:carsten at orgmode dot org,contact the maintainer}
20 @c %**end of header
21 @finalout
24 @c -----------------------------------------------------------------------------
26 @c Macro definitions for commands and keys
27 @c =======================================
29 @c The behavior of the key/command macros will depend on the flag cmdnames
30 @c When set, commands names are shown.  When clear, they are not shown.
32 @set cmdnames
34 @c Below we define the following macros for Org key tables:
36 @c orgkey{key}                        A key item
37 @c orgcmd{key,cmd}                    Key with command name
38 @c xorgcmd{key,cmd}                   Key with command name as @itemx
39 @c orgcmdnki{key,cmd}                 Like orgcmd, but do not index the key
40 @c orgcmdtkc{text,key,cmd}            Like orgcmd,special text instead of key
41 @c orgcmdkkc{key1,key2,cmd}           Two keys with one command name, use "or"
42 @c orgcmdkxkc{key1,key2,cmd}          Two keys with one command name, but
43 @c                                    different functions, so format as @itemx
44 @c orgcmdkskc{key1,key2,cmd}          Same as orgcmdkkc, but use "or short"
45 @c xorgcmdkskc{key1,key2,cmd}         Same as previous, but use @itemx
46 @c orgcmdkkcc{key1,key2,cmd1,cmd2}    Two keys and two commands
48 @c a key but no command
49 @c    Inserts:    @item key
50 @macro orgkey{key}
51 @kindex \key\
52 @item @kbd{\key\}
53 @end macro
55 @macro xorgkey{key}
56 @kindex \key\
57 @itemx @kbd{\key\}
58 @end macro
60 @c one key with a command
61 @c   Inserts:    @item KEY               COMMAND
62 @macro orgcmd{key,command}
63 @ifset cmdnames
64 @kindex \key\
65 @findex \command\
66 @iftex
67 @item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
68 @end iftex
69 @ifnottex
70 @item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
71 @end ifnottex
72 @end ifset
73 @ifclear cmdnames
74 @kindex \key\
75 @item @kbd{\key\}
76 @end ifclear
77 @end macro
79 @c One key with one command, formatted using @itemx
80 @c   Inserts:    @itemx KEY               COMMAND
81 @macro xorgcmd{key,command}
82 @ifset cmdnames
83 @kindex \key\
84 @findex \command\
85 @iftex
86 @itemx @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
87 @end iftex
88 @ifnottex
89 @itemx @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
90 @end ifnottex
91 @end ifset
92 @ifclear cmdnames
93 @kindex \key\
94 @itemx @kbd{\key\}
95 @end ifclear
96 @end macro
98 @c one key with a command, bit do not index the key
99 @c   Inserts:    @item KEY               COMMAND
100 @macro orgcmdnki{key,command}
101 @ifset cmdnames
102 @findex \command\
103 @iftex
104 @item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
105 @end iftex
106 @ifnottex
107 @item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
108 @end ifnottex
109 @end ifset
110 @ifclear cmdnames
111 @item @kbd{\key\}
112 @end ifclear
113 @end macro
115 @c one key with a command, and special text to replace key in item
116 @c   Inserts:    @item TEXT                    COMMAND
117 @macro orgcmdtkc{text,key,command}
118 @ifset cmdnames
119 @kindex \key\
120 @findex \command\
121 @iftex
122 @item @kbd{\text\} @hskip 0pt plus 1filll @code{\command\}
123 @end iftex
124 @ifnottex
125 @item @kbd{\text\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
126 @end ifnottex
127 @end ifset
128 @ifclear cmdnames
129 @kindex \key\
130 @item @kbd{\text\}
131 @end ifclear
132 @end macro
134 @c two keys with one command
135 @c   Inserts:    @item KEY1 or KEY2            COMMAND
136 @macro orgcmdkkc{key1,key2,command}
137 @ifset cmdnames
138 @kindex \key1\
139 @kindex \key2\
140 @findex \command\
141 @iftex
142 @item @kbd{\key1\} @ @r{or} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
143 @end iftex
144 @ifnottex
145 @item @kbd{\key1\} @ @r{or} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
146 @end ifnottex
147 @end ifset
148 @ifclear cmdnames
149 @kindex \key1\
150 @kindex \key2\
151 @item @kbd{\key1\} @ @r{or} @ @kbd{\key2\}
152 @end ifclear
153 @end macro
155 @c Two keys with one command name, but different functions, so format as
156 @c @itemx
157 @c   Inserts:    @item KEY1
158 @c               @itemx KEY2                COMMAND
159 @macro orgcmdkxkc{key1,key2,command}
160 @ifset cmdnames
161 @kindex \key1\
162 @kindex \key2\
163 @findex \command\
164 @iftex
165 @item @kbd{\key1\}
166 @itemx @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
167 @end iftex
168 @ifnottex
169 @item @kbd{\key1\}
170 @itemx @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
171 @end ifnottex
172 @end ifset
173 @ifclear cmdnames
174 @kindex \key1\
175 @kindex \key2\
176 @item @kbd{\key1\}
177 @itemx @kbd{\key2\}
178 @end ifclear
179 @end macro
181 @c Same as previous, but use "or short"
182 @c   Inserts:    @item KEY1 or short KEY2            COMMAND
183 @macro orgcmdkskc{key1,key2,command}
184 @ifset cmdnames
185 @kindex \key1\
186 @kindex \key2\
187 @findex \command\
188 @iftex
189 @item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
190 @end iftex
191 @ifnottex
192 @item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
193 @end ifnottex
194 @end ifset
195 @ifclear cmdnames
196 @kindex \key1\
197 @kindex \key2\
198 @item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\}
199 @end ifclear
200 @end macro
202 @c Same as previous, but use @itemx
203 @c   Inserts:    @itemx KEY1 or short KEY2            COMMAND
204 @macro xorgcmdkskc{key1,key2,command}
205 @ifset cmdnames
206 @kindex \key1\
207 @kindex \key2\
208 @findex \command\
209 @iftex
210 @itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
211 @end iftex
212 @ifnottex
213 @itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
214 @end ifnottex
215 @end ifset
216 @ifclear cmdnames
217 @kindex \key1\
218 @kindex \key2\
219 @itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\}
220 @end ifclear
221 @end macro
223 @c two keys with two commands
224 @c   Inserts:    @item KEY1                        COMMAND1
225 @c               @itemx KEY2                       COMMAND2
226 @macro orgcmdkkcc{key1,key2,command1,command2}
227 @ifset cmdnames
228 @kindex \key1\
229 @kindex \key2\
230 @findex \command1\
231 @findex \command2\
232 @iftex
233 @item @kbd{\key1\} @hskip 0pt plus 1filll @code{\command1\}
234 @itemx @kbd{\key2\} @hskip 0pt plus 1filll @code{\command2\}
235 @end iftex
236 @ifnottex
237 @item @kbd{\key1\} @tie{}@tie{}@tie{}@tie{}(@code{\command1\})
238 @itemx @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command2\})
239 @end ifnottex
240 @end ifset
241 @ifclear cmdnames
242 @kindex \key1\
243 @kindex \key2\
244 @item @kbd{\key1\}
245 @itemx @kbd{\key2\}
246 @end ifclear
247 @end macro
248 @c -----------------------------------------------------------------------------
250 @iftex
251 @c @hyphenation{time-stamp time-stamps time-stamp-ing time-stamp-ed}
252 @end iftex
254 @c Subheadings inside a table.
255 @macro tsubheading{text}
256 @ifinfo
257 @subsubheading \text\
258 @end ifinfo
259 @ifnotinfo
260 @item @b{\text\}
261 @end ifnotinfo
262 @end macro
264 @copying
265 This manual is for Org version @value{VERSION}.
267 Copyright @copyright{} 2004-2012  Free Software Foundation, Inc.
269 @quotation
270 Permission is granted to copy, distribute and/or modify this document
271 under the terms of the GNU Free Documentation License, Version 1.3 or
272 any later version published by the Free Software Foundation; with no
273 Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
274 and with the Back-Cover Texts as in (a) below.  A copy of the license
275 is included in the section entitled ``GNU Free Documentation License.''
277 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
278 modify this GNU manual.  Buying copies from the FSF supports it in
279 developing GNU and promoting software freedom.''
281 This document is part of a collection distributed under the GNU Free
282 Documentation License.  If you want to distribute this document
283 separately from the collection, you can do so by adding a copy of the
284 license to the document, as described in section 6 of the license.
285 @end quotation
286 @end copying
288 @dircategory Emacs editing modes
289 @direntry
290 * Org Mode: (org).      Outline-based notes management and organizer
291 @end direntry
293 @titlepage
294 @title The Org Manual
296 @subtitle Release @value{VERSION}
297 @author by Carsten Dominik
298 with contributions by David O'Toole, Bastien Guerry, Philip Rooke, Dan Davison, Eric Schulte, Thomas Dye and Jambunathan K.
300 @c The following two commands start the copyright page.
301 @page
302 @vskip 0pt plus 1filll
303 @insertcopying
304 @end titlepage
306 @c Output the table of contents at the beginning.
307 @contents
309 @ifnottex
310 @node Top, Introduction, (dir), (dir)
311 @top Org Mode Manual
313 @insertcopying
314 @end ifnottex
316 @menu
317 * Introduction::                Getting started
318 * Document Structure::          A tree works like your brain
319 * Tables::                      Pure magic for quick formatting
320 * Hyperlinks::                  Notes in context
321 * TODO Items::                  Every tree branch can be a TODO item
322 * Tags::                        Tagging headlines and matching sets of tags
323 * Properties and Columns::      Storing information about an entry
324 * Dates and Times::             Making items useful for planning
325 * Capture - Refile - Archive::  The ins and outs for projects
326 * Agenda Views::                Collecting information into views
327 * Markup::                      Prepare text for rich export
328 * Exporting::                   Sharing and publishing of notes
329 * Publishing::                  Create a web site of linked Org files
330 * Working With Source Code::    Export, evaluate, and tangle code blocks
331 * Miscellaneous::               All the rest which did not fit elsewhere
332 * Hacking::                     How to hack your way around
333 * MobileOrg::                   Viewing and capture on a mobile device
334 * History and Acknowledgments::  How Org came into being
335 * Main Index::                  An index of Org's concepts and features
336 * Key Index::                   Key bindings and where they are described
337 * Command and Function Index::  Command names and some internal functions
338 * Variable Index::              Variables mentioned in the manual
340 @detailmenu
341  --- The Detailed Node Listing ---
343 Introduction
345 * Summary::                     Brief summary of what Org does
346 * Installation::                How to install a downloaded version of Org
347 * Activation::                  How to activate Org for certain buffers
348 * Feedback::                    Bug reports, ideas, patches etc.
349 * Conventions::                 Type-setting conventions in the manual
351 Document structure
353 * Outlines::                    Org is based on Outline mode
354 * Headlines::                   How to typeset Org tree headlines
355 * Visibility cycling::          Show and hide, much simplified
356 * Motion::                      Jumping to other headlines
357 * Structure editing::           Changing sequence and level of headlines
358 * Sparse trees::                Matches embedded in context
359 * Plain lists::                 Additional structure within an entry
360 * Drawers::                     Tucking stuff away
361 * Blocks::                      Folding blocks
362 * Footnotes::                   How footnotes are defined in Org's syntax
363 * Orgstruct mode::              Structure editing outside Org
365 Tables
367 * Built-in table editor::       Simple tables
368 * Column width and alignment::  Overrule the automatic settings
369 * Column groups::               Grouping to trigger vertical lines
370 * Orgtbl mode::                 The table editor as minor mode
371 * The spreadsheet::             The table editor has spreadsheet capabilities
372 * Org-Plot::                    Plotting from org tables
374 The spreadsheet
376 * References::                  How to refer to another field or range
377 * Formula syntax for Calc::     Using Calc to compute stuff
378 * Formula syntax for Lisp::     Writing formulas in Emacs Lisp
379 * Durations and time values::   How to compute durations and time values
380 * Field and range formulas::    Formula for specific (ranges of) fields
381 * Column formulas::             Formulas valid for an entire column
382 * Editing and debugging formulas::  Fixing formulas
383 * Updating the table::          Recomputing all dependent fields
384 * Advanced features::           Field and column names, parameters and automatic recalc
386 Hyperlinks
388 * Link format::                 How links in Org are formatted
389 * Internal links::              Links to other places in the current file
390 * External links::              URL-like links to the world
391 * Handling links::              Creating, inserting and following
392 * Using links outside Org::     Linking from my C source code?
393 * Link abbreviations::          Shortcuts for writing complex links
394 * Search options::              Linking to a specific location
395 * Custom searches::             When the default search is not enough
397 Internal links
399 * Radio targets::               Make targets trigger links in plain text
401 TODO items
403 * TODO basics::                 Marking and displaying TODO entries
404 * TODO extensions::             Workflow and assignments
405 * Progress logging::            Dates and notes for progress
406 * Priorities::                  Some things are more important than others
407 * Breaking down tasks::         Splitting a task into manageable pieces
408 * Checkboxes::                  Tick-off lists
410 Extended use of TODO keywords
412 * Workflow states::             From TODO to DONE in steps
413 * TODO types::                  I do this, Fred does the rest
414 * Multiple sets in one file::   Mixing it all, and still finding your way
415 * Fast access to TODO states::  Single letter selection of a state
416 * Per-file keywords::           Different files, different requirements
417 * Faces for TODO keywords::     Highlighting states
418 * TODO dependencies::           When one task needs to wait for others
420 Progress logging
422 * Closing items::               When was this entry marked DONE?
423 * Tracking TODO state changes::  When did the status change?
424 * Tracking your habits::        How consistent have you been?
426 Tags
428 * Tag inheritance::             Tags use the tree structure of the outline
429 * Setting tags::                How to assign tags to a headline
430 * Tag searches::                Searching for combinations of tags
432 Properties and columns
434 * Property syntax::             How properties are spelled out
435 * Special properties::          Access to other Org mode features
436 * Property searches::           Matching property values
437 * Property inheritance::        Passing values down the tree
438 * Column view::                 Tabular viewing and editing
439 * Property API::                Properties for Lisp programmers
441 Column view
443 * Defining columns::            The COLUMNS format property
444 * Using column view::           How to create and use column view
445 * Capturing column view::       A dynamic block for column view
447 Defining columns
449 * Scope of column definitions::  Where defined, where valid?
450 * Column attributes::           Appearance and content of a column
452 Dates and times
454 * Timestamps::                  Assigning a time to a tree entry
455 * Creating timestamps::         Commands which insert timestamps
456 * Deadlines and scheduling::    Planning your work
457 * Clocking work time::          Tracking how long you spend on a task
458 * Effort estimates::            Planning work effort in advance
459 * Relative timer::              Notes with a running timer
460 * Countdown timer::             Starting a countdown timer for a task
462 Creating timestamps
464 * The date/time prompt::        How Org mode helps you entering date and time
465 * Custom time format::          Making dates look different
467 Deadlines and scheduling
469 * Inserting deadline/schedule::  Planning items
470 * Repeated tasks::              Items that show up again and again
472 Clocking work time
474 * Clocking commands::           Starting and stopping a clock
475 * The clock table::             Detailed reports
476 * Resolving idle time::         Resolving time when you've been idle
478 Capture - Refile - Archive
480 * Capture::                     Capturing new stuff
481 * Attachments::                 Add files to tasks
482 * RSS Feeds::                   Getting input from RSS feeds
483 * Protocols::                   External (e.g.@: Browser) access to Emacs and Org
484 * Refiling notes::              Moving a tree from one place to another
485 * Archiving::                   What to do with finished projects
487 Capture
489 * Setting up capture::          Where notes will be stored
490 * Using capture::               Commands to invoke and terminate capture
491 * Capture templates::           Define the outline of different note types
493 Capture templates
495 * Template elements::           What is needed for a complete template entry
496 * Template expansion::          Filling in information about time and context
498 Archiving
500 * Moving subtrees::             Moving a tree to an archive file
501 * Internal archiving::          Switch off a tree but keep it in the file
503 Agenda views
505 * Agenda files::                Files being searched for agenda information
506 * Agenda dispatcher::           Keyboard access to agenda views
507 * Built-in agenda views::       What is available out of the box?
508 * Presentation and sorting::    How agenda items are prepared for display
509 * Agenda commands::             Remote editing of Org trees
510 * Custom agenda views::         Defining special searches and views
511 * Exporting Agenda Views::      Writing a view to a file
512 * Agenda column view::          Using column view for collected entries
514 The built-in agenda views
516 * Weekly/daily agenda::         The calendar page with current tasks
517 * Global TODO list::            All unfinished action items
518 * Matching tags and properties::  Structured information with fine-tuned search
519 * Timeline::                    Time-sorted view for single file
520 * Search view::                 Find entries by searching for text
521 * Stuck projects::              Find projects you need to review
523 Presentation and sorting
525 * Categories::                  Not all tasks are equal
526 * Time-of-day specifications::  How the agenda knows the time
527 * Sorting of agenda items::     The order of things
529 Custom agenda views
531 * Storing searches::            Type once, use often
532 * Block agenda::                All the stuff you need in a single buffer
533 * Setting Options::             Changing the rules
535 Markup for rich export
537 * Structural markup elements::  The basic structure as seen by the exporter
538 * Images and tables::           Tables and Images will be included
539 * Literal examples::            Source code examples with special formatting
540 * Include files::               Include additional files into a document
541 * Index entries::               Making an index
542 * Macro replacement::           Use macros to create complex output
543 * Embedded @LaTeX{}::           LaTeX can be freely used inside Org documents
545 Structural markup elements
547 * Document title::              Where the title is taken from
548 * Headings and sections::       The document structure as seen by the exporter
549 * Table of contents::           The if and where of the table of contents
550 * Initial text::                Text before the first heading?
551 * Lists::                       Lists
552 * Paragraphs::                  Paragraphs
553 * Footnote markup::             Footnotes
554 * Emphasis and monospace::      Bold, italic, etc.
555 * Horizontal rules::            Make a line
556 * Comment lines::               What will *not* be exported
558 Embedded @LaTeX{}
560 * Special symbols::             Greek letters and other symbols
561 * Subscripts and superscripts::  Simple syntax for raising/lowering text
562 * @LaTeX{} fragments::             Complex formulas made easy
563 * Previewing @LaTeX{} fragments::  What will this snippet look like?
564 * CDLaTeX mode::                Speed up entering of formulas
566 Exporting
568 * Selective export::            Using tags to select and exclude trees
569 * Export options::              Per-file export settings
570 * The export dispatcher::       How to access exporter commands
571 * ASCII/Latin-1/UTF-8 export::  Exporting to flat files with encoding
572 * HTML export::                 Exporting to HTML
573 * @LaTeX{} and PDF export::     Exporting to @LaTeX{}, and processing to PDF
574 * DocBook export::              Exporting to DocBook
575 * OpenDocument Text export::    Exporting to OpenDocument Text
576 * TaskJuggler export::          Exporting to TaskJuggler
577 * Freemind export::             Exporting to Freemind mind maps
578 * XOXO export::                 Exporting to XOXO
579 * iCalendar export::            Exporting in iCalendar format
581 HTML export
583 * HTML Export commands::        How to invoke HTML export
584 * HTML preamble and postamble::  How to insert a preamble and a postamble
585 * Quoting HTML tags::           Using direct HTML in Org mode
586 * Links in HTML export::        How links will be interpreted and formatted
587 * Tables in HTML export::       How to modify the formatting of tables
588 * Images in HTML export::       How to insert figures into HTML output
589 * Math formatting in HTML export::  Beautiful math also on the web
590 * Text areas in HTML export::   An alternative way to show an example
591 * CSS support::                 Changing the appearance of the output
592 * JavaScript support::          Info and Folding in a web browser
594 @LaTeX{} and PDF export
596 * @LaTeX{}/PDF export commands::
597 * Header and sectioning::       Setting up the export file structure
598 * Quoting @LaTeX{} code::       Incorporating literal @LaTeX{} code
599 * Tables in @LaTeX{} export::   Options for exporting tables to @LaTeX{}
600 * Images in @LaTeX{} export::   How to insert figures into @LaTeX{} output
601 * Beamer class export::         Turning the file into a presentation
603 DocBook export
605 * DocBook export commands::     How to invoke DocBook export
606 * Quoting DocBook code::        Incorporating DocBook code in Org files
607 * Recursive sections::          Recursive sections in DocBook
608 * Tables in DocBook export::    Tables are exported as HTML tables
609 * Images in DocBook export::    How to insert figures into DocBook output
610 * Special characters::          How to handle special characters
612 OpenDocument Text export
614 * Pre-requisites for ODT export::  What packages ODT exporter relies on
615 * ODT export commands::         How to invoke ODT export
616 * Extending ODT export::        How to produce @samp{doc}, @samp{pdf} files
617 * Applying custom styles::      How to apply custom styles to the output
618 * Links in ODT export::         How links will be interpreted and formatted
619 * Tables in ODT export::        How Tables are exported
620 * Images in ODT export::        How to insert images
621 * Math formatting in ODT export::  How @LaTeX{} fragments are formatted
622 * Labels and captions in ODT export::  How captions are rendered
623 * Literal examples in ODT export::  How source and example blocks are formatted
624 * Advanced topics in ODT export::  Read this if you are a power user
626 Math formatting in ODT export
628 * Working with @LaTeX{} math snippets::  How to embed @LaTeX{} math fragments
629 * Working with MathML or OpenDocument formula files::  How to embed equations in native format
631 Advanced topics in ODT export
633 * Configuring a document converter::  How to register a document converter
634 * Working with OpenDocument style files::  Explore the internals
635 * Creating one-off styles::     How to produce custom highlighting etc
636 * Customizing tables in ODT export::  How to define and use Table templates
637 * Validating OpenDocument XML::  How to debug corrupt OpenDocument files
639 Publishing
641 * Configuration::               Defining projects
642 * Uploading files::             How to get files up on the server
643 * Sample configuration::        Example projects
644 * Triggering publication::      Publication commands
646 Configuration
648 * Project alist::               The central configuration variable
649 * Sources and destinations::    From here to there
650 * Selecting files::             What files are part of the project?
651 * Publishing action::           Setting the function doing the publishing
652 * Publishing options::          Tweaking HTML/@LaTeX{} export
653 * Publishing links::            Which links keep working after publishing?
654 * Sitemap::                     Generating a list of all pages
655 * Generating an index::         An index that reaches across pages
657 Sample configuration
659 * Simple example::              One-component publishing
660 * Complex example::             A multi-component publishing example
662 Working with source code
664 * Structure of code blocks::    Code block syntax described
665 * Editing source code::         Language major-mode editing
666 * Exporting code blocks::       Export contents and/or results
667 * Extracting source code::      Create pure source code files
668 * Evaluating code blocks::      Place results of evaluation in the Org mode buffer
669 * Library of Babel::            Use and contribute to a library of useful code blocks
670 * Languages::                   List of supported code block languages
671 * Header arguments::            Configure code block functionality
672 * Results of evaluation::       How evaluation results are handled
673 * Noweb reference syntax::      Literate programming in Org mode
674 * Key bindings and useful functions::  Work quickly with code blocks
675 * Batch execution::             Call functions from the command line
677 Header arguments
679 * Using header arguments::      Different ways to set header arguments
680 * Specific header arguments::   List of header arguments
682 Using header arguments
684 * System-wide header arguments::  Set global default values
685 * Language-specific header arguments::  Set default values by language
686 * Buffer-wide header arguments::  Set default values for a specific buffer
687 * Header arguments in Org mode properties::  Set default values for a buffer or heading
688 * Code block specific header arguments::  The most common way to set values
689 * Header arguments in function calls::  The most specific level
691 Specific header arguments
693 * var::                         Pass arguments to code blocks
694 * results::                     Specify the type of results and how they will
695                                 be collected and handled
696 * file::                        Specify a path for file output
697 * file-desc::                   Specify a description for file results
698 * dir::                         Specify the default (possibly remote)
699                                 directory for code block execution
700 * exports::                     Export code and/or results
701 * tangle::                      Toggle tangling and specify file name
702 * mkdirp::                      Toggle creation of parent directories of target
703                                 files during tangling
704 * comments::                    Toggle insertion of comments in tangled
705                                 code files
706 * padline::                     Control insertion of padding lines in tangled
707                                 code files
708 * no-expand::                   Turn off variable assignment and noweb
709                                 expansion during tangling
710 * session::                     Preserve the state of code evaluation
711 * noweb::                       Toggle expansion of noweb references
712 * noweb-ref::                   Specify block's noweb reference resolution target
713 * noweb-sep::                   String used to separate noweb references
714 * cache::                       Avoid re-evaluating unchanged code blocks
715 * sep::                         Delimiter for writing tabular results outside Org
716 * hlines::                      Handle horizontal lines in tables
717 * colnames::                    Handle column names in tables
718 * rownames::                    Handle row names in tables
719 * shebang::                     Make tangled files executable
720 * eval::                        Limit evaluation of specific code blocks
721 * wrap::                        Mark source block evaluation results
723 Miscellaneous
725 * Completion::                  M-TAB knows what you need
726 * Easy Templates::              Quick insertion of structural elements
727 * Speed keys::                  Electric commands at the beginning of a headline
728 * Code evaluation security::    Org mode files evaluate inline code
729 * Customization::               Adapting Org to your taste
730 * In-buffer settings::          Overview of the #+KEYWORDS
731 * The very busy C-c C-c key::   When in doubt, press C-c C-c
732 * Clean view::                  Getting rid of leading stars in the outline
733 * TTY keys::                    Using Org on a tty
734 * Interaction::                 Other Emacs packages
735 * org-crypt.el::                Encrypting Org files
737 Interaction with other packages
739 * Cooperation::                 Packages Org cooperates with
740 * Conflicts::                   Packages that lead to conflicts
742 Hacking
744 * Hooks::                       How to reach into Org's internals
745 * Add-on packages::             Available extensions
746 * Adding hyperlink types::      New custom link types
747 * Context-sensitive commands::  How to add functionality to such commands
748 * Tables in arbitrary syntax::  Orgtbl for @LaTeX{} and other programs
749 * Dynamic blocks::              Automatically filled blocks
750 * Special agenda views::        Customized views
751 * Extracting agenda information::  Postprocessing of agenda information
752 * Using the property API::      Writing programs that use entry properties
753 * Using the mapping API::       Mapping over all or selected entries
755 Tables and lists in arbitrary syntax
757 * Radio tables::                Sending and receiving radio tables
758 * A @LaTeX{} example::          Step by step, almost a tutorial
759 * Translator functions::        Copy and modify
760 * Radio lists::                 Doing the same for lists
762 MobileOrg
764 * Setting up the staging area::  Where to interact with the mobile device
765 * Pushing to MobileOrg::        Uploading Org files and agendas
766 * Pulling from MobileOrg::      Integrating captured and flagged items
768 @end detailmenu
769 @end menu
771 @node Introduction, Document Structure, Top, Top
772 @chapter Introduction
773 @cindex introduction
775 @menu
776 * Summary::                     Brief summary of what Org does
777 * Installation::                How to install a downloaded version of Org
778 * Activation::                  How to activate Org for certain buffers
779 * Feedback::                    Bug reports, ideas, patches etc.
780 * Conventions::                 Type-setting conventions in the manual
781 @end menu
783 @node Summary, Installation, Introduction, Introduction
784 @section Summary
785 @cindex summary
787 Org is a mode for keeping notes, maintaining TODO lists, and doing
788 project planning with a fast and effective plain-text system.
790 Org develops organizational tasks around NOTES files that contain
791 lists or information about projects as plain text.  Org is
792 implemented on top of Outline mode, which makes it possible to keep the
793 content of large files well structured.  Visibility cycling and
794 structure editing help to work with the tree.  Tables are easily created
795 with a built-in table editor.  Org supports TODO items, deadlines,
796 timestamps, and scheduling.  It dynamically compiles entries into an
797 agenda that utilizes and smoothly integrates much of the Emacs calendar
798 and diary.  Plain text URL-like links connect to websites, emails,
799 Usenet messages, BBDB entries, and any files related to the projects.
800 For printing and sharing of notes, an Org file can be exported as a
801 structured ASCII file, as HTML, or (TODO and agenda items only) as an
802 iCalendar file.  It can also serve as a publishing tool for a set of
803 linked web pages.
805 As a project planning environment, Org works by adding metadata to outline
806 nodes.  Based on this data, specific entries can be extracted in queries and
807 create dynamic @i{agenda views}.
809 Org mode contains the Org Babel environment which allows you to work with
810 embedded source code blocks in a file, to facilitate code evaluation,
811 documentation, and literate programming techniques.
813 Org's automatic, context-sensitive table editor with spreadsheet
814 capabilities can be integrated into any major mode by activating the
815 minor Orgtbl mode.  Using a translation step, it can be used to maintain
816 tables in arbitrary file types, for example in @LaTeX{}.  The structure
817 editing and list creation capabilities can be used outside Org with
818 the minor Orgstruct mode.
820 Org keeps simple things simple.  When first fired up, it should
821 feel like a straightforward, easy to use outliner.  Complexity is not
822 imposed, but a large amount of functionality is available when you need
823 it.  Org is a toolbox and can be used in different ways and for different
824 ends, for example:
826 @example
827 @r{@bullet{} an outline extension with visibility cycling and structure editing}
828 @r{@bullet{} an ASCII system and table editor for taking structured notes}
829 @r{@bullet{} a TODO list editor}
830 @r{@bullet{} a full agenda and planner with deadlines and work scheduling}
831 @pindex GTD, Getting Things Done
832 @r{@bullet{} an environment in which to implement David Allen's GTD system}
833 @r{@bullet{} a simple hypertext system, with HTML and @LaTeX{} export}
834 @r{@bullet{} a publishing tool to create a set of interlinked webpages}
835 @r{@bullet{} an environment for literate programming}
836 @end example
839 @cindex FAQ
840 There is a website for Org which provides links to the newest
841 version of Org, as well as additional information, frequently asked
842 questions (FAQ), links to tutorials, etc@.  This page is located at
843 @uref{http://orgmode.org}.
845 @cindex print edition
846 The version 7.3 of this manual is available as a
847 @uref{http://www.network-theory.co.uk/org/manual/, paperback book from Network
848 Theory Ltd.}
850 @page
853 @node Installation, Activation, Summary, Introduction
854 @section Installation
855 @cindex installation
856 @cindex XEmacs
858 @b{Important:} @i{If you are using a version of Org that is part of the Emacs
859 distribution, GNU ELPA or an XEmacs package, please skip this section and go
860 directly to @ref{Activation}.  To see what version of Org (if any) is part of
861 your Emacs distribution, type @kbd{M-x org-version} (if your Emacs
862 distribution does not come with Org, this function will not be defined).}
864 If you have downloaded Org from the Web as a distribution @file{.zip} or
865 @file{.tar} archive, you must take the following steps to install it:
867 @itemize @bullet
868 @item Unpack the distribution archive.
869 @item Change into (@code{cd}) the Org directory.
870 @item Run @code{make help}
871 and then check and edit the file @file{local.mk}.  You must set the name of
872 the Emacs binary (likely either @file{emacs} or @file{xemacs}), and the paths
873 to the directories where local Lisp and Info files will be installed.
874 @item Run @code{make config}
875 to check the configuration.
876 @item Run @code{make install} or @code{sudo make install}
877 to build and install Org mode on your system.  If you use a local Git
878 repository, preferrably us @code{make update2} or, if you want to run the
879 complete test suite before installation, @code{make up2}.
880 @end itemize
882 If you use a cloned Git repository, then the procedure is slightly different:
884 @itemize @bullet
885 @item Change into (@code{cd}) the Org repository.
886 @item Run @code{git checkout master}
887 to switch to the @code{master} branch of the Org repository.
888 @item Run @code{make help}
889 and then check and edit the file @file{local.mk}.  You must set the name of
890 the Emacs binary (likely either @file{emacs} or @file{xemacs}), and the paths
891 to the directories where local Lisp and Info files will be installed.
892 @item Run @code{make config}
893 to check the configuration.
894 @item Run @code{make update2} or @code{make up2}
895 to update the Git repository and build and install Org mode.  The latter
896 invocation runs the complete test suite before installation and installs only
897 if the build passes all tests.
898 @end itemize
900 If you don't have access to the system-wide directories and you don't want to
901 install somewhere into your home directory, you can run Org directly from the
902 distribution directory or Org repository by compiling Org mode in place:
904 @itemize @bullet
905 @item Change into (@code{cd}) the Org repository.
906 @item Run @code{git checkout master}
907 to switch to the @code{master} branch of the Org repository.
908 @item Run @code{make compile}
909 @end itemize
911 Last but not least you can also run Org mode directly from an Org repository
912 without any compilation.  Simply replace the last step in the recipe above
913 with @code{make uncompiled}.
915 Then add the following line to @file{.emacs}:
917 @example
918 (add-to-list 'load-path "~/path/to/orgdir/lisp")
919 @end example
921 @noindent
922 If you plan to use code from the @file{contrib} subdirectory, do a similar
923 step for this directory:
925 @example
926 (add-to-list 'load-path "~/path/to/orgdir/contrib/lisp")
927 @end example
929 Installing Info files is system dependent, because of differences in the
930 @file{install-info} program.  The Info documentation is installed together
931 with the rest of Org mode.  If you don't install Org mode, it is possible to
932 install the Info documentation seperately (you need to have
933 install-info@footnote{The output from install-info (if any) is system
934 dependent.  In particular Debian and its derivatives use two different
935 versions of install-info and you may see the message:
937 @example
938 This is not dpkg install-info anymore, but GNU install-info
939 See the man page for ginstall-info for command line arguments
940 @end example
942 @noindent which can be safely ignored.}
943 on your system).
945 @example
946 make install-info
947 @end example
949 Then add the following line to @file{.emacs}.  It is needed so that
950 Emacs can autoload functions that are located in files not immediately loaded
951 when Org mode starts.
952 @lisp
953 (require 'org-install)
954 @end lisp
956 Do not forget to activate Org as described in the following section.
957 @page
959 @node Activation, Feedback, Installation, Introduction
960 @section Activation
961 @cindex activation
962 @cindex autoload
963 @cindex global key bindings
964 @cindex key bindings, global
966 To make sure files with extension @file{.org} use Org mode, add the following
967 line to your @file{.emacs} file.
968 @lisp
969 (add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
970 @end lisp
971 @noindent Org mode buffers need font-lock to be turned on - this is the
972 default in Emacs@footnote{If you don't use font-lock globally, turn it on in
973 Org buffer with @code{(add-hook 'org-mode-hook 'turn-on-font-lock)}}.
975 The four Org commands @command{org-store-link}, @command{org-capture},
976 @command{org-agenda}, and @command{org-iswitchb} should be accessible through
977 global keys (i.e.@: anywhere in Emacs, not just in Org buffers).  Here are
978 suggested bindings for these keys, please modify the keys to your own
979 liking.
980 @lisp
981 (global-set-key "\C-cl" 'org-store-link)
982 (global-set-key "\C-cc" 'org-capture)
983 (global-set-key "\C-ca" 'org-agenda)
984 (global-set-key "\C-cb" 'org-iswitchb)
985 @end lisp
987 @cindex Org mode, turning on
988 With this setup, all files with extension @samp{.org} will be put
989 into Org mode.  As an alternative, make the first line of a file look
990 like this:
992 @example
993 MY PROJECTS    -*- mode: org; -*-
994 @end example
996 @vindex org-insert-mode-line-in-empty-file
997 @noindent which will select Org mode for this buffer no matter what
998 the file's name is.  See also the variable
999 @code{org-insert-mode-line-in-empty-file}.
1001 Many commands in Org work on the region if the region is @i{active}.  To make
1002 use of this, you need to have @code{transient-mark-mode}
1003 (@code{zmacs-regions} in XEmacs) turned on.  In Emacs 23 this is the default,
1004 in Emacs 22 you need to do this yourself with
1005 @lisp
1006 (transient-mark-mode 1)
1007 @end lisp
1008 @noindent If you do not like @code{transient-mark-mode}, you can create an
1009 active region by using the mouse to select a region, or pressing
1010 @kbd{C-@key{SPC}} twice before moving the cursor.
1012 @node Feedback, Conventions, Activation, Introduction
1013 @section Feedback
1014 @cindex feedback
1015 @cindex bug reports
1016 @cindex maintainer
1017 @cindex author
1019 If you find problems with Org, or if you have questions, remarks, or ideas
1020 about it, please mail to the Org mailing list @email{emacs-orgmode@@gnu.org}.
1021 If you are not a member of the mailing list, your mail will be passed to the
1022 list after a moderator has approved it@footnote{Please consider subscribing
1023 to the mailing list, in order to minimize the work the mailing list
1024 moderators have to do.}.
1026 For bug reports, please first try to reproduce the bug with the latest
1027 version of Org available---if you are running an outdated version, it is
1028 quite possible that the bug has been fixed already.  If the bug persists,
1029 prepare a report and provide as much information as possible, including the
1030 version information of Emacs (@kbd{M-x emacs-version @key{RET}}) and Org
1031 (@kbd{M-x org-version @key{RET}}), as well as the Org related setup in
1032 @file{.emacs}.  The easiest way to do this is to use the command
1033 @example
1034 @kbd{M-x org-submit-bug-report}
1035 @end example
1036 @noindent which will put all this information into an Emacs mail buffer so
1037 that you only need to add your description.  If you re not sending the Email
1038 from within Emacs, please copy and paste the content into your Email program.
1040 Sometimes you might face a problem due to an error in your Emacs or Org mode
1041 setup.  Before reporting a bug, it is very helpful to start Emacs with minimal
1042 customizations and reproduce the problem.  Doing so often helps you determine
1043 if the problem is with your customization or with Org mode itself.  You can
1044 start a typical minimal session with a command like the example below.
1046 @example
1047 $ emacs -Q -l /path/to/minimal-org.el
1048 @end example
1050 However if you are using Org mode as distributed with Emacs, a minimal setup
1051 is not necessary.  In that case it is sufficient to start Emacs as @code{emacs
1052 -Q}.  The @code{minimal-org.el} setup file can have contents as shown below.
1054 @example
1055 ;;; Minimal setup to load latest `org-mode'
1057 ;; activate debugging
1058 (setq debug-on-error t
1059       debug-on-signal nil
1060       debug-on-quit nil)
1062 ;; add latest org-mode to load path
1063 (add-to-list 'load-path (expand-file-name "/path/to/org-mode/lisp"))
1064 (add-to-list 'load-path (expand-file-name "/path/to/org-mode/contrib/lisp"))
1066 ;; activate org
1067 (require 'org-install)
1068 @end example
1070 If an error occurs, a backtrace can be very useful (see below on how to
1071 create one).  Often a small example file helps, along with clear information
1072 about:
1074 @enumerate
1075 @item What exactly did you do?
1076 @item What did you expect to happen?
1077 @item What happened instead?
1078 @end enumerate
1079 @noindent Thank you for helping to improve this program.
1081 @subsubheading How to create a useful backtrace
1083 @cindex backtrace of an error
1084 If working with Org produces an error with a message you don't
1085 understand, you may have hit a bug.  The best way to report this is by
1086 providing, in addition to what was mentioned above, a @emph{backtrace}.
1087 This is information from the built-in debugger about where and how the
1088 error occurred.  Here is how to produce a useful backtrace:
1090 @enumerate
1091 @item
1092 Reload uncompiled versions of all Org mode Lisp files.  The backtrace
1093 contains much more information if it is produced with uncompiled code.
1094 To do this, use
1095 @example
1096 C-u M-x org-reload RET
1097 @end example
1098 @noindent
1099 or select @code{Org -> Refresh/Reload -> Reload Org uncompiled} from the
1100 menu.
1101 @item
1102 Go to the @code{Options} menu and select @code{Enter Debugger on Error}
1103 (XEmacs has this option in the @code{Troubleshooting} sub-menu).
1104 @item
1105 Do whatever you have to do to hit the error.  Don't forget to
1106 document the steps you take.
1107 @item
1108 When you hit the error, a @file{*Backtrace*} buffer will appear on the
1109 screen.  Save this buffer to a file (for example using @kbd{C-x C-w}) and
1110 attach it to your bug report.
1111 @end enumerate
1113 @node Conventions,  , Feedback, Introduction
1114 @section Typesetting conventions used in this manual
1116 Org uses three types of keywords: TODO keywords, tags and property
1117 names.  In this manual we use the following conventions:
1119 @table @code
1120 @item TODO
1121 @itemx WAITING
1122 TODO keywords are written with all capitals, even if they are
1123 user-defined.
1124 @item boss
1125 @itemx ARCHIVE
1126 User-defined tags are written in lowercase; built-in tags with special
1127 meaning are written with all capitals.
1128 @item Release
1129 @itemx PRIORITY
1130 User-defined properties are capitalized; built-in properties with
1131 special meaning are written with all capitals.
1132 @end table
1134 Moreover, Org uses @i{option keywords} (like @code{#+TITLE} to set the title)
1135 and @i{environment keywords} (like @code{#+BEGIN_HTML} to start a @code{HTML}
1136 environment).  They are written in uppercase in the manual to enhance its
1137 readability, but you can use lowercase in your Org files@footnote{Easy
1138 templates insert lowercase keywords and Babel dynamically inserts
1139 @code{#+results}.}
1141 The manual lists both the keys and the corresponding commands for accessing a
1142 functionality.  Org mode often uses the same key for different functions,
1143 depending on context.  The command that is bound to such keys has a generic
1144 name, like @code{org-metaright}.  In the manual we will, wherever possible,
1145 give the function that is internally called by the generic command.  For
1146 example, in the chapter on document structure, @kbd{M-@key{right}} will be
1147 listed to call @code{org-do-demote}, while in the chapter on tables, it will
1148 be listed to call org-table-move-column-right.
1150 If you prefer, you can compile the manual without the command names by
1151 unsetting the flag @code{cmdnames} in @file{org.texi}.
1153 @node Document Structure, Tables, Introduction, Top
1154 @chapter Document structure
1155 @cindex document structure
1156 @cindex structure of document
1158 Org is based on Outline mode and provides flexible commands to
1159 edit the structure of the document.
1161 @menu
1162 * Outlines::                    Org is based on Outline mode
1163 * Headlines::                   How to typeset Org tree headlines
1164 * Visibility cycling::          Show and hide, much simplified
1165 * Motion::                      Jumping to other headlines
1166 * Structure editing::           Changing sequence and level of headlines
1167 * Sparse trees::                Matches embedded in context
1168 * Plain lists::                 Additional structure within an entry
1169 * Drawers::                     Tucking stuff away
1170 * Blocks::                      Folding blocks
1171 * Footnotes::                   How footnotes are defined in Org's syntax
1172 * Orgstruct mode::              Structure editing outside Org
1173 @end menu
1175 @node Outlines, Headlines, Document Structure, Document Structure
1176 @section Outlines
1177 @cindex outlines
1178 @cindex Outline mode
1180 Org is implemented on top of Outline mode.  Outlines allow a
1181 document to be organized in a hierarchical structure, which (at least
1182 for me) is the best representation of notes and thoughts.  An overview
1183 of this structure is achieved by folding (hiding) large parts of the
1184 document to show only the general document structure and the parts
1185 currently being worked on.  Org greatly simplifies the use of
1186 outlines by compressing the entire show/hide functionality into a single
1187 command, @command{org-cycle}, which is bound to the @key{TAB} key.
1189 @node Headlines, Visibility cycling, Outlines, Document Structure
1190 @section Headlines
1191 @cindex headlines
1192 @cindex outline tree
1193 @vindex org-special-ctrl-a/e
1194 @vindex org-special-ctrl-k
1195 @vindex org-ctrl-k-protect-subtree
1197 Headlines define the structure of an outline tree.  The headlines in Org
1198 start with one or more stars, on the left margin@footnote{See the variables
1199 @code{org-special-ctrl-a/e}, @code{org-special-ctrl-k}, and
1200 @code{org-ctrl-k-protect-subtree} to configure special behavior of @kbd{C-a},
1201 @kbd{C-e}, and @kbd{C-k} in headlines.} @footnote{Clocking only works with
1202 headings indented less then 30 stars.}.  For example:
1204 @example
1205 * Top level headline
1206 ** Second level
1207 *** 3rd level
1208     some text
1209 *** 3rd level
1210     more text
1212 * Another top level headline
1213 @end example
1215 @noindent Some people find the many stars too noisy and would prefer an
1216 outline that has whitespace followed by a single star as headline
1217 starters.  @ref{Clean view}, describes a setup to realize this.
1219 @vindex org-cycle-separator-lines
1220 An empty line after the end of a subtree is considered part of it and
1221 will be hidden when the subtree is folded.  However, if you leave at
1222 least two empty lines, one empty line will remain visible after folding
1223 the subtree, in order to structure the collapsed view.  See the
1224 variable @code{org-cycle-separator-lines} to modify this behavior.
1226 @node Visibility cycling, Motion, Headlines, Document Structure
1227 @section Visibility cycling
1228 @cindex cycling, visibility
1229 @cindex visibility cycling
1230 @cindex trees, visibility
1231 @cindex show hidden text
1232 @cindex hide text
1234 Outlines make it possible to hide parts of the text in the buffer.
1235 Org uses just two commands, bound to @key{TAB} and
1236 @kbd{S-@key{TAB}} to change the visibility in the buffer.
1238 @cindex subtree visibility states
1239 @cindex subtree cycling
1240 @cindex folded, subtree visibility state
1241 @cindex children, subtree visibility state
1242 @cindex subtree, subtree visibility state
1243 @table @asis
1244 @orgcmd{@key{TAB},org-cycle}
1245 @emph{Subtree cycling}: Rotate current subtree among the states
1247 @example
1248 ,-> FOLDED -> CHILDREN -> SUBTREE --.
1249 '-----------------------------------'
1250 @end example
1252 @vindex org-cycle-emulate-tab
1253 @vindex org-cycle-global-at-bob
1254 The cursor must be on a headline for this to work@footnote{see, however,
1255 the option @code{org-cycle-emulate-tab}.}.  When the cursor is at the
1256 beginning of the buffer and the first line is not a headline, then
1257 @key{TAB} actually runs global cycling (see below)@footnote{see the
1258 option @code{org-cycle-global-at-bob}.}.  Also when called with a prefix
1259 argument (@kbd{C-u @key{TAB}}), global cycling is invoked.
1261 @cindex global visibility states
1262 @cindex global cycling
1263 @cindex overview, global visibility state
1264 @cindex contents, global visibility state
1265 @cindex show all, global visibility state
1266 @orgcmd{S-@key{TAB},org-global-cycle}
1267 @itemx C-u @key{TAB}
1268 @emph{Global cycling}: Rotate the entire buffer among the states
1270 @example
1271 ,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
1272 '--------------------------------------'
1273 @end example
1275 When @kbd{S-@key{TAB}} is called with a numeric prefix argument N, the
1276 CONTENTS view up to headlines of level N will be shown.  Note that inside
1277 tables, @kbd{S-@key{TAB}} jumps to the previous field.
1279 @cindex show all, command
1280 @orgcmd{C-u C-u C-u @key{TAB},show-all}
1281 Show all, including drawers.
1282 @orgcmd{C-c C-r,org-reveal}
1283 Reveal context around point, showing the current entry, the following heading
1284 and the hierarchy above.  Useful for working near a location that has been
1285 exposed by a sparse tree command (@pxref{Sparse trees}) or an agenda command
1286 (@pxref{Agenda commands}).  With a prefix argument show, on each
1287 level, all sibling headings.  With a double prefix argument, also show the
1288 entire subtree of the parent.
1289 @orgcmd{C-c C-k,show-branches}
1290 Expose all the headings of the subtree, CONTENT view for just one subtree.
1291 @orgcmd{C-c C-x b,org-tree-to-indirect-buffer}
1292 Show the current subtree in an indirect buffer@footnote{The indirect
1293 buffer
1294 @ifinfo
1295 (@pxref{Indirect Buffers,,,emacs,GNU Emacs Manual})
1296 @end ifinfo
1297 @ifnotinfo
1298 (see the Emacs manual for more information about indirect buffers)
1299 @end ifnotinfo
1300 will contain the entire buffer, but will be narrowed to the current
1301 tree.  Editing the indirect buffer will also change the original buffer,
1302 but without affecting visibility in that buffer.}.  With a numeric
1303 prefix argument N, go up to level N and then take that tree.  If N is
1304 negative then go up that many levels.  With a @kbd{C-u} prefix, do not remove
1305 the previously used indirect buffer.
1306 @orgcmd{C-c C-x v,org-copy-visible}
1307 Copy the @i{visible} text in the region into the kill ring.
1308 @end table
1310 @vindex org-startup-folded
1311 @cindex @code{overview}, STARTUP keyword
1312 @cindex @code{content}, STARTUP keyword
1313 @cindex @code{showall}, STARTUP keyword
1314 @cindex @code{showeverything}, STARTUP keyword
1316 When Emacs first visits an Org file, the global state is set to
1317 OVERVIEW, i.e.@: only the top level headlines are visible.  This can be
1318 configured through the variable @code{org-startup-folded}, or on a
1319 per-file basis by adding one of the following lines anywhere in the
1320 buffer:
1322 @example
1323 #+STARTUP: overview
1324 #+STARTUP: content
1325 #+STARTUP: showall
1326 #+STARTUP: showeverything
1327 @end example
1329 @cindex property, VISIBILITY
1330 @noindent
1331 Furthermore, any entries with a @samp{VISIBILITY} property (@pxref{Properties
1332 and Columns}) will get their visibility adapted accordingly.  Allowed values
1333 for this property are @code{folded}, @code{children}, @code{content}, and
1334 @code{all}.
1335 @table @asis
1336 @orgcmd{C-u C-u @key{TAB},org-set-startup-visibility}
1337 Switch back to the startup visibility of the buffer, i.e.@: whatever is
1338 requested by startup options and @samp{VISIBILITY} properties in individual
1339 entries.
1340 @end table
1342 @node Motion, Structure editing, Visibility cycling, Document Structure
1343 @section Motion
1344 @cindex motion, between headlines
1345 @cindex jumping, to headlines
1346 @cindex headline navigation
1347 The following commands jump to other headlines in the buffer.
1349 @table @asis
1350 @orgcmd{C-c C-n,outline-next-visible-heading}
1351 Next heading.
1352 @orgcmd{C-c C-p,outline-previous-visible-heading}
1353 Previous heading.
1354 @orgcmd{C-c C-f,org-forward-same-level}
1355 Next heading same level.
1356 @orgcmd{C-c C-b,org-backward-same-level}
1357 Previous heading same level.
1358 @orgcmd{C-c C-u,outline-up-heading}
1359 Backward to higher level heading.
1360 @orgcmd{C-c C-j,org-goto}
1361 Jump to a different place without changing the current outline
1362 visibility.  Shows the document structure in a temporary buffer, where
1363 you can use the following keys to find your destination:
1364 @vindex org-goto-auto-isearch
1365 @example
1366 @key{TAB}         @r{Cycle visibility.}
1367 @key{down} / @key{up}   @r{Next/previous visible headline.}
1368 @key{RET}         @r{Select this location.}
1369 @kbd{/}           @r{Do a Sparse-tree search}
1370 @r{The following keys work if you turn off @code{org-goto-auto-isearch}}
1371 n / p        @r{Next/previous visible headline.}
1372 f / b        @r{Next/previous headline same level.}
1373 u            @r{One level up.}
1374 0-9          @r{Digit argument.}
1375 q            @r{Quit}
1376 @end example
1377 @vindex org-goto-interface
1378 @noindent
1379 See also the variable @code{org-goto-interface}.
1380 @end table
1382 @node Structure editing, Sparse trees, Motion, Document Structure
1383 @section Structure editing
1384 @cindex structure editing
1385 @cindex headline, promotion and demotion
1386 @cindex promotion, of subtrees
1387 @cindex demotion, of subtrees
1388 @cindex subtree, cut and paste
1389 @cindex pasting, of subtrees
1390 @cindex cutting, of subtrees
1391 @cindex copying, of subtrees
1392 @cindex sorting, of subtrees
1393 @cindex subtrees, cut and paste
1395 @table @asis
1396 @orgcmd{M-@key{RET},org-insert-heading}
1397 @vindex org-M-RET-may-split-line
1398 Insert new heading with same level as current.  If the cursor is in a plain
1399 list item, a new item is created (@pxref{Plain lists}).  To force creation of
1400 a new headline, use a prefix argument.  When this command is used in the
1401 middle of a line, the line is split and the rest of the line becomes the new
1402 headline@footnote{If you do not want the line to be split, customize the
1403 variable @code{org-M-RET-may-split-line}.}.  If the command is used at the
1404 beginning of a headline, the new headline is created before the current line.
1405 If at the beginning of any other line, the content of that line is made the
1406 new heading.  If the command is used at the end of a folded subtree (i.e.@:
1407 behind the ellipses at the end of a headline), then a headline like the
1408 current one will be inserted after the end of the subtree.
1409 @orgcmd{C-@key{RET},org-insert-heading-respect-content}
1410 Just like @kbd{M-@key{RET}}, except when adding a new heading below the
1411 current heading, the new heading is placed after the body instead of before
1412 it.  This command works from anywhere in the entry.
1413 @orgcmd{M-S-@key{RET},org-insert-todo-heading}
1414 @vindex org-treat-insert-todo-heading-as-state-change
1415 Insert new TODO entry with same level as current heading.  See also the
1416 variable @code{org-treat-insert-todo-heading-as-state-change}.
1417 @orgcmd{C-S-@key{RET},org-insert-todo-heading-respect-content}
1418 Insert new TODO entry with same level as current heading.  Like
1419 @kbd{C-@key{RET}}, the new headline will be inserted after the current
1420 subtree.
1421 @orgcmd{@key{TAB},org-cycle}
1422 In a new entry with no text yet, the first @key{TAB} demotes the entry to
1423 become a child of the previous one.  The next @key{TAB} makes it a parent,
1424 and so on, all the way to top level.  Yet another @key{TAB}, and you are back
1425 to the initial level.
1426 @orgcmd{M-@key{left},org-do-promote}
1427 Promote current heading by one level.
1428 @orgcmd{M-@key{right},org-do-demote}
1429 Demote current heading by one level.
1430 @orgcmd{M-S-@key{left},org-promote-subtree}
1431 Promote the current subtree by one level.
1432 @orgcmd{M-S-@key{right},org-demote-subtree}
1433 Demote the current subtree by one level.
1434 @orgcmd{M-S-@key{up},org-move-subtree-up}
1435 Move subtree up (swap with previous subtree of same
1436 level).
1437 @orgcmd{M-S-@key{down},org-move-subtree-down}
1438 Move subtree down (swap with next subtree of same level).
1439 @orgcmd{C-c C-x C-w,org-cut-subtree}
1440 Kill subtree, i.e.@: remove it from buffer but save in kill ring.
1441 With a numeric prefix argument N, kill N sequential subtrees.
1442 @orgcmd{C-c C-x M-w,org-copy-subtree}
1443 Copy subtree to kill ring.  With a numeric prefix argument N, copy the N
1444 sequential subtrees.
1445 @orgcmd{C-c C-x C-y,org-paste-subtree}
1446 Yank subtree from kill ring.  This does modify the level of the subtree to
1447 make sure the tree fits in nicely at the yank position.  The yank level can
1448 also be specified with a numeric prefix argument, or by yanking after a
1449 headline marker like @samp{****}.
1450 @orgcmd{C-y,org-yank}
1451 @vindex org-yank-adjusted-subtrees
1452 @vindex org-yank-folded-subtrees
1453 Depending on the variables @code{org-yank-adjusted-subtrees} and
1454 @code{org-yank-folded-subtrees}, Org's internal @code{yank} command will
1455 paste subtrees folded and in a clever way, using the same command as @kbd{C-c
1456 C-x C-y}.  With the default settings, no level adjustment will take place,
1457 but the yanked tree will be folded unless doing so would swallow text
1458 previously visible.  Any prefix argument to this command will force a normal
1459 @code{yank} to be executed, with the prefix passed along.  A good way to
1460 force a normal yank is @kbd{C-u C-y}.  If you use @code{yank-pop} after a
1461 yank, it will yank previous kill items plainly, without adjustment and
1462 folding.
1463 @orgcmd{C-c C-x c,org-clone-subtree-with-time-shift}
1464 Clone a subtree by making a number of sibling copies of it.  You will be
1465 prompted for the number of copies to make, and you can also specify if any
1466 timestamps in the entry should be shifted.  This can be useful, for example,
1467 to create a number of tasks related to a series of lectures to prepare.  For
1468 more details, see the docstring of the command
1469 @code{org-clone-subtree-with-time-shift}.
1470 @orgcmd{C-c C-w,org-refile}
1471 Refile entry or region to a different location.  @xref{Refiling notes}.
1472 @orgcmd{C-c ^,org-sort}
1473 Sort same-level entries.  When there is an active region, all entries in the
1474 region will be sorted.  Otherwise the children of the current headline are
1475 sorted.  The command prompts for the sorting method, which can be
1476 alphabetically, numerically, by time (first timestamp with active preferred,
1477 creation time, scheduled time, deadline time), by priority, by TODO keyword
1478 (in the sequence the keywords have been defined in the setup) or by the value
1479 of a property.  Reverse sorting is possible as well.  You can also supply
1480 your own function to extract the sorting key.  With a @kbd{C-u} prefix,
1481 sorting will be case-sensitive.
1482 @orgcmd{C-x n s,org-narrow-to-subtree}
1483 Narrow buffer to current subtree.
1484 @orgcmd{C-x n b,org-narrow-to-block}
1485 Narrow buffer to current block.
1486 @orgcmd{C-x n w,widen}
1487 Widen buffer to remove narrowing.
1488 @orgcmd{C-c *,org-toggle-heading}
1489 Turn a normal line or plain list item into a headline (so that it becomes a
1490 subheading at its location).  Also turn a headline into a normal line by
1491 removing the stars.  If there is an active region, turn all lines in the
1492 region into headlines.  If the first line in the region was an item, turn
1493 only the item lines into headlines.  Finally, if the first line is a
1494 headline, remove the stars from all headlines in the region.
1495 @end table
1497 @cindex region, active
1498 @cindex active region
1499 @cindex transient mark mode
1500 When there is an active region (Transient Mark mode), promotion and
1501 demotion work on all headlines in the region.  To select a region of
1502 headlines, it is best to place both point and mark at the beginning of a
1503 line, mark at the beginning of the first headline, and point at the line
1504 just after the last headline to change.  Note that when the cursor is
1505 inside a table (@pxref{Tables}), the Meta-Cursor keys have different
1506 functionality.
1509 @node Sparse trees, Plain lists, Structure editing, Document Structure
1510 @section Sparse trees
1511 @cindex sparse trees
1512 @cindex trees, sparse
1513 @cindex folding, sparse trees
1514 @cindex occur, command
1516 @vindex org-show-hierarchy-above
1517 @vindex org-show-following-heading
1518 @vindex org-show-siblings
1519 @vindex org-show-entry-below
1520 An important feature of Org mode is the ability to construct @emph{sparse
1521 trees} for selected information in an outline tree, so that the entire
1522 document is folded as much as possible, but the selected information is made
1523 visible along with the headline structure above it@footnote{See also the
1524 variables @code{org-show-hierarchy-above}, @code{org-show-following-heading},
1525 @code{org-show-siblings}, and @code{org-show-entry-below} for detailed
1526 control on how much context is shown around each match.}.  Just try it out
1527 and you will see immediately how it works.
1529 Org mode contains several commands creating such trees, all these
1530 commands can be accessed through a dispatcher:
1532 @table @asis
1533 @orgcmd{C-c /,org-sparse-tree}
1534 This prompts for an extra key to select a sparse-tree creating command.
1535 @orgcmd{C-c / r,org-occur}
1536 @vindex org-remove-highlights-with-change
1537 Prompts for a regexp and shows a sparse tree with all matches.  If
1538 the match is in a headline, the headline is made visible.  If the match is in
1539 the body of an entry, headline and body are made visible.  In order to
1540 provide minimal context, also the full hierarchy of headlines above the match
1541 is shown, as well as the headline following the match.  Each match is also
1542 highlighted; the highlights disappear when the buffer is changed by an
1543 editing command@footnote{This depends on the option
1544 @code{org-remove-highlights-with-change}}, or by pressing @kbd{C-c C-c}.
1545 When called with a @kbd{C-u} prefix argument, previous highlights are kept,
1546 so several calls to this command can be stacked.
1547 @orgcmdkkc{M-g n,M-g M-n,next-error}
1548 Jump to the next sparse tree match in this buffer.
1549 @orgcmdkkc{M-g p,M-g M-p,previous-error}
1550 Jump to the previous sparse tree match in this buffer.
1551 @end table
1554 @noindent
1555 @vindex org-agenda-custom-commands
1556 For frequently used sparse trees of specific search strings, you can
1557 use the variable @code{org-agenda-custom-commands} to define fast
1558 keyboard access to specific sparse trees.  These commands will then be
1559 accessible through the agenda dispatcher (@pxref{Agenda dispatcher}).
1560 For example:
1562 @lisp
1563 (setq org-agenda-custom-commands
1564       '(("f" occur-tree "FIXME")))
1565 @end lisp
1567 @noindent will define the key @kbd{C-c a f} as a shortcut for creating
1568 a sparse tree matching the string @samp{FIXME}.
1570 The other sparse tree commands select headings based on TODO keywords,
1571 tags, or properties and will be discussed later in this manual.
1573 @kindex C-c C-e v
1574 @cindex printing sparse trees
1575 @cindex visible text, printing
1576 To print a sparse tree, you can use the Emacs command
1577 @code{ps-print-buffer-with-faces} which does not print invisible parts
1578 of the document @footnote{This does not work under XEmacs, because
1579 XEmacs uses selective display for outlining, not text properties.}.
1580 Or you can use the command @kbd{C-c C-e v} to export only the visible
1581 part of the document and print the resulting file.
1583 @node Plain lists, Drawers, Sparse trees, Document Structure
1584 @section Plain lists
1585 @cindex plain lists
1586 @cindex lists, plain
1587 @cindex lists, ordered
1588 @cindex ordered lists
1590 Within an entry of the outline tree, hand-formatted lists can provide
1591 additional structure.  They also provide a way to create lists of checkboxes
1592 (@pxref{Checkboxes}).  Org supports editing such lists, and every exporter
1593 (@pxref{Exporting}) can parse and format them.
1595 Org knows ordered lists, unordered lists, and description lists.
1596 @itemize @bullet
1597 @item
1598 @emph{Unordered} list items start with @samp{-}, @samp{+}, or
1599 @samp{*}@footnote{When using @samp{*} as a bullet, lines must be indented or
1600 they will be seen as top-level headlines.  Also, when you are hiding leading
1601 stars to get a clean outline view, plain list items starting with a star may
1602 be hard to distinguish from true headlines.  In short: even though @samp{*}
1603 is supported, it may be better to not use it for plain list items.}  as
1604 bullets.
1605 @item
1606 @vindex org-plain-list-ordered-item-terminator
1607 @vindex org-alphabetical-lists
1608 @emph{Ordered} list items start with a numeral followed by either a period or
1609 a right parenthesis@footnote{You can filter out any of them by configuring
1610 @code{org-plain-list-ordered-item-terminator}.}, such as @samp{1.} or
1611 @samp{1)}@footnote{You can also get @samp{a.}, @samp{A.}, @samp{a)} and
1612 @samp{A)} by configuring @code{org-alphabetical-lists}.  To minimize
1613 confusion with normal text, those are limited to one character only.  Beyond
1614 that limit, bullets will automatically fallback to numbers.}.  If you want a
1615 list to start with a different value (e.g.@: 20), start the text of the item
1616 with @code{[@@20]}@footnote{If there's a checkbox in the item, the cookie
1617 must be put @emph{before} the checkbox.  If you have activated alphabetical
1618 lists, you can also use counters like @code{[@@b]}.}.  Those constructs can
1619 be used in any item of the list in order to enforce a particular numbering.
1620 @item
1621 @emph{Description} list items are unordered list items, and contain the
1622 separator @samp{ :: } to distinguish the description @emph{term} from the
1623 description.
1624 @end itemize
1626 Items belonging to the same list must have the same indentation on the first
1627 line.  In particular, if an ordered list reaches number @samp{10.}, then the
1628 2--digit numbers must be written left-aligned with the other numbers in the
1629 list.  An item ends before the next line that is less or equally indented
1630 than its bullet/number.
1632 @vindex org-empty-line-terminates-plain-lists
1633 A list ends whenever every item has ended, which means before any line less
1634 or equally indented than items at top level.  It also ends before two blank
1635 lines@footnote{See also @code{org-empty-line-terminates-plain-lists}.}.  In
1636 that case, all items are closed.  Here is an example:
1638 @example
1639 @group
1640 ** Lord of the Rings
1641    My favorite scenes are (in this order)
1642    1. The attack of the Rohirrim
1643    2. Eowyn's fight with the witch king
1644       + this was already my favorite scene in the book
1645       + I really like Miranda Otto.
1646    3. Peter Jackson being shot by Legolas
1647       - on DVD only
1648       He makes a really funny face when it happens.
1649    But in the end, no individual scenes matter but the film as a whole.
1650    Important actors in this film are:
1651    - @b{Elijah Wood} :: He plays Frodo
1652    - @b{Sean Austin} :: He plays Sam, Frodo's friend.  I still remember
1653      him very well from his role as Mikey Walsh in @i{The Goonies}.
1654 @end group
1655 @end example
1657 Org supports these lists by tuning filling and wrapping commands to deal with
1658 them correctly@footnote{Org only changes the filling settings for Emacs.  For
1659 XEmacs, you should use Kyle E. Jones' @file{filladapt.el}.  To turn this on,
1660 put into @file{.emacs}: @code{(require 'filladapt)}}, and by exporting them
1661 properly (@pxref{Exporting}).  Since indentation is what governs the
1662 structure of these lists, many structural constructs like @code{#+BEGIN_...}
1663 blocks can be indented to signal that they belong to a particular item.
1665 @vindex org-list-demote-modify-bullet
1666 @vindex org-list-indent-offset
1667 If you find that using a different bullet for a sub-list (than that used for
1668 the current list-level) improves readability, customize the variable
1669 @code{org-list-demote-modify-bullet}.  To get a greater difference of
1670 indentation between items and theirs sub-items, customize
1671 @code{org-list-indent-offset}.
1673 @vindex org-list-automatic-rules
1674 The following commands act on items when the cursor is in the first line of
1675 an item (the line with the bullet or number).  Some of them imply the
1676 application of automatic rules to keep list structure intact.  If some of
1677 these actions get in your way, configure @code{org-list-automatic-rules}
1678 to disable them individually.
1680 @table @asis
1681 @orgcmd{@key{TAB},org-cycle}
1682 @cindex cycling, in plain lists
1683 @vindex org-cycle-include-plain-lists
1684 Items can be folded just like headline levels.  Normally this works only if
1685 the cursor is on a plain list item.  For more details, see the variable
1686 @code{org-cycle-include-plain-lists}.  If this variable is set to
1687 @code{integrate}, plain list items will be treated like low-level
1688 headlines.  The level of an item is then given by the indentation of the
1689 bullet/number.  Items are always subordinate to real headlines, however; the
1690 hierarchies remain completely separated.  In a new item with no text yet, the
1691 first @key{TAB} demotes the item to become a child of the previous
1692 one.  Subsequent @key{TAB}s move the item to meaningful levels in the list
1693 and eventually get it back to its initial position.
1694 @orgcmd{M-@key{RET},org-insert-heading}
1695 @vindex org-M-RET-may-split-line
1696 @vindex org-list-automatic-rules
1697 Insert new item at current level.  With a prefix argument, force a new
1698 heading (@pxref{Structure editing}).  If this command is used in the middle
1699 of an item, that item is @emph{split} in two, and the second part becomes the
1700 new item@footnote{If you do not want the item to be split, customize the
1701 variable @code{org-M-RET-may-split-line}.}.  If this command is executed
1702 @emph{before item's body}, the new item is created @emph{before} the current
1703 one.
1704 @end table
1706 @table @kbd
1707 @kindex M-S-@key{RET}
1708 @item M-S-RET
1709 Insert a new item with a checkbox (@pxref{Checkboxes}).
1710 @kindex S-@key{down}
1711 @item S-up
1712 @itemx S-down
1713 @cindex shift-selection-mode
1714 @vindex org-support-shift-select
1715 @vindex org-list-use-circular-motion
1716 Jump to the previous/next item in the current list@footnote{If you want to
1717 cycle around items that way, you may customize
1718 @code{org-list-use-circular-motion}.}, but only if
1719 @code{org-support-shift-select} is off.  If not, you can still use paragraph
1720 jumping commands like @kbd{C-@key{up}} and @kbd{C-@key{down}} to quite
1721 similar effect.
1722 @kindex M-@key{up}
1723 @kindex M-@key{down}
1724 @item M-up
1725 @itemx M-down
1726 Move the item including subitems up/down@footnote{See
1727 @code{org-liste-use-circular-motion} for a cyclic behavior.} (swap with
1728 previous/next item of same indentation).  If the list is ordered, renumbering
1729 is automatic.
1730 @kindex M-@key{left}
1731 @kindex M-@key{right}
1732 @item M-left
1733 @itemx M-right
1734 Decrease/increase the indentation of an item, leaving children alone.
1735 @kindex M-S-@key{left}
1736 @kindex M-S-@key{right}
1737 @item M-S-left
1738 @itemx M-S-right
1739 Decrease/increase the indentation of the item, including subitems.
1740 Initially, the item tree is selected based on current indentation.  When
1741 these commands are executed several times in direct succession, the initially
1742 selected region is used, even if the new indentation would imply a different
1743 hierarchy.  To use the new hierarchy, break the command chain with a cursor
1744 motion or so.
1746 As a special case, using this command on the very first item of a list will
1747 move the whole list.  This behavior can be disabled by configuring
1748 @code{org-list-automatic-rules}.  The global indentation of a list has no
1749 influence on the text @emph{after} the list.
1750 @kindex C-c C-c
1751 @item C-c C-c
1752 If there is a checkbox (@pxref{Checkboxes}) in the item line, toggle the
1753 state of the checkbox.  In any case, verify bullets and indentation
1754 consistency in the whole list.
1755 @kindex C-c -
1756 @vindex org-plain-list-ordered-item-terminator
1757 @vindex org-list-automatic-rules
1758 @item C-c -
1759 Cycle the entire list level through the different itemize/enumerate bullets
1760 (@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}) or a subset of them,
1761 depending on @code{org-plain-list-ordered-item-terminator}, the type of list,
1762 and its position@footnote{See @code{bullet} rule in
1763 @code{org-list-automatic-rules} for more information.}.  With a numeric
1764 prefix argument N, select the Nth bullet from this list.  If there is an
1765 active region when calling this, selected text will be changed into an item.
1766 With a prefix argument, all lines will be converted to list items.  If the
1767 first line already was a list item, any item marker will be removed from the
1768 list.  Finally, even without an active region, a normal line will be
1769 converted into a list item.
1770 @kindex C-c *
1771 @item C-c *
1772 Turn a plain list item into a headline (so that it becomes a subheading at
1773 its location).  @xref{Structure editing}, for a detailed explanation.
1774 @kindex C-c C-*
1775 @item C-c C-*
1776 Turn the whole plain list into a subtree of the current heading.  Checkboxes
1777 (@pxref{Checkboxes}) will become TODO (resp. DONE) keywords when unchecked
1778 (resp. checked).
1779 @kindex S-@key{left}
1780 @kindex S-@key{right}
1781 @item S-left/right
1782 @vindex org-support-shift-select
1783 This command also cycles bullet styles when the cursor in on the bullet or
1784 anywhere in an item line, details depending on
1785 @code{org-support-shift-select}.
1786 @kindex C-c ^
1787 @item C-c ^
1788 Sort the plain list.  You will be prompted for the sorting method:
1789 numerically, alphabetically, by time, or by custom function.
1790 @end table
1792 @node Drawers, Blocks, Plain lists, Document Structure
1793 @section Drawers
1794 @cindex drawers
1795 @cindex #+DRAWERS
1796 @cindex visibility cycling, drawers
1798 @vindex org-drawers
1799 @cindex org-insert-drawer
1800 @kindex C-c C-x d
1801 Sometimes you want to keep information associated with an entry, but you
1802 normally don't want to see it.  For this, Org mode has @emph{drawers}.
1803 Drawers need to be configured with the variable
1804 @code{org-drawers}@footnote{You can define additional drawers on a
1805 per-file basis with a line like @code{#+DRAWERS: HIDDEN STATE}}.  Drawers
1806 look like this:
1808 @example
1809 ** This is a headline
1810    Still outside the drawer
1811    :DRAWERNAME:
1812    This is inside the drawer.
1813    :END:
1814    After the drawer.
1815 @end example
1817 You can interactively insert drawers at point by calling
1818 @code{org-insert-drawer}, which is bound to @key{C-c C-x d}.  With an active
1819 region, this command will put the region inside the drawer.  With a prefix
1820 argument, this command calls @code{org-insert-property-drawer} and add a
1821 property drawer right below the current headline.  Completion over drawer
1822 keywords is also possible using @key{M-TAB}.
1824 Visibility cycling (@pxref{Visibility cycling}) on the headline will hide and
1825 show the entry, but keep the drawer collapsed to a single line.  In order to
1826 look inside the drawer, you need to move the cursor to the drawer line and
1827 press @key{TAB} there.  Org mode uses the @code{PROPERTIES} drawer for
1828 storing properties (@pxref{Properties and Columns}), and you can also arrange
1829 for state change notes (@pxref{Tracking TODO state changes}) and clock times
1830 (@pxref{Clocking work time}) to be stored in a drawer @code{LOGBOOK}.  If you
1831 want to store a quick note in the LOGBOOK drawer, in a similar way to state changes, use
1833 @table @kbd
1834 @kindex C-c C-z
1835 @item C-c C-z
1836 Add a time-stamped note to the LOGBOOK drawer.
1837 @end table
1839 @node Blocks, Footnotes, Drawers, Document Structure
1840 @section Blocks
1842 @vindex org-hide-block-startup
1843 @cindex blocks, folding
1844 Org mode uses begin...end blocks for various purposes from including source
1845 code examples (@pxref{Literal examples}) to capturing time logging
1846 information (@pxref{Clocking work time}).  These blocks can be folded and
1847 unfolded by pressing TAB in the begin line.  You can also get all blocks
1848 folded at startup by configuring the variable @code{org-hide-block-startup}
1849 or on a per-file basis by using
1851 @cindex @code{hideblocks}, STARTUP keyword
1852 @cindex @code{nohideblocks}, STARTUP keyword
1853 @example
1854 #+STARTUP: hideblocks
1855 #+STARTUP: nohideblocks
1856 @end example
1858 @node Footnotes, Orgstruct mode, Blocks, Document Structure
1859 @section Footnotes
1860 @cindex footnotes
1862 Org mode supports the creation of footnotes.  In contrast to the
1863 @file{footnote.el} package, Org mode's footnotes are designed for work on a
1864 larger document, not only for one-off documents like emails.  The basic
1865 syntax is similar to the one used by @file{footnote.el}, i.e.@: a footnote is
1866 defined in a paragraph that is started by a footnote marker in square
1867 brackets in column 0, no indentation allowed.  If you need a paragraph break
1868 inside a footnote, use the @LaTeX{} idiom @samp{\par}.  The footnote reference
1869 is simply the marker in square brackets, inside text.  For example:
1871 @example
1872 The Org homepage[fn:1] now looks a lot better than it used to.
1874 [fn:1] The link is: http://orgmode.org
1875 @end example
1877 Org mode extends the number-based syntax to @emph{named} footnotes and
1878 optional inline definition.  Using plain numbers as markers (as
1879 @file{footnote.el} does) is supported for backward compatibility, but not
1880 encouraged because of possible conflicts with @LaTeX{} snippets (@pxref{Embedded
1881 @LaTeX{}}).  Here are the valid references:
1883 @table @code
1884 @item [1]
1885 A plain numeric footnote marker.  Compatible with @file{footnote.el}, but not
1886 recommended because something like @samp{[1]} could easily be part of a code
1887 snippet.
1888 @item [fn:name]
1889 A named footnote reference, where @code{name} is a unique label word, or, for
1890 simplicity of automatic creation, a number.
1891 @item [fn:: This is the inline definition of this footnote]
1892 A @LaTeX{}-like anonymous footnote where the definition is given directly at the
1893 reference point.
1894 @item [fn:name: a definition]
1895 An inline definition of a footnote, which also specifies a name for the note.
1896 Since Org allows multiple references to the same note, you can then use
1897 @code{[fn:name]} to create additional references.
1898 @end table
1900 @vindex org-footnote-auto-label
1901 Footnote labels can be created automatically, or you can create names yourself.
1902 This is handled by the variable @code{org-footnote-auto-label} and its
1903 corresponding @code{#+STARTUP} keywords.  See the docstring of that variable
1904 for details.
1906 @noindent The following command handles footnotes:
1908 @table @kbd
1909 @kindex C-c C-x f
1910 @item C-c C-x f
1911 The footnote action command.
1913 When the cursor is on a footnote reference, jump to the definition.  When it
1914 is at a definition, jump to the (first) reference.
1916 @vindex org-footnote-define-inline
1917 @vindex org-footnote-section
1918 @vindex org-footnote-auto-adjust
1919 Otherwise, create a new footnote.  Depending on the variable
1920 @code{org-footnote-define-inline}@footnote{The corresponding in-buffer
1921 setting is: @code{#+STARTUP: fninline} or @code{#+STARTUP: nofninline}}, the
1922 definition will be placed right into the text as part of the reference, or
1923 separately into the location determined by the variable
1924 @code{org-footnote-section}.
1926 When this command is called with a prefix argument, a menu of additional
1927 options is offered:
1928 @example
1929 s   @r{Sort the footnote definitions by reference sequence.  During editing,}
1930     @r{Org makes no effort to sort footnote definitions into a particular}
1931     @r{sequence.  If you want them sorted, use this command, which will}
1932     @r{also move entries according to @code{org-footnote-section}.  Automatic}
1933     @r{sorting after each insertion/deletion can be configured using the}
1934     @r{variable @code{org-footnote-auto-adjust}.}
1935 r   @r{Renumber the simple @code{fn:N} footnotes.  Automatic renumbering}
1936     @r{after each insertion/deletion can be configured using the variable}
1937     @r{@code{org-footnote-auto-adjust}.}
1938 S   @r{Short for first @code{r}, then @code{s} action.}
1939 n   @r{Normalize the footnotes by collecting all definitions (including}
1940     @r{inline definitions) into a special section, and then numbering them}
1941     @r{in sequence.  The references will then also be numbers.  This is}
1942     @r{meant to be the final step before finishing a document (e.g.@: sending}
1943     @r{off an email).  The exporters do this automatically, and so could}
1944     @r{something like @code{message-send-hook}.}
1945 d   @r{Delete the footnote at point, and all definitions of and references}
1946     @r{to it.}
1947 @end example
1948 Depending on the variable @code{org-footnote-auto-adjust}@footnote{the
1949 corresponding in-buffer options are @code{fnadjust} and @code{nofnadjust}.},
1950 renumbering and sorting footnotes can be automatic after each insertion or
1951 deletion.
1953 @kindex C-c C-c
1954 @item C-c C-c
1955 If the cursor is on a footnote reference, jump to the definition.  If it is a
1956 the definition, jump back to the reference.  When called at a footnote
1957 location with a prefix argument, offer the same menu as @kbd{C-c C-x f}.
1958 @kindex C-c C-o
1959 @kindex mouse-1
1960 @kindex mouse-2
1961 @item C-c C-o  @r{or} mouse-1/2
1962 Footnote labels are also links to the corresponding definition/reference, and
1963 you can use the usual commands to follow these links.
1964 @end table
1966 @node Orgstruct mode,  , Footnotes, Document Structure
1967 @section The Orgstruct minor mode
1968 @cindex Orgstruct mode
1969 @cindex minor mode for structure editing
1971 If you like the intuitive way the Org mode structure editing and list
1972 formatting works, you might want to use these commands in other modes like
1973 Text mode or Mail mode as well.  The minor mode @code{orgstruct-mode} makes
1974 this possible.   Toggle the mode with @kbd{M-x orgstruct-mode}, or
1975 turn it on by default, for example in Message mode, with one of:
1977 @lisp
1978 (add-hook 'message-mode-hook 'turn-on-orgstruct)
1979 (add-hook 'message-mode-hook 'turn-on-orgstruct++)
1980 @end lisp
1982 When this mode is active and the cursor is on a line that looks to Org like a
1983 headline or the first line of a list item, most structure editing commands
1984 will work, even if the same keys normally have different functionality in the
1985 major mode you are using.  If the cursor is not in one of those special
1986 lines, Orgstruct mode lurks silently in the shadows.  When you use
1987 @code{orgstruct++-mode}, Org will also export indentation and autofill
1988 settings into that mode, and detect item context after the first line of an
1989 item.
1991 @node Tables, Hyperlinks, Document Structure, Top
1992 @chapter Tables
1993 @cindex tables
1994 @cindex editing tables
1996 Org comes with a fast and intuitive table editor.  Spreadsheet-like
1997 calculations are supported using the Emacs @file{calc} package
1998 (@pxref{Top, Calc, , calc, Gnu Emacs Calculator Manual}).
2000 @menu
2001 * Built-in table editor::       Simple tables
2002 * Column width and alignment::  Overrule the automatic settings
2003 * Column groups::               Grouping to trigger vertical lines
2004 * Orgtbl mode::                 The table editor as minor mode
2005 * The spreadsheet::             The table editor has spreadsheet capabilities
2006 * Org-Plot::                    Plotting from org tables
2007 @end menu
2009 @node Built-in table editor, Column width and alignment, Tables, Tables
2010 @section The built-in table editor
2011 @cindex table editor, built-in
2013 Org makes it easy to format tables in plain ASCII.  Any line with @samp{|} as
2014 the first non-whitespace character is considered part of a table.  @samp{|}
2015 is also the column separator@footnote{To insert a vertical bar into a table
2016 field, use @code{\vert} or, inside a word @code{abc\vert@{@}def}.}.  A table
2017 might look like this:
2019 @example
2020 | Name  | Phone | Age |
2021 |-------+-------+-----|
2022 | Peter |  1234 |  17 |
2023 | Anna  |  4321 |  25 |
2024 @end example
2026 A table is re-aligned automatically each time you press @key{TAB} or
2027 @key{RET} or @kbd{C-c C-c} inside the table.  @key{TAB} also moves to
2028 the next field (@key{RET} to the next row) and creates new table rows
2029 at the end of the table or before horizontal lines.  The indentation
2030 of the table is set by the first line.  Any line starting with
2031 @samp{|-} is considered as a horizontal separator line and will be
2032 expanded on the next re-align to span the whole table width.  So, to
2033 create the above table, you would only type
2035 @example
2036 |Name|Phone|Age|
2038 @end example
2040 @noindent and then press @key{TAB} to align the table and start filling in
2041 fields.  Even faster would be to type @code{|Name|Phone|Age} followed by
2042 @kbd{C-c @key{RET}}.
2044 @vindex org-enable-table-editor
2045 @vindex org-table-auto-blank-field
2046 When typing text into a field, Org treats @key{DEL},
2047 @key{Backspace}, and all character keys in a special way, so that
2048 inserting and deleting avoids shifting other fields.  Also, when
2049 typing @emph{immediately after the cursor was moved into a new field
2050 with @kbd{@key{TAB}}, @kbd{S-@key{TAB}} or @kbd{@key{RET}}}, the
2051 field is automatically made blank.  If this behavior is too
2052 unpredictable for you, configure the variables
2053 @code{org-enable-table-editor} and @code{org-table-auto-blank-field}.
2055 @table @kbd
2056 @tsubheading{Creation and conversion}
2057 @orgcmd{C-c |,org-table-create-or-convert-from-region}
2058 Convert the active region to table.  If every line contains at least one
2059 TAB character, the function assumes that the material is tab separated.
2060 If every line contains a comma, comma-separated values (CSV) are assumed.
2061 If not, lines are split at whitespace into fields.  You can use a prefix
2062 argument to force a specific separator: @kbd{C-u} forces CSV, @kbd{C-u
2063 C-u} forces TAB, and a numeric argument N indicates that at least N
2064 consecutive spaces, or alternatively a TAB will be the separator.
2066 If there is no active region, this command creates an empty Org
2067 table.  But it is easier just to start typing, like
2068 @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
2070 @tsubheading{Re-aligning and field motion}
2071 @orgcmd{C-c C-c,org-table-align}
2072 Re-align the table without moving the cursor.
2074 @orgcmd{<TAB>,org-table-next-field}
2075 Re-align the table, move to the next field.  Creates a new row if
2076 necessary.
2078 @orgcmd{S-@key{TAB},org-table-previous-field}
2079 Re-align, move to previous field.
2081 @orgcmd{@key{RET},org-table-next-row}
2082 Re-align the table and move down to next row.  Creates a new row if
2083 necessary.  At the beginning or end of a line, @key{RET} still does
2084 NEWLINE, so it can be used to split a table.
2086 @orgcmd{M-a,org-table-beginning-of-field}
2087 Move to beginning of the current table field, or on to the previous field.
2088 @orgcmd{M-e,org-table-end-of-field}
2089 Move to end of the current table field, or on to the next field.
2091 @tsubheading{Column and row editing}
2092 @orgcmdkkcc{M-@key{left},M-@key{right},org-table-move-column-left,org-table-move-column-right}
2093 Move the current column left/right.
2095 @orgcmd{M-S-@key{left},org-table-delete-column}
2096 Kill the current column.
2098 @orgcmd{M-S-@key{right},org-table-insert-column}
2099 Insert a new column to the left of the cursor position.
2101 @orgcmdkkcc{M-@key{up},M-@key{down},org-table-move-row-up,org-table-move-row-down}
2102 Move the current row up/down.
2104 @orgcmd{M-S-@key{up},org-table-kill-row}
2105 Kill the current row or horizontal line.
2107 @orgcmd{M-S-@key{down},org-table-insert-row}
2108 Insert a new row above the current row.  With a prefix argument, the line is
2109 created below the current one.
2111 @orgcmd{C-c -,org-table-insert-hline}
2112 Insert a horizontal line below current row.  With a prefix argument, the line
2113 is created above the current line.
2115 @orgcmd{C-c @key{RET},org-table-hline-and-move}
2116 Insert a horizontal line below current row, and move the cursor into the row
2117 below that line.
2119 @orgcmd{C-c ^,org-table-sort-lines}
2120 Sort the table lines in the region.  The position of point indicates the
2121 column to be used for sorting, and the range of lines is the range
2122 between the nearest horizontal separator lines, or the entire table.  If
2123 point is before the first column, you will be prompted for the sorting
2124 column.  If there is an active region, the mark specifies the first line
2125 and the sorting column, while point should be in the last line to be
2126 included into the sorting.  The command prompts for the sorting type
2127 (alphabetically, numerically, or by time).  When called with a prefix
2128 argument, alphabetic sorting will be case-sensitive.
2130 @tsubheading{Regions}
2131 @orgcmd{C-c C-x M-w,org-table-copy-region}
2132 Copy a rectangular region from a table to a special clipboard.  Point and
2133 mark determine edge fields of the rectangle.  If there is no active region,
2134 copy just the current field.  The process ignores horizontal separator lines.
2136 @orgcmd{C-c C-x C-w,org-table-cut-region}
2137 Copy a rectangular region from a table to a special clipboard, and
2138 blank all fields in the rectangle.  So this is the ``cut'' operation.
2140 @orgcmd{C-c C-x C-y,org-table-paste-rectangle}
2141 Paste a rectangular region into a table.
2142 The upper left corner ends up in the current field.  All involved fields
2143 will be overwritten.  If the rectangle does not fit into the present table,
2144 the table is enlarged as needed.  The process ignores horizontal separator
2145 lines.
2147 @orgcmd{M-@key{RET},org-table-wrap-region}
2148 Split the current field at the cursor position and move the rest to the line
2149 below.  If there is an active region, and both point and mark are in the same
2150 column, the text in the column is wrapped to minimum width for the given
2151 number of lines.  A numeric prefix argument may be used to change the number
2152 of desired lines.  If there is no region, but you specify a prefix argument,
2153 the current field is made blank, and the content is appended to the field
2154 above.
2156 @tsubheading{Calculations}
2157 @cindex formula, in tables
2158 @cindex calculations, in tables
2159 @cindex region, active
2160 @cindex active region
2161 @cindex transient mark mode
2162 @orgcmd{C-c +,org-table-sum}
2163 Sum the numbers in the current column, or in the rectangle defined by
2164 the active region.  The result is shown in the echo area and can
2165 be inserted with @kbd{C-y}.
2167 @orgcmd{S-@key{RET},org-table-copy-down}
2168 @vindex org-table-copy-increment
2169 When current field is empty, copy from first non-empty field above.  When not
2170 empty, copy current field down to next row and move cursor along with it.
2171 Depending on the variable @code{org-table-copy-increment}, integer field
2172 values will be incremented during copy.  Integers that are too large will not
2173 be incremented.  Also, a @code{0} prefix argument temporarily disables the
2174 increment.  This key is also used by shift-selection and related modes
2175 (@pxref{Conflicts}).
2177 @tsubheading{Miscellaneous}
2178 @orgcmd{C-c `,org-table-edit-field}
2179 Edit the current field in a separate window.  This is useful for fields that
2180 are not fully visible (@pxref{Column width and alignment}).  When called with
2181 a @kbd{C-u} prefix, just make the full field visible, so that it can be
2182 edited in place.  When called with two @kbd{C-u} prefixes, make the editor
2183 window follow the cursor through the table and always show the current
2184 field.  The follow mode exits automatically when the cursor leaves the table,
2185 or when you repeat this command with @kbd{C-u C-u C-c `}.
2187 @item M-x org-table-import
2188 Import a file as a table.  The table should be TAB or whitespace
2189 separated.  Use, for example, to import a spreadsheet table or data
2190 from a database, because these programs generally can write
2191 TAB-separated text files.  This command works by inserting the file into
2192 the buffer and then converting the region to a table.  Any prefix
2193 argument is passed on to the converter, which uses it to determine the
2194 separator.
2195 @orgcmd{C-c |,org-table-create-or-convert-from-region}
2196 Tables can also be imported by pasting tabular text into the Org
2197 buffer, selecting the pasted text with @kbd{C-x C-x} and then using the
2198 @kbd{C-c |} command (see above under @i{Creation and conversion}).
2200 @item M-x org-table-export
2201 @findex org-table-export
2202 @vindex org-table-export-default-format
2203 Export the table, by default as a TAB-separated file.  Use for data
2204 exchange with, for example, spreadsheet or database programs.  The format
2205 used to export the file can be configured in the variable
2206 @code{org-table-export-default-format}.  You may also use properties
2207 @code{TABLE_EXPORT_FILE} and @code{TABLE_EXPORT_FORMAT} to specify the file
2208 name and the format for table export in a subtree.  Org supports quite
2209 general formats for exported tables.  The exporter format is the same as the
2210 format used by Orgtbl radio tables, see @ref{Translator functions}, for a
2211 detailed description.
2212 @end table
2214 If you don't like the automatic table editor because it gets in your
2215 way on lines which you would like to start with @samp{|}, you can turn
2216 it off with
2218 @lisp
2219 (setq org-enable-table-editor nil)
2220 @end lisp
2222 @noindent Then the only table command that still works is
2223 @kbd{C-c C-c} to do a manual re-align.
2225 @node Column width and alignment, Column groups, Built-in table editor, Tables
2226 @section Column width and alignment
2227 @cindex narrow columns in tables
2228 @cindex alignment in tables
2230 The width of columns is automatically determined by the table editor.  And
2231 also the alignment of a column is determined automatically from the fraction
2232 of number-like versus non-number fields in the column.
2234 Sometimes a single field or a few fields need to carry more text, leading to
2235 inconveniently wide columns.  Or maybe you want to make a table with several
2236 columns having a fixed width, regardless of content.  To set@footnote{This
2237 feature does not work on XEmacs.} the width of a column, one field anywhere
2238 in the column may contain just the string @samp{<N>} where @samp{N} is an
2239 integer specifying the width of the column in characters.  The next re-align
2240 will then set the width of this column to this value.
2242 @example
2243 @group
2244 |---+------------------------------|               |---+--------|
2245 |   |                              |               |   | <6>    |
2246 | 1 | one                          |               | 1 | one    |
2247 | 2 | two                          |     ----\     | 2 | two    |
2248 | 3 | This is a long chunk of text |     ----/     | 3 | This=> |
2249 | 4 | four                         |               | 4 | four   |
2250 |---+------------------------------|               |---+--------|
2251 @end group
2252 @end example
2254 @noindent
2255 Fields that are wider become clipped and end in the string @samp{=>}.
2256 Note that the full text is still in the buffer but is hidden.
2257 To see the full text, hold the mouse over the field---a tool-tip window
2258 will show the full content.  To edit such a field, use the command
2259 @kbd{C-c `} (that is @kbd{C-c} followed by the backquote).  This will
2260 open a new window with the full field.  Edit it and finish with @kbd{C-c
2261 C-c}.
2263 @vindex org-startup-align-all-tables
2264 When visiting a file containing a table with narrowed columns, the
2265 necessary character hiding has not yet happened, and the table needs to
2266 be aligned before it looks nice.  Setting the option
2267 @code{org-startup-align-all-tables} will realign all tables in a file
2268 upon visiting, but also slow down startup.  You can also set this option
2269 on a per-file basis with:
2271 @example
2272 #+STARTUP: align
2273 #+STARTUP: noalign
2274 @end example
2276 If you would like to overrule the automatic alignment of number-rich columns
2277 to the right and of string-rich column to the left, you can use @samp{<r>},
2278 @samp{c}@footnote{Centering does not work inside Emacs, but it does have an
2279 effect when exporting to HTML.} or @samp{<l>} in a similar fashion.  You may
2280 also combine alignment and field width like this: @samp{<l10>}.
2282 Lines which only contain these formatting cookies will be removed
2283 automatically when exporting the document.
2285 @node Column groups, Orgtbl mode, Column width and alignment, Tables
2286 @section Column groups
2287 @cindex grouping columns in tables
2289 When Org exports tables, it does so by default without vertical
2290 lines because that is visually more satisfying in general.  Occasionally
2291 however, vertical lines can be useful to structure a table into groups
2292 of columns, much like horizontal lines can do for groups of rows.  In
2293 order to specify column groups, you can use a special row where the
2294 first field contains only @samp{/}.  The further fields can either
2295 contain @samp{<} to indicate that this column should start a group,
2296 @samp{>} to indicate the end of a column, or @samp{<>} (no space between @samp{<}
2297 and @samp{>}) to make a column
2298 a group of its own.  Boundaries between column groups will upon export be
2299 marked with vertical lines.  Here is an example:
2301 @example
2302 | N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
2303 |---+-----+-----+-----+---------+------------|
2304 | / |   < |     |   > |       < |          > |
2305 | 1 |   1 |   1 |   1 |       1 |          1 |
2306 | 2 |   4 |   8 |  16 |  1.4142 |     1.1892 |
2307 | 3 |   9 |  27 |  81 |  1.7321 |     1.3161 |
2308 |---+-----+-----+-----+---------+------------|
2309 #+TBLFM: $2=$1^2::$3=$1^3::$4=$1^4::$5=sqrt($1)::$6=sqrt(sqrt(($1)))
2310 @end example
2312 It is also sufficient to just insert the column group starters after
2313 every vertical line you would like to have:
2315 @example
2316 |  N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
2317 |----+-----+-----+-----+---------+------------|
2318 | /  | <   |     |     | <       |            |
2319 @end example
2321 @node Orgtbl mode, The spreadsheet, Column groups, Tables
2322 @section The Orgtbl minor mode
2323 @cindex Orgtbl mode
2324 @cindex minor mode for tables
2326 If you like the intuitive way the Org table editor works, you
2327 might also want to use it in other modes like Text mode or Mail mode.
2328 The minor mode Orgtbl mode makes this possible.  You can always toggle
2329 the mode with @kbd{M-x orgtbl-mode}.  To turn it on by default, for
2330 example in Message mode, use
2332 @lisp
2333 (add-hook 'message-mode-hook 'turn-on-orgtbl)
2334 @end lisp
2336 Furthermore, with some special setup, it is possible to maintain tables
2337 in arbitrary syntax with Orgtbl mode.  For example, it is possible to
2338 construct @LaTeX{} tables with the underlying ease and power of
2339 Orgtbl mode, including spreadsheet capabilities.  For details, see
2340 @ref{Tables in arbitrary syntax}.
2342 @node The spreadsheet, Org-Plot, Orgtbl mode, Tables
2343 @section The spreadsheet
2344 @cindex calculations, in tables
2345 @cindex spreadsheet capabilities
2346 @cindex @file{calc} package
2348 The table editor makes use of the Emacs @file{calc} package to implement
2349 spreadsheet-like capabilities.  It can also evaluate Emacs Lisp forms to
2350 derive fields from other fields.  While fully featured, Org's implementation
2351 is not identical to other spreadsheets.  For example, Org knows the concept
2352 of a @emph{column formula} that will be applied to all non-header fields in a
2353 column without having to copy the formula to each relevant field.  There is
2354 also a formula debugger, and a formula editor with features for highlighting
2355 fields in the table corresponding to the references at the point in the
2356 formula, moving these references by arrow keys
2358 @menu
2359 * References::                  How to refer to another field or range
2360 * Formula syntax for Calc::     Using Calc to compute stuff
2361 * Formula syntax for Lisp::     Writing formulas in Emacs Lisp
2362 * Durations and time values::   How to compute durations and time values
2363 * Field and range formulas::    Formula for specific (ranges of) fields
2364 * Column formulas::             Formulas valid for an entire column
2365 * Editing and debugging formulas::  Fixing formulas
2366 * Updating the table::          Recomputing all dependent fields
2367 * Advanced features::           Field and column names, parameters and automatic recalc
2368 @end menu
2370 @node References, Formula syntax for Calc, The spreadsheet, The spreadsheet
2371 @subsection References
2372 @cindex references
2374 To compute fields in the table from other fields, formulas must
2375 reference other fields or ranges.  In Org, fields can be referenced
2376 by name, by absolute coordinates, and by relative coordinates.  To find
2377 out what the coordinates of a field are, press @kbd{C-c ?} in that
2378 field, or press @kbd{C-c @}} to toggle the display of a grid.
2380 @subsubheading Field references
2381 @cindex field references
2382 @cindex references, to fields
2384 Formulas can reference the value of another field in two ways.  Like in
2385 any other spreadsheet, you may reference fields with a letter/number
2386 combination like @code{B3}, meaning the 2nd field in the 3rd row.
2387 @vindex org-table-use-standard-references
2388 However, Org prefers@footnote{Org will understand references typed by the
2389 user as @samp{B4}, but it will not use this syntax when offering a formula
2390 for editing.  You can customize this behavior using the variable
2391 @code{org-table-use-standard-references}.}  to use another, more general
2392 representation that looks like this:
2393 @example
2394 @@@var{row}$@var{column}
2395 @end example
2397 Column specifications can be absolute like @code{$1},
2398 @code{$2},...@code{$@var{N}}, or relative to the current column (i.e.@: the
2399 column of the field which is being computed) like @code{$+1} or @code{$-2}.
2400 @code{$<} and @code{$>} are immutable references to the first and last
2401 column, respectively, and you can use @code{$>>>} to indicate the third
2402 column from the right.
2404 The row specification only counts data lines and ignores horizontal separator
2405 lines (hlines).  Like with columns, you can use absolute row numbers
2406 @code{@@1}, @code{@@2},...@code{@@@var{N}}, and row numbers relative to the
2407 current row like @code{@@+3} or @code{@@-1}.  @code{@@<} and @code{@@>} are
2408 immutable references the first and last@footnote{For backward compatibility
2409 you can also use special names like @code{$LR5} and @code{$LR12} to refer in
2410 a stable way to the 5th and 12th field in the last row of the table.
2411 However, this syntax is deprecated, it should not be used for new documents.
2412 Use @code{@@>$} instead.} row in the table, respectively.  You may also
2413 specify the row relative to one of the hlines: @code{@@I} refers to the first
2414 hline, @code{@@II} to the second, etc@.  @code{@@-I} refers to the first such
2415 line above the current line, @code{@@+I} to the first such line below the
2416 current line.  You can also write @code{@@III+2} which is the second data line
2417 after the third hline in the table.
2419 @code{@@0} and @code{$0} refer to the current row and column, respectively,
2420 i.e. to the row/column for the field being computed.  Also, if you omit
2421 either the column or the row part of the reference, the current row/column is
2422 implied.
2424 Org's references with @emph{unsigned} numbers are fixed references
2425 in the sense that if you use the same reference in the formula for two
2426 different fields, the same field will be referenced each time.
2427 Org's references with @emph{signed} numbers are floating
2428 references because the same reference operator can reference different
2429 fields depending on the field being calculated by the formula.
2431 Here are a few examples:
2433 @example
2434 @@2$3      @r{2nd row, 3rd column (same as @code{C2})}
2435 $5        @r{column 5 in the current row (same as @code{E&})}
2436 @@2        @r{current column, row 2}
2437 @@-1$-3    @r{the field one row up, three columns to the left}
2438 @@-I$2     @r{field just under hline above current row, column 2}
2439 @@>$5      @r{field in the last row, in column 5}
2440 @end example
2442 @subsubheading Range references
2443 @cindex range references
2444 @cindex references, to ranges
2446 You may reference a rectangular range of fields by specifying two field
2447 references connected by two dots @samp{..}.  If both fields are in the
2448 current row, you may simply use @samp{$2..$7}, but if at least one field
2449 is in a different row, you need to use the general @code{@@row$column}
2450 format at least for the first field (i.e the reference must start with
2451 @samp{@@} in order to be interpreted correctly).  Examples:
2453 @example
2454 $1..$3        @r{first three fields in the current row}
2455 $P..$Q        @r{range, using column names (see under Advanced)}
2456 $<<<..$>>     @r{start in third column, continue to the one but last}
2457 @@2$1..@@4$3    @r{6 fields between these two fields (same as @code{A2..C4})}
2458 @@-1$-2..@@-1   @r{3 numbers from the column to the left, 2 up to current row}
2459 @@I..II        @r{between first and second hline, short for @code{@@I..@@II}}
2460 @end example
2462 @noindent Range references return a vector of values that can be fed
2463 into Calc vector functions.  Empty fields in ranges are normally
2464 suppressed, so that the vector contains only the non-empty fields (but
2465 see the @samp{E} mode switch below).  If there are no non-empty fields,
2466 @samp{[0]} is returned to avoid syntax errors in formulas.
2468 @subsubheading Field coordinates in formulas
2469 @cindex field coordinates
2470 @cindex coordinates, of field
2471 @cindex row, of field coordinates
2472 @cindex column, of field coordinates
2474 For Calc formulas and Lisp formulas @code{@@#} and @code{$#} can be used to
2475 get the row or column number of the field where the formula result goes.
2476 The traditional Lisp formula equivalents are @code{org-table-current-dline}
2477 and @code{org-table-current-column}.  Examples:
2479 @example
2480 if(@@# % 2, $#, string(""))   @r{column number on odd lines only}
2481 $3 = remote(FOO, @@@@#$2)      @r{copy column 2 from table FOO into}
2482                              @r{column 3 of the current table}
2483 @end example
2485 @noindent For the second example, table FOO must have at least as many rows
2486 as the current table.  Note that this is inefficient@footnote{The computation time scales as
2487 O(N^2) because table FOO is parsed for each field to be copied.} for large
2488 number of rows.
2490 @subsubheading Named references
2491 @cindex named references
2492 @cindex references, named
2493 @cindex name, of column or field
2494 @cindex constants, in calculations
2495 @cindex #+CONSTANTS
2497 @vindex org-table-formula-constants
2498 @samp{$name} is interpreted as the name of a column, parameter or
2499 constant.  Constants are defined globally through the variable
2500 @code{org-table-formula-constants}, and locally (for the file) through a
2501 line like
2503 @example
2504 #+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6
2505 @end example
2507 @noindent
2508 @vindex constants-unit-system
2509 @pindex constants.el
2510 Also properties (@pxref{Properties and Columns}) can be used as
2511 constants in table formulas: for a property @samp{:Xyz:} use the name
2512 @samp{$PROP_Xyz}, and the property will be searched in the current
2513 outline entry and in the hierarchy above it.  If you have the
2514 @file{constants.el} package, it will also be used to resolve constants,
2515 including natural constants like @samp{$h} for Planck's constant, and
2516 units like @samp{$km} for kilometers@footnote{@file{constants.el} can
2517 supply the values of constants in two different unit systems, @code{SI}
2518 and @code{cgs}.  Which one is used depends on the value of the variable
2519 @code{constants-unit-system}.  You can use the @code{#+STARTUP} options
2520 @code{constSI} and @code{constcgs} to set this value for the current
2521 buffer.}.  Column names and parameters can be specified in special table
2522 lines.  These are described below, see @ref{Advanced features}.  All
2523 names must start with a letter, and further consist of letters and
2524 numbers.
2526 @subsubheading Remote references
2527 @cindex remote references
2528 @cindex references, remote
2529 @cindex references, to a different table
2530 @cindex name, of column or field
2531 @cindex constants, in calculations
2532 @cindex #+TBLNAME
2534 You may also reference constants, fields and ranges from a different table,
2535 either in the current file or even in a different file.  The syntax is
2537 @example
2538 remote(NAME-OR-ID,REF)
2539 @end example
2541 @noindent
2542 where NAME can be the name of a table in the current file as set by a
2543 @code{#+TBLNAME: NAME} line before the table.  It can also be the ID of an
2544 entry, even in a different file, and the reference then refers to the first
2545 table in that entry.  REF is an absolute field or range reference as
2546 described above for example @code{@@3$3} or @code{$somename}, valid in the
2547 referenced table.
2549 @node Formula syntax for Calc, Formula syntax for Lisp, References, The spreadsheet
2550 @subsection Formula syntax for Calc
2551 @cindex formula syntax, Calc
2552 @cindex syntax, of formulas
2554 A formula can be any algebraic expression understood by the Emacs
2555 @file{Calc} package.  @b{Note that @file{calc} has the
2556 non-standard convention that @samp{/} has lower precedence than
2557 @samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.}  Before
2558 evaluation by @code{calc-eval} (@pxref{Calling Calc from
2559 Your Programs, calc-eval, Calling Calc from Your Lisp Programs, calc, GNU
2560 Emacs Calc Manual}),
2561 variable substitution takes place according to the rules described above.
2562 @cindex vectors, in table calculations
2563 The range vectors can be directly fed into the Calc vector functions
2564 like @samp{vmean} and @samp{vsum}.
2566 @cindex format specifier
2567 @cindex mode, for @file{calc}
2568 @vindex org-calc-default-modes
2569 A formula can contain an optional mode string after a semicolon.  This
2570 string consists of flags to influence Calc and other modes during
2571 execution.  By default, Org uses the standard Calc modes (precision
2572 12, angular units degrees, fraction and symbolic modes off).  The display
2573 format, however, has been changed to @code{(float 8)} to keep tables
2574 compact.  The default settings can be configured using the variable
2575 @code{org-calc-default-modes}.
2577 @example
2578 p20           @r{set the internal Calc calculation precision to 20 digits}
2579 n3 s3 e2 f4   @r{Normal, scientific, engineering, or fixed}
2580               @r{format of the result of Calc passed back to Org.}
2581               @r{Calc formatting is unlimited in precision as}
2582               @r{long as the Calc calculation precision is greater.}
2583 D R           @r{angle modes: degrees, radians}
2584 F S           @r{fraction and symbolic modes}
2585 N             @r{interpret all fields as numbers, use 0 for non-numbers}
2586 E             @r{keep empty fields in ranges}
2587 L             @r{literal}
2588 @end example
2590 @noindent
2591 Unless you use large integer numbers or high-precision-calculation
2592 and -display for floating point numbers you may alternatively provide a
2593 @code{printf} format specifier to reformat the Calc result after it has been
2594 passed back to Org instead of letting Calc already do the
2595 formatting@footnote{The @code{printf} reformatting is limited in precision
2596 because the value passed to it is converted into an @code{integer} or
2597 @code{double}.  The @code{integer} is limited in size by truncating the
2598 signed value to 32 bits.  The @code{double} is limited in precision to 64
2599 bits overall which leaves approximately 16 significant decimal digits.}.
2600 A few examples:
2602 @example
2603 $1+$2                @r{Sum of first and second field}
2604 $1+$2;%.2f           @r{Same, format result to two decimals}
2605 exp($2)+exp($1)      @r{Math functions can be used}
2606 $0;%.1f              @r{Reformat current cell to 1 decimal}
2607 ($3-32)*5/9          @r{Degrees F -> C conversion}
2608 $c/$1/$cm            @r{Hz -> cm conversion, using @file{constants.el}}
2609 tan($1);Dp3s1        @r{Compute in degrees, precision 3, display SCI 1}
2610 sin($1);Dp3%.1e      @r{Same, but use printf specifier for display}
2611 vmean($2..$7)        @r{Compute column range mean, using vector function}
2612 vmean($2..$7);EN     @r{Same, but treat empty fields as 0}
2613 taylor($3,x=7,2)     @r{Taylor series of $3, at x=7, second degree}
2614 @end example
2616 Calc also contains a complete set of logical operations.  For example
2618 @example
2619 if($1<20,teen,string(""))  @r{"teen" if age $1 less than 20, else empty}
2620 @end example
2622 Note that you can also use two org-specific flags @code{T} and @code{t} for
2623 durations computations @ref{Durations and time values}.
2625 @node Formula syntax for Lisp, Durations and time values, Formula syntax for Calc, The spreadsheet
2626 @subsection Emacs Lisp forms as formulas
2627 @cindex Lisp forms, as table formulas
2629 It is also possible to write a formula in Emacs Lisp; this can be useful for
2630 string manipulation and control structures, if Calc's functionality is not
2631 enough.  If a formula starts with a single-quote followed by an opening
2632 parenthesis, then it is evaluated as a Lisp form.  The evaluation should
2633 return either a string or a number.  Just as with @file{calc} formulas, you
2634 can specify modes and a printf format after a semicolon.  With Emacs Lisp
2635 forms, you need to be conscious about the way field references are
2636 interpolated into the form.  By default, a reference will be interpolated as
2637 a Lisp string (in double-quotes) containing the field.  If you provide the
2638 @samp{N} mode switch, all referenced elements will be numbers (non-number
2639 fields will be zero) and interpolated as Lisp numbers, without quotes.  If
2640 you provide the @samp{L} flag, all fields will be interpolated literally,
2641 without quotes.  I.e., if you want a reference to be interpreted as a string
2642 by the Lisp form, enclose the reference operator itself in double-quotes,
2643 like @code{"$3"}.  Ranges are inserted as space-separated fields, so you can
2644 embed them in list or vector syntax.  Here are a few examples---note how the
2645 @samp{N} mode is used when we do computations in Lisp:
2647 @example
2648 @r{Swap the first two characters of the content of column 1}
2649   '(concat (substring $1 1 2) (substring $1 0 1) (substring $1 2))
2650 @r{Add columns 1 and 2, equivalent to Calc's @code{$1+$2}}
2651   '(+ $1 $2);N
2652 @r{Compute the sum of columns 1-4, like Calc's @code{vsum($1..$4)}}
2653   '(apply '+ '($1..$4));N
2654 @end example
2656 @node Durations and time values, Field and range formulas, Formula syntax for Lisp, The spreadsheet
2657 @subsection Durations and time values
2658 @cindex Duration, computing
2659 @cindex Time, computing
2660 @vindex org-table-duration-custom-format
2662 If you want to compute time values use the @code{T} flag, either in Calc
2663 formulas or Elisp formulas:
2665 @example
2666 @group
2667   |  Task 1 |   Task 2 |    Total |
2668   |---------+----------+----------|
2669   |    2:12 |     1:47 | 03:59:00 |
2670   | 3:02:20 | -2:07:00 |     0.92 |
2671   #+TBLFM: @@2$3=$1+$2;T::@@3$3=$1+$2;t
2672 @end group
2673 @end example
2675 Input duration values must be of the form @code{[HH:MM[:SS]}, where seconds
2676 are optional.  With the @code{T} flag, computed durations will be displayed
2677 as @code{HH:MM:SS} (see the first formula above).  With the @code{t} flag,
2678 computed durations will be displayed according to the value of the variable
2679 @code{org-table-duration-custom-format}, which defaults to @code{'hours} and
2680 will display the result as a fraction of hours (see the second formula in the
2681 example above).
2683 Negative duration values can be manipulated as well, and integers will be
2684 considered as seconds in addition and subtraction.
2686 @node Field and range formulas, Column formulas, Durations and time values, The spreadsheet
2687 @subsection Field and range formulas
2688 @cindex field formula
2689 @cindex range formula
2690 @cindex formula, for individual table field
2691 @cindex formula, for range of fields
2693 To assign a formula to a particular field, type it directly into the field,
2694 preceded by @samp{:=}, for example @samp{:=vsum(@@II..III)}.  When you press
2695 @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the field,
2696 the formula will be stored as the formula for this field, evaluated, and the
2697 current field will be replaced with the result.
2699 @cindex #+TBLFM
2700 Formulas are stored in a special line starting with @samp{#+TBLFM:} directly
2701 below the table.  If you type the equation in the 4th field of the 3rd data
2702 line in the table, the formula will look like @samp{@@3$4=$1+$2}.  When
2703 inserting/deleting/swapping column and rows with the appropriate commands,
2704 @i{absolute references} (but not relative ones) in stored formulas are
2705 modified in order to still reference the same field.  To avoid this from
2706 happening, in particular in range references, anchor ranges at the table
2707 borders (using @code{@@<}, @code{@@>}, @code{$<}, @code{$>}), or at hlines
2708 using the @code{@@I} notation.  Automatic adaptation of field references does
2709 of cause not happen if you edit the table structure with normal editing
2710 commands---then you must fix the equations yourself.
2712 Instead of typing an equation into the field, you may also use the following
2713 command
2715 @table @kbd
2716 @orgcmd{C-u C-c =,org-table-eval-formula}
2717 Install a new formula for the current field.  The command prompts for a
2718 formula with default taken from the @samp{#+TBLFM:} line, applies
2719 it to the current field, and stores it.
2720 @end table
2722 The left-hand side of a formula can also be a special expression in order to
2723 assign the formula to a number of different fields.  There is no keyboard
2724 shortcut to enter such range formulas.  To add them, use the formula editor
2725 (@pxref{Editing and debugging formulas}) or edit the @code{#+TBLFM:} line
2726 directly.
2728 @table @code
2729 @item $2=
2730 Column formula, valid for the entire column.  This is so common that Org
2731 treats these formulas in a special way, see @ref{Column formulas}.
2732 @item @@3=
2733 Row formula, applies to all fields in the specified row.  @code{@@>=} means
2734 the last row.
2735 @item @@1$2..@@4$3=
2736 Range formula, applies to all fields in the given rectangular range.  This
2737 can also be used to assign a formula to some but not all fields in a row.
2738 @item $name=
2739 Named field, see @ref{Advanced features}.
2740 @end table
2742 @node Column formulas, Editing and debugging formulas, Field and range formulas, The spreadsheet
2743 @subsection Column formulas
2744 @cindex column formula
2745 @cindex formula, for table column
2747 When you assign a formula to a simple column reference like @code{$3=}, the
2748 same formula will be used in all fields of that column, with the following
2749 very convenient exceptions: (i) If the table contains horizontal separator
2750 hlines, everything before the first such line is considered part of the table
2751 @emph{header} and will not be modified by column formulas.  (ii) Fields that
2752 already get a value from a field/range formula will be left alone by column
2753 formulas.  These conditions make column formulas very easy to use.
2755 To assign a formula to a column, type it directly into any field in the
2756 column, preceded by an equal sign, like @samp{=$1+$2}.  When you press
2757 @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the field,
2758 the formula will be stored as the formula for the current column, evaluated
2759 and the current field replaced with the result.  If the field contains only
2760 @samp{=}, the previously stored formula for this column is used.  For each
2761 column, Org will only remember the most recently used formula.  In the
2762 @samp{#+TBLFM:} line, column formulas will look like @samp{$4=$1+$2}.  The
2763 left-hand side of a column formula can not be the name of column, it must be
2764 the numeric column reference or @code{$>}.
2766 Instead of typing an equation into the field, you may also use the
2767 following command:
2769 @table @kbd
2770 @orgcmd{C-c =,org-table-eval-formula}
2771 Install a new formula for the current column and replace current field with
2772 the result of the formula.  The command prompts for a formula, with default
2773 taken from the @samp{#+TBLFM} line, applies it to the current field and
2774 stores it.  With a numeric prefix argument(e.g.@: @kbd{C-5 C-c =}) the command
2775 will apply it to that many consecutive fields in the current column.
2776 @end table
2778 @node Editing and debugging formulas, Updating the table, Column formulas, The spreadsheet
2779 @subsection Editing and debugging formulas
2780 @cindex formula editing
2781 @cindex editing, of table formulas
2783 @vindex org-table-use-standard-references
2784 You can edit individual formulas in the minibuffer or directly in the
2785 field.  Org can also prepare a special buffer with all active
2786 formulas of a table.  When offering a formula for editing, Org
2787 converts references to the standard format (like @code{B3} or @code{D&})
2788 if possible.  If you prefer to only work with the internal format (like
2789 @code{@@3$2} or @code{$4}), configure the variable
2790 @code{org-table-use-standard-references}.
2792 @table @kbd
2793 @orgcmdkkc{C-c =,C-u C-c =,org-table-eval-formula}
2794 Edit the formula associated with the current column/field in the
2795 minibuffer.  See @ref{Column formulas}, and @ref{Field and range formulas}.
2796 @orgcmd{C-u C-u C-c =,org-table-eval-formula}
2797 Re-insert the active formula (either a
2798 field formula, or a column formula) into the current field, so that you
2799 can edit it directly in the field.  The advantage over editing in the
2800 minibuffer is that you can use the command @kbd{C-c ?}.
2801 @orgcmd{C-c ?,org-table-field-info}
2802 While editing a formula in a table field, highlight the field(s)
2803 referenced by the reference at the cursor position in the formula.
2804 @kindex C-c @}
2805 @findex org-table-toggle-coordinate-overlays
2806 @item C-c @}
2807 Toggle the display of row and column numbers for a table, using overlays
2808 (@command{org-table-toggle-coordinate-overlays}).  These are updated each
2809 time the table is aligned; you can force it with @kbd{C-c C-c}.
2810 @kindex C-c @{
2811 @findex org-table-toggle-formula-debugger
2812 @item C-c @{
2813 Toggle the formula debugger on and off
2814 (@command{org-table-toggle-formula-debugger}).  See below.
2815 @orgcmd{C-c ',org-table-edit-formulas}
2816 Edit all formulas for the current table in a special buffer, where the
2817 formulas will be displayed one per line.  If the current field has an
2818 active formula, the cursor in the formula editor will mark it.
2819 While inside the special buffer, Org will automatically highlight
2820 any field or range reference at the cursor position.  You may edit,
2821 remove and add formulas, and use the following commands:
2822 @table @kbd
2823 @orgcmdkkc{C-c C-c,C-x C-s,org-table-fedit-finish}
2824 Exit the formula editor and store the modified formulas.  With @kbd{C-u}
2825 prefix, also apply the new formulas to the entire table.
2826 @orgcmd{C-c C-q,org-table-fedit-abort}
2827 Exit the formula editor without installing changes.
2828 @orgcmd{C-c C-r,org-table-fedit-toggle-ref-type}
2829 Toggle all references in the formula editor between standard (like
2830 @code{B3}) and internal (like @code{@@3$2}).
2831 @orgcmd{@key{TAB},org-table-fedit-lisp-indent}
2832 Pretty-print or indent Lisp formula at point.  When in a line containing
2833 a Lisp formula, format the formula according to Emacs Lisp rules.
2834 Another @key{TAB} collapses the formula back again.  In the open
2835 formula, @key{TAB} re-indents just like in Emacs Lisp mode.
2836 @orgcmd{M-@key{TAB},lisp-complete-symbol}
2837 Complete Lisp symbols, just like in Emacs Lisp mode.
2838 @kindex S-@key{up}
2839 @kindex S-@key{down}
2840 @kindex S-@key{left}
2841 @kindex S-@key{right}
2842 @findex org-table-fedit-ref-up
2843 @findex org-table-fedit-ref-down
2844 @findex org-table-fedit-ref-left
2845 @findex org-table-fedit-ref-right
2846 @item S-@key{up}/@key{down}/@key{left}/@key{right}
2847 Shift the reference at point.  For example, if the reference is
2848 @code{B3} and you press @kbd{S-@key{right}}, it will become @code{C3}.
2849 This also works for relative references and for hline references.
2850 @orgcmdkkcc{M-S-@key{up},M-S-@key{down},org-table-fedit-line-up,org-table-fedit-line-down}
2851 Move the test line for column formulas in the Org buffer up and
2852 down.
2853 @orgcmdkkcc{M-@key{up},M-@key{down},org-table-fedit-scroll-down,org-table-fedit-scroll-up}
2854 Scroll the window displaying the table.
2855 @kindex C-c @}
2856 @findex org-table-toggle-coordinate-overlays
2857 @item C-c @}
2858 Turn the coordinate grid in the table on and off.
2859 @end table
2860 @end table
2862 Making a table field blank does not remove the formula associated with
2863 the field, because that is stored in a different line (the @samp{#+TBLFM}
2864 line)---during the next recalculation the field will be filled again.
2865 To remove a formula from a field, you have to give an empty reply when
2866 prompted for the formula, or to edit the @samp{#+TBLFM} line.
2868 @kindex C-c C-c
2869 You may edit the @samp{#+TBLFM} directly and re-apply the changed
2870 equations with @kbd{C-c C-c} in that line or with the normal
2871 recalculation commands in the table.
2873 @subsubheading Debugging formulas
2874 @cindex formula debugging
2875 @cindex debugging, of table formulas
2876 When the evaluation of a formula leads to an error, the field content
2877 becomes the string @samp{#ERROR}.  If you would like see what is going
2878 on during variable substitution and calculation in order to find a bug,
2879 turn on formula debugging in the @code{Tbl} menu and repeat the
2880 calculation, for example by pressing @kbd{C-u C-u C-c = @key{RET}} in a
2881 field.  Detailed information will be displayed.
2883 @node Updating the table, Advanced features, Editing and debugging formulas, The spreadsheet
2884 @subsection Updating the table
2885 @cindex recomputing table fields
2886 @cindex updating, table
2888 Recalculation of a table is normally not automatic, but needs to be
2889 triggered by a command.  See @ref{Advanced features}, for a way to make
2890 recalculation at least semi-automatic.
2892 In order to recalculate a line of a table or the entire table, use the
2893 following commands:
2895 @table @kbd
2896 @orgcmd{C-c *,org-table-recalculate}
2897 Recalculate the current row by first applying the stored column formulas
2898 from left to right, and all field/range formulas in the current row.
2900 @kindex C-u C-c *
2901 @item C-u C-c *
2902 @kindex C-u C-c C-c
2903 @itemx C-u C-c C-c
2904 Recompute the entire table, line by line.  Any lines before the first
2905 hline are left alone, assuming that these are part of the table header.
2907 @orgcmdkkc{C-u C-u C-c *,C-u C-u C-c C-c,org-table-iterate}
2908 Iterate the table by recomputing it until no further changes occur.
2909 This may be necessary if some computed fields use the value of other
2910 fields that are computed @i{later} in the calculation sequence.
2911 @item M-x org-table-recalculate-buffer-tables
2912 @findex org-table-recalculate-buffer-tables
2913 Recompute all tables in the current buffer.
2914 @item M-x org-table-iterate-buffer-tables
2915 @findex org-table-iterate-buffer-tables
2916 Iterate all tables in the current buffer, in order to converge table-to-table
2917 dependencies.
2918 @end table
2920 @node Advanced features,  , Updating the table, The spreadsheet
2921 @subsection Advanced features
2923 If you want the recalculation of fields to happen automatically, or if you
2924 want to be able to assign @i{names}@footnote{Such names must start by an
2925 alphabetic character and use only alphanumeric/underscore characters.} to
2926 fields and columns, you need to reserve the first column of the table for
2927 special marking characters.
2929 @table @kbd
2930 @orgcmd{C-#,org-table-rotate-recalc-marks}
2931 Rotate the calculation mark in first column through the states @samp{ },
2932 @samp{#}, @samp{*}, @samp{!}, @samp{$}.  When there is an active region,
2933 change all marks in the region.
2934 @end table
2936 Here is an example of a table that collects exam results of students and
2937 makes use of these features:
2939 @example
2940 @group
2941 |---+---------+--------+--------+--------+-------+------|
2942 |   | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
2943 |---+---------+--------+--------+--------+-------+------|
2944 | ! |         |     P1 |     P2 |     P3 |   Tot |      |
2945 | # | Maximum |     10 |     15 |     25 |    50 | 10.0 |
2946 | ^ |         |     m1 |     m2 |     m3 |    mt |      |
2947 |---+---------+--------+--------+--------+-------+------|
2948 | # | Peter   |     10 |      8 |     23 |    41 |  8.2 |
2949 | # | Sam     |      2 |      4 |      3 |     9 |  1.8 |
2950 |---+---------+--------+--------+--------+-------+------|
2951 |   | Average |        |        |        |  29.7 |      |
2952 | ^ |         |        |        |        |    at |      |
2953 | $ | max=50  |        |        |        |       |      |
2954 |---+---------+--------+--------+--------+-------+------|
2955 #+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(@@-II..@@-I);%.1f
2956 @end group
2957 @end example
2959 @noindent @b{Important}: please note that for these special tables,
2960 recalculating the table with @kbd{C-u C-c *} will only affect rows that
2961 are marked @samp{#} or @samp{*}, and fields that have a formula assigned
2962 to the field itself.  The column formulas are not applied in rows with
2963 empty first field.
2965 @cindex marking characters, tables
2966 The marking characters have the following meaning:
2967 @table @samp
2968 @item !
2969 The fields in this line define names for the columns, so that you may
2970 refer to a column as @samp{$Tot} instead of @samp{$6}.
2971 @item ^
2972 This row defines names for the fields @emph{above} the row.  With such
2973 a definition, any formula in the table may use @samp{$m1} to refer to
2974 the value @samp{10}.  Also, if you assign a formula to a names field, it
2975 will be stored as @samp{$name=...}.
2976 @item _
2977 Similar to @samp{^}, but defines names for the fields in the row
2978 @emph{below}.
2979 @item $
2980 Fields in this row can define @emph{parameters} for formulas.  For
2981 example, if a field in a @samp{$} row contains @samp{max=50}, then
2982 formulas in this table can refer to the value 50 using @samp{$max}.
2983 Parameters work exactly like constants, only that they can be defined on
2984 a per-table basis.
2985 @item #
2986 Fields in this row are automatically recalculated when pressing
2987 @key{TAB} or @key{RET} or @kbd{S-@key{TAB}} in this row.  Also, this row
2988 is selected for a global recalculation with @kbd{C-u C-c *}.  Unmarked
2989 lines will be left alone by this command.
2990 @item *
2991 Selects this line for global recalculation with @kbd{C-u C-c *}, but
2992 not for automatic recalculation.  Use this when automatic
2993 recalculation slows down editing too much.
2994 @item
2995 Unmarked lines are exempt from recalculation with @kbd{C-u C-c *}.
2996 All lines that should be recalculated should be marked with @samp{#}
2997 or @samp{*}.
2998 @item /
2999 Do not export this line.  Useful for lines that contain the narrowing
3000 @samp{<N>} markers or column group markers.
3001 @end table
3003 Finally, just to whet your appetite for what can be done with the
3004 fantastic @file{calc.el} package, here is a table that computes the Taylor
3005 series of degree @code{n} at location @code{x} for a couple of
3006 functions.
3008 @example
3009 @group
3010 |---+-------------+---+-----+--------------------------------------|
3011 |   | Func        | n | x   | Result                               |
3012 |---+-------------+---+-----+--------------------------------------|
3013 | # | exp(x)      | 1 | x   | 1 + x                                |
3014 | # | exp(x)      | 2 | x   | 1 + x + x^2 / 2                      |
3015 | # | exp(x)      | 3 | x   | 1 + x + x^2 / 2 + x^3 / 6            |
3016 | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
3017 | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2    |
3018 | * | tan(x)      | 3 | x   | 0.0175 x + 1.77e-6 x^3               |
3019 |---+-------------+---+-----+--------------------------------------|
3020 #+TBLFM: $5=taylor($2,$4,$3);n3
3021 @end group
3022 @end example
3024 @node Org-Plot,  , The spreadsheet, Tables
3025 @section Org-Plot
3026 @cindex graph, in tables
3027 @cindex plot tables using Gnuplot
3028 @cindex #+PLOT
3030 Org-Plot can produce 2D and 3D graphs of information stored in org tables
3031 using @file{Gnuplot} @uref{http://www.gnuplot.info/} and @file{gnuplot-mode}
3032 @uref{http://cars9.uchicago.edu/~ravel/software/gnuplot-mode.html}.  To see
3033 this in action, ensure that you have both Gnuplot and Gnuplot mode installed
3034 on your system, then call @code{org-plot/gnuplot} on the following table.
3036 @example
3037 @group
3038 #+PLOT: title:"Citas" ind:1 deps:(3) type:2d with:histograms set:"yrange [0:]"
3039 | Sede      | Max cites | H-index |
3040 |-----------+-----------+---------|
3041 | Chile     |    257.72 |   21.39 |
3042 | Leeds     |    165.77 |   19.68 |
3043 | Sao Paolo |     71.00 |   11.50 |
3044 | Stockholm |    134.19 |   14.33 |
3045 | Morelia   |    257.56 |   17.67 |
3046 @end group
3047 @end example
3049 Notice that Org Plot is smart enough to apply the table's headers as labels.
3050 Further control over the labels, type, content, and appearance of plots can
3051 be exercised through the @code{#+PLOT:} lines preceding a table.  See below
3052 for a complete list of Org-plot options.  For more information and examples
3053 see the Org-plot tutorial at
3054 @uref{http://orgmode.org/worg/org-tutorials/org-plot.html}.
3056 @subsubheading Plot Options
3058 @table @code
3059 @item set
3060 Specify any @command{gnuplot} option to be set when graphing.
3062 @item title
3063 Specify the title of the plot.
3065 @item ind
3066 Specify which column of the table to use as the @code{x} axis.
3068 @item deps
3069 Specify the columns to graph as a Lisp style list, surrounded by parentheses
3070 and separated by spaces for example @code{dep:(3 4)} to graph the third and
3071 fourth columns (defaults to graphing all other columns aside from the @code{ind}
3072 column).
3074 @item type
3075 Specify whether the plot will be @code{2d}, @code{3d}, or @code{grid}.
3077 @item with
3078 Specify a @code{with} option to be inserted for every col being plotted
3079 (e.g.@: @code{lines}, @code{points}, @code{boxes}, @code{impulses}, etc...).
3080 Defaults to @code{lines}.
3082 @item file
3083 If you want to plot to a file, specify @code{"@var{path/to/desired/output-file}"}.
3085 @item labels
3086 List of labels to be used for the @code{deps} (defaults to the column headers
3087 if they exist).
3089 @item line
3090 Specify an entire line to be inserted in the Gnuplot script.
3092 @item map
3093 When plotting @code{3d} or @code{grid} types, set this to @code{t} to graph a
3094 flat mapping rather than a @code{3d} slope.
3096 @item timefmt
3097 Specify format of Org mode timestamps as they will be parsed by Gnuplot.
3098 Defaults to @samp{%Y-%m-%d-%H:%M:%S}.
3100 @item script
3101 If you want total control, you can specify a script file (place the file name
3102 between double-quotes) which will be used to plot.  Before plotting, every
3103 instance of @code{$datafile} in the specified script will be replaced with
3104 the path to the generated data file.  Note: even if you set this option, you
3105 may still want to specify the plot type, as that can impact the content of
3106 the data file.
3107 @end table
3109 @node Hyperlinks, TODO Items, Tables, Top
3110 @chapter Hyperlinks
3111 @cindex hyperlinks
3113 Like HTML, Org provides links inside a file, external links to
3114 other files, Usenet articles, emails, and much more.
3116 @menu
3117 * Link format::                 How links in Org are formatted
3118 * Internal links::              Links to other places in the current file
3119 * External links::              URL-like links to the world
3120 * Handling links::              Creating, inserting and following
3121 * Using links outside Org::     Linking from my C source code?
3122 * Link abbreviations::          Shortcuts for writing complex links
3123 * Search options::              Linking to a specific location
3124 * Custom searches::             When the default search is not enough
3125 @end menu
3127 @node Link format, Internal links, Hyperlinks, Hyperlinks
3128 @section Link format
3129 @cindex link format
3130 @cindex format, of links
3132 Org will recognize plain URL-like links and activate them as
3133 clickable links.  The general link format, however, looks like this:
3135 @example
3136 [[link][description]]       @r{or alternatively}           [[link]]
3137 @end example
3139 @noindent
3140 Once a link in the buffer is complete (all brackets present), Org
3141 will change the display so that @samp{description} is displayed instead
3142 of @samp{[[link][description]]} and @samp{link} is displayed instead of
3143 @samp{[[link]]}.  Links will be highlighted in the face @code{org-link},
3144 which by default is an underlined face.  You can directly edit the
3145 visible part of a link.  Note that this can be either the @samp{link}
3146 part (if there is no description) or the @samp{description} part.  To
3147 edit also the invisible @samp{link} part, use @kbd{C-c C-l} with the
3148 cursor on the link.
3150 If you place the cursor at the beginning or just behind the end of the
3151 displayed text and press @key{BACKSPACE}, you will remove the
3152 (invisible) bracket at that location.  This makes the link incomplete
3153 and the internals are again displayed as plain text.  Inserting the
3154 missing bracket hides the link internals again.  To show the
3155 internal structure of all links, use the menu entry
3156 @code{Org->Hyperlinks->Literal links}.
3158 @node Internal links, External links, Link format, Hyperlinks
3159 @section Internal links
3160 @cindex internal links
3161 @cindex links, internal
3162 @cindex targets, for links
3164 @cindex property, CUSTOM_ID
3165 If the link does not look like a URL, it is considered to be internal in the
3166 current file.  The most important case is a link like
3167 @samp{[[#my-custom-id]]} which will link to the entry with the
3168 @code{CUSTOM_ID} property @samp{my-custom-id}.  Such custom IDs are very good
3169 for HTML export (@pxref{HTML export}) where they produce pretty section
3170 links.  You are responsible yourself to make sure these custom IDs are unique
3171 in a file.
3173 Links such as @samp{[[My Target]]} or @samp{[[My Target][Find my target]]}
3174 lead to a text search in the current file.
3176 The link can be followed with @kbd{C-c C-o} when the cursor is on the link,
3177 or with a mouse click (@pxref{Handling links}).  Links to custom IDs will
3178 point to the corresponding headline.  The preferred match for a text link is
3179 a @i{dedicated target}: the same string in double angular brackets.  Targets
3180 may be located anywhere; sometimes it is convenient to put them into a
3181 comment line.  For example
3183 @example
3184 # <<My Target>>
3185 @end example
3187 @noindent In HTML export (@pxref{HTML export}), such targets will become
3188 named anchors for direct access through @samp{http} links@footnote{Note that
3189 text before the first headline is usually not exported, so the first such
3190 target should be after the first headline, or in the line directly before the
3191 first headline.}.
3193 If no dedicated target exists, Org will search for a headline that is exactly
3194 the link text but may also include a TODO keyword and tags@footnote{To insert
3195 a link targeting a headline, in-buffer completion can be used.  Just type a
3196 star followed by a few optional letters into the buffer and press
3197 @kbd{M-@key{TAB}}.  All headlines in the current buffer will be offered as
3198 completions.}.  In non-Org files, the search will look for the words in the
3199 link text.  In the above example the search would be for @samp{my target}.
3201 Following a link pushes a mark onto Org's own mark ring.  You can
3202 return to the previous position with @kbd{C-c &}.  Using this command
3203 several times in direct succession goes back to positions recorded
3204 earlier.
3206 @menu
3207 * Radio targets::               Make targets trigger links in plain text
3208 @end menu
3210 @node Radio targets,  , Internal links, Internal links
3211 @subsection Radio targets
3212 @cindex radio targets
3213 @cindex targets, radio
3214 @cindex links, radio targets
3216 Org can automatically turn any occurrences of certain target names
3217 in normal text into a link.  So without explicitly creating a link, the
3218 text connects to the target radioing its position.  Radio targets are
3219 enclosed by triple angular brackets.  For example, a target @samp{<<<My
3220 Target>>>} causes each occurrence of @samp{my target} in normal text to
3221 become activated as a link.  The Org file is scanned automatically
3222 for radio targets only when the file is first loaded into Emacs.  To
3223 update the target list during editing, press @kbd{C-c C-c} with the
3224 cursor on or at a target.
3226 @node External links, Handling links, Internal links, Hyperlinks
3227 @section External links
3228 @cindex links, external
3229 @cindex external links
3230 @cindex links, external
3231 @cindex Gnus links
3232 @cindex BBDB links
3233 @cindex IRC links
3234 @cindex URL links
3235 @cindex file links
3236 @cindex VM links
3237 @cindex RMAIL links
3238 @cindex WANDERLUST links
3239 @cindex MH-E links
3240 @cindex USENET links
3241 @cindex SHELL links
3242 @cindex Info links
3243 @cindex Elisp links
3245 Org supports links to files, websites, Usenet and email messages,
3246 BBDB database entries and links to both IRC conversations and their
3247 logs.  External links are URL-like locators.  They start with a short
3248 identifying string followed by a colon.  There can be no space after
3249 the colon.  The following list shows examples for each link type.
3251 @example
3252 http://www.astro.uva.nl/~dominik          @r{on the web}
3253 doi:10.1000/182                           @r{DOI for an electronic resource}
3254 file:/home/dominik/images/jupiter.jpg     @r{file, absolute path}
3255 /home/dominik/images/jupiter.jpg          @r{same as above}
3256 file:papers/last.pdf                      @r{file, relative path}
3257 ./papers/last.pdf                         @r{same as above}
3258 file:/myself@@some.where:papers/last.pdf   @r{file, path on remote machine}
3259 /myself@@some.where:papers/last.pdf        @r{same as above}
3260 file:sometextfile::NNN                    @r{file, jump to line number}
3261 file:projects.org                         @r{another Org file}
3262 file:projects.org::some words             @r{text search in Org file}@footnote{
3263 The actual behavior of the search will depend on the value of
3264 the variable @code{org-link-search-must-match-exact-headline}.  If its value
3265 is nil, then a fuzzy text search will be done.  If it is t, then only the
3266 exact headline will be matched.  If the value is @code{'query-to-create},
3267 then an exact headline will be searched; if it is not found, then the user
3268 will be queried to create it.}
3269 file:projects.org::*task title            @r{heading search in Org file}
3270 file+sys:/path/to/file                    @r{open via OS, like double-click}
3271 file+emacs:/path/to/file                  @r{force opening by Emacs}
3272 docview:papers/last.pdf::NNN              @r{open in doc-view mode at page}
3273 id:B7423F4D-2E8A-471B-8810-C40F074717E9   @r{Link to heading by ID}
3274 news:comp.emacs                           @r{Usenet link}
3275 mailto:adent@@galaxy.net                   @r{Mail link}
3276 vm:folder                                 @r{VM folder link}
3277 vm:folder#id                              @r{VM message link}
3278 vm://myself@@some.where.org/folder#id      @r{VM on remote machine}
3279 vm-imap:account:folder                    @r{VM IMAP folder link}
3280 vm-imap:account:folder#id                 @r{VM IMAP message link}
3281 wl:folder                                 @r{WANDERLUST folder link}
3282 wl:folder#id                              @r{WANDERLUST message link}
3283 mhe:folder                                @r{MH-E folder link}
3284 mhe:folder#id                             @r{MH-E message link}
3285 rmail:folder                              @r{RMAIL folder link}
3286 rmail:folder#id                           @r{RMAIL message link}
3287 gnus:group                                @r{Gnus group link}
3288 gnus:group#id                             @r{Gnus article link}
3289 bbdb:R.*Stallman                          @r{BBDB link (with regexp)}
3290 irc:/irc.com/#emacs/bob                   @r{IRC link}
3291 info:org#External links                   @r{Info node link}
3292 shell:ls *.org                            @r{A shell command}
3293 elisp:org-agenda                          @r{Interactive Elisp command}
3294 elisp:(find-file-other-frame "Elisp.org") @r{Elisp form to evaluate}
3295 @end example
3297 For customizing Org to add new link types @ref{Adding hyperlink types}.
3299 A link should be enclosed in double brackets and may contain a
3300 descriptive text to be displayed instead of the URL (@pxref{Link
3301 format}), for example:
3303 @example
3304 [[http://www.gnu.org/software/emacs/][GNU Emacs]]
3305 @end example
3307 @noindent
3308 If the description is a file name or URL that points to an image, HTML
3309 export (@pxref{HTML export}) will inline the image as a clickable
3310 button.  If there is no description at all and the link points to an
3311 image,
3312 that image will be inlined into the exported HTML file.
3314 @cindex square brackets, around links
3315 @cindex plain text external links
3316 Org also finds external links in the normal text and activates them
3317 as links.  If spaces must be part of the link (for example in
3318 @samp{bbdb:Richard Stallman}), or if you need to remove ambiguities
3319 about the end of the link, enclose them in square brackets.
3321 @node Handling links, Using links outside Org, External links, Hyperlinks
3322 @section Handling links
3323 @cindex links, handling
3325 Org provides methods to create a link in the correct syntax, to
3326 insert it into an Org file, and to follow the link.
3328 @table @kbd
3329 @orgcmd{C-c l,org-store-link}
3330 @cindex storing links
3331 Store a link to the current location.  This is a @emph{global} command (you
3332 must create the key binding yourself) which can be used in any buffer to
3333 create a link.  The link will be stored for later insertion into an Org
3334 buffer (see below).  What kind of link will be created depends on the current
3335 buffer:
3337 @b{Org mode buffers}@*
3338 For Org files, if there is a @samp{<<target>>} at the cursor, the link points
3339 to the target.  Otherwise it points to the current headline, which will also
3340 be the description@footnote{If the headline contains a timestamp, it will be
3341 removed from the link and result in a wrong link -- you should avoid putting
3342 timestamp in the headline.}.
3344 @vindex org-link-to-org-use-id
3345 @cindex property, CUSTOM_ID
3346 @cindex property, ID
3347 If the headline has a @code{CUSTOM_ID} property, a link to this custom ID
3348 will be stored.  In addition or alternatively (depending on the value of
3349 @code{org-link-to-org-use-id}), a globally unique @code{ID} property will be
3350 created and/or used to construct a link.  So using this command in Org
3351 buffers will potentially create two links: a human-readable from the custom
3352 ID, and one that is globally unique and works even if the entry is moved from
3353 file to file.  Later, when inserting the link, you need to decide which one
3354 to use.
3356 @b{Email/News clients: VM, Rmail, Wanderlust, MH-E, Gnus}@*
3357 Pretty much all Emacs mail clients are supported.  The link will point to the
3358 current article, or, in some GNUS buffers, to the group.  The description is
3359 constructed from the author and the subject.
3361 @b{Web browsers: W3 and W3M}@*
3362 Here the link will be the current URL, with the page title as description.
3364 @b{Contacts: BBDB}@*
3365 Links created in a BBDB buffer will point to the current entry.
3367 @b{Chat: IRC}@*
3368 @vindex org-irc-link-to-logs
3369 For IRC links, if you set the variable @code{org-irc-link-to-logs} to
3370 @code{t}, a @samp{file:/} style link to the relevant point in the logs for
3371 the current conversation is created.  Otherwise an @samp{irc:/} style link to
3372 the user/channel/server under the point will be stored.
3374 @b{Other files}@*
3375 For any other files, the link will point to the file, with a search string
3376 (@pxref{Search options}) pointing to the contents of the current line.  If
3377 there is an active region, the selected words will form the basis of the
3378 search string.  If the automatically created link is not working correctly or
3379 accurately enough, you can write custom functions to select the search string
3380 and to do the search for particular file types---see @ref{Custom searches}.
3381 The key binding @kbd{C-c l} is only a suggestion---see @ref{Installation}.
3383 @b{Agenda view}@*
3384 When the cursor is in an agenda view, the created link points to the
3385 entry referenced by the current line.
3388 @orgcmd{C-c C-l,org-insert-link}
3389 @cindex link completion
3390 @cindex completion, of links
3391 @cindex inserting links
3392 @vindex org-keep-stored-link-after-insertion
3393 Insert a link@footnote{ Note that you don't have to use this command to
3394 insert a link.  Links in Org are plain text, and you can type or paste them
3395 straight into the buffer.  By using this command, the links are automatically
3396 enclosed in double brackets, and you will be asked for the optional
3397 descriptive text.}.  This prompts for a link to be inserted into the buffer.
3398 You can just type a link, using text for an internal link, or one of the link
3399 type prefixes mentioned in the examples above.  The link will be inserted
3400 into the buffer@footnote{After insertion of a stored link, the link will be
3401 removed from the list of stored links.  To keep it in the list later use, use
3402 a triple @kbd{C-u} prefix argument to @kbd{C-c C-l}, or configure the option
3403 @code{org-keep-stored-link-after-insertion}.}, along with a descriptive text.
3404 If some text was selected when this command is called, the selected text
3405 becomes the default description.
3407 @b{Inserting stored links}@*
3408 All links stored during the
3409 current session are part of the history for this prompt, so you can access
3410 them with @key{up} and @key{down} (or @kbd{M-p/n}).
3412 @b{Completion support}@* Completion with @key{TAB} will help you to insert
3413 valid link prefixes like @samp{http:} or @samp{ftp:}, including the prefixes
3414 defined through link abbreviations (@pxref{Link abbreviations}).  If you
3415 press @key{RET} after inserting only the @var{prefix}, Org will offer
3416 specific completion support for some link types@footnote{This works by
3417 calling a special function @code{org-PREFIX-complete-link}.}  For
3418 example, if you type @kbd{file @key{RET}}, file name completion (alternative
3419 access: @kbd{C-u C-c C-l}, see below) will be offered, and after @kbd{bbdb
3420 @key{RET}} you can complete contact names.
3421 @orgkey C-u C-c C-l
3422 @cindex file name completion
3423 @cindex completion, of file names
3424 When @kbd{C-c C-l} is called with a @kbd{C-u} prefix argument, a link to
3425 a file will be inserted and you may use file name completion to select
3426 the name of the file.  The path to the file is inserted relative to the
3427 directory of the current Org file, if the linked file is in the current
3428 directory or in a sub-directory of it, or if the path is written relative
3429 to the current directory using @samp{../}.  Otherwise an absolute path
3430 is used, if possible with @samp{~/} for your home directory.  You can
3431 force an absolute path with two @kbd{C-u} prefixes.
3433 @item C-c C-l @ @r{(with cursor on existing link)}
3434 When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the
3435 link and description parts of the link.
3437 @cindex following links
3438 @orgcmd{C-c C-o,org-open-at-point}
3439 @vindex org-file-apps
3440 @vindex org-link-frame-setup
3441 Open link at point.  This will launch a web browser for URLs (using
3442 @command{browse-url-at-point}), run VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for
3443 the corresponding links, and execute the command in a shell link.  When the
3444 cursor is on an internal link, this command runs the corresponding search.
3445 When the cursor is on a TAG list in a headline, it creates the corresponding
3446 TAGS view.  If the cursor is on a timestamp, it compiles the agenda for that
3447 date.  Furthermore, it will visit text and remote files in @samp{file:} links
3448 with Emacs and select a suitable application for local non-text files.
3449 Classification of files is based on file extension only.  See option
3450 @code{org-file-apps}.  If you want to override the default application and
3451 visit the file with Emacs, use a @kbd{C-u} prefix.  If you want to avoid
3452 opening in Emacs, use a @kbd{C-u C-u} prefix.@*
3453 If the cursor is on a headline, but not on a link, offer all links in the
3454 headline and entry text.  If you want to setup the frame configuration for
3455 following links, customize @code{org-link-frame-setup}.
3457 @orgkey @key{RET}
3458 @vindex org-return-follows-link
3459 When @code{org-return-follows-link} is set, @kbd{@key{RET}} will also follow
3460 the link at point.
3462 @kindex mouse-2
3463 @kindex mouse-1
3464 @item mouse-2
3465 @itemx mouse-1
3466 On links, @kbd{mouse-2} will open the link just as @kbd{C-c C-o}
3467 would.  Under Emacs 22 and later, @kbd{mouse-1} will also follow a link.
3469 @kindex mouse-3
3470 @item mouse-3
3471 @vindex org-display-internal-link-with-indirect-buffer
3472 Like @kbd{mouse-2}, but force file links to be opened with Emacs, and
3473 internal links to be displayed in another window@footnote{See the
3474 variable @code{org-display-internal-link-with-indirect-buffer}}.
3476 @orgcmd{C-c C-x C-v,org-toggle-inline-images}
3477 @cindex inlining images
3478 @cindex images, inlining
3479 @vindex org-startup-with-inline-images
3480 @cindex @code{inlineimages}, STARTUP keyword
3481 @cindex @code{noinlineimages}, STARTUP keyword
3482 Toggle the inline display of linked images.  Normally this will only inline
3483 images that have no description part in the link, i.e.@: images that will also
3484 be inlined during export.  When called with a prefix argument, also display
3485 images that do have a link description.  You can ask for inline images to be
3486 displayed at startup by configuring the variable
3487 @code{org-startup-with-inline-images}@footnote{with corresponding
3488 @code{#+STARTUP} keywords @code{inlineimages} and @code{inlineimages}}.
3489 @orgcmd{C-c %,org-mark-ring-push}
3490 @cindex mark ring
3491 Push the current position onto the mark ring, to be able to return
3492 easily.  Commands following an internal link do this automatically.
3494 @orgcmd{C-c &,org-mark-ring-goto}
3495 @cindex links, returning to
3496 Jump back to a recorded position.  A position is recorded by the
3497 commands following internal links, and by @kbd{C-c %}.  Using this
3498 command several times in direct succession moves through a ring of
3499 previously recorded positions.
3501 @orgcmdkkcc{C-c C-x C-n,C-c C-x C-p,org-next-link,org-previous-link}
3502 @cindex links, finding next/previous
3503 Move forward/backward to the next link in the buffer.  At the limit of
3504 the buffer, the search fails once, and then wraps around.  The key
3505 bindings for this are really too long; you might want to bind this also
3506 to @kbd{C-n} and @kbd{C-p}
3507 @lisp
3508 (add-hook 'org-load-hook
3509   (lambda ()
3510     (define-key org-mode-map "\C-n" 'org-next-link)
3511     (define-key org-mode-map "\C-p" 'org-previous-link)))
3512 @end lisp
3513 @end table
3515 @node Using links outside Org, Link abbreviations, Handling links, Hyperlinks
3516 @section Using links outside Org
3518 You can insert and follow links that have Org syntax not only in
3519 Org, but in any Emacs buffer.  For this, you should create two
3520 global commands, like this (please select suitable global keys
3521 yourself):
3523 @lisp
3524 (global-set-key "\C-c L" 'org-insert-link-global)
3525 (global-set-key "\C-c o" 'org-open-at-point-global)
3526 @end lisp
3528 @node Link abbreviations, Search options, Using links outside Org, Hyperlinks
3529 @section Link abbreviations
3530 @cindex link abbreviations
3531 @cindex abbreviation, links
3533 Long URLs can be cumbersome to type, and often many similar links are
3534 needed in a document.  For this you can use link abbreviations.  An
3535 abbreviated link looks like this
3537 @example
3538 [[linkword:tag][description]]
3539 @end example
3541 @noindent
3542 @vindex org-link-abbrev-alist
3543 where the tag is optional.
3544 The @i{linkword} must be a word, starting with a letter, followed by
3545 letters, numbers, @samp{-}, and @samp{_}.  Abbreviations are resolved
3546 according to the information in the variable @code{org-link-abbrev-alist}
3547 that relates the linkwords to replacement text.  Here is an example:
3549 @smalllisp
3550 @group
3551 (setq org-link-abbrev-alist
3552   '(("bugzilla" . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
3553     ("google"   . "http://www.google.com/search?q=")
3554     ("gmap"     . "http://maps.google.com/maps?q=%s")
3555     ("omap"     . "http://nominatim.openstreetmap.org/search?q=%s&polygon=1")
3556     ("ads"      . "http://adsabs.harvard.edu/cgi-bin/nph-abs_connect?author=%s&db_key=AST")))
3557 @end group
3558 @end smalllisp
3560 If the replacement text contains the string @samp{%s}, it will be
3561 replaced with the tag.  Otherwise the tag will be appended to the string
3562 in order to create the link.  You may also specify a function that will
3563 be called with the tag as the only argument to create the link.
3565 With the above setting, you could link to a specific bug with
3566 @code{[[bugzilla:129]]}, search the web for @samp{OrgMode} with
3567 @code{[[google:OrgMode]]}, show the map location of the Free Software
3568 Foundation @code{[[gmap:51 Franklin Street, Boston]]} or of Carsten office
3569 @code{[[omap:Science Park 904, Amsterdam, The Netherlands]]} and find out
3570 what the Org author is doing besides Emacs hacking with
3571 @code{[[ads:Dominik,C]]}.
3573 If you need special abbreviations just for a single Org buffer, you
3574 can define them in the file with
3576 @cindex #+LINK
3577 @example
3578 #+LINK: bugzilla  http://10.1.2.9/bugzilla/show_bug.cgi?id=
3579 #+LINK: google    http://www.google.com/search?q=%s
3580 @end example
3582 @noindent
3583 In-buffer completion (@pxref{Completion}) can be used after @samp{[} to
3584 complete link abbreviations.  You may also define a function
3585 @code{org-PREFIX-complete-link} that implements special (e.g.@: completion)
3586 support for inserting such a link with @kbd{C-c C-l}.  Such a function should
3587 not accept any arguments, and return the full link with prefix.
3589 @node Search options, Custom searches, Link abbreviations, Hyperlinks
3590 @section Search options in file links
3591 @cindex search option in file links
3592 @cindex file links, searching
3594 File links can contain additional information to make Emacs jump to a
3595 particular location in the file when following a link.  This can be a
3596 line number or a search option after a double@footnote{For backward
3597 compatibility, line numbers can also follow a single colon.} colon.  For
3598 example, when the command @kbd{C-c l} creates a link (@pxref{Handling
3599 links}) to a file, it encodes the words in the current line as a search
3600 string that can be used to find this line back later when following the
3601 link with @kbd{C-c C-o}.
3603 Here is the syntax of the different ways to attach a search to a file
3604 link, together with an explanation:
3606 @example
3607 [[file:~/code/main.c::255]]
3608 [[file:~/xx.org::My Target]]
3609 [[file:~/xx.org::*My Target]]
3610 [[file:~/xx.org::#my-custom-id]]
3611 [[file:~/xx.org::/regexp/]]
3612 @end example
3614 @table @code
3615 @item 255
3616 Jump to line 255.
3617 @item My Target
3618 Search for a link target @samp{<<My Target>>}, or do a text search for
3619 @samp{my target}, similar to the search in internal links, see
3620 @ref{Internal links}.  In HTML export (@pxref{HTML export}), such a file
3621 link will become a HTML reference to the corresponding named anchor in
3622 the linked file.
3623 @item *My Target
3624 In an Org file, restrict search to headlines.
3625 @item #my-custom-id
3626 Link to a heading with a @code{CUSTOM_ID} property
3627 @item /regexp/
3628 Do a regular expression search for @code{regexp}.  This uses the Emacs
3629 command @code{occur} to list all matches in a separate window.  If the
3630 target file is in Org mode, @code{org-occur} is used to create a
3631 sparse tree with the matches.
3632 @c If the target file is a directory,
3633 @c @code{grep} will be used to search all files in the directory.
3634 @end table
3636 As a degenerate case, a file link with an empty file name can be used
3637 to search the current file.  For example, @code{[[file:::find me]]} does
3638 a search for @samp{find me} in the current file, just as
3639 @samp{[[find me]]} would.
3641 @node Custom searches,  , Search options, Hyperlinks
3642 @section Custom Searches
3643 @cindex custom search strings
3644 @cindex search strings, custom
3646 The default mechanism for creating search strings and for doing the
3647 actual search related to a file link may not work correctly in all
3648 cases.  For example, Bib@TeX{} database files have many entries like
3649 @samp{year="1993"} which would not result in good search strings,
3650 because the only unique identification for a Bib@TeX{} entry is the
3651 citation key.
3653 @vindex org-create-file-search-functions
3654 @vindex org-execute-file-search-functions
3655 If you come across such a problem, you can write custom functions to set
3656 the right search string for a particular file type, and to do the search
3657 for the string in the file.  Using @code{add-hook}, these functions need
3658 to be added to the hook variables
3659 @code{org-create-file-search-functions} and
3660 @code{org-execute-file-search-functions}.  See the docstring for these
3661 variables for more information.  Org actually uses this mechanism
3662 for Bib@TeX{} database files, and you can use the corresponding code as
3663 an implementation example.  See the file @file{org-bibtex.el}.
3665 @node TODO Items, Tags, Hyperlinks, Top
3666 @chapter TODO items
3667 @cindex TODO items
3669 Org mode does not maintain TODO lists as separate documents@footnote{Of
3670 course, you can make a document that contains only long lists of TODO items,
3671 but this is not required.}.  Instead, TODO items are an integral part of the
3672 notes file, because TODO items usually come up while taking notes!  With Org
3673 mode, simply mark any entry in a tree as being a TODO item.  In this way,
3674 information is not duplicated, and the entire context from which the TODO
3675 item emerged is always present.
3677 Of course, this technique for managing TODO items scatters them
3678 throughout your notes file.  Org mode compensates for this by providing
3679 methods to give you an overview of all the things that you have to do.
3681 @menu
3682 * TODO basics::                 Marking and displaying TODO entries
3683 * TODO extensions::             Workflow and assignments
3684 * Progress logging::            Dates and notes for progress
3685 * Priorities::                  Some things are more important than others
3686 * Breaking down tasks::         Splitting a task into manageable pieces
3687 * Checkboxes::                  Tick-off lists
3688 @end menu
3690 @node TODO basics, TODO extensions, TODO Items, TODO Items
3691 @section Basic TODO functionality
3693 Any headline becomes a TODO item when it starts with the word
3694 @samp{TODO}, for example:
3696 @example
3697 *** TODO Write letter to Sam Fortune
3698 @end example
3700 @noindent
3701 The most important commands to work with TODO entries are:
3703 @table @kbd
3704 @orgcmd{C-c C-t,org-todo}
3705 @cindex cycling, of TODO states
3706 Rotate the TODO state of the current item among
3708 @example
3709 ,-> (unmarked) -> TODO -> DONE --.
3710 '--------------------------------'
3711 @end example
3713 The same rotation can also be done ``remotely'' from the timeline and
3714 agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
3716 @orgkey{C-u C-c C-t}
3717 Select a specific keyword using completion or (if it has been set up)
3718 the fast selection interface.  For the latter, you need to assign keys
3719 to TODO states, see @ref{Per-file keywords}, and @ref{Setting tags}, for
3720 more information.
3722 @kindex S-@key{right}
3723 @kindex S-@key{left}
3724 @item S-@key{right} @ @r{/} @ S-@key{left}
3725 @vindex org-treat-S-cursor-todo-selection-as-state-change
3726 Select the following/preceding TODO state, similar to cycling.  Useful
3727 mostly if more than two TODO states are possible (@pxref{TODO
3728 extensions}).  See also @ref{Conflicts}, for a discussion of the interaction
3729 with @code{shift-selection-mode}.  See also the variable
3730 @code{org-treat-S-cursor-todo-selection-as-state-change}.
3731 @orgcmd{C-c / t,org-show-todo-key}
3732 @cindex sparse tree, for TODO
3733 @vindex org-todo-keywords
3734 View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}).  Folds the
3735 entire buffer, but shows all TODO items (with not-DONE state) and the
3736 headings hierarchy above them.  With a prefix argument (or by using @kbd{C-c
3737 / T}), search for a specific TODO.  You will be prompted for the keyword, and
3738 you can also give a list of keywords like @code{KWD1|KWD2|...} to list
3739 entries that match any one of these keywords.  With a numeric prefix argument
3740 N, show the tree for the Nth keyword in the variable
3741 @code{org-todo-keywords}.  With two prefix arguments, find all TODO states,
3742 both un-done and done.
3743 @orgcmd{C-c a t,org-todo-list}
3744 Show the global TODO list.  Collects the TODO items (with not-DONE states)
3745 from all agenda files (@pxref{Agenda Views}) into a single buffer.  The new
3746 buffer will be in @code{agenda-mode}, which provides commands to examine and
3747 manipulate the TODO entries from the new buffer (@pxref{Agenda commands}).
3748 @xref{Global TODO list}, for more information.
3749 @orgcmd{S-M-@key{RET},org-insert-todo-heading}
3750 Insert a new TODO entry below the current one.
3751 @end table
3753 @noindent
3754 @vindex org-todo-state-tags-triggers
3755 Changing a TODO state can also trigger tag changes.  See the docstring of the
3756 option @code{org-todo-state-tags-triggers} for details.
3758 @node TODO extensions, Progress logging, TODO basics, TODO Items
3759 @section Extended use of TODO keywords
3760 @cindex extended TODO keywords
3762 @vindex org-todo-keywords
3763 By default, marked TODO entries have one of only two states: TODO and
3764 DONE.  Org mode allows you to classify TODO items in more complex ways
3765 with @emph{TODO keywords} (stored in @code{org-todo-keywords}).  With
3766 special setup, the TODO keyword system can work differently in different
3767 files.
3769 Note that @i{tags} are another way to classify headlines in general and
3770 TODO items in particular (@pxref{Tags}).
3772 @menu
3773 * Workflow states::             From TODO to DONE in steps
3774 * TODO types::                  I do this, Fred does the rest
3775 * Multiple sets in one file::   Mixing it all, and still finding your way
3776 * Fast access to TODO states::  Single letter selection of a state
3777 * Per-file keywords::           Different files, different requirements
3778 * Faces for TODO keywords::     Highlighting states
3779 * TODO dependencies::           When one task needs to wait for others
3780 @end menu
3782 @node Workflow states, TODO types, TODO extensions, TODO extensions
3783 @subsection TODO keywords as workflow states
3784 @cindex TODO workflow
3785 @cindex workflow states as TODO keywords
3787 You can use TODO keywords to indicate different @emph{sequential} states
3788 in the process of working on an item, for example@footnote{Changing
3789 this variable only becomes effective after restarting Org mode in a
3790 buffer.}:
3792 @lisp
3793 (setq org-todo-keywords
3794   '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
3795 @end lisp
3797 The vertical bar separates the TODO keywords (states that @emph{need
3798 action}) from the DONE states (which need @emph{no further action}).  If
3799 you don't provide the separator bar, the last state is used as the DONE
3800 state.
3801 @cindex completion, of TODO keywords
3802 With this setup, the command @kbd{C-c C-t} will cycle an entry from TODO
3803 to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED.  You may
3804 also use a numeric prefix argument to quickly select a specific state.  For
3805 example @kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
3806 Or you can use @kbd{S-@key{left}} to go backward through the sequence.  If you
3807 define many keywords, you can use in-buffer completion
3808 (@pxref{Completion}) or even a special one-key selection scheme
3809 (@pxref{Fast access to TODO states}) to insert these words into the
3810 buffer.  Changing a TODO state can be logged with a timestamp, see
3811 @ref{Tracking TODO state changes}, for more information.
3813 @node TODO types, Multiple sets in one file, Workflow states, TODO extensions
3814 @subsection TODO keywords as types
3815 @cindex TODO types
3816 @cindex names as TODO keywords
3817 @cindex types as TODO keywords
3819 The second possibility is to use TODO keywords to indicate different
3820 @emph{types} of action items.  For example, you might want to indicate
3821 that items are for ``work'' or ``home''.  Or, when you work with several
3822 people on a single project, you might want to assign action items
3823 directly to persons, by using their names as TODO keywords.  This would
3824 be set up like this:
3826 @lisp
3827 (setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
3828 @end lisp
3830 In this case, different keywords do not indicate a sequence, but rather
3831 different types.  So the normal work flow would be to assign a task to a
3832 person, and later to mark it DONE.  Org mode supports this style by adapting
3833 the workings of the command @kbd{C-c C-t}@footnote{This is also true for the
3834 @kbd{t} command in the timeline and agenda buffers.}.  When used several
3835 times in succession, it will still cycle through all names, in order to first
3836 select the right type for a task.  But when you return to the item after some
3837 time and execute @kbd{C-c C-t} again, it will switch from any name directly
3838 to DONE.  Use prefix arguments or completion to quickly select a specific
3839 name.  You can also review the items of a specific TODO type in a sparse tree
3840 by using a numeric prefix to @kbd{C-c / t}.  For example, to see all things
3841 Lucy has to do, you would use @kbd{C-3 C-c / t}.  To collect Lucy's items
3842 from all agenda files into a single buffer, you would use the numeric prefix
3843 argument as well when creating the global TODO list: @kbd{C-3 C-c a t}.
3845 @node Multiple sets in one file, Fast access to TODO states, TODO types, TODO extensions
3846 @subsection Multiple keyword sets in one file
3847 @cindex TODO keyword sets
3849 Sometimes you may want to use different sets of TODO keywords in
3850 parallel.  For example, you may want to have the basic
3851 @code{TODO}/@code{DONE}, but also a workflow for bug fixing, and a
3852 separate state indicating that an item has been canceled (so it is not
3853 DONE, but also does not require action).  Your setup would then look
3854 like this:
3856 @lisp
3857 (setq org-todo-keywords
3858       '((sequence "TODO" "|" "DONE")
3859         (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
3860         (sequence "|" "CANCELED")))
3861 @end lisp
3863 The keywords should all be different, this helps Org mode to keep track
3864 of which subsequence should be used for a given entry.  In this setup,
3865 @kbd{C-c C-t} only operates within a subsequence, so it switches from
3866 @code{DONE} to (nothing) to @code{TODO}, and from @code{FIXED} to
3867 (nothing) to @code{REPORT}.  Therefore you need a mechanism to initially
3868 select the correct sequence.  Besides the obvious ways like typing a
3869 keyword or using completion, you may also apply the following commands:
3871 @table @kbd
3872 @kindex C-S-@key{right}
3873 @kindex C-S-@key{left}
3874 @kindex C-u C-u C-c C-t
3875 @item C-u C-u C-c C-t
3876 @itemx C-S-@key{right}
3877 @itemx C-S-@key{left}
3878 These keys jump from one TODO subset to the next.  In the above example,
3879 @kbd{C-u C-u C-c C-t} or @kbd{C-S-@key{right}} would jump from @code{TODO} or
3880 @code{DONE} to @code{REPORT}, and any of the words in the second row to
3881 @code{CANCELED}.  Note that the @kbd{C-S-} key binding conflict with
3882 @code{shift-selection-mode} (@pxref{Conflicts}).
3883 @kindex S-@key{right}
3884 @kindex S-@key{left}
3885 @item S-@key{right}
3886 @itemx S-@key{left}
3887 @kbd{S-@key{<left>}} and @kbd{S-@key{<right>}} and walk through @emph{all}
3888 keywords from all sets, so for example @kbd{S-@key{<right>}} would switch
3889 from @code{DONE} to @code{REPORT} in the example above.  See also
3890 @ref{Conflicts}, for a discussion of the interaction with
3891 @code{shift-selection-mode}.
3892 @end table
3894 @node Fast access to TODO states, Per-file keywords, Multiple sets in one file, TODO extensions
3895 @subsection Fast access to TODO states
3897 If you would like to quickly change an entry to an arbitrary TODO state
3898 instead of cycling through the states, you can set up keys for
3899 single-letter access to the states.  This is done by adding the section
3900 key after each keyword, in parentheses.  For example:
3902 @lisp
3903 (setq org-todo-keywords
3904       '((sequence "TODO(t)" "|" "DONE(d)")
3905         (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
3906         (sequence "|" "CANCELED(c)")))
3907 @end lisp
3909 @vindex org-fast-tag-selection-include-todo
3910 If you then press @kbd{C-c C-t} followed by the selection key, the entry
3911 will be switched to this state.  @kbd{SPC} can be used to remove any TODO
3912 keyword from an entry.@footnote{Check also the variable
3913 @code{org-fast-tag-selection-include-todo}, it allows you to change the TODO
3914 state through the tags interface (@pxref{Setting tags}), in case you like to
3915 mingle the two concepts.  Note that this means you need to come up with
3916 unique keys across both sets of keywords.}
3918 @node Per-file keywords, Faces for TODO keywords, Fast access to TODO states, TODO extensions
3919 @subsection Setting up keywords for individual files
3920 @cindex keyword options
3921 @cindex per-file keywords
3922 @cindex #+TODO
3923 @cindex #+TYP_TODO
3924 @cindex #+SEQ_TODO
3926 It can be very useful to use different aspects of the TODO mechanism in
3927 different files.  For file-local settings, you need to add special lines
3928 to the file which set the keywords and interpretation for that file
3929 only.  For example, to set one of the two examples discussed above, you
3930 need one of the following lines, starting in column zero anywhere in the
3931 file:
3933 @example
3934 #+TODO: TODO FEEDBACK VERIFY | DONE CANCELED
3935 @end example
3936 @noindent (you may also write @code{#+SEQ_TODO} to be explicit about the
3937 interpretation, but it means the same as @code{#+TODO}), or
3938 @example
3939 #+TYP_TODO: Fred Sara Lucy Mike | DONE
3940 @end example
3942 A setup for using several sets in parallel would be:
3944 @example
3945 #+TODO: TODO | DONE
3946 #+TODO: REPORT BUG KNOWNCAUSE | FIXED
3947 #+TODO: | CANCELED
3948 @end example
3950 @cindex completion, of option keywords
3951 @kindex M-@key{TAB}
3952 @noindent To make sure you are using the correct keyword, type
3953 @samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
3955 @cindex DONE, final TODO keyword
3956 Remember that the keywords after the vertical bar (or the last keyword
3957 if no bar is there) must always mean that the item is DONE (although you
3958 may use a different word).  After changing one of these lines, use
3959 @kbd{C-c C-c} with the cursor still in the line to make the changes
3960 known to Org mode@footnote{Org mode parses these lines only when
3961 Org mode is activated after visiting a file.  @kbd{C-c C-c} with the
3962 cursor in a line starting with @samp{#+} is simply restarting Org mode
3963 for the current buffer.}.
3965 @node Faces for TODO keywords, TODO dependencies, Per-file keywords, TODO extensions
3966 @subsection Faces for TODO keywords
3967 @cindex faces, for TODO keywords
3969 @vindex org-todo @r{(face)}
3970 @vindex org-done @r{(face)}
3971 @vindex org-todo-keyword-faces
3972 Org mode highlights TODO keywords with special faces: @code{org-todo}
3973 for keywords indicating that an item still has to be acted upon, and
3974 @code{org-done} for keywords indicating that an item is finished.  If
3975 you are using more than 2 different states, you might want to use
3976 special faces for some of them.  This can be done using the variable
3977 @code{org-todo-keyword-faces}.  For example:
3979 @lisp
3980 @group
3981 (setq org-todo-keyword-faces
3982       '(("TODO" . org-warning) ("STARTED" . "yellow")
3983         ("CANCELED" . (:foreground "blue" :weight bold))))
3984 @end group
3985 @end lisp
3987 While using a list with face properties as shown for CANCELED @emph{should}
3988 work, this does not always seem to be the case.  If necessary, define a
3989 special face and use that.  A string is interpreted as a color.  The variable
3990 @code{org-faces-easy-properties} determines if that color is interpreted as a
3991 foreground or a background color.
3993 @node TODO dependencies,  , Faces for TODO keywords, TODO extensions
3994 @subsection TODO dependencies
3995 @cindex TODO dependencies
3996 @cindex dependencies, of TODO states
3998 @vindex org-enforce-todo-dependencies
3999 @cindex property, ORDERED
4000 The structure of Org files (hierarchy and lists) makes it easy to define TODO
4001 dependencies.  Usually, a parent TODO task should not be marked DONE until
4002 all subtasks (defined as children tasks) are marked as DONE.  And sometimes
4003 there is a logical sequence to a number of (sub)tasks, so that one task
4004 cannot be acted upon before all siblings above it are done.  If you customize
4005 the variable @code{org-enforce-todo-dependencies}, Org will block entries
4006 from changing state to DONE while they have children that are not DONE.
4007 Furthermore, if an entry has a property @code{ORDERED}, each of its children
4008 will be blocked until all earlier siblings are marked DONE.  Here is an
4009 example:
4011 @example
4012 * TODO Blocked until (two) is done
4013 ** DONE one
4014 ** TODO two
4016 * Parent
4017   :PROPERTIES:
4018   :ORDERED: t
4019   :END:
4020 ** TODO a
4021 ** TODO b, needs to wait for (a)
4022 ** TODO c, needs to wait for (a) and (b)
4023 @end example
4025 @table @kbd
4026 @orgcmd{C-c C-x o,org-toggle-ordered-property}
4027 @vindex org-track-ordered-property-with-tag
4028 @cindex property, ORDERED
4029 Toggle the @code{ORDERED} property of the current entry.  A property is used
4030 for this behavior because this should be local to the current entry, not
4031 inherited like a tag.  However, if you would like to @i{track} the value of
4032 this property with a tag for better visibility, customize the variable
4033 @code{org-track-ordered-property-with-tag}.
4034 @orgkey{C-u C-u C-u C-c C-t}
4035 Change TODO state, circumventing any state blocking.
4036 @end table
4038 @vindex org-agenda-dim-blocked-tasks
4039 If you set the variable @code{org-agenda-dim-blocked-tasks}, TODO entries
4040 that cannot be closed because of such dependencies will be shown in a dimmed
4041 font or even made invisible in agenda views (@pxref{Agenda Views}).
4043 @cindex checkboxes and TODO dependencies
4044 @vindex org-enforce-todo-dependencies
4045 You can also block changes of TODO states by looking at checkboxes
4046 (@pxref{Checkboxes}).  If you set the variable
4047 @code{org-enforce-todo-checkbox-dependencies}, an entry that has unchecked
4048 checkboxes will be blocked from switching to DONE.
4050 If you need more complex dependency structures, for example dependencies
4051 between entries in different trees or files, check out the contributed
4052 module @file{org-depend.el}.
4054 @page
4055 @node Progress logging, Priorities, TODO extensions, TODO Items
4056 @section Progress logging
4057 @cindex progress logging
4058 @cindex logging, of progress
4060 Org mode can automatically record a timestamp and possibly a note when
4061 you mark a TODO item as DONE, or even each time you change the state of
4062 a TODO item.  This system is highly configurable, settings can be on a
4063 per-keyword basis and can be localized to a file or even a subtree.  For
4064 information on how to clock working time for a task, see @ref{Clocking
4065 work time}.
4067 @menu
4068 * Closing items::               When was this entry marked DONE?
4069 * Tracking TODO state changes::  When did the status change?
4070 * Tracking your habits::        How consistent have you been?
4071 @end menu
4073 @node Closing items, Tracking TODO state changes, Progress logging, Progress logging
4074 @subsection Closing items
4076 The most basic logging is to keep track of @emph{when} a certain TODO
4077 item was finished.  This is achieved with@footnote{The corresponding
4078 in-buffer setting is: @code{#+STARTUP: logdone}}
4080 @lisp
4081 (setq org-log-done 'time)
4082 @end lisp
4084 @noindent
4085 Then each time you turn an entry from a TODO (not-done) state into any
4086 of the DONE states, a line @samp{CLOSED: [timestamp]} will be inserted
4087 just after the headline.  If you turn the entry back into a TODO item
4088 through further state cycling, that line will be removed again.  If you
4089 want to record a note along with the timestamp, use@footnote{The
4090 corresponding in-buffer setting is: @code{#+STARTUP: lognotedone}}
4092 @lisp
4093 (setq org-log-done 'note)
4094 @end lisp
4096 @noindent
4097 You will then be prompted for a note, and that note will be stored below
4098 the entry with a @samp{Closing Note} heading.
4100 In the timeline (@pxref{Timeline}) and in the agenda
4101 (@pxref{Weekly/daily agenda}), you can then use the @kbd{l} key to
4102 display the TODO items with a @samp{CLOSED} timestamp on each day,
4103 giving you an overview of what has been done.
4105 @node Tracking TODO state changes, Tracking your habits, Closing items, Progress logging
4106 @subsection Tracking TODO state changes
4107 @cindex drawer, for state change recording
4109 @vindex org-log-states-order-reversed
4110 @vindex org-log-into-drawer
4111 @cindex property, LOG_INTO_DRAWER
4112 When TODO keywords are used as workflow states (@pxref{Workflow states}), you
4113 might want to keep track of when a state change occurred and maybe take a
4114 note about this change.  You can either record just a timestamp, or a
4115 time-stamped note for a change.  These records will be inserted after the
4116 headline as an itemized list, newest first@footnote{See the variable
4117 @code{org-log-states-order-reversed}}.  When taking a lot of notes, you might
4118 want to get the notes out of the way into a drawer (@pxref{Drawers}).
4119 Customize the variable @code{org-log-into-drawer} to get this behavior---the
4120 recommended drawer for this is called @code{LOGBOOK}@footnote{Note that the
4121 @code{LOGBOOK} drawer is unfolded when pressing @key{SPC} in the agenda to
4122 show an entry---use @key{C-u SPC} to keep it folded here}.  You can also
4123 overrule the setting of this variable for a subtree by setting a
4124 @code{LOG_INTO_DRAWER} property.
4126 Since it is normally too much to record a note for every state, Org mode
4127 expects configuration on a per-keyword basis for this.  This is achieved by
4128 adding special markers @samp{!} (for a timestamp) or @samp{@@} (for a note
4129 with timestamp) in parentheses after each keyword.  For example, with the
4130 setting
4132 @lisp
4133 (setq org-todo-keywords
4134   '((sequence "TODO(t)" "WAIT(w@@/!)" "|" "DONE(d!)" "CANCELED(c@@)")))
4135 @end lisp
4137 To record a timestamp without a note for TODO keywords configured with
4138 @samp{@@}, just type @kbd{C-c C-c} to enter a blank note when prompted.
4140 @noindent
4141 @vindex org-log-done
4142 you not only define global TODO keywords and fast access keys, but also
4143 request that a time is recorded when the entry is set to
4144 DONE@footnote{It is possible that Org mode will record two timestamps
4145 when you are using both @code{org-log-done} and state change logging.
4146 However, it will never prompt for two notes---if you have configured
4147 both, the state change recording note will take precedence and cancel
4148 the @samp{Closing Note}.}, and that a note is recorded when switching to
4149 WAIT or CANCELED.  The setting for WAIT is even more special: the
4150 @samp{!} after the slash means that in addition to the note taken when
4151 entering the state, a timestamp should be recorded when @i{leaving} the
4152 WAIT state, if and only if the @i{target} state does not configure
4153 logging for entering it.  So it has no effect when switching from WAIT
4154 to DONE, because DONE is configured to record a timestamp only.  But
4155 when switching from WAIT back to TODO, the @samp{/!} in the WAIT
4156 setting now triggers a timestamp even though TODO has no logging
4157 configured.
4159 You can use the exact same syntax for setting logging preferences local
4160 to a buffer:
4161 @example
4162 #+TODO: TODO(t) WAIT(w@@/!) | DONE(d!) CANCELED(c@@)
4163 @end example
4165 @cindex property, LOGGING
4166 In order to define logging settings that are local to a subtree or a
4167 single item, define a LOGGING property in this entry.  Any non-empty
4168 LOGGING property resets all logging settings to nil.  You may then turn
4169 on logging for this specific tree using STARTUP keywords like
4170 @code{lognotedone} or @code{logrepeat}, as well as adding state specific
4171 settings like @code{TODO(!)}.  For example
4173 @example
4174 * TODO Log each state with only a time
4175   :PROPERTIES:
4176   :LOGGING: TODO(!) WAIT(!) DONE(!) CANCELED(!)
4177   :END:
4178 * TODO Only log when switching to WAIT, and when repeating
4179   :PROPERTIES:
4180   :LOGGING: WAIT(@@) logrepeat
4181   :END:
4182 * TODO No logging at all
4183   :PROPERTIES:
4184   :LOGGING: nil
4185   :END:
4186 @end example
4188 @node Tracking your habits,  , Tracking TODO state changes, Progress logging
4189 @subsection Tracking your habits
4190 @cindex habits
4192 Org has the ability to track the consistency of a special category of TODOs,
4193 called ``habits''.  A habit has the following properties:
4195 @enumerate
4196 @item
4197 You have enabled the @code{habits} module by customizing the variable
4198 @code{org-modules}.
4199 @item
4200 The habit is a TODO item, with a TODO keyword representing an open state.
4201 @item
4202 The property @code{STYLE} is set to the value @code{habit}.
4203 @item
4204 The TODO has a scheduled date, usually with a @code{.+} style repeat
4205 interval.  A @code{++} style may be appropriate for habits with time
4206 constraints, e.g., must be done on weekends, or a @code{+} style for an
4207 unusual habit that can have a backlog, e.g., weekly reports.
4208 @item
4209 The TODO may also have minimum and maximum ranges specified by using the
4210 syntax @samp{.+2d/3d}, which says that you want to do the task at least every
4211 three days, but at most every two days.
4212 @item
4213 You must also have state logging for the @code{DONE} state enabled, in order
4214 for historical data to be represented in the consistency graph.  If it is not
4215 enabled it is not an error, but the consistency graphs will be largely
4216 meaningless.
4217 @end enumerate
4219 To give you an idea of what the above rules look like in action, here's an
4220 actual habit with some history:
4222 @example
4223 ** TODO Shave
4224    SCHEDULED: <2009-10-17 Sat .+2d/4d>
4225    - State "DONE"       from "TODO"       [2009-10-15 Thu]
4226    - State "DONE"       from "TODO"       [2009-10-12 Mon]
4227    - State "DONE"       from "TODO"       [2009-10-10 Sat]
4228    - State "DONE"       from "TODO"       [2009-10-04 Sun]
4229    - State "DONE"       from "TODO"       [2009-10-02 Fri]
4230    - State "DONE"       from "TODO"       [2009-09-29 Tue]
4231    - State "DONE"       from "TODO"       [2009-09-25 Fri]
4232    - State "DONE"       from "TODO"       [2009-09-19 Sat]
4233    - State "DONE"       from "TODO"       [2009-09-16 Wed]
4234    - State "DONE"       from "TODO"       [2009-09-12 Sat]
4235    :PROPERTIES:
4236    :STYLE:    habit
4237    :LAST_REPEAT: [2009-10-19 Mon 00:36]
4238    :END:
4239 @end example
4241 What this habit says is: I want to shave at most every 2 days (given by the
4242 @code{SCHEDULED} date and repeat interval) and at least every 4 days.  If
4243 today is the 15th, then the habit first appears in the agenda on Oct 17,
4244 after the minimum of 2 days has elapsed, and will appear overdue on Oct 19,
4245 after four days have elapsed.
4247 What's really useful about habits is that they are displayed along with a
4248 consistency graph, to show how consistent you've been at getting that task
4249 done in the past.  This graph shows every day that the task was done over the
4250 past three weeks, with colors for each day.  The colors used are:
4252 @table @code
4253 @item Blue
4254 If the task wasn't to be done yet on that day.
4255 @item Green
4256 If the task could have been done on that day.
4257 @item Yellow
4258 If the task was going to be overdue the next day.
4259 @item Red
4260 If the task was overdue on that day.
4261 @end table
4263 In addition to coloring each day, the day is also marked with an asterisk if
4264 the task was actually done that day, and an exclamation mark to show where
4265 the current day falls in the graph.
4267 There are several configuration variables that can be used to change the way
4268 habits are displayed in the agenda.
4270 @table @code
4271 @item org-habit-graph-column
4272 The buffer column at which the consistency graph should be drawn.  This will
4273 overwrite any text in that column, so it is a good idea to keep your habits'
4274 titles brief and to the point.
4275 @item org-habit-preceding-days
4276 The amount of history, in days before today, to appear in consistency graphs.
4277 @item org-habit-following-days
4278 The number of days after today that will appear in consistency graphs.
4279 @item org-habit-show-habits-only-for-today
4280 If non-nil, only show habits in today's agenda view.  This is set to true by
4281 default.
4282 @end table
4284 Lastly, pressing @kbd{K} in the agenda buffer will cause habits to
4285 temporarily be disabled and they won't appear at all.  Press @kbd{K} again to
4286 bring them back.  They are also subject to tag filtering, if you have habits
4287 which should only be done in certain contexts, for example.
4289 @node Priorities, Breaking down tasks, Progress logging, TODO Items
4290 @section Priorities
4291 @cindex priorities
4293 If you use Org mode extensively, you may end up with enough TODO items that
4294 it starts to make sense to prioritize them.  Prioritizing can be done by
4295 placing a @emph{priority cookie} into the headline of a TODO item, like this
4297 @example
4298 *** TODO [#A] Write letter to Sam Fortune
4299 @end example
4301 @noindent
4302 @vindex org-priority-faces
4303 By default, Org mode supports three priorities: @samp{A}, @samp{B}, and
4304 @samp{C}.  @samp{A} is the highest priority.  An entry without a cookie is
4305 treated just like priority @samp{B}.  Priorities make a difference only for
4306 sorting in the agenda (@pxref{Weekly/daily agenda}); outside the agenda, they
4307 have no inherent meaning to Org mode.  The cookies can be highlighted with
4308 special faces by customizing the variable @code{org-priority-faces}.
4310 Priorities can be attached to any outline node; they do not need to be TODO
4311 items.
4313 @table @kbd
4314 @item @kbd{C-c ,}
4315 @kindex @kbd{C-c ,}
4316 @findex org-priority
4317 Set the priority of the current headline (@command{org-priority}).  The
4318 command prompts for a priority character @samp{A}, @samp{B} or @samp{C}.
4319 When you press @key{SPC} instead, the priority cookie is removed from the
4320 headline.  The priorities can also be changed ``remotely'' from the timeline
4321 and agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
4323 @orgcmdkkcc{S-@key{up},S-@key{down},org-priority-up,org-priority-down}
4324 @vindex org-priority-start-cycle-with-default
4325 Increase/decrease priority of current headline@footnote{See also the option
4326 @code{org-priority-start-cycle-with-default}.}.  Note that these keys are
4327 also used to modify timestamps (@pxref{Creating timestamps}).  See also
4328 @ref{Conflicts}, for a discussion of the interaction with
4329 @code{shift-selection-mode}.
4330 @end table
4332 @vindex org-highest-priority
4333 @vindex org-lowest-priority
4334 @vindex org-default-priority
4335 You can change the range of allowed priorities by setting the variables
4336 @code{org-highest-priority}, @code{org-lowest-priority}, and
4337 @code{org-default-priority}.  For an individual buffer, you may set
4338 these values (highest, lowest, default) like this (please make sure that
4339 the highest priority is earlier in the alphabet than the lowest
4340 priority):
4342 @cindex #+PRIORITIES
4343 @example
4344 #+PRIORITIES: A C B
4345 @end example
4347 @node Breaking down tasks, Checkboxes, Priorities, TODO Items
4348 @section Breaking tasks down into subtasks
4349 @cindex tasks, breaking down
4350 @cindex statistics, for TODO items
4352 @vindex org-agenda-todo-list-sublevels
4353 It is often advisable to break down large tasks into smaller, manageable
4354 subtasks.  You can do this by creating an outline tree below a TODO item,
4355 with detailed subtasks on the tree@footnote{To keep subtasks out of the
4356 global TODO list, see the @code{org-agenda-todo-list-sublevels}.}.  To keep
4357 the overview over the fraction of subtasks that are already completed, insert
4358 either @samp{[/]} or @samp{[%]} anywhere in the headline.  These cookies will
4359 be updated each time the TODO status of a child changes, or when pressing
4360 @kbd{C-c C-c} on the cookie.  For example:
4362 @example
4363 * Organize Party [33%]
4364 ** TODO Call people [1/2]
4365 *** TODO Peter
4366 *** DONE Sarah
4367 ** TODO Buy food
4368 ** DONE Talk to neighbor
4369 @end example
4371 @cindex property, COOKIE_DATA
4372 If a heading has both checkboxes and TODO children below it, the meaning of
4373 the statistics cookie become ambiguous.  Set the property
4374 @code{COOKIE_DATA} to either @samp{checkbox} or @samp{todo} to resolve
4375 this issue.
4377 @vindex org-hierarchical-todo-statistics
4378 If you would like to have the statistics cookie count any TODO entries in the
4379 subtree (not just direct children), configure the variable
4380 @code{org-hierarchical-todo-statistics}.  To do this for a single subtree,
4381 include the word @samp{recursive} into the value of the @code{COOKIE_DATA}
4382 property.
4384 @example
4385 * Parent capturing statistics [2/20]
4386   :PROPERTIES:
4387   :COOKIE_DATA: todo recursive
4388   :END:
4389 @end example
4391 If you would like a TODO entry to automatically change to DONE
4392 when all children are done, you can use the following setup:
4394 @example
4395 (defun org-summary-todo (n-done n-not-done)
4396   "Switch entry to DONE when all subentries are done, to TODO otherwise."
4397   (let (org-log-done org-log-states)   ; turn off logging
4398     (org-todo (if (= n-not-done 0) "DONE" "TODO"))))
4400 (add-hook 'org-after-todo-statistics-hook 'org-summary-todo)
4401 @end example
4404 Another possibility is the use of checkboxes to identify (a hierarchy of) a
4405 large number of subtasks (@pxref{Checkboxes}).
4408 @node Checkboxes,  , Breaking down tasks, TODO Items
4409 @section Checkboxes
4410 @cindex checkboxes
4412 @vindex org-list-automatic-rules
4413 Every item in a plain list@footnote{With the exception of description
4414 lists.  But you can allow it by modifying @code{org-list-automatic-rules}
4415 accordingly.} (@pxref{Plain lists}) can be made into a checkbox by starting
4416 it with the string @samp{[ ]}.  This feature is similar to TODO items
4417 (@pxref{TODO Items}), but is more lightweight.  Checkboxes are not included
4418 into the global TODO list, so they are often great to split a task into a
4419 number of simple steps.  Or you can use them in a shopping list.  To toggle a
4420 checkbox, use @kbd{C-c C-c}, or use the mouse (thanks to Piotr Zielinski's
4421 @file{org-mouse.el}).
4423 Here is an example of a checkbox list.
4425 @example
4426 * TODO Organize party [2/4]
4427   - [-] call people [1/3]
4428     - [ ] Peter
4429     - [X] Sarah
4430     - [ ] Sam
4431   - [X] order food
4432   - [ ] think about what music to play
4433   - [X] talk to the neighbors
4434 @end example
4436 Checkboxes work hierarchically, so if a checkbox item has children that
4437 are checkboxes, toggling one of the children checkboxes will make the
4438 parent checkbox reflect if none, some, or all of the children are
4439 checked.
4441 @cindex statistics, for checkboxes
4442 @cindex checkbox statistics
4443 @cindex property, COOKIE_DATA
4444 @vindex org-hierarchical-checkbox-statistics
4445 The @samp{[2/4]} and @samp{[1/3]} in the first and second line are cookies
4446 indicating how many checkboxes present in this entry have been checked off,
4447 and the total number of checkboxes present.  This can give you an idea on how
4448 many checkboxes remain, even without opening a folded entry.  The cookies can
4449 be placed into a headline or into (the first line of) a plain list item.
4450 Each cookie covers checkboxes of direct children structurally below the
4451 headline/item on which the cookie appears@footnote{Set the variable
4452 @code{org-hierarchical-checkbox-statistics} if you want such cookies to
4453 count all checkboxes below the cookie, not just those belonging to direct
4454 children.}.  You have to insert the cookie yourself by typing either
4455 @samp{[/]} or @samp{[%]}.  With @samp{[/]} you get an @samp{n out of m}
4456 result, as in the examples above.  With @samp{[%]} you get information about
4457 the percentage of checkboxes checked (in the above example, this would be
4458 @samp{[50%]} and @samp{[33%]}, respectively).  In a headline, a cookie can
4459 count either checkboxes below the heading or TODO states of children, and it
4460 will display whatever was changed last.  Set the property @code{COOKIE_DATA}
4461 to either @samp{checkbox} or @samp{todo} to resolve this issue.
4463 @cindex blocking, of checkboxes
4464 @cindex checkbox blocking
4465 @cindex property, ORDERED
4466 If the current outline node has an @code{ORDERED} property, checkboxes must
4467 be checked off in sequence, and an error will be thrown if you try to check
4468 off a box while there are unchecked boxes above it.
4470 @noindent The following commands work with checkboxes:
4472 @table @kbd
4473 @orgcmd{C-c C-c,org-toggle-checkbox}
4474 Toggle checkbox status or (with prefix arg) checkbox presence at point.
4475 With a single prefix argument, add an empty checkbox or remove the current
4476 one@footnote{`C-u C-c C-c' on the @emph{first} item of a list with no checkbox
4477 will add checkboxes to the rest of the list.}.  With a double prefix argument, set it to @samp{[-]}, which is
4478 considered to be an intermediate state.
4479 @orgcmd{C-c C-x C-b,org-toggle-checkbox}
4480 Toggle checkbox status or (with prefix arg) checkbox presence at point.  With
4481 double prefix argument, set it to @samp{[-]}, which is considered to be an
4482 intermediate state.
4483 @itemize @minus
4484 @item
4485 If there is an active region, toggle the first checkbox in the region
4486 and set all remaining boxes to the same status as the first.  With a prefix
4487 arg, add or remove the checkbox for all items in the region.
4488 @item
4489 If the cursor is in a headline, toggle checkboxes in the region between
4490 this headline and the next (so @emph{not} the entire subtree).
4491 @item
4492 If there is no active region, just toggle the checkbox at point.
4493 @end itemize
4494 @orgcmd{M-S-@key{RET},org-insert-todo-heading}
4495 Insert a new item with a checkbox.  This works only if the cursor is already
4496 in a plain list item (@pxref{Plain lists}).
4497 @orgcmd{C-c C-x o,org-toggle-ordered-property}
4498 @vindex org-track-ordered-property-with-tag
4499 @cindex property, ORDERED
4500 Toggle the @code{ORDERED} property of the entry, to toggle if checkboxes must
4501 be checked off in sequence.  A property is used for this behavior because
4502 this should be local to the current entry, not inherited like a tag.
4503 However, if you would like to @i{track} the value of this property with a tag
4504 for better visibility, customize the variable
4505 @code{org-track-ordered-property-with-tag}.
4506 @orgcmd{C-c #,org-update-statistics-cookies}
4507 Update the statistics cookie in the current outline entry.  When called with
4508 a @kbd{C-u} prefix, update the entire file.  Checkbox statistic cookies are
4509 updated automatically if you toggle checkboxes with @kbd{C-c C-c} and make
4510 new ones with @kbd{M-S-@key{RET}}.  TODO statistics cookies update when
4511 changing TODO states.  If you delete boxes/entries or add/change them by
4512 hand, use this command to get things back into sync.
4513 @end table
4515 @node Tags, Properties and Columns, TODO Items, Top
4516 @chapter Tags
4517 @cindex tags
4518 @cindex headline tagging
4519 @cindex matching, tags
4520 @cindex sparse tree, tag based
4522 An excellent way to implement labels and contexts for cross-correlating
4523 information is to assign @i{tags} to headlines.  Org mode has extensive
4524 support for tags.
4526 @vindex org-tag-faces
4527 Every headline can contain a list of tags; they occur at the end of the
4528 headline.  Tags are normal words containing letters, numbers, @samp{_}, and
4529 @samp{@@}.  Tags must be preceded and followed by a single colon, e.g.,
4530 @samp{:work:}.  Several tags can be specified, as in @samp{:work:urgent:}.
4531 Tags will by default be in bold face with the same color as the headline.
4532 You may specify special faces for specific tags using the variable
4533 @code{org-tag-faces}, in much the same way as you can for TODO keywords
4534 (@pxref{Faces for TODO keywords}).
4536 @menu
4537 * Tag inheritance::             Tags use the tree structure of the outline
4538 * Setting tags::                How to assign tags to a headline
4539 * Tag searches::                Searching for combinations of tags
4540 @end menu
4542 @node Tag inheritance, Setting tags, Tags, Tags
4543 @section Tag inheritance
4544 @cindex tag inheritance
4545 @cindex inheritance, of tags
4546 @cindex sublevels, inclusion into tags match
4548 @i{Tags} make use of the hierarchical structure of outline trees.  If a
4549 heading has a certain tag, all subheadings will inherit the tag as
4550 well.  For example, in the list
4552 @example
4553 * Meeting with the French group      :work:
4554 ** Summary by Frank                  :boss:notes:
4555 *** TODO Prepare slides for him      :action:
4556 @end example
4558 @noindent
4559 the final heading will have the tags @samp{:work:}, @samp{:boss:},
4560 @samp{:notes:}, and @samp{:action:} even though the final heading is not
4561 explicitly marked with those tags.  You can also set tags that all entries in
4562 a file should inherit just as if these tags were defined in a hypothetical
4563 level zero that surrounds the entire file.  Use a line like this@footnote{As
4564 with all these in-buffer settings, pressing @kbd{C-c C-c} activates any
4565 changes in the line.}:
4567 @cindex #+FILETAGS
4568 @example
4569 #+FILETAGS: :Peter:Boss:Secret:
4570 @end example
4572 @noindent
4573 @vindex org-use-tag-inheritance
4574 @vindex org-tags-exclude-from-inheritance
4575 To limit tag inheritance to specific tags, or to turn it off entirely, use
4576 the variables @code{org-use-tag-inheritance} and
4577 @code{org-tags-exclude-from-inheritance}.
4579 @vindex org-tags-match-list-sublevels
4580 When a headline matches during a tags search while tag inheritance is turned
4581 on, all the sublevels in the same tree will (for a simple match form) match
4582 as well@footnote{This is only true if the search does not involve more
4583 complex tests including properties (@pxref{Property searches}).}.  The list
4584 of matches may then become very long.  If you only want to see the first tags
4585 match in a subtree, configure the variable
4586 @code{org-tags-match-list-sublevels} (not recommended).
4588 @node Setting tags, Tag searches, Tag inheritance, Tags
4589 @section Setting tags
4590 @cindex setting tags
4591 @cindex tags, setting
4593 @kindex M-@key{TAB}
4594 Tags can simply be typed into the buffer at the end of a headline.
4595 After a colon, @kbd{M-@key{TAB}} offers completion on tags.  There is
4596 also a special command for inserting tags:
4598 @table @kbd
4599 @orgcmd{C-c C-q,org-set-tags-command}
4600 @cindex completion, of tags
4601 @vindex org-tags-column
4602 Enter new tags for the current headline.  Org mode will either offer
4603 completion or a special single-key interface for setting tags, see
4604 below.  After pressing @key{RET}, the tags will be inserted and aligned
4605 to @code{org-tags-column}.  When called with a @kbd{C-u} prefix, all
4606 tags in the current buffer will be aligned to that column, just to make
4607 things look nice.  TAGS are automatically realigned after promotion,
4608 demotion, and TODO state changes (@pxref{TODO basics}).
4609 @orgcmd{C-c C-c,org-set-tags-command}
4610 When the cursor is in a headline, this does the same as @kbd{C-c C-q}.
4611 @end table
4613 @vindex org-tag-alist
4614 Org supports tag insertion based on a @emph{list of tags}.  By
4615 default this list is constructed dynamically, containing all tags
4616 currently used in the buffer.  You may also globally specify a hard list
4617 of tags with the variable @code{org-tag-alist}.  Finally you can set
4618 the default tags for a given file with lines like
4620 @cindex #+TAGS
4621 @example
4622 #+TAGS: @@work @@home @@tennisclub
4623 #+TAGS: laptop car pc sailboat
4624 @end example
4626 If you have globally defined your preferred set of tags using the
4627 variable @code{org-tag-alist}, but would like to use a dynamic tag list
4628 in a specific file, add an empty TAGS option line to that file:
4630 @example
4631 #+TAGS:
4632 @end example
4634 @vindex org-tag-persistent-alist
4635 If you have a preferred set of tags that you would like to use in every file,
4636 in addition to those defined on a per-file basis by TAGS option lines, then
4637 you may specify a list of tags with the variable
4638 @code{org-tag-persistent-alist}.  You may turn this off on a per-file basis
4639 by adding a STARTUP option line to that file:
4641 @example
4642 #+STARTUP: noptag
4643 @end example
4645 By default Org mode uses the standard minibuffer completion facilities for
4646 entering tags.  However, it also implements another, quicker, tag selection
4647 method called @emph{fast tag selection}.  This allows you to select and
4648 deselect tags with just a single key press.  For this to work well you should
4649 assign unique letters to most of your commonly used tags.  You can do this
4650 globally by configuring the variable @code{org-tag-alist} in your
4651 @file{.emacs} file.  For example, you may find the need to tag many items in
4652 different files with @samp{:@@home:}.  In this case you can set something
4653 like:
4655 @lisp
4656 (setq org-tag-alist '(("@@work" . ?w) ("@@home" . ?h) ("laptop" . ?l)))
4657 @end lisp
4659 @noindent If the tag is only relevant to the file you are working on, then you
4660 can instead set the TAGS option line as:
4662 @example
4663 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t)  laptop(l)  pc(p)
4664 @end example
4666 @noindent The tags interface will show the available tags in a splash
4667 window.  If you want to start a new line after a specific tag, insert
4668 @samp{\n} into the tag list
4670 @example
4671 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t) \n laptop(l)  pc(p)
4672 @end example
4674 @noindent or write them in two lines:
4676 @example
4677 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t)
4678 #+TAGS: laptop(l)  pc(p)
4679 @end example
4681 @noindent
4682 You can also group together tags that are mutually exclusive by using
4683 braces, as in:
4685 @example
4686 #+TAGS: @{ @@work(w)  @@home(h)  @@tennisclub(t) @}  laptop(l)  pc(p)
4687 @end example
4689 @noindent you indicate that at most one of @samp{@@work}, @samp{@@home},
4690 and @samp{@@tennisclub} should be selected.  Multiple such groups are allowed.
4692 @noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
4693 these lines to activate any changes.
4695 @noindent
4696 To set these mutually exclusive groups in the variable @code{org-tags-alist},
4697 you must use the dummy tags @code{:startgroup} and @code{:endgroup} instead
4698 of the braces.  Similarly, you can use @code{:newline} to indicate a line
4699 break.  The previous example would be set globally by the following
4700 configuration:
4702 @lisp
4703 (setq org-tag-alist '((:startgroup . nil)
4704                       ("@@work" . ?w) ("@@home" . ?h)
4705                       ("@@tennisclub" . ?t)
4706                       (:endgroup . nil)
4707                       ("laptop" . ?l) ("pc" . ?p)))
4708 @end lisp
4710 If at least one tag has a selection key then pressing @kbd{C-c C-c} will
4711 automatically present you with a special interface, listing inherited tags,
4712 the tags of the current headline, and a list of all valid tags with
4713 corresponding keys@footnote{Keys will automatically be assigned to tags which
4714 have no configured keys.}.  In this interface, you can use the following
4715 keys:
4717 @table @kbd
4718 @item a-z...
4719 Pressing keys assigned to tags will add or remove them from the list of
4720 tags in the current line.  Selecting a tag in a group of mutually
4721 exclusive tags will turn off any other tags from that group.
4722 @kindex @key{TAB}
4723 @item @key{TAB}
4724 Enter a tag in the minibuffer, even if the tag is not in the predefined
4725 list.  You will be able to complete on all tags present in the buffer.
4726 You can also add several tags: just separate them with a comma.
4728 @kindex @key{SPC}
4729 @item @key{SPC}
4730 Clear all tags for this line.
4731 @kindex @key{RET}
4732 @item @key{RET}
4733 Accept the modified set.
4734 @item C-g
4735 Abort without installing changes.
4736 @item q
4737 If @kbd{q} is not assigned to a tag, it aborts like @kbd{C-g}.
4738 @item !
4739 Turn off groups of mutually exclusive tags.  Use this to (as an
4740 exception) assign several tags from such a group.
4741 @item C-c
4742 Toggle auto-exit after the next change (see below).
4743 If you are using expert mode, the first @kbd{C-c} will display the
4744 selection window.
4745 @end table
4747 @noindent
4748 This method lets you assign tags to a headline with very few keys.  With
4749 the above setup, you could clear the current tags and set @samp{@@home},
4750 @samp{laptop} and @samp{pc} tags with just the following keys: @kbd{C-c
4751 C-c @key{SPC} h l p @key{RET}}.  Switching from @samp{@@home} to
4752 @samp{@@work} would be done with @kbd{C-c C-c w @key{RET}} or
4753 alternatively with @kbd{C-c C-c C-c w}.  Adding the non-predefined tag
4754 @samp{Sarah} could be done with @kbd{C-c C-c @key{TAB} S a r a h
4755 @key{RET} @key{RET}}.
4757 @vindex org-fast-tag-selection-single-key
4758 If you find that most of the time you need only a single key press to
4759 modify your list of tags, set the variable
4760 @code{org-fast-tag-selection-single-key}.  Then you no longer have to
4761 press @key{RET} to exit fast tag selection---it will immediately exit
4762 after the first change.  If you then occasionally need more keys, press
4763 @kbd{C-c} to turn off auto-exit for the current tag selection process
4764 (in effect: start selection with @kbd{C-c C-c C-c} instead of @kbd{C-c
4765 C-c}).  If you set the variable to the value @code{expert}, the special
4766 window is not even shown for single-key tag selection, it comes up only
4767 when you press an extra @kbd{C-c}.
4769 @node Tag searches,  , Setting tags, Tags
4770 @section Tag searches
4771 @cindex tag searches
4772 @cindex searching for tags
4774 Once a system of tags has been set up, it can be used to collect related
4775 information into special lists.
4777 @table @kbd
4778 @orgcmdkkc{C-c / m,C-c \\,org-match-sparse-tree}
4779 Create a sparse tree with all headlines matching a tags search.  With a
4780 @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
4781 @orgcmd{C-c a m,org-tags-view}
4782 Create a global list of tag matches from all agenda files.
4783 @xref{Matching tags and properties}.
4784 @orgcmd{C-c a M,org-tags-view}
4785 @vindex org-tags-match-list-sublevels
4786 Create a global list of tag matches from all agenda files, but check
4787 only TODO items and force checking subitems (see variable
4788 @code{org-tags-match-list-sublevels}).
4789 @end table
4791 These commands all prompt for a match string which allows basic Boolean logic
4792 like @samp{+boss+urgent-project1}, to find entries with tags @samp{boss} and
4793 @samp{urgent}, but not @samp{project1}, or @samp{Kathy|Sally} to find entries
4794 which are tagged, like @samp{Kathy} or @samp{Sally}.  The full syntax of the search
4795 string is rich and allows also matching against TODO keywords, entry levels
4796 and properties.  For a complete description with many examples, see
4797 @ref{Matching tags and properties}.
4800 @node Properties and Columns, Dates and Times, Tags, Top
4801 @chapter Properties and columns
4802 @cindex properties
4804 A property is a key-value pair associated with an entry.  Properties can be
4805 set so they are associated with a single entry, with every entry in a tree,
4806 or with every entry in an Org mode file.
4808 There are two main applications for properties in Org mode.  First,
4809 properties are like tags, but with a value.  Imagine maintaining a file where
4810 you document bugs and plan releases for a piece of software.  Instead of
4811 using tags like @code{:release_1:}, @code{:release_2:}, you can use a
4812 property, say @code{:Release:}, that in different subtrees has different
4813 values, such as @code{1.0} or @code{2.0}.  Second, you can use properties to
4814 implement (very basic) database capabilities in an Org buffer.  Imagine
4815 keeping track of your music CDs, where properties could be things such as the
4816 album, artist, date of release, number of tracks, and so on.
4818 Properties can be conveniently edited and viewed in column view
4819 (@pxref{Column view}).
4821 @menu
4822 * Property syntax::             How properties are spelled out
4823 * Special properties::          Access to other Org mode features
4824 * Property searches::           Matching property values
4825 * Property inheritance::        Passing values down the tree
4826 * Column view::                 Tabular viewing and editing
4827 * Property API::                Properties for Lisp programmers
4828 @end menu
4830 @node Property syntax, Special properties, Properties and Columns, Properties and Columns
4831 @section Property syntax
4832 @cindex property syntax
4833 @cindex drawer, for properties
4835 Properties are key-value pairs.  When they are associated with a single entry
4836 or with a tree they need to be inserted into a special
4837 drawer (@pxref{Drawers}) with the name @code{PROPERTIES}.  Each property
4838 is specified on a single line, with the key (surrounded by colons)
4839 first, and the value after it.  Here is an example:
4841 @example
4842 * CD collection
4843 ** Classic
4844 *** Goldberg Variations
4845     :PROPERTIES:
4846     :Title:     Goldberg Variations
4847     :Composer:  J.S. Bach
4848     :Artist:    Glen Gould
4849     :Publisher: Deutsche Grammophon
4850     :NDisks:    1
4851     :END:
4852 @end example
4854 Depending on the value of @code{org-use-property-inheritance}, a property set
4855 this way will either be associated with a single entry, or the sub-tree
4856 defined by the entry, see @ref{Property inheritance}.
4858 You may define the allowed values for a particular property @samp{:Xyz:}
4859 by setting a property @samp{:Xyz_ALL:}.  This special property is
4860 @emph{inherited}, so if you set it in a level 1 entry, it will apply to
4861 the entire tree.  When allowed values are defined, setting the
4862 corresponding property becomes easier and is less prone to typing
4863 errors.  For the example with the CD collection, we can predefine
4864 publishers and the number of disks in a box like this:
4866 @example
4867 * CD collection
4868   :PROPERTIES:
4869   :NDisks_ALL:  1 2 3 4
4870   :Publisher_ALL: "Deutsche Grammophon" Philips EMI
4871   :END:
4872 @end example
4874 If you want to set properties that can be inherited by any entry in a
4875 file, use a line like
4876 @cindex property, _ALL
4877 @cindex #+PROPERTY
4878 @example
4879 #+PROPERTY: NDisks_ALL 1 2 3 4
4880 @end example
4882 If you want to add to the value of an existing property, append a @code{+} to
4883 the property name.  The following results in the property @code{var} having
4884 the value ``foo=1 bar=2''.
4885 @cindex property, +
4886 @example
4887 #+PROPERTY: var  foo=1
4888 #+PROPERTY: var+ bar=2
4889 @end example
4891 It is also possible to add to the values of inherited properties.  The
4892 following results in the @code{genres} property having the value ``Classic
4893 Baroque'' under the @code{Goldberg Variations} subtree.
4894 @cindex property, +
4895 @example
4896 * CD collection
4897 ** Classic
4898     :PROPERTIES:
4899     :GENRES: Classic
4900     :END:
4901 *** Goldberg Variations
4902     :PROPERTIES:
4903     :Title:     Goldberg Variations
4904     :Composer:  J.S. Bach
4905     :Artist:    Glen Gould
4906     :Publisher: Deutsche Grammophon
4907     :NDisks:    1
4908     :GENRES+:   Baroque
4909     :END:
4910 @end example
4911 Note that a property can only have one entry per Drawer.
4913 @vindex org-global-properties
4914 Property values set with the global variable
4915 @code{org-global-properties} can be inherited by all entries in all
4916 Org files.
4918 @noindent
4919 The following commands help to work with properties:
4921 @table @kbd
4922 @orgcmd{M-@key{TAB},pcomplete}
4923 After an initial colon in a line, complete property keys.  All keys used
4924 in the current file will be offered as possible completions.
4925 @orgcmd{C-c C-x p,org-set-property}
4926 Set a property.  This prompts for a property name and a value.  If
4927 necessary, the property drawer is created as well.
4928 @item C-u M-x org-insert-drawer
4929 @cindex org-insert-drawer
4930 Insert a property drawer into the current entry.  The drawer will be
4931 inserted early in the entry, but after the lines with planning
4932 information like deadlines.
4933 @orgcmd{C-c C-c,org-property-action}
4934 With the cursor in a property drawer, this executes property commands.
4935 @orgcmd{C-c C-c s,org-set-property}
4936 Set a property in the current entry.  Both the property and the value
4937 can be inserted using completion.
4938 @orgcmdkkcc{S-@key{right},S-@key{left},org-property-next-allowed-value,org-property-previous-allowed-value}
4939 Switch property at point to the next/previous allowed value.
4940 @orgcmd{C-c C-c d,org-delete-property}
4941 Remove a property from the current entry.
4942 @orgcmd{C-c C-c D,org-delete-property-globally}
4943 Globally remove a property, from all entries in the current file.
4944 @orgcmd{C-c C-c c,org-compute-property-at-point}
4945 Compute the property at point, using the operator and scope from the
4946 nearest column format definition.
4947 @end table
4949 @node Special properties, Property searches, Property syntax, Properties and Columns
4950 @section Special properties
4951 @cindex properties, special
4953 Special properties provide an alternative access method to Org mode features,
4954 like the TODO state or the priority of an entry, discussed in the previous
4955 chapters.  This interface exists so that you can include these states in a
4956 column view (@pxref{Column view}), or to use them in queries.  The following
4957 property names are special and (except for @code{:CATEGORY:}) should not be
4958 used as keys in the properties drawer:
4960 @cindex property, special, ID
4961 @cindex property, special, TODO
4962 @cindex property, special, TAGS
4963 @cindex property, special, ALLTAGS
4964 @cindex property, special, CATEGORY
4965 @cindex property, special, PRIORITY
4966 @cindex property, special, DEADLINE
4967 @cindex property, special, SCHEDULED
4968 @cindex property, special, CLOSED
4969 @cindex property, special, TIMESTAMP
4970 @cindex property, special, TIMESTAMP_IA
4971 @cindex property, special, CLOCKSUM
4972 @cindex property, special, BLOCKED
4973 @c guessing that ITEM is needed in this area; also, should this list be sorted?
4974 @cindex property, special, ITEM
4975 @cindex property, special, FILE
4976 @example
4977 ID           @r{A globally unique ID used for synchronization during}
4978              @r{iCalendar or MobileOrg export.}
4979 TODO         @r{The TODO keyword of the entry.}
4980 TAGS         @r{The tags defined directly in the headline.}
4981 ALLTAGS      @r{All tags, including inherited ones.}
4982 CATEGORY     @r{The category of an entry.}
4983 PRIORITY     @r{The priority of the entry, a string with a single letter.}
4984 DEADLINE     @r{The deadline time string, without the angular brackets.}
4985 SCHEDULED    @r{The scheduling timestamp, without the angular brackets.}
4986 CLOSED       @r{When was this entry closed?}
4987 TIMESTAMP    @r{The first keyword-less timestamp in the entry.}
4988 TIMESTAMP_IA @r{The first inactive timestamp in the entry.}
4989 CLOCKSUM     @r{The sum of CLOCK intervals in the subtree.  @code{org-clock-sum}}
4990              @r{must be run first to compute the values in the current buffer.}
4991 BLOCKED      @r{"t" if task is currently blocked by children or siblings}
4992 ITEM         @r{The headline of the entry.}
4993 FILE         @r{The filename the entry is located in.}
4994 @end example
4996 @node Property searches, Property inheritance, Special properties, Properties and Columns
4997 @section Property searches
4998 @cindex properties, searching
4999 @cindex searching, of properties
5001 To create sparse trees and special lists with selection based on properties,
5002 the same commands are used as for tag searches (@pxref{Tag searches}).
5003 @table @kbd
5004 @orgcmdkkc{C-c / m,C-c \,org-match-sparse-tree}
5005 Create a sparse tree with all matching entries.  With a
5006 @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
5007 @orgcmd{C-c a m,org-tags-view}
5008 Create a global list of tag/property  matches from all agenda files.
5009 @xref{Matching tags and properties}.
5010 @orgcmd{C-c a M,org-tags-view}
5011 @vindex org-tags-match-list-sublevels
5012 Create a global list of tag matches from all agenda files, but check
5013 only TODO items and force checking of subitems (see variable
5014 @code{org-tags-match-list-sublevels}).
5015 @end table
5017 The syntax for the search string is described in @ref{Matching tags and
5018 properties}.
5020 There is also a special command for creating sparse trees based on a
5021 single property:
5023 @table @kbd
5024 @orgkey{C-c / p}
5025 Create a sparse tree based on the value of a property.  This first
5026 prompts for the name of a property, and then for a value.  A sparse tree
5027 is created with all entries that define this property with the given
5028 value.  If you enclose the value in curly braces, it is interpreted as
5029 a regular expression and matched against the property values.
5030 @end table
5032 @node Property inheritance, Column view, Property searches, Properties and Columns
5033 @section Property Inheritance
5034 @cindex properties, inheritance
5035 @cindex inheritance, of properties
5037 @vindex org-use-property-inheritance
5038 The outline structure of Org mode documents lends itself to an
5039 inheritance model of properties: if the parent in a tree has a certain
5040 property, the children can inherit this property.  Org mode does not
5041 turn this on by default, because it can slow down property searches
5042 significantly and is often not needed.  However, if you find inheritance
5043 useful, you can turn it on by setting the variable
5044 @code{org-use-property-inheritance}.  It may be set to @code{t} to make
5045 all properties inherited from the parent, to a list of properties
5046 that should be inherited, or to a regular expression that matches
5047 inherited properties.  If a property has the value @samp{nil}, this is
5048 interpreted as an explicit undefine of the property, so that inheritance
5049 search will stop at this value and return @code{nil}.
5051 Org mode has a few properties for which inheritance is hard-coded, at
5052 least for the special applications for which they are used:
5054 @cindex property, COLUMNS
5055 @table @code
5056 @item COLUMNS
5057 The @code{:COLUMNS:} property defines the format of column view
5058 (@pxref{Column view}).  It is inherited in the sense that the level
5059 where a @code{:COLUMNS:} property is defined is used as the starting
5060 point for a column view table, independently of the location in the
5061 subtree from where columns view is turned on.
5062 @item CATEGORY
5063 @cindex property, CATEGORY
5064 For agenda view, a category set through a @code{:CATEGORY:} property
5065 applies to the entire subtree.
5066 @item ARCHIVE
5067 @cindex property, ARCHIVE
5068 For archiving, the @code{:ARCHIVE:} property may define the archive
5069 location for the entire subtree (@pxref{Moving subtrees}).
5070 @item LOGGING
5071 @cindex property, LOGGING
5072 The LOGGING property may define logging settings for an entry or a
5073 subtree (@pxref{Tracking TODO state changes}).
5074 @end table
5076 @node Column view, Property API, Property inheritance, Properties and Columns
5077 @section Column view
5079 A great way to view and edit properties in an outline tree is
5080 @emph{column view}.  In column view, each outline node is turned into a
5081 table row.  Columns in this table provide access to properties of the
5082 entries.  Org mode implements columns by overlaying a tabular structure
5083 over the headline of each item.  While the headlines have been turned
5084 into a table row, you can still change the visibility of the outline
5085 tree.  For example, you get a compact table by switching to CONTENTS
5086 view (@kbd{S-@key{TAB} S-@key{TAB}}, or simply @kbd{c} while column view
5087 is active), but you can still open, read, and edit the entry below each
5088 headline.  Or, you can switch to column view after executing a sparse
5089 tree command and in this way get a table only for the selected items.
5090 Column view also works in agenda buffers (@pxref{Agenda Views}) where
5091 queries have collected selected items, possibly from a number of files.
5093 @menu
5094 * Defining columns::            The COLUMNS format property
5095 * Using column view::           How to create and use column view
5096 * Capturing column view::       A dynamic block for column view
5097 @end menu
5099 @node Defining columns, Using column view, Column view, Column view
5100 @subsection Defining columns
5101 @cindex column view, for properties
5102 @cindex properties, column view
5104 Setting up a column view first requires defining the columns.  This is
5105 done by defining a column format line.
5107 @menu
5108 * Scope of column definitions::  Where defined, where valid?
5109 * Column attributes::           Appearance and content of a column
5110 @end menu
5112 @node Scope of column definitions, Column attributes, Defining columns, Defining columns
5113 @subsubsection Scope of column definitions
5115 To define a column format for an entire file, use a line like
5117 @cindex #+COLUMNS
5118 @example
5119 #+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
5120 @end example
5122 To specify a format that only applies to a specific tree, add a
5123 @code{:COLUMNS:} property to the top node of that tree, for example:
5125 @example
5126 ** Top node for columns view
5127    :PROPERTIES:
5128    :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
5129    :END:
5130 @end example
5132 If a @code{:COLUMNS:} property is present in an entry, it defines columns
5133 for the entry itself, and for the entire subtree below it.  Since the
5134 column definition is part of the hierarchical structure of the document,
5135 you can define columns on level 1 that are general enough for all
5136 sublevels, and more specific columns further down, when you edit a
5137 deeper part of the tree.
5139 @node Column attributes,  , Scope of column definitions, Defining columns
5140 @subsubsection Column attributes
5141 A column definition sets the attributes of a column.  The general
5142 definition looks like this:
5144 @example
5145  %[@var{width}]@var{property}[(@var{title})][@{@var{summary-type}@}]
5146 @end example
5148 @noindent
5149 Except for the percent sign and the property name, all items are
5150 optional.  The individual parts have the following meaning:
5152 @example
5153 @var{width}           @r{An integer specifying the width of the column in characters.}
5154                 @r{If omitted, the width will be determined automatically.}
5155 @var{property}        @r{The property that should be edited in this column.}
5156                 @r{Special properties representing meta data are allowed here}
5157                 @r{as well (@pxref{Special properties})}
5158 @var{title}           @r{The header text for the column.  If omitted, the property}
5159                 @r{name is used.}
5160 @{@var{summary-type}@}  @r{The summary type.  If specified, the column values for}
5161                 @r{parent nodes are computed from the children.}
5162                 @r{Supported summary types are:}
5163                 @{+@}       @r{Sum numbers in this column.}
5164                 @{+;%.1f@}  @r{Like @samp{+}, but format result with @samp{%.1f}.}
5165                 @{$@}       @r{Currency, short for @samp{+;%.2f}.}
5166                 @{:@}       @r{Sum times, HH:MM, plain numbers are hours.}
5167                 @{X@}       @r{Checkbox status, @samp{[X]} if all children are @samp{[X]}.}
5168                 @{X/@}      @r{Checkbox status, @samp{[n/m]}.}
5169                 @{X%@}      @r{Checkbox status, @samp{[n%]}.}
5170                 @{min@}     @r{Smallest number in column.}
5171                 @{max@}     @r{Largest number.}
5172                 @{mean@}    @r{Arithmetic mean of numbers.}
5173                 @{:min@}    @r{Smallest time value in column.}
5174                 @{:max@}    @r{Largest time value.}
5175                 @{:mean@}   @r{Arithmetic mean of time values.}
5176                 @{@@min@}    @r{Minimum age (in days/hours/mins/seconds).}
5177                 @{@@max@}    @r{Maximum age (in days/hours/mins/seconds).}
5178                 @{@@mean@}   @r{Arithmetic mean of ages (in days/hours/mins/seconds).}
5179                 @{est+@}    @r{Add low-high estimates.}
5180 @end example
5182 @noindent
5183 Be aware that you can only have one summary type for any property you
5184 include.  Subsequent columns referencing the same property will all display the
5185 same summary information.
5187 The @code{est+} summary type requires further explanation.  It is used for
5188 combining estimates, expressed as low-high ranges.  For example, instead
5189 of estimating a particular task will take 5 days, you might estimate it as
5190 5-6 days if you're fairly confident you know how much work is required, or
5191 1-10 days if you don't really know what needs to be done.  Both ranges
5192 average at 5.5 days, but the first represents a more predictable delivery.
5194 When combining a set of such estimates, simply adding the lows and highs
5195 produces an unrealistically wide result.  Instead, @code{est+} adds the
5196 statistical mean and variance of the sub-tasks, generating a final estimate
5197 from the sum.  For example, suppose you had ten tasks, each of which was
5198 estimated at 0.5 to 2 days of work.  Straight addition produces an estimate
5199 of 5 to 20 days, representing what to expect if everything goes either
5200 extremely well or extremely poorly.  In contrast, @code{est+} estimates the
5201 full job more realistically, at 10-15 days.
5203 Here is an example for a complete columns definition, along with allowed
5204 values.
5206 @example
5207 :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.}
5208                    %10Time_Estimate@{:@} %CLOCKSUM
5209 :Owner_ALL:    Tammy Mark Karl Lisa Don
5210 :Status_ALL:   "In progress" "Not started yet" "Finished" ""
5211 :Approved_ALL: "[ ]" "[X]"
5212 @end example
5214 @noindent
5215 The first column, @samp{%25ITEM}, means the first 25 characters of the
5216 item itself, i.e.@: of the headline.  You probably always should start the
5217 column definition with the @samp{ITEM} specifier.  The other specifiers
5218 create columns @samp{Owner} with a list of names as allowed values, for
5219 @samp{Status} with four different possible values, and for a checkbox
5220 field @samp{Approved}.  When no width is given after the @samp{%}
5221 character, the column will be exactly as wide as it needs to be in order
5222 to fully display all values.  The @samp{Approved} column does have a
5223 modified title (@samp{Approved?}, with a question mark).  Summaries will
5224 be created for the @samp{Time_Estimate} column by adding time duration
5225 expressions like HH:MM, and for the @samp{Approved} column, by providing
5226 an @samp{[X]} status if all children have been checked.  The
5227 @samp{CLOCKSUM} column is special, it lists the sum of CLOCK intervals
5228 in the subtree.
5230 @node Using column view, Capturing column view, Defining columns, Column view
5231 @subsection Using column view
5233 @table @kbd
5234 @tsubheading{Turning column view on and off}
5235 @orgcmd{C-c C-x C-c,org-columns}
5236 @vindex org-columns-default-format
5237 Turn on column view.  If the cursor is before the first headline in the file,
5238 column view is turned on for the entire file, using the @code{#+COLUMNS}
5239 definition.  If the cursor is somewhere inside the outline, this command
5240 searches the hierarchy, up from point, for a @code{:COLUMNS:} property that
5241 defines a format.  When one is found, the column view table is established
5242 for the tree starting at the entry that contains the @code{:COLUMNS:}
5243 property.  If no such property is found, the format is taken from the
5244 @code{#+COLUMNS} line or from the variable @code{org-columns-default-format},
5245 and column view is established for the current entry and its subtree.
5246 @orgcmd{r,org-columns-redo}
5247 Recreate the column view, to include recent changes made in the buffer.
5248 @orgcmd{g,org-columns-redo}
5249 Same as @kbd{r}.
5250 @orgcmd{q,org-columns-quit}
5251 Exit column view.
5252 @tsubheading{Editing values}
5253 @item @key{left} @key{right} @key{up} @key{down}
5254 Move through the column view from field to field.
5255 @kindex S-@key{left}
5256 @kindex S-@key{right}
5257 @item  S-@key{left}/@key{right}
5258 Switch to the next/previous allowed value of the field.  For this, you
5259 have to have specified allowed values for a property.
5260 @item 1..9,0
5261 Directly select the Nth allowed value, @kbd{0} selects the 10th value.
5262 @orgcmdkkcc{n,p,org-columns-next-allowed-value,org-columns-previous-allowed-value}
5263 Same as @kbd{S-@key{left}/@key{right}}
5264 @orgcmd{e,org-columns-edit-value}
5265 Edit the property at point.  For the special properties, this will
5266 invoke the same interface that you normally use to change that
5267 property.  For example, when editing a TAGS property, the tag completion
5268 or fast selection interface will pop up.
5269 @orgcmd{C-c C-c,org-columns-set-tags-or-toggle}
5270 When there is a checkbox at point, toggle it.
5271 @orgcmd{v,org-columns-show-value}
5272 View the full value of this property.  This is useful if the width of
5273 the column is smaller than that of the value.
5274 @orgcmd{a,org-columns-edit-allowed}
5275 Edit the list of allowed values for this property.  If the list is found
5276 in the hierarchy, the modified values is stored there.  If no list is
5277 found, the new value is stored in the first entry that is part of the
5278 current column view.
5279 @tsubheading{Modifying the table structure}
5280 @orgcmdkkcc{<,>,org-columns-narrow,org-columns-widen}
5281 Make the column narrower/wider by one character.
5282 @orgcmd{S-M-@key{right},org-columns-new}
5283 Insert a new column, to the left of the current column.
5284 @orgcmd{S-M-@key{left},org-columns-delete}
5285 Delete the current column.
5286 @end table
5288 @node Capturing column view,  , Using column view, Column view
5289 @subsection Capturing column view
5291 Since column view is just an overlay over a buffer, it cannot be
5292 exported or printed directly.  If you want to capture a column view, use
5293 a @code{columnview} dynamic block (@pxref{Dynamic blocks}).  The frame
5294 of this block looks like this:
5296 @cindex #+BEGIN, columnview
5297 @example
5298 * The column view
5299 #+BEGIN: columnview :hlines 1 :id "label"
5301 #+END:
5302 @end example
5304 @noindent This dynamic block has the following parameters:
5306 @table @code
5307 @item :id
5308 This is the most important parameter.  Column view is a feature that is
5309 often localized to a certain (sub)tree, and the capture block might be
5310 at a different location in the file.  To identify the tree whose view to
5311 capture, you can use 4 values:
5312 @cindex property, ID
5313 @example
5314 local     @r{use the tree in which the capture block is located}
5315 global    @r{make a global view, including all headings in the file}
5316 "file:@var{path-to-file}"
5317           @r{run column view at the top of this file}
5318 "@var{ID}"      @r{call column view in the tree that has an @code{:ID:}}
5319           @r{property with the value @i{label}.  You can use}
5320           @r{@kbd{M-x org-id-copy} to create a globally unique ID for}
5321           @r{the current entry and copy it to the kill-ring.}
5322 @end example
5323 @item :hlines
5324 When @code{t}, insert an hline after every line.  When a number @var{N}, insert
5325 an hline before each headline with level @code{<= @var{N}}.
5326 @item :vlines
5327 When set to @code{t}, force column groups to get vertical lines.
5328 @item :maxlevel
5329 When set to a number, don't capture entries below this level.
5330 @item :skip-empty-rows
5331 When set to @code{t}, skip rows where the only non-empty specifier of the
5332 column view is @code{ITEM}.
5334 @end table
5336 @noindent
5337 The following commands insert or update the dynamic block:
5339 @table @kbd
5340 @orgcmd{C-c C-x i,org-insert-columns-dblock}
5341 Insert a dynamic block capturing a column view.  You will be prompted
5342 for the scope or ID of the view.
5343 @orgcmdkkc{C-c C-c,C-c C-x C-u,org-dblock-update}
5344 Update dynamic block at point.  The cursor needs to be in the
5345 @code{#+BEGIN} line of the dynamic block.
5346 @orgcmd{C-u C-c C-x C-u,org-update-all-dblocks}
5347 Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
5348 you have several clock table blocks, column-capturing blocks or other dynamic
5349 blocks in a buffer.
5350 @end table
5352 You can add formulas to the column view table and you may add plotting
5353 instructions in front of the table---these will survive an update of the
5354 block.  If there is a @code{#+TBLFM:} after the table, the table will
5355 actually be recalculated automatically after an update.
5357 An alternative way to capture and process property values into a table is
5358 provided by Eric Schulte's @file{org-collector.el} which is a contributed
5359 package@footnote{Contributed packages are not part of Emacs, but are
5360 distributed with the main distribution of Org (visit
5361 @uref{http://orgmode.org}).}.  It provides a general API to collect
5362 properties from entries in a certain scope, and arbitrary Lisp expressions to
5363 process these values before inserting them into a table or a dynamic block.
5365 @node Property API,  , Column view, Properties and Columns
5366 @section The Property API
5367 @cindex properties, API
5368 @cindex API, for properties
5370 There is a full API for accessing and changing properties.  This API can
5371 be used by Emacs Lisp programs to work with properties and to implement
5372 features based on them.  For more information see @ref{Using the
5373 property API}.
5375 @node Dates and Times, Capture - Refile - Archive, Properties and Columns, Top
5376 @chapter Dates and times
5377 @cindex dates
5378 @cindex times
5379 @cindex timestamp
5380 @cindex date stamp
5382 To assist project planning, TODO items can be labeled with a date and/or
5383 a time.  The specially formatted string carrying the date and time
5384 information is called a @emph{timestamp} in Org mode.  This may be a
5385 little confusing because timestamp is often used as indicating when
5386 something was created or last changed.  However, in Org mode this term
5387 is used in a much wider sense.
5389 @menu
5390 * Timestamps::                  Assigning a time to a tree entry
5391 * Creating timestamps::         Commands which insert timestamps
5392 * Deadlines and scheduling::    Planning your work
5393 * Clocking work time::          Tracking how long you spend on a task
5394 * Effort estimates::            Planning work effort in advance
5395 * Relative timer::              Notes with a running timer
5396 * Countdown timer::             Starting a countdown timer for a task
5397 @end menu
5400 @node Timestamps, Creating timestamps, Dates and Times, Dates and Times
5401 @section Timestamps, deadlines, and scheduling
5402 @cindex timestamps
5403 @cindex ranges, time
5404 @cindex date stamps
5405 @cindex deadlines
5406 @cindex scheduling
5408 A timestamp is a specification of a date (possibly with a time or a range of
5409 times) in a special format, either @samp{<2003-09-16 Tue>}@footnote{In this
5410 simplest form, the day name is optional when you type the date yourself.
5411 However, any dates inserted or modified by Org will add that day name, for
5412 reading convenience.} or @samp{<2003-09-16 Tue 09:39>} or @samp{<2003-09-16
5413 Tue 12:00-12:30>}@footnote{This is inspired by the standard ISO 8601
5414 date/time format.  To use an alternative format, see @ref{Custom time
5415 format}.}.  A timestamp can appear anywhere in the headline or body of an Org
5416 tree entry.  Its presence causes entries to be shown on specific dates in the
5417 agenda (@pxref{Weekly/daily agenda}).  We distinguish:
5419 @table @var
5420 @item Plain timestamp; Event; Appointment
5421 @cindex timestamp
5422 @cindex appointment
5423 A simple timestamp just assigns a date/time to an item.  This is just
5424 like writing down an appointment or event in a paper agenda.  In the
5425 timeline and agenda displays, the headline of an entry associated with a
5426 plain timestamp will be shown exactly on that date.
5428 @example
5429 * Meet Peter at the movies
5430   <2006-11-01 Wed 19:15>
5431 * Discussion on climate change
5432   <2006-11-02 Thu 20:00-22:00>
5433 @end example
5435 @item Timestamp with repeater interval
5436 @cindex timestamp, with repeater interval
5437 A timestamp may contain a @emph{repeater interval}, indicating that it
5438 applies not only on the given date, but again and again after a certain
5439 interval of N days (d), weeks (w), months (m), or years (y).  The
5440 following will show up in the agenda every Wednesday:
5442 @example
5443 * Pick up Sam at school
5444   <2007-05-16 Wed 12:30 +1w>
5445 @end example
5447 @item Diary-style sexp entries
5448 For more complex date specifications, Org mode supports using the special
5449 sexp diary entries implemented in the Emacs calendar/diary
5450 package@footnote{When working with the standard diary sexp functions, you
5451 need to be very careful with the order of the arguments.  That order depend
5452 evilly on the variable @code{calendar-date-style} (or, for older Emacs
5453 versions, @code{european-calendar-style}).  For example, to specify a date
5454 December 12, 2005, the call might look like @code{(diary-date 12 1 2005)} or
5455 @code{(diary-date 1 12 2005)} or @code{(diary-date 2005 12 1)}, depending on
5456 the settings.  This has been the source of much confusion.  Org mode users
5457 can resort to special versions of these functions like @code{org-date} or
5458 @code{org-anniversary}.  These work just like the corresponding @code{diary-}
5459 functions, but with stable ISO order of arguments (year, month, day) wherever
5460 applicable, independent of the value of @code{calendar-date-style}.}.  For
5461 example with optional time
5463 @example
5464 * 22:00-23:00 The nerd meeting on every 2nd Thursday of the month
5465   <%%(org-float t 4 2)>
5466 @end example
5468 @item Time/Date range
5469 @cindex timerange
5470 @cindex date range
5471 Two timestamps connected by @samp{--} denote a range.  The headline
5472 will be shown on the first and last day of the range, and on any dates
5473 that are displayed and fall in the range.  Here is an example:
5475 @example
5476 ** Meeting in Amsterdam
5477    <2004-08-23 Mon>--<2004-08-26 Thu>
5478 @end example
5480 @item Inactive timestamp
5481 @cindex timestamp, inactive
5482 @cindex inactive timestamp
5483 Just like a plain timestamp, but with square brackets instead of
5484 angular ones.  These timestamps are inactive in the sense that they do
5485 @emph{not} trigger an entry to show up in the agenda.
5487 @example
5488 * Gillian comes late for the fifth time
5489   [2006-11-01 Wed]
5490 @end example
5492 @end table
5494 @node Creating timestamps, Deadlines and scheduling, Timestamps, Dates and Times
5495 @section Creating timestamps
5496 @cindex creating timestamps
5497 @cindex timestamps, creating
5499 For Org mode to recognize timestamps, they need to be in the specific
5500 format.  All commands listed below produce timestamps in the correct
5501 format.
5503 @table @kbd
5504 @orgcmd{C-c .,org-time-stamp}
5505 Prompt for a date and insert a corresponding timestamp.  When the cursor is
5506 at an existing timestamp in the buffer, the command is used to modify this
5507 timestamp instead of inserting a new one.  When this command is used twice in
5508 succession, a time range is inserted.
5510 @orgcmd{C-c !,org-time-stamp-inactive}
5511 Like @kbd{C-c .}, but insert an inactive timestamp that will not cause
5512 an agenda entry.
5514 @kindex C-u C-c .
5515 @kindex C-u C-c !
5516 @item C-u C-c .
5517 @itemx C-u C-c !
5518 @vindex org-time-stamp-rounding-minutes
5519 Like @kbd{C-c .} and @kbd{C-c !}, but use the alternative format which
5520 contains date and time.  The default time can be rounded to multiples of 5
5521 minutes, see the option @code{org-time-stamp-rounding-minutes}.
5523 @orgkey{C-c C-c}
5524 Normalize timestamp, insert/fix day name if missing or wrong.
5526 @orgcmd{C-c <,org-date-from-calendar}
5527 Insert a timestamp corresponding to the cursor date in the Calendar.
5529 @orgcmd{C-c >,org-goto-calendar}
5530 Access the Emacs calendar for the current date.  If there is a
5531 timestamp in the current line, go to the corresponding date
5532 instead.
5534 @orgcmd{C-c C-o,org-open-at-point}
5535 Access the agenda for the date given by the timestamp or -range at
5536 point (@pxref{Weekly/daily agenda}).
5538 @orgcmdkkcc{S-@key{left},S-@key{right},org-timestamp-down-day,org-timestamp-up-day}
5539 Change date at cursor by one day.  These key bindings conflict with
5540 shift-selection and related modes (@pxref{Conflicts}).
5542 @orgcmdkkcc{S-@key{up},S-@key{down},org-timestamp-up,org-timestamp-down-down}
5543 Change the item under the cursor in a timestamp.  The cursor can be on a
5544 year, month, day, hour or minute.  When the timestamp contains a time range
5545 like @samp{15:30-16:30}, modifying the first time will also shift the second,
5546 shifting the time block with constant length.  To change the length, modify
5547 the second time.  Note that if the cursor is in a headline and not at a
5548 timestamp, these same keys modify the priority of an item.
5549 (@pxref{Priorities}).  The key bindings also conflict with shift-selection and
5550 related modes (@pxref{Conflicts}).
5552 @orgcmd{C-c C-y,org-evaluate-time-range}
5553 @cindex evaluate time range
5554 Evaluate a time range by computing the difference between start and end.
5555 With a prefix argument, insert result after the time range (in a table: into
5556 the following column).
5557 @end table
5560 @menu
5561 * The date/time prompt::        How Org mode helps you entering date and time
5562 * Custom time format::          Making dates look different
5563 @end menu
5565 @node The date/time prompt, Custom time format, Creating timestamps, Creating timestamps
5566 @subsection The date/time prompt
5567 @cindex date, reading in minibuffer
5568 @cindex time, reading in minibuffer
5570 @vindex org-read-date-prefer-future
5571 When Org mode prompts for a date/time, the default is shown in default
5572 date/time format, and the prompt therefore seems to ask for a specific
5573 format.  But it will in fact accept any string containing some date and/or
5574 time information, and it is really smart about interpreting your input.  You
5575 can, for example, use @kbd{C-y} to paste a (possibly multi-line) string
5576 copied from an email message.  Org mode will find whatever information is in
5577 there and derive anything you have not specified from the @emph{default date
5578 and time}.  The default is usually the current date and time, but when
5579 modifying an existing timestamp, or when entering the second stamp of a
5580 range, it is taken from the stamp in the buffer.  When filling in
5581 information, Org mode assumes that most of the time you will want to enter a
5582 date in the future: if you omit the month/year and the given day/month is
5583 @i{before} today, it will assume that you mean a future date@footnote{See the
5584 variable @code{org-read-date-prefer-future}.  You may set that variable to
5585 the symbol @code{time} to even make a time before now shift the date to
5586 tomorrow.}.  If the date has been automatically shifted into the future, the
5587 time prompt will show this with @samp{(=>F).}
5589 For example, let's assume that today is @b{June 13, 2006}.  Here is how
5590 various inputs will be interpreted, the items filled in by Org mode are
5591 in @b{bold}.
5593 @example
5594 3-2-5         @result{} 2003-02-05
5595 2/5/3         @result{} 2003-02-05
5596 14            @result{} @b{2006}-@b{06}-14
5597 12            @result{} @b{2006}-@b{07}-12
5598 2/5           @result{} @b{2007}-02-05
5599 Fri           @result{} nearest Friday (default date or later)
5600 sep 15        @result{} @b{2006}-09-15
5601 feb 15        @result{} @b{2007}-02-15
5602 sep 12 9      @result{} 2009-09-12
5603 12:45         @result{} @b{2006}-@b{06}-@b{13} 12:45
5604 22 sept 0:34  @result{} @b{2006}-09-22 0:34
5605 w4            @result{} ISO week for of the current year @b{2006}
5606 2012 w4 fri   @result{} Friday of ISO week 4 in 2012
5607 2012-w04-5    @result{} Same as above
5608 @end example
5610 Furthermore you can specify a relative date by giving, as the
5611 @emph{first} thing in the input: a plus/minus sign, a number and a
5612 letter ([dwmy]) to indicate change in days, weeks, months, or years.  With a
5613 single plus or minus, the date is always relative to today.  With a
5614 double plus or minus, it is relative to the default date.  If instead of
5615 a single letter, you use the abbreviation of day name, the date will be
5616 the Nth such day, e.g.@:
5618 @example
5619 +0            @result{} today
5620 .             @result{} today
5621 +4d           @result{} four days from today
5622 +4            @result{} same as above
5623 +2w           @result{} two weeks from today
5624 ++5           @result{} five days from default date
5625 +2tue         @result{} second Tuesday from now.
5626 @end example
5628 @vindex parse-time-months
5629 @vindex parse-time-weekdays
5630 The function understands English month and weekday abbreviations.  If
5631 you want to use unabbreviated names and/or other languages, configure
5632 the variables @code{parse-time-months} and @code{parse-time-weekdays}.
5634 @vindex org-read-date-force-compatible-dates
5635 Not all dates can be represented in a given Emacs implementation.  By default
5636 Org mode forces dates into the compatibility range 1970--2037 which works on
5637 all Emacs implementations.  If you want to use dates outside of this range,
5638 read the docstring of the variable
5639 @code{org-read-date-force-compatible-dates}.
5641 You can specify a time range by giving start and end times or by giving a
5642 start time and a duration (in HH:MM format).  Use one or two dash(es) as the
5643 separator in the former case and use '+' as the separator in the latter
5644 case, e.g.@:
5646 @example
5647 11am-1:15pm    @result{} 11:00-13:15
5648 11am--1:15pm   @result{} same as above
5649 11am+2:15      @result{} same as above
5650 @end example
5652 @cindex calendar, for selecting date
5653 @vindex org-popup-calendar-for-date-prompt
5654 Parallel to the minibuffer prompt, a calendar is popped up@footnote{If
5655 you don't need/want the calendar, configure the variable
5656 @code{org-popup-calendar-for-date-prompt}.}.  When you exit the date
5657 prompt, either by clicking on a date in the calendar, or by pressing
5658 @key{RET}, the date selected in the calendar will be combined with the
5659 information entered at the prompt.  You can control the calendar fully
5660 from the minibuffer:
5662 @kindex <
5663 @kindex >
5664 @kindex M-v
5665 @kindex C-v
5666 @kindex mouse-1
5667 @kindex S-@key{right}
5668 @kindex S-@key{left}
5669 @kindex S-@key{down}
5670 @kindex S-@key{up}
5671 @kindex M-S-@key{right}
5672 @kindex M-S-@key{left}
5673 @kindex @key{RET}
5674 @example
5675 @key{RET}           @r{Choose date at cursor in calendar.}
5676 mouse-1        @r{Select date by clicking on it.}
5677 S-@key{right}/@key{left}     @r{One day forward/backward.}
5678 S-@key{down}/@key{up}     @r{One week forward/backward.}
5679 M-S-@key{right}/@key{left}   @r{One month forward/backward.}
5680 > / <          @r{Scroll calendar forward/backward by one month.}
5681 M-v / C-v      @r{Scroll calendar forward/backward by 3 months.}
5682 @end example
5684 @vindex org-read-date-display-live
5685 The actions of the date/time prompt may seem complex, but I assure you they
5686 will grow on you, and you will start getting annoyed by pretty much any other
5687 way of entering a date/time out there.  To help you understand what is going
5688 on, the current interpretation of your input will be displayed live in the
5689 minibuffer@footnote{If you find this distracting, turn the display of with
5690 @code{org-read-date-display-live}.}.
5692 @node Custom time format,  , The date/time prompt, Creating timestamps
5693 @subsection Custom time format
5694 @cindex custom date/time format
5695 @cindex time format, custom
5696 @cindex date format, custom
5698 @vindex org-display-custom-times
5699 @vindex org-time-stamp-custom-formats
5700 Org mode uses the standard ISO notation for dates and times as it is
5701 defined in ISO 8601.  If you cannot get used to this and require another
5702 representation of date and time to keep you happy, you can get it by
5703 customizing the variables @code{org-display-custom-times} and
5704 @code{org-time-stamp-custom-formats}.
5706 @table @kbd
5707 @orgcmd{C-c C-x C-t,org-toggle-time-stamp-overlays}
5708 Toggle the display of custom formats for dates and times.
5709 @end table
5711 @noindent
5712 Org mode needs the default format for scanning, so the custom date/time
5713 format does not @emph{replace} the default format---instead it is put
5714 @emph{over} the default format using text properties.  This has the
5715 following consequences:
5716 @itemize @bullet
5717 @item
5718 You cannot place the cursor onto a timestamp anymore, only before or
5719 after.
5720 @item
5721 The @kbd{S-@key{up}/@key{down}} keys can no longer be used to adjust
5722 each component of a timestamp.  If the cursor is at the beginning of
5723 the stamp, @kbd{S-@key{up}/@key{down}} will change the stamp by one day,
5724 just like @kbd{S-@key{left}/@key{right}}.  At the end of the stamp, the
5725 time will be changed by one minute.
5726 @item
5727 If the timestamp contains a range of clock times or a repeater, these
5728 will not be overlaid, but remain in the buffer as they were.
5729 @item
5730 When you delete a timestamp character-by-character, it will only
5731 disappear from the buffer after @emph{all} (invisible) characters
5732 belonging to the ISO timestamp have been removed.
5733 @item
5734 If the custom timestamp format is longer than the default and you are
5735 using dates in tables, table alignment will be messed up.  If the custom
5736 format is shorter, things do work as expected.
5737 @end itemize
5740 @node Deadlines and scheduling, Clocking work time, Creating timestamps, Dates and Times
5741 @section Deadlines and scheduling
5743 A timestamp may be preceded by special keywords to facilitate planning:
5745 @table @var
5746 @item DEADLINE
5747 @cindex DEADLINE keyword
5749 Meaning: the task (most likely a TODO item, though not necessarily) is supposed
5750 to be finished on that date.
5752 @vindex org-deadline-warning-days
5753 On the deadline date, the task will be listed in the agenda.  In
5754 addition, the agenda for @emph{today} will carry a warning about the
5755 approaching or missed deadline, starting
5756 @code{org-deadline-warning-days} before the due date, and continuing
5757 until the entry is marked DONE.  An example:
5759 @example
5760 *** TODO write article about the Earth for the Guide
5761     DEADLINE: <2004-02-29 Sun>
5762     The editor in charge is [[bbdb:Ford Prefect]]
5763 @end example
5765 You can specify a different lead time for warnings for a specific
5766 deadlines using the following syntax.  Here is an example with a warning
5767 period of 5 days @code{DEADLINE: <2004-02-29 Sun -5d>}.
5769 @item SCHEDULED
5770 @cindex SCHEDULED keyword
5772 Meaning: you are planning to start working on that task on the given
5773 date.
5775 @vindex org-agenda-skip-scheduled-if-done
5776 The headline will be listed under the given date@footnote{It will still
5777 be listed on that date after it has been marked DONE.  If you don't like
5778 this, set the variable @code{org-agenda-skip-scheduled-if-done}.}.  In
5779 addition, a reminder that the scheduled date has passed will be present
5780 in the compilation for @emph{today}, until the entry is marked DONE, i.e.@:
5781 the task will automatically be forwarded until completed.
5783 @example
5784 *** TODO Call Trillian for a date on New Years Eve.
5785     SCHEDULED: <2004-12-25 Sat>
5786 @end example
5788 @noindent
5789 @b{Important:} Scheduling an item in Org mode should @i{not} be
5790 understood in the same way that we understand @i{scheduling a meeting}.
5791 Setting a date for a meeting is just a simple appointment, you should
5792 mark this entry with a simple plain timestamp, to get this item shown
5793 on the date where it applies.  This is a frequent misunderstanding by
5794 Org users.  In Org mode, @i{scheduling} means setting a date when you
5795 want to start working on an action item.
5796 @end table
5798 You may use timestamps with repeaters in scheduling and deadline
5799 entries.  Org mode will issue early and late warnings based on the
5800 assumption that the timestamp represents the @i{nearest instance} of
5801 the repeater.  However, the use of diary sexp entries like
5803 @code{<%%(org-float t 42)>}
5805 in scheduling and deadline timestamps is limited.  Org mode does not
5806 know enough about the internals of each sexp function to issue early and
5807 late warnings.  However, it will show the item on each day where the
5808 sexp entry matches.
5810 @menu
5811 * Inserting deadline/schedule::  Planning items
5812 * Repeated tasks::              Items that show up again and again
5813 @end menu
5815 @node Inserting deadline/schedule, Repeated tasks, Deadlines and scheduling, Deadlines and scheduling
5816 @subsection Inserting deadlines or schedules
5818 The following commands allow you to quickly insert@footnote{The @samp{SCHEDULED} and
5819 @samp{DEADLINE} dates are inserted on the line right below the headline.  Don't put
5820 any text between this line and the headline.} a deadline or to schedule
5821 an item:
5823 @table @kbd
5825 @orgcmd{C-c C-d,org-deadline}
5826 Insert @samp{DEADLINE} keyword along with a stamp.  The insertion will happen
5827 in the line directly following the headline.  Any CLOSED timestamp will be
5828 removed.  When called with a prefix arg, an existing deadline will be removed
5829 from the entry.  Depending on the variable @code{org-log-redeadline}@footnote{with corresponding
5830 @code{#+STARTUP} keywords @code{logredeadline}, @code{lognoteredeadline},
5831 and @code{nologredeadline}}, a note will be taken when changing an existing
5832 deadline.
5834 @orgcmd{C-c C-s,org-schedule}
5835 Insert @samp{SCHEDULED} keyword along with a stamp.  The insertion will
5836 happen in the line directly following the headline.  Any CLOSED timestamp
5837 will be removed.  When called with a prefix argument, remove the scheduling
5838 date from the entry.  Depending on the variable
5839 @code{org-log-reschedule}@footnote{with corresponding @code{#+STARTUP}
5840 keywords @code{logreschedule}, @code{lognotereschedule}, and
5841 @code{nologreschedule}}, a note will be taken when changing an existing
5842 scheduling time.
5844 @orgcmd{C-c C-x C-k,org-mark-entry-for-agenda-action}
5845 @kindex k a
5846 @kindex k s
5847 Mark the current entry for agenda action.  After you have marked the entry
5848 like this, you can open the agenda or the calendar to find an appropriate
5849 date.  With the cursor on the selected date, press @kbd{k s} or @kbd{k d} to
5850 schedule the marked item.
5852 @orgcmd{C-c / d,org-check-deadlines}
5853 @cindex sparse tree, for deadlines
5854 @vindex org-deadline-warning-days
5855 Create a sparse tree with all deadlines that are either past-due, or
5856 which will become due within @code{org-deadline-warning-days}.
5857 With @kbd{C-u} prefix, show all deadlines in the file.  With a numeric
5858 prefix, check that many days.  For example, @kbd{C-1 C-c / d} shows
5859 all deadlines due tomorrow.
5861 @orgcmd{C-c / b,org-check-before-date}
5862 Sparse tree for deadlines and scheduled items before a given date.
5864 @orgcmd{C-c / a,org-check-after-date}
5865 Sparse tree for deadlines and scheduled items after a given date.
5866 @end table
5868 Note that @code{org-schedule} and @code{org-deadline} supports
5869 setting the date by indicating a relative time: e.g. +1d will set
5870 the date to the next day after today, and --1w will set the date
5871 to the previous week before any current timestamp.
5873 @node Repeated tasks,  , Inserting deadline/schedule, Deadlines and scheduling
5874 @subsection Repeated tasks
5875 @cindex tasks, repeated
5876 @cindex repeated tasks
5878 Some tasks need to be repeated again and again.  Org mode helps to
5879 organize such tasks using a so-called repeater in a DEADLINE, SCHEDULED,
5880 or plain timestamp.  In the following example
5881 @example
5882 ** TODO Pay the rent
5883    DEADLINE: <2005-10-01 Sat +1m>
5884 @end example
5885 @noindent
5886 the @code{+1m} is a repeater; the intended interpretation is that the task
5887 has a deadline on <2005-10-01> and repeats itself every (one) month starting
5888 from that time.  You can use yearly, monthly, weekly, daily and hourly repeat
5889 cookies by using the @code{y/w/m/d/h} letters.  If you need both a repeater
5890 and a special warning period in a deadline entry, the repeater should come
5891 first and the warning period last: @code{DEADLINE: <2005-10-01 Sat +1m -3d>}.
5893 @vindex org-todo-repeat-to-state
5894 Deadlines and scheduled items produce entries in the agenda when they are
5895 over-due, so it is important to be able to mark such an entry as completed
5896 once you have done so.  When you mark a DEADLINE or a SCHEDULE with the TODO
5897 keyword DONE, it will no longer produce entries in the agenda.  The problem
5898 with this is, however, that then also the @emph{next} instance of the
5899 repeated entry will not be active.  Org mode deals with this in the following
5900 way: When you try to mark such an entry DONE (using @kbd{C-c C-t}), it will
5901 shift the base date of the repeating timestamp by the repeater interval, and
5902 immediately set the entry state back to TODO@footnote{In fact, the target
5903 state is taken from, in this sequence, the @code{REPEAT_TO_STATE} property or
5904 the variable @code{org-todo-repeat-to-state}.  If neither of these is
5905 specified, the target state defaults to the first state of the TODO state
5906 sequence.}.  In the example above, setting the state to DONE would actually
5907 switch the date like this:
5909 @example
5910 ** TODO Pay the rent
5911    DEADLINE: <2005-11-01 Tue +1m>
5912 @end example
5914 @vindex org-log-repeat
5915 A timestamp@footnote{You can change this using the option
5916 @code{org-log-repeat}, or the @code{#+STARTUP} options @code{logrepeat},
5917 @code{lognoterepeat}, and @code{nologrepeat}.  With @code{lognoterepeat}, you
5918 will also be prompted for a note.} will be added under the deadline, to keep
5919 a record that you actually acted on the previous instance of this deadline.
5921 As a consequence of shifting the base date, this entry will no longer be
5922 visible in the agenda when checking past dates, but all future instances
5923 will be visible.
5925 With the @samp{+1m} cookie, the date shift will always be exactly one
5926 month.  So if you have not paid the rent for three months, marking this
5927 entry DONE will still keep it as an overdue deadline.  Depending on the
5928 task, this may not be the best way to handle it.  For example, if you
5929 forgot to call your father for 3 weeks, it does not make sense to call
5930 him 3 times in a single day to make up for it.  Finally, there are tasks
5931 like changing batteries which should always repeat a certain time
5932 @i{after} the last time you did it.  For these tasks, Org mode has
5933 special repeaters  @samp{++} and @samp{.+}.  For example:
5935 @example
5936 ** TODO Call Father
5937    DEADLINE: <2008-02-10 Sun ++1w>
5938    Marking this DONE will shift the date by at least one week,
5939    but also by as many weeks as it takes to get this date into
5940    the future.  However, it stays on a Sunday, even if you called
5941    and marked it done on Saturday.
5942 ** TODO Check the batteries in the smoke detectors
5943    DEADLINE: <2005-11-01 Tue .+1m>
5944    Marking this DONE will shift the date to one month after
5945    today.
5946 @end example
5948 You may have both scheduling and deadline information for a specific
5949 task---just make sure that the repeater intervals on both are the same.
5951 An alternative to using a repeater is to create a number of copies of a task
5952 subtree, with dates shifted in each copy.  The command @kbd{C-c C-x c} was
5953 created for this purpose, it is described in @ref{Structure editing}.
5956 @node Clocking work time, Effort estimates, Deadlines and scheduling, Dates and Times
5957 @section Clocking work time
5958 @cindex clocking time
5959 @cindex time clocking
5961 Org mode allows you to clock the time you spend on specific tasks in a
5962 project.  When you start working on an item, you can start the clock.  When
5963 you stop working on that task, or when you mark the task done, the clock is
5964 stopped and the corresponding time interval is recorded.  It also computes
5965 the total time spent on each subtree@footnote{Clocking only works if all
5966 headings are indented with less than 30 stars.  This is a hardcoded
5967 limitation of `lmax' in `org-clock-sum'.} of a project.  And it remembers a
5968 history or tasks recently clocked, to that you can jump quickly between a
5969 number of tasks absorbing your time.
5971 To save the clock history across Emacs sessions, use
5972 @lisp
5973 (setq org-clock-persist 'history)
5974 (org-clock-persistence-insinuate)
5975 @end lisp
5976 When you clock into a new task after resuming Emacs, the incomplete
5977 clock@footnote{To resume the clock under the assumption that you have worked
5978 on this task while outside Emacs, use @code{(setq org-clock-persist t)}.}
5979 will be found (@pxref{Resolving idle time}) and you will be prompted about
5980 what to do with it.
5982 @menu
5983 * Clocking commands::           Starting and stopping a clock
5984 * The clock table::             Detailed reports
5985 * Resolving idle time::         Resolving time when you've been idle
5986 @end menu
5988 @node Clocking commands, The clock table, Clocking work time, Clocking work time
5989 @subsection Clocking commands
5991 @table @kbd
5992 @orgcmd{C-c C-x C-i,org-clock-in}
5993 @vindex org-clock-into-drawer
5994 @cindex property, LOG_INTO_DRAWER
5995 Start the clock on the current item (clock-in).  This inserts the CLOCK
5996 keyword together with a timestamp.  If this is not the first clocking of
5997 this item, the multiple CLOCK lines will be wrapped into a
5998 @code{:LOGBOOK:} drawer (see also the variable
5999 @code{org-clock-into-drawer}).  You can also overrule
6000 the setting of this variable for a subtree by setting a
6001 @code{CLOCK_INTO_DRAWER} or @code{LOG_INTO_DRAWER} property.
6002 When called with a @kbd{C-u} prefix argument,
6003 select the task from a list of recently clocked tasks.  With two @kbd{C-u
6004 C-u} prefixes, clock into the task at point and mark it as the default task.
6005 The default task will always be available when selecting a clocking task,
6006 with letter @kbd{d}.@*
6007 @cindex property: CLOCK_MODELINE_TOTAL
6008 @cindex property: LAST_REPEAT
6009 @vindex org-clock-modeline-total
6010 While the clock is running, the current clocking time is shown in the mode
6011 line, along with the title of the task.  The clock time shown will be all
6012 time ever clocked for this task and its children.  If the task has an effort
6013 estimate (@pxref{Effort estimates}), the mode line displays the current
6014 clocking time against it@footnote{To add an effort estimate ``on the fly'',
6015 hook a function doing this to @code{org-clock-in-prepare-hook}.}  If the task
6016 is a repeating one (@pxref{Repeated tasks}), only the time since the last
6017 reset of the task @footnote{as recorded by the @code{LAST_REPEAT} property}
6018 will be shown.  More control over what time is shown can be exercised with
6019 the @code{CLOCK_MODELINE_TOTAL} property.  It may have the values
6020 @code{current} to show only the current clocking instance, @code{today} to
6021 show all time clocked on this tasks today (see also the variable
6022 @code{org-extend-today-until}), @code{all} to include all time, or
6023 @code{auto} which is the default@footnote{See also the variable
6024 @code{org-clock-modeline-total}.}.@* Clicking with @kbd{mouse-1} onto the
6025 mode line entry will pop up a menu with clocking options.
6027 @orgcmd{C-c C-x C-o,org-clock-out}
6028 @vindex org-log-note-clock-out
6029 Stop the clock (clock-out).  This inserts another timestamp at the same
6030 location where the clock was last started.  It also directly computes
6031 the resulting time in inserts it after the time range as @samp{=>
6032 HH:MM}.  See the variable @code{org-log-note-clock-out} for the
6033 possibility to record an additional note together with the clock-out
6034 timestamp@footnote{The corresponding in-buffer setting is:
6035 @code{#+STARTUP: lognoteclock-out}}.
6036 @orgcmd{C-c C-x C-e,org-clock-modify-effort-estimate}
6037 Update the effort estimate for the current clock task.
6038 @kindex C-c C-y
6039 @kindex C-c C-c
6040 @orgcmdkkc{C-c C-c,C-c C-y,org-evaluate-time-range}
6041 Recompute the time interval after changing one of the timestamps.  This
6042 is only necessary if you edit the timestamps directly.  If you change
6043 them with @kbd{S-@key{cursor}} keys, the update is automatic.
6044 @orgcmd{C-S-@key{up/down},org-clock-timestamps-up/down}
6045 On @code{CLOCK} log lines, increase/decrease both timestamps at the same
6046 time so that duration keeps the same.
6047 @orgcmd{C-c C-t,org-todo}
6048 Changing the TODO state of an item to DONE automatically stops the clock
6049 if it is running in this same item.
6050 @orgcmd{C-c C-x C-x,org-clock-cancel}
6051 Cancel the current clock.  This is useful if a clock was started by
6052 mistake, or if you ended up working on something else.
6053 @orgcmd{C-c C-x C-j,org-clock-goto}
6054 Jump to the headline of the currently clocked in task.  With a @kbd{C-u}
6055 prefix arg, select the target task from a list of recently clocked tasks.
6056 @orgcmd{C-c C-x C-d,org-clock-display}
6057 @vindex org-remove-highlights-with-change
6058 Display time summaries for each subtree in the current buffer.  This puts
6059 overlays at the end of each headline, showing the total time recorded under
6060 that heading, including the time of any subheadings.  You can use visibility
6061 cycling to study the tree, but the overlays disappear when you change the
6062 buffer (see variable @code{org-remove-highlights-with-change}) or press
6063 @kbd{C-c C-c}.
6064 @end table
6066 The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
6067 the agenda (@pxref{Weekly/daily agenda}) to show which tasks have been
6068 worked on or closed during a day.
6070 @node The clock table, Resolving idle time, Clocking commands, Clocking work time
6071 @subsection The clock table
6072 @cindex clocktable, dynamic block
6073 @cindex report, of clocked time
6075 Org mode can produce quite complex reports based on the time clocking
6076 information.  Such a report is called a @emph{clock table}, because it is
6077 formatted as one or several Org tables.
6079 @table @kbd
6080 @orgcmd{C-c C-x C-r,org-clock-report}
6081 Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
6082 report as an Org mode table into the current file.  When the cursor is
6083 at an existing clock table, just update it.  When called with a prefix
6084 argument, jump to the first clock report in the current document and
6085 update it.  The clock table always includes also trees with
6086 @code{:ARCHIVE:} tag.
6087 @orgcmdkkc{C-c C-c,C-c C-x C-u,org-dblock-update}
6088 Update dynamic block at point.  The cursor needs to be in the
6089 @code{#+BEGIN} line of the dynamic block.
6090 @orgkey{C-u C-c C-x C-u}
6091 Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
6092 you have several clock table blocks in a buffer.
6093 @orgcmdkxkc{S-@key{left},S-@key{right},org-clocktable-try-shift}
6094 Shift the current @code{:block} interval and update the table.  The cursor
6095 needs to be in the @code{#+BEGIN: clocktable} line for this command.  If
6096 @code{:block} is @code{today}, it will be shifted to @code{today-1} etc.
6097 @end table
6100 Here is an example of the frame for a clock table as it is inserted into the
6101 buffer with the @kbd{C-c C-x C-r} command:
6103 @cindex #+BEGIN, clocktable
6104 @example
6105 #+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
6106 #+END: clocktable
6107 @end example
6108 @noindent
6109 @vindex org-clocktable-defaults
6110 The @samp{BEGIN} line and specify a number of options to define the scope,
6111 structure, and formatting of the report.  Defaults for all these options can
6112 be configured in the variable @code{org-clocktable-defaults}.
6114 @noindent First there are options that determine which clock entries are to
6115 be selected:
6116 @example
6117 :maxlevel    @r{Maximum level depth to which times are listed in the table.}
6118              @r{Clocks at deeper levels will be summed into the upper level.}
6119 :scope       @r{The scope to consider.  This can be any of the following:}
6120              nil        @r{the current buffer or narrowed region}
6121              file       @r{the full current buffer}
6122              subtree    @r{the subtree where the clocktable is located}
6123              tree@var{N}      @r{the surrounding level @var{N} tree, for example @code{tree3}}
6124              tree       @r{the surrounding level 1 tree}
6125              agenda     @r{all agenda files}
6126              ("file"..) @r{scan these files}
6127              file-with-archives    @r{current file and its archives}
6128              agenda-with-archives  @r{all agenda files, including archives}
6129 :block       @r{The time block to consider.  This block is specified either}
6130              @r{absolute, or relative to the current time and may be any of}
6131              @r{these formats:}
6132              2007-12-31    @r{New year eve 2007}
6133              2007-12       @r{December 2007}
6134              2007-W50      @r{ISO-week 50 in 2007}
6135              2007-Q2       @r{2nd quarter in 2007}
6136              2007          @r{the year 2007}
6137              today, yesterday, today-@var{N}          @r{a relative day}
6138              thisweek, lastweek, thisweek-@var{N}     @r{a relative week}
6139              thismonth, lastmonth, thismonth-@var{N}  @r{a relative month}
6140              thisyear, lastyear, thisyear-@var{N}     @r{a relative year}
6141              @r{Use @kbd{S-@key{left}/@key{right}} keys to shift the time interval.}
6142 :tstart      @r{A time string specifying when to start considering times.}
6143 :tend        @r{A time string specifying when to stop considering times.}
6144 :step        @r{@code{week} or @code{day}, to split the table into chunks.}
6145              @r{To use this, @code{:block} or @code{:tstart}, @code{:tend} are needed.}
6146 :stepskip0   @r{Do not show steps that have zero time.}
6147 :fileskip0   @r{Do not show table sections from files which did not contribute.}
6148 :tags        @r{A tags match to select entries that should contribute.  See}
6149              @r{@ref{Matching tags and properties} for the match syntax.}
6150 @end example
6152 Then there are options which determine the formatting of the table.  There
6153 options are interpreted by the function @code{org-clocktable-write-default},
6154 but you can specify your own function using the @code{:formatter} parameter.
6155 @example
6156 :emphasize   @r{When @code{t}, emphasize level one and level two items.}
6157 :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".}
6158 :link        @r{Link the item headlines in the table to their origins.}
6159 :narrow      @r{An integer to limit the width of the headline column in}
6160              @r{the org table.  If you write it like @samp{50!}, then the}
6161              @r{headline will also be shortened in export.}
6162 :indent      @r{Indent each headline field according to its level.}
6163 :tcolumns    @r{Number of columns to be used for times.  If this is smaller}
6164              @r{than @code{:maxlevel}, lower levels will be lumped into one column.}
6165 :level       @r{Should a level number column be included?}
6166 :compact     @r{Abbreviation for @code{:level nil :indent t :narrow 40! :tcolumns 1}}
6167              @r{All are overwritten except if there is an explicit @code{:narrow}}
6168 :timestamp   @r{A timestamp for the entry, when available.  Look for SCHEDULED,}
6169              @r{DEADLINE, TIMESTAMP and TIMESTAMP_IA, in this order.}
6170 :properties  @r{List of properties that should be shown in the table.  Each}
6171              @r{property will get its own column.}
6172 :inherit-props @r{When this flag is @code{t}, the values for @code{:properties} will be inherited.}
6173 :formula     @r{Content of a @code{#+TBLFM} line to be added and evaluated.}
6174              @r{As a special case, @samp{:formula %} adds a column with % time.}
6175              @r{If you do not specify a formula here, any existing formula}
6176              @r{below the clock table will survive updates and be evaluated.}
6177 :formatter   @r{A function to format clock data and insert it into the buffer.}
6178 @end example
6179 To get a clock summary of the current level 1 tree, for the current
6180 day, you could write
6181 @example
6182 #+BEGIN: clocktable :maxlevel 2 :block today :scope tree1 :link t
6183 #+END: clocktable
6184 @end example
6185 @noindent
6186 and to use a specific time range you could write@footnote{Note that all
6187 parameters must be specified in a single line---the line is broken here
6188 only to fit it into the manual.}
6189 @example
6190 #+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>"
6191                     :tend "<2006-08-10 Thu 12:00>"
6192 #+END: clocktable
6193 @end example
6194 A summary of the current subtree with % times would be
6195 @example
6196 #+BEGIN: clocktable :scope subtree :link t :formula %
6197 #+END: clocktable
6198 @end example
6199 A horizontally compact representation of everything clocked during last week
6200 would be
6201 @example
6202 #+BEGIN: clocktable :scope agenda :block lastweek :compact t
6203 #+END: clocktable
6204 @end example
6206 @node Resolving idle time,  , The clock table, Clocking work time
6207 @subsection Resolving idle time
6208 @cindex resolve idle time
6210 @cindex idle, resolve, dangling
6211 If you clock in on a work item, and then walk away from your
6212 computer---perhaps to take a phone call---you often need to ``resolve'' the
6213 time you were away by either subtracting it from the current clock, or
6214 applying it to another one.
6216 @vindex org-clock-idle-time
6217 By customizing the variable @code{org-clock-idle-time} to some integer, such
6218 as 10 or 15, Emacs can alert you when you get back to your computer after
6219 being idle for that many minutes@footnote{On computers using Mac OS X,
6220 idleness is based on actual user idleness, not just Emacs' idle time.  For
6221 X11, you can install a utility program @file{x11idle.c}, available in the
6222 UTILITIES directory of the Org git distribution, to get the same general
6223 treatment of idleness.  On other systems, idle time refers to Emacs idle time
6224 only.}, and ask what you want to do with the idle time.  There will be a
6225 question waiting for you when you get back, indicating how much idle time has
6226 passed (constantly updated with the current amount), as well as a set of
6227 choices to correct the discrepancy:
6229 @table @kbd
6230 @item k
6231 To keep some or all of the minutes and stay clocked in, press @kbd{k}.  Org
6232 will ask how many of the minutes to keep.  Press @key{RET} to keep them all,
6233 effectively changing nothing, or enter a number to keep that many minutes.
6234 @item K
6235 If you use the shift key and press @kbd{K}, it will keep however many minutes
6236 you request and then immediately clock out of that task.  If you keep all of
6237 the minutes, this is the same as just clocking out of the current task.
6238 @item s
6239 To keep none of the minutes, use @kbd{s} to subtract all the away time from
6240 the clock, and then check back in from the moment you returned.
6241 @item S
6242 To keep none of the minutes and just clock out at the start of the away time,
6243 use the shift key and press @kbd{S}.  Remember that using shift will always
6244 leave you clocked out, no matter which option you choose.
6245 @item C
6246 To cancel the clock altogether, use @kbd{C}.  Note that if instead of
6247 canceling you subtract the away time, and the resulting clock amount is less
6248 than a minute, the clock will still be canceled rather than clutter up the
6249 log with an empty entry.
6250 @end table
6252 What if you subtracted those away minutes from the current clock, and now
6253 want to apply them to a new clock?  Simply clock in to any task immediately
6254 after the subtraction.  Org will notice that you have subtracted time ``on
6255 the books'', so to speak, and will ask if you want to apply those minutes to
6256 the next task you clock in on.
6258 There is one other instance when this clock resolution magic occurs.  Say you
6259 were clocked in and hacking away, and suddenly your cat chased a mouse who
6260 scared a hamster that crashed into your UPS's power button!  You suddenly
6261 lose all your buffers, but thanks to auto-save you still have your recent Org
6262 mode changes, including your last clock in.
6264 If you restart Emacs and clock into any task, Org will notice that you have a
6265 dangling clock which was never clocked out from your last session.  Using
6266 that clock's starting time as the beginning of the unaccounted-for period,
6267 Org will ask how you want to resolve that time.  The logic and behavior is
6268 identical to dealing with away time due to idleness; it is just happening due
6269 to a recovery event rather than a set amount of idle time.
6271 You can also check all the files visited by your Org agenda for dangling
6272 clocks at any time using @kbd{M-x org-resolve-clocks}.
6274 @node Effort estimates, Relative timer, Clocking work time, Dates and Times
6275 @section Effort estimates
6276 @cindex effort estimates
6278 @cindex property, Effort
6279 @vindex org-effort-property
6280 If you want to plan your work in a very detailed way, or if you need to
6281 produce offers with quotations of the estimated work effort, you may want to
6282 assign effort estimates to entries.  If you are also clocking your work, you
6283 may later want to compare the planned effort with the actual working time, a
6284 great way to improve planning estimates.  Effort estimates are stored in a
6285 special property @samp{Effort}@footnote{You may change the property being
6286 used with the variable @code{org-effort-property}.}.  You can set the effort
6287 for an entry with the following commands:
6289 @table @kbd
6290 @orgcmd{C-c C-x e,org-set-effort}
6291 Set the effort estimate for the current entry.  With a numeric prefix
6292 argument, set it to the Nth allowed value (see below).  This command is also
6293 accessible from the agenda with the @kbd{e} key.
6294 @orgcmd{C-c C-x C-e,org-clock-modify-effort-estimate}
6295 Modify the effort estimate of the item currently being clocked.
6296 @end table
6298 Clearly the best way to work with effort estimates is through column view
6299 (@pxref{Column view}).  You should start by setting up discrete values for
6300 effort estimates, and a @code{COLUMNS} format that displays these values
6301 together with clock sums (if you want to clock your time).  For a specific
6302 buffer you can use
6304 @example
6305 #+PROPERTY: Effort_ALL 0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00
6306 #+COLUMNS: %40ITEM(Task) %17Effort(Estimated Effort)@{:@} %CLOCKSUM
6307 @end example
6309 @noindent
6310 @vindex org-global-properties
6311 @vindex org-columns-default-format
6312 or, even better, you can set up these values globally by customizing the
6313 variables @code{org-global-properties} and @code{org-columns-default-format}.
6314 In particular if you want to use this setup also in the agenda, a global
6315 setup may be advised.
6317 The way to assign estimates to individual items is then to switch to column
6318 mode, and to use @kbd{S-@key{right}} and @kbd{S-@key{left}} to change the
6319 value.  The values you enter will immediately be summed up in the hierarchy.
6320 In the column next to it, any clocked time will be displayed.
6322 @vindex org-agenda-columns-add-appointments-to-effort-sum
6323 If you switch to column view in the daily/weekly agenda, the effort column
6324 will summarize the estimated work effort for each day@footnote{Please note
6325 the pitfalls of summing hierarchical data in a flat list (@pxref{Agenda
6326 column view}).}, and you can use this to find space in your schedule.  To get
6327 an overview of the entire part of the day that is committed, you can set the
6328 option @code{org-agenda-columns-add-appointments-to-effort-sum}.  The
6329 appointments on a day that take place over a specified time interval will
6330 then also be added to the load estimate of the day.
6332 Effort estimates can be used in secondary agenda filtering that is triggered
6333 with the @kbd{/} key in the agenda (@pxref{Agenda commands}).  If you have
6334 these estimates defined consistently, two or three key presses will narrow
6335 down the list to stuff that fits into an available time slot.
6337 @node Relative timer, Countdown timer, Effort estimates, Dates and Times
6338 @section Taking notes with a relative timer
6339 @cindex relative timer
6341 When taking notes during, for example, a meeting or a video viewing, it can
6342 be useful to have access to times relative to a starting time.  Org provides
6343 such a relative timer and make it easy to create timed notes.
6345 @table @kbd
6346 @orgcmd{C-c C-x .,org-timer}
6347 Insert a relative time into the buffer.  The first time you use this, the
6348 timer will be started.  When called with a prefix argument, the timer is
6349 restarted.
6350 @orgcmd{C-c C-x -,org-timer-item}
6351 Insert a description list item with the current relative time.  With a prefix
6352 argument, first reset the timer to 0.
6353 @orgcmd{M-@key{RET},org-insert-heading}
6354 Once the timer list is started, you can also use @kbd{M-@key{RET}} to insert
6355 new timer items.
6356 @c for key sequences with a comma, command name macros fail :(
6357 @kindex C-c C-x ,
6358 @item C-c C-x ,
6359 Pause the timer, or continue it if it is already paused
6360 (@command{org-timer-pause-or-continue}).
6361 @c removed the sentence because it is redundant to the following item
6362 @kindex C-u C-c C-x ,
6363 @item C-u C-c C-x ,
6364 Stop the timer.  After this, you can only start a new timer, not continue the
6365 old one.  This command also removes the timer from the mode line.
6366 @orgcmd{C-c C-x 0,org-timer-start}
6367 Reset the timer without inserting anything into the buffer.  By default, the
6368 timer is reset to 0.  When called with a @kbd{C-u} prefix, reset the timer to
6369 specific starting offset.  The user is prompted for the offset, with a
6370 default taken from a timer string at point, if any, So this can be used to
6371 restart taking notes after a break in the process.  When called with a double
6372 prefix argument @kbd{C-u C-u}, change all timer strings in the active region
6373 by a certain amount.  This can be used to fix timer strings if the timer was
6374 not started at exactly the right moment.
6375 @end table
6377 @node Countdown timer,  , Relative timer, Dates and Times
6378 @section Countdown timer
6379 @cindex Countdown timer
6380 @kindex C-c C-x ;
6381 @kindex ;
6383 Calling @code{org-timer-set-timer} from an Org mode buffer runs a countdown
6384 timer.  Use @kbd{;} from agenda buffers, @key{C-c C-x ;} everywhere else.
6386 @code{org-timer-set-timer} prompts the user for a duration and displays a
6387 countdown timer in the modeline.  @code{org-timer-default-timer} sets the
6388 default countdown value.  Giving a prefix numeric argument overrides this
6389 default value.
6391 @node Capture - Refile - Archive, Agenda Views, Dates and Times, Top
6392 @chapter Capture - Refile - Archive
6393 @cindex capture
6395 An important part of any organization system is the ability to quickly
6396 capture new ideas and tasks, and to associate reference material with them.
6397 Org does this using a process called @i{capture}.  It also can store files
6398 related to a task (@i{attachments}) in a special directory.  Once in the
6399 system, tasks and projects need to be moved around.  Moving completed project
6400 trees to an archive file keeps the system compact and fast.
6402 @menu
6403 * Capture::                     Capturing new stuff
6404 * Attachments::                 Add files to tasks
6405 * RSS Feeds::                   Getting input from RSS feeds
6406 * Protocols::                   External (e.g.@: Browser) access to Emacs and Org
6407 * Refiling notes::              Moving a tree from one place to another
6408 * Archiving::                   What to do with finished projects
6409 @end menu
6411 @node Capture, Attachments, Capture - Refile - Archive, Capture - Refile - Archive
6412 @section Capture
6413 @cindex capture
6415 Org's method for capturing new items is heavily inspired by John Wiegley
6416 excellent remember package.  Up to version 6.36 Org used a special setup
6417 for @file{remember.el}.  @file{org-remember.el} is still part of Org mode for
6418 backward compatibility with existing setups.  You can find the documentation
6419 for org-remember at @url{http://orgmode.org/org-remember.pdf}.
6421 The new capturing setup described here is preferred and should be used by new
6422 users.  To convert your @code{org-remember-templates}, run the command
6423 @example
6424 @kbd{M-x org-capture-import-remember-templates @key{RET}}
6425 @end example
6426 @noindent and then customize the new variable with @kbd{M-x
6427 customize-variable org-capture-templates}, check the result, and save the
6428 customization.  You can then use both remember and capture until
6429 you are familiar with the new mechanism.
6431 Capture lets you quickly store notes with little interruption of your work
6432 flow.  The basic process of capturing is very similar to remember, but Org
6433 does enhance it with templates and more.
6435 @menu
6436 * Setting up capture::          Where notes will be stored
6437 * Using capture::               Commands to invoke and terminate capture
6438 * Capture templates::           Define the outline of different note types
6439 @end menu
6441 @node Setting up capture, Using capture, Capture, Capture
6442 @subsection Setting up capture
6444 The following customization sets a default target file for notes, and defines
6445 a global key@footnote{Please select your own key, @kbd{C-c c} is only a
6446 suggestion.}  for capturing new material.
6448 @vindex org-default-notes-file
6449 @example
6450 (setq org-default-notes-file (concat org-directory "/notes.org"))
6451 (define-key global-map "\C-cc" 'org-capture)
6452 @end example
6454 @node Using capture, Capture templates, Setting up capture, Capture
6455 @subsection Using capture
6457 @table @kbd
6458 @orgcmd{C-c c,org-capture}
6459 Call the command @code{org-capture}.  Note that this keybinding is global and
6460 not active by default - you need to install it.  If you have templates
6461 @cindex date tree
6462 defined @pxref{Capture templates}, it will offer these templates for
6463 selection or use a new Org outline node as the default template.  It will
6464 insert the template into the target file and switch to an indirect buffer
6465 narrowed to this new node.  You may then insert the information you want.
6467 @orgcmd{C-c C-c,org-capture-finalize}
6468 Once you have finished entering information into the capture buffer, @kbd{C-c
6469 C-c} will return you to the window configuration before the capture process,
6470 so that you can resume your work without further distraction.  When called
6471 with a prefix arg, finalize and then jump to the captured item.
6473 @orgcmd{C-c C-w,org-capture-refile}
6474 Finalize the capture process by refiling (@pxref{Refiling notes}) the note to
6475 a different place.  Please realize that this is a normal refiling command
6476 that will be executed---so the cursor position at the moment you run this
6477 command is important.  If you have inserted a tree with a parent and
6478 children, first move the cursor back to the parent.  Any prefix argument
6479 given to this command will be passed on to the @code{org-refile} command.
6481 @orgcmd{C-c C-k,org-capture-kill}
6482 Abort the capture process and return to the previous state.
6484 @end table
6486 You can also call @code{org-capture} in a special way from the agenda, using
6487 the @kbd{k c} key combination.  With this access, any timestamps inserted by
6488 the selected capture template will default to the cursor date in the agenda,
6489 rather than to the current date.
6491 To find the locations of the last stored capture, use @code{org-capture} with
6492 prefix commands:
6494 @table @kbd
6495 @orgkey{C-u C-c c}
6496 Visit the target location of a capture template.  You get to select the
6497 template in the usual way.
6498 @orgkey{C-u C-u C-c c}
6499 Visit the last stored capture item in its buffer.
6500 @end table
6502 @vindex org-capture-bookmark
6503 @cindex org-capture-last-stored
6504 You can also jump to the bookmark @code{org-capture-last-stored}, which will
6505 automatically be created unless you set @code{org-capture-bookmark} to
6506 @code{nil}.
6508 To insert the capture at point in an Org buffer, call @code{org-capture} with
6509 a @code{C-0} prefix argument.
6511 @node Capture templates,  , Using capture, Capture
6512 @subsection Capture templates
6513 @cindex templates, for Capture
6515 You can use templates for different types of capture items, and
6516 for different target locations.  The easiest way to create such templates is
6517 through the customize interface.
6519 @table @kbd
6520 @orgkey{C-c c C}
6521 Customize the variable @code{org-capture-templates}.
6522 @end table
6524 Before we give the formal description of template definitions, let's look at
6525 an example.  Say you would like to use one template to create general TODO
6526 entries, and you want to put these entries under the heading @samp{Tasks} in
6527 your file @file{~/org/gtd.org}.  Also, a date tree in the file
6528 @file{journal.org} should capture journal entries.  A possible configuration
6529 would look like:
6531 @example
6532 (setq org-capture-templates
6533  '(("t" "Todo" entry (file+headline "~/org/gtd.org" "Tasks")
6534         "* TODO %?\n  %i\n  %a")
6535    ("j" "Journal" entry (file+datetree "~/org/journal.org")
6536         "* %?\nEntered on %U\n  %i\n  %a")))
6537 @end example
6539 @noindent If you then press @kbd{C-c c t}, Org will prepare the template
6540 for you like this:
6541 @example
6542 * TODO
6543   [[file:@var{link to where you initiated capture}]]
6544 @end example
6546 @noindent
6547 During expansion of the template, @code{%a} has been replaced by a link to
6548 the location from where you called the capture command.  This can be
6549 extremely useful for deriving tasks from emails, for example.  You fill in
6550 the task definition, press @code{C-c C-c} and Org returns you to the same
6551 place where you started the capture process.
6553 To define special keys to capture to a particular template without going
6554 through the interactive template selection, you can create your key binding
6555 like this:
6557 @lisp
6558 (define-key global-map "\C-cx"
6559    (lambda () (interactive) (org-capture nil "x")))
6560 @end lisp
6562 @menu
6563 * Template elements::           What is needed for a complete template entry
6564 * Template expansion::          Filling in information about time and context
6565 @end menu
6567 @node Template elements, Template expansion, Capture templates, Capture templates
6568 @subsubsection Template elements
6570 Now lets look at the elements of a template definition.  Each entry in
6571 @code{org-capture-templates} is a list with the following items:
6573 @table @var
6574 @item keys
6575 The keys that will select the template, as a string, characters
6576 only, for example @code{"a"} for a template to be selected with a
6577 single key, or @code{"bt"} for selection with two keys.  When using
6578 several keys, keys using the same prefix key must be sequential
6579 in the list and preceded by a 2-element entry explaining the
6580 prefix key, for example
6581 @example
6582          ("b" "Templates for marking stuff to buy")
6583 @end example
6584 @noindent If you do not define a template for the @kbd{C} key, this key will
6585 be used to open the customize buffer for this complex variable.
6587 @item description
6588 A short string describing the template, which will be shown during
6589 selection.
6591 @item type
6592 The type of entry, a symbol.  Valid values are:
6593 @table @code
6594 @item entry
6595 An Org mode node, with a headline.  Will be filed as the child of the target
6596 entry or as a top-level entry.  The target file should be an Org mode file.
6597 @item item
6598 A plain list item, placed in the first plain  list at the target
6599 location.  Again the target file should be an Org file.
6600 @item checkitem
6601 A checkbox item.  This only differs from the plain list item by the
6602 default template.
6603 @item table-line
6604 a new line in the first table at the target location.  Where exactly the
6605 line will be inserted depends on the properties @code{:prepend} and
6606 @code{:table-line-pos} (see below).
6607 @item plain
6608 Text to be inserted as it is.
6609 @end table
6611 @item target
6612 @vindex org-default-notes-file
6613 Specification of where the captured item should be placed.  In Org mode
6614 files, targets usually define a node.  Entries will become children of this
6615 node.  Other types will be added to the table or list in the body of this
6616 node.  Most target specifications contain a file name.  If that file name is
6617 the empty string, it defaults to @code{org-default-notes-file}.  A file can
6618 also be given as a variable, function, or Emacs Lisp form.
6620 Valid values are:
6621 @table @code
6622 @item (file "path/to/file")
6623 Text will be placed at the beginning or end of that file.
6625 @item (id "id of existing org entry")
6626 Filing as child of this entry, or in the body of the entry.
6628 @item (file+headline "path/to/file" "node headline")
6629 Fast configuration if the target heading is unique in the file.
6631 @item (file+olp "path/to/file" "Level 1 heading" "Level 2" ...)
6632 For non-unique headings, the full path is safer.
6634 @item (file+regexp  "path/to/file" "regexp to find location")
6635 Use a regular expression to position the cursor.
6637 @item (file+datetree "path/to/file")
6638 Will create a heading in a date tree for today's date.
6640 @item (file+datetree+prompt "path/to/file")
6641 Will create a heading in a date tree, but will prompt for the date.
6643 @item (file+function "path/to/file" function-finding-location)
6644 A function to find the right location in the file.
6646 @item (clock)
6647 File to the entry that is currently being clocked.
6649 @item (function function-finding-location)
6650 Most general way, write your own function to find both
6651 file and location.
6652 @end table
6654 @item template
6655 The template for creating the capture item.  If you leave this empty, an
6656 appropriate default template will be used.  Otherwise this is a string with
6657 escape codes, which will be replaced depending on time and context of the
6658 capture call.  The string with escapes may be loaded from a template file,
6659 using the special syntax @code{(file "path/to/template")}.  See below for
6660 more details.
6662 @item properties
6663 The rest of the entry is a property list of additional options.
6664 Recognized properties are:
6665 @table @code
6666 @item :prepend
6667 Normally new captured information will be appended at
6668 the target location (last child, last table line, last list item...).
6669 Setting this property will change that.
6671 @item :immediate-finish
6672 When set, do not offer to edit the information, just
6673 file it away immediately.  This makes sense if the template only needs
6674 information that can be added automatically.
6676 @item :empty-lines
6677 Set this to the number of lines to insert
6678 before and after the new item.  Default 0, only common other value is 1.
6680 @item :clock-in
6681 Start the clock in this item.
6683 @item :clock-keep
6684 Keep the clock running when filing the captured entry.
6686 @item :clock-resume
6687 If starting the capture interrupted a clock, restart that clock when finished
6688 with the capture.  Note that @code{:clock-keep} has precedence over
6689 @code{:clock-resume}.  When setting both to @code{t}, the current clock will
6690 run and the previous one will not be resumed.
6692 @item :unnarrowed
6693 Do not narrow the target buffer, simply show the full buffer.  Default is to
6694 narrow it so that you only see the new material.
6696 @item :table-line-pos
6697 Specification of the location in the table where the new line should be
6698 inserted.  It should be a string like @code{"II-3"} meaning that the new
6699 line should become the third line before the second horizontal separator
6700 line.
6702 @item :kill-buffer
6703 If the target file was not yet visited when capture was invoked, kill the
6704 buffer again after capture is completed.
6705 @end table
6706 @end table
6708 @node Template expansion,  , Template elements, Capture templates
6709 @subsubsection Template expansion
6711 In the template itself, special @kbd{%}-escapes@footnote{If you need one of
6712 these sequences literally, escape the @kbd{%} with a backslash.}  allow
6713 dynamic insertion of content.  The templates are expanded in the order given here:
6715 @smallexample
6716 %[@var{file}]     @r{Insert the contents of the file given by @var{file}.}
6717 %(@var{sexp})     @r{Evaluate Elisp @var{sexp} and replace with the result.}
6718             @r{The sexp must return a string.}
6719 %<...>      @r{The result of format-time-string on the ... format specification.}
6720 %t          @r{Timestamp, date only.}
6721 %T          @r{Timestamp, with date and time.}
6722 %u, %U      @r{Like the above, but inactive timestamps.}
6723 %a          @r{Annotation, normally the link created with @code{org-store-link}.}
6724 %i          @r{Initial content, the region when capture is called while the}
6725             @r{region is active.}
6726             @r{The entire text will be indented like @code{%i} itself.}
6727 %A          @r{Like @code{%a}, but prompt for the description part.}
6728 %c          @r{Current kill ring head.}
6729 %x          @r{Content of the X clipboard.}
6730 %k          @r{Title of the currently clocked task.}
6731 %K          @r{Link to the currently clocked task.}
6732 %n          @r{User name (taken from @code{user-full-name}).}
6733 %f          @r{File visited by current buffer when org-capture was called.}
6734 %F          @r{Full path of the file or directory visited by current buffer.}
6735 %:keyword   @r{Specific information for certain link types, see below.}
6736 %^g         @r{Prompt for tags, with completion on tags in target file.}
6737 %^G         @r{Prompt for tags, with completion all tags in all agenda files.}
6738 %^t         @r{Like @code{%t}, but prompt for date.  Similarly @code{%^T}, @code{%^u}, @code{%^U}.}
6739             @r{You may define a prompt like @code{%^@{Birthday@}t}.}
6740 %^C         @r{Interactive selection of which kill or clip to use.}
6741 %^L         @r{Like @code{%^C}, but insert as link.}
6742 %^@{@var{prop}@}p   @r{Prompt the user for a value for property @var{prop}.}
6743 %^@{@var{prompt}@}  @r{prompt the user for a string and replace this sequence with it.}
6744             @r{You may specify a default value and a completion table with}
6745             @r{%^@{prompt|default|completion2|completion3...@}.}
6746             @r{The arrow keys access a prompt-specific history.}
6747 %\n         @r{Insert the text entered at the nth %^@{@var{prompt}@}, where @code{n} is}
6748             @r{a number, starting from 1.}
6749 %?          @r{After completing the template, position cursor here.}
6750 @end smallexample
6752 @noindent
6753 For specific link types, the following keywords will be
6754 defined@footnote{If you define your own link types (@pxref{Adding
6755 hyperlink types}), any property you store with
6756 @code{org-store-link-props} can be accessed in capture templates in a
6757 similar way.}:
6759 @vindex org-from-is-user-regexp
6760 @smallexample
6761 Link type                        |  Available keywords
6762 ---------------------------------+----------------------------------------------
6763 bbdb                             |  %:name %:company
6764 irc                              |  %:server %:port %:nick
6765 vm, vm-imap, wl, mh, mew, rmail  |  %:type %:subject %:message-id
6766                                  |  %:from %:fromname %:fromaddress
6767                                  |  %:to   %:toname   %:toaddress
6768                                  |  %:date @r{(message date header field)}
6769                                  |  %:date-timestamp @r{(date as active timestamp)}
6770                                  |  %:date-timestamp-inactive @r{(date as inactive timestamp)}
6771                                  |  %: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}.}}
6772 gnus                             |  %:group, @r{for messages also all email fields}
6773 w3, w3m                          |  %:url
6774 info                             |  %:file %:node
6775 calendar                         |  %:date
6776 @end smallexample
6778 @noindent
6779 To place the cursor after template expansion use:
6781 @smallexample
6782 %?          @r{After completing the template, position cursor here.}
6783 @end smallexample
6786 @node Attachments, RSS Feeds, Capture, Capture - Refile - Archive
6787 @section Attachments
6788 @cindex attachments
6790 @vindex org-attach-directory
6791 It is often useful to associate reference material with an outline node/task.
6792 Small chunks of plain text can simply be stored in the subtree of a project.
6793 Hyperlinks (@pxref{Hyperlinks}) can establish associations with
6794 files that live elsewhere on your computer or in the cloud, like emails or
6795 source code files belonging to a project.  Another method is @i{attachments},
6796 which are files located in a directory belonging to an outline node.  Org
6797 uses directories named by the unique ID of each entry.  These directories are
6798 located in the @file{data} directory which lives in the same directory where
6799 your Org file lives@footnote{If you move entries or Org files from one
6800 directory to another, you may want to configure @code{org-attach-directory}
6801 to contain an absolute path.}.  If you initialize this directory with
6802 @code{git init}, Org will automatically commit changes when it sees them.
6803 The attachment system has been contributed to Org by John Wiegley.
6805 In cases where it seems better to do so, you can also attach a directory of your
6806 choice to an entry.  You can also make children inherit the attachment
6807 directory from a parent, so that an entire subtree uses the same attached
6808 directory.
6810 @noindent The following commands deal with attachments:
6812 @table @kbd
6814 @orgcmd{C-c C-a,org-attach}
6815 The dispatcher for commands related to the attachment system.  After these
6816 keys, a list of commands is displayed and you must press an additional key
6817 to select a command:
6819 @table @kbd
6820 @orgcmdtkc{a,C-c C-a a,org-attach-attach}
6821 @vindex org-attach-method
6822 Select a file and move it into the task's attachment directory.  The file
6823 will be copied, moved, or linked, depending on @code{org-attach-method}.
6824 Note that hard links are not supported on all systems.
6826 @kindex C-c C-a c
6827 @kindex C-c C-a m
6828 @kindex C-c C-a l
6829 @item c/m/l
6830 Attach a file using the copy/move/link method.
6831 Note that hard links are not supported on all systems.
6833 @orgcmdtkc{n,C-c C-a n,org-attach-new}
6834 Create a new attachment as an Emacs buffer.
6836 @orgcmdtkc{z,C-c C-a z,org-attach-sync}
6837 Synchronize the current task with its attachment directory, in case you added
6838 attachments yourself.
6840 @orgcmdtkc{o,C-c C-a o,org-attach-open}
6841 @vindex org-file-apps
6842 Open current task's attachment.  If there is more than one, prompt for a
6843 file name first.  Opening will follow the rules set by @code{org-file-apps}.
6844 For more details, see the information on following hyperlinks
6845 (@pxref{Handling links}).
6847 @orgcmdtkc{O,C-c C-a O,org-attach-open-in-emacs}
6848 Also open the attachment, but force opening the file in Emacs.
6850 @orgcmdtkc{f,C-c C-a f,org-attach-reveal}
6851 Open the current task's attachment directory.
6853 @orgcmdtkc{F,C-c C-a F,org-attach-reveal-in-emacs}
6854 Also open the directory, but force using @command{dired} in Emacs.
6856 @orgcmdtkc{d,C-c C-a d,org-attach-delete-one}
6857 Select and delete a single attachment.
6859 @orgcmdtkc{D,C-c C-a D,org-attach-delete-all}
6860 Delete all of a task's attachments.  A safer way is to open the directory in
6861 @command{dired} and delete from there.
6863 @orgcmdtkc{s,C-c C-a s,org-attach-set-directory}
6864 @cindex property, ATTACH_DIR
6865 Set a specific directory as the entry's attachment directory.  This works by
6866 putting the directory path into the @code{ATTACH_DIR} property.
6868 @orgcmdtkc{i,C-c C-a i,org-attach-set-inherit}
6869 @cindex property, ATTACH_DIR_INHERIT
6870 Set the @code{ATTACH_DIR_INHERIT} property, so that children will use the
6871 same directory for attachments as the parent does.
6872 @end table
6873 @end table
6875 @node RSS Feeds, Protocols, Attachments, Capture - Refile - Archive
6876 @section RSS feeds
6877 @cindex RSS feeds
6878 @cindex Atom feeds
6880 Org can add and change entries based on information found in RSS feeds and
6881 Atom feeds.  You could use this to make a task out of each new podcast in a
6882 podcast feed.  Or you could use a phone-based note-creating service on the
6883 web to import tasks into Org.  To access feeds, configure the variable
6884 @code{org-feed-alist}.  The docstring of this variable has detailed
6885 information.  Here is just an example:
6887 @example
6888 (setq org-feed-alist
6889      '(("Slashdot"
6890          "http://rss.slashdot.org/Slashdot/slashdot"
6891          "~/txt/org/feeds.org" "Slashdot Entries")))
6892 @end example
6894 @noindent
6895 will configure that new items from the feed provided by
6896 @code{rss.slashdot.org} will result in new entries in the file
6897 @file{~/org/feeds.org} under the heading @samp{Slashdot Entries}, whenever
6898 the following command is used:
6900 @table @kbd
6901 @orgcmd{C-c C-x g,org-feed-update-all}
6902 @item C-c C-x g
6903 Collect items from the feeds configured in @code{org-feed-alist} and act upon
6904 them.
6905 @orgcmd{C-c C-x G,org-feed-goto-inbox}
6906 Prompt for a feed name and go to the inbox configured for this feed.
6907 @end table
6909 Under the same headline, Org will create a drawer @samp{FEEDSTATUS} in which
6910 it will store information about the status of items in the feed, to avoid
6911 adding the same item several times.  You should add @samp{FEEDSTATUS} to the
6912 list of drawers in that file:
6914 @example
6915 #+DRAWERS: LOGBOOK PROPERTIES FEEDSTATUS
6916 @end example
6918 For more information, including how to read atom feeds, see
6919 @file{org-feed.el} and the docstring of @code{org-feed-alist}.
6921 @node Protocols, Refiling notes, RSS Feeds, Capture - Refile - Archive
6922 @section Protocols for external access
6923 @cindex protocols, for external access
6924 @cindex emacsserver
6926 You can set up Org for handling protocol calls from outside applications that
6927 are passed to Emacs through the @file{emacsserver}.  For example, you can
6928 configure bookmarks in your web browser to send a link to the current page to
6929 Org and create a note from it using capture (@pxref{Capture}).  Or you
6930 could create a bookmark that will tell Emacs to open the local source file of
6931 a remote website you are looking at with the browser.  See
6932 @uref{http://orgmode.org/worg/org-contrib/org-protocol.php} for detailed
6933 documentation and setup instructions.
6935 @node Refiling notes, Archiving, Protocols, Capture - Refile - Archive
6936 @section Refiling notes
6937 @cindex refiling notes
6939 When reviewing the captured data, you may want to refile some of the entries
6940 into a different list, for example into a project.  Cutting, finding the
6941 right location, and then pasting the note is cumbersome.  To simplify this
6942 process, you can use the following special command:
6944 @table @kbd
6945 @orgcmd{C-c C-w,org-refile}
6946 @vindex org-reverse-note-order
6947 @vindex org-refile-targets
6948 @vindex org-refile-use-outline-path
6949 @vindex org-outline-path-complete-in-steps
6950 @vindex org-refile-allow-creating-parent-nodes
6951 @vindex org-log-refile
6952 @vindex org-refile-use-cache
6953 Refile the entry or region at point.  This command offers possible locations
6954 for refiling the entry and lets you select one with completion.  The item (or
6955 all items in the region) is filed below the target heading as a subitem.
6956 Depending on @code{org-reverse-note-order}, it will be either the first or
6957 last subitem.@*
6958 By default, all level 1 headlines in the current buffer are considered to be
6959 targets, but you can have more complex definitions across a number of files.
6960 See the variable @code{org-refile-targets} for details.  If you would like to
6961 select a location via a file-path-like completion along the outline path, see
6962 the variables @code{org-refile-use-outline-path} and
6963 @code{org-outline-path-complete-in-steps}.  If you would like to be able to
6964 create new nodes as new parents for refiling on the fly, check the
6965 variable @code{org-refile-allow-creating-parent-nodes}.
6966 When the variable @code{org-log-refile}@footnote{with corresponding
6967 @code{#+STARTUP} keywords @code{logrefile}, @code{lognoterefile},
6968 and @code{nologrefile}} is set, a timestamp or a note will be
6969 recorded when an entry has been refiled.
6970 @orgkey{C-u C-c C-w}
6971 Use the refile interface to jump to a heading.
6972 @orgcmd{C-u C-u C-c C-w,org-refile-goto-last-stored}
6973 Jump to the location where @code{org-refile} last moved a tree to.
6974 @item C-2 C-c C-w
6975 Refile as the child of the item currently being clocked.
6976 @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}
6977 Clear the target cache.  Caching of refile targets can be turned on by
6978 setting @code{org-refile-use-cache}.  To make the command see new possible
6979 targets, you have to clear the cache with this command.
6980 @end table
6982 @node Archiving,  , Refiling notes, Capture - Refile - Archive
6983 @section Archiving
6984 @cindex archiving
6986 When a project represented by a (sub)tree is finished, you may want
6987 to move the tree out of the way and to stop it from contributing to the
6988 agenda.  Archiving is important to keep your working files compact and global
6989 searches like the construction of agenda views fast.
6991 @table @kbd
6992 @orgcmd{C-c C-x C-a,org-archive-subtree-default}
6993 @vindex org-archive-default-command
6994 Archive the current entry using the command specified in the variable
6995 @code{org-archive-default-command}.
6996 @end table
6998 @menu
6999 * Moving subtrees::             Moving a tree to an archive file
7000 * Internal archiving::          Switch off a tree but keep it in the file
7001 @end menu
7003 @node Moving subtrees, Internal archiving, Archiving, Archiving
7004 @subsection Moving a tree to the archive file
7005 @cindex external archiving
7007 The most common archiving action is to move a project tree to another file,
7008 the archive file.
7010 @table @kbd
7011 @orgcmdkskc{C-c C-x C-s,C-c $,org-archive-subtree}
7012 @vindex org-archive-location
7013 Archive the subtree starting at the cursor position to the location
7014 given by @code{org-archive-location}.
7015 @orgkey{C-u C-c C-x C-s}
7016 Check if any direct children of the current headline could be moved to
7017 the archive.  To do this, each subtree is checked for open TODO entries.
7018 If none are found, the command offers to move it to the archive
7019 location.  If the cursor is @emph{not} on a headline when this command
7020 is invoked, the level 1 trees will be checked.
7021 @end table
7023 @cindex archive locations
7024 The default archive location is a file in the same directory as the
7025 current file, with the name derived by appending @file{_archive} to the
7026 current file name.  You can also choose what heading to file archived
7027 items under, with the possibility to add them to a datetree in a file.
7028 For information and examples on how to specify the file and the heading,
7029 see the documentation string of the variable
7030 @code{org-archive-location}.
7032 There is also an in-buffer option for setting this variable, for
7033 example@footnote{For backward compatibility, the following also works:
7034 If there are several such lines in a file, each specifies the archive
7035 location for the text below it.  The first such line also applies to any
7036 text before its definition.  However, using this method is
7037 @emph{strongly} deprecated as it is incompatible with the outline
7038 structure of the document.  The correct method for setting multiple
7039 archive locations in a buffer is using properties.}:
7041 @cindex #+ARCHIVE
7042 @example
7043 #+ARCHIVE: %s_done::
7044 @end example
7046 @cindex property, ARCHIVE
7047 @noindent
7048 If you would like to have a special ARCHIVE location for a single entry
7049 or a (sub)tree, give the entry an @code{:ARCHIVE:} property with the
7050 location as the value (@pxref{Properties and Columns}).
7052 @vindex org-archive-save-context-info
7053 When a subtree is moved, it receives a number of special properties that
7054 record context information like the file from where the entry came, its
7055 outline path the archiving time etc.  Configure the variable
7056 @code{org-archive-save-context-info} to adjust the amount of information
7057 added.
7060 @node Internal archiving,  , Moving subtrees, Archiving
7061 @subsection Internal archiving
7063 If you want to just switch off (for agenda views) certain subtrees without
7064 moving them to a different file, you can use the @code{ARCHIVE tag}.
7066 A headline that is marked with the ARCHIVE tag (@pxref{Tags}) stays at
7067 its location in the outline tree, but behaves in the following way:
7068 @itemize @minus
7069 @item
7070 @vindex org-cycle-open-archived-trees
7071 It does not open when you attempt to do so with a visibility cycling
7072 command (@pxref{Visibility cycling}).  You can force cycling archived
7073 subtrees with @kbd{C-@key{TAB}}, or by setting the option
7074 @code{org-cycle-open-archived-trees}.  Also normal outline commands like
7075 @code{show-all} will open archived subtrees.
7076 @item
7077 @vindex org-sparse-tree-open-archived-trees
7078 During sparse tree construction (@pxref{Sparse trees}), matches in
7079 archived subtrees are not exposed, unless you configure the option
7080 @code{org-sparse-tree-open-archived-trees}.
7081 @item
7082 @vindex org-agenda-skip-archived-trees
7083 During agenda view construction (@pxref{Agenda Views}), the content of
7084 archived trees is ignored unless you configure the option
7085 @code{org-agenda-skip-archived-trees}, in which case these trees will always
7086 be included.  In the agenda you can press @kbd{v a} to get archives
7087 temporarily included.
7088 @item
7089 @vindex org-export-with-archived-trees
7090 Archived trees are not exported (@pxref{Exporting}), only the headline
7091 is.  Configure the details using the variable
7092 @code{org-export-with-archived-trees}.
7093 @item
7094 @vindex org-columns-skip-archived-trees
7095 Archived trees are excluded from column view unless the variable
7096 @code{org-columns-skip-archived-trees} is configured to @code{nil}.
7097 @end itemize
7099 The following commands help manage the ARCHIVE tag:
7101 @table @kbd
7102 @orgcmd{C-c C-x a,org-toggle-archive-tag}
7103 Toggle the ARCHIVE tag for the current headline.  When the tag is set,
7104 the headline changes to a shadowed face, and the subtree below it is
7105 hidden.
7106 @orgkey{C-u C-c C-x a}
7107 Check if any direct children of the current headline should be archived.
7108 To do this, each subtree is checked for open TODO entries.  If none are
7109 found, the command offers to set the ARCHIVE tag for the child.  If the
7110 cursor is @emph{not} on a headline when this command is invoked, the
7111 level 1 trees will be checked.
7112 @orgcmd{C-@kbd{TAB},org-force-cycle-archived}
7113 Cycle a tree even if it is tagged with ARCHIVE.
7114 @orgcmd{C-c C-x A,org-archive-to-archive-sibling}
7115 Move the current entry to the @emph{Archive Sibling}.  This is a sibling of
7116 the entry with the heading @samp{Archive} and the tag @samp{ARCHIVE}.  The
7117 entry becomes a child of that sibling and in this way retains a lot of its
7118 original context, including inherited tags and approximate position in the
7119 outline.
7120 @end table
7123 @node Agenda Views, Markup, Capture - Refile - Archive, Top
7124 @chapter Agenda views
7125 @cindex agenda views
7127 Due to the way Org works, TODO items, time-stamped items, and
7128 tagged headlines can be scattered throughout a file or even a number of
7129 files.  To get an overview of open action items, or of events that are
7130 important for a particular date, this information must be collected,
7131 sorted and displayed in an organized way.
7133 Org can select items based on various criteria and display them
7134 in a separate buffer.  Seven different view types are provided:
7136 @itemize @bullet
7137 @item
7138 an @emph{agenda} that is like a calendar and shows information
7139 for specific dates,
7140 @item
7141 a @emph{TODO list} that covers all unfinished
7142 action items,
7143 @item
7144 a @emph{match view}, showings headlines based on the tags, properties, and
7145 TODO state associated with them,
7146 @item
7147 a @emph{timeline view} that shows all events in a single Org file,
7148 in time-sorted view,
7149 @item
7150 a @emph{text search view} that shows all entries from multiple files
7151 that contain specified keywords,
7152 @item
7153 a @emph{stuck projects view} showing projects that currently don't move
7154 along, and
7155 @item
7156 @emph{custom views} that are special searches and combinations of different
7157 views.
7158 @end itemize
7160 @noindent
7161 The extracted information is displayed in a special @emph{agenda
7162 buffer}.  This buffer is read-only, but provides commands to visit the
7163 corresponding locations in the original Org files, and even to
7164 edit these files remotely.
7166 @vindex org-agenda-window-setup
7167 @vindex org-agenda-restore-windows-after-quit
7168 Two variables control how the agenda buffer is displayed and whether the
7169 window configuration is restored when the agenda exits:
7170 @code{org-agenda-window-setup} and
7171 @code{org-agenda-restore-windows-after-quit}.
7173 @menu
7174 * Agenda files::                Files being searched for agenda information
7175 * Agenda dispatcher::           Keyboard access to agenda views
7176 * Built-in agenda views::       What is available out of the box?
7177 * Presentation and sorting::    How agenda items are prepared for display
7178 * Agenda commands::             Remote editing of Org trees
7179 * Custom agenda views::         Defining special searches and views
7180 * Exporting Agenda Views::      Writing a view to a file
7181 * Agenda column view::          Using column view for collected entries
7182 @end menu
7184 @node Agenda files, Agenda dispatcher, Agenda Views, Agenda Views
7185 @section Agenda files
7186 @cindex agenda files
7187 @cindex files for agenda
7189 @vindex org-agenda-files
7190 The information to be shown is normally collected from all @emph{agenda
7191 files}, the files listed in the variable
7192 @code{org-agenda-files}@footnote{If the value of that variable is not a
7193 list, but a single file name, then the list of agenda files will be
7194 maintained in that external file.}.  If a directory is part of this list,
7195 all files with the extension @file{.org} in this directory will be part
7196 of the list.
7198 Thus, even if you only work with a single Org file, that file should
7199 be put into the list@footnote{When using the dispatcher, pressing
7200 @kbd{<} before selecting a command will actually limit the command to
7201 the current file, and ignore @code{org-agenda-files} until the next
7202 dispatcher command.}.  You can customize @code{org-agenda-files}, but
7203 the easiest way to maintain it is through the following commands
7205 @cindex files, adding to agenda list
7206 @table @kbd
7207 @orgcmd{C-c [,org-agenda-file-to-front}
7208 Add current file to the list of agenda files.  The file is added to
7209 the front of the list.  If it was already in the list, it is moved to
7210 the front.  With a prefix argument, file is added/moved to the end.
7211 @orgcmd{C-c ],org-remove-file}
7212 Remove current file from the list of agenda files.
7213 @kindex C-,
7214 @cindex cycling, of agenda files
7215 @orgcmd{C-',org-cycle-agenda-files}
7216 @itemx C-,
7217 Cycle through agenda file list, visiting one file after the other.
7218 @kindex M-x org-iswitchb
7219 @item M-x org-iswitchb
7220 Command to use an @code{iswitchb}-like interface to switch to and between Org
7221 buffers.
7222 @end table
7224 @noindent
7225 The Org menu contains the current list of files and can be used
7226 to visit any of them.
7228 If you would like to focus the agenda temporarily on a file not in
7229 this list, or on just one file in the list, or even on only a subtree in a
7230 file, then this can be done in different ways.  For a single agenda command,
7231 you may press @kbd{<} once or several times in the dispatcher
7232 (@pxref{Agenda dispatcher}).  To restrict the agenda scope for an
7233 extended period, use the following commands:
7235 @table @kbd
7236 @orgcmd{C-c C-x <,org-agenda-set-restriction-lock}
7237 Permanently restrict the agenda to the current subtree.  When with a
7238 prefix argument, or with the cursor before the first headline in a file,
7239 the agenda scope is set to the entire file.  This restriction remains in
7240 effect until removed with @kbd{C-c C-x >}, or by typing either @kbd{<}
7241 or @kbd{>} in the agenda dispatcher.  If there is a window displaying an
7242 agenda view, the new restriction takes effect immediately.
7243 @orgcmd{C-c C-x >,org-agenda-remove-restriction-lock}
7244 Remove the permanent restriction created by @kbd{C-c C-x <}.
7245 @end table
7247 @noindent
7248 When working with @file{speedbar.el}, you can use the following commands in
7249 the Speedbar frame:
7250 @table @kbd
7251 @orgcmdtkc{< @r{in the speedbar frame},<,org-speedbar-set-agenda-restriction}
7252 Permanently restrict the agenda to the item---either an Org file or a subtree
7253 in such a file---at the cursor in the Speedbar frame.
7254 If there is a window displaying an agenda view, the new restriction takes
7255 effect immediately.
7256 @orgcmdtkc{> @r{in the speedbar frame},>,org-agenda-remove-restriction-lock}
7257 Lift the restriction.
7258 @end table
7260 @node Agenda dispatcher, Built-in agenda views, Agenda files, Agenda Views
7261 @section The agenda dispatcher
7262 @cindex agenda dispatcher
7263 @cindex dispatching agenda commands
7264 The views are created through a dispatcher, which should be bound to a
7265 global key---for example @kbd{C-c a} (@pxref{Activation}).  In the
7266 following we will assume that @kbd{C-c a} is indeed how the dispatcher
7267 is accessed and list keyboard access to commands accordingly.  After
7268 pressing @kbd{C-c a}, an additional letter is required to execute a
7269 command.  The dispatcher offers the following default commands:
7270 @table @kbd
7271 @item a
7272 Create the calendar-like agenda (@pxref{Weekly/daily agenda}).
7273 @item t @r{/} T
7274 Create a list of all TODO items (@pxref{Global TODO list}).
7275 @item m @r{/} M
7276 Create a list of headlines matching a TAGS expression (@pxref{Matching
7277 tags and properties}).
7278 @item L
7279 Create the timeline view for the current buffer (@pxref{Timeline}).
7280 @item s
7281 Create a list of entries selected by a boolean expression of keywords
7282 and/or regular expressions that must or must not occur in the entry.
7283 @item /
7284 @vindex org-agenda-text-search-extra-files
7285 Search for a regular expression in all agenda files and additionally in
7286 the files listed in @code{org-agenda-text-search-extra-files}.  This
7287 uses the Emacs command @code{multi-occur}.  A prefix argument can be
7288 used to specify the number of context lines for each match, default is
7290 @item # @r{/} !
7291 Create a list of stuck projects (@pxref{Stuck projects}).
7292 @item <
7293 Restrict an agenda command to the current buffer@footnote{For backward
7294 compatibility, you can also press @kbd{1} to restrict to the current
7295 buffer.}.  After pressing @kbd{<}, you still need to press the character
7296 selecting the command.
7297 @item < <
7298 If there is an active region, restrict the following agenda command to
7299 the region.  Otherwise, restrict it to the current subtree@footnote{For
7300 backward compatibility, you can also press @kbd{0} to restrict to the
7301 current region/subtree.}.  After pressing @kbd{< <}, you still need to press the
7302 character selecting the command.
7304 @item *
7305 @vindex org-agenda-sticky
7306 Toggle sticky agenda views.  By default, Org maintains only a single agenda
7307 buffer and rebuilds it each time you change the view, to make sure everything
7308 is always up to date.  If you switch between views often and the build time
7309 bothers you, you can turn on sticky agenda buffers (make this the default by
7310 customizing the variable @code{org-agenda-sticky}).  With sticky agendas, the
7311 dispatcher only switches to the selected view, you need to update it by hand
7312 with @kbd{r} or @kbd{g}.
7313 @end table
7315 You can also define custom commands that will be accessible through the
7316 dispatcher, just like the default commands.  This includes the
7317 possibility to create extended agenda buffers that contain several
7318 blocks together, for example the weekly agenda, the global TODO list and
7319 a number of special tags matches.  @xref{Custom agenda views}.
7321 @node Built-in agenda views, Presentation and sorting, Agenda dispatcher, Agenda Views
7322 @section The built-in agenda views
7324 In this section we describe the built-in views.
7326 @menu
7327 * Weekly/daily agenda::         The calendar page with current tasks
7328 * Global TODO list::            All unfinished action items
7329 * Matching tags and properties::  Structured information with fine-tuned search
7330 * Timeline::                    Time-sorted view for single file
7331 * Search view::                 Find entries by searching for text
7332 * Stuck projects::              Find projects you need to review
7333 @end menu
7335 @node Weekly/daily agenda, Global TODO list, Built-in agenda views, Built-in agenda views
7336 @subsection The weekly/daily agenda
7337 @cindex agenda
7338 @cindex weekly agenda
7339 @cindex daily agenda
7341 The purpose of the weekly/daily @emph{agenda} is to act like a page of a
7342 paper agenda, showing all the tasks for the current week or day.
7344 @table @kbd
7345 @cindex org-agenda, command
7346 @orgcmd{C-c a a,org-agenda-list}
7347 Compile an agenda for the current week from a list of Org files.  The agenda
7348 shows the entries for each day.  With a numeric prefix@footnote{For backward
7349 compatibility, the universal prefix @kbd{C-u} causes all TODO entries to be
7350 listed before the agenda.  This feature is deprecated, use the dedicated TODO
7351 list, or a block agenda instead (@pxref{Block agenda}).}  (like @kbd{C-u 2 1
7352 C-c a a}) you may set the number of days to be displayed.
7353 @end table
7355 @vindex org-agenda-span
7356 @vindex org-agenda-ndays
7357 The default number of days displayed in the agenda is set by the variable
7358 @code{org-agenda-span} (or the obsolete @code{org-agenda-ndays}).  This
7359 variable can be set to any number of days you want to see by default in the
7360 agenda, or to a span name, such a @code{day}, @code{week}, @code{month} or
7361 @code{year}.
7363 Remote editing from the agenda buffer means, for example, that you can
7364 change the dates of deadlines and appointments from the agenda buffer.
7365 The commands available in the Agenda buffer are listed in @ref{Agenda
7366 commands}.
7368 @subsubheading Calendar/Diary integration
7369 @cindex calendar integration
7370 @cindex diary integration
7372 Emacs contains the calendar and diary by Edward M. Reingold.  The
7373 calendar displays a three-month calendar with holidays from different
7374 countries and cultures.  The diary allows you to keep track of
7375 anniversaries, lunar phases, sunrise/set, recurrent appointments
7376 (weekly, monthly) and more.  In this way, it is quite complementary to
7377 Org.  It can be very useful to combine output from Org with
7378 the diary.
7380 In order to include entries from the Emacs diary into Org mode's
7381 agenda, you only need to customize the variable
7383 @lisp
7384 (setq org-agenda-include-diary t)
7385 @end lisp
7387 @noindent After that, everything will happen automatically.  All diary
7388 entries including holidays, anniversaries, etc., will be included in the
7389 agenda buffer created by Org mode.  @key{SPC}, @key{TAB}, and
7390 @key{RET} can be used from the agenda buffer to jump to the diary
7391 file in order to edit existing diary entries.  The @kbd{i} command to
7392 insert new entries for the current date works in the agenda buffer, as
7393 well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
7394 Sunrise/Sunset times, show lunar phases and to convert to other
7395 calendars, respectively.  @kbd{c} can be used to switch back and forth
7396 between calendar and agenda.
7398 If you are using the diary only for sexp entries and holidays, it is
7399 faster to not use the above setting, but instead to copy or even move
7400 the entries into an Org file.  Org mode evaluates diary-style sexp
7401 entries, and does it faster because there is no overhead for first
7402 creating the diary display.  Note that the sexp entries must start at
7403 the left margin, no whitespace is allowed before them.  For example,
7404 the following segment of an Org file will be processed and entries
7405 will be made in the agenda:
7407 @example
7408 * Birthdays and similar stuff
7409 #+CATEGORY: Holiday
7410 %%(org-calendar-holiday)   ; special function for holiday names
7411 #+CATEGORY: Ann
7412 %%(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
7413 %%(org-anniversary 1869 10  2) Mahatma Gandhi would be %d years old
7414 @end example
7416 @subsubheading Anniversaries from BBDB
7417 @cindex BBDB, anniversaries
7418 @cindex anniversaries, from BBDB
7420 If you are using the Big Brothers Database to store your contacts, you will
7421 very likely prefer to store anniversaries in BBDB rather than in a
7422 separate Org or diary file.  Org supports this and will show BBDB
7423 anniversaries as part of the agenda.  All you need to do is to add the
7424 following to one of your agenda files:
7426 @example
7427 * Anniversaries
7428   :PROPERTIES:
7429   :CATEGORY: Anniv
7430   :END:
7431 %%(org-bbdb-anniversaries)
7432 @end example
7434 You can then go ahead and define anniversaries for a BBDB record.  Basically,
7435 you need to press @kbd{C-o anniversary @key{RET}} with the cursor in a BBDB
7436 record and then add the date in the format @code{YYYY-MM-DD} or @code{MM-DD},
7437 followed by a space and the class of the anniversary (@samp{birthday} or
7438 @samp{wedding}, or a format string).  If you omit the class, it will default to
7439 @samp{birthday}.  Here are a few examples, the header for the file
7440 @file{org-bbdb.el} contains more detailed information.
7442 @example
7443 1973-06-22
7444 06-22
7445 1955-08-02 wedding
7446 2008-04-14 %s released version 6.01 of org mode, %d years ago
7447 @end example
7449 After a change to BBDB, or for the first agenda display during an Emacs
7450 session, the agenda display will suffer a short delay as Org updates its
7451 hash with anniversaries.  However, from then on things will be very fast---much
7452 faster in fact than a long list of @samp{%%(diary-anniversary)} entries
7453 in an Org or Diary file.
7455 @subsubheading Appointment reminders
7456 @cindex @file{appt.el}
7457 @cindex appointment reminders
7458 @cindex appointment
7459 @cindex reminders
7461 Org can interact with Emacs appointments notification facility.  To add all
7462 the appointments of your agenda files, use the command
7463 @code{org-agenda-to-appt}.  This command also lets you filter through the
7464 list of your appointments and add only those belonging to a specific category
7465 or matching a regular expression.  See the docstring for details.
7467 @node Global TODO list, Matching tags and properties, Weekly/daily agenda, Built-in agenda views
7468 @subsection The global TODO list
7469 @cindex global TODO list
7470 @cindex TODO list, global
7472 The global TODO list contains all unfinished TODO items formatted and
7473 collected into a single place.
7475 @table @kbd
7476 @orgcmd{C-c a t,org-todo-list}
7477 Show the global TODO list.  This collects the TODO items from all agenda
7478 files (@pxref{Agenda Views}) into a single buffer.  By default, this lists
7479 items with a state the is not a DONE state.  The buffer is in
7480 @code{agenda-mode}, so there are commands to examine and manipulate the TODO
7481 entries directly from that buffer (@pxref{Agenda commands}).
7482 @orgcmd{C-c a T,org-todo-list}
7483 @cindex TODO keyword matching
7484 @vindex org-todo-keywords
7485 Like the above, but allows selection of a specific TODO keyword.  You can
7486 also do this by specifying a prefix argument to @kbd{C-c a t}.  You are
7487 prompted for a keyword, and you may also specify several keywords by
7488 separating them with @samp{|} as the boolean OR operator.  With a numeric
7489 prefix, the Nth keyword in @code{org-todo-keywords} is selected.
7490 @kindex r
7491 The @kbd{r} key in the agenda buffer regenerates it, and you can give
7492 a prefix argument to this command to change the selected TODO keyword,
7493 for example @kbd{3 r}.  If you often need a search for a specific
7494 keyword, define a custom command for it (@pxref{Agenda dispatcher}).@*
7495 Matching specific TODO keywords can also be done as part of a tags
7496 search (@pxref{Tag searches}).
7497 @end table
7499 Remote editing of TODO items means that you can change the state of a
7500 TODO entry with a single key press.  The commands available in the
7501 TODO list are described in @ref{Agenda commands}.
7503 @cindex sublevels, inclusion into TODO list
7504 Normally the global TODO list simply shows all headlines with TODO
7505 keywords.  This list can become very long.  There are two ways to keep
7506 it more compact:
7507 @itemize @minus
7508 @item
7509 @vindex org-agenda-todo-ignore-scheduled
7510 @vindex org-agenda-todo-ignore-deadlines
7511 @vindex org-agenda-todo-ignore-timestamp
7512 @vindex org-agenda-todo-ignore-with-date
7513 Some people view a TODO item that has been @emph{scheduled} for execution or
7514 have a @emph{deadline} (@pxref{Timestamps}) as no longer @emph{open}.
7515 Configure the variables @code{org-agenda-todo-ignore-scheduled},
7516 @code{org-agenda-todo-ignore-deadlines},
7517 @code{org-agenda-todo-ignore-timestamp} and/or
7518 @code{org-agenda-todo-ignore-with-date} to exclude such items from the global
7519 TODO list.
7520 @item
7521 @vindex org-agenda-todo-list-sublevels
7522 TODO items may have sublevels to break up the task into subtasks.  In
7523 such cases it may be enough to list only the highest level TODO headline
7524 and omit the sublevels from the global list.  Configure the variable
7525 @code{org-agenda-todo-list-sublevels} to get this behavior.
7526 @end itemize
7528 @node Matching tags and properties, Timeline, Global TODO list, Built-in agenda views
7529 @subsection Matching tags and properties
7530 @cindex matching, of tags
7531 @cindex matching, of properties
7532 @cindex tags view
7533 @cindex match view
7535 If headlines in the agenda files are marked with @emph{tags} (@pxref{Tags}),
7536 or have properties (@pxref{Properties and Columns}), you can select headlines
7537 based on this metadata and collect them into an agenda buffer.  The match
7538 syntax described here also applies when creating sparse trees with @kbd{C-c /
7541 @table @kbd
7542 @orgcmd{C-c a m,org-tags-view}
7543 Produce a list of all headlines that match a given set of tags.  The
7544 command prompts for a selection criterion, which is a boolean logic
7545 expression with tags, like @samp{+work+urgent-withboss} or
7546 @samp{work|home} (@pxref{Tags}).  If you often need a specific search,
7547 define a custom command for it (@pxref{Agenda dispatcher}).
7548 @orgcmd{C-c a M,org-tags-view}
7549 @vindex org-tags-match-list-sublevels
7550 @vindex org-agenda-tags-todo-honor-ignore-options
7551 Like @kbd{C-c a m}, but only select headlines that are also TODO items in a
7552 not-DONE state and force checking subitems (see variable
7553 @code{org-tags-match-list-sublevels}).  To exclude scheduled/deadline items,
7554 see the variable @code{org-agenda-tags-todo-honor-ignore-options}.  Matching
7555 specific TODO keywords together with a tags match is also possible, see
7556 @ref{Tag searches}.
7557 @end table
7559 The commands available in the tags list are described in @ref{Agenda
7560 commands}.
7562 @subsubheading Match syntax
7564 @cindex Boolean logic, for tag/property searches
7565 A search string can use Boolean operators @samp{&} for AND and @samp{|} for
7566 OR.  @samp{&} binds more strongly than @samp{|}.  Parentheses are currently
7567 not implemented.  Each element in the search is either a tag, a regular
7568 expression matching tags, or an expression like @code{PROPERTY OPERATOR
7569 VALUE} with a comparison operator, accessing a property value.  Each element
7570 may be preceded by @samp{-}, to select against it, and @samp{+} is syntactic
7571 sugar for positive selection.  The AND operator @samp{&} is optional when
7572 @samp{+} or @samp{-} is present.  Here are some examples, using only tags.
7574 @table @samp
7575 @item +work-boss
7576 Select headlines tagged @samp{:work:}, but discard those also tagged
7577 @samp{:boss:}.
7578 @item work|laptop
7579 Selects lines tagged @samp{:work:} or @samp{:laptop:}.
7580 @item work|laptop+night
7581 Like before, but require the @samp{:laptop:} lines to be tagged also
7582 @samp{:night:}.
7583 @end table
7585 @cindex regular expressions, with tags search
7586 Instead of a tag, you may also specify a regular expression enclosed in curly
7587 braces.  For example,
7588 @samp{work+@{^boss.*@}} matches headlines that contain the tag
7589 @samp{:work:} and any tag @i{starting} with @samp{boss}.
7591 @cindex TODO keyword matching, with tags search
7592 @cindex level, require for tags/property match
7593 @cindex category, require for tags/property match
7594 @vindex org-odd-levels-only
7595 You may also test for properties (@pxref{Properties and Columns}) at the same
7596 time as matching tags.  The properties may be real properties, or special
7597 properties that represent other metadata (@pxref{Special properties}).  For
7598 example, the ``property'' @code{TODO} represents the TODO keyword of the
7599 entry.  Or, the ``property'' @code{LEVEL} represents the level of an entry.
7600 So a search @samp{+LEVEL=3+boss-TODO="DONE"} lists all level three headlines
7601 that have the tag @samp{boss} and are @emph{not} marked with the TODO keyword
7602 DONE.  In buffers with @code{org-odd-levels-only} set, @samp{LEVEL} does not
7603 count the number of stars, but @samp{LEVEL=2} will correspond to 3 stars etc.
7604 The ITEM special property cannot currently be used in tags/property
7605 searches@footnote{But @pxref{x-agenda-skip-entry-regexp,
7606 ,skipping entries based on regexp}.}.
7608 Here are more examples:
7609 @table @samp
7610 @item work+TODO="WAITING"
7611 Select @samp{:work:}-tagged TODO lines with the specific TODO
7612 keyword @samp{WAITING}.
7613 @item work+TODO="WAITING"|home+TODO="WAITING"
7614 Waiting tasks both at work and at home.
7615 @end table
7617 When matching properties, a number of different operators can be used to test
7618 the value of a property.  Here is a complex example:
7620 @example
7621 +work-boss+PRIORITY="A"+Coffee="unlimited"+Effort<2         \
7622          +With=@{Sarah\|Denny@}+SCHEDULED>="<2008-10-11>"
7623 @end example
7625 @noindent
7626 The type of comparison will depend on how the comparison value is written:
7627 @itemize @minus
7628 @item
7629 If the comparison value is a plain number, a numerical comparison is done,
7630 and the allowed operators are @samp{<}, @samp{=}, @samp{>}, @samp{<=},
7631 @samp{>=}, and @samp{<>}.
7632 @item
7633 If the comparison value is enclosed in double-quotes,
7634 a string comparison is done, and the same operators are allowed.
7635 @item
7636 If the comparison value is enclosed in double-quotes @emph{and} angular
7637 brackets (like @samp{DEADLINE<="<2008-12-24 18:30>"}), both values are
7638 assumed to be date/time specifications in the standard Org way, and the
7639 comparison will be done accordingly.  Special values that will be recognized
7640 are @code{"<now>"} for now (including time), and @code{"<today>"}, and
7641 @code{"<tomorrow>"} for these days at 0:00 hours, i.e.@: without a time
7642 specification.  Also strings like @code{"<+5d>"} or @code{"<-2m>"} with units
7643 @code{d}, @code{w}, @code{m}, and @code{y} for day, week, month, and year,
7644 respectively, can be used.
7645 @item
7646 If the comparison value is enclosed
7647 in curly braces, a regexp match is performed, with @samp{=} meaning that the
7648 regexp matches the property value, and @samp{<>} meaning that it does not
7649 match.
7650 @end itemize
7652 So the search string in the example finds entries tagged @samp{:work:} but
7653 not @samp{:boss:}, which also have a priority value @samp{A}, a
7654 @samp{:Coffee:} property with the value @samp{unlimited}, an @samp{Effort}
7655 property that is numerically smaller than 2, a @samp{:With:} property that is
7656 matched by the regular expression @samp{Sarah\|Denny}, and that are scheduled
7657 on or after October 11, 2008.
7659 Accessing TODO, LEVEL, and CATEGORY during a search is fast.  Accessing any
7660 other properties will slow down the search.  However, once you have paid the
7661 price by accessing one property, testing additional properties is cheap
7662 again.
7664 You can configure Org mode to use property inheritance during a search, but
7665 beware that this can slow down searches considerably.  See @ref{Property
7666 inheritance}, for details.
7668 For backward compatibility, and also for typing speed, there is also a
7669 different way to test TODO states in a search.  For this, terminate the
7670 tags/property part of the search string (which may include several terms
7671 connected with @samp{|}) with a @samp{/} and then specify a Boolean
7672 expression just for TODO keywords.  The syntax is then similar to that for
7673 tags, but should be applied with care: for example, a positive selection on
7674 several TODO keywords cannot meaningfully be combined with boolean AND.
7675 However, @emph{negative selection} combined with AND can be meaningful.  To
7676 make sure that only lines are checked that actually have any TODO keyword
7677 (resulting in a speed-up), use @kbd{C-c a M}, or equivalently start the TODO
7678 part after the slash with @samp{!}.  Using @kbd{C-c a M} or @samp{/!} will
7679 not match TODO keywords in a DONE state.  Examples:
7681 @table @samp
7682 @item work/WAITING
7683 Same as @samp{work+TODO="WAITING"}
7684 @item work/!-WAITING-NEXT
7685 Select @samp{:work:}-tagged TODO lines that are neither @samp{WAITING}
7686 nor @samp{NEXT}
7687 @item work/!+WAITING|+NEXT
7688 Select @samp{:work:}-tagged TODO lines that are either @samp{WAITING} or
7689 @samp{NEXT}.
7690 @end table
7692 @node Timeline, Search view, Matching tags and properties, Built-in agenda views
7693 @subsection Timeline for a single file
7694 @cindex timeline, single file
7695 @cindex time-sorted view
7697 The timeline summarizes all time-stamped items from a single Org mode
7698 file in a @emph{time-sorted view}.  The main purpose of this command is
7699 to give an overview over events in a project.
7701 @table @kbd
7702 @orgcmd{C-c a L,org-timeline}
7703 Show a time-sorted view of the Org file, with all time-stamped items.
7704 When called with a @kbd{C-u} prefix, all unfinished TODO entries
7705 (scheduled or not) are also listed under the current date.
7706 @end table
7708 @noindent
7709 The commands available in the timeline buffer are listed in
7710 @ref{Agenda commands}.
7712 @node Search view, Stuck projects, Timeline, Built-in agenda views
7713 @subsection Search view
7714 @cindex search view
7715 @cindex text search
7716 @cindex searching, for text
7718 This agenda view is a general text search facility for Org mode entries.
7719 It is particularly useful to find notes.
7721 @table @kbd
7722 @orgcmd{C-c a s,org-search-view}
7723 This is a special search that lets you select entries by matching a substring
7724 or specific words using a boolean logic.
7725 @end table
7726 For example, the search string @samp{computer equipment} will find entries
7727 that contain @samp{computer equipment} as a substring.  If the two words are
7728 separated by more space or a line break, the search will still match.
7729 Search view can also search for specific keywords in the entry, using Boolean
7730 logic.  The search string @samp{+computer +wifi -ethernet -@{8\.11[bg]@}}
7731 will search for note entries that contain the keywords @code{computer}
7732 and @code{wifi}, but not the keyword @code{ethernet}, and which are also
7733 not matched by the regular expression @code{8\.11[bg]}, meaning to
7734 exclude both 8.11b and 8.11g.  The first @samp{+} is necessary to turn on
7735 word search, other @samp{+} characters are optional.  For more details, see
7736 the docstring of the command @code{org-search-view}.
7738 @vindex org-agenda-text-search-extra-files
7739 Note that in addition to the agenda files, this command will also search
7740 the files listed in @code{org-agenda-text-search-extra-files}.
7742 @node Stuck projects,  , Search view, Built-in agenda views
7743 @subsection Stuck projects
7744 @pindex GTD, Getting Things Done
7746 If you are following a system like David Allen's GTD to organize your
7747 work, one of the ``duties'' you have is a regular review to make sure
7748 that all projects move along.  A @emph{stuck} project is a project that
7749 has no defined next actions, so it will never show up in the TODO lists
7750 Org mode produces.  During the review, you need to identify such
7751 projects and define next actions for them.
7753 @table @kbd
7754 @orgcmd{C-c a #,org-agenda-list-stuck-projects}
7755 List projects that are stuck.
7756 @kindex C-c a !
7757 @item C-c a !
7758 @vindex org-stuck-projects
7759 Customize the variable @code{org-stuck-projects} to define what a stuck
7760 project is and how to find it.
7761 @end table
7763 You almost certainly will have to configure this view before it will
7764 work for you.  The built-in default assumes that all your projects are
7765 level-2 headlines, and that a project is not stuck if it has at least
7766 one entry marked with a TODO keyword TODO or NEXT or NEXTACTION.
7768 Let's assume that you, in your own way of using Org mode, identify
7769 projects with a tag PROJECT, and that you use a TODO keyword MAYBE to
7770 indicate a project that should not be considered yet.  Let's further
7771 assume that the TODO keyword DONE marks finished projects, and that NEXT
7772 and TODO indicate next actions.  The tag @@SHOP indicates shopping and
7773 is a next action even without the NEXT tag.  Finally, if the project
7774 contains the special word IGNORE anywhere, it should not be listed
7775 either.  In this case you would start by identifying eligible projects
7776 with a tags/todo match@footnote{@xref{Tag searches}.}
7777 @samp{+PROJECT/-MAYBE-DONE}, and then check for TODO, NEXT, @@SHOP, and
7778 IGNORE in the subtree to identify projects that are not stuck.  The
7779 correct customization for this is
7781 @lisp
7782 (setq org-stuck-projects
7783       '("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@@SHOP")
7784                                "\\<IGNORE\\>"))
7785 @end lisp
7787 Note that if a project is identified as non-stuck, the subtree of this entry
7788 will still be searched for stuck projects.
7790 @node Presentation and sorting, Agenda commands, Built-in agenda views, Agenda Views
7791 @section Presentation and sorting
7792 @cindex presentation, of agenda items
7794 @vindex org-agenda-prefix-format
7795 @vindex org-agenda-tags-column
7796 Before displaying items in an agenda view, Org mode visually prepares the
7797 items and sorts them.  Each item occupies a single line.  The line starts
7798 with a @emph{prefix} that contains the @emph{category} (@pxref{Categories})
7799 of the item and other important information.  You can customize in which
7800 column tags will be displayed through @code{org-agenda-tags-column}.  You can
7801 also customize the prefix using the option @code{org-agenda-prefix-format}.
7802 This prefix is followed by a cleaned-up version of the outline headline
7803 associated with the item.
7805 @menu
7806 * Categories::                  Not all tasks are equal
7807 * Time-of-day specifications::  How the agenda knows the time
7808 * Sorting of agenda items::     The order of things
7809 @end menu
7811 @node Categories, Time-of-day specifications, Presentation and sorting, Presentation and sorting
7812 @subsection Categories
7814 @cindex category
7815 @cindex #+CATEGORY
7816 The category is a broad label assigned to each agenda item.  By default,
7817 the category is simply derived from the file name, but you can also
7818 specify it with a special line in the buffer, like this@footnote{For
7819 backward compatibility, the following also works: if there are several
7820 such lines in a file, each specifies the category for the text below it.
7821 The first category also applies to any text before the first CATEGORY
7822 line.  However, using this method is @emph{strongly} deprecated as it is
7823 incompatible with the outline structure of the document.  The correct
7824 method for setting multiple categories in a buffer is using a
7825 property.}:
7827 @example
7828 #+CATEGORY: Thesis
7829 @end example
7831 @noindent
7832 @cindex property, CATEGORY
7833 If you would like to have a special CATEGORY for a single entry or a
7834 (sub)tree, give the entry a @code{:CATEGORY:} property with the
7835 special category you want to apply as the value.
7837 @noindent
7838 The display in the agenda buffer looks best if the category is not
7839 longer than 10 characters.
7841 @noindent
7842 You can set up icons for category by customizing the
7843 @code{org-agenda-category-icon-alist} variable.
7845 @node Time-of-day specifications, Sorting of agenda items, Categories, Presentation and sorting
7846 @subsection Time-of-day specifications
7847 @cindex time-of-day specification
7849 Org mode checks each agenda item for a time-of-day specification.  The
7850 time can be part of the timestamp that triggered inclusion into the
7851 agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}.  Time
7852 ranges can be specified with two timestamps, like
7854 @w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
7856 In the headline of the entry itself, a time(range) may also appear as
7857 plain text (like @samp{12:45} or a @samp{8:30-1pm}).  If the agenda
7858 integrates the Emacs diary (@pxref{Weekly/daily agenda}), time
7859 specifications in diary entries are recognized as well.
7861 For agenda display, Org mode extracts the time and displays it in a
7862 standard 24 hour format as part of the prefix.  The example times in
7863 the previous paragraphs would end up in the agenda like this:
7865 @example
7866     8:30-13:00 Arthur Dent lies in front of the bulldozer
7867    12:45...... Ford Prefect arrives and takes Arthur to the pub
7868    19:00...... The Vogon reads his poem
7869    20:30-22:15 Marvin escorts the Hitchhikers to the bridge
7870 @end example
7872 @cindex time grid
7873 If the agenda is in single-day mode, or for the display of today, the
7874 timed entries are embedded in a time grid, like
7876 @example
7877     8:00...... ------------------
7878     8:30-13:00 Arthur Dent lies in front of the bulldozer
7879    10:00...... ------------------
7880    12:00...... ------------------
7881    12:45...... Ford Prefect arrives and takes Arthur to the pub
7882    14:00...... ------------------
7883    16:00...... ------------------
7884    18:00...... ------------------
7885    19:00...... The Vogon reads his poem
7886    20:00...... ------------------
7887    20:30-22:15 Marvin escorts the Hitchhikers to the bridge
7888 @end example
7890 @vindex org-agenda-use-time-grid
7891 @vindex org-agenda-time-grid
7892 The time grid can be turned on and off with the variable
7893 @code{org-agenda-use-time-grid}, and can be configured with
7894 @code{org-agenda-time-grid}.
7896 @node Sorting of agenda items,  , Time-of-day specifications, Presentation and sorting
7897 @subsection Sorting of agenda items
7898 @cindex sorting, of agenda items
7899 @cindex priorities, of agenda items
7900 Before being inserted into a view, the items are sorted.  How this is
7901 done depends on the type of view.
7902 @itemize @bullet
7903 @item
7904 @vindex org-agenda-files
7905 For the daily/weekly agenda, the items for each day are sorted.  The
7906 default order is to first collect all items containing an explicit
7907 time-of-day specification.  These entries will be shown at the beginning
7908 of the list, as a @emph{schedule} for the day.  After that, items remain
7909 grouped in categories, in the sequence given by @code{org-agenda-files}.
7910 Within each category, items are sorted by priority (@pxref{Priorities}),
7911 which is composed of the base priority (2000 for priority @samp{A}, 1000
7912 for @samp{B}, and 0 for @samp{C}), plus additional increments for
7913 overdue scheduled or deadline items.
7914 @item
7915 For the TODO list, items remain in the order of categories, but within
7916 each category, sorting takes place according to priority
7917 (@pxref{Priorities}).  The priority used for sorting derives from the
7918 priority cookie, with additions depending on how close an item is to its due
7919 or scheduled date.
7920 @item
7921 For tags matches, items are not sorted at all, but just appear in the
7922 sequence in which they are found in the agenda files.
7923 @end itemize
7925 @vindex org-agenda-sorting-strategy
7926 Sorting can be customized using the variable
7927 @code{org-agenda-sorting-strategy}, and may also include criteria based on
7928 the estimated effort of an entry (@pxref{Effort estimates}).
7930 @node Agenda commands, Custom agenda views, Presentation and sorting, Agenda Views
7931 @section Commands in the agenda buffer
7932 @cindex commands, in agenda buffer
7934 Entries in the agenda buffer are linked back to the Org file or diary
7935 file where they originate.  You are not allowed to edit the agenda
7936 buffer itself, but commands are provided to show and jump to the
7937 original entry location, and to edit the Org files ``remotely'' from
7938 the agenda buffer.  In this way, all information is stored only once,
7939 removing the risk that your agenda and note files may diverge.
7941 Some commands can be executed with mouse clicks on agenda lines.  For
7942 the other commands, the cursor needs to be in the desired line.
7944 @table @kbd
7945 @tsubheading{Motion}
7946 @cindex motion commands in agenda
7947 @orgcmd{n,org-agenda-next-line}
7948 Next line (same as @key{down} and @kbd{C-n}).
7949 @orgcmd{p,org-agenda-previous-line}
7950 Previous line (same as @key{up} and @kbd{C-p}).
7951 @tsubheading{View/Go to Org file}
7952 @orgcmdkkc{@key{SPC},mouse-3,org-agenda-show-and-scroll-up}
7953 Display the original location of the item in another window.
7954 With prefix arg, make sure that the entire entry is made visible in the
7955 outline, not only the heading.
7957 @orgcmd{L,org-agenda-recenter}
7958 Display original location and recenter that window.
7960 @orgcmdkkc{@key{TAB},mouse-2,org-agenda-goto}
7961 Go to the original location of the item in another window.
7963 @orgcmd{@key{RET},org-agenda-switch-to}
7964 Go to the original location of the item and delete other windows.
7966 @orgcmd{F,org-agenda-follow-mode}
7967 @vindex org-agenda-start-with-follow-mode
7968 Toggle Follow mode.  In Follow mode, as you move the cursor through
7969 the agenda buffer, the other window always shows the corresponding
7970 location in the Org file.  The initial setting for this mode in new
7971 agenda buffers can be set with the variable
7972 @code{org-agenda-start-with-follow-mode}.
7974 @orgcmd{C-c C-x b,org-agenda-tree-to-indirect-buffer}
7975 Display the entire subtree of the current item in an indirect buffer.  With a
7976 numeric prefix argument N, go up to level N and then take that tree.  If N is
7977 negative, go up that many levels.  With a @kbd{C-u} prefix, do not remove the
7978 previously used indirect buffer.
7980 @orgcmd{C-c C-o,org-agenda-open-link}
7981 Follow a link in the entry.  This will offer a selection of any links in the
7982 text belonging to the referenced Org node.  If there is only one link, it
7983 will be followed without a selection prompt.
7985 @tsubheading{Change display}
7986 @cindex display changing, in agenda
7987 @kindex A
7988 @item A
7989 Interactively select another agenda view and append it to the current view.
7991 @kindex o
7992 @item o
7993 Delete other windows.
7995 @orgcmdkskc{v d,d,org-agenda-day-view}
7996 @xorgcmdkskc{v w,w,org-agenda-week-view}
7997 @xorgcmd{v m,org-agenda-month-view}
7998 @xorgcmd{v y,org-agenda-year-view}
7999 @xorgcmd{v SPC,org-agenda-reset-view}
8000 @vindex org-agenda-span
8001 Switch to day/week/month/year view.  When switching to day or week view, this
8002 setting becomes the default for subsequent agenda refreshes.  Since month and
8003 year views are slow to create, they do not become the default.  A numeric
8004 prefix argument may be used to jump directly to a specific day of the year,
8005 ISO week, month, or year, respectively.  For example, @kbd{32 d} jumps to
8006 February 1st, @kbd{9 w} to ISO week number 9.  When setting day, week, or
8007 month view, a year may be encoded in the prefix argument as well.  For
8008 example, @kbd{200712 w} will jump to week 12 in 2007.  If such a year
8009 specification has only one or two digits, it will be mapped to the interval
8010 1938-2037.  @kbd{v @key{SPC}} will reset to what is set in
8011 @code{org-agenda-span}.
8013 @orgcmd{f,org-agenda-later}
8014 Go forward in time to display the following @code{org-agenda-current-span} days.
8015 For example, if the display covers a week, switch to the following week.
8016 With prefix arg, go forward that many times @code{org-agenda-current-span} days.
8018 @orgcmd{b,org-agenda-earlier}
8019 Go backward in time to display earlier dates.
8021 @orgcmd{.,org-agenda-goto-today}
8022 Go to today.
8024 @orgcmd{j,org-agenda-goto-date}
8025 Prompt for a date and go there.
8027 @orgcmd{J,org-agenda-clock-goto}
8028 Go to the currently clocked-in task @i{in the agenda buffer}.
8030 @orgcmd{D,org-agenda-toggle-diary}
8031 Toggle the inclusion of diary entries.  See @ref{Weekly/daily agenda}.
8033 @orgcmdkskc{v l,l,org-agenda-log-mode}
8034 @kindex v L
8035 @vindex org-log-done
8036 @vindex org-agenda-log-mode-items
8037 Toggle Logbook mode.  In Logbook mode, entries that were marked DONE while
8038 logging was on (variable @code{org-log-done}) are shown in the agenda, as are
8039 entries that have been clocked on that day.  You can configure the entry
8040 types that should be included in log mode using the variable
8041 @code{org-agenda-log-mode-items}.  When called with a @kbd{C-u} prefix, show
8042 all possible logbook entries, including state changes.  When called with two
8043 prefix args @kbd{C-u C-u}, show only logging information, nothing else.
8044 @kbd{v L} is equivalent to @kbd{C-u v l}.
8046 @orgcmdkskc{v [,[,org-agenda-manipulate-query-add}
8047 Include inactive timestamps into the current view.  Only for weekly/daily
8048 agenda and timeline views.
8050 @orgcmd{v a,org-agenda-archives-mode}
8051 @xorgcmd{v A,org-agenda-archives-mode 'files}
8052 Toggle Archives mode.  In Archives mode, trees that are marked
8053 @code{ARCHIVED} are also scanned when producing the agenda.  When you use the
8054 capital @kbd{A}, even all archive files are included.  To exit archives mode,
8055 press @kbd{v a} again.
8057 @orgcmdkskc{v R,R,org-agenda-clockreport-mode}
8058 @vindex org-agenda-start-with-clockreport-mode
8059 @vindex org-clock-report-include-clocking-task
8060 Toggle Clockreport mode.  In Clockreport mode, the daily/weekly agenda will
8061 always show a table with the clocked times for the timespan and file scope
8062 covered by the current agenda view.  The initial setting for this mode in new
8063 agenda buffers can be set with the variable
8064 @code{org-agenda-start-with-clockreport-mode}.  By using a prefix argument
8065 when toggling this mode (i.e.@: @kbd{C-u R}), the clock table will not show
8066 contributions from entries that are hidden by agenda filtering@footnote{Only
8067 tags filtering will be respected here, effort filtering is ignored.}.  See
8068 also the variable @code{org-clock-report-include-clocking-task}.
8070 @orgkey{v c}
8071 @vindex org-agenda-clock-consistency-checks
8072 Show overlapping clock entries, clocking gaps, and other clocking problems in
8073 the current agenda range.  You can then visit clocking lines and fix them
8074 manually.  See the variable @code{org-agenda-clock-consistency-checks} for
8075 information on how to customize the definition of what constituted a clocking
8076 problem.  To return to normal agenda display, press @kbd{l} to exit Logbook
8077 mode.
8079 @orgcmdkskc{v E,E,org-agenda-entry-text-mode}
8080 @vindex org-agenda-start-with-entry-text-mode
8081 @vindex org-agenda-entry-text-maxlines
8082 Toggle entry text mode.  In entry text mode, a number of lines from the Org
8083 outline node referenced by an agenda line will be displayed below the line.
8084 The maximum number of lines is given by the variable
8085 @code{org-agenda-entry-text-maxlines}.  Calling this command with a numeric
8086 prefix argument will temporarily modify that number to the prefix value.
8088 @orgcmd{G,org-agenda-toggle-time-grid}
8089 @vindex org-agenda-use-time-grid
8090 @vindex org-agenda-time-grid
8091 Toggle the time grid on and off.  See also the variables
8092 @code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
8094 @orgcmd{r,org-agenda-redo}
8095 Recreate the agenda buffer, for example to reflect the changes after
8096 modification of the timestamps of items with @kbd{S-@key{left}} and
8097 @kbd{S-@key{right}}.  When the buffer is the global TODO list, a prefix
8098 argument is interpreted to create a selective list for a specific TODO
8099 keyword.
8100 @orgcmd{g,org-agenda-redo}
8101 Same as @kbd{r}.
8103 @orgcmdkskc{C-x C-s,s,org-save-all-org-buffers}
8104 Save all Org buffers in the current Emacs session, and also the locations of
8105 IDs.
8107 @orgcmd{C-c C-x C-c,org-agenda-columns}
8108 @vindex org-columns-default-format
8109 Invoke column view (@pxref{Column view}) in the agenda buffer.  The column
8110 view format is taken from the entry at point, or (if there is no entry at
8111 point), from the first entry in the agenda view.  So whatever the format for
8112 that entry would be in the original buffer (taken from a property, from a
8113 @code{#+COLUMNS} line, or from the default variable
8114 @code{org-columns-default-format}), will be used in the agenda.
8116 @orgcmd{C-c C-x >,org-agenda-remove-restriction-lock}
8117 Remove the restriction lock on the agenda, if it is currently restricted to a
8118 file or subtree (@pxref{Agenda files}).
8120 @tsubheading{Secondary filtering and query editing}
8121 @cindex filtering, by tag category and effort, in agenda
8122 @cindex tag filtering, in agenda
8123 @cindex category filtering, in agenda
8124 @cindex effort filtering, in agenda
8125 @cindex query editing, in agenda
8127 @orgcmd{<,org-agenda-filter-by-category}
8128 @vindex org-agenda-category-filter-preset
8130 Filter the current agenda view with respect to the category of the item at
8131 point.  Pressing @code{<} another time will remove this filter.  You can add
8132 a filter preset through the option @code{org-agenda-category-filter-preset}
8133 (see below.)
8135 @orgcmd{/,org-agenda-filter-by-tag}
8136 @vindex org-agenda-tag-filter-preset
8137 Filter the current agenda view with respect to a tag and/or effort estimates.
8138 The difference between this and a custom agenda command is that filtering is
8139 very fast, so that you can switch quickly between different filters without
8140 having to recreate the agenda.@footnote{Custom commands can preset a filter by
8141 binding the variable @code{org-agenda-tag-filter-preset} as an option.  This
8142 filter will then be applied to the view and persist as a basic filter through
8143 refreshes and more secondary filtering.  The filter is a global property of
8144 the entire agenda view---in a block agenda, you should only set this in the
8145 global options section, not in the section of an individual block.}
8147 You will be prompted for a tag selection letter; @key{SPC} will mean any tag at
8148 all.  Pressing @key{TAB} at that prompt will offer use completion to select a
8149 tag (including any tags that do not have a selection character).  The command
8150 then hides all entries that do not contain or inherit this tag.  When called
8151 with prefix arg, remove the entries that @emph{do} have the tag.  A second
8152 @kbd{/} at the prompt will turn off the filter and unhide any hidden entries.
8153 If the first key you press is either @kbd{+} or @kbd{-}, the previous filter
8154 will be narrowed by requiring or forbidding the selected additional tag.
8155 Instead of pressing @kbd{+} or @kbd{-} after @kbd{/}, you can also
8156 immediately use the @kbd{\} command.
8158 @vindex org-sort-agenda-noeffort-is-high
8159 In order to filter for effort estimates, you should set up allowed
8160 efforts globally, for example
8161 @lisp
8162 (setq org-global-properties
8163     '(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00")))
8164 @end lisp
8165 You can then filter for an effort by first typing an operator, one of
8166 @kbd{<}, @kbd{>}, and @kbd{=}, and then the one-digit index of an effort
8167 estimate in your array of allowed values, where @kbd{0} means the 10th value.
8168 The filter will then restrict to entries with effort smaller-or-equal, equal,
8169 or larger-or-equal than the selected value.  If the digits 0-9 are not used
8170 as fast access keys to tags, you can also simply press the index digit
8171 directly without an operator.  In this case, @kbd{<} will be assumed.  For
8172 application of the operator, entries without a defined effort will be treated
8173 according to the value of @code{org-sort-agenda-noeffort-is-high}.  To filter
8174 for tasks without effort definition, press @kbd{?} as the operator.
8176 Org also supports automatic, context-aware tag filtering.  If the variable
8177 @code{org-agenda-auto-exclude-function} is set to a user-defined function,
8178 that function can decide which tags should be excluded from the agenda
8179 automatically.  Once this is set, the @kbd{/} command then accepts @kbd{RET}
8180 as a sub-option key and runs the auto exclusion logic.  For example, let's
8181 say you use a @code{Net} tag to identify tasks which need network access, an
8182 @code{Errand} tag for errands in town, and a @code{Call} tag for making phone
8183 calls.  You could auto-exclude these tags based on the availability of the
8184 Internet, and outside of business hours, with something like this:
8186 @lisp
8187 @group
8188 (defun org-my-auto-exclude-function (tag)
8189   (and (cond
8190         ((string= tag "Net")
8191          (/= 0 (call-process "/sbin/ping" nil nil nil
8192                              "-c1" "-q" "-t1" "mail.gnu.org")))
8193         ((or (string= tag "Errand") (string= tag "Call"))
8194          (let ((hour (nth 2 (decode-time))))
8195            (or (< hour 8) (> hour 21)))))
8196        (concat "-" tag)))
8198 (setq org-agenda-auto-exclude-function 'org-my-auto-exclude-function)
8199 @end group
8200 @end lisp
8202 @orgcmd{\\,org-agenda-filter-by-tag-refine}
8203 Narrow the current agenda filter by an additional condition.  When called with
8204 prefix arg, remove the entries that @emph{do} have the tag, or that do match
8205 the effort criterion.  You can achieve the same effect by pressing @kbd{+} or
8206 @kbd{-} as the first key after the @kbd{/} command.
8209 @kindex [
8210 @kindex ]
8211 @kindex @{
8212 @kindex @}
8213 @item [ ] @{ @}
8214 @table @i
8215 @item @r{in} search view
8216 add new search words (@kbd{[} and @kbd{]}) or new regular expressions
8217 (@kbd{@{} and @kbd{@}}) to the query string.  The opening bracket/brace will
8218 add a positive search term prefixed by @samp{+}, indicating that this search
8219 term @i{must} occur/match in the entry.  The closing bracket/brace will add a
8220 negative search term which @i{must not} occur/match in the entry for it to be
8221 selected.
8222 @end table
8224 @tsubheading{Remote editing}
8225 @cindex remote editing, from agenda
8227 @item 0-9
8228 Digit argument.
8230 @cindex undoing remote-editing events
8231 @cindex remote editing, undo
8232 @orgcmd{C-_,org-agenda-undo}
8233 Undo a change due to a remote editing command.  The change is undone
8234 both in the agenda buffer and in the remote buffer.
8236 @orgcmd{t,org-agenda-todo}
8237 Change the TODO state of the item, both in the agenda and in the
8238 original org file.
8240 @orgcmd{C-S-@key{right},org-agenda-todo-nextset}
8241 @orgcmd{C-S-@key{left},org-agenda-todo-previousset}
8242 Switch to the next/previous set of TODO keywords.
8244 @orgcmd{C-k,org-agenda-kill}
8245 @vindex org-agenda-confirm-kill
8246 Delete the current agenda item along with the entire subtree belonging
8247 to it in the original Org file.  If the text to be deleted remotely
8248 is longer than one line, the kill needs to be confirmed by the user.  See
8249 variable @code{org-agenda-confirm-kill}.
8251 @orgcmd{C-c C-w,org-agenda-refile}
8252 Refile the entry at point.
8254 @orgcmdkskc{C-c C-x C-a,a,org-agenda-archive-default-with-confirmation}
8255 @vindex org-archive-default-command
8256 Archive the subtree corresponding to the entry at point using the default
8257 archiving command set in @code{org-archive-default-command}.  When using the
8258 @code{a} key, confirmation will be required.
8260 @orgcmd{C-c C-x a,org-agenda-toggle-archive-tag}
8261 Toggle the ARCHIVE tag for the current headline.
8263 @orgcmd{C-c C-x A,org-agenda-archive-to-archive-sibling}
8264 Move the subtree corresponding to the current entry to its @emph{archive
8265 sibling}.
8267 @orgcmdkskc{C-c C-x C-s,$,org-agenda-archive}
8268 Archive the subtree corresponding to the current headline.  This means the
8269 entry will be moved to the configured archive location, most likely a
8270 different file.
8272 @orgcmd{T,org-agenda-show-tags}
8273 @vindex org-agenda-show-inherited-tags
8274 Show all tags associated with the current item.  This is useful if you have
8275 turned off @code{org-agenda-show-inherited-tags}, but still want to see all
8276 tags of a headline occasionally.
8278 @orgcmd{:,org-agenda-set-tags}
8279 Set tags for the current headline.  If there is an active region in the
8280 agenda, change a tag for all headings in the region.
8282 @kindex ,
8283 @item ,
8284 Set the priority for the current item (@command{org-agenda-priority}).
8285 Org mode prompts for the priority character.  If you reply with @key{SPC},
8286 the priority cookie is removed from the entry.
8288 @orgcmd{P,org-agenda-show-priority}
8289 Display weighted priority of current item.
8291 @orgcmdkkc{+,S-@key{up},org-agenda-priority-up}
8292 Increase the priority of the current item.  The priority is changed in
8293 the original buffer, but the agenda is not resorted.  Use the @kbd{r}
8294 key for this.
8296 @orgcmdkkc{-,S-@key{down},org-agenda-priority-down}
8297 Decrease the priority of the current item.
8299 @orgcmdkkc{z,C-c C-z,org-agenda-add-note}
8300 @vindex org-log-into-drawer
8301 Add a note to the entry.  This note will be recorded, and then filed to the
8302 same location where state change notes are put.  Depending on
8303 @code{org-log-into-drawer}, this may be inside a drawer.
8305 @orgcmd{C-c C-a,org-attach}
8306 Dispatcher for all command related to attachments.
8308 @orgcmd{C-c C-s,org-agenda-schedule}
8309 Schedule this item.  With prefix arg remove the scheduling timestamp
8311 @orgcmd{C-c C-d,org-agenda-deadline}
8312 Set a deadline for this item.  With prefix arg remove the deadline.
8314 @orgcmd{k,org-agenda-action}
8315 Agenda actions, to set dates for selected items to the cursor date.
8316 This command also works in the calendar!  The command prompts for an
8317 additional key:
8318 @example
8319 m   @r{Mark the entry at point for action.  You can also make entries}
8320     @r{in Org files with @kbd{C-c C-x C-k}.}
8321 d   @r{Set the deadline of the marked entry to the date at point.}
8322 s   @r{Schedule the marked entry at the date at point.}
8323 r   @r{Call @code{org-capture} with the cursor date as default date.}
8324 @end example
8325 @noindent
8326 Press @kbd{r} afterward to refresh the agenda and see the effect of the
8327 command.
8329 @orgcmd{S-@key{right},org-agenda-do-date-later}
8330 Change the timestamp associated with the current line by one day into the
8331 future.  If the date is in the past, the first call to this command will move
8332 it to today.@*
8333 With a numeric prefix argument, change it by that many days.  For example,
8334 @kbd{3 6 5 S-@key{right}} will change it by a year.  With a @kbd{C-u} prefix,
8335 change the time by one hour.  If you immediately repeat the command, it will
8336 continue to change hours even without the prefix arg.  With a double @kbd{C-u
8337 C-u} prefix, do the same for changing minutes.@*
8338 The stamp is changed in the original Org file, but the change is not directly
8339 reflected in the agenda buffer.  Use @kbd{r} or @kbd{g} to update the buffer.
8341 @orgcmd{S-@key{left},org-agenda-do-date-earlier}
8342 Change the timestamp associated with the current line by one day
8343 into the past.
8345 @orgcmd{>,org-agenda-date-prompt}
8346 Change the timestamp associated with the current line.  The key @kbd{>} has
8347 been chosen, because it is the same as @kbd{S-.}  on my keyboard.
8349 @orgcmd{I,org-agenda-clock-in}
8350 Start the clock on the current item.  If a clock is running already, it
8351 is stopped first.
8353 @orgcmd{O,org-agenda-clock-out}
8354 Stop the previously started clock.
8356 @orgcmd{X,org-agenda-clock-cancel}
8357 Cancel the currently running clock.
8359 @orgcmd{J,org-agenda-clock-goto}
8360 Jump to the running clock in another window.
8362 @tsubheading{Bulk remote editing selected entries}
8363 @cindex remote editing, bulk, from agenda
8364 @vindex org-agenda-bulk-persistent-marks
8365 @vindex org-agenda-bulk-custom-functions
8367 @orgcmd{m,org-agenda-bulk-mark}
8368 Mark the entry at point for bulk action.  With prefix arg, mark that many
8369 successive entries.
8371 @orgcmd{%,org-agenda-bulk-mark-regexp}
8372 Mark entries matching a regular expression for bulk action.
8374 @orgcmd{u,org-agenda-bulk-unmark}
8375 Unmark entry for bulk action.
8377 @orgcmd{U,org-agenda-bulk-remove-all-marks}
8378 Unmark all marked entries for bulk action.
8380 @orgcmd{B,org-agenda-bulk-action}
8381 Bulk action: act on all marked entries in the agenda.  This will prompt for
8382 another key to select the action to be applied.  The prefix arg to @kbd{B}
8383 will be passed through to the @kbd{s} and @kbd{d} commands, to bulk-remove
8384 these special timestamps.  By default, marks are removed after the bulk.  If
8385 you want them to persist, set @code{org-agenda-bulk-persistent-marks} to
8386 @code{t} or hit @kbd{p} at the prompt.
8388 @example
8389 r  @r{Prompt for a single refile target and move all entries.  The entries}
8390    @r{will no longer be in the agenda; refresh (@kbd{g}) to bring them back.}
8391 $  @r{Archive all selected entries.}
8392 A  @r{Archive entries by moving them to their respective archive siblings.}
8393 t  @r{Change TODO state.  This prompts for a single TODO keyword and}
8394    @r{changes the state of all selected entries, bypassing blocking and}
8395    @r{suppressing logging notes (but not timestamps).}
8396 +  @r{Add a tag to all selected entries.}
8397 -  @r{Remove a tag from all selected entries.}
8398 s  @r{Schedule all items to a new date.  To shift existing schedule dates}
8399    @r{by a fixed number of days, use something starting with double plus}
8400    @r{at the prompt, for example @samp{++8d} or @samp{++2w}.}
8401 S  @r{Reschedule randomly into the coming N days.  N will be prompted for.}
8402    @r{With prefix arg (@kbd{C-u B S}), scatter only across weekdays.}
8403 d  @r{Set deadline to a specific date.}
8404 f  @r{Apply a function@footnote{You can also create persistent custom functions through@code{org-agenda-bulk-custom-functions}.} to marked entries.}
8405    @r{For example, the function below sets the CATEGORY property of the}
8406    @r{entries to web.}
8407    @r{(defun set-category ()}
8408    @r{  (interactive "P")}
8409    @r{  (let* ((marker (or (org-get-at-bol 'org-hd-marker)}
8410    @r{                     (org-agenda-error)))}
8411    @r{            (buffer (marker-buffer marker)))}
8412    @r{       (with-current-buffer buffer}
8413    @r{         (save-excursion}
8414    @r{           (save-restriction}
8415    @r{             (widen)}
8416    @r{             (goto-char marker)}
8417    @r{             (org-back-to-heading t)}
8418    @r{             (org-set-property "CATEGORY" "web"))))))}
8419 @end example
8422 @tsubheading{Calendar commands}
8423 @cindex calendar commands, from agenda
8425 @orgcmd{c,org-agenda-goto-calendar}
8426 Open the Emacs calendar and move to the date at the agenda cursor.
8428 @orgcmd{c,org-calendar-goto-agenda}
8429 When in the calendar, compute and show the Org mode agenda for the
8430 date at the cursor.
8432 @cindex diary entries, creating from agenda
8433 @orgcmd{i,org-agenda-diary-entry}
8434 @vindex org-agenda-diary-file
8435 Insert a new entry into the diary, using the date at the cursor and (for
8436 block entries) the date at the mark.  This will add to the Emacs diary
8437 file@footnote{This file is parsed for the agenda when
8438 @code{org-agenda-include-diary} is set.}, in a way similar to the @kbd{i}
8439 command in the calendar.  The diary file will pop up in another window, where
8440 you can add the entry.
8442 If you configure @code{org-agenda-diary-file} to point to an Org mode file,
8443 Org will create entries (in Org mode syntax) in that file instead.  Most
8444 entries will be stored in a date-based outline tree that will later make it
8445 easy to archive appointments from previous months/years.  The tree will be
8446 built under an entry with a @code{DATE_TREE} property, or else with years as
8447 top-level entries.  Emacs will prompt you for the entry text---if you specify
8448 it, the entry will be created in @code{org-agenda-diary-file} without further
8449 interaction.  If you directly press @key{RET} at the prompt without typing
8450 text, the target file will be shown in another window for you to finish the
8451 entry there.  See also the @kbd{k r} command.
8453 @orgcmd{M,org-agenda-phases-of-moon}
8454 Show the phases of the moon for the three months around current date.
8456 @orgcmd{S,org-agenda-sunrise-sunset}
8457 Show sunrise and sunset times.  The geographical location must be set
8458 with calendar variables, see the documentation for the Emacs calendar.
8460 @orgcmd{C,org-agenda-convert-date}
8461 Convert the date at cursor into many other cultural and historic
8462 calendars.
8464 @orgcmd{H,org-agenda-holidays}
8465 Show holidays for three months around the cursor date.
8467 @item M-x org-export-icalendar-combine-agenda-files
8468 Export a single iCalendar file containing entries from all agenda files.
8469 This is a globally available command, and also available in the agenda menu.
8471 @tsubheading{Exporting to a file}
8472 @orgcmd{C-x C-w,org-write-agenda}
8473 @cindex exporting agenda views
8474 @cindex agenda views, exporting
8475 @vindex org-agenda-exporter-settings
8476 Write the agenda view to a file.  Depending on the extension of the selected
8477 file name, the view will be exported as HTML (extension @file{.html} or
8478 @file{.htm}), Postscript (extension @file{.ps}), PDF (extension @file{.pdf}),
8479 and plain text (any other extension).  When called with a @kbd{C-u} prefix
8480 argument, immediately open the newly created file.  Use the variable
8481 @code{org-agenda-exporter-settings} to set options for @file{ps-print} and
8482 for @file{htmlize} to be used during export.
8484 @tsubheading{Quit and Exit}
8485 @orgcmd{q,org-agenda-quit}
8486 Quit agenda, remove the agenda buffer.
8488 @cindex agenda files, removing buffers
8489 @orgcmd{x,org-agenda-exit}
8490 Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
8491 for the compilation of the agenda.  Buffers created by the user to
8492 visit Org files will not be removed.
8493 @end table
8496 @node Custom agenda views, Exporting Agenda Views, Agenda commands, Agenda Views
8497 @section Custom agenda views
8498 @cindex custom agenda views
8499 @cindex agenda views, custom
8501 Custom agenda commands serve two purposes: to store and quickly access
8502 frequently used TODO and tags searches, and to create special composite
8503 agenda buffers.  Custom agenda commands will be accessible through the
8504 dispatcher (@pxref{Agenda dispatcher}), just like the default commands.
8506 @menu
8507 * Storing searches::            Type once, use often
8508 * Block agenda::                All the stuff you need in a single buffer
8509 * Setting Options::             Changing the rules
8510 @end menu
8512 @node Storing searches, Block agenda, Custom agenda views, Custom agenda views
8513 @subsection Storing searches
8515 The first application of custom searches is the definition of keyboard
8516 shortcuts for frequently used searches, either creating an agenda
8517 buffer, or a sparse tree (the latter covering of course only the current
8518 buffer).
8519 @kindex C-c a C
8520 @vindex org-agenda-custom-commands
8521 Custom commands are configured in the variable
8522 @code{org-agenda-custom-commands}.  You can customize this variable, for
8523 example by pressing @kbd{C-c a C}.  You can also directly set it with
8524 Emacs Lisp in @file{.emacs}.  The following example contains all valid
8525 search types:
8527 @lisp
8528 @group
8529 (setq org-agenda-custom-commands
8530       '(("w" todo "WAITING")
8531         ("W" todo-tree "WAITING")
8532         ("u" tags "+boss-urgent")
8533         ("v" tags-todo "+boss-urgent")
8534         ("U" tags-tree "+boss-urgent")
8535         ("f" occur-tree "\\<FIXME\\>")
8536         ("h" . "HOME+Name tags searches") ; description for "h" prefix
8537         ("hl" tags "+home+Lisa")
8538         ("hp" tags "+home+Peter")
8539         ("hk" tags "+home+Kim")))
8540 @end group
8541 @end lisp
8543 @noindent
8544 The initial string in each entry defines the keys you have to press
8545 after the dispatcher command @kbd{C-c a} in order to access the command.
8546 Usually this will be just a single character, but if you have many
8547 similar commands, you can also define two-letter combinations where the
8548 first character is the same in several combinations and serves as a
8549 prefix key@footnote{You can provide a description for a prefix key by
8550 inserting a cons cell with the prefix and the description.}.  The second
8551 parameter is the search type, followed by the string or regular
8552 expression to be used for the matching.  The example above will
8553 therefore define:
8555 @table @kbd
8556 @item C-c a w
8557 as a global search for TODO entries with @samp{WAITING} as the TODO
8558 keyword
8559 @item C-c a W
8560 as the same search, but only in the current buffer and displaying the
8561 results as a sparse tree
8562 @item C-c a u
8563 as a global tags search for headlines marked @samp{:boss:} but not
8564 @samp{:urgent:}
8565 @item C-c a v
8566 as the same search as @kbd{C-c a u}, but limiting the search to
8567 headlines that are also TODO items
8568 @item C-c a U
8569 as the same search as @kbd{C-c a u}, but only in the current buffer and
8570 displaying the result as a sparse tree
8571 @item C-c a f
8572 to create a sparse tree (again: current buffer only) with all entries
8573 containing the word @samp{FIXME}
8574 @item C-c a h
8575 as a prefix command for a HOME tags search where you have to press an
8576 additional key (@kbd{l}, @kbd{p} or @kbd{k}) to select a name (Lisa,
8577 Peter, or Kim) as additional tag to match.
8578 @end table
8580 @node Block agenda, Setting Options, Storing searches, Custom agenda views
8581 @subsection Block agenda
8582 @cindex block agenda
8583 @cindex agenda, with block views
8585 Another possibility is the construction of agenda views that comprise
8586 the results of @emph{several} commands, each of which creates a block in
8587 the agenda buffer.  The available commands include @code{agenda} for the
8588 daily or weekly agenda (as created with @kbd{C-c a a}), @code{alltodo}
8589 for the global TODO list (as constructed with @kbd{C-c a t}), and the
8590 matching commands discussed above: @code{todo}, @code{tags}, and
8591 @code{tags-todo}.  Here are two examples:
8593 @lisp
8594 @group
8595 (setq org-agenda-custom-commands
8596       '(("h" "Agenda and Home-related tasks"
8597          ((agenda "")
8598           (tags-todo "home")
8599           (tags "garden")))
8600         ("o" "Agenda and Office-related tasks"
8601          ((agenda "")
8602           (tags-todo "work")
8603           (tags "office")))))
8604 @end group
8605 @end lisp
8607 @noindent
8608 This will define @kbd{C-c a h} to create a multi-block view for stuff
8609 you need to attend to at home.  The resulting agenda buffer will contain
8610 your agenda for the current week, all TODO items that carry the tag
8611 @samp{home}, and also all lines tagged with @samp{garden}.  Finally the
8612 command @kbd{C-c a o} provides a similar view for office tasks.
8614 @node Setting Options,  , Block agenda, Custom agenda views
8615 @subsection Setting options for custom commands
8616 @cindex options, for custom agenda views
8618 @vindex org-agenda-custom-commands
8619 Org mode contains a number of variables regulating agenda construction
8620 and display.  The global variables define the behavior for all agenda
8621 commands, including the custom commands.  However, if you want to change
8622 some settings just for a single custom view, you can do so.  Setting
8623 options requires inserting a list of variable names and values at the
8624 right spot in @code{org-agenda-custom-commands}.  For example:
8626 @lisp
8627 @group
8628 (setq org-agenda-custom-commands
8629       '(("w" todo "WAITING"
8630          ((org-agenda-sorting-strategy '(priority-down))
8631           (org-agenda-prefix-format "  Mixed: ")))
8632         ("U" tags-tree "+boss-urgent"
8633          ((org-show-following-heading nil)
8634           (org-show-hierarchy-above nil)))
8635         ("N" search ""
8636          ((org-agenda-files '("~org/notes.org"))
8637           (org-agenda-text-search-extra-files nil)))))
8638 @end group
8639 @end lisp
8641 @noindent
8642 Now the @kbd{C-c a w} command will sort the collected entries only by
8643 priority, and the prefix format is modified to just say @samp{  Mixed: }
8644 instead of giving the category of the entry.  The sparse tags tree of
8645 @kbd{C-c a U} will now turn out ultra-compact, because neither the
8646 headline hierarchy above the match, nor the headline following the match
8647 will be shown.  The command @kbd{C-c a N} will do a text search limited
8648 to only a single file.
8650 @vindex org-agenda-custom-commands
8651 For command sets creating a block agenda,
8652 @code{org-agenda-custom-commands} has two separate spots for setting
8653 options.  You can add options that should be valid for just a single
8654 command in the set, and options that should be valid for all commands in
8655 the set.  The former are just added to the command entry; the latter
8656 must come after the list of command entries.  Going back to the block
8657 agenda example (@pxref{Block agenda}), let's change the sorting strategy
8658 for the @kbd{C-c a h} commands to @code{priority-down}, but let's sort
8659 the results for GARDEN tags query in the opposite order,
8660 @code{priority-up}.  This would look like this:
8662 @lisp
8663 @group
8664 (setq org-agenda-custom-commands
8665       '(("h" "Agenda and Home-related tasks"
8666          ((agenda)
8667           (tags-todo "home")
8668           (tags "garden"
8669                 ((org-agenda-sorting-strategy '(priority-up)))))
8670          ((org-agenda-sorting-strategy '(priority-down))))
8671         ("o" "Agenda and Office-related tasks"
8672          ((agenda)
8673           (tags-todo "work")
8674           (tags "office")))))
8675 @end group
8676 @end lisp
8678 As you see, the values and parentheses setting is a little complex.
8679 When in doubt, use the customize interface to set this variable---it
8680 fully supports its structure.  Just one caveat: when setting options in
8681 this interface, the @emph{values} are just Lisp expressions.  So if the
8682 value is a string, you need to add the double-quotes around the value
8683 yourself.
8686 @node Exporting Agenda Views, Agenda column view, Custom agenda views, Agenda Views
8687 @section Exporting Agenda Views
8688 @cindex agenda views, exporting
8690 If you are away from your computer, it can be very useful to have a printed
8691 version of some agenda views to carry around.  Org mode can export custom
8692 agenda views as plain text, HTML@footnote{You need to install Hrvoje Niksic's
8693 @file{htmlize.el}.}, Postscript, PDF@footnote{To create PDF output, the
8694 ghostscript @file{ps2pdf} utility must be installed on the system.  Selecting
8695 a PDF file will also create the postscript file.}, and iCalendar files.  If
8696 you want to do this only occasionally, use the command
8698 @table @kbd
8699 @orgcmd{C-x C-w,org-write-agenda}
8700 @cindex exporting agenda views
8701 @cindex agenda views, exporting
8702 @vindex org-agenda-exporter-settings
8703 Write the agenda view to a file.  Depending on the extension of the selected
8704 file name, the view will be exported as HTML (extension @file{.html} or
8705 @file{.htm}), Postscript (extension @file{.ps}), iCalendar (extension
8706 @file{.ics}), or plain text (any other extension).  Use the variable
8707 @code{org-agenda-exporter-settings} to set options for @file{ps-print} and
8708 for @file{htmlize} to be used during export, for example
8710 @vindex org-agenda-add-entry-text-maxlines
8711 @vindex htmlize-output-type
8712 @vindex ps-number-of-columns
8713 @vindex ps-landscape-mode
8714 @lisp
8715 (setq org-agenda-exporter-settings
8716       '((ps-number-of-columns 2)
8717         (ps-landscape-mode t)
8718         (org-agenda-add-entry-text-maxlines 5)
8719         (htmlize-output-type 'css)))
8720 @end lisp
8721 @end table
8723 If you need to export certain agenda views frequently, you can associate
8724 any custom agenda command with a list of output file names
8725 @footnote{If you want to store standard views like the weekly agenda
8726 or the global TODO list as well, you need to define custom commands for
8727 them in order to be able to specify file names.}.  Here is an example
8728 that first defines custom commands for the agenda and the global
8729 TODO list, together with a number of files to which to export them.
8730 Then we define two block agenda commands and specify file names for them
8731 as well.  File names can be relative to the current working directory,
8732 or absolute.
8734 @lisp
8735 @group
8736 (setq org-agenda-custom-commands
8737       '(("X" agenda "" nil ("agenda.html" "agenda.ps"))
8738         ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
8739         ("h" "Agenda and Home-related tasks"
8740          ((agenda "")
8741           (tags-todo "home")
8742           (tags "garden"))
8743          nil
8744          ("~/views/home.html"))
8745         ("o" "Agenda and Office-related tasks"
8746          ((agenda)
8747           (tags-todo "work")
8748           (tags "office"))
8749          nil
8750          ("~/views/office.ps" "~/calendars/office.ics"))))
8751 @end group
8752 @end lisp
8754 The extension of the file name determines the type of export.  If it is
8755 @file{.html}, Org mode will use the @file{htmlize.el} package to convert
8756 the buffer to HTML and save it to this file name.  If the extension is
8757 @file{.ps}, @code{ps-print-buffer-with-faces} is used to produce
8758 Postscript output.  If the extension is @file{.ics}, iCalendar export is
8759 run export over all files that were used to construct the agenda, and
8760 limit the export to entries listed in the agenda.  Any other
8761 extension produces a plain ASCII file.
8763 The export files are @emph{not} created when you use one of those
8764 commands interactively because this might use too much overhead.
8765 Instead, there is a special command to produce @emph{all} specified
8766 files in one step:
8768 @table @kbd
8769 @orgcmd{C-c a e,org-store-agenda-views}
8770 Export all agenda views that have export file names associated with
8771 them.
8772 @end table
8774 You can use the options section of the custom agenda commands to also
8775 set options for the export commands.  For example:
8777 @lisp
8778 (setq org-agenda-custom-commands
8779       '(("X" agenda ""
8780          ((ps-number-of-columns 2)
8781           (ps-landscape-mode t)
8782           (org-agenda-prefix-format " [ ] ")
8783           (org-agenda-with-colors nil)
8784           (org-agenda-remove-tags t))
8785          ("theagenda.ps"))))
8786 @end lisp
8788 @noindent
8789 This command sets two options for the Postscript exporter, to make it
8790 print in two columns in landscape format---the resulting page can be cut
8791 in two and then used in a paper agenda.  The remaining settings modify
8792 the agenda prefix to omit category and scheduling information, and
8793 instead include a checkbox to check off items.  We also remove the tags
8794 to make the lines compact, and we don't want to use colors for the
8795 black-and-white printer.  Settings specified in
8796 @code{org-agenda-exporter-settings} will also apply, but the settings
8797 in @code{org-agenda-custom-commands} take precedence.
8799 @noindent
8800 From the command line you may also use
8801 @example
8802 emacs -eval (org-batch-store-agenda-views) -kill
8803 @end example
8804 @noindent
8805 or, if you need to modify some parameters@footnote{Quoting depends on the
8806 system you use, please check the FAQ for examples.}
8807 @example
8808 emacs -eval '(org-batch-store-agenda-views                      \
8809               org-agenda-span (quote month)                     \
8810               org-agenda-start-day "2007-11-01"                 \
8811               org-agenda-include-diary nil                      \
8812               org-agenda-files (quote ("~/org/project.org")))'  \
8813       -kill
8814 @end example
8815 @noindent
8816 which will create the agenda views restricted to the file
8817 @file{~/org/project.org}, without diary entries and with a 30-day
8818 extent.
8820 You can also extract agenda information in a way that allows further
8821 processing by other programs.  See @ref{Extracting agenda information}, for
8822 more information.
8825 @node Agenda column view,  , Exporting Agenda Views, Agenda Views
8826 @section Using column view in the agenda
8827 @cindex column view, in agenda
8828 @cindex agenda, column view
8830 Column view (@pxref{Column view}) is normally used to view and edit
8831 properties embedded in the hierarchical structure of an Org file.  It can be
8832 quite useful to use column view also from the agenda, where entries are
8833 collected by certain criteria.
8835 @table @kbd
8836 @orgcmd{C-c C-x C-c,org-agenda-columns}
8837 Turn on column view in the agenda.
8838 @end table
8840 To understand how to use this properly, it is important to realize that the
8841 entries in the agenda are no longer in their proper outline environment.
8842 This causes the following issues:
8844 @enumerate
8845 @item
8846 @vindex org-columns-default-format
8847 @vindex org-overriding-columns-format
8848 Org needs to make a decision which @code{COLUMNS} format to use.  Since the
8849 entries in the agenda are collected from different files, and different files
8850 may have different @code{COLUMNS} formats, this is a non-trivial problem.
8851 Org first checks if the variable @code{org-agenda-overriding-columns-format} is
8852 currently set, and if so, takes the format from there.  Otherwise it takes
8853 the format associated with the first item in the agenda, or, if that item
8854 does not have a specific format (defined in a property, or in its file), it
8855 uses @code{org-columns-default-format}.
8856 @item
8857 @cindex property, special, CLOCKSUM
8858 If any of the columns has a summary type defined (@pxref{Column attributes}),
8859 turning on column view in the agenda will visit all relevant agenda files and
8860 make sure that the computations of this property are up to date.  This is
8861 also true for the special @code{CLOCKSUM} property.  Org will then sum the
8862 values displayed in the agenda.  In the daily/weekly agenda, the sums will
8863 cover a single day; in all other views they cover the entire block.  It is
8864 vital to realize that the agenda may show the same entry @emph{twice} (for
8865 example as scheduled and as a deadline), and it may show two entries from the
8866 same hierarchy (for example a @emph{parent} and its @emph{child}).  In these
8867 cases, the summation in the agenda will lead to incorrect results because
8868 some values will count double.
8869 @item
8870 When the column view in the agenda shows the @code{CLOCKSUM}, that is always
8871 the entire clocked time for this item.  So even in the daily/weekly agenda,
8872 the clocksum listed in column view may originate from times outside the
8873 current view.  This has the advantage that you can compare these values with
8874 a column listing the planned total effort for a task---one of the major
8875 applications for column view in the agenda.  If you want information about
8876 clocked time in the displayed period use clock table mode (press @kbd{R} in
8877 the agenda).
8878 @end enumerate
8881 @node Markup, Exporting, Agenda Views, Top
8882 @chapter Markup for rich export
8884 When exporting Org mode documents, the exporter tries to reflect the
8885 structure of the document as accurately as possible in the backend.  Since
8886 export targets like HTML, @LaTeX{}, or DocBook allow much richer formatting,
8887 Org mode has rules on how to prepare text for rich export.  This section
8888 summarizes the markup rules used in an Org mode buffer.
8890 @menu
8891 * Structural markup elements::  The basic structure as seen by the exporter
8892 * Images and tables::           Tables and Images will be included
8893 * Literal examples::            Source code examples with special formatting
8894 * Include files::               Include additional files into a document
8895 * Index entries::               Making an index
8896 * Macro replacement::           Use macros to create complex output
8897 * Embedded @LaTeX{}::           LaTeX can be freely used inside Org documents
8898 @end menu
8900 @node Structural markup elements, Images and tables, Markup, Markup
8901 @section Structural markup elements
8903 @menu
8904 * Document title::              Where the title is taken from
8905 * Headings and sections::       The document structure as seen by the exporter
8906 * Table of contents::           The if and where of the table of contents
8907 * Initial text::                Text before the first heading?
8908 * Lists::                       Lists
8909 * Paragraphs::                  Paragraphs
8910 * Footnote markup::             Footnotes
8911 * Emphasis and monospace::      Bold, italic, etc.
8912 * Horizontal rules::            Make a line
8913 * Comment lines::               What will *not* be exported
8914 @end menu
8916 @node Document title, Headings and sections, Structural markup elements, Structural markup elements
8917 @subheading Document title
8918 @cindex document title, markup rules
8920 @noindent
8921 The title of the exported document is taken from the special line
8923 @cindex #+TITLE
8924 @example
8925 #+TITLE: This is the title of the document
8926 @end example
8928 @noindent
8929 If this line does not exist, the title is derived from the first non-empty,
8930 non-comment line in the buffer.  If no such line exists, or if you have
8931 turned off exporting of the text before the first headline (see below), the
8932 title will be the file name without extension.
8934 @cindex property, EXPORT_TITLE
8935 If you are exporting only a subtree by marking is as the region, the heading
8936 of the subtree will become the title of the document.  If the subtree has a
8937 property @code{EXPORT_TITLE}, that will take precedence.
8939 @node Headings and sections, Table of contents, Document title, Structural markup elements
8940 @subheading Headings and sections
8941 @cindex headings and sections, markup rules
8943 @vindex org-export-headline-levels
8944 The outline structure of the document as described in @ref{Document
8945 Structure}, forms the basis for defining sections of the exported document.
8946 However, since the outline structure is also used for (for example) lists of
8947 tasks, only the first three outline levels will be used as headings.  Deeper
8948 levels will become itemized lists.  You can change the location of this
8949 switch globally by setting the variable @code{org-export-headline-levels}, or on a
8950 per-file basis with a line
8952 @cindex #+OPTIONS
8953 @example
8954 #+OPTIONS: H:4
8955 @end example
8957 @node Table of contents, Initial text, Headings and sections, Structural markup elements
8958 @subheading Table of contents
8959 @cindex table of contents, markup rules
8961 @vindex org-export-with-toc
8962 The table of contents is normally inserted directly before the first headline
8963 of the file.  If you would like to get it to a different location, insert the
8964 string @code{[TABLE-OF-CONTENTS]} on a line by itself at the desired
8965 location.  The depth of the table of contents is by default the same as the
8966 number of headline levels, but you can choose a smaller number, or turn off
8967 the table of contents entirely, by configuring the variable
8968 @code{org-export-with-toc}, or on a per-file basis with a line like
8970 @example
8971 #+OPTIONS: toc:2          (only to two levels in TOC)
8972 #+OPTIONS: toc:nil        (no TOC at all)
8973 @end example
8975 @node Initial text, Lists, Table of contents, Structural markup elements
8976 @subheading Text before the first headline
8977 @cindex text before first headline, markup rules
8978 @cindex #+TEXT
8980 Org mode normally exports the text before the first headline, and even uses
8981 the first line as the document title.  The text will be fully marked up.  If
8982 you need to include literal HTML, @LaTeX{}, or DocBook code, use the special
8983 constructs described below in the sections for the individual exporters.
8985 @vindex org-export-skip-text-before-1st-heading
8986 Some people like to use the space before the first headline for setup and
8987 internal links and therefore would like to control the exported text before
8988 the first headline in a different way.  You can do so by setting the variable
8989 @code{org-export-skip-text-before-1st-heading} to @code{t}.  On a per-file
8990 basis, you can get the same effect with @samp{#+OPTIONS: skip:t}.
8992 @noindent
8993 If you still want to have some text before the first headline, use the
8994 @code{#+TEXT} construct:
8996 @example
8997 #+OPTIONS: skip:t
8998 #+TEXT: This text will go before the *first* headline.
8999 #+TEXT: [TABLE-OF-CONTENTS]
9000 #+TEXT: This goes between the table of contents and the *first* headline
9001 @end example
9003 @node Lists, Paragraphs, Initial text, Structural markup elements
9004 @subheading Lists
9005 @cindex lists, markup rules
9007 Plain lists as described in @ref{Plain lists}, are translated to the backend's
9008 syntax for such lists.  Most backends support unordered, ordered, and
9009 description lists.
9011 @node Paragraphs, Footnote markup, Lists, Structural markup elements
9012 @subheading Paragraphs, line breaks, and quoting
9013 @cindex paragraphs, markup rules
9015 Paragraphs are separated by at least one empty line.  If you need to enforce
9016 a line break within a paragraph, use @samp{\\} at the end of a line.
9018 To keep the line breaks in a region, but otherwise use normal formatting, you
9019 can use this construct, which can also be used to format poetry.
9021 @cindex #+BEGIN_VERSE
9022 @example
9023 #+BEGIN_VERSE
9024  Great clouds overhead
9025  Tiny black birds rise and fall
9026  Snow covers Emacs
9028      -- AlexSchroeder
9029 #+END_VERSE
9030 @end example
9032 When quoting a passage from another document, it is customary to format this
9033 as a paragraph that is indented on both the left and the right margin.  You
9034 can include quotations in Org mode documents like this:
9036 @cindex #+BEGIN_QUOTE
9037 @example
9038 #+BEGIN_QUOTE
9039 Everything should be made as simple as possible,
9040 but not any simpler -- Albert Einstein
9041 #+END_QUOTE
9042 @end example
9044 If you would like to center some text, do it like this:
9045 @cindex #+BEGIN_CENTER
9046 @example
9047 #+BEGIN_CENTER
9048 Everything should be made as simple as possible, \\
9049 but not any simpler
9050 #+END_CENTER
9051 @end example
9054 @node Footnote markup, Emphasis and monospace, Paragraphs, Structural markup elements
9055 @subheading Footnote markup
9056 @cindex footnotes, markup rules
9057 @cindex @file{footnote.el}
9059 Footnotes defined in the way described in @ref{Footnotes}, will be exported
9060 by all backends.  Org allows multiple references to the same note, and
9061 multiple footnotes side by side.
9063 @node Emphasis and monospace, Horizontal rules, Footnote markup, Structural markup elements
9064 @subheading Emphasis and monospace
9066 @cindex underlined text, markup rules
9067 @cindex bold text, markup rules
9068 @cindex italic text, markup rules
9069 @cindex verbatim text, markup rules
9070 @cindex code text, markup rules
9071 @cindex strike-through text, markup rules
9072 You can make words @b{*bold*}, @i{/italic/}, _underlined_, @code{=code=}
9073 and @code{~verbatim~}, and, if you must, @samp{+strike-through+}.  Text
9074 in the code and verbatim string is not processed for Org mode specific
9075 syntax; it is exported verbatim.
9077 @node Horizontal rules, Comment lines, Emphasis and monospace, Structural markup elements
9078 @subheading  Horizontal rules
9079 @cindex horizontal rules, markup rules
9080 A line consisting of only dashes, and at least 5 of them, will be exported as
9081 a horizontal line (@samp{<hr/>} in HTML and @code{\hrule} in @LaTeX{}).
9083 @node Comment lines,  , Horizontal rules, Structural markup elements
9084 @subheading Comment lines
9085 @cindex comment lines
9086 @cindex exporting, not
9087 @cindex #+BEGIN_COMMENT
9089 Lines starting with @samp{#} in column zero are treated as comments and will
9090 never be exported.  If you want an indented line to be treated as a comment,
9091 start it with @samp{#+ }.  Also entire subtrees starting with the word
9092 @samp{COMMENT} will never be exported.  Finally, regions surrounded by
9093 @samp{#+BEGIN_COMMENT} ... @samp{#+END_COMMENT} will not be exported.
9095 @table @kbd
9096 @kindex C-c ;
9097 @item C-c ;
9098 Toggle the COMMENT keyword at the beginning of an entry.
9099 @end table
9102 @node Images and tables, Literal examples, Structural markup elements, Markup
9103 @section Images and Tables
9105 @cindex tables, markup rules
9106 @cindex #+CAPTION
9107 @cindex #+LABEL
9108 Both the native Org mode tables (@pxref{Tables}) and tables formatted with
9109 the @file{table.el} package will be exported properly.  For Org mode tables,
9110 the lines before the first horizontal separator line will become table header
9111 lines.  You can use the following lines somewhere before the table to assign
9112 a caption and a label for cross references, and in the text you can refer to
9113 the object with @code{\ref@{tab:basic-data@}}:
9115 @example
9116 #+CAPTION: This is the caption for the next table (or link)
9117 #+LABEL:   tab:basic-data
9118    | ... | ...|
9119    |-----|----|
9120 @end example
9122 Optionally, the caption can take the form:
9123 @example
9124 #+CAPTION: [Caption for list of figures]@{Caption for table (or link).@}
9125 @end example
9127 @cindex inlined images, markup rules
9128 Some backends (HTML, @LaTeX{}, and DocBook) allow you to directly include
9129 images into the exported document.  Org does this, if a link to an image
9130 files does not have a description part, for example @code{[[./img/a.jpg]]}.
9131 If you wish to define a caption for the image and maybe a label for internal
9132 cross references, make sure that the link is on a line by itself and precede
9133 it with @code{#+CAPTION} and @code{#+LABEL} as follows:
9135 @example
9136 #+CAPTION: This is the caption for the next figure link (or table)
9137 #+LABEL:   fig:SED-HR4049
9138 [[./img/a.jpg]]
9139 @end example
9141 You may also define additional attributes for the figure.  As this is
9142 backend-specific, see the sections about the individual backends for more
9143 information.
9145 @xref{Handling links,the discussion of image links}.
9147 @node Literal examples, Include files, Images and tables, Markup
9148 @section Literal examples
9149 @cindex literal examples, markup rules
9150 @cindex code line references, markup rules
9152 You can include literal examples that should not be subjected to
9153 markup.  Such examples will be typeset in monospace, so this is well suited
9154 for source code and similar examples.
9155 @cindex #+BEGIN_EXAMPLE
9157 @example
9158 #+BEGIN_EXAMPLE
9159 Some example from a text file.
9160 #+END_EXAMPLE
9161 @end example
9163 Note that such blocks may be @i{indented} in order to align nicely with
9164 indented text and in particular with plain list structure (@pxref{Plain
9165 lists}).  For simplicity when using small examples, you can also start the
9166 example lines with a colon followed by a space.  There may also be additional
9167 whitespace before the colon:
9169 @example
9170 Here is an example
9171    : Some example from a text file.
9172 @end example
9174 @cindex formatting source code, markup rules
9175 If the example is source code from a programming language, or any other text
9176 that can be marked up by font-lock in Emacs, you can ask for the example to
9177 look like the fontified Emacs buffer@footnote{This works automatically for
9178 the HTML backend (it requires version 1.34 of the @file{htmlize.el} package,
9179 which is distributed with Org).  Fontified code chunks in @LaTeX{} can be
9180 achieved using either the listings or the
9181 @url{http://code.google.com/p/minted, minted,} package.  To use listings, turn
9182 on the variable @code{org-export-latex-listings} and ensure that the listings
9183 package is included by the @LaTeX{} header (e.g.@: by configuring
9184 @code{org-export-latex-packages-alist}).  See the listings documentation for
9185 configuration options, including obtaining colored output.  For minted it is
9186 necessary to install the program @url{http://pygments.org, pygments}, in
9187 addition to setting @code{org-export-latex-minted}, ensuring that the minted
9188 package is included by the @LaTeX{} header, and ensuring that the
9189 @code{-shell-escape} option is passed to @file{pdflatex} (see
9190 @code{org-latex-to-pdf-process}).  See the documentation of the variables
9191 @code{org-export-latex-listings} and @code{org-export-latex-minted} for
9192 further details.}.  This is done with the @samp{src} block, where you also
9193 need to specify the name of the major mode that should be used to fontify the
9194 example@footnote{Code in @samp{src} blocks may also be evaluated either
9195 interactively or on export.  See @pxref{Working With Source Code} for more
9196 information on evaluating code blocks.}, see @ref{Easy Templates} for
9197 shortcuts to easily insert code blocks.
9198 @cindex #+BEGIN_SRC
9200 @example
9201 #+BEGIN_SRC emacs-lisp
9202   (defun org-xor (a b)
9203      "Exclusive or."
9204      (if a (not b) b))
9205 #+END_SRC
9206 @end example
9208 Both in @code{example} and in @code{src} snippets, you can add a @code{-n}
9209 switch to the end of the @code{BEGIN} line, to get the lines of the example
9210 numbered.  If you use a @code{+n} switch, the numbering from the previous
9211 numbered snippet will be continued in the current one.  In literal examples,
9212 Org will interpret strings like @samp{(ref:name)} as labels, and use them as
9213 targets for special hyperlinks like @code{[[(name)]]} (i.e.@: the reference name
9214 enclosed in single parenthesis).  In HTML, hovering the mouse over such a
9215 link will remote-highlight the corresponding code line, which is kind of
9216 cool.
9218 You can also add a @code{-r} switch which @i{removes} the labels from the
9219 source code@footnote{Adding @code{-k} to @code{-n -r} will @i{keep} the
9220 labels in the source code while using line numbers for the links, which might
9221 be useful to explain those in an Org mode example code.}.  With the @code{-n}
9222 switch, links to these references will be labeled by the line numbers from
9223 the code listing, otherwise links will use the labels with no parentheses.
9224 Here is an example:
9226 @example
9227 #+BEGIN_SRC emacs-lisp -n -r
9228 (save-excursion                  (ref:sc)
9229    (goto-char (point-min))       (ref:jump)
9230 #+END_SRC
9231 In line [[(sc)]] we remember the current position.  [[(jump)][Line (jump)]]
9232 jumps to point-min.
9233 @end example
9235 @vindex org-coderef-label-format
9236 If the syntax for the label format conflicts with the language syntax, use a
9237 @code{-l} switch to change the format, for example @samp{#+BEGIN_SRC pascal
9238 -n -r -l "((%s))"}.  See also the variable @code{org-coderef-label-format}.
9240 HTML export also allows examples to be published as text areas (@pxref{Text
9241 areas in HTML export}).
9243 Because the @code{#+BEGIN_...} and @code{#+END_...} patterns need to be added
9244 so often, shortcuts are provided using the Easy Templates facility
9245 (@pxref{Easy Templates}).
9247 @table @kbd
9248 @kindex C-c '
9249 @item C-c '
9250 Edit the source code example at point in its native mode.  This works by
9251 switching to a temporary buffer with the source code.  You need to exit by
9252 pressing @kbd{C-c '} again@footnote{Upon exit, lines starting with @samp{*}
9253 or @samp{#} will get a comma prepended, to keep them from being interpreted
9254 by Org as outline nodes or special comments.  These commas will be stripped
9255 for editing with @kbd{C-c '}, and also for export.}.  The edited version will
9256 then replace the old version in the Org buffer.  Fixed-width regions
9257 (where each line starts with a colon followed by a space) will be edited
9258 using @code{artist-mode}@footnote{You may select a different-mode with the
9259 variable @code{org-edit-fixed-width-region-mode}.} to allow creating ASCII
9260 drawings easily.  Using this command in an empty line will create a new
9261 fixed-width region.
9262 @kindex C-c l
9263 @item C-c l
9264 Calling @code{org-store-link} while editing a source code example in a
9265 temporary buffer created with @kbd{C-c '} will prompt for a label.  Make sure
9266 that it is unique in the current buffer, and insert it with the proper
9267 formatting like @samp{(ref:label)} at the end of the current line.  Then the
9268 label is stored as a link @samp{(label)}, for retrieval with @kbd{C-c C-l}.
9269 @end table
9272 @node Include files, Index entries, Literal examples, Markup
9273 @section Include files
9274 @cindex include files, markup rules
9276 During export, you can include the content of another file.  For example, to
9277 include your @file{.emacs} file, you could use:
9278 @cindex #+INCLUDE
9280 @example
9281 #+INCLUDE: "~/.emacs" src emacs-lisp
9282 @end example
9283 @noindent
9284 The optional second and third parameter are the markup (e.g.@: @samp{quote},
9285 @samp{example}, or @samp{src}), and, if the markup is @samp{src}, the
9286 language for formatting the contents.  The markup is optional; if it is not
9287 given, the text will be assumed to be in Org mode format and will be
9288 processed normally.  The include line will also allow additional keyword
9289 parameters @code{:prefix1} and @code{:prefix} to specify prefixes for the
9290 first line and for each following line, @code{:minlevel} in order to get
9291 Org mode content demoted to a specified level, as well as any options
9292 accepted by the selected markup.  For example, to include a file as an item,
9295 @example
9296 #+INCLUDE: "~/snippets/xx" :prefix1 "   + " :prefix "     "
9297 @end example
9299 You can also include a portion of a file by specifying a lines range using
9300 the @code{:lines} parameter.  The line at the upper end of the range will not
9301 be included.  The start and/or the end of the range may be omitted to use the
9302 obvious defaults.
9304 @example
9305 #+INCLUDE: "~/.emacs" :lines "5-10"   @r{Include lines 5 to 10, 10 excluded}
9306 #+INCLUDE: "~/.emacs" :lines "-10"    @r{Include lines 1 to 10, 10 excluded}
9307 #+INCLUDE: "~/.emacs" :lines "10-"    @r{Include lines from 10 to EOF}
9308 @end example
9310 @table @kbd
9311 @kindex C-c '
9312 @item C-c '
9313 Visit the include file at point.
9314 @end table
9316 @node Index entries, Macro replacement, Include files, Markup
9317 @section Index entries
9318 @cindex index entries, for publishing
9320 You can specify entries that will be used for generating an index during
9321 publishing.  This is done by lines starting with @code{#+INDEX}.  An entry
9322 the contains an exclamation mark will create a sub item.  See @ref{Generating
9323 an index} for more information.
9325 @example
9326 * Curriculum Vitae
9327 #+INDEX: CV
9328 #+INDEX: Application!CV
9329 @end example
9334 @node Macro replacement, Embedded @LaTeX{}, Index entries, Markup
9335 @section Macro replacement
9336 @cindex macro replacement, during export
9337 @cindex #+MACRO
9339 You can define text snippets with
9341 @example
9342 #+MACRO: name   replacement text $1, $2 are arguments
9343 @end example
9345 @noindent which can be referenced anywhere in the document (even in
9346 code examples) with @code{@{@{@{name(arg1,arg2)@}@}@}}.  In addition to
9347 defined macros, @code{@{@{@{title@}@}@}}, @code{@{@{@{author@}@}@}}, etc.,
9348 will reference information set by the @code{#+TITLE:}, @code{#+AUTHOR:}, and
9349 similar lines.  Also, @code{@{@{@{date(@var{FORMAT})@}@}@}} and
9350 @code{@{@{@{modification-time(@var{FORMAT})@}@}@}} refer to current date time
9351 and to the modification time of the file being exported, respectively.
9352 @var{FORMAT} should be a format string understood by
9353 @code{format-time-string}.
9355 Macro expansion takes place during export, and some people use it to
9356 construct complex HTML code.
9359 @node Embedded @LaTeX{},  , Macro replacement, Markup
9360 @section Embedded @LaTeX{}
9361 @cindex @TeX{} interpretation
9362 @cindex @LaTeX{} interpretation
9364 Plain ASCII is normally sufficient for almost all note taking.  Exceptions
9365 include scientific notes, which often require mathematical symbols and the
9366 occasional formula.  @LaTeX{}@footnote{@LaTeX{} is a macro system based on
9367 Donald E. Knuth's @TeX{} system.  Many of the features described here as
9368 ``@LaTeX{}'' are really from @TeX{}, but for simplicity I am blurring this
9369 distinction.}  is widely used to typeset scientific documents.  Org mode
9370 supports embedding @LaTeX{} code into its files, because many academics are
9371 used to writing and reading @LaTeX{} source code, and because it can be
9372 readily processed to produce pretty output for a number of export backends.
9374 @menu
9375 * Special symbols::             Greek letters and other symbols
9376 * Subscripts and superscripts::  Simple syntax for raising/lowering text
9377 * @LaTeX{} fragments::             Complex formulas made easy
9378 * Previewing @LaTeX{} fragments::  What will this snippet look like?
9379 * CDLaTeX mode::                Speed up entering of formulas
9380 @end menu
9382 @node Special symbols, Subscripts and superscripts, Embedded @LaTeX{}, Embedded @LaTeX{}
9383 @subsection Special symbols
9384 @cindex math symbols
9385 @cindex special symbols
9386 @cindex @TeX{} macros
9387 @cindex @LaTeX{} fragments, markup rules
9388 @cindex HTML entities
9389 @cindex @LaTeX{} entities
9391 You can use @LaTeX{} macros to insert special symbols like @samp{\alpha} to
9392 indicate the Greek letter, or @samp{\to} to indicate an arrow.  Completion
9393 for these macros is available, just type @samp{\} and maybe a few letters,
9394 and press @kbd{M-@key{TAB}} to see possible completions.  Unlike @LaTeX{}
9395 code, Org mode allows these macros to be present without surrounding math
9396 delimiters, for example:
9398 @example
9399 Angles are written as Greek letters \alpha, \beta and \gamma.
9400 @end example
9402 @vindex org-entities
9403 During export, these symbols will be transformed into the native format of
9404 the exporter backend.  Strings like @code{\alpha} will be exported as
9405 @code{&alpha;} in the HTML output, and as @code{$\alpha$} in the @LaTeX{}
9406 output.  Similarly, @code{\nbsp} will become @code{&nbsp;} in HTML and
9407 @code{~} in @LaTeX{}.  If you need such a symbol inside a word, terminate it
9408 like this: @samp{\Aacute@{@}stor}.
9410 A large number of entities is provided, with names taken from both HTML and
9411 @LaTeX{}; see the variable @code{org-entities} for the complete list.
9412 @samp{\-} is treated as a shy hyphen, and @samp{--}, @samp{---}, and
9413 @samp{...} are all converted into special commands creating hyphens of
9414 different lengths or a compact set of dots.
9416 If you would like to see entities displayed as UTF8 characters, use the
9417 following command@footnote{You can turn this on by default by setting the
9418 variable @code{org-pretty-entities}, or on a per-file base with the
9419 @code{#+STARTUP} option @code{entitiespretty}.}:
9421 @table @kbd
9422 @kindex C-c C-x \
9423 @item C-c C-x \
9424 Toggle display of entities as UTF-8 characters.  This does not change the
9425 buffer content which remains plain ASCII, but it overlays the UTF-8 character
9426 for display purposes only.
9427 @end table
9429 @node Subscripts and superscripts, @LaTeX{} fragments, Special symbols, Embedded @LaTeX{}
9430 @subsection Subscripts and superscripts
9431 @cindex subscript
9432 @cindex superscript
9434 Just like in @LaTeX{}, @samp{^} and @samp{_} are used to indicate super-
9435 and subscripts.  Again, these can be used without embedding them in
9436 math-mode delimiters.  To increase the readability of ASCII text, it is
9437 not necessary (but OK) to surround multi-character sub- and superscripts
9438 with curly braces.  For example
9440 @example
9441 The mass of the sun is M_sun = 1.989 x 10^30 kg.  The radius of
9442 the sun is R_@{sun@} = 6.96 x 10^8 m.
9443 @end example
9445 @vindex org-export-with-sub-superscripts
9446 To avoid interpretation as raised or lowered text, you can quote @samp{^} and
9447 @samp{_} with a backslash: @samp{\^} and @samp{\_}.  If you write a text
9448 where the underscore is often used in a different context, Org's convention
9449 to always interpret these as subscripts can get in your way.  Configure the
9450 variable @code{org-export-with-sub-superscripts} to globally change this
9451 convention, or use, on a per-file basis:
9453 @example
9454 #+OPTIONS: ^:@{@}
9455 @end example
9457 @noindent With this setting, @samp{a_b} will not be interpreted as a
9458 subscript, but @samp{a_@{b@}} will.
9460 @table @kbd
9461 @kindex C-c C-x \
9462 @item C-c C-x \
9463 In addition to showing entities as UTF-8 characters, this command will also
9464 format sub- and superscripts in a WYSIWYM way.
9465 @end table
9467 @node @LaTeX{} fragments, Previewing @LaTeX{} fragments, Subscripts and superscripts, Embedded @LaTeX{}
9468 @subsection @LaTeX{} fragments
9469 @cindex @LaTeX{} fragments
9471 @vindex org-format-latex-header
9472 Going beyond symbols and sub- and superscripts, a full formula language is
9473 needed.  Org mode can contain @LaTeX{} math fragments, and it supports ways
9474 to process these for several export backends.  When exporting to @LaTeX{},
9475 the code is obviously left as it is.  When exporting to HTML, Org invokes the
9476 @uref{http://www.mathjax.org, MathJax library} (@pxref{Math formatting in
9477 HTML export}) to process and display the math@footnote{If you plan to use
9478 this regularly or on pages with significant page views, you should install
9479 @file{MathJax} on your own
9480 server in order to limit the load of our server.}.  Finally, it can also
9481 process the mathematical expressions into images@footnote{For this to work
9482 you need to be on a system with a working @LaTeX{} installation.  You also
9483 need the @file{dvipng} program or the @file{convert}, respectively available
9484 at @url{http://sourceforge.net/projects/dvipng/} and from the
9485 @file{imagemagick} suite.  The @LaTeX{} header that will be used when
9486 processing a fragment can be configured with the variable
9487 @code{org-format-latex-header}.} that can be displayed in a browser or in
9488 DocBook documents.
9490 @LaTeX{} fragments don't need any special marking at all.  The following
9491 snippets will be identified as @LaTeX{} source code:
9492 @itemize @bullet
9493 @item
9494 Environments of any kind@footnote{When @file{MathJax} is used, only the
9495 environment recognized by @file{MathJax} will be processed.  When
9496 @file{dvipng} is used to create images, any @LaTeX{} environments will be
9497 handled.}.  The only requirement is that the @code{\begin} statement appears
9498 on a new line, preceded by only whitespace.
9499 @item
9500 Text within the usual @LaTeX{} math delimiters.  To avoid conflicts with
9501 currency specifications, single @samp{$} characters are only recognized as
9502 math delimiters if the enclosed text contains at most two line breaks, is
9503 directly attached to the @samp{$} characters with no whitespace in between,
9504 and if the closing @samp{$} is followed by whitespace, punctuation or a dash.
9505 For the other delimiters, there is no such restriction, so when in doubt, use
9506 @samp{\(...\)} as inline math delimiters.
9507 @end itemize
9509 @noindent For example:
9511 @example
9512 \begin@{equation@}                          % arbitrary environments,
9513 x=\sqrt@{b@}                                % even tables, figures
9514 \end@{equation@}                            % etc
9516 If $a^2=b$ and \( b=2 \), then the solution must be
9517 either $$ a=+\sqrt@{2@} $$ or \[ a=-\sqrt@{2@} \].
9518 @end example
9520 @noindent
9521 @vindex org-format-latex-options
9522 If you need any of the delimiter ASCII sequences for other purposes, you
9523 can configure the option @code{org-format-latex-options} to deselect the
9524 ones you do not wish to have interpreted by the @LaTeX{} converter.
9526 @vindex org-export-with-LaTeX-fragments
9527 @LaTeX{} processing can be configured with the variable
9528 @code{org-export-with-LaTeX-fragments}.  The default setting is @code{t}
9529 which means @file{MathJax} for HTML, and no processing for DocBook, ASCII and
9530 @LaTeX{} backends.  You can also set this variable on a per-file basis using one
9531 of these lines:
9533 @example
9534 #+OPTIONS: LaTeX:t          @r{Do the right thing automatically (MathJax)}
9535 #+OPTIONS: LaTeX:dvipng     @r{Force using dvipng images}
9536 #+OPTIONS: LaTeX:nil        @r{Do not process @LaTeX{} fragments at all}
9537 #+OPTIONS: LaTeX:verbatim   @r{Verbatim export, for jsMath or so}
9538 @end example
9540 @node Previewing @LaTeX{} fragments, CDLaTeX mode, @LaTeX{} fragments, Embedded @LaTeX{}
9541 @subsection Previewing @LaTeX{} fragments
9542 @cindex @LaTeX{} fragments, preview
9544 If you have @file{dvipng} installed, @LaTeX{} fragments can be processed to
9545 produce preview images of the typeset expressions:
9547 @table @kbd
9548 @kindex C-c C-x C-l
9549 @item C-c C-x C-l
9550 Produce a preview image of the @LaTeX{} fragment at point and overlay it
9551 over the source code.  If there is no fragment at point, process all
9552 fragments in the current entry (between two headlines).  When called
9553 with a prefix argument, process the entire subtree.  When called with
9554 two prefix arguments, or when the cursor is before the first headline,
9555 process the entire buffer.
9556 @kindex C-c C-c
9557 @item C-c C-c
9558 Remove the overlay preview images.
9559 @end table
9561 @vindex org-format-latex-options
9562 You can customize the variable @code{org-format-latex-options} to influence
9563 some aspects of the preview.  In particular, the @code{:scale} (and for HTML
9564 export, @code{:html-scale}) property can be used to adjust the size of the
9565 preview images.
9567 @node CDLaTeX mode,  , Previewing @LaTeX{} fragments, Embedded @LaTeX{}
9568 @subsection Using CD@LaTeX{} to enter math
9569 @cindex CD@LaTeX{}
9571 CD@LaTeX{} mode is a minor mode that is normally used in combination with a
9572 major @LaTeX{} mode like AUC@TeX{} in order to speed-up insertion of
9573 environments and math templates.  Inside Org mode, you can make use of
9574 some of the features of CD@LaTeX{} mode.  You need to install
9575 @file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
9576 AUC@TeX{}) from @url{http://www.astro.uva.nl/~dominik/Tools/cdlatex}.
9577 Don't use CD@LaTeX{} mode itself under Org mode, but use the light
9578 version @code{org-cdlatex-mode} that comes as part of Org mode.  Turn it
9579 on for the current buffer with @code{M-x org-cdlatex-mode}, or for all
9580 Org files with
9582 @lisp
9583 (add-hook 'org-mode-hook 'turn-on-org-cdlatex)
9584 @end lisp
9586 When this mode is enabled, the following features are present (for more
9587 details see the documentation of CD@LaTeX{} mode):
9588 @itemize @bullet
9589 @kindex C-c @{
9590 @item
9591 Environment templates can be inserted with @kbd{C-c @{}.
9592 @item
9593 @kindex @key{TAB}
9594 The @key{TAB} key will do template expansion if the cursor is inside a
9595 @LaTeX{} fragment@footnote{Org mode has a method to test if the cursor is
9596 inside such a fragment, see the documentation of the function
9597 @code{org-inside-LaTeX-fragment-p}.}.  For example, @key{TAB} will
9598 expand @code{fr} to @code{\frac@{@}@{@}} and position the cursor
9599 correctly inside the first brace.  Another @key{TAB} will get you into
9600 the second brace.  Even outside fragments, @key{TAB} will expand
9601 environment abbreviations at the beginning of a line.  For example, if
9602 you write @samp{equ} at the beginning of a line and press @key{TAB},
9603 this abbreviation will be expanded to an @code{equation} environment.
9604 To get a list of all abbreviations, type @kbd{M-x cdlatex-command-help}.
9605 @item
9606 @kindex _
9607 @kindex ^
9608 @vindex cdlatex-simplify-sub-super-scripts
9609 Pressing @kbd{_} and @kbd{^} inside a @LaTeX{} fragment will insert these
9610 characters together with a pair of braces.  If you use @key{TAB} to move
9611 out of the braces, and if the braces surround only a single character or
9612 macro, they are removed again (depending on the variable
9613 @code{cdlatex-simplify-sub-super-scripts}).
9614 @item
9615 @kindex `
9616 Pressing the backquote @kbd{`} followed by a character inserts math
9617 macros, also outside @LaTeX{} fragments.  If you wait more than 1.5 seconds
9618 after the backquote, a help window will pop up.
9619 @item
9620 @kindex '
9621 Pressing the single-quote @kbd{'} followed by another character modifies
9622 the symbol before point with an accent or a font.  If you wait more than
9623 1.5 seconds after the single-quote, a help window will pop up.  Character
9624 modification will work only inside @LaTeX{} fragments; outside the quote
9625 is normal.
9626 @end itemize
9628 @node Exporting, Publishing, Markup, Top
9629 @chapter Exporting
9630 @cindex exporting
9632 Org mode documents can be exported into a variety of other formats.  For
9633 printing and sharing of notes, ASCII export produces a readable and simple
9634 version of an Org file.  HTML export allows you to publish a notes file on
9635 the web, while the XOXO format provides a solid base for exchange with a
9636 broad range of other applications.  @LaTeX{} export lets you use Org mode and
9637 its structured editing functions to easily create @LaTeX{} files.  DocBook
9638 export makes it possible to convert Org files to many other formats using
9639 DocBook tools.  OpenDocument Text (ODT) export allows seamless
9640 collaboration across organizational boundaries.  For project management you
9641 can create gantt and resource charts by using TaskJuggler export.  To
9642 incorporate entries with associated times like deadlines or appointments into
9643 a desktop calendar program like iCal, Org mode can also produce extracts in
9644 the iCalendar format.  Currently, Org mode only supports export, not import of
9645 these different formats.
9647 Org supports export of selected regions when @code{transient-mark-mode} is
9648 enabled (default in Emacs 23).
9650 @menu
9651 * Selective export::            Using tags to select and exclude trees
9652 * Export options::              Per-file export settings
9653 * The export dispatcher::       How to access exporter commands
9654 * ASCII/Latin-1/UTF-8 export::  Exporting to flat files with encoding
9655 * HTML export::                 Exporting to HTML
9656 * @LaTeX{} and PDF export::     Exporting to @LaTeX{}, and processing to PDF
9657 * DocBook export::              Exporting to DocBook
9658 * OpenDocument Text export::    Exporting to OpenDocument Text
9659 * TaskJuggler export::          Exporting to TaskJuggler
9660 * Freemind export::             Exporting to Freemind mind maps
9661 * XOXO export::                 Exporting to XOXO
9662 * iCalendar export::            Exporting in iCalendar format
9663 @end menu
9665 @node Selective export, Export options, Exporting, Exporting
9666 @section Selective export
9667 @cindex export, selective by tags or TODO keyword
9669 @vindex org-export-select-tags
9670 @vindex org-export-exclude-tags
9671 @cindex org-export-with-tasks
9672 You may use tags to select the parts of a document that should be exported,
9673 or to exclude parts from export.  This behavior is governed by two variables:
9674 @code{org-export-select-tags} and @code{org-export-exclude-tags},
9675 respectively defaulting to @code{'(:export:)} and @code{'(:noexport:)}.
9677 @enumerate
9678 @item
9679 Org first checks if any of the @emph{select} tags is present in the
9680 buffer.  If yes, all trees that do not carry one of these tags will be
9681 excluded.  If a selected tree is a subtree, the heading hierarchy above it
9682 will also be selected for export, but not the text below those headings.
9684 @item
9685 If none of the select tags is found, the whole buffer will be selected for
9686 export.
9688 @item
9689 Finally, all subtrees that are marked by any of the @emph{exclude} tags will
9690 be removed from the export buffer.
9691 @end enumerate
9693 The variable @code{org-export-with-tasks} can be configured to select which
9694 kind of tasks should be included for export.  See the docstring of the
9695 variable for more information.
9697 @node Export options, The export dispatcher, Selective export, Exporting
9698 @section Export options
9699 @cindex options, for export
9701 @cindex completion, of option keywords
9702 The exporter recognizes special lines in the buffer which provide
9703 additional information.  These lines may be put anywhere in the file.
9704 The whole set of lines can be inserted into the buffer with @kbd{C-c
9705 C-e t}.  For individual lines, a good way to make sure the keyword is
9706 correct is to type @samp{#+} and then use @kbd{M-@key{TAB}} completion
9707 (@pxref{Completion}).   For a summary of other in-buffer settings not
9708 specifically related to export, see @ref{In-buffer settings}.
9709 In particular, note that you can place commonly-used (export) options in
9710 a separate file which can be included using @code{#+SETUPFILE}.
9712 @table @kbd
9713 @orgcmd{C-c C-e t,org-insert-export-options-template}
9714 Insert template with export options, see example below.
9715 @end table
9717 @cindex #+TITLE
9718 @cindex #+AUTHOR
9719 @cindex #+DATE
9720 @cindex #+EMAIL
9721 @cindex #+DESCRIPTION
9722 @cindex #+KEYWORDS
9723 @cindex #+LANGUAGE
9724 @cindex #+TEXT
9725 @cindex #+OPTIONS
9726 @cindex #+BIND
9727 @cindex #+LINK_UP
9728 @cindex #+LINK_HOME
9729 @cindex #+EXPORT_SELECT_TAGS
9730 @cindex #+EXPORT_EXCLUDE_TAGS
9731 @cindex #+XSLT
9732 @cindex #+LaTeX_HEADER
9733 @vindex user-full-name
9734 @vindex user-mail-address
9735 @vindex org-export-default-language
9736 @vindex org-export-date-timestamp-format
9737 @example
9738 #+TITLE:       the title to be shown (default is the buffer name)
9739 #+AUTHOR:      the author (default taken from @code{user-full-name})
9740 #+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}
9741 #+EMAIL:       his/her email address (default from @code{user-mail-address})
9742 #+DESCRIPTION: the page description, e.g.@: for the XHTML meta tag
9743 #+KEYWORDS:    the page keywords, e.g.@: for the XHTML meta tag
9744 #+LANGUAGE:    language for HTML, e.g.@: @samp{en} (@code{org-export-default-language})
9745 #+TEXT:        Some descriptive text to be inserted at the beginning.
9746 #+TEXT:        Several lines may be given.
9747 #+OPTIONS:     H:2 num:t toc:t \n:nil @@:t ::t |:t ^:t f:t TeX:t ...
9748 #+BIND:        lisp-var lisp-val, e.g.@:: @code{org-export-latex-low-levels itemize}
9749                @r{You need to confirm using these, or configure @code{org-export-allow-BIND}}
9750 #+LINK_UP:     the ``up'' link of an exported page
9751 #+LINK_HOME:   the ``home'' link of an exported page
9752 #+LaTeX_HEADER: extra line(s) for the @LaTeX{} header, like \usepackage@{xyz@}
9753 #+EXPORT_SELECT_TAGS:   Tags that select a tree for export
9754 #+EXPORT_EXCLUDE_TAGS:  Tags that exclude a tree from export
9755 #+XSLT:        the XSLT stylesheet used by DocBook exporter to generate FO file
9756 @end example
9758 @noindent
9759 The @code{#+OPTIONS} line is a compact@footnote{If you want to configure many options
9760 this way, you can use several @code{#+OPTIONS} lines.} form to specify export
9761 settings.  Here you can:
9762 @cindex headline levels
9763 @cindex section-numbers
9764 @cindex table of contents
9765 @cindex line-break preservation
9766 @cindex quoted HTML tags
9767 @cindex fixed-width sections
9768 @cindex tables
9769 @cindex @TeX{}-like syntax for sub- and superscripts
9770 @cindex footnotes
9771 @cindex special strings
9772 @cindex emphasized text
9773 @cindex @TeX{} macros
9774 @cindex @LaTeX{} fragments
9775 @cindex author info, in export
9776 @cindex time info, in export
9777 @vindex org-export-plist-vars
9778 @vindex org-export-author-info
9779 @vindex org-export-creator-info
9780 @vindex org-export-email-info
9781 @vindex org-export-time-stamp-file
9782 @example
9783 H:         @r{set the number of headline levels for export}
9784 num:       @r{turn on/off section-numbers}
9785 toc:       @r{turn on/off table of contents, or set level limit (integer)}
9786 \n:        @r{turn on/off line-break-preservation (DOES NOT WORK)}
9787 @@:         @r{turn on/off quoted HTML tags}
9788 ::         @r{turn on/off fixed-width sections}
9789 |:         @r{turn on/off tables}
9790 ^:         @r{turn on/off @TeX{}-like syntax for sub- and superscripts.  If}
9791            @r{you write "^:@{@}", @code{a_@{b@}} will be interpreted, but}
9792            @r{the simple @code{a_b} will be left as it is.}
9793 -:         @r{turn on/off conversion of special strings.}
9794 f:         @r{turn on/off footnotes like this[1].}
9795 todo:      @r{turn on/off inclusion of TODO keywords into exported text}
9796 tasks:     @r{turn on/off inclusion of tasks (TODO items), can be nil to remove}
9797            @r{all tasks, @code{todo} to remove DONE tasks, or list of kwds to keep}
9798 pri:       @r{turn on/off priority cookies}
9799 tags:      @r{turn on/off inclusion of tags, may also be @code{not-in-toc}}
9800 <:         @r{turn on/off inclusion of any time/date stamps like DEADLINES}
9801 *:         @r{turn on/off emphasized text (bold, italic, underlined)}
9802 TeX:       @r{turn on/off simple @TeX{} macros in plain text}
9803 LaTeX:     @r{configure export of @LaTeX{} fragments.  Default @code{auto}}
9804 skip:      @r{turn on/off skipping the text before the first heading}
9805 author:    @r{turn on/off inclusion of author name/email into exported file}
9806 email:     @r{turn on/off inclusion of author email into exported file}
9807 creator:   @r{turn on/off inclusion of creator info into exported file}
9808 timestamp: @r{turn on/off inclusion creation time into exported file}
9809 d:         @r{turn on/off inclusion of drawers, or list drawers to include}
9810 @end example
9811 @noindent
9812 These options take effect in both the HTML and @LaTeX{} export, except for
9813 @code{TeX} and @code{LaTeX} options, which are respectively @code{t} and
9814 @code{nil} for the @LaTeX{} export.
9816 The default values for these and many other options are given by a set of
9817 variables.  For a list of such variables, the corresponding OPTIONS keys and
9818 also the publishing keys (@pxref{Project alist}), see the constant
9819 @code{org-export-plist-vars}.
9821 When exporting only a single subtree by selecting it with @kbd{C-c @@} before
9822 calling an export command, the subtree can overrule some of the file's export
9823 settings with properties @code{EXPORT_FILE_NAME}, @code{EXPORT_TITLE},
9824 @code{EXPORT_TEXT}, @code{EXPORT_AUTHOR}, @code{EXPORT_DATE}, and
9825 @code{EXPORT_OPTIONS}.
9827 @node The export dispatcher, ASCII/Latin-1/UTF-8 export, Export options, Exporting
9828 @section The export dispatcher
9829 @cindex dispatcher, for export commands
9831 All export commands can be reached using the export dispatcher, which is a
9832 prefix key that prompts for an additional key specifying the command.
9833 Normally the entire file is exported, but if there is an active region that
9834 contains one outline tree, the first heading is used as document title and
9835 the subtrees are exported.
9837 @table @kbd
9838 @orgcmd{C-c C-e,org-export}
9839 @vindex org-export-run-in-background
9840 Dispatcher for export and publishing commands.  Displays a help-window
9841 listing the additional key(s) needed to launch an export or publishing
9842 command.  The prefix arg is passed through to the exporter.  A double prefix
9843 @kbd{C-u C-u} causes most commands to be executed in the background, in a
9844 separate Emacs process@footnote{To make this behavior the default, customize
9845 the variable @code{org-export-run-in-background}.}.
9846 @orgcmd{C-c C-e v,org-export-visible}
9847 Like @kbd{C-c C-e}, but only export the text that is currently visible
9848 (i.e.@: not hidden by outline visibility).
9849 @orgcmd{C-u C-u C-c C-e,org-export}
9850 @vindex org-export-run-in-background
9851 Call the exporter, but reverse the setting of
9852 @code{org-export-run-in-background}, i.e.@: request background processing if
9853 not set, or force processing in the current Emacs process if set.
9854 @end table
9856 @node ASCII/Latin-1/UTF-8 export, HTML export, The export dispatcher, Exporting
9857 @section ASCII/Latin-1/UTF-8 export
9858 @cindex ASCII export
9859 @cindex Latin-1 export
9860 @cindex UTF-8 export
9862 ASCII export produces a simple and very readable version of an Org mode
9863 file, containing only plain ASCII.  Latin-1 and UTF-8 export augment the file
9864 with special characters and symbols available in these encodings.
9866 @cindex region, active
9867 @cindex active region
9868 @cindex transient-mark-mode
9869 @table @kbd
9870 @orgcmd{C-c C-e a,org-export-as-ascii}
9871 @cindex property, EXPORT_FILE_NAME
9872 Export as an ASCII file.  For an Org file, @file{myfile.org}, the ASCII file
9873 will be @file{myfile.txt}.  The file will be overwritten without
9874 warning.  If there is an active region@footnote{This requires
9875 @code{transient-mark-mode} be turned on.}, only the region will be
9876 exported.  If the selected region is a single tree@footnote{To select the
9877 current subtree, use @kbd{C-c @@}.}, the tree head will
9878 become the document title.  If the tree head entry has or inherits an
9879 @code{EXPORT_FILE_NAME} property, that name will be used for the
9880 export.
9881 @orgcmd{C-c C-e A,org-export-as-ascii-to-buffer}
9882 Export to a temporary buffer.  Do not create a file.
9883 @orgcmd{C-c C-e n,org-export-as-latin1}
9884 @xorgcmd{C-c C-e N,org-export-as-latin1-to-buffer}
9885 Like the above commands, but use Latin-1 encoding.
9886 @orgcmd{C-c C-e u,org-export-as-utf8}
9887 @xorgcmd{C-c C-e U,org-export-as-utf8-to-buffer}
9888 Like the above commands, but use UTF-8 encoding.
9889 @item C-c C-e v a/n/u
9890 Export only the visible part of the document.
9891 @end table
9893 @cindex headline levels, for exporting
9894 In the exported version, the first 3 outline levels will become
9895 headlines, defining a general document structure.  Additional levels
9896 will be exported as itemized lists.  If you want that transition to occur
9897 at a different level, specify it with a prefix argument.  For example,
9899 @example
9900 @kbd{C-1 C-c C-e a}
9901 @end example
9903 @noindent
9904 creates only top level headlines and exports the rest as items.  When
9905 headlines are converted to items, the indentation of the text following
9906 the headline is changed to fit nicely under the item.  This is done with
9907 the assumption that the first body line indicates the base indentation of
9908 the body text.  Any indentation larger than this is adjusted to preserve
9909 the layout relative to the first line.  Should there be lines with less
9910 indentation than the first one, these are left alone.
9912 @vindex org-export-ascii-links-to-notes
9913 Links will be exported in a footnote-like style, with the descriptive part in
9914 the text and the link in a note before the next heading.  See the variable
9915 @code{org-export-ascii-links-to-notes} for details and other options.
9917 @node HTML export, @LaTeX{} and PDF export, ASCII/Latin-1/UTF-8 export, Exporting
9918 @section HTML export
9919 @cindex HTML export
9921 Org mode contains a HTML (XHTML 1.0 strict) exporter with extensive
9922 HTML formatting, in ways similar to John Gruber's @emph{markdown}
9923 language, but with additional support for tables.
9925 @menu
9926 * HTML Export commands::        How to invoke HTML export
9927 * HTML preamble and postamble::  How to insert a preamble and a postamble
9928 * Quoting HTML tags::           Using direct HTML in Org mode
9929 * Links in HTML export::        How links will be interpreted and formatted
9930 * Tables in HTML export::       How to modify the formatting of tables
9931 * Images in HTML export::       How to insert figures into HTML output
9932 * Math formatting in HTML export::  Beautiful math also on the web
9933 * Text areas in HTML export::   An alternative way to show an example
9934 * CSS support::                 Changing the appearance of the output
9935 * JavaScript support::          Info and Folding in a web browser
9936 @end menu
9938 @node HTML Export commands, HTML preamble and postamble, HTML export, HTML export
9939 @subsection HTML export commands
9941 @cindex region, active
9942 @cindex active region
9943 @cindex transient-mark-mode
9944 @table @kbd
9945 @orgcmd{C-c C-e h,org-export-as-html}
9946 @cindex property, EXPORT_FILE_NAME
9947 Export as a HTML file.  For an Org file @file{myfile.org},
9948 the HTML file will be @file{myfile.html}.  The file will be overwritten
9949 without warning.  If there is an active region@footnote{This requires
9950 @code{transient-mark-mode} be turned on.}, only the region will be
9951 exported.  If the selected region is a single tree@footnote{To select the
9952 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
9953 title.  If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
9954 property, that name will be used for the export.
9955 @orgcmd{C-c C-e b,org-export-as-html-and-open}
9956 Export as a HTML file and immediately open it with a browser.
9957 @orgcmd{C-c C-e H,org-export-as-html-to-buffer}
9958 Export to a temporary buffer.  Do not create a file.
9959 @orgcmd{C-c C-e R,org-export-region-as-html}
9960 Export the active region to a temporary buffer.  With a prefix argument, do
9961 not produce the file header and footer, but just the plain HTML section for
9962 the region.  This is good for cut-and-paste operations.
9963 @item C-c C-e v h/b/H/R
9964 Export only the visible part of the document.
9965 @item M-x org-export-region-as-html
9966 Convert the region to HTML under the assumption that it was in Org mode
9967 syntax before.  This is a global command that can be invoked in any
9968 buffer.
9969 @item M-x org-replace-region-by-HTML
9970 Replace the active region (assumed to be in Org mode syntax) by HTML
9971 code.
9972 @end table
9974 @cindex headline levels, for exporting
9975 In the exported version, the first 3 outline levels will become headlines,
9976 defining a general document structure.  Additional levels will be exported as
9977 itemized lists.  If you want that transition to occur at a different level,
9978 specify it with a numeric prefix argument.  For example,
9980 @example
9981 @kbd{C-2 C-c C-e b}
9982 @end example
9984 @noindent
9985 creates two levels of headings and does the rest as items.
9988 @node HTML preamble and postamble, Quoting HTML tags, HTML Export commands, HTML export
9989 @subsection HTML preamble and postamble
9990 @vindex org-export-html-preamble
9991 @vindex org-export-html-postamble
9992 @vindex org-export-html-preamble-format
9993 @vindex org-export-html-postamble-format
9994 @vindex org-export-html-validation-link
9995 @vindex org-export-author-info
9996 @vindex org-export-email-info
9997 @vindex org-export-creator-info
9998 @vindex org-export-time-stamp-file
10000 The HTML exporter lets you define a preamble and a postamble.
10002 The default value for @code{org-export-html-preamble} is @code{t}, which
10003 means that the preamble is inserted depending on the relevant format string
10004 in @code{org-export-html-preamble-format}.
10006 Setting @code{org-export-html-preamble} to a string will override the default
10007 format string.  Setting it to a function, will insert the output of the
10008 function, which must be a string; such a function takes no argument but you
10009 can check against the value of @code{opt-plist}, which contains the list of
10010 publishing properties for the current file.  Setting to @code{nil} will not
10011 insert any preamble.
10013 The default value for @code{org-export-html-postamble} is @code{'auto}, which
10014 means that the HTML exporter will look for the value of
10015 @code{org-export-author-info}, @code{org-export-email-info},
10016 @code{org-export-creator-info} and @code{org-export-time-stamp-file},
10017 @code{org-export-html-validation-link} and build the postamble from these
10018 values.  Setting @code{org-export-html-postamble} to @code{t} will insert the
10019 postamble from the relevant format string found in
10020 @code{org-export-html-postamble-format}.  Setting it to @code{nil} will not
10021 insert any postamble.
10023 @node Quoting HTML tags, Links in HTML export, HTML preamble and postamble, HTML export
10024 @subsection Quoting HTML tags
10026 Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
10027 @samp{&gt;} in HTML export.  If you want to include simple HTML tags
10028 which should be interpreted as such, mark them with @samp{@@} as in
10029 @samp{@@<b>bold text@@</b>}.  Note that this really works only for
10030 simple tags.  For more extensive HTML that should be copied verbatim to
10031 the exported file use either
10033 @cindex #+HTML
10034 @cindex #+BEGIN_HTML
10035 @example
10036 #+HTML: Literal HTML code for export
10037 @end example
10039 @noindent or
10040 @cindex #+BEGIN_HTML
10042 @example
10043 #+BEGIN_HTML
10044 All lines between these markers are exported literally
10045 #+END_HTML
10046 @end example
10049 @node Links in HTML export, Tables in HTML export, Quoting HTML tags, HTML export
10050 @subsection Links in HTML export
10052 @cindex links, in HTML export
10053 @cindex internal links, in HTML export
10054 @cindex external links, in HTML export
10055 Internal links (@pxref{Internal links}) will continue to work in HTML.  This
10056 includes automatic links created by radio targets (@pxref{Radio
10057 targets}).  Links to external files will still work if the target file is on
10058 the same @i{relative} path as the published Org file.  Links to other
10059 @file{.org} files will be translated into HTML links under the assumption
10060 that a HTML version also exists of the linked file, at the same relative
10061 path.  @samp{id:} links can then be used to jump to specific entries across
10062 files.  For information related to linking files while publishing them to a
10063 publishing directory see @ref{Publishing links}.
10065 If you want to specify attributes for links, you can do so using a special
10066 @code{#+ATTR_HTML} line to define attributes that will be added to the
10067 @code{<a>} or @code{<img>} tags.  Here is an example that sets @code{title}
10068 and @code{style} attributes for a link:
10070 @cindex #+ATTR_HTML
10071 @example
10072 #+ATTR_HTML: title="The Org mode homepage" style="color:red;"
10073 [[http://orgmode.org]]
10074 @end example
10076 @node Tables in HTML export, Images in HTML export, Links in HTML export, HTML export
10077 @subsection Tables
10078 @cindex tables, in HTML
10079 @vindex org-export-html-table-tag
10081 Org mode tables are exported to HTML using the table tag defined in
10082 @code{org-export-html-table-tag}.  The default setting makes tables without
10083 cell borders and frame.  If you would like to change this for individual
10084 tables, place something like the following before the table:
10086 @cindex #+CAPTION
10087 @cindex #+ATTR_HTML
10088 @example
10089 #+CAPTION: This is a table with lines around and between cells
10090 #+ATTR_HTML: border="2" rules="all" frame="border"
10091 @end example
10093 @node Images in HTML export, Math formatting in HTML export, Tables in HTML export, HTML export
10094 @subsection Images in HTML export
10096 @cindex images, inline in HTML
10097 @cindex inlining images in HTML
10098 @vindex org-export-html-inline-images
10099 HTML export can inline images given as links in the Org file, and
10100 it can make an image the clickable part of a link.  By
10101 default@footnote{But see the variable
10102 @code{org-export-html-inline-images}.}, images are inlined if a link does
10103 not have a description.  So @samp{[[file:myimg.jpg]]} will be inlined,
10104 while @samp{[[file:myimg.jpg][the image]]} will just produce a link
10105 @samp{the image} that points to the image.  If the description part
10106 itself is a @code{file:} link or a @code{http:} URL pointing to an
10107 image, this image will be inlined and activated so that clicking on the
10108 image will activate the link.  For example, to include a thumbnail that
10109 will link to a high resolution version of the image, you could use:
10111 @example
10112 [[file:highres.jpg][file:thumb.jpg]]
10113 @end example
10115 If you need to add attributes to an inlined image, use a @code{#+ATTR_HTML}.
10116 In the example below we specify the @code{alt} and @code{title} attributes to
10117 support text viewers and accessibility, and align it to the right.
10119 @cindex #+CAPTION
10120 @cindex #+ATTR_HTML
10121 @example
10122 #+CAPTION: A black cat stalking a spider
10123 #+ATTR_HTML: alt="cat/spider image" title="Action!" align="right"
10124 [[./img/a.jpg]]
10125 @end example
10127 @noindent
10128 You could use @code{http} addresses just as well.
10130 @node Math formatting in HTML export, Text areas in HTML export, Images in HTML export, HTML export
10131 @subsection Math formatting in HTML export
10132 @cindex MathJax
10133 @cindex dvipng
10135 @LaTeX{} math snippets (@pxref{@LaTeX{} fragments}) can be displayed in two
10136 different ways on HTML pages.  The default is to use the
10137 @uref{http://www.mathjax.org, MathJax system} which should work out of the
10138 box with Org mode installation because @code{http://orgmode.org} serves
10139 @file{MathJax} for Org mode users for small applications and for testing
10140 purposes.  @b{If you plan to use this regularly or on pages with significant
10141 page views, you should install@footnote{Installation instructions can be
10142 found on the MathJax website, see
10143 @uref{http://www.mathjax.org/resources/docs/?installation.html}.} MathJax on
10144 your own server in order to limit the load of our server.}  To configure
10145 @file{MathJax}, use the variable @code{org-export-html-mathjax-options} or
10146 insert something like the following into the buffer:
10148 @example
10149 #+MATHJAX: align:"left" mathml:t path:"/MathJax/MathJax.js"
10150 @end example
10152 @noindent See the docstring of the variable
10153 @code{org-export-html-mathjax-options} for the meaning of the parameters in
10154 this line.
10156 If you prefer, you can also request that @LaTeX{} fragments are processed
10157 into small images that will be inserted into the browser page.  Before the
10158 availability of MathJax, this was the default method for Org files.  This
10159 method requires that the @file{dvipng} program is available on your system.
10160 You can still get this processing with
10162 @example
10163 #+OPTIONS: LaTeX:dvipng
10164 @end example
10166 @node Text areas in HTML export, CSS support, Math formatting in HTML export, HTML export
10167 @subsection Text areas in HTML export
10169 @cindex text areas, in HTML
10170 An alternative way to publish literal code examples in HTML is to use text
10171 areas, where the example can even be edited before pasting it into an
10172 application.  It is triggered by a @code{-t} switch at an @code{example} or
10173 @code{src} block.  Using this switch disables any options for syntax and
10174 label highlighting, and line numbering, which may be present.  You may also
10175 use @code{-h} and @code{-w} switches to specify the height and width of the
10176 text area, which default to the number of lines in the example, and 80,
10177 respectively.  For example
10179 @example
10180 #+BEGIN_EXAMPLE -t -w 40
10181   (defun org-xor (a b)
10182      "Exclusive or."
10183      (if a (not b) b))
10184 #+END_EXAMPLE
10185 @end example
10188 @node CSS support, JavaScript support, Text areas in HTML export, HTML export
10189 @subsection CSS support
10190 @cindex CSS, for HTML export
10191 @cindex HTML export, CSS
10193 @vindex org-export-html-todo-kwd-class-prefix
10194 @vindex org-export-html-tag-class-prefix
10195 You can also give style information for the exported file.  The HTML exporter
10196 assigns the following special CSS classes@footnote{If the classes on TODO
10197 keywords and tags lead to conflicts, use the variables
10198 @code{org-export-html-todo-kwd-class-prefix} and
10199 @code{org-export-html-tag-class-prefix} to make them unique.} to appropriate
10200 parts of the document---your style specifications may change these, in
10201 addition to any of the standard classes like for headlines, tables, etc.
10202 @example
10203 p.author            @r{author information, including email}
10204 p.date              @r{publishing date}
10205 p.creator           @r{creator info, about org mode version}
10206 .title              @r{document title}
10207 .todo               @r{TODO keywords, all not-done states}
10208 .done               @r{the DONE keywords, all states that count as done}
10209 .WAITING            @r{each TODO keyword also uses a class named after itself}
10210 .timestamp          @r{timestamp}
10211 .timestamp-kwd      @r{keyword associated with a timestamp, like SCHEDULED}
10212 .timestamp-wrapper  @r{span around keyword plus timestamp}
10213 .tag                @r{tag in a headline}
10214 ._HOME              @r{each tag uses itself as a class, "@@" replaced by "_"}
10215 .target             @r{target for links}
10216 .linenr             @r{the line number in a code example}
10217 .code-highlighted   @r{for highlighting referenced code lines}
10218 div.outline-N       @r{div for outline level N (headline plus text))}
10219 div.outline-text-N  @r{extra div for text at outline level N}
10220 .section-number-N   @r{section number in headlines, different for each level}
10221 div.figure          @r{how to format an inlined image}
10222 pre.src             @r{formatted source code}
10223 pre.example         @r{normal example}
10224 p.verse             @r{verse paragraph}
10225 div.footnotes       @r{footnote section headline}
10226 p.footnote          @r{footnote definition paragraph, containing a footnote}
10227 .footref            @r{a footnote reference number (always a <sup>)}
10228 .footnum            @r{footnote number in footnote definition (always <sup>)}
10229 @end example
10231 @vindex org-export-html-style-default
10232 @vindex org-export-html-style-include-default
10233 @vindex org-export-html-style
10234 @vindex org-export-html-extra
10235 @vindex org-export-html-style-default
10236 Each exported file contains a compact default style that defines these
10237 classes in a basic way@footnote{This style is defined in the constant
10238 @code{org-export-html-style-default}, which you should not modify.  To turn
10239 inclusion of these defaults off, customize
10240 @code{org-export-html-style-include-default}}.  You may overwrite these
10241 settings, or add to them by using the variables @code{org-export-html-style}
10242 (for Org-wide settings) and @code{org-export-html-style-extra} (for more
10243 fine-grained settings, like file-local settings).  To set the latter variable
10244 individually for each file, you can use
10246 @cindex #+STYLE
10247 @example
10248 #+STYLE: <link rel="stylesheet" type="text/css" href="stylesheet.css" />
10249 @end example
10251 @noindent
10252 For longer style definitions, you can use several such lines.  You could also
10253 directly write a @code{<style>} @code{</style>} section in this way, without
10254 referring to an external file.
10256 In order to add styles to a subtree, use the @code{:HTML_CONTAINER_CLASS:}
10257 property to assign a class to the tree.  In order to specify CSS styles for a
10258 particular headline, you can use the id specified in a @code{:CUSTOM_ID:}
10259 property.
10261 @c FIXME: More about header and footer styles
10262 @c FIXME: Talk about links and targets.
10264 @node JavaScript support,  , CSS support, HTML export
10265 @subsection JavaScript supported display of web pages
10267 @cindex Rose, Sebastian
10268 Sebastian Rose has written a JavaScript program especially designed to
10269 enhance the web viewing experience of HTML files created with Org.  This
10270 program allows you to view large files in two different ways.  The first one
10271 is an @emph{Info}-like mode where each section is displayed separately and
10272 navigation can be done with the @kbd{n} and @kbd{p} keys (and some other keys
10273 as well, press @kbd{?} for an overview of the available keys).  The second
10274 view type is a @emph{folding} view much like Org provides inside Emacs.  The
10275 script is available at @url{http://orgmode.org/org-info.js} and you can find
10276 the documentation for it at @url{http://orgmode.org/worg/code/org-info-js/}.
10277 We host the script at our site, but if you use it a lot, you might
10278 not want to be dependent on @url{orgmode.org} and prefer to install a local
10279 copy on your own web server.
10281 To use the script, you need to make sure that the @file{org-jsinfo.el} module
10282 gets loaded.  It should be loaded by default, but you can try @kbd{M-x
10283 customize-variable @key{RET} org-modules @key{RET}} to convince yourself that
10284 this is indeed the case.  All it then takes to make use of the program is
10285 adding a single line to the Org file:
10287 @cindex #+INFOJS_OPT
10288 @example
10289 #+INFOJS_OPT: view:info toc:nil
10290 @end example
10292 @noindent
10293 If this line is found, the HTML header will automatically contain the code
10294 needed to invoke the script.  Using the line above, you can set the following
10295 viewing options:
10297 @example
10298 path:    @r{The path to the script.  The default is to grab the script from}
10299          @r{@url{http://orgmode.org/org-info.js}, but you might want to have}
10300          @r{a local copy and use a path like @samp{../scripts/org-info.js}.}
10301 view:    @r{Initial view when the website is first shown.  Possible values are:}
10302          info      @r{Info-like interface with one section per page.}
10303          overview  @r{Folding interface, initially showing only top-level.}
10304          content   @r{Folding interface, starting with all headlines visible.}
10305          showall   @r{Folding interface, all headlines and text visible.}
10306 sdepth:  @r{Maximum headline level that will still become an independent}
10307          @r{section for info and folding modes.  The default is taken from}
10308          @r{@code{org-export-headline-levels} (= the @code{H} switch in @code{#+OPTIONS}).}
10309          @r{If this is smaller than in @code{org-export-headline-levels}, each}
10310          @r{info/folding section can still contain child headlines.}
10311 toc:     @r{Should the table of contents @emph{initially} be visible?}
10312          @r{Even when @code{nil}, you can always get to the "toc" with @kbd{i}.}
10313 tdepth:  @r{The depth of the table of contents.  The defaults are taken from}
10314          @r{the variables @code{org-export-headline-levels} and @code{org-export-with-toc}.}
10315 ftoc:    @r{Does the CSS of the page specify a fixed position for the "toc"?}
10316          @r{If yes, the toc will never be displayed as a section.}
10317 ltoc:    @r{Should there be short contents (children) in each section?}
10318          @r{Make this @code{above} if the section should be above initial text.}
10319 mouse:   @r{Headings are highlighted when the mouse is over them.  Should be}
10320          @r{@samp{underline} (default) or a background color like @samp{#cccccc}.}
10321 buttons: @r{Should view-toggle buttons be everywhere?  When @code{nil} (the}
10322          @r{default), only one such button will be present.}
10323 @end example
10324 @noindent
10325 @vindex org-infojs-options
10326 @vindex org-export-html-use-infojs
10327 You can choose default values for these options by customizing the variable
10328 @code{org-infojs-options}.  If you always want to apply the script to your
10329 pages, configure the variable @code{org-export-html-use-infojs}.
10331 @node @LaTeX{} and PDF export, DocBook export, HTML export, Exporting
10332 @section @LaTeX{} and PDF export
10333 @cindex @LaTeX{} export
10334 @cindex PDF export
10335 @cindex Guerry, Bastien
10337 Org mode contains a @LaTeX{} exporter written by Bastien Guerry.  With
10338 further processing@footnote{The default @LaTeX{} output is designed for
10339 processing with @code{pdftex} or @LaTeX{}.  It includes packages that are not
10340 compatible with @code{xetex} and possibly @code{luatex}.  See the variables
10341 @code{org-export-latex-default-packages-alist} and
10342 @code{org-export-latex-packages-alist}.}, this backend is also used to
10343 produce PDF output.  Since the @LaTeX{} output uses @file{hyperref} to
10344 implement links and cross references, the PDF output file will be fully
10345 linked.  Beware of the fact that your @code{org} file has to be properly
10346 structured in order to be correctly exported: respect the hierarchy of
10347 sections.
10349 @menu
10350 * @LaTeX{}/PDF export commands::
10351 * Header and sectioning::       Setting up the export file structure
10352 * Quoting @LaTeX{} code::       Incorporating literal @LaTeX{} code
10353 * Tables in @LaTeX{} export::   Options for exporting tables to @LaTeX{}
10354 * Images in @LaTeX{} export::   How to insert figures into @LaTeX{} output
10355 * Beamer class export::         Turning the file into a presentation
10356 @end menu
10358 @node @LaTeX{}/PDF export commands, Header and sectioning, @LaTeX{} and PDF export, @LaTeX{} and PDF export
10359 @subsection @LaTeX{} export commands
10361 @cindex region, active
10362 @cindex active region
10363 @cindex transient-mark-mode
10364 @table @kbd
10365 @orgcmd{C-c C-e l,org-export-as-latex}
10366 @cindex property EXPORT_FILE_NAME
10367 Export as a @LaTeX{} file.  For an Org file
10368 @file{myfile.org}, the @LaTeX{} file will be @file{myfile.tex}.  The file will
10369 be overwritten without warning.  If there is an active region@footnote{This
10370 requires @code{transient-mark-mode} be turned on.}, only the region will be
10371 exported.  If the selected region is a single tree@footnote{To select the
10372 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
10373 title.  If the tree head entry has or inherits an @code{EXPORT_FILE_NAME}
10374 property, that name will be used for the export.
10375 @orgcmd{C-c C-e L,org-export-as-latex-to-buffer}
10376 Export to a temporary buffer.  Do not create a file.
10377 @item C-c C-e v l/L
10378 Export only the visible part of the document.
10379 @item M-x org-export-region-as-latex
10380 Convert the region to @LaTeX{} under the assumption that it was in Org mode
10381 syntax before.  This is a global command that can be invoked in any
10382 buffer.
10383 @item M-x org-replace-region-by-latex
10384 Replace the active region (assumed to be in Org mode syntax) by @LaTeX{}
10385 code.
10386 @orgcmd{C-c C-e p,org-export-as-pdf}
10387 Export as @LaTeX{} and then process to PDF.
10388 @orgcmd{C-c C-e d,org-export-as-pdf-and-open}
10389 Export as @LaTeX{} and then process to PDF, then open the resulting PDF file.
10390 @end table
10392 @cindex headline levels, for exporting
10393 @vindex org-latex-low-levels
10394 In the exported version, the first 3 outline levels will become
10395 headlines, defining a general document structure.  Additional levels
10396 will be exported as description lists.  The exporter can ignore them or
10397 convert them to a custom string depending on
10398 @code{org-latex-low-levels}.
10400 If you want that transition to occur at a different level, specify it
10401 with a numeric prefix argument.  For example,
10403 @example
10404 @kbd{C-2 C-c C-e l}
10405 @end example
10407 @noindent
10408 creates two levels of headings and does the rest as items.
10410 @node Header and sectioning, Quoting @LaTeX{} code, @LaTeX{}/PDF export commands, @LaTeX{} and PDF export
10411 @subsection Header and sectioning structure
10412 @cindex @LaTeX{} class
10413 @cindex @LaTeX{} sectioning structure
10414 @cindex @LaTeX{} header
10415 @cindex header, for @LaTeX{} files
10416 @cindex sectioning structure, for @LaTeX{} export
10418 By default, the @LaTeX{} output uses the class @code{article}.
10420 @vindex org-export-latex-default-class
10421 @vindex org-export-latex-classes
10422 @vindex org-export-latex-default-packages-alist
10423 @vindex org-export-latex-packages-alist
10424 @cindex #+LaTeX_HEADER
10425 @cindex #+LaTeX_CLASS
10426 @cindex #+LaTeX_CLASS_OPTIONS
10427 @cindex property, LaTeX_CLASS
10428 @cindex property, LaTeX_CLASS_OPTIONS
10429 You can change this globally by setting a different value for
10430 @code{org-export-latex-default-class} or locally by adding an option like
10431 @code{#+LaTeX_CLASS: myclass} in your file, or with a @code{:LaTeX_CLASS:}
10432 property that applies when exporting a region containing only this (sub)tree.
10433 The class must be listed in @code{org-export-latex-classes}.  This variable
10434 defines a header template for each class@footnote{Into which the values of
10435 @code{org-export-latex-default-packages-alist} and
10436 @code{org-export-latex-packages-alist} are spliced.}, and allows you to
10437 define the sectioning structure for each class.  You can also define your own
10438 classes there.  @code{#+LaTeX_CLASS_OPTIONS} or a @code{:LaTeX_CLASS_OPTIONS:}
10439 property can specify the options for the @code{\documentclass} macro.  The
10440 options to documentclass have to be provided, as expected by @LaTeX{}, within
10441 square brackets.  You can also use @code{#+LaTeX_HEADER: \usepackage@{xyz@}}
10442 to add lines to the header.  See the docstring of
10443 @code{org-export-latex-classes} for more information.  An example is shown
10444 below.
10446 @example
10447 #+LaTeX_CLASS: article
10448 #+LaTeX_CLASS_OPTIONS: [a4paper]
10449 #+LaTeX_HEADER: \usepackage@{xyz@}
10451 * Headline 1
10452   some text
10453 @end example
10455 @node Quoting @LaTeX{} code, Tables in @LaTeX{} export, Header and sectioning, @LaTeX{} and PDF export
10456 @subsection Quoting @LaTeX{} code
10458 Embedded @LaTeX{} as described in @ref{Embedded @LaTeX{}}, will be correctly
10459 inserted into the @LaTeX{} file.  This includes simple macros like
10460 @samp{\ref@{LABEL@}} to create a cross reference to a figure.  Furthermore,
10461 you can add special code that should only be present in @LaTeX{} export with
10462 the following constructs:
10464 @cindex #+LaTeX
10465 @cindex #+BEGIN_LaTeX
10466 @example
10467 #+LaTeX: Literal @LaTeX{} code for export
10468 @end example
10470 @noindent or
10471 @cindex #+BEGIN_LaTeX
10473 @example
10474 #+BEGIN_LaTeX
10475 All lines between these markers are exported literally
10476 #+END_LaTeX
10477 @end example
10480 @node Tables in @LaTeX{} export, Images in @LaTeX{} export, Quoting @LaTeX{} code, @LaTeX{} and PDF export
10481 @subsection Tables in @LaTeX{} export
10482 @cindex tables, in @LaTeX{} export
10484 For @LaTeX{} export of a table, you can specify a label, a caption and
10485 placement options (@pxref{Images and tables}).  You can also use the
10486 @code{ATTR_LaTeX} line to request a @code{longtable} environment for the
10487 table, so that it may span several pages, or to change the default table
10488 environment from @code{table} to @code{table*} or to change the default inner
10489 tabular environment to @code{tabularx} or @code{tabulary}.  Finally, you can
10490 set the alignment string, and (with @code{tabularx} or @code{tabulary}) the
10491 width:
10493 @cindex #+CAPTION
10494 @cindex #+LABEL
10495 @cindex #+ATTR_LaTeX
10496 @example
10497 #+CAPTION: A long table
10498 #+LABEL: tbl:long
10499 #+ATTR_LaTeX: longtable align=l|lp@{3cm@}r|l
10500 | ..... | ..... |
10501 | ..... | ..... |
10502 @end example
10504 or to specify a multicolumn table with @code{tabulary}
10506 @cindex #+CAPTION
10507 @cindex #+LABEL
10508 @cindex #+ATTR_LaTeX
10509 @example
10510 #+CAPTION: A wide table with tabulary
10511 #+LABEL: tbl:wide
10512 #+ATTR_LaTeX: table* tabulary width=\textwidth
10513 | ..... | ..... |
10514 | ..... | ..... |
10515 @end example
10517 @node Images in @LaTeX{} export, Beamer class export, Tables in @LaTeX{} export, @LaTeX{} and PDF export
10518 @subsection Images in @LaTeX{} export
10519 @cindex images, inline in @LaTeX{}
10520 @cindex inlining images in @LaTeX{}
10522 Images that are linked to without a description part in the link, like
10523 @samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]} will be inserted into the PDF
10524 output file resulting from @LaTeX{} processing.  Org will use an
10525 @code{\includegraphics} macro to insert the image.  If you have specified a
10526 caption and/or a label as described in @ref{Images and tables}, the figure
10527 will be wrapped into a @code{figure} environment and thus become a floating
10528 element.  You can use an @code{#+ATTR_LaTeX:} line to specify various other
10529 options.  You can ask org to export an image as a float without specifying
10530 a label or a caption by using the keyword @code{float} in this line.  Various
10531 optional arguments to the @code{\includegraphics} macro can also be specified
10532 in this fashion.  To modify the placement option of the floating environment,
10533 add something like @samp{placement=[h!]} to the attributes.  It is to be noted
10534 this option can be used with tables as well@footnote{One can also take
10535 advantage of this option to pass other, unrelated options into the figure or
10536 table environment.  For an example see the section ``Exporting org files'' in
10537 @url{http://orgmode.org/worg/org-hacks.html}}.
10539 If you would like to let text flow around the image, add the word @samp{wrap}
10540 to the @code{#+ATTR_LaTeX:} line, which will make the figure occupy the left
10541 half of the page.  To fine-tune, the @code{placement} field will be the set
10542 of additional arguments needed by the @code{wrapfigure} environment.  Note
10543 that if you change the size of the image, you need to use compatible settings
10544 for @code{\includegraphics} and @code{wrapfigure}.
10546 @cindex #+CAPTION
10547 @cindex #+LABEL
10548 @cindex #+ATTR_LaTeX
10549 @example
10550 #+CAPTION:    The black-body emission of the disk around HR 4049
10551 #+LABEL:      fig:SED-HR4049
10552 #+ATTR_LaTeX: width=5cm,angle=90
10553 [[./img/sed-hr4049.pdf]]
10555 #+ATTR_LaTeX: width=0.38\textwidth wrap placement=@{r@}@{0.4\textwidth@}
10556 [[./img/hst.png]]
10557 @end example
10559 If you wish to include an image which spans multiple columns in a page, you
10560 can use the keyword @code{multicolumn} in the @code{#+ATTR_LaTeX} line.  This
10561 will export the image wrapped in a @code{figure*} environment.
10563 If you need references to a label created in this way, write
10564 @samp{\ref@{fig:SED-HR4049@}} just like in @LaTeX{}.
10566 @node Beamer class export,  , Images in @LaTeX{} export, @LaTeX{} and PDF export
10567 @subsection Beamer class export
10569 The @LaTeX{} class @file{beamer} allows production of high quality presentations
10570 using @LaTeX{} and pdf processing.  Org mode has special support for turning an
10571 Org mode file or tree into a @file{beamer} presentation.
10573 When the @LaTeX{} class for the current buffer (as set with @code{#+LaTeX_CLASS:
10574 beamer}) or subtree (set with a @code{LaTeX_CLASS} property) is
10575 @code{beamer}, a special export mode will turn the file or tree into a beamer
10576 presentation.  Any tree with not-too-deep level nesting should in principle be
10577 exportable as a beamer presentation.  By default, the top-level entries (or
10578 the first level below the selected subtree heading) will be turned into
10579 frames, and the outline structure below this level will become itemize lists.
10580 You can also configure the variable @code{org-beamer-frame-level} to a
10581 different level---then the hierarchy above frames will produce the sectioning
10582 structure of the presentation.
10584 A template for useful in-buffer settings or properties can be inserted into
10585 the buffer with @kbd{M-x org-insert-beamer-options-template}.  Among other
10586 things, this will install a column view format which is very handy for
10587 editing special properties used by beamer.
10589 You can influence the structure of the presentation using the following
10590 properties:
10592 @table @code
10593 @item BEAMER_env
10594 The environment that should be used to format this entry.  Valid environments
10595 are defined in the constant @code{org-beamer-environments-default}, and you
10596 can define more in @code{org-beamer-environments-extra}.  If this property is
10597 set, the entry will also get a @code{:B_environment:} tag to make this
10598 visible.  This tag has no semantic meaning, it is only a visual aid.
10599 @item BEAMER_envargs
10600 The beamer-special arguments that should be used for the environment, like
10601 @code{[t]} or @code{[<+->]} of @code{<2-3>}.  If the @code{BEAMER_col}
10602 property is also set, something like @code{C[t]} can be added here as well to
10603 set an options argument for the implied @code{columns} environment.
10604 @code{c[t]} or @code{c<2->} will set an options for the implied @code{column}
10605 environment.
10606 @item BEAMER_col
10607 The width of a column that should start with this entry.  If this property is
10608 set, the entry will also get a @code{:BMCOL:} property to make this visible.
10609 Also this tag is only a visual aid.  When this is a plain number, it will be
10610 interpreted as a fraction of @code{\textwidth}.  Otherwise it will be assumed
10611 that you have specified the units, like @samp{3cm}.  The first such property
10612 in a frame will start a @code{columns} environment to surround the columns.
10613 This environment is closed when an entry has a @code{BEAMER_col} property
10614 with value 0 or 1, or automatically at the end of the frame.
10615 @item BEAMER_extra
10616 Additional commands that should be inserted after the environment has been
10617 opened.  For example, when creating a frame, this can be used to specify
10618 transitions.
10619 @end table
10621 Frames will automatically receive a @code{fragile} option if they contain
10622 source code that uses the verbatim environment.  Special @file{beamer}
10623 specific code can be inserted using @code{#+BEAMER:} and
10624 @code{#+BEGIN_BEAMER...#+END_BEAMER} constructs, similar to other export
10625 backends, but with the difference that @code{#+LaTeX:} stuff will be included
10626 in the presentation as well.
10628 Outline nodes with @code{BEAMER_env} property value @samp{note} or
10629 @samp{noteNH} will be formatted as beamer notes, i,e, they will be wrapped
10630 into @code{\note@{...@}}.  The former will include the heading as part of the
10631 note text, the latter will ignore the heading of that node.  To simplify note
10632 generation, it is actually enough to mark the note with a @emph{tag} (either
10633 @code{:B_note:} or @code{:B_noteNH:}) instead of creating the
10634 @code{BEAMER_env} property.
10636 You can turn on a special minor mode @code{org-beamer-mode} for editing
10637 support with
10639 @example
10640 #+STARTUP: beamer
10641 @end example
10643 @table @kbd
10644 @orgcmd{C-c C-b,org-beamer-select-environment}
10645 In @code{org-beamer-mode}, this key offers fast selection of a beamer
10646 environment or the @code{BEAMER_col} property.
10647 @end table
10649 Column view provides a great way to set the environment of a node and other
10650 important parameters.  Make sure you are using a COLUMN format that is geared
10651 toward this special purpose.  The command @kbd{M-x
10652 org-insert-beamer-options-template} defines such a format.
10654 Here is a simple example Org document that is intended for beamer export.
10656 @smallexample
10657 #+LaTeX_CLASS: beamer
10658 #+TITLE: Example Presentation
10659 #+AUTHOR: Carsten Dominik
10660 #+LaTeX_CLASS_OPTIONS: [presentation]
10661 #+BEAMER_FRAME_LEVEL: 2
10662 #+BEAMER_HEADER_EXTRA: \usetheme@{Madrid@}\usecolortheme@{default@}
10663 #+COLUMNS: %35ITEM %10BEAMER_env(Env) %10BEAMER_envargs(Args) %4BEAMER_col(Col) %8BEAMER_extra(Ex)
10665 * This is the first structural section
10667 ** Frame 1 \\ with a subtitle
10668 *** Thanks to Eric Fraga                                      :BMCOL:B_block:
10669     :PROPERTIES:
10670     :BEAMER_env: block
10671     :BEAMER_envargs: C[t]
10672     :BEAMER_col: 0.5
10673     :END:
10674     for the first viable beamer setup in Org
10675 *** Thanks to everyone else                                   :BMCOL:B_block:
10676     :PROPERTIES:
10677     :BEAMER_col: 0.5
10678     :BEAMER_env: block
10679     :BEAMER_envargs: <2->
10680     :END:
10681     for contributing to the discussion
10682 **** This will be formatted as a beamer note                  :B_note:
10683 ** Frame 2 \\ where we will not use columns
10684 *** Request                                                   :B_block:
10685     Please test this stuff!
10686     :PROPERTIES:
10687     :BEAMER_env: block
10688     :END:
10689 @end smallexample
10691 For more information, see the documentation on Worg.
10693 @node DocBook export, OpenDocument Text export, @LaTeX{} and PDF export, Exporting
10694 @section DocBook export
10695 @cindex DocBook export
10696 @cindex PDF export
10697 @cindex Cui, Baoqiu
10699 Org contains a DocBook exporter written by Baoqiu Cui.  Once an Org file is
10700 exported to DocBook format, it can be further processed to produce other
10701 formats, including PDF, HTML, man pages, etc., using many available DocBook
10702 tools and stylesheets.
10704 Currently DocBook exporter only supports DocBook V5.0.
10706 @menu
10707 * DocBook export commands::     How to invoke DocBook export
10708 * Quoting DocBook code::        Incorporating DocBook code in Org files
10709 * Recursive sections::          Recursive sections in DocBook
10710 * Tables in DocBook export::    Tables are exported as HTML tables
10711 * Images in DocBook export::    How to insert figures into DocBook output
10712 * Special characters::          How to handle special characters
10713 @end menu
10715 @node DocBook export commands, Quoting DocBook code, DocBook export, DocBook export
10716 @subsection DocBook export commands
10718 @cindex region, active
10719 @cindex active region
10720 @cindex transient-mark-mode
10721 @table @kbd
10722 @orgcmd{C-c C-e D,org-export-as-docbook}
10723 @cindex property EXPORT_FILE_NAME
10724 Export as a DocBook file.  For an Org file, @file{myfile.org}, the DocBook XML
10725 file will be @file{myfile.xml}.  The file will be overwritten without
10726 warning.  If there is an active region@footnote{This requires
10727 @code{transient-mark-mode} to be turned on}, only the region will be
10728 exported.  If the selected region is a single tree@footnote{To select the
10729 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
10730 title.  If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
10731 property, that name will be used for the export.
10732 @orgcmd{C-c C-e V,org-export-as-docbook-pdf-and-open}
10733 Export as a DocBook file, process to PDF, then open the resulting PDF file.
10735 @vindex org-export-docbook-xslt-proc-command
10736 @vindex org-export-docbook-xsl-fo-proc-command
10737 Note that, in order to produce PDF output based on an exported DocBook file,
10738 you need to have XSLT processor and XSL-FO processor software installed on your
10739 system.  Check variables @code{org-export-docbook-xslt-proc-command} and
10740 @code{org-export-docbook-xsl-fo-proc-command}.
10742 @vindex org-export-docbook-xslt-stylesheet
10743 The stylesheet argument @code{%s} in variable
10744 @code{org-export-docbook-xslt-proc-command} is replaced by the value of
10745 variable @code{org-export-docbook-xslt-stylesheet}, which needs to be set by
10746 the user.  You can also overrule this global setting on a per-file basis by
10747 adding an in-buffer setting @code{#+XSLT:} to the Org file.
10749 @orgkey{C-c C-e v D}
10750 Export only the visible part of the document.
10751 @end table
10753 @node Quoting DocBook code, Recursive sections, DocBook export commands, DocBook export
10754 @subsection Quoting DocBook code
10756 You can quote DocBook code in Org files and copy it verbatim into exported
10757 DocBook file with the following constructs:
10759 @cindex #+DOCBOOK
10760 @cindex #+BEGIN_DOCBOOK
10761 @example
10762 #+DOCBOOK: Literal DocBook code for export
10763 @end example
10765 @noindent or
10766 @cindex #+BEGIN_DOCBOOK
10768 @example
10769 #+BEGIN_DOCBOOK
10770 All lines between these markers are exported by DocBook exporter
10771 literally.
10772 #+END_DOCBOOK
10773 @end example
10775 For example, you can use the following lines to include a DocBook warning
10776 admonition.  As to what this warning says, you should pay attention to the
10777 document context when quoting DocBook code in Org files.  You may make
10778 exported DocBook XML files invalid by not quoting DocBook code correctly.
10780 @example
10781 #+BEGIN_DOCBOOK
10782 <warning>
10783   <para>You should know what you are doing when quoting DocBook XML code
10784   in your Org file.  Invalid DocBook XML may be generated by
10785   DocBook exporter if you are not careful!</para>
10786 </warning>
10787 #+END_DOCBOOK
10788 @end example
10790 @node Recursive sections, Tables in DocBook export, Quoting DocBook code, DocBook export
10791 @subsection Recursive sections
10792 @cindex DocBook recursive sections
10794 DocBook exporter exports Org files as articles using the @code{article}
10795 element in DocBook.  Recursive sections, i.e.@: @code{section} elements, are
10796 used in exported articles.  Top level headlines in Org files are exported as
10797 top level sections, and lower level headlines are exported as nested
10798 sections.  The entire structure of Org files will be exported completely, no
10799 matter how many nested levels of headlines there are.
10801 Using recursive sections makes it easy to port and reuse exported DocBook
10802 code in other DocBook document types like @code{book} or @code{set}.
10804 @node Tables in DocBook export, Images in DocBook export, Recursive sections, DocBook export
10805 @subsection Tables in DocBook export
10806 @cindex tables, in DocBook export
10808 Tables in Org files are exported as HTML tables, which have been supported since
10809 DocBook V4.3.
10811 If a table does not have a caption, an informal table is generated using the
10812 @code{informaltable} element; otherwise, a formal table will be generated
10813 using the @code{table} element.
10815 @node Images in DocBook export, Special characters, Tables in DocBook export, DocBook export
10816 @subsection Images in DocBook export
10817 @cindex images, inline in DocBook
10818 @cindex inlining images in DocBook
10820 Images that are linked to without a description part in the link, like
10821 @samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]}, will be exported to DocBook
10822 using @code{mediaobject} elements.  Each @code{mediaobject} element contains
10823 an @code{imageobject} that wraps an @code{imagedata} element.  If you have
10824 specified a caption for an image as described in @ref{Images and tables}, a
10825 @code{caption} element will be added in @code{mediaobject}.  If a label is
10826 also specified, it will be exported as an @code{xml:id} attribute of the
10827 @code{mediaobject} element.
10829 @vindex org-export-docbook-default-image-attributes
10830 Image attributes supported by the @code{imagedata} element, like @code{align}
10831 or @code{width}, can be specified in two ways: you can either customize
10832 variable @code{org-export-docbook-default-image-attributes} or use the
10833 @code{#+ATTR_DOCBOOK:} line.  Attributes specified in variable
10834 @code{org-export-docbook-default-image-attributes} are applied to all inline
10835 images in the Org file to be exported (unless they are overridden by image
10836 attributes specified in @code{#+ATTR_DOCBOOK:} lines).
10838 The @code{#+ATTR_DOCBOOK:} line can be used to specify additional image
10839 attributes or override default image attributes for individual images.  If
10840 the same attribute appears in both the @code{#+ATTR_DOCBOOK:} line and
10841 variable @code{org-export-docbook-default-image-attributes}, the former
10842 takes precedence.  Here is an example about how image attributes can be
10843 set:
10845 @cindex #+CAPTION
10846 @cindex #+LABEL
10847 @cindex #+ATTR_DOCBOOK
10848 @example
10849 #+CAPTION:    The logo of Org mode
10850 #+LABEL:      unicorn-svg
10851 #+ATTR_DOCBOOK: scalefit="1" width="100%" depth="100%"
10852 [[./img/org-mode-unicorn.svg]]
10853 @end example
10855 @vindex org-export-docbook-inline-image-extensions
10856 By default, DocBook exporter recognizes the following image file types:
10857 @file{jpeg}, @file{jpg}, @file{png}, @file{gif}, and @file{svg}.  You can
10858 customize variable @code{org-export-docbook-inline-image-extensions} to add
10859 more types to this list as long as DocBook supports them.
10861 @node Special characters,  , Images in DocBook export, DocBook export
10862 @subsection Special characters in DocBook export
10863 @cindex Special characters in DocBook export
10865 @vindex org-export-docbook-doctype
10866 @vindex org-entities
10867 Special characters that are written in @TeX{}-like syntax, such as @code{\alpha},
10868 @code{\Gamma}, and @code{\Zeta}, are supported by DocBook exporter.  These
10869 characters are rewritten to XML entities, like @code{&alpha;},
10870 @code{&Gamma;}, and @code{&Zeta;}, based on the list saved in variable
10871 @code{org-entities}.  As long as the generated DocBook file includes the
10872 corresponding entities, these special characters are recognized.
10874 You can customize variable @code{org-export-docbook-doctype} to include the
10875 entities you need.  For example, you can set variable
10876 @code{org-export-docbook-doctype} to the following value to recognize all
10877 special characters included in XHTML entities:
10879 @example
10880 "<!DOCTYPE article [
10881 <!ENTITY % xhtml1-symbol PUBLIC
10882 \"-//W3C//ENTITIES Symbol for HTML//EN//XML\"
10883 \"http://www.w3.org/2003/entities/2007/xhtml1-symbol.ent\"
10885 %xhtml1-symbol;
10888 @end example
10890 @c begin opendocument
10892 @node OpenDocument Text export, TaskJuggler export, DocBook export, Exporting
10893 @section OpenDocument Text export
10894 @cindex K, Jambunathan
10895 @cindex ODT
10896 @cindex OpenDocument
10897 @cindex export, OpenDocument
10898 @cindex LibreOffice
10899 @cindex org-odt.el
10900 @cindex org-modules
10902 Org Mode@footnote{Versions 7.8 or later} supports export to OpenDocument Text
10903 (ODT) format using the @file{org-odt.el} module.  Documents created
10904 by this exporter use the @cite{OpenDocument-v1.2
10905 specification}@footnote{@url{http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html,
10906 Open Document Format for Office Applications (OpenDocument) Version 1.2}} and
10907 are compatible with LibreOffice 3.4.
10909 @menu
10910 * Pre-requisites for ODT export::  What packages ODT exporter relies on
10911 * ODT export commands::         How to invoke ODT export
10912 * Extending ODT export::        How to produce @samp{doc}, @samp{pdf} files
10913 * Applying custom styles::      How to apply custom styles to the output
10914 * Links in ODT export::         How links will be interpreted and formatted
10915 * Tables in ODT export::        How Tables are exported
10916 * Images in ODT export::        How to insert images
10917 * Math formatting in ODT export::  How @LaTeX{} fragments are formatted
10918 * Labels and captions in ODT export::  How captions are rendered
10919 * Literal examples in ODT export::  How source and example blocks are formatted
10920 * Advanced topics in ODT export::  Read this if you are a power user
10921 @end menu
10923 @node Pre-requisites for ODT export, ODT export commands, OpenDocument Text export, OpenDocument Text export
10924 @subsection Pre-requisites for ODT export
10925 @cindex zip
10926 The ODT exporter relies on the @file{zip} program to create the final
10927 output.  Check the availability of this program before proceeding further.
10929 @node ODT export commands, Extending ODT export, Pre-requisites for ODT export, OpenDocument Text export
10930 @subsection ODT export commands
10932 @subsubheading Exporting to ODT
10933 @anchor{x-export-to-odt}
10935 @cindex region, active
10936 @cindex active region
10937 @cindex transient-mark-mode
10938 @table @kbd
10939 @orgcmd{C-c C-e o,org-export-as-odt}
10940 @cindex property EXPORT_FILE_NAME
10942 Export as OpenDocument Text file.
10944 @vindex org-export-odt-preferred-output-format
10945 If @code{org-export-odt-preferred-output-format} is specified, automatically
10946 convert the exported file to that format.  @xref{x-export-to-other-formats, ,
10947 Automatically exporting to other formats}.
10949 For an Org file @file{myfile.org}, the ODT file will be
10950 @file{myfile.odt}.  The file will be overwritten without warning.  If there
10951 is an active region,@footnote{This requires @code{transient-mark-mode} to be
10952 turned on} only the region will be exported.  If the selected region is a
10953 single tree,@footnote{To select the current subtree, use @kbd{C-c @@}} the
10954 tree head will become the document title.  If the tree head entry has, or
10955 inherits, an @code{EXPORT_FILE_NAME} property, that name will be used for the
10956 export.
10958 @orgcmd{C-c C-e O,org-export-as-odt-and-open}
10959 Export as an OpenDocument Text file and open the resulting file.
10961 @vindex org-export-odt-preferred-output-format
10962 If @code{org-export-odt-preferred-output-format} is specified, open the
10963 converted file instead.  @xref{x-export-to-other-formats, , Automatically
10964 exporting to other formats}.
10965 @end table
10967 @node Extending ODT export, Applying custom styles, ODT export commands, OpenDocument Text export
10968 @subsection Extending ODT export
10970 The ODT exporter can interface with a variety of document
10971 converters and supports popular converters out of the box.  As a result, you
10972 can use it to export to formats like @samp{doc} or convert a document from
10973 one format (say @samp{csv}) to another format (say @samp{ods} or @samp{xls}).
10975 @cindex @file{unoconv}
10976 @cindex LibreOffice
10977 If you have a working installation of LibreOffice, a document converter is
10978 pre-configured for you and you can use it right away.  If you would like to
10979 use @file{unoconv} as your preferred converter, customize the variable
10980 @code{org-export-odt-convert-process} to point to @code{unoconv}.  You can
10981 also use your own favorite converter or tweak the default settings of the
10982 @file{LibreOffice} and @samp{unoconv} converters.  @xref{Configuring a
10983 document converter}.
10985 @subsubsection Automatically exporting to other formats
10986 @anchor{x-export-to-other-formats}
10988 @vindex org-export-odt-preferred-output-format
10989 Very often, you will find yourself exporting to ODT format, only to
10990 immediately save the exported document to other formats like @samp{doc},
10991 @samp{docx}, @samp{rtf}, @samp{pdf} etc.  In such cases, you can specify your
10992 preferred output format by customizing the variable
10993 @code{org-export-odt-preferred-output-format}.  This way, the export commands
10994 (@pxref{x-export-to-odt,,Exporting to ODT}) can be extended to export to a
10995 format that is of immediate interest to you.
10997 @subsubsection Converting between document formats
10998 @anchor{x-convert-to-other-formats}
11000 There are many document converters in the wild which support conversion to
11001 and from various file formats, including, but not limited to the
11002 ODT format.  LibreOffice converter, mentioned above, is one such
11003 converter.  Once a converter is configured, you can interact with it using
11004 the following command.
11006 @vindex org-export-odt-convert
11007 @table @kbd
11009 @item M-x org-export-odt-convert
11010 Convert an existing document from one format to another.  With a prefix
11011 argument, also open the newly produced file.
11012 @end table
11014 @node Applying custom styles, Links in ODT export, Extending ODT export, OpenDocument Text export
11015 @subsection Applying custom styles
11016 @cindex styles, custom
11017 @cindex template, custom
11019 The ODT exporter ships with a set of OpenDocument styles
11020 (@pxref{Working with OpenDocument style files}) that ensure a well-formatted
11021 output.  These factory styles, however, may not cater to your specific
11022 tastes.  To customize the output, you can either modify the above styles
11023 files directly, or generate the required styles using an application like
11024 LibreOffice.  The latter method is suitable for expert and non-expert
11025 users alike, and is described here.
11027 @subsubsection Applying custom styles - the easy way
11029 @enumerate
11030 @item
11031 Create a sample @file{example.org} file with the below settings and export it
11032 to ODT format.
11034 @example
11035 #+OPTIONS: H:10 num:t
11036 @end example
11038 @item
11039 Open the above @file{example.odt} using LibreOffice.  Use the @file{Stylist}
11040 to locate the target styles - these typically have the @samp{Org} prefix -
11041 and modify those to your taste.  Save the modified file either as an
11042 OpenDocument Text (@file{.odt}) or OpenDocument Template (@file{.ott}) file.
11044 @item
11045 @cindex #+ODT_STYLES_FILE
11046 @vindex org-export-odt-styles-file
11047 Customize the variable @code{org-export-odt-styles-file} and point it to the
11048 newly created file.  For additional configuration options
11049 @pxref{x-overriding-factory-styles,,Overriding factory styles}.
11051 If you would like to choose a style on a per-file basis, you can use the
11052 @code{#+ODT_STYLES_FILE} option.  A typical setting will look like
11054 @example
11055 #+ODT_STYLES_FILE: "/path/to/example.ott"
11056 @end example
11060 @example
11061 #+ODT_STYLES_FILE: ("/path/to/file.ott" ("styles.xml" "image/hdr.png"))
11062 @end example
11064 @end enumerate
11066 @subsubsection Using third-party styles and templates
11068 You can use third-party styles and templates for customizing your output.
11069 This will produce the desired output only if the template provides all
11070 style names that the @samp{ODT} exporter relies on.  Unless this condition is
11071 met, the output is going to be less than satisfactory.  So it is highly
11072 recommended that you only work with templates that are directly derived from
11073 the factory settings.
11075 @node Links in ODT export, Tables in ODT export, Applying custom styles, OpenDocument Text export
11076 @subsection Links in ODT export
11077 @cindex tables, in DocBook export
11079 ODT exporter creates native cross-references for internal links.  It creates
11080 Internet-style links for all other links.
11082 A link with no description and destined to a regular (un-itemized) outline
11083 heading is replaced with a cross-reference and section number of the heading.
11085 A @samp{\ref@{label@}}-style reference to an image, table etc. is replaced
11086 with a cross-reference and sequence number of the labeled entity.
11087 @xref{Labels and captions in ODT export}.
11089 @node Tables in ODT export, Images in ODT export, Links in ODT export, OpenDocument Text export
11090 @subsection Tables in ODT export
11091 @cindex tables, in DocBook export
11093 Export of native Org mode tables (@pxref{Tables}) and simple @file{table.el}
11094 tables is supported.  However, export of complex @file{table.el} tables -
11095 tables that have column or row spans - is not supported.  Such tables are
11096 stripped from the exported document.
11098 By default, a table is exported with top and bottom frames and with rules
11099 separating row and column groups (@pxref{Column groups}).  Furthermore, all
11100 tables are typeset to occupy the same width.  If the table specifies
11101 alignment and relative width for its columns (@pxref{Column width and
11102 alignment}) then these are honored on export.@footnote{The column widths are
11103 interpreted as weighted ratios with the default weight being 1}
11105 @cindex #+ATTR_ODT
11106 You can control the width of the table by specifying @code{:rel-width}
11107 property using an @code{#+ATTR_ODT} line.
11109 For example, consider the following table which makes use of all the rules
11110 mentioned above.
11112 @example
11113 #+ATTR_ODT: :rel-width 50
11114 | Area/Month    |   Jan |   Feb |   Mar |   Sum |
11115 |---------------+-------+-------+-------+-------|
11116 | /             |     < |       |       |     < |
11117 | <l13>         |  <r5> |  <r5> |  <r5> |  <r6> |
11118 | North America |     1 |    21 |   926 |   948 |
11119 | Middle East   |     6 |    75 |   844 |   925 |
11120 | Asia Pacific  |     9 |    27 |   790 |   826 |
11121 |---------------+-------+-------+-------+-------|
11122 | Sum           |    16 |   123 |  2560 |  2699 |
11123 @end example
11125 On export, the table will occupy 50% of text area.  The columns will be sized
11126 (roughly) in the ratio of 13:5:5:5:6.  The first column will be left-aligned
11127 and rest of the columns will be right-aligned.  There will be vertical rules
11128 after separating the header and last columns from other columns.  There will
11129 be horizontal rules separating the header and last rows from other rows.
11131 If you are not satisfied with the above formatting options, you can create
11132 custom table styles and associate them with a table using the
11133 @code{#+ATTR_ODT} line.  @xref{Customizing tables in ODT export}.
11135 @node Images in ODT export, Math formatting in ODT export, Tables in ODT export, OpenDocument Text export
11136 @subsection Images in ODT export
11137 @cindex images, embedding in ODT
11138 @cindex embedding images in ODT
11140 @subsubheading Embedding images
11141 You can embed images within the exported document by providing a link to the
11142 desired image file with no link description.  For example, to embed
11143 @samp{img.png} do either of the following:
11145 @example
11146 [[file:img.png]]
11147 @end example
11149 @example
11150 [[./img.png]]
11151 @end example
11153 @subsubheading Embedding clickable images
11154 You can create clickable images by providing a link whose description is a
11155 link to an image file.  For example, to embed a image
11156 @file{org-mode-unicorn.png} which when clicked jumps to
11157 @uref{http://Orgmode.org} website, do the following
11159 @example
11160 [[http://orgmode.org][./org-mode-unicorn.png]]
11161 @end example
11163 @subsubheading Sizing and scaling of embedded images
11165 @cindex #+ATTR_ODT
11166 You can control the size and scale of the embedded images using the
11167 @code{#+ATTR_ODT} attribute.
11169 @cindex identify, ImageMagick
11170 @vindex org-export-odt-pixels-per-inch
11171 The exporter specifies the desired size of the image in the final document in
11172 units of centimeters.  In order to scale the embedded images, the exporter
11173 queries for pixel dimensions of the images using one of a) ImageMagick's
11174 @file{identify} program or b) Emacs `create-image' and `image-size'
11175 APIs.@footnote{Use of @file{ImageMagick} is only desirable.  However, if you
11176 routinely produce documents that have large images or you export your Org
11177 files that has images using a Emacs batch script, then the use of
11178 @file{ImageMagick} is mandatory.} The pixel dimensions are subsequently
11179 converted in to units of centimeters using
11180 @code{org-export-odt-pixels-per-inch}.  The default value of this variable is
11181 set to @code{display-pixels-per-inch}.  You can tweak this variable to
11182 achieve the best results.
11184 The examples below illustrate the various possibilities.
11186 @table @asis
11187 @item Explicitly size the image
11188 To embed @file{img.png} as a 10 cm x 10 cm image, do the following:
11190 @example
11191 #+ATTR_ODT: :width 10 :height 10
11192 [[./img.png]]
11193 @end example
11195 @item Scale the image
11196 To embed @file{img.png} at half its size, do the following:
11198 @example
11199 #+ATTR_ODT: :scale 0.5
11200 [[./img.png]]
11201 @end example
11203 @item Scale the image to a specific width
11204 To embed @file{img.png} with a width of 10 cm while retaining the original
11205 height:width ratio, do the following:
11207 @example
11208 #+ATTR_ODT: :width 10
11209 [[./img.png]]
11210 @end example
11212 @item Scale the image to a specific height
11213 To embed @file{img.png} with a height of 10 cm while retaining the original
11214 height:width ratio, do the following
11216 @example
11217 #+ATTR_ODT: :height 10
11218 [[./img.png]]
11219 @end example
11220 @end table
11222 @subsubheading Anchoring of images
11224 @cindex #+ATTR_ODT
11225 You can control the manner in which an image is anchored by setting the
11226 @code{:anchor} property of it's @code{#+ATTR_ODT} line.  You can specify one
11227 of the the following three values for the @code{:anchor} property -
11228 @samp{"as-char"}, @samp{"paragraph"} and @samp{"page"}.
11230 To create an image that is anchored to a page, do the following:
11231 @example
11232 #+ATTR_ODT: :anchor "page"
11233 [[./img.png]]
11234 @end example
11236 @node Math formatting in ODT export, Labels and captions in ODT export, Images in ODT export, OpenDocument Text export
11237 @subsection Math formatting in ODT export
11239 The ODT exporter has special support for handling math.
11241 @menu
11242 * Working with @LaTeX{} math snippets::  How to embed @LaTeX{} math fragments
11243 * Working with MathML or OpenDocument formula files::  How to embed equations in native format
11244 @end menu
11246 @node Working with @LaTeX{} math snippets, Working with MathML or OpenDocument formula files, Math formatting in ODT export, Math formatting in ODT export
11247 @subsubsection Working with @LaTeX{} math snippets
11249 @LaTeX{} math snippets (@pxref{@LaTeX{} fragments}) can be embedded in the ODT
11250 document in one of the following ways:
11252 @cindex MathML
11253 @enumerate
11254 @item MathML
11256 This option is activated on a per-file basis with
11258 @example
11259 #+OPTIONS: LaTeX:t
11260 @end example
11262 With this option, @LaTeX{} fragments are first converted into MathML
11263 fragments using an external @LaTeX{}-to-MathML converter program.  The
11264 resulting MathML fragments are then embedded as an OpenDocument Formula in
11265 the exported document.
11267 @vindex org-latex-to-mathml-convert-command
11268 @vindex org-latex-to-mathml-jar-file
11270 You can specify the @LaTeX{}-to-MathML converter by customizing the variables
11271 @code{org-latex-to-mathml-convert-command} and
11272 @code{org-latex-to-mathml-jar-file}.
11274 If you prefer to use @file{MathToWeb}@footnote{See
11275 @uref{http://www.mathtoweb.com/cgi-bin/mathtoweb_home.pl, MathToWeb}} as your
11276 converter, you can configure the above variables as shown below.
11278 @lisp
11279 (setq org-latex-to-mathml-convert-command
11280       "java -jar %j -unicode -force -df %o %I"
11281       org-latex-to-mathml-jar-file
11282       "/path/to/mathtoweb.jar")
11283 @end lisp
11285 You can use the following commands to quickly verify the reliability of
11286 the @LaTeX{}-to-MathML converter.
11288 @table @kbd
11290 @item M-x org-export-as-odf
11291 Convert a @LaTeX{} math snippet to an OpenDocument formula (@file{.odf}) file.
11293 @item M-x org-export-as-odf-and-open
11294 Convert a @LaTeX{} math snippet to an OpenDocument formula (@file{.odf}) file
11295 and open the formula file with the system-registered application.
11296 @end table
11298 @cindex dvipng
11299 @item PNG images
11301 This option is activated on a per-file basis with
11303 @example
11304 #+OPTIONS: LaTeX:dvipng
11305 @end example
11307 With this option, @LaTeX{} fragments are processed into PNG images and the
11308 resulting images are embedded in the exported document.  This method requires
11309 that the @file{dvipng} program be available on your system.
11310 @end enumerate
11312 @node Working with MathML or OpenDocument formula files,  , Working with @LaTeX{} math snippets, Math formatting in ODT export
11313 @subsubsection Working with MathML or OpenDocument formula files
11315 For various reasons, you may find embedding @LaTeX{} math snippets in an
11316 ODT document less than reliable.  In that case, you can embed a
11317 math equation by linking to its MathML (@file{.mml}) source or its
11318 OpenDocument formula (@file{.odf}) file as shown below:
11320 @example
11321 [[./equation.mml]]
11322 @end example
11326 @example
11327 [[./equation.odf]]
11328 @end example
11330 @node Labels and captions in ODT export, Literal examples in ODT export, Math formatting in ODT export, OpenDocument Text export
11331 @subsection Labels and captions in ODT export
11333 You can label and caption various category of objects - an inline image, a
11334 table, a @LaTeX{} fragment or a Math formula - using @code{#+LABEL} and
11335 @code{#+CAPTION} lines.  @xref{Images and tables}.  ODT exporter enumerates
11336 each labeled or captioned object of a given category separately.  As a
11337 result, each such object is assigned a sequence number based on order of it's
11338 appearance in the Org file.
11340 In the exported document, a user-provided caption is augmented with the
11341 category and sequence number.  Consider the following inline image in an Org
11342 file.
11344 @example
11345 #+CAPTION: Bell curve
11346 #+LABEL:   fig:SED-HR4049
11347 [[./img/a.png]]
11348 @end example
11350 It could be rendered as shown below in the exported document.
11352 @example
11353 Figure 2: Bell curve
11354 @end example
11356 @vindex org-export-odt-category-strings
11357 You can modify the category component of the caption by customizing the
11358 variable @code{org-export-odt-category-strings}.  For example, to tag all
11359 embedded images with the string @samp{Illustration} (instead of the default
11360 @samp{Figure}) use the following setting.
11362 @lisp
11363 (setq org-export-odt-category-strings
11364       '(("en" "Table" "Illustration" "Equation" "Equation")))
11365 @end lisp
11367 With this, previous image will be captioned as below in the exported
11368 document.
11370 @example
11371 Illustration 2: Bell curve
11372 @end example
11374 @node Literal examples in ODT export, Advanced topics in ODT export, Labels and captions in ODT export, OpenDocument Text export
11375 @subsection Literal examples in ODT export
11377 Export of literal examples (@pxref{Literal examples}) with full fontification
11378 is supported.  Internally, the exporter relies on @file{htmlfontify.el} to
11379 generate all style definitions needed for a fancy listing.@footnote{Your
11380 @file{htmlfontify.el} library must at least be at Emacs 24.1 levels for
11381 fontification to be turned on.}  The auto-generated styles have @samp{OrgSrc}
11382 as prefix and inherit their color from the faces used by Emacs
11383 @code{font-lock} library for the source language.
11385 @vindex org-export-odt-fontify-srcblocks
11386 If you prefer to use your own custom styles for fontification, you can do so
11387 by customizing the variable
11388 @code{org-export-odt-create-custom-styles-for-srcblocks}.
11390 @vindex org-export-odt-create-custom-styles-for-srcblocks
11391 You can turn off fontification of literal examples by customizing the
11392 variable @code{org-export-odt-fontify-srcblocks}.
11394 @node Advanced topics in ODT export,  , Literal examples in ODT export, OpenDocument Text export
11395 @subsection Advanced topics in ODT export
11397 If you rely heavily on ODT export, you may want to exploit the full
11398 set of features that the exporter offers.  This section describes features
11399 that would be of interest to power users.
11401 @menu
11402 * Configuring a document converter::  How to register a document converter
11403 * Working with OpenDocument style files::  Explore the internals
11404 * Creating one-off styles::     How to produce custom highlighting etc
11405 * Customizing tables in ODT export::  How to define and use Table templates
11406 * Validating OpenDocument XML::  How to debug corrupt OpenDocument files
11407 @end menu
11409 @node Configuring a document converter, Working with OpenDocument style files, Advanced topics in ODT export, Advanced topics in ODT export
11410 @subsubsection Configuring a document converter
11411 @cindex convert
11412 @cindex doc, docx, rtf
11413 @cindex converter
11415 The ODT exporter can work with popular converters with little or no
11416 extra configuration from your side. @xref{Extending ODT export}.
11417 If you are using a converter that is not supported by default or if you would
11418 like to tweak the default converter settings, proceed as below.
11420 @enumerate
11421 @item Register the converter
11423 @vindex org-export-odt-convert-processes
11424 Name your converter and add it to the list of known converters by customizing
11425 the variable @code{org-export-odt-convert-processes}.  Also specify how the
11426 converter can be invoked via command-line to effect the conversion.
11428 @item Configure its capabilities
11430 @vindex org-export-odt-convert-capabilities
11431 @anchor{x-odt-converter-capabilities}
11432 Specify the set of formats the converter can handle by customizing the
11433 variable @code{org-export-odt-convert-capabilities}.  Use the default value
11434 for this variable as a guide for configuring your converter.  As suggested by
11435 the default setting, you can specify the full set of formats supported by the
11436 converter and not limit yourself to specifying formats that are related to
11437 just the OpenDocument Text format.
11439 @item Choose the converter
11441 @vindex org-export-odt-convert-process
11442 Select the newly added converter as the preferred one by customizing the
11443 variable @code{org-export-odt-convert-process}.
11444 @end enumerate
11446 @node Working with OpenDocument style files, Creating one-off styles, Configuring a document converter, Advanced topics in ODT export
11447 @subsubsection Working with OpenDocument style files
11448 @cindex styles, custom
11449 @cindex template, custom
11451 This section explores the internals of the ODT exporter and the
11452 means by which it produces styled documents.  Read this section if you are
11453 interested in exploring the automatic and custom OpenDocument styles used by
11454 the exporter.
11456 @anchor{x-factory-styles}
11457 @subsubheading Factory styles
11459 The ODT exporter relies on two files for generating its output.
11460 These files are bundled with the distribution under the directory pointed to
11461 by the variable @code{org-odt-styles-dir}.  The two files are:
11463 @itemize
11464 @anchor{x-orgodtstyles-xml}
11465 @item
11466 @file{OrgOdtStyles.xml}
11468 This file contributes to the @file{styles.xml} file of the final @samp{ODT}
11469 document.  This file gets modified for the following purposes:
11470 @enumerate
11472 @item
11473 To control outline numbering based on user settings.
11475 @item
11476 To add styles generated by @file{htmlfontify.el} for fontification of code
11477 blocks.
11478 @end enumerate
11480 @anchor{x-orgodtcontenttemplate-xml}
11481 @item
11482 @file{OrgOdtContentTemplate.xml}
11484 This file contributes to the @file{content.xml} file of the final @samp{ODT}
11485 document.  The contents of the Org outline are inserted between the
11486 @samp{<office:text>}@dots{}@samp{</office:text>} elements of this file.
11488 Apart from serving as a template file for the final @file{content.xml}, the
11489 file serves the following purposes:
11490 @enumerate
11492 @item
11493 It contains automatic styles for formatting of tables which are referenced by
11494 the exporter.
11496 @item
11497 It contains @samp{<text:sequence-decl>}@dots{}@samp{</text:sequence-decl>}
11498 elements that control how various entities - tables, images, equations etc -
11499 are numbered.
11500 @end enumerate
11501 @end itemize
11503 @anchor{x-overriding-factory-styles}
11504 @subsubheading Overriding factory styles
11505 The following two variables control the location from which the ODT
11506 exporter picks up the custom styles and content template files.  You can
11507 customize these variables to override the factory styles used by the
11508 exporter.
11510 @itemize
11511 @anchor{x-org-export-odt-styles-file}
11512 @item
11513 @code{org-export-odt-styles-file}
11515 Use this variable to specify the @file{styles.xml} that will be used in the
11516 final output.  You can specify one of the following values:
11518 @enumerate
11519 @item A @file{styles.xml} file
11521 Use this file instead of the default @file{styles.xml}
11523 @item A @file{.odt} or @file{.ott} file
11525 Use the @file{styles.xml} contained in the specified OpenDocument Text or
11526 Template file
11528 @item A @file{.odt} or @file{.ott} file and a subset of files contained within them
11530 Use the @file{styles.xml} contained in the specified OpenDocument Text or
11531 Template file.  Additionally extract the specified member files and embed
11532 those within the final @samp{ODT} document.
11534 Use this option if the @file{styles.xml} file references additional files
11535 like header and footer images.
11537 @item @code{nil}
11539 Use the default @file{styles.xml}
11540 @end enumerate
11542 @anchor{x-org-export-odt-content-template-file}
11543 @item
11544 @code{org-export-odt-content-template-file}
11546 Use this variable to specify the blank @file{content.xml} that will be used
11547 in the final output.
11548 @end itemize
11550 @node Creating one-off styles, Customizing tables in ODT export, Working with OpenDocument style files, Advanced topics in ODT export
11551 @subsubsection Creating one-off styles
11553 There are times when you would want one-off formatting in the exported
11554 document.  You can achieve this by embedding raw OpenDocument XML in the Org
11555 file.  The use of this feature is better illustrated with couple of examples.
11557 @enumerate
11558 @item Embedding ODT tags as part of regular text
11560 You can include simple OpenDocument tags by prefixing them with
11561 @samp{@@}.  For example, to highlight a region of text do the following:
11563 @example
11564 @@<text:span text:style-name="Highlight">This is a
11565 highlighted text@@</text:span>.  But this is a
11566 regular text.
11567 @end example
11569 @strong{Hint:} To see the above example in action, edit your
11570 @file{styles.xml} (@pxref{x-orgodtstyles-xml,,Factory styles}) and add a
11571 custom @samp{Highlight} style as shown below.
11573 @example
11574 <style:style style:name="Highlight" style:family="text">
11575   <style:text-properties fo:background-color="#ff0000"/>
11576 </style:style>
11577 @end example
11579 @item Embedding a one-line OpenDocument XML
11581 You can add a simple OpenDocument one-liner using the @code{#+ODT:}
11582 directive.  For example, to force a page break do the following:
11584 @example
11585 #+ODT: <text:p text:style-name="PageBreak"/>
11586 @end example
11588 @strong{Hint:} To see the above example in action, edit your
11589 @file{styles.xml} (@pxref{x-orgodtstyles-xml,,Factory styles}) and add a
11590 custom @samp{PageBreak} style as shown below.
11592 @example
11593 <style:style style:name="PageBreak" style:family="paragraph"
11594              style:parent-style-name="Text_20_body">
11595   <style:paragraph-properties fo:break-before="page"/>
11596 </style:style>
11597 @end example
11599 @item Embedding a block of OpenDocument XML
11601 You can add a large block of OpenDocument XML using the
11602 @code{#+BEGIN_ODT}@dots{}@code{#+END_ODT} construct.
11604 For example, to create a one-off paragraph that uses bold text, do the
11605 following:
11607 @example
11608 #+BEGIN_ODT
11609 <text:p text:style-name="Text_20_body_20_bold">
11610 This paragraph is specially formatted and uses bold text.
11611 </text:p>
11612 #+END_ODT
11613 @end example
11615 @end enumerate
11617 @node Customizing tables in ODT export, Validating OpenDocument XML, Creating one-off styles, Advanced topics in ODT export
11618 @subsubsection Customizing tables in ODT export
11619 @cindex tables, in ODT export
11621 @cindex #+ATTR_ODT
11622 You can override the default formatting of the table by specifying a custom
11623 table style with the @code{#+ATTR_ODT} line.  For a discussion on default
11624 formatting of tables @pxref{Tables in ODT export}.
11626 This feature closely mimics the way table templates are defined in the
11627 OpenDocument-v1.2
11628 specification.@footnote{@url{http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html,
11629 OpenDocument-v1.2 Specification}}
11633 @subsubheading Custom table styles - an illustration
11635 To have a quick preview of this feature, install the below setting and export
11636 the table that follows.
11638 @lisp
11639 (setq org-export-odt-table-styles
11640       (append org-export-odt-table-styles
11641               '(("TableWithHeaderRowAndColumn" "Custom"
11642                  ((use-first-row-styles . t)
11643                   (use-first-column-styles . t)))
11644                 ("TableWithFirstRowandLastRow" "Custom"
11645                  ((use-first-row-styles . t)
11646                   (use-last-row-styles . t))))))
11647 @end lisp
11649 @example
11650 #+ATTR_ODT: :style "TableWithHeaderRowAndColumn"
11651 | Name  | Phone | Age |
11652 | Peter |  1234 |  17 |
11653 | Anna  |  4321 |  25 |
11654 @end example
11656 In the above example, you used a template named @samp{Custom} and installed
11657 two table styles with the names @samp{TableWithHeaderRowAndColumn} and
11658 @samp{TableWithFirstRowandLastRow}.  (@strong{Important:} The OpenDocument
11659 styles needed for producing the above template have been pre-defined for you.
11660 These styles are available under the section marked @samp{Custom Table
11661 Template} in @file{OrgOdtContentTemplate.xml}
11662 (@pxref{x-orgodtcontenttemplate-xml,,Factory styles}).  If you need
11663 additional templates you have to define these styles yourselves.
11665 @subsubheading Custom table styles - the nitty-gritty
11666 To use this feature proceed as follows:
11668 @enumerate
11669 @item
11670 Create a table template@footnote{See the @code{<table:table-template>}
11671 element of the OpenDocument-v1.2 specification}
11673 A table template is nothing but a set of @samp{table-cell} and
11674 @samp{paragraph} styles for each of the following table cell categories:
11676 @itemize @minus
11677 @item Body
11678 @item First column
11679 @item Last column
11680 @item First row
11681 @item Last row
11682 @item Even row
11683 @item Odd row
11684 @item Even column
11685 @item Odd Column
11686 @end itemize
11688 The names for the above styles must be chosen based on the name of the table
11689 template using a well-defined convention.
11691 The naming convention is better illustrated with an example.  For a table
11692 template with the name @samp{Custom}, the needed style names are listed in
11693 the following table.
11695 @multitable  {Table cell type} {CustomEvenColumnTableCell} {CustomEvenColumnTableParagraph}
11696 @headitem Table cell type
11697 @tab @code{table-cell} style
11698 @tab @code{paragraph} style
11699 @item
11700 @tab
11701 @tab
11702 @item Body
11703 @tab @samp{CustomTableCell}
11704 @tab @samp{CustomTableParagraph}
11705 @item First column
11706 @tab @samp{CustomFirstColumnTableCell}
11707 @tab @samp{CustomFirstColumnTableParagraph}
11708 @item Last column
11709 @tab @samp{CustomLastColumnTableCell}
11710 @tab @samp{CustomLastColumnTableParagraph}
11711 @item First row
11712 @tab @samp{CustomFirstRowTableCell}
11713 @tab @samp{CustomFirstRowTableParagraph}
11714 @item Last row
11715 @tab @samp{CustomLastRowTableCell}
11716 @tab @samp{CustomLastRowTableParagraph}
11717 @item Even row
11718 @tab @samp{CustomEvenRowTableCell}
11719 @tab @samp{CustomEvenRowTableParagraph}
11720 @item Odd row
11721 @tab @samp{CustomOddRowTableCell}
11722 @tab @samp{CustomOddRowTableParagraph}
11723 @item Even column
11724 @tab @samp{CustomEvenColumnTableCell}
11725 @tab @samp{CustomEvenColumnTableParagraph}
11726 @item Odd column
11727 @tab @samp{CustomOddColumnTableCell}
11728 @tab @samp{CustomOddColumnTableParagraph}
11729 @end multitable
11731 To create a table template with the name @samp{Custom}, define the above
11732 styles in the
11733 @code{<office:automatic-styles>}...@code{</office:automatic-styles>} element
11734 of the content template file (@pxref{x-orgodtcontenttemplate-xml,,Factory
11735 styles}).
11737 @item
11738 Define a table style@footnote{See the attributes @code{table:template-name},
11739 @code{table:use-first-row-styles}, @code{table:use-last-row-styles},
11740 @code{table:use-first-column-styles}, @code{table:use-last-column-styles},
11741 @code{table:use-banding-rows-styles}, and
11742 @code{table:use-banding-column-styles} of the @code{<table:table>} element in
11743 the OpenDocument-v1.2 specification}
11745 @vindex org-export-odt-table-styles
11746 To define a table style, create an entry for the style in the variable
11747 @code{org-export-odt-table-styles} and specify the following:
11749 @itemize @minus
11750 @item the name of the table template created in step (1)
11751 @item the set of cell styles in that template that are to be activated
11752 @end itemize
11754 For example, the entry below defines two different table styles
11755 @samp{TableWithHeaderRowAndColumn} and @samp{TableWithFirstRowandLastRow}
11756 based on the same template @samp{Custom}.  The styles achieve their intended
11757 effect by selectively activating the individual cell styles in that template.
11759 @lisp
11760 (setq org-export-odt-table-styles
11761       (append org-export-odt-table-styles
11762               '(("TableWithHeaderRowAndColumn" "Custom"
11763                  ((use-first-row-styles . t)
11764                   (use-first-column-styles . t)))
11765                 ("TableWithFirstRowandLastRow" "Custom"
11766                  ((use-first-row-styles . t)
11767                   (use-last-row-styles . t))))))
11768 @end lisp
11770 @item
11771 Associate a table with the table style
11773 To do this, specify the table style created in step (2) as part of
11774 the @code{ATTR_ODT} line as shown below.
11776 @example
11777 #+ATTR_ODT: :style "TableWithHeaderRowAndColumn"
11778 | Name  | Phone | Age |
11779 | Peter |  1234 |  17 |
11780 | Anna  |  4321 |  25 |
11781 @end example
11782 @end enumerate
11784 @node Validating OpenDocument XML,  , Customizing tables in ODT export, Advanced topics in ODT export
11785 @subsubsection Validating OpenDocument XML
11787 Occasionally, you will discover that the document created by the
11788 ODT exporter cannot be opened by your favorite application.  One of
11789 the common reasons for this is that the @file{.odt} file is corrupt.  In such
11790 cases, you may want to validate the document against the OpenDocument RELAX
11791 NG Compact Syntax (RNC) schema.
11793 For de-compressing the @file{.odt} file@footnote{@file{.odt} files are
11794 nothing but @samp{zip} archives}: @inforef{File Archives,,emacs}.  For
11795 general help with validation (and schema-sensitive editing) of XML files:
11796 @inforef{Introduction,,nxml-mode}.
11798 @vindex org-export-odt-schema-dir
11799 If you have ready access to OpenDocument @file{.rnc} files and the needed
11800 schema-locating rules in a single folder, you can customize the variable
11801 @code{org-export-odt-schema-dir} to point to that directory.  The
11802 ODT exporter will take care of updating the
11803 @code{rng-schema-locating-files} for you.
11805 @c end opendocument
11807 @node  TaskJuggler export, Freemind export, OpenDocument Text export, Exporting
11808 @section TaskJuggler export
11809 @cindex TaskJuggler export
11810 @cindex Project management
11812 @uref{http://www.taskjuggler.org/, TaskJuggler} is a project management tool.
11813 It provides an optimizing scheduler that computes your project time lines and
11814 resource assignments based on the project outline and the constraints that
11815 you have provided.
11817 The TaskJuggler exporter is a bit different from other exporters, such as the
11818 @code{HTML} and @LaTeX{} exporters for example, in that it does not export all the
11819 nodes of a document or strictly follow the order of the nodes in the
11820 document.
11822 Instead the TaskJuggler exporter looks for a tree that defines the tasks and
11823 a optionally tree that defines the resources for this project.  It then
11824 creates a TaskJuggler file based on these trees and the attributes defined in
11825 all the nodes.
11827 @subsection TaskJuggler export commands
11829 @table @kbd
11830 @orgcmd{C-c C-e j,org-export-as-taskjuggler}
11831 Export as a TaskJuggler file.
11833 @orgcmd{C-c C-e J,org-export-as-taskjuggler-and-open}
11834 Export as a TaskJuggler file and then open the file with TaskJugglerUI.
11835 @end table
11837 @subsection Tasks
11839 @vindex org-export-taskjuggler-project-tag
11840 Create your tasks as you usually do with Org mode.  Assign efforts to each
11841 task using properties (it is easiest to do this in the column view).  You
11842 should end up with something similar to the example by Peter Jones in
11843 @url{http://www.contextualdevelopment.com/static/artifacts/articles/2008/project-planning/project-planning.org}.
11844 Now mark the top node of your tasks with a tag named
11845 @code{:taskjuggler_project:} (or whatever you customized
11846 @code{org-export-taskjuggler-project-tag} to).  You are now ready to export
11847 the project plan with @kbd{C-c C-e J} which will export the project plan and
11848 open a gantt chart in TaskJugglerUI.
11850 @subsection Resources
11852 @vindex org-export-taskjuggler-resource-tag
11853 Next you can define resources and assign those to work on specific tasks.  You
11854 can group your resources hierarchically.  Tag the top node of the resources
11855 with @code{:taskjuggler_resource:} (or whatever you customized
11856 @code{org-export-taskjuggler-resource-tag} to).  You can optionally assign an
11857 identifier (named @samp{resource_id}) to the resources (using the standard
11858 Org properties commands, @pxref{Property syntax}) or you can let the exporter
11859 generate identifiers automatically (the exporter picks the first word of the
11860 headline as the identifier as long as it is unique---see the documentation of
11861 @code{org-taskjuggler-get-unique-id}).  Using that identifier you can then
11862 allocate resources to tasks.  This is again done with the @samp{allocate}
11863 property on the tasks.  Do this in column view or when on the task type
11864 @kbd{C-c C-x p allocate @key{RET} <resource_id> @key{RET}}.
11866 Once the allocations are done you can again export to TaskJuggler and check
11867 in the Resource Allocation Graph which person is working on what task at what
11868 time.
11870 @subsection Export of properties
11872 The exporter also takes TODO state information into consideration, i.e.@: if a
11873 task is marked as done it will have the corresponding attribute in
11874 TaskJuggler (@samp{complete 100}).  Also it will export any property on a task
11875 resource or resource node which is known to TaskJuggler, such as
11876 @samp{limits}, @samp{vacation}, @samp{shift}, @samp{booking},
11877 @samp{efficiency}, @samp{journalentry}, @samp{rate} for resources or
11878 @samp{account}, @samp{start}, @samp{note}, @samp{duration}, @samp{end},
11879 @samp{journalentry}, @samp{milestone}, @samp{reference}, @samp{responsible},
11880 @samp{scheduling}, etc for tasks.
11882 @subsection Dependencies
11884 The exporter will handle dependencies that are defined in the tasks either
11885 with the @samp{ORDERED} attribute (@pxref{TODO dependencies}), with the
11886 @samp{BLOCKER} attribute (see @file{org-depend.el}) or alternatively with a
11887 @samp{depends} attribute.  Both the @samp{BLOCKER} and the @samp{depends}
11888 attribute can be either @samp{previous-sibling} or a reference to an
11889 identifier (named @samp{task_id}) which is defined for another task in the
11890 project.  @samp{BLOCKER} and the @samp{depends} attribute can define multiple
11891 dependencies separated by either space or comma.  You can also specify
11892 optional attributes on the dependency by simply appending it.  The following
11893 examples should illustrate this:
11895 @example
11896 * Preparation
11897   :PROPERTIES:
11898   :task_id:  preparation
11899   :ORDERED:  t
11900   :END:
11901 * Training material
11902   :PROPERTIES:
11903   :task_id:  training_material
11904   :ORDERED:  t
11905   :END:
11906 ** Markup Guidelines
11907    :PROPERTIES:
11908    :Effort:   2d
11909    :END:
11910 ** Workflow Guidelines
11911    :PROPERTIES:
11912    :Effort:   2d
11913    :END:
11914 * Presentation
11915   :PROPERTIES:
11916   :Effort:   2d
11917   :BLOCKER:  training_material @{ gapduration 1d @} preparation
11918   :END:
11919 @end example
11921 @subsection Reports
11923 @vindex org-export-taskjuggler-default-reports
11924 TaskJuggler can produce many kinds of reports (e.g.@: gantt chart, resource
11925 allocation, etc).  The user defines what kind of reports should be generated
11926 for a project in the TaskJuggler file.  The exporter will automatically insert
11927 some default reports in the file.  These defaults are defined in
11928 @code{org-export-taskjuggler-default-reports}.  They can be modified using
11929 customize along with a number of other options.  For a more complete list, see
11930 @kbd{M-x customize-group @key{RET} org-export-taskjuggler @key{RET}}.
11932 For more information and examples see the Org-taskjuggler tutorial at
11933 @uref{http://orgmode.org/worg/org-tutorials/org-taskjuggler.html}.
11935 @node Freemind export, XOXO export, TaskJuggler export, Exporting
11936 @section Freemind export
11937 @cindex Freemind export
11938 @cindex mind map
11940 The Freemind exporter was written by Lennart Borgman.
11942 @table @kbd
11943 @orgcmd{C-c C-e m,org-export-as-freemind}
11944 Export as a Freemind mind map.  For an Org file @file{myfile.org}, the Freemind
11945 file will be @file{myfile.mm}.
11946 @end table
11948 @node XOXO export, iCalendar export, Freemind export, Exporting
11949 @section XOXO export
11950 @cindex XOXO export
11952 Org mode contains an exporter that produces XOXO-style output.
11953 Currently, this exporter only handles the general outline structure and
11954 does not interpret any additional Org mode features.
11956 @table @kbd
11957 @orgcmd{C-c C-e x,org-export-as-xoxo}
11958 Export as an XOXO file.  For an Org file @file{myfile.org}, the XOXO file will be
11959 @file{myfile.html}.
11960 @orgkey{C-c C-e v x}
11961 Export only the visible part of the document.
11962 @end table
11964 @node iCalendar export,  , XOXO export, Exporting
11965 @section iCalendar export
11966 @cindex iCalendar export
11968 @vindex org-icalendar-include-todo
11969 @vindex org-icalendar-use-deadline
11970 @vindex org-icalendar-use-scheduled
11971 @vindex org-icalendar-categories
11972 @vindex org-icalendar-alarm-time
11973 Some people use Org mode for keeping track of projects, but still prefer a
11974 standard calendar application for anniversaries and appointments.  In this
11975 case it can be useful to show deadlines and other time-stamped items in Org
11976 files in the calendar application.  Org mode can export calendar information
11977 in the standard iCalendar format.  If you also want to have TODO entries
11978 included in the export, configure the variable
11979 @code{org-icalendar-include-todo}.  Plain timestamps are exported as VEVENT,
11980 and TODO items as VTODO.  It will also create events from deadlines that are
11981 in non-TODO items.  Deadlines and scheduling dates in TODO items will be used
11982 to set the start and due dates for the TODO entry@footnote{See the variables
11983 @code{org-icalendar-use-deadline} and @code{org-icalendar-use-scheduled}.}.
11984 As categories, it will use the tags locally defined in the heading, and the
11985 file/tree category@footnote{To add inherited tags or the TODO state,
11986 configure the variable @code{org-icalendar-categories}.}.  See the variable
11987 @code{org-icalendar-alarm-time} for a way to assign alarms to entries with a
11988 time.
11990 @vindex org-icalendar-store-UID
11991 @cindex property, ID
11992 The iCalendar standard requires each entry to have a globally unique
11993 identifier (UID).  Org creates these identifiers during export.  If you set
11994 the variable @code{org-icalendar-store-UID}, the UID will be stored in the
11995 @code{:ID:} property of the entry and re-used next time you report this
11996 entry.  Since a single entry can give rise to multiple iCalendar entries (as
11997 a timestamp, a deadline, a scheduled item, and as a TODO item), Org adds
11998 prefixes to the UID, depending on what triggered the inclusion of the entry.
11999 In this way the UID remains unique, but a synchronization program can still
12000 figure out from which entry all the different instances originate.
12002 @table @kbd
12003 @orgcmd{C-c C-e i,org-export-icalendar-this-file}
12004 Create iCalendar entries for the current file and store them in the same
12005 directory, using a file extension @file{.ics}.
12006 @orgcmd{C-c C-e I, org-export-icalendar-all-agenda-files}
12007 @vindex org-agenda-files
12008 Like @kbd{C-c C-e i}, but do this for all files in
12009 @code{org-agenda-files}.  For each of these files, a separate iCalendar
12010 file will be written.
12011 @orgcmd{C-c C-e c,org-export-icalendar-combine-agenda-files}
12012 @vindex org-combined-agenda-icalendar-file
12013 Create a single large iCalendar file from all files in
12014 @code{org-agenda-files} and write it to the file given by
12015 @code{org-combined-agenda-icalendar-file}.
12016 @end table
12018 @vindex org-use-property-inheritance
12019 @vindex org-icalendar-include-body
12020 @cindex property, SUMMARY
12021 @cindex property, DESCRIPTION
12022 @cindex property, LOCATION
12023 The export will honor SUMMARY, DESCRIPTION and LOCATION@footnote{The LOCATION
12024 property can be inherited from higher in the hierarchy if you configure
12025 @code{org-use-property-inheritance} accordingly.} properties if the selected
12026 entries have them.  If not, the summary will be derived from the headline,
12027 and the description from the body (limited to
12028 @code{org-icalendar-include-body} characters).
12030 How this calendar is best read and updated, depends on the application
12031 you are using.  The FAQ covers this issue.
12033 @node Publishing, Working With Source Code, Exporting, Top
12034 @chapter Publishing
12035 @cindex publishing
12037 Org includes a publishing management system that allows you to configure
12038 automatic HTML conversion of @emph{projects} composed of interlinked org
12039 files.  You can also configure Org to automatically upload your exported HTML
12040 pages and related attachments, such as images and source code files, to a web
12041 server.
12043 You can also use Org to convert files into PDF, or even combine HTML and PDF
12044 conversion so that files are available in both formats on the server.
12046 Publishing has been contributed to Org by David O'Toole.
12048 @menu
12049 * Configuration::               Defining projects
12050 * Uploading files::             How to get files up on the server
12051 * Sample configuration::        Example projects
12052 * Triggering publication::      Publication commands
12053 @end menu
12055 @node Configuration, Uploading files, Publishing, Publishing
12056 @section Configuration
12058 Publishing needs significant configuration to specify files, destination
12059 and many other properties of a project.
12061 @menu
12062 * Project alist::               The central configuration variable
12063 * Sources and destinations::    From here to there
12064 * Selecting files::             What files are part of the project?
12065 * Publishing action::           Setting the function doing the publishing
12066 * Publishing options::          Tweaking HTML/@LaTeX{} export
12067 * Publishing links::            Which links keep working after publishing?
12068 * Sitemap::                     Generating a list of all pages
12069 * Generating an index::         An index that reaches across pages
12070 @end menu
12072 @node Project alist, Sources and destinations, Configuration, Configuration
12073 @subsection The variable @code{org-publish-project-alist}
12074 @cindex org-publish-project-alist
12075 @cindex projects, for publishing
12077 @vindex org-publish-project-alist
12078 Publishing is configured almost entirely through setting the value of one
12079 variable, called @code{org-publish-project-alist}.  Each element of the list
12080 configures one project, and may be in one of the two following forms:
12082 @lisp
12083    ("project-name" :property value :property value ...)
12084      @r{i.e.@: a well-formed property list with alternating keys and values}
12085 @r{or}
12086    ("project-name" :components ("project-name" "project-name" ...))
12088 @end lisp
12090 In both cases, projects are configured by specifying property values.  A
12091 project defines the set of files that will be published, as well as the
12092 publishing configuration to use when publishing those files.  When a project
12093 takes the second form listed above, the individual members of the
12094 @code{:components} property are taken to be sub-projects, which group
12095 together files requiring different publishing options.  When you publish such
12096 a ``meta-project'', all the components will also be published, in the
12097 sequence given.
12099 @node Sources and destinations, Selecting files, Project alist, Configuration
12100 @subsection Sources and destinations for files
12101 @cindex directories, for publishing
12103 Most properties are optional, but some should always be set.  In
12104 particular, Org needs to know where to look for source files,
12105 and where to put published files.
12107 @multitable @columnfractions 0.3 0.7
12108 @item @code{:base-directory}
12109 @tab Directory containing publishing source files
12110 @item @code{:publishing-directory}
12111 @tab Directory where output files will be published.  You can directly
12112 publish to a webserver using a file name syntax appropriate for
12113 the Emacs @file{tramp} package.  Or you can publish to a local directory and
12114 use external tools to upload your website (@pxref{Uploading files}).
12115 @item @code{:preparation-function}
12116 @tab Function or list of functions to be called before starting the
12117 publishing process, for example, to run @code{make} for updating files to be
12118 published.  The project property list is scoped into this call as the
12119 variable @code{project-plist}.
12120 @item @code{:completion-function}
12121 @tab Function or list of functions called after finishing the publishing
12122 process, for example, to change permissions of the resulting files.  The
12123 project property list is scoped into this call as the variable
12124 @code{project-plist}.
12125 @end multitable
12126 @noindent
12128 @node Selecting files, Publishing action, Sources and destinations, Configuration
12129 @subsection Selecting files
12130 @cindex files, selecting for publishing
12132 By default, all files with extension @file{.org} in the base directory
12133 are considered part of the project.  This can be modified by setting the
12134 properties
12135 @multitable @columnfractions 0.25 0.75
12136 @item @code{:base-extension}
12137 @tab Extension (without the dot!) of source files.  This actually is a
12138 regular expression.  Set this to the symbol @code{any} if you want to get all
12139 files in @code{:base-directory}, even without extension.
12141 @item @code{:exclude}
12142 @tab Regular expression to match file names that should not be
12143 published, even though they have been selected on the basis of their
12144 extension.
12146 @item @code{:include}
12147 @tab List of files to be included regardless of @code{:base-extension}
12148 and @code{:exclude}.
12150 @item @code{:recursive}
12151 @tab Non-nil means, check base-directory recursively for files to publish.
12152 @end multitable
12154 @node Publishing action, Publishing options, Selecting files, Configuration
12155 @subsection Publishing action
12156 @cindex action, for publishing
12158 Publishing means that a file is copied to the destination directory and
12159 possibly transformed in the process.  The default transformation is to export
12160 Org files as HTML files, and this is done by the function
12161 @code{org-publish-org-to-html} which calls the HTML exporter (@pxref{HTML
12162 export}).  But you also can publish your content as PDF files using
12163 @code{org-publish-org-to-pdf}, or as @code{ascii}, @code{latin1} or
12164 @code{utf8} encoded files using the corresponding functions.  If you want to
12165 publish the Org file itself, but with @i{archived}, @i{commented}, and
12166 @i{tag-excluded} trees removed, use @code{org-publish-org-to-org} and set the
12167 parameters @code{:plain-source} and/or @code{:htmlized-source}.  This will
12168 produce @file{file.org} and @file{file.org.html} in the publishing
12169 directory@footnote{@file{file-source.org} and @file{file-source.org.html} if
12170 source and publishing directories are equal.  Note that with this kind of
12171 setup, you need to add @code{:exclude "-source\\.org"} to the project
12172 definition in @code{org-publish-project-alist} to prevent the published
12173 source files from being considered as new org files the next time the project
12174 is published.}.  Other files like images only need to be copied to the
12175 publishing destination; for this you may use @code{org-publish-attachment}.
12176 For non-Org files, you always need to specify the publishing function:
12178 @multitable @columnfractions 0.3 0.7
12179 @item @code{:publishing-function}
12180 @tab Function executing the publication of a file.  This may also be a
12181 list of functions, which will all be called in turn.
12182 @item @code{:plain-source}
12183 @tab Non-nil means, publish plain source.
12184 @item @code{:htmlized-source}
12185 @tab Non-nil means, publish htmlized source.
12186 @end multitable
12188 The function must accept three arguments: a property list containing at least
12189 a @code{:publishing-directory} property, the name of the file to be
12190 published, and the path to the publishing directory of the output file.  It
12191 should take the specified file, make the necessary transformation (if any)
12192 and place the result into the destination folder.
12194 @node Publishing options, Publishing links, Publishing action, Configuration
12195 @subsection Options for the HTML/@LaTeX{} exporters
12196 @cindex options, for publishing
12198 The property list can be used to set many export options for the HTML
12199 and @LaTeX{} exporters.  In most cases, these properties correspond to user
12200 variables in Org.  The table below lists these properties along
12201 with the variable they belong to.  See the documentation string for the
12202 respective variable for details.
12204 @vindex org-export-html-link-up
12205 @vindex org-export-html-link-home
12206 @vindex org-export-default-language
12207 @vindex org-display-custom-times
12208 @vindex org-export-headline-levels
12209 @vindex org-export-with-section-numbers
12210 @vindex org-export-section-number-format
12211 @vindex org-export-with-toc
12212 @vindex org-export-preserve-breaks
12213 @vindex org-export-with-archived-trees
12214 @vindex org-export-with-emphasize
12215 @vindex org-export-with-sub-superscripts
12216 @vindex org-export-with-special-strings
12217 @vindex org-export-with-footnotes
12218 @vindex org-export-with-drawers
12219 @vindex org-export-with-tags
12220 @vindex org-export-with-todo-keywords
12221 @vindex org-export-with-tasks
12222 @vindex org-export-with-done-tasks
12223 @vindex org-export-with-priority
12224 @vindex org-export-with-TeX-macros
12225 @vindex org-export-with-LaTeX-fragments
12226 @vindex org-export-skip-text-before-1st-heading
12227 @vindex org-export-with-fixed-width
12228 @vindex org-export-with-timestamps
12229 @vindex org-export-author-info
12230 @vindex org-export-email-info
12231 @vindex org-export-creator-info
12232 @vindex org-export-time-stamp-file
12233 @vindex org-export-with-tables
12234 @vindex org-export-highlight-first-table-line
12235 @vindex org-export-html-style-include-default
12236 @vindex org-export-html-style-include-scripts
12237 @vindex org-export-html-style
12238 @vindex org-export-html-style-extra
12239 @vindex org-export-html-link-org-files-as-html
12240 @vindex org-export-html-inline-images
12241 @vindex org-export-html-extension
12242 @vindex org-export-html-table-tag
12243 @vindex org-export-html-expand
12244 @vindex org-export-html-with-timestamp
12245 @vindex org-export-publishing-directory
12246 @vindex org-export-html-preamble
12247 @vindex org-export-html-postamble
12248 @vindex user-full-name
12249 @vindex user-mail-address
12250 @vindex org-export-select-tags
12251 @vindex org-export-exclude-tags
12253 @multitable @columnfractions 0.32 0.68
12254 @item @code{:link-up}               @tab @code{org-export-html-link-up}
12255 @item @code{:link-home}             @tab @code{org-export-html-link-home}
12256 @item @code{:language}              @tab @code{org-export-default-language}
12257 @item @code{:customtime}            @tab @code{org-display-custom-times}
12258 @item @code{:headline-levels}       @tab @code{org-export-headline-levels}
12259 @item @code{:section-numbers}       @tab @code{org-export-with-section-numbers}
12260 @item @code{:section-number-format} @tab @code{org-export-section-number-format}
12261 @item @code{:table-of-contents}     @tab @code{org-export-with-toc}
12262 @item @code{:preserve-breaks}       @tab @code{org-export-preserve-breaks}
12263 @item @code{:archived-trees}        @tab @code{org-export-with-archived-trees}
12264 @item @code{:emphasize}             @tab @code{org-export-with-emphasize}
12265 @item @code{:sub-superscript}       @tab @code{org-export-with-sub-superscripts}
12266 @item @code{:special-strings}       @tab @code{org-export-with-special-strings}
12267 @item @code{:footnotes}             @tab @code{org-export-with-footnotes}
12268 @item @code{:drawers}               @tab @code{org-export-with-drawers}
12269 @item @code{:tags}                  @tab @code{org-export-with-tags}
12270 @item @code{:todo-keywords}         @tab @code{org-export-with-todo-keywords}
12271 @item @code{:tasks}                 @tab @code{org-export-with-tasks}
12272 @item @code{:priority}              @tab @code{org-export-with-priority}
12273 @item @code{:TeX-macros}            @tab @code{org-export-with-TeX-macros}
12274 @item @code{:LaTeX-fragments}       @tab @code{org-export-with-LaTeX-fragments}
12275 @item @code{:latex-listings}        @tab @code{org-export-latex-listings}
12276 @item @code{:skip-before-1st-heading} @tab @code{org-export-skip-text-before-1st-heading}
12277 @item @code{:fixed-width}           @tab @code{org-export-with-fixed-width}
12278 @item @code{:timestamps}            @tab @code{org-export-with-timestamps}
12279 @item @code{:author}                @tab @code{user-full-name}
12280 @item @code{:email}                 @tab @code{user-mail-address} : @code{addr;addr;..}
12281 @item @code{:author-info}           @tab @code{org-export-author-info}
12282 @item @code{:email-info}            @tab @code{org-export-email-info}
12283 @item @code{:creator-info}          @tab @code{org-export-creator-info}
12284 @item @code{:tables}                @tab @code{org-export-with-tables}
12285 @item @code{:table-auto-headline}   @tab @code{org-export-highlight-first-table-line}
12286 @item @code{:style-include-default} @tab @code{org-export-html-style-include-default}
12287 @item @code{:style-include-scripts} @tab @code{org-export-html-style-include-scripts}
12288 @item @code{:style}                 @tab @code{org-export-html-style}
12289 @item @code{:style-extra}           @tab @code{org-export-html-style-extra}
12290 @item @code{:convert-org-links}     @tab @code{org-export-html-link-org-files-as-html}
12291 @item @code{:inline-images}         @tab @code{org-export-html-inline-images}
12292 @item @code{:html-extension}        @tab @code{org-export-html-extension}
12293 @item @code{:html-preamble}         @tab @code{org-export-html-preamble}
12294 @item @code{:html-postamble}        @tab @code{org-export-html-postamble}
12295 @item @code{:xml-declaration}       @tab @code{org-export-html-xml-declaration}
12296 @item @code{:html-table-tag}        @tab @code{org-export-html-table-tag}
12297 @item @code{:expand-quoted-html}    @tab @code{org-export-html-expand}
12298 @item @code{:timestamp}             @tab @code{org-export-html-with-timestamp}
12299 @item @code{:publishing-directory}  @tab @code{org-export-publishing-directory}
12300 @item @code{:select-tags}           @tab @code{org-export-select-tags}
12301 @item @code{:exclude-tags}          @tab @code{org-export-exclude-tags}
12302 @item @code{:latex-image-options}   @tab @code{org-export-latex-image-default-option}
12303 @end multitable
12305 Most of the @code{org-export-with-*} variables have the same effect in
12306 both HTML and @LaTeX{} exporters, except for @code{:TeX-macros} and
12307 @code{:LaTeX-fragments} options, respectively @code{nil} and @code{t} in the
12308 @LaTeX{} export.  See @code{org-export-plist-vars} to check this list of
12309 options.
12313 @vindex org-publish-project-alist
12314 When a property is given a value in @code{org-publish-project-alist},
12315 its setting overrides the value of the corresponding user variable (if
12316 any) during publishing.  Options set within a file (@pxref{Export
12317 options}), however, override everything.
12319 @node Publishing links, Sitemap, Publishing options, Configuration
12320 @subsection Links between published files
12321 @cindex links, publishing
12323 To create a link from one Org file to another, you would use
12324 something like @samp{[[file:foo.org][The foo]]} or simply
12325 @samp{file:foo.org.} (@pxref{Hyperlinks}).  When published, this link
12326 becomes a link to @file{foo.html}.  In this way, you can interlink the
12327 pages of your "org web" project and the links will work as expected when
12328 you publish them to HTML.  If you also publish the Org source file and want
12329 to link to that, use an @code{http:} link instead of a @code{file:} link,
12330 because @code{file:} links are converted to link to the corresponding
12331 @file{html} file.
12333 You may also link to related files, such as images.  Provided you are careful
12334 with relative file names, and provided you have also configured Org to upload
12335 the related files, these links will work too.  See @ref{Complex example}, for
12336 an example of this usage.
12338 Sometimes an Org file to be published may contain links that are
12339 only valid in your production environment, but not in the publishing
12340 location.  In this case, use the property
12342 @multitable @columnfractions 0.4 0.6
12343 @item @code{:link-validation-function}
12344 @tab Function to validate links
12345 @end multitable
12347 @noindent
12348 to define a function for checking link validity.  This function must
12349 accept two arguments, the file name and a directory relative to which
12350 the file name is interpreted in the production environment.  If this
12351 function returns @code{nil}, then the HTML generator will only insert a
12352 description into the HTML file, but no link.  One option for this
12353 function is @code{org-publish-validate-link} which checks if the given
12354 file is part of any project in @code{org-publish-project-alist}.
12356 @node Sitemap, Generating an index, Publishing links, Configuration
12357 @subsection Generating a sitemap
12358 @cindex sitemap, of published pages
12360 The following properties may be used to control publishing of
12361 a map of files for a given project.
12363 @multitable @columnfractions 0.35 0.65
12364 @item @code{:auto-sitemap}
12365 @tab When non-nil, publish a sitemap during @code{org-publish-current-project}
12366 or @code{org-publish-all}.
12368 @item @code{:sitemap-filename}
12369 @tab Filename for output of sitemap.  Defaults to @file{sitemap.org} (which
12370 becomes @file{sitemap.html}).
12372 @item @code{:sitemap-title}
12373 @tab Title of sitemap page.  Defaults to name of file.
12375 @item @code{:sitemap-function}
12376 @tab Plug-in function to use for generation of the sitemap.
12377 Defaults to @code{org-publish-org-sitemap}, which generates a plain list
12378 of links to all files in the project.
12380 @item @code{:sitemap-sort-folders}
12381 @tab Where folders should appear in the sitemap.  Set this to @code{first}
12382 (default) or @code{last} to display folders first or last,
12383 respectively.  Any other value will mix files and folders.
12385 @item @code{:sitemap-sort-files}
12386 @tab How the files are sorted in the site map.  Set this to
12387 @code{alphabetically} (default), @code{chronologically} or
12388 @code{anti-chronologically}.  @code{chronologically} sorts the files with
12389 older date first while @code{anti-chronologically} sorts the files with newer
12390 date first.  @code{alphabetically} sorts the files alphabetically.  The date of
12391 a file is retrieved with @code{org-publish-find-date}.
12393 @item @code{:sitemap-ignore-case}
12394 @tab Should sorting be case-sensitive?  Default @code{nil}.
12396 @item @code{:sitemap-file-entry-format}
12397 @tab With this option one can tell how a sitemap's entry is formatted in the
12398 sitemap.  This is a format string with some escape sequences: @code{%t} stands
12399 for the title of the file, @code{%a} stands for the author of the file and
12400 @code{%d} stands for the date of the file.  The date is retrieved with the
12401 @code{org-publish-find-date} function and formatted with
12402 @code{org-publish-sitemap-date-format}.  Default @code{%t}.
12404 @item @code{:sitemap-date-format}
12405 @tab Format string for the @code{format-time-string} function that tells how
12406 a sitemap entry's date is to be formatted.  This property bypasses
12407 @code{org-publish-sitemap-date-format} which defaults to @code{%Y-%m-%d}.
12409 @item @code{:sitemap-sans-extension}
12410 @tab When non-nil, remove filenames' extensions from the generated sitemap.
12411 Useful to have cool URIs (see @uref{http://www.w3.org/Provider/Style/URI}).
12412 Defaults to @code{nil}.
12414 @end multitable
12416 @node Generating an index,  , Sitemap, Configuration
12417 @subsection Generating an index
12418 @cindex index, in a publishing project
12420 Org mode can generate an index across the files of a publishing project.
12422 @multitable @columnfractions 0.25 0.75
12423 @item @code{:makeindex}
12424 @tab When non-nil, generate in index in the file @file{theindex.org} and
12425 publish it as @file{theindex.html}.
12426 @end multitable
12428 The file will be created when first publishing a project with the
12429 @code{:makeindex} set.  The file only contains a statement @code{#+INCLUDE:
12430 "theindex.inc"}.  You can then build around this include statement by adding
12431 a title, style information, etc.
12433 @node Uploading files, Sample configuration, Configuration, Publishing
12434 @section Uploading files
12435 @cindex rsync
12436 @cindex unison
12438 For those people already utilizing third party sync tools such as
12439 @command{rsync} or @command{unison}, it might be preferable not to use the built in
12440 @i{remote} publishing facilities of Org mode which rely heavily on
12441 Tramp.  Tramp, while very useful and powerful, tends not to be
12442 so efficient for multiple file transfer and has been known to cause problems
12443 under heavy usage.
12445 Specialized synchronization utilities offer several advantages.  In addition
12446 to timestamp comparison, they also do content and permissions/attribute
12447 checks.  For this reason you might prefer to publish your web to a local
12448 directory (possibly even @i{in place} with your Org files) and then use
12449 @file{unison} or @file{rsync} to do the synchronization with the remote host.
12451 Since Unison (for example) can be configured as to which files to transfer to
12452 a certain remote destination, it can greatly simplify the project publishing
12453 definition.  Simply keep all files in the correct location, process your Org
12454 files with @code{org-publish} and let the synchronization tool do the rest.
12455 You do not need, in this scenario, to include attachments such as @file{jpg},
12456 @file{css} or @file{gif} files in the project definition since the 3rd party
12457 tool syncs them.
12459 Publishing to a local directory is also much faster than to a remote one, so
12460 that you can afford more easily to republish entire projects.  If you set
12461 @code{org-publish-use-timestamps-flag} to @code{nil}, you gain the main
12462 benefit of re-including any changed external files such as source example
12463 files you might include with @code{#+INCLUDE:}.  The timestamp mechanism in
12464 Org is not smart enough to detect if included files have been modified.
12466 @node Sample configuration, Triggering publication, Uploading files, Publishing
12467 @section Sample configuration
12469 Below we provide two example configurations.  The first one is a simple
12470 project publishing only a set of Org files.  The second example is
12471 more complex, with a multi-component project.
12473 @menu
12474 * Simple example::              One-component publishing
12475 * Complex example::             A multi-component publishing example
12476 @end menu
12478 @node Simple example, Complex example, Sample configuration, Sample configuration
12479 @subsection Example: simple publishing configuration
12481 This example publishes a set of Org files to the @file{public_html}
12482 directory on the local machine.
12484 @lisp
12485 (setq org-publish-project-alist
12486       '(("org"
12487          :base-directory "~/org/"
12488          :publishing-directory "~/public_html"
12489          :section-numbers nil
12490          :table-of-contents nil
12491          :style "<link rel=\"stylesheet\"
12492                 href=\"../other/mystyle.css\"
12493                 type=\"text/css\"/>")))
12494 @end lisp
12496 @node Complex example,  , Simple example, Sample configuration
12497 @subsection Example: complex publishing configuration
12499 This more complicated example publishes an entire website, including
12500 Org files converted to HTML, image files, Emacs Lisp source code, and
12501 style sheets.  The publishing directory is remote and private files are
12502 excluded.
12504 To ensure that links are preserved, care should be taken to replicate
12505 your directory structure on the web server, and to use relative file
12506 paths.  For example, if your Org files are kept in @file{~/org} and your
12507 publishable images in @file{~/images}, you would link to an image with
12509 @example
12510 file:../images/myimage.png
12511 @end example
12513 On the web server, the relative path to the image should be the
12514 same.  You can accomplish this by setting up an "images" folder in the
12515 right place on the web server, and publishing images to it.
12517 @lisp
12518 (setq org-publish-project-alist
12519       '(("orgfiles"
12520           :base-directory "~/org/"
12521           :base-extension "org"
12522           :publishing-directory "/ssh:user@@host:~/html/notebook/"
12523           :publishing-function org-publish-org-to-html
12524           :exclude "PrivatePage.org"   ;; regexp
12525           :headline-levels 3
12526           :section-numbers nil
12527           :table-of-contents nil
12528           :style "<link rel=\"stylesheet\"
12529                   href=\"../other/mystyle.css\" type=\"text/css\"/>"
12530           :html-preamble t)
12532          ("images"
12533           :base-directory "~/images/"
12534           :base-extension "jpg\\|gif\\|png"
12535           :publishing-directory "/ssh:user@@host:~/html/images/"
12536           :publishing-function org-publish-attachment)
12538          ("other"
12539           :base-directory "~/other/"
12540           :base-extension "css\\|el"
12541           :publishing-directory "/ssh:user@@host:~/html/other/"
12542           :publishing-function org-publish-attachment)
12543          ("website" :components ("orgfiles" "images" "other"))))
12544 @end lisp
12546 @node Triggering publication,  , Sample configuration, Publishing
12547 @section Triggering publication
12549 Once properly configured, Org can publish with the following commands:
12551 @table @kbd
12552 @orgcmd{C-c C-e X,org-publish}
12553 Prompt for a specific project and publish all files that belong to it.
12554 @orgcmd{C-c C-e P,org-publish-current-project}
12555 Publish the project containing the current file.
12556 @orgcmd{C-c C-e F,org-publish-current-file}
12557 Publish only the current file.
12558 @orgcmd{C-c C-e E,org-publish-all}
12559 Publish every project.
12560 @end table
12562 @vindex org-publish-use-timestamps-flag
12563 Org uses timestamps to track when a file has changed.  The above functions
12564 normally only publish changed files.  You can override this and force
12565 publishing of all files by giving a prefix argument to any of the commands
12566 above, or by customizing the variable @code{org-publish-use-timestamps-flag}.
12567 This may be necessary in particular if files include other files via
12568 @code{#+SETUPFILE:} or @code{#+INCLUDE:}.
12570 @comment  node-name,  next,  previous,  up
12571 @comment Working With Source Code, Miscellaneous, Publishing, Top
12573 @node Working With Source Code, Miscellaneous, Publishing, Top
12574 @chapter Working with source code
12575 @cindex Schulte, Eric
12576 @cindex Davison, Dan
12577 @cindex source code, working with
12579 Source code can be included in Org mode documents using a @samp{src} block,
12580 e.g.@:
12582 @example
12583 #+BEGIN_SRC emacs-lisp
12584   (defun org-xor (a b)
12585      "Exclusive or."
12586      (if a (not b) b))
12587 #+END_SRC
12588 @end example
12590 Org mode provides a number of features for working with live source code,
12591 including editing of code blocks in their native major-mode, evaluation of
12592 code blocks, converting code blocks into source files (known as @dfn{tangling}
12593 in literate programming), and exporting code blocks and their
12594 results in several formats.  This functionality was contributed by Eric
12595 Schulte and Dan Davison, and was originally named Org-babel.
12597 The following sections describe Org mode's code block handling facilities.
12599 @menu
12600 * Structure of code blocks::    Code block syntax described
12601 * Editing source code::         Language major-mode editing
12602 * Exporting code blocks::       Export contents and/or results
12603 * Extracting source code::      Create pure source code files
12604 * Evaluating code blocks::      Place results of evaluation in the Org mode buffer
12605 * Library of Babel::            Use and contribute to a library of useful code blocks
12606 * Languages::                   List of supported code block languages
12607 * Header arguments::            Configure code block functionality
12608 * Results of evaluation::       How evaluation results are handled
12609 * Noweb reference syntax::      Literate programming in Org mode
12610 * Key bindings and useful functions::  Work quickly with code blocks
12611 * Batch execution::             Call functions from the command line
12612 @end menu
12614 @comment  node-name,  next,  previous,  up
12615 @comment  Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
12617 @node Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
12618 @section Structure of code blocks
12619 @cindex code block, structure
12620 @cindex source code, block structure
12621 @cindex #+NAME
12622 @cindex #+BEGIN_SRC
12624 Live code blocks can be specified with a @samp{src} block or
12625 inline.@footnote{Note that @samp{src} blocks may be inserted using Org mode's
12626 @ref{Easy Templates} system}  The structure of a @samp{src} block is
12628 @example
12629 #+NAME: <name>
12630 #+BEGIN_SRC <language> <switches> <header arguments>
12631   <body>
12632 #+END_SRC
12633 @end example
12635 The @code{#+NAME:} line is optional, and can be used to name the code
12636 block.  Live code blocks require that a language be specified on the
12637 @code{#+BEGIN_SRC} line.  Switches and header arguments are optional.
12638 @cindex source code, inline
12640 Live code blocks can also be specified inline using
12642 @example
12643 src_<language>@{<body>@}
12644 @end example
12648 @example
12649 src_<language>[<header arguments>]@{<body>@}
12650 @end example
12652 @table @code
12653 @item <#+NAME: name>
12654 This line associates a name with the code block.  This is similar to the
12655 @code{#+TBLNAME: NAME} lines that can be used to name tables in Org mode
12656 files.  Referencing the name of a code block makes it possible to evaluate
12657 the block from other places in the file, from other files, or from Org mode
12658 table formulas (see @ref{The spreadsheet}).  Names are assumed to be unique
12659 and the behavior of Org mode when two or more blocks share the same name is
12660 undefined.
12661 @cindex #+NAME
12662 @item <language>
12663 The language of the code in the block (see @ref{Languages}).
12664 @cindex source code, language
12665 @item <switches>
12666 Optional switches control code block export (see the discussion of switches in
12667 @ref{Literal examples})
12668 @cindex source code, switches
12669 @item <header arguments>
12670 Optional header arguments control many aspects of evaluation, export and
12671 tangling of code blocks (see @ref{Header arguments}).
12672 Header arguments can also be set on a per-buffer or per-subtree
12673 basis using properties.
12674 @item source code, header arguments
12675 @item <body>
12676 Source code in the specified language.
12677 @end table
12679 @comment  node-name,  next,  previous,  up
12680 @comment  Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
12682 @node Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
12683 @section Editing source code
12684 @cindex code block, editing
12685 @cindex source code, editing
12687 @kindex C-c '
12688 Use @kbd{C-c '} to edit the current code block.  This brings up
12689 a language major-mode edit buffer containing the body of the code
12690 block.  Saving this buffer will write the new contents back to the Org
12691 buffer.  Use @kbd{C-c '} again to exit.
12693 The @code{org-src-mode} minor mode will be active in the edit buffer.  The
12694 following variables can be used to configure the behavior of the edit
12695 buffer.  See also the customization group @code{org-edit-structure} for
12696 further configuration options.
12698 @table @code
12699 @item org-src-lang-modes
12700 If an Emacs major-mode named @code{<lang>-mode} exists, where
12701 @code{<lang>} is the language named in the header line of the code block,
12702 then the edit buffer will be placed in that major-mode.  This variable
12703 can be used to map arbitrary language names to existing major modes.
12704 @item org-src-window-setup
12705 Controls the way Emacs windows are rearranged when the edit buffer is created.
12706 @item org-src-preserve-indentation
12707 This variable is especially useful for tangling languages such as
12708 Python, in which whitespace indentation in the output is critical.
12709 @item org-src-ask-before-returning-to-edit-buffer
12710 By default, Org will ask before returning to an open edit buffer.  Set this
12711 variable to nil to switch without asking.
12712 @end table
12714 To turn on native code fontification in the @emph{Org} buffer, configure the
12715 variable @code{org-src-fontify-natively}.
12717 @comment  node-name,  next,  previous,  up
12718 @comment  Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
12720 @node Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
12721 @section Exporting code blocks
12722 @cindex code block, exporting
12723 @cindex source code, exporting
12725 It is possible to export the @emph{code} of code blocks, the @emph{results}
12726 of code block evaluation, @emph{both} the code and the results of code block
12727 evaluation, or @emph{none}.  For most languages, the default exports code.
12728 However, for some languages (e.g.@: @code{ditaa}) the default exports the
12729 results of code block evaluation.  For information on exporting code block
12730 bodies, see @ref{Literal examples}.
12732 The @code{:exports} header argument can be used to specify export
12733 behavior:
12735 @subsubheading Header arguments:
12736 @table @code
12737 @item :exports code
12738 The default in most languages.  The body of the code block is exported, as
12739 described in @ref{Literal examples}.
12740 @item :exports results
12741 The code block will be evaluated and the results will be placed in the
12742 Org mode buffer for export, either updating previous results of the code
12743 block located anywhere in the buffer or, if no previous results exist,
12744 placing the results immediately after the code block.  The body of the code
12745 block will not be exported.
12746 @item :exports both
12747 Both the code block and its results will be exported.
12748 @item :exports none
12749 Neither the code block nor its results will be exported.
12750 @end table
12752 It is possible to inhibit the evaluation of code blocks during export.
12753 Setting the @code{org-export-babel-evaluate} variable to @code{nil} will
12754 ensure that no code blocks are evaluated as part of the export process.  This
12755 can be useful in situations where potentially untrusted Org mode files are
12756 exported in an automated fashion, for example when Org mode is used as the
12757 markup language for a wiki.
12759 @comment  node-name,  next,  previous,  up
12760 @comment  Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
12761 @node Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
12762 @section Extracting source code
12763 @cindex tangling
12764 @cindex source code, extracting
12765 @cindex code block, extracting source code
12767 Creating pure source code files by extracting code from source blocks is
12768 referred to as ``tangling''---a term adopted from the literate programming
12769 community.  During ``tangling'' of code blocks their bodies are expanded
12770 using @code{org-babel-expand-src-block} which can expand both variable and
12771 ``noweb'' style references  (see @ref{Noweb reference syntax}).
12773 @subsubheading Header arguments
12774 @table @code
12775 @item :tangle no
12776 The default.  The code block is not included in the tangled output.
12777 @item :tangle yes
12778 Include the code block in the tangled output.  The output file name is the
12779 name of the org file with the extension @samp{.org} replaced by the extension
12780 for the block language.
12781 @item :tangle filename
12782 Include the code block in the tangled output to file @samp{filename}.
12783 @end table
12785 @kindex  C-c C-v t
12786 @subsubheading Functions
12787 @table @code
12788 @item org-babel-tangle
12789 Tangle the current file.  Bound to @kbd{C-c C-v t}.
12790 @item org-babel-tangle-file
12791 Choose a file to tangle.  Bound to @kbd{C-c C-v f}.
12792 @end table
12794 @subsubheading Hooks
12795 @table @code
12796 @item org-babel-post-tangle-hook
12797 This hook is run from within code files tangled by @code{org-babel-tangle}.
12798 Example applications could include post-processing, compilation or evaluation
12799 of tangled code files.
12800 @end table
12802 @node Evaluating code blocks, Library of Babel, Extracting source code, Working With Source Code
12803 @section Evaluating code blocks
12804 @cindex code block, evaluating
12805 @cindex source code, evaluating
12806 @cindex #+RESULTS
12808 Code blocks can be evaluated@footnote{Whenever code is evaluated there is a
12809 potential for that code to do harm.  Org mode provides safeguards to ensure
12810 that code is only evaluated after explicit confirmation from the user.  For
12811 information on these safeguards (and on how to disable them) see @ref{Code
12812 evaluation security}.} and the results of evaluation optionally placed in the
12813 Org mode buffer.  The results of evaluation are placed following a line that
12814 begins by default with @code{#+RESULTS} and optionally a cache identifier
12815 and/or the name of the evaluated code block.  The default value of
12816 @code{#+RESULTS} can be changed with the customizable variable
12817 @code{org-babel-results-keyword}.
12819 By default, the evaluation facility is only enabled for Lisp code blocks
12820 specified as @code{emacs-lisp}.  However, source code blocks in many languages
12821 can be evaluated within Org mode (see @ref{Languages} for a list of supported
12822 languages and @ref{Structure of code blocks} for information on the syntax
12823 used to define a code block).
12825 @kindex C-c C-c
12826 There are a number of ways to evaluate code blocks.  The simplest is to press
12827 @kbd{C-c C-c} or @kbd{C-c C-v e} with the point on a code block@footnote{The
12828 @code{org-babel-no-eval-on-ctrl-c-ctrl-c} variable can be used to remove code
12829 evaluation from the @kbd{C-c C-c} key binding.}.  This will call the
12830 @code{org-babel-execute-src-block} function to evaluate the block and insert
12831 its results into the Org mode buffer.
12832 @cindex #+CALL
12834 It is also possible to evaluate named code blocks from anywhere in an Org
12835 mode buffer or an Org mode table.  Live code blocks located in the current
12836 Org mode buffer or in the ``Library of Babel'' (see @ref{Library of Babel})
12837 can be executed.  Named code blocks can be executed with a separate
12838 @code{#+CALL:} line or inline within a block of text.
12840 The syntax of the @code{#+CALL:} line is
12842 @example
12843 #+CALL: <name>(<arguments>)
12844 #+CALL: <name>[<inside header arguments>](<arguments>) <end header arguments>
12845 @end example
12847 The syntax for inline evaluation of named code blocks is
12849 @example
12850 ... call_<name>(<arguments>) ...
12851 ... call_<name>[<inside header arguments>](<arguments>)[<end header arguments>] ...
12852 @end example
12854 @table @code
12855 @item <name>
12856 The name of the code block to be evaluated (see @ref{Structure of code blocks}).
12857 @item <arguments>
12858 Arguments specified in this section will be passed to the code block.  These
12859 arguments use standard function call syntax, rather than
12860 header argument syntax.  For example, a @code{#+CALL:} line that passes the
12861 number four to a code block named @code{double}, which declares the header
12862 argument @code{:var n=2}, would be written as @code{#+CALL: double(n=4)}.
12863 @item <inside header arguments>
12864 Inside header arguments are passed through and applied to the named code
12865 block.  These arguments use header argument syntax rather than standard
12866 function call syntax.  Inside header arguments affect how the code block is
12867 evaluated.  For example, @code{[:results output]} will collect the results of
12868 everything printed to @code{STDOUT} during execution of the code block.
12869 @item <end header arguments>
12870 End header arguments are applied to the calling instance and do not affect
12871 evaluation of the named code block.  They affect how the results are
12872 incorporated into the Org mode buffer and how the call line is exported.  For
12873 example, @code{:results html} will insert the results of the call line
12874 evaluation in the Org buffer, wrapped in a @code{BEGIN_HTML:} block.
12876 For more examples of passing header arguments to @code{#+CALL:} lines see
12877 @ref{Header arguments in function calls}.
12878 @end table
12880 @node Library of Babel, Languages, Evaluating code blocks, Working With Source Code
12881 @section Library of Babel
12882 @cindex babel, library of
12883 @cindex source code, library
12884 @cindex code block, library
12886 The ``Library of Babel'' consists of code blocks that can be called from any
12887 Org mode file.  Code blocks defined in the ``Library of Babel'' can be called
12888 remotely as if they were in the current Org mode buffer (see @ref{Evaluating
12889 code blocks} for information on the syntax of remote code block evaluation).
12892 The central repository of code blocks in the ``Library of Babel'' is housed
12893 in an Org mode file located in the @samp{contrib} directory of Org mode.
12895 Users can add code blocks they believe to be generally useful to their
12896 ``Library of Babel.''  The code blocks can be stored in any Org mode file and
12897 then loaded into the library with @code{org-babel-lob-ingest}.
12900 @kindex C-c C-v i
12901 Code blocks located in any Org mode file can be loaded into the ``Library of
12902 Babel'' with the @code{org-babel-lob-ingest} function, bound to @kbd{C-c C-v
12905 @node Languages, Header arguments, Library of Babel, Working With Source Code
12906 @section Languages
12907 @cindex babel, languages
12908 @cindex source code, languages
12909 @cindex code block, languages
12911 Code blocks in the following languages are supported.
12913 @multitable @columnfractions 0.28 0.3 0.22 0.2
12914 @item @b{Language} @tab @b{Identifier} @tab @b{Language} @tab @b{Identifier}
12915 @item Asymptote @tab asymptote @tab Awk @tab awk
12916 @item Emacs Calc @tab calc @tab C @tab C
12917 @item C++ @tab C++ @tab Clojure @tab clojure
12918 @item CSS @tab css @tab ditaa @tab ditaa
12919 @item Graphviz @tab dot @tab Emacs Lisp @tab emacs-lisp
12920 @item gnuplot @tab gnuplot @tab Haskell @tab haskell
12921 @item Java @tab java @tab @tab
12922 @item Javascript @tab js @tab LaTeX @tab latex
12923 @item Ledger @tab ledger @tab Lisp @tab lisp
12924 @item Lilypond @tab lilypond @tab MATLAB @tab matlab
12925 @item Mscgen @tab mscgen @tab Objective Caml @tab ocaml
12926 @item Octave @tab octave @tab Org mode @tab org
12927 @item Oz @tab oz @tab Perl @tab perl
12928 @item Plantuml @tab plantuml @tab Python @tab python
12929 @item R @tab R @tab Ruby @tab ruby
12930 @item Sass @tab sass @tab Scheme @tab scheme
12931 @item GNU Screen @tab screen @tab shell @tab sh
12932 @item SQL @tab sql @tab SQLite @tab sqlite
12933 @end multitable
12935 Language-specific documentation is available for some languages.  If
12936 available, it can be found at
12937 @uref{http://orgmode.org/worg/org-contrib/babel/languages}.
12939 The @code{org-babel-load-languages} controls which languages are enabled for
12940 evaluation (by default only @code{emacs-lisp} is enabled).  This variable can
12941 be set using the customization interface or by adding code like the following
12942 to your emacs configuration.
12944 @quotation
12945 The following disables @code{emacs-lisp} evaluation and enables evaluation of
12946 @code{R} code blocks.
12947 @end quotation
12949 @lisp
12950 (org-babel-do-load-languages
12951  'org-babel-load-languages
12952  '((emacs-lisp . nil)
12953    (R . t)))
12954 @end lisp
12956 It is also possible to enable support for a language by loading the related
12957 elisp file with @code{require}.
12959 @quotation
12960 The following adds support for evaluating @code{clojure} code blocks.
12961 @end quotation
12963 @lisp
12964 (require 'ob-clojure)
12965 @end lisp
12967 @node Header arguments, Results of evaluation, Languages, Working With Source Code
12968 @section Header arguments
12969 @cindex code block, header arguments
12970 @cindex source code, block header arguments
12972 Code block functionality can be configured with header arguments.  This
12973 section provides an overview of the use of header arguments, and then
12974 describes each header argument in detail.
12976 @menu
12977 * Using header arguments::      Different ways to set header arguments
12978 * Specific header arguments::   List of header arguments
12979 @end menu
12981 @node Using header arguments, Specific header arguments, Header arguments, Header arguments
12982 @subsection Using header arguments
12984 The values of header arguments can be set in six different ways, each more
12985 specific (and having higher priority) than the last.
12986 @menu
12987 * System-wide header arguments::  Set global default values
12988 * Language-specific header arguments::  Set default values by language
12989 * Buffer-wide header arguments::  Set default values for a specific buffer
12990 * Header arguments in Org mode properties::  Set default values for a buffer or heading
12991 * Code block specific header arguments::  The most common way to set values
12992 * Header arguments in function calls::  The most specific level
12993 @end menu
12996 @node System-wide header arguments, Language-specific header arguments, Using header arguments, Using header arguments
12997 @subsubheading System-wide header arguments
12998 @vindex org-babel-default-header-args
12999 System-wide values of header arguments can be specified by customizing the
13000 @code{org-babel-default-header-args} variable:
13002 @example
13003 :session    => "none"
13004 :results    => "replace"
13005 :exports    => "code"
13006 :cache      => "no"
13007 :noweb      => "no"
13008 @end example
13010 @c @example
13011 @c   org-babel-default-header-args is a variable defined in `org-babel.el'.
13012 @c   Its value is
13013 @c   ((:session . "none")
13014 @c    (:results . "replace")
13015 @c    (:exports . "code")
13016 @c    (:cache . "no")
13017 @c    (:noweb . "no"))
13020 @c   Documentation:
13021 @c   Default arguments to use when evaluating a code block.
13022 @c @end example
13024 For example, the following example could be used to set the default value of
13025 @code{:noweb} header arguments to @code{yes}.  This would have the effect of
13026 expanding @code{:noweb} references by default when evaluating source code
13027 blocks.
13029 @lisp
13030 (setq org-babel-default-header-args
13031 (cons '(:noweb . "yes")
13032 (assq-delete-all :noweb org-babel-default-header-args)))
13033 @end lisp
13035 @node Language-specific header arguments, Buffer-wide header arguments, System-wide header arguments, Using header arguments
13036 @subsubheading Language-specific header arguments
13037 Each language can define its own set of default header arguments.  See the
13038 language-specific documentation available online at
13039 @uref{http://orgmode.org/worg/org-contrib/babel}.
13041 @node Buffer-wide header arguments, Header arguments in Org mode properties, Language-specific header arguments, Using header arguments
13042 @subsubheading Buffer-wide header arguments
13043 Buffer-wide header arguments may be specified as properties through the use
13044 of @code{#+PROPERTY:} lines placed anywhere in an Org mode file (see
13045 @ref{Property syntax}).
13047 For example the following would set @code{session} to @code{*R*}, and
13048 @code{results} to @code{silent} for every code block in the buffer, ensuring
13049 that all execution took place in the same session, and no results would be
13050 inserted into the buffer.
13052 @example
13053 #+PROPERTY: session *R*
13054 #+PROPERTY: results silent
13055 @end example
13057 @node Header arguments in Org mode properties, Code block specific header arguments, Buffer-wide header arguments, Using header arguments
13058 @subsubheading Header arguments in Org mode properties
13060 Header arguments are also read from Org mode properties (see @ref{Property
13061 syntax}), which can be set on a buffer-wide or per-heading basis.  An example
13062 of setting a header argument for all code blocks in a buffer is
13064 @example
13065 #+PROPERTY: tangle yes
13066 @end example
13068 @vindex org-use-property-inheritance
13069 When properties are used to set default header arguments, they are looked up
13070 with inheritance, regardless of the value of
13071 @code{org-use-property-inheritance}.  In the following example the value of
13072 the @code{:cache} header argument will default to @code{yes} in all code
13073 blocks in the subtree rooted at the following heading:
13075 @example
13076 * outline header
13077 :PROPERTIES:
13078 :cache:    yes
13079 :END:
13080 @end example
13082 @kindex C-c C-x p
13083 @vindex org-babel-default-header-args
13084 Properties defined in this way override the properties set in
13085 @code{org-babel-default-header-args}.  It is convenient to use the
13086 @code{org-set-property} function bound to @kbd{C-c C-x p} to set properties
13087 in Org mode documents.
13089 @node Code block specific header arguments, Header arguments in function calls, Header arguments in Org mode properties, Using header arguments
13090 @subsubheading Code block specific header arguments
13092 The most common way to assign values to header arguments is at the
13093 code block level.  This can be done by listing a sequence of header
13094 arguments and their values as part of the @code{#+BEGIN_SRC} line.
13095 Properties set in this way override both the values of
13096 @code{org-babel-default-header-args} and header arguments specified as
13097 properties.  In the following example, the @code{:results} header argument
13098 is set to @code{silent}, meaning the results of execution will not be
13099 inserted in the buffer, and the @code{:exports} header argument is set to
13100 @code{code}, meaning only the body of the code block will be
13101 preserved on export to HTML or @LaTeX{}.
13103 @example
13104 #+NAME: factorial
13105 #+BEGIN_SRC haskell :results silent :exports code :var n=0
13106 fac 0 = 1
13107 fac n = n * fac (n-1)
13108 #+END_SRC
13109 @end example
13110 Similarly, it is possible to set header arguments for inline code blocks
13112 @example
13113 src_haskell[:exports both]@{fac 5@}
13114 @end example
13116 Code block header arguments can span multiple lines using @code{#+HEADER:} or
13117 @code{#+HEADERS:} lines preceding a code block or nested between the
13118 @code{#+NAME:} line and the @code{#+BEGIN_SRC} line of a named code block.
13119 @cindex #+HEADER:
13120 @cindex #+HEADERS:
13122 Multi-line header arguments on an un-named code block:
13123 @example
13124  #+HEADERS: :var data1=1
13125  #+BEGIN_SRC emacs-lisp :var data2=2
13126    (message "data1:%S, data2:%S" data1 data2)
13127  #+END_SRC
13129  #+RESULTS:
13130  : data1:1, data2:2
13131 @end example
13133 Multi-line header arguments on a named code block:
13134 @example
13135    #+NAME: named-block
13136    #+HEADER: :var data=2
13137    #+BEGIN_SRC emacs-lisp
13138      (message "data:%S" data)
13139    #+END_SRC
13141    #+RESULTS: named-block
13142    : data:2
13143 @end example
13145 @node Header arguments in function calls,  , Code block specific header arguments, Using header arguments
13146 @comment  node-name,  next,  previous,  up
13147 @subsubheading Header arguments in function calls
13149 At the most specific level, header arguments for ``Library of Babel'' or
13150 @code{#+CALL:} lines can be set as shown in the two examples below.  For more
13151 information on the structure of @code{#+CALL:} lines see @ref{Evaluating code
13152 blocks}.
13154 The following will apply the @code{:exports results} header argument to the
13155 evaluation of the @code{#+CALL:} line.
13156 @example
13157 #+CALL: factorial(n=5) :exports results
13158 @end example
13160 The following will apply the @code{:session special} header argument to the
13161 evaluation of the @code{factorial} code block.
13162 @example
13163 #+CALL: factorial[:session special](n=5)
13164 @end example
13166 @node Specific header arguments,  , Using header arguments, Header arguments
13167 @subsection Specific header arguments
13168 Header arguments consist of an initial colon followed by the name of the
13169 argument in lowercase letters.  The following header arguments are defined:
13171 @menu
13172 * var::                         Pass arguments to code blocks
13173 * results::                     Specify the type of results and how they will
13174                                 be collected and handled
13175 * file::                        Specify a path for file output
13176 * file-desc::                   Specify a description for file results
13177 * dir::                         Specify the default (possibly remote)
13178                                 directory for code block execution
13179 * exports::                     Export code and/or results
13180 * tangle::                      Toggle tangling and specify file name
13181 * mkdirp::                      Toggle creation of parent directories of target
13182                                 files during tangling
13183 * comments::                    Toggle insertion of comments in tangled
13184                                 code files
13185 * padline::                     Control insertion of padding lines in tangled
13186                                 code files
13187 * no-expand::                   Turn off variable assignment and noweb
13188                                 expansion during tangling
13189 * session::                     Preserve the state of code evaluation
13190 * noweb::                       Toggle expansion of noweb references
13191 * noweb-ref::                   Specify block's noweb reference resolution target
13192 * noweb-sep::                   String used to separate noweb references
13193 * cache::                       Avoid re-evaluating unchanged code blocks
13194 * sep::                         Delimiter for writing tabular results outside Org
13195 * hlines::                      Handle horizontal lines in tables
13196 * colnames::                    Handle column names in tables
13197 * rownames::                    Handle row names in tables
13198 * shebang::                     Make tangled files executable
13199 * eval::                        Limit evaluation of specific code blocks
13200 * wrap::                        Mark source block evaluation results
13201 @end menu
13203 Additional header arguments are defined on a language-specific basis, see
13204 @ref{Languages}.
13206 @node var, results, Specific header arguments, Specific header arguments
13207 @subsubsection @code{:var}
13208 The @code{:var} header argument is used to pass arguments to code blocks.
13209 The specifics of how arguments are included in a code block vary by language;
13210 these are addressed in the language-specific documentation.  However, the
13211 syntax used to specify arguments is the same across all languages.  In every
13212 case, variables require a default value when they are declared.
13214 The values passed to arguments can either be literal values, references, or
13215 Emacs Lisp code (see @ref{var, Emacs Lisp evaluation of variables}).  References
13216 include anything in the Org mode file that takes a @code{#+NAME:},
13217 @code{#+TBLNAME:}, or @code{#+RESULTS:} line.  This includes tables, lists,
13218 @code{#+BEGIN_EXAMPLE} blocks, other code blocks, and the results of other
13219 code blocks.
13221 Argument values can be indexed in a manner similar to arrays (see @ref{var,
13222 Indexable variable values}).
13224 The following syntax is used to pass arguments to code blocks using the
13225 @code{:var} header argument.
13227 @example
13228 :var name=assign
13229 @end example
13231 The argument, @code{assign}, can either be a literal value, such as a string
13232 @samp{"string"} or a number @samp{9}, or a reference to a table, a list, a
13233 literal example, another code block (with or without arguments), or the
13234 results of evaluating another code block.
13236 Here are examples of passing values by reference:
13238 @table @dfn
13240 @item table
13241 an Org mode table named with either a @code{#+NAME:} or @code{#+TBLNAME:} line
13242 @example
13243 #+TBLNAME: example-table
13244 | 1 |
13245 | 2 |
13246 | 3 |
13247 | 4 |
13249 #+NAME: table-length
13250 #+BEGIN_SRC emacs-lisp :var table=example-table
13251 (length table)
13252 #+END_SRC
13254 #+RESULTS: table-length
13255 : 4
13256 @end example
13258 @item list
13259 a simple list named with a @code{#+NAME:} line (note that nesting is not
13260 carried through to the source code block)
13262 @example
13263 #+NAME: example-list
13264   - simple
13265     - not
13266     - nested
13267   - list
13269 #+BEGIN_SRC emacs-lisp :var x=example-list
13270   (print x)
13271 #+END_SRC
13273 #+RESULTS:
13274 | simple | list |
13275 @end example
13277 @item code block without arguments
13278 a code block name (from the example above), as assigned by @code{#+NAME:},
13279 optionally followed by parentheses
13281 @example
13282 #+BEGIN_SRC emacs-lisp :var length=table-length()
13283 (* 2 length)
13284 #+END_SRC
13286 #+RESULTS:
13287 : 8
13288 @end example
13290 @item code block with arguments
13291 a code block name, as assigned by @code{#+NAME:}, followed by parentheses and
13292 optional arguments passed within the parentheses following the
13293 code block name using standard function call syntax
13295 @example
13296 #+NAME: double
13297 #+BEGIN_SRC emacs-lisp :var input=8
13298 (* 2 input)
13299 #+END_SRC
13301 #+RESULTS: double
13302 : 16
13304 #+NAME: squared
13305 #+BEGIN_SRC emacs-lisp :var input=double(input=1)
13306 (* input input)
13307 #+END_SRC
13309 #+RESULTS: squared
13310 : 4
13311 @end example
13313 @item literal example
13314 a literal example block named with a @code{#+NAME:} line
13316 @example
13317 #+NAME: literal-example
13318 #+BEGIN_EXAMPLE
13319 A literal example
13320 on two lines
13321 #+END_EXAMPLE
13323 #+NAME: read-literal-example
13324 #+BEGIN_SRC emacs-lisp :var x=literal-example
13325   (concatenate 'string x " for you.")
13326 #+END_SRC
13328 #+RESULTS: read-literal-example
13329 : A literal example
13330 : on two lines for you.
13332 @end example
13334 @end table
13336 @subsubheading Alternate argument syntax
13337 It is also possible to specify arguments in a potentially more natural way
13338 using the @code{#+NAME:} line of a code block.  As in the following
13339 example, arguments can be packed inside of parentheses, separated by commas,
13340 following the source name.
13342 @example
13343 #+NAME: double(input=0, x=2)
13344 #+BEGIN_SRC emacs-lisp
13345 (* 2 (+ input x))
13346 #+END_SRC
13347 @end example
13349 @subsubheading Indexable variable values
13350 It is possible to reference portions of variable values by ``indexing'' into
13351 the variables.  Indexes are 0 based with negative values counting back from
13352 the end.  If an index is separated by @code{,}s then each subsequent section
13353 will index into the next deepest nesting or dimension of the value.  Note
13354 that this indexing occurs @emph{before} other table related header arguments
13355 like @code{:hlines}, @code{:colnames} and @code{:rownames} are applied.  The
13356 following example assigns the last cell of the first row the table
13357 @code{example-table} to the variable @code{data}:
13359 @example
13360 #+NAME: example-table
13361 | 1 | a |
13362 | 2 | b |
13363 | 3 | c |
13364 | 4 | d |
13366 #+BEGIN_SRC emacs-lisp :var data=example-table[0,-1]
13367   data
13368 #+END_SRC
13370 #+RESULTS:
13371 : a
13372 @end example
13374 Ranges of variable values can be referenced using two integers separated by a
13375 @code{:}, in which case the entire inclusive range is referenced.  For
13376 example the following assigns the middle three rows of @code{example-table}
13377 to @code{data}.
13379 @example
13380 #+NAME: example-table
13381 | 1 | a |
13382 | 2 | b |
13383 | 3 | c |
13384 | 4 | d |
13385 | 5 | 3 |
13387 #+BEGIN_SRC emacs-lisp :var data=example-table[1:3]
13388   data
13389 #+END_SRC
13391 #+RESULTS:
13392 | 2 | b |
13393 | 3 | c |
13394 | 4 | d |
13395 @end example
13397 Additionally, an empty index, or the single character @code{*}, are both
13398 interpreted to mean the entire range and as such are equivalent to
13399 @code{0:-1}, as shown in the following example in which the entire first
13400 column is referenced.
13402 @example
13403 #+NAME: example-table
13404 | 1 | a |
13405 | 2 | b |
13406 | 3 | c |
13407 | 4 | d |
13409 #+BEGIN_SRC emacs-lisp :var data=example-table[,0]
13410   data
13411 #+END_SRC
13413 #+RESULTS:
13414 | 1 | 2 | 3 | 4 |
13415 @end example
13417 It is possible to index into the results of code blocks as well as tables.
13418 Any number of dimensions can be indexed.  Dimensions are separated from one
13419 another by commas, as shown in the following example.
13421 @example
13422 #+NAME: 3D
13423 #+BEGIN_SRC emacs-lisp
13424   '(((1  2  3)  (4  5  6)  (7  8  9))
13425     ((10 11 12) (13 14 15) (16 17 18))
13426     ((19 20 21) (22 23 24) (25 26 27)))
13427 #+END_SRC
13429 #+BEGIN_SRC emacs-lisp :var data=3D[1,,1]
13430   data
13431 #+END_SRC
13433 #+RESULTS:
13434 | 11 | 14 | 17 |
13435 @end example
13437 @subsubheading Emacs Lisp evaluation of variables
13439 Emacs lisp code can be used to initialize variable values.  When a variable
13440 value starts with @code{(}, @code{[}, @code{'} or @code{`} it will be
13441 evaluated as Emacs Lisp and the result of the evaluation will be assigned as
13442 the variable value.  The following example demonstrates use of this
13443 evaluation to reliably pass the file-name of the Org mode buffer to a code
13444 block---note that evaluation of header arguments is guaranteed to take place
13445 in the original Org mode file, while there is no such guarantee for
13446 evaluation of the code block body.
13448 @example
13449 #+BEGIN_SRC sh :var filename=(buffer-file-name) :exports both
13450   wc -w $filename
13451 #+END_SRC
13452 @end example
13454 Note that values read from tables and lists will not be evaluated as
13455 Emacs Lisp, as shown in the following example.
13457 @example
13458 #+NAME: table
13459 | (a b c) |
13461 #+HEADERS: :var data=table[0,0]
13462 #+BEGIN_SRC perl
13463   $data
13464 #+END_SRC
13466 #+RESULTS:
13467 : (a b c)
13468 @end example
13470 @node results, file, var, Specific header arguments
13471 @subsubsection @code{:results}
13473 There are three classes of @code{:results} header argument.  Only one option
13474 per class may be supplied per code block.
13476 @itemize @bullet
13477 @item
13478 @b{collection} header arguments specify how the results should be collected
13479 from the code block
13480 @item
13481 @b{type} header arguments specify what type of result the code block will
13482 return---which has implications for how they will be inserted into the
13483 Org mode buffer
13484 @item
13485 @b{handling} header arguments specify how the results of evaluating the code
13486 block should be handled.
13487 @end itemize
13489 @subsubheading Collection
13490 The following options are mutually exclusive, and specify how the results
13491 should be collected from the code block.
13493 @itemize @bullet
13494 @item @code{value}
13495 This is the default.  The result is the value of the last statement in the
13496 code block.  This header argument places the evaluation in functional
13497 mode.  Note that in some languages, e.g., Python, use of this result type
13498 requires that a @code{return} statement be included in the body of the source
13499 code block.  E.g., @code{:results value}.
13500 @item @code{output}
13501 The result is the collection of everything printed to STDOUT during the
13502 execution of the code block.  This header argument places the
13503 evaluation in scripting mode.  E.g., @code{:results output}.
13504 @end itemize
13506 @subsubheading Type
13508 The following options are mutually exclusive and specify what type of results
13509 the code block will return.  By default, results are inserted as either a
13510 table or scalar depending on their value.
13512 @itemize @bullet
13513 @item @code{table}, @code{vector}
13514 The results should be interpreted as an Org mode table.  If a single value is
13515 returned, it will be converted into a table with one row and one column.
13516 E.g., @code{:results value table}.
13517 @item @code{list}
13518 The results should be interpreted as an Org mode list.  If a single scalar
13519 value is returned it will be converted into a list with only one element.
13520 @item @code{scalar}, @code{verbatim}
13521 The results should be interpreted literally---they will not be
13522 converted into a table.  The results will be inserted into the Org mode
13523 buffer as quoted text.  E.g., @code{:results value verbatim}.
13524 @item @code{file}
13525 The results will be interpreted as the path to a file, and will be inserted
13526 into the Org mode buffer as a file link.  E.g., @code{:results value file}.
13527 @item @code{raw}, @code{org}
13528 The results are interpreted as raw Org mode code and are inserted directly
13529 into the buffer.  If the results look like a table they will be aligned as
13530 such by Org mode.  E.g., @code{:results value raw}.
13531 @item @code{html}
13532 Results are assumed to be HTML and will be enclosed in a @code{BEGIN_HTML}
13533 block.  E.g., @code{:results value html}.
13534 @item @code{latex}
13535 Results assumed to be @LaTeX{} and are enclosed in a @code{BEGIN_LaTeX} block.
13536 E.g., @code{:results value latex}.
13537 @item @code{code}
13538 Result are assumed to be parsable code and are enclosed in a code block.
13539 E.g., @code{:results value code}.
13540 @item @code{pp}
13541 The result is converted to pretty-printed code and is enclosed in a code
13542 block.  This option currently supports Emacs Lisp, Python, and Ruby.  E.g.,
13543 @code{:results value pp}.
13544 @item @code{wrap}
13545 The result is wrapped in a RESULTS drawer.  This can be useful for
13546 inserting @code{raw} or @code{org} syntax results in such a way that their
13547 extent is known and they can be automatically removed or replaced.
13548 @end itemize
13550 @subsubheading Handling
13551 The following results options indicate what happens with the
13552 results once they are collected.
13554 @itemize @bullet
13555 @item @code{silent}
13556 The results will be echoed in the minibuffer but will not be inserted into
13557 the Org mode buffer.  E.g., @code{:results output silent}.
13558 @item @code{replace}
13559 The default value.  Any existing results will be removed, and the new results
13560 will be inserted into the Org mode buffer in their place.  E.g.,
13561 @code{:results output replace}.
13562 @item @code{append}
13563 If there are pre-existing results of the code block then the new results will
13564 be appended to the existing results.  Otherwise the new results will be
13565 inserted as with @code{replace}.
13566 @item @code{prepend}
13567 If there are pre-existing results of the code block then the new results will
13568 be prepended to the existing results.  Otherwise the new results will be
13569 inserted as with @code{replace}.
13570 @end itemize
13572 @node file, file-desc, results, Specific header arguments
13573 @subsubsection @code{:file}
13575 The header argument @code{:file} is used to specify an external file in which
13576 to save code block results.  After code block evaluation an Org mode style
13577 @code{[[file:]]} link (see @ref{Link format}) to the file will be inserted
13578 into the Org mode buffer.  Some languages including R, gnuplot, dot, and
13579 ditaa provide special handling of the @code{:file} header argument
13580 automatically wrapping the code block body in the boilerplate code required
13581 to save output to the specified file.  This is often useful for saving
13582 graphical output of a code block to the specified file.
13584 The argument to @code{:file} should be either a string specifying the path to
13585 a file, or a list of two strings in which case the first element of the list
13586 should be the path to a file and the second a description for the link.
13588 @node file-desc, dir, file, Specific header arguments
13589 @subsubsection @code{:file-desc}
13591 The value of the @code{:file-desc} header argument is used to provide a
13592 description for file code block results which are inserted as Org mode links
13593 (see @ref{Link format}).  If the @code{:file-desc} header argument is given
13594 with no value the link path will be placed in both the ``link'' and the
13595 ``description'' portion of the Org mode link.
13597 @node dir, exports, file-desc, Specific header arguments
13598 @subsubsection @code{:dir} and remote execution
13600 While the @code{:file} header argument can be used to specify the path to the
13601 output file, @code{:dir} specifies the default directory during code block
13602 execution.  If it is absent, then the directory associated with the current
13603 buffer is used.  In other words, supplying @code{:dir path} temporarily has
13604 the same effect as changing the current directory with @kbd{M-x cd path}, and
13605 then not supplying @code{:dir}.  Under the surface, @code{:dir} simply sets
13606 the value of the Emacs variable @code{default-directory}.
13608 When using @code{:dir}, you should supply a relative path for file output
13609 (e.g.@: @code{:file myfile.jpg} or @code{:file results/myfile.jpg}) in which
13610 case that path will be interpreted relative to the default directory.
13612 In other words, if you want your plot to go into a folder called @file{Work}
13613 in your home directory, you could use
13615 @example
13616 #+BEGIN_SRC R :file myplot.png :dir ~/Work
13617 matplot(matrix(rnorm(100), 10), type="l")
13618 #+END_SRC
13619 @end example
13621 @subsubheading Remote execution
13622 A directory on a remote machine can be specified using tramp file syntax, in
13623 which case the code will be evaluated on the remote machine.  An example is
13625 @example
13626 #+BEGIN_SRC R :file plot.png :dir /dand@@yakuba.princeton.edu:
13627 plot(1:10, main=system("hostname", intern=TRUE))
13628 #+END_SRC
13629 @end example
13631 Text results will be returned to the local Org mode buffer as usual, and file
13632 output will be created on the remote machine with relative paths interpreted
13633 relative to the remote directory.  An Org mode link to the remote file will be
13634 created.
13636 So, in the above example a plot will be created on the remote machine,
13637 and a link of the following form will be inserted in the org buffer:
13639 @example
13640 [[file:/scp:dand@@yakuba.princeton.edu:/home/dand/plot.png][plot.png]]
13641 @end example
13643 Most of this functionality follows immediately from the fact that @code{:dir}
13644 sets the value of the Emacs variable @code{default-directory}, thanks to
13645 tramp.  Those using XEmacs, or GNU Emacs prior to version 23 may need to
13646 install tramp separately in order for these features to work correctly.
13648 @subsubheading Further points
13650 @itemize @bullet
13651 @item
13652 If @code{:dir} is used in conjunction with @code{:session}, although it will
13653 determine the starting directory for a new session as expected, no attempt is
13654 currently made to alter the directory associated with an existing session.
13655 @item
13656 @code{:dir} should typically not be used to create files during export with
13657 @code{:exports results} or @code{:exports both}.  The reason is that, in order
13658 to retain portability of exported material between machines, during export
13659 links inserted into the buffer will @emph{not} be expanded against @code{default
13660 directory}.  Therefore, if @code{default-directory} is altered using
13661 @code{:dir}, it is probable that the file will be created in a location to
13662 which the link does not point.
13663 @end itemize
13665 @node exports, tangle, dir, Specific header arguments
13666 @subsubsection @code{:exports}
13668 The @code{:exports} header argument specifies what should be included in HTML
13669 or @LaTeX{} exports of the Org mode file.
13671 @itemize @bullet
13672 @item @code{code}
13673 The default.  The body of code is included into the exported file.  E.g.,
13674 @code{:exports code}.
13675 @item @code{results}
13676 The result of evaluating the code is included in the exported file.  E.g.,
13677 @code{:exports results}.
13678 @item @code{both}
13679 Both the code and results are included in the exported file.  E.g.,
13680 @code{:exports both}.
13681 @item @code{none}
13682 Nothing is included in the exported file.  E.g., @code{:exports none}.
13683 @end itemize
13685 @node tangle, mkdirp, exports, Specific header arguments
13686 @subsubsection @code{:tangle}
13688 The @code{:tangle} header argument specifies whether or not the code
13689 block should be included in tangled extraction of source code files.
13691 @itemize @bullet
13692 @item @code{tangle}
13693 The code block is exported to a source code file named after the full path
13694 (including the directory) and file name (w/o extension) of the Org mode file.
13695 E.g., @code{:tangle yes}.
13696 @item @code{no}
13697 The default.  The code block is not exported to a source code file.
13698 E.g., @code{:tangle no}.
13699 @item other
13700 Any other string passed to the @code{:tangle} header argument is interpreted
13701 as a path (directory and file name relative to the directory of the Org mode
13702 file) to which the block will be exported.  E.g., @code{:tangle path}.
13703 @end itemize
13705 @node mkdirp, comments, tangle, Specific header arguments
13706 @subsubsection @code{:mkdirp}
13708 The @code{:mkdirp} header argument can be used to create parent directories
13709 of tangled files when missing.  This can be set to @code{yes} to enable
13710 directory creation or to @code{no} to inhibit directory creation.
13712 @node comments, padline, mkdirp, Specific header arguments
13713 @subsubsection @code{:comments}
13714 By default code blocks are tangled to source-code files without any insertion
13715 of comments beyond those which may already exist in the body of the code
13716 block.  The @code{:comments} header argument can be set as follows to control
13717 the insertion of extra comments into the tangled code file.
13719 @itemize @bullet
13720 @item @code{no}
13721 The default.  No extra comments are inserted during tangling.
13722 @item @code{link}
13723 The code block is wrapped in comments which contain pointers back to the
13724 original Org file from which the code was tangled.
13725 @item @code{yes}
13726 A synonym for ``link'' to maintain backwards compatibility.
13727 @item @code{org}
13728 Include text from the Org mode file as a comment.
13730 The text is picked from the leading context of the tangled code and is
13731 limited by the nearest headline or source block as the case may be.
13732 @item @code{both}
13733 Turns on both the ``link'' and ``org'' comment options.
13734 @item @code{noweb}
13735 Turns on the ``link'' comment option, and additionally wraps expanded noweb
13736 references in the code block body in link comments.
13737 @end itemize
13739 @node padline, no-expand, comments, Specific header arguments
13740 @subsubsection @code{:padline}
13741 Control in insertion of padding lines around code block bodies in tangled
13742 code files.  The default value is @code{yes} which results in insertion of
13743 newlines before and after each tangled code block.  The following arguments
13744 are accepted.
13746 @itemize @bullet
13747 @item @code{yes}
13748 Insert newlines before and after each code block body in tangled code files.
13749 @item @code{no}
13750 Do not insert any newline padding in tangled output.
13751 @end itemize
13753 @node no-expand, session, padline, Specific header arguments
13754 @subsubsection @code{:no-expand}
13756 By default, code blocks are expanded with @code{org-babel-expand-src-block}
13757 during tangling.  This has the effect of assigning values to variables
13758 specified with @code{:var} (see @ref{var}), and of replacing ``noweb''
13759 references (see @ref{Noweb reference syntax}) with their targets.  The
13760 @code{:no-expand} header argument can be used to turn off this behavior.
13762 @node session, noweb, no-expand, Specific header arguments
13763 @subsubsection @code{:session}
13765 The @code{:session} header argument starts a session for an interpreted
13766 language where state is preserved.
13768 By default, a session is not started.
13770 A string passed to the @code{:session} header argument will give the session
13771 a name.  This makes it possible to run concurrent sessions for each
13772 interpreted language.
13774 @node noweb, noweb-ref, session, Specific header arguments
13775 @subsubsection @code{:noweb}
13777 The @code{:noweb} header argument controls expansion of ``noweb'' syntax
13778 references (see @ref{Noweb reference syntax}) when the code block is
13779 evaluated, tangled, or exported.  The @code{:noweb} header argument can have
13780 one of the five values: @code{no}, @code{yes}, @code{tangle}, or
13781 @code{no-export} @code{strip-export}.
13783 @itemize @bullet
13784 @item @code{no}
13785 The default.  ``Noweb'' syntax references in the body of the code block will
13786 not be expanded before the code block is evaluated, tangled or exported.
13787 @item @code{yes}
13788 ``Noweb'' syntax references in the body of the code block will be
13789 expanded before the code block is evaluated, tangled or exported.
13790 @item @code{tangle}
13791 ``Noweb'' syntax references in the body of the code block will be expanded
13792 before the code block is tangled.  However, ``noweb'' syntax references will
13793 not be expanded when the code block is evaluated or exported.
13794 @item @code{no-export}
13795 ``Noweb'' syntax references in the body of the code block will be expanded
13796 before the block is evaluated or tangled.  However, ``noweb'' syntax
13797 references will not be expanded when the code block is exported.
13798 @item @code{strip-export}
13799 ``Noweb'' syntax references in the body of the code block will be expanded
13800 before the block is evaluated or tangled.  However, ``noweb'' syntax
13801 references will not be removed when the code block is exported.
13802 @item @code{eval}
13803 ``Noweb'' syntax references in the body of the code block will only be
13804 expanded before the block is evaluated.
13805 @end itemize
13807 @subsubheading Noweb prefix lines
13808 Noweb insertions are now placed behind the line prefix of the
13809 @code{<<reference>>}.
13810 This behavior is illustrated in the following example.  Because the
13811 @code{<<example>>} noweb reference appears behind the SQL comment syntax,
13812 each line of the expanded noweb reference will be commented.
13814 This code block:
13816 @example
13817 -- <<example>>
13818 @end example
13821 expands to:
13823 @example
13824 -- this is the
13825 -- multi-line body of example
13826 @end example
13828 Note that noweb replacement text that does not contain any newlines will not
13829 be affected by this change, so it is still possible to use inline noweb
13830 references.
13832 @node noweb-ref, noweb-sep, noweb, Specific header arguments
13833 @subsubsection @code{:noweb-ref}
13834 When expanding ``noweb'' style references the bodies of all code block with
13835 @emph{either} a block name matching the reference name @emph{or} a
13836 @code{:noweb-ref} header argument matching the reference name will be
13837 concatenated together to form the replacement text.
13839 By setting this header argument at the sub-tree or file level, simple code
13840 block concatenation may be achieved.  For example, when tangling the
13841 following Org mode file, the bodies of code blocks will be concatenated into
13842 the resulting pure code file@footnote{(The example needs property inheritance
13843 to be turned on for the @code{noweb-ref} property, see @ref{Property
13844 inheritance}).}.
13846 @example
13847  #+BEGIN_SRC sh :tangle yes :noweb yes :shebang #!/bin/sh
13848    <<fullest-disk>>
13849  #+END_SRC
13850  * the mount point of the fullest disk
13851    :PROPERTIES:
13852    :noweb-ref: fullest-disk
13853    :END:
13855  ** query all mounted disks
13856  #+BEGIN_SRC sh
13857    df \
13858  #+END_SRC
13860  ** strip the header row
13861  #+BEGIN_SRC sh
13862    |sed '1d' \
13863  #+END_SRC
13865  ** sort by the percent full
13866  #+BEGIN_SRC sh
13867    |awk '@{print $5 " " $6@}'|sort -n |tail -1 \
13868  #+END_SRC
13870  ** extract the mount point
13871  #+BEGIN_SRC sh
13872    |awk '@{print $2@}'
13873  #+END_SRC
13874 @end example
13876 The @code{:noweb-sep} (see @ref{noweb-sep}) header argument holds the string
13877 used to separate accumulate noweb references like those above.  By default a
13878 newline is used.
13880 @node noweb-sep, cache, noweb-ref, Specific header arguments
13881 @subsubsection @code{:noweb-sep}
13883 The @code{:noweb-sep} header argument holds the string used to separate
13884 accumulate noweb references (see @ref{noweb-ref}).  By default a newline is
13885 used.
13887 @node cache, sep, noweb-sep, Specific header arguments
13888 @subsubsection @code{:cache}
13890 The @code{:cache} header argument controls the use of in-buffer caching of
13891 the results of evaluating code blocks.  It can be used to avoid re-evaluating
13892 unchanged code blocks.  Note that the @code{:cache} header argument will not
13893 attempt to cache results when the @code{:session} header argument is used,
13894 because the results of the code block execution may be stored in the session
13895 outside of the Org mode buffer.  The @code{:cache} header argument can have
13896 one of two values: @code{yes} or @code{no}.
13898 @itemize @bullet
13899 @item @code{no}
13900 The default.  No caching takes place, and the code block will be evaluated
13901 every time it is called.
13902 @item @code{yes}
13903 Every time the code block is run a SHA1 hash of the code and arguments
13904 passed to the block will be generated.  This hash is packed into the
13905 @code{#+RESULTS:} line and will be checked on subsequent
13906 executions of the code block.  If the code block has not
13907 changed since the last time it was evaluated, it will not be re-evaluated.
13908 @end itemize
13910 Code block caches notice if the value of a variable argument
13911 to the code block has changed.  If this is the case, the cache is
13912 invalidated and the code block is re-run.  In the following example,
13913 @code{caller} will not be re-run unless the results of @code{random} have
13914 changed since it was last run.
13916 @example
13917  #+NAME: random
13918  #+BEGIN_SRC R :cache yes
13919  runif(1)
13920  #+END_SRC
13922  #+RESULTS[a2a72cd647ad44515fab62e144796432793d68e1]: random
13923  0.4659510825295
13925  #+NAME: caller
13926  #+BEGIN_SRC emacs-lisp :var x=random :cache yes
13928  #+END_SRC
13930  #+RESULTS[bec9c8724e397d5df3b696502df3ed7892fc4f5f]: caller
13931  0.254227238707244
13932 @end example
13934 @node sep, hlines, cache, Specific header arguments
13935 @subsubsection @code{:sep}
13937 The @code{:sep} header argument can be used to control the delimiter used
13938 when writing tabular results out to files external to Org mode.  This is used
13939 either when opening tabular results of a code block by calling the
13940 @code{org-open-at-point} function bound to @kbd{C-c C-o} on the code block,
13941 or when writing code block results to an external file (see @ref{file})
13942 header argument.
13944 By default, when @code{:sep} is not specified output tables are tab
13945 delimited.
13947 @node hlines, colnames, sep, Specific header arguments
13948 @subsubsection @code{:hlines}
13950 Tables are frequently represented with one or more horizontal lines, or
13951 hlines.  The @code{:hlines} argument to a code block accepts the
13952 values @code{yes} or @code{no}, with a default value of @code{no}.
13954 @itemize @bullet
13955 @item @code{no}
13956 Strips horizontal lines from the input table.  In most languages this is the
13957 desired effect because an @code{hline} symbol is interpreted as an unbound
13958 variable and raises an error.  Setting @code{:hlines no} or relying on the
13959 default value yields the following results.
13961 @example
13962 #+TBLNAME: many-cols
13963 | a | b | c |
13964 |---+---+---|
13965 | d | e | f |
13966 |---+---+---|
13967 | g | h | i |
13969 #+NAME: echo-table
13970 #+BEGIN_SRC python :var tab=many-cols
13971   return tab
13972 #+END_SRC
13974 #+RESULTS: echo-table
13975 | a | b | c |
13976 | d | e | f |
13977 | g | h | i |
13978 @end example
13980 @item @code{yes}
13981 Leaves hlines in the table.  Setting @code{:hlines yes} has this effect.
13983 @example
13984 #+TBLNAME: many-cols
13985 | a | b | c |
13986 |---+---+---|
13987 | d | e | f |
13988 |---+---+---|
13989 | g | h | i |
13991 #+NAME: echo-table
13992 #+BEGIN_SRC python :var tab=many-cols :hlines yes
13993   return tab
13994 #+END_SRC
13996 #+RESULTS: echo-table
13997 | a | b | c |
13998 |---+---+---|
13999 | d | e | f |
14000 |---+---+---|
14001 | g | h | i |
14002 @end example
14003 @end itemize
14005 @node colnames, rownames, hlines, Specific header arguments
14006 @subsubsection @code{:colnames}
14008 The @code{:colnames} header argument accepts the values @code{yes},
14009 @code{no}, or @code{nil} for unassigned.  The default value is @code{nil}.
14010 Note that the behavior of the @code{:colnames} header argument may differ
14011 across languages.  For example Emacs Lisp code blocks ignore the
14012 @code{:colnames} header argument entirely given the ease with which tables
14013 with column names may be handled directly in Emacs Lisp.
14015 @itemize @bullet
14016 @item @code{nil}
14017 If an input table looks like it has column names
14018 (because its second row is an hline), then the column
14019 names will be removed from the table before
14020 processing, then reapplied to the results.
14022 @example
14023 #+TBLNAME: less-cols
14024 | a |
14025 |---|
14026 | b |
14027 | c |
14029 #+NAME: echo-table-again
14030 #+BEGIN_SRC python :var tab=less-cols
14031   return [[val + '*' for val in row] for row in tab]
14032 #+END_SRC
14034 #+RESULTS: echo-table-again
14035 | a  |
14036 |----|
14037 | b* |
14038 | c* |
14039 @end example
14041 Please note that column names are not removed before the table is indexed
14042 using variable indexing @xref{var, Indexable variable values}.
14044 @item @code{no}
14045 No column name pre-processing takes place
14047 @item @code{yes}
14048 Column names are removed and reapplied as with @code{nil} even if the table
14049 does not ``look like'' it has column names (i.e.@: the second row is not an
14050 hline)
14051 @end itemize
14053 @node rownames, shebang, colnames, Specific header arguments
14054 @subsubsection @code{:rownames}
14056 The @code{:rownames} header argument can take on the values @code{yes}
14057 or @code{no}, with a default value of @code{no}.
14059 @itemize @bullet
14060 @item @code{no}
14061 No row name pre-processing will take place.
14063 @item @code{yes}
14064 The first column of the table is removed from the table before processing,
14065 and is then reapplied to the results.
14067 @example
14068 #+TBLNAME: with-rownames
14069 | one | 1 | 2 | 3 | 4 |  5 |
14070 | two | 6 | 7 | 8 | 9 | 10 |
14072 #+NAME: echo-table-once-again
14073 #+BEGIN_SRC python :var tab=with-rownames :rownames yes
14074   return [[val + 10 for val in row] for row in tab]
14075 #+END_SRC
14077 #+RESULTS: echo-table-once-again
14078 | one | 11 | 12 | 13 | 14 | 15 |
14079 | two | 16 | 17 | 18 | 19 | 20 |
14080 @end example
14082 Please note that row names are not removed before the table is indexed using
14083 variable indexing @xref{var, Indexable variable values}.
14085 @end itemize
14087 @node shebang, eval, rownames, Specific header arguments
14088 @subsubsection @code{:shebang}
14090 Setting the @code{:shebang} header argument to a string value
14091 (e.g.@: @code{:shebang "#!/bin/bash"}) causes the string to be inserted as the
14092 first line of any tangled file holding the code block, and the file
14093 permissions of the tangled file are set to make it executable.
14095 @node eval, wrap, shebang, Specific header arguments
14096 @subsubsection @code{:eval}
14097 The @code{:eval} header argument can be used to limit the evaluation of
14098 specific code blocks.  The @code{:eval} header argument can be useful for
14099 protecting against the evaluation of dangerous code blocks or to ensure that
14100 evaluation will require a query regardless of the value of the
14101 @code{org-confirm-babel-evaluate} variable.  The possible values of
14102 @code{:eval} and their effects are shown below.
14104 @table @code
14105 @item never or no
14106 The code block will not be evaluated under any circumstances.
14107 @item query
14108 Evaluation of the code block will require a query.
14109 @item never-export or no-export
14110 The code block will not be evaluated during export but may still be called
14111 interactively.
14112 @item query-export
14113 Evaluation of the code block during export will require a query.
14114 @end table
14116 If this header argument is not set then evaluation is determined by the value
14117 of the @code{org-confirm-babel-evaluate} variable see @ref{Code evaluation
14118 security}.
14120 @node wrap,  , eval, Specific header arguments
14121 @subsubsection @code{:wrap}
14122 The @code{:wrap} header argument is used to mark the results of source block
14123 evaluation.  The header argument can be passed a string that will be appended
14124 to @code{#+BEGIN_} and @code{#+END_}, which will then be used to wrap the
14125 results.  If not string is specified then the results will be wrapped in a
14126 @code{#+BEGIN/END_RESULTS} block.
14128 @node Results of evaluation, Noweb reference syntax, Header arguments, Working With Source Code
14129 @section Results of evaluation
14130 @cindex code block, results of evaluation
14131 @cindex source code, results of evaluation
14133 The way in which results are handled depends on whether a session is invoked,
14134 as well as on whether @code{:results value} or @code{:results output} is
14135 used.  The following table shows the table possibilities.  For a full listing
14136 of the possible results header arguments see @ref{results}.
14138 @multitable @columnfractions 0.26 0.33 0.41
14139 @item @tab @b{Non-session} @tab @b{Session}
14140 @item @code{:results value} @tab value of last expression @tab value of last expression
14141 @item @code{:results output} @tab contents of STDOUT @tab concatenation of interpreter output
14142 @end multitable
14144 Note: With @code{:results value}, the result in both @code{:session} and
14145 non-session is returned to Org mode as a table (a one- or two-dimensional
14146 vector of strings or numbers) when appropriate.
14148 @subsection Non-session
14149 @subsubsection @code{:results value}
14150 This is the default.  Internally, the value is obtained by wrapping the code
14151 in a function definition in the external language, and evaluating that
14152 function.  Therefore, code should be written as if it were the body of such a
14153 function.  In particular, note that Python does not automatically return a
14154 value from a function unless a @code{return} statement is present, and so a
14155 @samp{return} statement will usually be required in Python.
14157 This is the only one of the four evaluation contexts in which the code is
14158 automatically wrapped in a function definition.
14160 @subsubsection @code{:results output}
14161 The code is passed to the interpreter as an external process, and the
14162 contents of the standard output stream are returned as text.  (In certain
14163 languages this also contains the error output stream; this is an area for
14164 future work.)
14166 @subsection Session
14167 @subsubsection @code{:results value}
14168 The code is passed to an interpreter running as an interactive Emacs inferior
14169 process.  Only languages which provide tools for interactive evaluation of
14170 code have session support, so some language (e.g., C and ditaa) do not
14171 support the @code{:session} header argument, and in other languages (e.g.,
14172 Python and Haskell) which have limitations on the code which may be entered
14173 into interactive sessions, those limitations apply to the code in code blocks
14174 using the @code{:session} header argument as well.
14176 Unless the @code{:results output} option is supplied (see below) the result
14177 returned is the result of the last evaluation performed by the
14178 interpreter.  (This is obtained in a language-specific manner: the value of
14179 the variable @code{_} in Python and Ruby, and the value of @code{.Last.value}
14180 in R).
14182 @subsubsection @code{:results output}
14183 The code is passed to the interpreter running as an interactive Emacs
14184 inferior process.  The result returned is the concatenation of the sequence of
14185 (text) output from the interactive interpreter.  Notice that this is not
14186 necessarily the same as what would be sent to @code{STDOUT} if the same code
14187 were passed to a non-interactive interpreter running as an external
14188 process.  For example, compare the following two blocks:
14190 @example
14191 #+BEGIN_SRC python :results output
14192  print "hello"
14194  print "bye"
14195 #+END_SRC
14197 #+RESULTS:
14198 : hello
14199 : bye
14200 @end example
14202 In non-session mode, the `2' is not printed and does not appear.
14203 @example
14204 #+BEGIN_SRC python :results output :session
14205  print "hello"
14207  print "bye"
14208 #+END_SRC
14210 #+RESULTS:
14211 : hello
14212 : 2
14213 : bye
14214 @end example
14216 But in @code{:session} mode, the interactive interpreter receives input `2'
14217 and prints out its value, `2'.  (Indeed, the other print statements are
14218 unnecessary here).
14220 @node Noweb reference syntax, Key bindings and useful functions, Results of evaluation, Working With Source Code
14221 @section Noweb reference syntax
14222 @cindex code block, noweb reference
14223 @cindex syntax, noweb
14224 @cindex source code, noweb reference
14226 The ``noweb'' (see @uref{http://www.cs.tufts.edu/~nr/noweb/}) Literate
14227 Programming system allows named blocks of code to be referenced by using the
14228 familiar Noweb syntax:
14230 @example
14231 <<code-block-name>>
14232 @end example
14234 When a code block is tangled or evaluated, whether or not ``noweb''
14235 references are expanded depends upon the value of the @code{:noweb} header
14236 argument.  If @code{:noweb yes}, then a Noweb reference is expanded before
14237 evaluation.  If @code{:noweb no}, the default, then the reference is not
14238 expanded before evaluation.  See the @ref{noweb-ref} header argument for
14239 a more flexible way to resolve noweb references.
14241 It is possible to include the @emph{results} of a code block rather than the
14242 body.  This is done by appending parenthesis to the code block name which may
14243 optionally contain arguments to the code block as shown below.
14245 @example
14246 <<code-block-name(optional arguments)>>
14247 @end example
14249 Note: the default value, @code{:noweb no}, was chosen to ensure that
14250 correct code is not broken in a language, such as Ruby, where
14251 @code{<<arg>>} is a syntactically valid construct.  If @code{<<arg>>} is not
14252 syntactically valid in languages that you use, then please consider setting
14253 the default value.
14255 Note: if noweb tangling is slow in large Org mode files consider setting the
14256 @code{*org-babel-use-quick-and-dirty-noweb-expansion*} variable to true.
14257 This will result in faster noweb reference resolution at the expense of not
14258 correctly resolving inherited values of the @code{:noweb-ref} header
14259 argument.
14261 @node Key bindings and useful functions, Batch execution, Noweb reference syntax, Working With Source Code
14262 @section Key bindings and useful functions
14263 @cindex code block, key bindings
14265 Many common Org mode key sequences are re-bound depending on
14266 the context.
14268 Within a code block, the following key bindings
14269 are active:
14271 @multitable @columnfractions 0.25 0.75
14272 @kindex C-c C-c
14273 @item @kbd{C-c C-c} @tab @code{org-babel-execute-src-block}
14274 @kindex C-c C-o
14275 @item @kbd{C-c C-o} @tab @code{org-babel-open-src-block-result}
14276 @kindex C-up
14277 @item @kbd{C-@key{up}}    @tab @code{org-babel-load-in-session}
14278 @kindex M-down
14279 @item @kbd{M-@key{down}}  @tab @code{org-babel-pop-to-session}
14280 @end multitable
14282 In an Org mode buffer, the following key bindings are active:
14284 @multitable @columnfractions 0.45 0.55
14285 @kindex C-c C-v p
14286 @kindex C-c C-v C-p
14287 @item @kbd{C-c C-v p} @ @ @r{or} @ @ @kbd{C-c C-v C-p} @tab @code{org-babel-previous-src-block}
14288 @kindex C-c C-v n
14289 @kindex C-c C-v C-n
14290 @item @kbd{C-c C-v n} @ @ @r{or} @ @ @kbd{C-c C-v C-n} @tab @code{org-babel-next-src-block}
14291 @kindex C-c C-v e
14292 @kindex C-c C-v C-e
14293 @item @kbd{C-c C-v e} @ @ @r{or} @ @ @kbd{C-c C-v C-e} @tab @code{org-babel-execute-maybe}
14294 @kindex C-c C-v o
14295 @kindex C-c C-v C-o
14296 @item @kbd{C-c C-v o} @ @ @r{or} @ @ @kbd{C-c C-v C-o} @tab @code{org-babel-open-src-block-result}
14297 @kindex C-c C-v v
14298 @kindex C-c C-v C-v
14299 @item @kbd{C-c C-v v} @ @ @r{or} @ @ @kbd{C-c C-v C-v} @tab @code{org-babel-expand-src-block}
14300 @kindex C-c C-v u
14301 @kindex C-c C-v C-u
14302 @item @kbd{C-c C-v u} @ @ @r{or} @ @ @kbd{C-c C-v C-u} @tab @code{org-babel-goto-src-block-head}
14303 @kindex C-c C-v g
14304 @kindex C-c C-v C-g
14305 @item @kbd{C-c C-v g} @ @ @r{or} @ @ @kbd{C-c C-v C-g} @tab @code{org-babel-goto-named-src-block}
14306 @kindex C-c C-v r
14307 @kindex C-c C-v C-r
14308 @item @kbd{C-c C-v r} @ @ @r{or} @ @ @kbd{C-c C-v C-r} @tab @code{org-babel-goto-named-result}
14309 @kindex C-c C-v b
14310 @kindex C-c C-v C-b
14311 @item @kbd{C-c C-v b} @ @ @r{or} @ @ @kbd{C-c C-v C-b} @tab @code{org-babel-execute-buffer}
14312 @kindex C-c C-v s
14313 @kindex C-c C-v C-s
14314 @item @kbd{C-c C-v s} @ @ @r{or} @ @ @kbd{C-c C-v C-s} @tab @code{org-babel-execute-subtree}
14315 @kindex C-c C-v d
14316 @kindex C-c C-v C-d
14317 @item @kbd{C-c C-v d} @ @ @r{or} @ @ @kbd{C-c C-v C-d} @tab @code{org-babel-demarcate-block}
14318 @kindex C-c C-v t
14319 @kindex C-c C-v C-t
14320 @item @kbd{C-c C-v t} @ @ @r{or} @ @ @kbd{C-c C-v C-t} @tab @code{org-babel-tangle}
14321 @kindex C-c C-v f
14322 @kindex C-c C-v C-f
14323 @item @kbd{C-c C-v f} @ @ @r{or} @ @ @kbd{C-c C-v C-f} @tab @code{org-babel-tangle-file}
14324 @kindex C-c C-v c
14325 @kindex C-c C-v C-c
14326 @item @kbd{C-c C-v c} @ @ @r{or} @ @ @kbd{C-c C-v C-c} @tab @code{org-babel-check-src-block}
14327 @kindex C-c C-v j
14328 @kindex C-c C-v C-j
14329 @item @kbd{C-c C-v j} @ @ @r{or} @ @ @kbd{C-c C-v C-j} @tab @code{org-babel-insert-header-arg}
14330 @kindex C-c C-v l
14331 @kindex C-c C-v C-l
14332 @item @kbd{C-c C-v l} @ @ @r{or} @ @ @kbd{C-c C-v C-l} @tab @code{org-babel-load-in-session}
14333 @kindex C-c C-v i
14334 @kindex C-c C-v C-i
14335 @item @kbd{C-c C-v i} @ @ @r{or} @ @ @kbd{C-c C-v C-i} @tab @code{org-babel-lob-ingest}
14336 @kindex C-c C-v I
14337 @kindex C-c C-v C-I
14338 @item @kbd{C-c C-v I} @ @ @r{or} @ @ @kbd{C-c C-v C-I} @tab @code{org-babel-view-src-block-info}
14339 @kindex C-c C-v z
14340 @kindex C-c C-v C-z
14341 @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}
14342 @kindex C-c C-v a
14343 @kindex C-c C-v C-a
14344 @item @kbd{C-c C-v a} @ @ @r{or} @ @ @kbd{C-c C-v C-a} @tab @code{org-babel-sha1-hash}
14345 @kindex C-c C-v h
14346 @kindex C-c C-v C-h
14347 @item @kbd{C-c C-v h} @ @ @r{or} @ @ @kbd{C-c C-v C-h} @tab @code{org-babel-describe-bindings}
14348 @kindex C-c C-v x
14349 @kindex C-c C-v C-x
14350 @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}
14351 @end multitable
14353 @c When possible these keybindings were extended to work when the control key is
14354 @c kept pressed, resulting in the following additional keybindings.
14356 @c @multitable @columnfractions 0.25 0.75
14357 @c @item @kbd{C-c C-v C-a} @tab @code{org-babel-sha1-hash}
14358 @c @item @kbd{C-c C-v C-b} @tab @code{org-babel-execute-buffer}
14359 @c @item @kbd{C-c C-v C-f} @tab @code{org-babel-tangle-file}
14360 @c @item @kbd{C-c C-v C-l} @tab @code{org-babel-lob-ingest}
14361 @c @item @kbd{C-c C-v C-p} @tab @code{org-babel-expand-src-block}
14362 @c @item @kbd{C-c C-v C-s} @tab @code{org-babel-execute-subtree}
14363 @c @item @kbd{C-c C-v C-t} @tab @code{org-babel-tangle}
14364 @c @item @kbd{C-c C-v C-z} @tab @code{org-babel-switch-to-session}
14365 @c @end multitable
14367 @node Batch execution,  , Key bindings and useful functions, Working With Source Code
14368 @section Batch execution
14369 @cindex code block, batch execution
14370 @cindex source code, batch execution
14372 It is possible to call functions from the command line.  This shell
14373 script calls @code{org-babel-tangle} on every one of its arguments.
14375 Be sure to adjust the paths to fit your system.
14377 @example
14378 #!/bin/sh
14379 # -*- mode: shell-script -*-
14381 # tangle files with org-mode
14383 DIR=`pwd`
14384 FILES=""
14385 ORGINSTALL="~/src/org/lisp/org-install.el"
14387 # wrap each argument in the code required to call tangle on it
14388 for i in $@@; do
14389     FILES="$FILES \"$i\""
14390 done
14392 emacs -Q --batch -l $ORGINSTALL \
14393 --eval "(progn
14394 (add-to-list 'load-path (expand-file-name \"~/src/org/lisp/\"))
14395 (add-to-list 'load-path (expand-file-name \"~/src/org/contrib/lisp/\"))
14396 (require 'org)(require 'org-exp)(require 'ob)(require 'ob-tangle)
14397 (mapc (lambda (file)
14398        (find-file (expand-file-name file \"$DIR\"))
14399        (org-babel-tangle)
14400        (kill-buffer)) '($FILES)))" 2>&1 |grep tangled
14401 @end example
14403 @node Miscellaneous, Hacking, Working With Source Code, Top
14404 @chapter Miscellaneous
14406 @menu
14407 * Completion::                  M-TAB knows what you need
14408 * Easy Templates::              Quick insertion of structural elements
14409 * Speed keys::                  Electric commands at the beginning of a headline
14410 * Code evaluation security::    Org mode files evaluate inline code
14411 * Customization::               Adapting Org to your taste
14412 * In-buffer settings::          Overview of the #+KEYWORDS
14413 * The very busy C-c C-c key::   When in doubt, press C-c C-c
14414 * Clean view::                  Getting rid of leading stars in the outline
14415 * TTY keys::                    Using Org on a tty
14416 * Interaction::                 Other Emacs packages
14417 * org-crypt.el::                Encrypting Org files
14418 @end menu
14421 @node Completion, Easy Templates, Miscellaneous, Miscellaneous
14422 @section Completion
14423 @cindex completion, of @TeX{} symbols
14424 @cindex completion, of TODO keywords
14425 @cindex completion, of dictionary words
14426 @cindex completion, of option keywords
14427 @cindex completion, of tags
14428 @cindex completion, of property keys
14429 @cindex completion, of link abbreviations
14430 @cindex @TeX{} symbol completion
14431 @cindex TODO keywords completion
14432 @cindex dictionary word completion
14433 @cindex option keyword completion
14434 @cindex tag completion
14435 @cindex link abbreviations, completion of
14437 Emacs would not be Emacs without completion, and Org mode uses it whenever it
14438 makes sense.  If you prefer an @i{iswitchb}- or @i{ido}-like interface for
14439 some of the completion prompts, you can specify your preference by setting at
14440 most one of the variables @code{org-completion-use-iswitchb}
14441 @code{org-completion-use-ido}.
14443 Org supports in-buffer completion.  This type of completion does
14444 not make use of the minibuffer.  You simply type a few letters into
14445 the buffer and use the key to complete text right there.
14447 @table @kbd
14448 @kindex M-@key{TAB}
14449 @item M-@key{TAB}
14450 Complete word at point
14451 @itemize @bullet
14452 @item
14453 At the beginning of a headline, complete TODO keywords.
14454 @item
14455 After @samp{\}, complete @TeX{} symbols supported by the exporter.
14456 @item
14457 After @samp{*}, complete headlines in the current buffer so that they
14458 can be used in search links like @samp{[[*find this headline]]}.
14459 @item
14460 After @samp{:} in a headline, complete tags.  The list of tags is taken
14461 from the variable @code{org-tag-alist} (possibly set through the
14462 @samp{#+TAGS} in-buffer option, @pxref{Setting tags}), or it is created
14463 dynamically from all tags used in the current buffer.
14464 @item
14465 After @samp{:} and not in a headline, complete property keys.  The list
14466 of keys is constructed dynamically from all keys used in the current
14467 buffer.
14468 @item
14469 After @samp{[}, complete link abbreviations (@pxref{Link abbreviations}).
14470 @item
14471 After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
14472 @samp{OPTIONS} which set file-specific options for Org mode.  When the
14473 option keyword is already complete, pressing @kbd{M-@key{TAB}} again
14474 will insert example settings for this keyword.
14475 @item
14476 In the line after @samp{#+STARTUP: }, complete startup keywords,
14477 i.e.@: valid keys for this line.
14478 @item
14479 Elsewhere, complete dictionary words using Ispell.
14480 @end itemize
14481 @end table
14483 @node Easy Templates, Speed keys, Completion, Miscellaneous
14484 @section Easy Templates
14485 @cindex template insertion
14486 @cindex insertion, of templates
14488 Org mode supports insertion of empty structural elements (like
14489 @code{#+BEGIN_SRC} and @code{#+END_SRC} pairs) with just a few key
14490 strokes.  This is achieved through a native template expansion mechanism.
14491 Note that Emacs has several other template mechanisms which could be used in
14492 a similar way, for example @file{yasnippet}.
14494 To insert a structural element, type a @samp{<}, followed by a template
14495 selector and @kbd{@key{TAB}}.  Completion takes effect only when the above
14496 keystrokes are typed on a line by itself.
14498 The following template selectors are currently supported.
14500 @multitable @columnfractions 0.1 0.9
14501 @item @kbd{s} @tab @code{#+BEGIN_SRC     ... #+END_SRC}
14502 @item @kbd{e} @tab @code{#+BEGIN_EXAMPLE ... #+END_EXAMPLE}
14503 @item @kbd{q} @tab @code{#+BEGIN_QUOTE   ... #+END_QUOTE}
14504 @item @kbd{v} @tab @code{#+BEGIN_VERSE   ... #+END_VERSE}
14505 @item @kbd{c} @tab @code{#+BEGIN_CENTER  ... #+END_CENTER}
14506 @item @kbd{l} @tab @code{#+BEGIN_LaTeX   ... #+END_LaTeX}
14507 @item @kbd{L} @tab @code{#+LaTeX:}
14508 @item @kbd{h} @tab @code{#+BEGIN_HTML    ... #+END_HTML}
14509 @item @kbd{H} @tab @code{#+HTML:}
14510 @item @kbd{a} @tab @code{#+BEGIN_ASCII   ... #+END_ASCII}
14511 @item @kbd{A} @tab @code{#+ASCII:}
14512 @item @kbd{i} @tab @code{#+INDEX:} line
14513 @item @kbd{I} @tab @code{#+INCLUDE:} line
14514 @end multitable
14516 For example, on an empty line, typing "<e" and then pressing TAB, will expand
14517 into a complete EXAMPLE template.
14519 You can install additional templates by customizing the variable
14520 @code{org-structure-template-alist}.  See the docstring of the variable for
14521 additional details.
14523 @node Speed keys, Code evaluation security, Easy Templates, Miscellaneous
14524 @section Speed keys
14525 @cindex speed keys
14526 @vindex org-use-speed-commands
14527 @vindex org-speed-commands-user
14529 Single keys can be made to execute commands when the cursor is at the
14530 beginning of a headline, i.e.@: before the first star.  Configure the variable
14531 @code{org-use-speed-commands} to activate this feature.  There is a
14532 pre-defined list of commands, and you can add more such commands using the
14533 variable @code{org-speed-commands-user}.  Speed keys do not only speed up
14534 navigation and other commands, but they also provide an alternative way to
14535 execute commands bound to keys that are not or not easily available on a TTY,
14536 or on a small mobile device with a limited keyboard.
14538 To see which commands are available, activate the feature and press @kbd{?}
14539 with the cursor at the beginning of a headline.
14541 @node Code evaluation security, Customization, Speed keys, Miscellaneous
14542 @section Code evaluation and security issues
14544 Org provides tools to work with the code snippets, including evaluating them.
14546 Running code on your machine always comes with a security risk.  Badly
14547 written or malicious code can be executed on purpose or by accident.  Org has
14548 default settings which will only evaluate such code if you give explicit
14549 permission to do so, and as a casual user of these features you should leave
14550 these precautions intact.
14552 For people who regularly work with such code, the confirmation prompts can
14553 become annoying, and you might want to turn them off.  This can be done, but
14554 you must be aware of the risks that are involved.
14556 Code evaluation can happen under the following circumstances:
14558 @table @i
14559 @item Source code blocks
14560 Source code blocks can be evaluated during export, or when pressing @kbd{C-c
14561 C-c} in the block.  The most important thing to realize here is that Org mode
14562 files which contain code snippets are, in a certain sense, like executable
14563 files.  So you should accept them and load them into Emacs only from trusted
14564 sources---just like you would do with a program you install on your computer.
14566 Make sure you know what you are doing before customizing the variables
14567 which take off the default security brakes.
14569 @defopt org-confirm-babel-evaluate
14570 When t (the default), the user is asked before every code block evaluation.
14571 When nil, the user is not asked.  When set to a function, it is called with
14572 two arguments (language and body of the code block) and should return t to
14573 ask and nil not to ask.
14574 @end defopt
14576 For example, here is how to execute "ditaa" code (which is considered safe)
14577 without asking:
14578 @example
14579 (defun my-org-confirm-babel-evaluate (lang body)
14580   (not (string= lang "ditaa")))  ; don't ask for ditaa
14581 (setq org-confirm-babel-evaluate 'my-org-confirm-babel-evaluate)
14582 @end example
14584 @item Following @code{shell} and @code{elisp} links
14585 Org has two link types that can directly evaluate code (@pxref{External
14586 links}).  These links can be problematic because the code to be evaluated is
14587 not visible.
14589 @defopt org-confirm-shell-link-function
14590 Function to queries user about shell link execution.
14591 @end defopt
14592 @defopt org-confirm-elisp-link-function
14593 Functions to query user for Emacs Lisp link execution.
14594 @end defopt
14596 @item Formulas in tables
14597 Formulas in tables (@pxref{The spreadsheet}) are code that is evaluated
14598 either by the @i{calc} interpreter, or by the @i{Emacs Lisp} interpreter.
14599 @end table
14601 @node Customization, In-buffer settings, Code evaluation security, Miscellaneous
14602 @section Customization
14603 @cindex customization
14604 @cindex options, for customization
14605 @cindex variables, for customization
14607 There are more than 500 variables that can be used to customize
14608 Org.  For the sake of compactness of the manual, I am not
14609 describing the variables here.  A structured overview of customization
14610 variables is available with @kbd{M-x org-customize}.  Or select
14611 @code{Browse Org Group} from the @code{Org->Customization} menu.  Many
14612 settings can also be activated on a per-file basis, by putting special
14613 lines into the buffer (@pxref{In-buffer settings}).
14615 @node In-buffer settings, The very busy C-c C-c key, Customization, Miscellaneous
14616 @section Summary of in-buffer settings
14617 @cindex in-buffer settings
14618 @cindex special keywords
14620 Org mode uses special lines in the buffer to define settings on a
14621 per-file basis.  These lines start with a @samp{#+} followed by a
14622 keyword, a colon, and then individual words defining a setting.  Several
14623 setting words can be in the same line, but you can also have multiple
14624 lines for the keyword.  While these settings are described throughout
14625 the manual, here is a summary.  After changing any of those lines in the
14626 buffer, press @kbd{C-c C-c} with the cursor still in the line to
14627 activate the changes immediately.  Otherwise they become effective only
14628 when the file is visited again in a new Emacs session.
14630 @vindex org-archive-location
14631 @table @kbd
14632 @item #+ARCHIVE: %s_done::
14633 This line sets the archive location for the agenda file.  It applies for
14634 all subsequent lines until the next @samp{#+ARCHIVE} line, or the end
14635 of the file.  The first such line also applies to any entries before it.
14636 The corresponding variable is @code{org-archive-location}.
14637 @item #+CATEGORY:
14638 This line sets the category for the agenda file.  The category applies
14639 for all subsequent lines until the next @samp{#+CATEGORY} line, or the
14640 end of the file.  The first such line also applies to any entries before it.
14641 @item #+COLUMNS: %25ITEM .....
14642 @cindex property, COLUMNS
14643 Set the default format for columns view.  This format applies when
14644 columns view is invoked in locations where no @code{COLUMNS} property
14645 applies.
14646 @item #+CONSTANTS: name1=value1 ...
14647 @vindex org-table-formula-constants
14648 @vindex org-table-formula
14649 Set file-local values for constants to be used in table formulas.  This
14650 line sets the local variable @code{org-table-formula-constants-local}.
14651 The global version of this variable is
14652 @code{org-table-formula-constants}.
14653 @item #+FILETAGS: :tag1:tag2:tag3:
14654 Set tags that can be inherited by any entry in the file, including the
14655 top-level entries.
14656 @item #+DRAWERS: NAME1 .....
14657 @vindex org-drawers
14658 Set the file-local set of additional drawers.  The corresponding global
14659 variable is @code{org-drawers}.
14660 @item #+LINK:  linkword replace
14661 @vindex org-link-abbrev-alist
14662 These lines (several are allowed) specify link abbreviations.
14663 @xref{Link abbreviations}.  The corresponding variable is
14664 @code{org-link-abbrev-alist}.
14665 @item #+PRIORITIES: highest lowest default
14666 @vindex org-highest-priority
14667 @vindex org-lowest-priority
14668 @vindex org-default-priority
14669 This line sets the limits and the default for the priorities.  All three
14670 must be either letters A-Z or numbers 0-9.  The highest priority must
14671 have a lower ASCII number than the lowest priority.
14672 @item #+PROPERTY: Property_Name Value
14673 This line sets a default inheritance value for entries in the current
14674 buffer, most useful for specifying the allowed values of a property.
14675 @cindex #+SETUPFILE
14676 @item #+SETUPFILE: file
14677 This line defines a file that holds more in-buffer setup.  Normally this is
14678 entirely ignored.  Only when the buffer is parsed for option-setting lines
14679 (i.e.@: when starting Org mode for a file, when pressing @kbd{C-c C-c} in a
14680 settings line, or when exporting), then the contents of this file are parsed
14681 as if they had been included in the buffer.  In particular, the file can be
14682 any other Org mode file with internal setup.  You can visit the file the
14683 cursor is in the line with @kbd{C-c '}.
14684 @item #+STARTUP:
14685 @cindex #+STARTUP:
14686 This line sets options to be used at startup of Org mode, when an
14687 Org file is being visited.
14689 The first set of options deals with the initial visibility of the outline
14690 tree.  The corresponding variable for global default settings is
14691 @code{org-startup-folded}, with a default value @code{t}, which means
14692 @code{overview}.
14693 @vindex org-startup-folded
14694 @cindex @code{overview}, STARTUP keyword
14695 @cindex @code{content}, STARTUP keyword
14696 @cindex @code{showall}, STARTUP keyword
14697 @cindex @code{showeverything}, STARTUP keyword
14698 @example
14699 overview         @r{top-level headlines only}
14700 content          @r{all headlines}
14701 showall          @r{no folding of any entries}
14702 showeverything   @r{show even drawer contents}
14703 @end example
14705 @vindex org-startup-indented
14706 @cindex @code{indent}, STARTUP keyword
14707 @cindex @code{noindent}, STARTUP keyword
14708 Dynamic virtual indentation is controlled by the variable
14709 @code{org-startup-indented}@footnote{Emacs 23 and Org mode 6.29 are required}
14710 @example
14711 indent     @r{start with @code{org-indent-mode} turned on}
14712 noindent   @r{start with @code{org-indent-mode} turned off}
14713 @end example
14715 @vindex org-startup-align-all-tables
14716 Then there are options for aligning tables upon visiting a file.  This
14717 is useful in files containing narrowed table columns.  The corresponding
14718 variable is @code{org-startup-align-all-tables}, with a default value
14719 @code{nil}.
14720 @cindex @code{align}, STARTUP keyword
14721 @cindex @code{noalign}, STARTUP keyword
14722 @example
14723 align      @r{align all tables}
14724 noalign    @r{don't align tables on startup}
14725 @end example
14727 @vindex org-startup-with-inline-images
14728 When visiting a file, inline images can be automatically displayed.  The
14729 corresponding variable is @code{org-startup-with-inline-images}, with a
14730 default value @code{nil} to avoid delays when visiting a file.
14731 @cindex @code{inlineimages}, STARTUP keyword
14732 @cindex @code{noinlineimages}, STARTUP keyword
14733 @example
14734 inlineimages   @r{show inline images}
14735 noinlineimages @r{don't show inline images on startup}
14736 @end example
14738 @vindex org-log-done
14739 @vindex org-log-note-clock-out
14740 @vindex org-log-repeat
14741 Logging the closing and reopening of TODO items and clock intervals can be
14742 configured using these options (see variables @code{org-log-done},
14743 @code{org-log-note-clock-out} and @code{org-log-repeat})
14744 @cindex @code{logdone}, STARTUP keyword
14745 @cindex @code{lognotedone}, STARTUP keyword
14746 @cindex @code{nologdone}, STARTUP keyword
14747 @cindex @code{lognoteclock-out}, STARTUP keyword
14748 @cindex @code{nolognoteclock-out}, STARTUP keyword
14749 @cindex @code{logrepeat}, STARTUP keyword
14750 @cindex @code{lognoterepeat}, STARTUP keyword
14751 @cindex @code{nologrepeat}, STARTUP keyword
14752 @cindex @code{logreschedule}, STARTUP keyword
14753 @cindex @code{lognotereschedule}, STARTUP keyword
14754 @cindex @code{nologreschedule}, STARTUP keyword
14755 @cindex @code{logredeadline}, STARTUP keyword
14756 @cindex @code{lognoteredeadline}, STARTUP keyword
14757 @cindex @code{nologredeadline}, STARTUP keyword
14758 @cindex @code{logrefile}, STARTUP keyword
14759 @cindex @code{lognoterefile}, STARTUP keyword
14760 @cindex @code{nologrefile}, STARTUP keyword
14761 @example
14762 logdone            @r{record a timestamp when an item is marked DONE}
14763 lognotedone        @r{record timestamp and a note when DONE}
14764 nologdone          @r{don't record when items are marked DONE}
14765 logrepeat          @r{record a time when reinstating a repeating item}
14766 lognoterepeat      @r{record a note when reinstating a repeating item}
14767 nologrepeat        @r{do not record when reinstating repeating item}
14768 lognoteclock-out   @r{record a note when clocking out}
14769 nolognoteclock-out @r{don't record a note when clocking out}
14770 logreschedule      @r{record a timestamp when scheduling time changes}
14771 lognotereschedule  @r{record a note when scheduling time changes}
14772 nologreschedule    @r{do not record when a scheduling date changes}
14773 logredeadline      @r{record a timestamp when deadline changes}
14774 lognoteredeadline  @r{record a note when deadline changes}
14775 nologredeadline    @r{do not record when a deadline date changes}
14776 logrefile          @r{record a timestamp when refiling}
14777 lognoterefile      @r{record a note when refiling}
14778 nologrefile        @r{do not record when refiling}
14779 @end example
14780 @vindex org-hide-leading-stars
14781 @vindex org-odd-levels-only
14782 Here are the options for hiding leading stars in outline headings, and for
14783 indenting outlines.  The corresponding variables are
14784 @code{org-hide-leading-stars} and @code{org-odd-levels-only}, both with a
14785 default setting @code{nil} (meaning @code{showstars} and @code{oddeven}).
14786 @cindex @code{hidestars}, STARTUP keyword
14787 @cindex @code{showstars}, STARTUP keyword
14788 @cindex @code{odd}, STARTUP keyword
14789 @cindex @code{even}, STARTUP keyword
14790 @example
14791 hidestars  @r{make all but one of the stars starting a headline invisible.}
14792 showstars  @r{show all stars starting a headline}
14793 indent     @r{virtual indentation according to outline level}
14794 noindent   @r{no virtual indentation according to outline level}
14795 odd        @r{allow only odd outline levels (1,3,...)}
14796 oddeven    @r{allow all outline levels}
14797 @end example
14798 @vindex org-put-time-stamp-overlays
14799 @vindex org-time-stamp-overlay-formats
14800 To turn on custom format overlays over timestamps (variables
14801 @code{org-put-time-stamp-overlays} and
14802 @code{org-time-stamp-overlay-formats}), use
14803 @cindex @code{customtime}, STARTUP keyword
14804 @example
14805 customtime @r{overlay custom time format}
14806 @end example
14807 @vindex constants-unit-system
14808 The following options influence the table spreadsheet (variable
14809 @code{constants-unit-system}).
14810 @cindex @code{constcgs}, STARTUP keyword
14811 @cindex @code{constSI}, STARTUP keyword
14812 @example
14813 constcgs   @r{@file{constants.el} should use the c-g-s unit system}
14814 constSI    @r{@file{constants.el} should use the SI unit system}
14815 @end example
14816 @vindex org-footnote-define-inline
14817 @vindex org-footnote-auto-label
14818 @vindex org-footnote-auto-adjust
14819 To influence footnote settings, use the following keywords.  The
14820 corresponding variables are @code{org-footnote-define-inline},
14821 @code{org-footnote-auto-label}, and @code{org-footnote-auto-adjust}.
14822 @cindex @code{fninline}, STARTUP keyword
14823 @cindex @code{nofninline}, STARTUP keyword
14824 @cindex @code{fnlocal}, STARTUP keyword
14825 @cindex @code{fnprompt}, STARTUP keyword
14826 @cindex @code{fnauto}, STARTUP keyword
14827 @cindex @code{fnconfirm}, STARTUP keyword
14828 @cindex @code{fnplain}, STARTUP keyword
14829 @cindex @code{fnadjust}, STARTUP keyword
14830 @cindex @code{nofnadjust}, STARTUP keyword
14831 @example
14832 fninline    @r{define footnotes inline}
14833 fnnoinline  @r{define footnotes in separate section}
14834 fnlocal     @r{define footnotes near first reference, but not inline}
14835 fnprompt    @r{prompt for footnote labels}
14836 fnauto      @r{create @code{[fn:1]}-like labels automatically (default)}
14837 fnconfirm   @r{offer automatic label for editing or confirmation}
14838 fnplain     @r{create @code{[1]}-like labels automatically}
14839 fnadjust    @r{automatically renumber and sort footnotes}
14840 nofnadjust  @r{do not renumber and sort automatically}
14841 @end example
14842 @cindex org-hide-block-startup
14843 To hide blocks on startup, use these keywords.  The corresponding variable is
14844 @code{org-hide-block-startup}.
14845 @cindex @code{hideblocks}, STARTUP keyword
14846 @cindex @code{nohideblocks}, STARTUP keyword
14847 @example
14848 hideblocks   @r{Hide all begin/end blocks on startup}
14849 nohideblocks @r{Do not hide blocks on startup}
14850 @end example
14851 @cindex org-pretty-entities
14852 The display of entities as UTF-8 characters is governed by the variable
14853 @code{org-pretty-entities} and the keywords
14854 @cindex @code{entitiespretty}, STARTUP keyword
14855 @cindex @code{entitiesplain}, STARTUP keyword
14856 @example
14857 entitiespretty  @r{Show entities as UTF-8 characters where possible}
14858 entitiesplain   @r{Leave entities plain}
14859 @end example
14860 @item #+TAGS:  TAG1(c1) TAG2(c2)
14861 @vindex org-tag-alist
14862 These lines (several such lines are allowed) specify the valid tags in
14863 this file, and (potentially) the corresponding @emph{fast tag selection}
14864 keys.  The corresponding variable is @code{org-tag-alist}.
14865 @item #+TBLFM:
14866 This line contains the formulas for the table directly above the line.
14867 @item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+DATE:,
14868 @itemx #+OPTIONS:, #+BIND:, #+XSLT:,
14869 @itemx #+DESCRIPTION:, #+KEYWORDS:,
14870 @itemx #+LaTeX_HEADER:, #+STYLE:, #+LINK_UP:, #+LINK_HOME:,
14871 @itemx #+EXPORT_SELECT_TAGS:, #+EXPORT_EXCLUDE_TAGS:
14872 These lines provide settings for exporting files.  For more details see
14873 @ref{Export options}.
14874 @item #+TODO:    #+SEQ_TODO:   #+TYP_TODO:
14875 @vindex org-todo-keywords
14876 These lines set the TODO keywords and their interpretation in the
14877 current file.  The corresponding variable is @code{org-todo-keywords}.
14878 @end table
14880 @node The very busy C-c C-c key, Clean view, In-buffer settings, Miscellaneous
14881 @section The very busy C-c C-c key
14882 @kindex C-c C-c
14883 @cindex C-c C-c, overview
14885 The key @kbd{C-c C-c} has many purposes in Org, which are all
14886 mentioned scattered throughout this manual.  One specific function of
14887 this key is to add @emph{tags} to a headline (@pxref{Tags}).  In many
14888 other circumstances it means something like @emph{``Hey Org, look
14889 here and update according to what you see here''}.  Here is a summary of
14890 what this means in different contexts.
14892 @itemize @minus
14893 @item
14894 If there are highlights in the buffer from the creation of a sparse
14895 tree, or from clock display, remove these highlights.
14896 @item
14897 If the cursor is in one of the special @code{#+KEYWORD} lines, this
14898 triggers scanning the buffer for these lines and updating the
14899 information.
14900 @item
14901 If the cursor is inside a table, realign the table.  This command
14902 works even if the automatic table editor has been turned off.
14903 @item
14904 If the cursor is on a @code{#+TBLFM} line, re-apply the formulas to
14905 the entire table.
14906 @item
14907 If the current buffer is a capture buffer, close the note and file it.
14908 With a prefix argument, file it, without further interaction, to the
14909 default location.
14910 @item
14911 If the cursor is on a @code{<<<target>>>}, update radio targets and
14912 corresponding links in this buffer.
14913 @item
14914 If the cursor is in a property line or at the start or end of a property
14915 drawer, offer property commands.
14916 @item
14917 If the cursor is at a footnote reference, go to the corresponding
14918 definition, and vice versa.
14919 @item
14920 If the cursor is on a statistics cookie, update it.
14921 @item
14922 If the cursor is in a plain list item with a checkbox, toggle the status
14923 of the checkbox.
14924 @item
14925 If the cursor is on a numbered item in a plain list, renumber the
14926 ordered list.
14927 @item
14928 If the cursor is on the @code{#+BEGIN} line of a dynamic block, the
14929 block is updated.
14930 @item
14931 If the cursor is at a timestamp, fix the day name in the timestamp.
14932 @end itemize
14934 @node Clean view, TTY keys, The very busy C-c C-c key, Miscellaneous
14935 @section A cleaner outline view
14936 @cindex hiding leading stars
14937 @cindex dynamic indentation
14938 @cindex odd-levels-only outlines
14939 @cindex clean outline view
14941 Some people find it noisy and distracting that the Org headlines start with a
14942 potentially large number of stars, and that text below the headlines is not
14943 indented.  While this is no problem when writing a @emph{book-like} document
14944 where the outline headings are really section headings, in a more
14945 @emph{list-oriented} outline, indented structure is a lot cleaner:
14947 @example
14948 @group
14949 * Top level headline             |    * Top level headline
14950 ** Second level                  |      * Second level
14951 *** 3rd level                    |        * 3rd level
14952 some text                        |          some text
14953 *** 3rd level                    |        * 3rd level
14954 more text                        |          more text
14955 * Another top level headline     |    * Another top level headline
14956 @end group
14957 @end example
14959 @noindent
14961 If you are using at least Emacs 23.2@footnote{Emacs 23.1 can actually crash
14962 with @code{org-indent-mode}} and version 6.29 of Org, this kind of view can
14963 be achieved dynamically at display time using @code{org-indent-mode}.  In
14964 this minor mode, all lines are prefixed for display with the necessary amount
14965 of space@footnote{@code{org-indent-mode} also sets the @code{wrap-prefix}
14966 property, such that @code{visual-line-mode} (or purely setting
14967 @code{word-wrap}) wraps long lines (including headlines) correctly indented.
14968 }.  Also headlines are prefixed with additional stars, so that the amount of
14969 indentation shifts by two@footnote{See the variable
14970 @code{org-indent-indentation-per-level}.}  spaces per level.  All headline
14971 stars but the last one are made invisible using the @code{org-hide}
14972 face@footnote{Turning on @code{org-indent-mode} sets
14973 @code{org-hide-leading-stars} to @code{t} and @code{org-adapt-indentation} to
14974 @code{nil}.} - see below under @samp{2.} for more information on how this
14975 works.  You can turn on @code{org-indent-mode} for all files by customizing
14976 the variable @code{org-startup-indented}, or you can turn it on for
14977 individual files using
14979 @example
14980 #+STARTUP: indent
14981 @end example
14983 If you want a similar effect in an earlier version of Emacs and/or Org, or if
14984 you want the indentation to be hard space characters so that the plain text
14985 file looks as similar as possible to the Emacs display, Org supports you in
14986 the following way:
14988 @enumerate
14989 @item
14990 @emph{Indentation of text below headlines}@*
14991 You may indent text below each headline to make the left boundary line up
14992 with the headline, like
14994 @example
14995 *** 3rd level
14996     more text, now indented
14997 @end example
14999 @vindex org-adapt-indentation
15000 Org supports this with paragraph filling, line wrapping, and structure
15001 editing@footnote{See also the variable @code{org-adapt-indentation}.},
15002 preserving or adapting the indentation as appropriate.
15004 @item
15005 @vindex org-hide-leading-stars
15006 @emph{Hiding leading stars}@* You can modify the display in such a way that
15007 all leading stars become invisible.  To do this in a global way, configure
15008 the variable @code{org-hide-leading-stars} or change this on a per-file basis
15009 with
15011 @example
15012 #+STARTUP: hidestars
15013 #+STARTUP: showstars
15014 @end example
15016 With hidden stars, the tree becomes:
15018 @example
15019 @group
15020 * Top level headline
15021  * Second level
15022   * 3rd level
15023   ...
15024 @end group
15025 @end example
15027 @noindent
15028 @vindex org-hide @r{(face)}
15029 The leading stars are not truly replaced by whitespace, they are only
15030 fontified with the face @code{org-hide} that uses the background color as
15031 font color.  If you are not using either white or black background, you may
15032 have to customize this face to get the wanted effect.  Another possibility is
15033 to set this font such that the extra stars are @i{almost} invisible, for
15034 example using the color @code{grey90} on a white background.
15036 @item
15037 @vindex org-odd-levels-only
15038 Things become cleaner still if you skip all the even levels and use only odd
15039 levels 1, 3, 5..., effectively adding two stars to go from one outline level
15040 to the next@footnote{When you need to specify a level for a property search
15041 or refile targets, @samp{LEVEL=2} will correspond to 3 stars, etc@.}.  In this
15042 way we get the outline view shown at the beginning of this section.  In order
15043 to make the structure editing and export commands handle this convention
15044 correctly, configure the variable @code{org-odd-levels-only}, or set this on
15045 a per-file basis with one of the following lines:
15047 @example
15048 #+STARTUP: odd
15049 #+STARTUP: oddeven
15050 @end example
15052 You can convert an Org file from single-star-per-level to the
15053 double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels
15054 RET} in that file.  The reverse operation is @kbd{M-x
15055 org-convert-to-oddeven-levels}.
15056 @end enumerate
15058 @node TTY keys, Interaction, Clean view, Miscellaneous
15059 @section Using Org on a tty
15060 @cindex tty key bindings
15062 Because Org contains a large number of commands, by default many of
15063 Org's core commands are bound to keys that are generally not
15064 accessible on a tty, such as the cursor keys (@key{left}, @key{right},
15065 @key{up}, @key{down}), @key{TAB} and @key{RET}, in particular when used
15066 together with modifiers like @key{Meta} and/or @key{Shift}.  To access
15067 these commands on a tty when special keys are unavailable, the following
15068 alternative bindings can be used.  The tty bindings below will likely be
15069 more cumbersome; you may find for some of the bindings below that a
15070 customized workaround suits you better.  For example, changing a timestamp
15071 is really only fun with @kbd{S-@key{cursor}} keys, whereas on a
15072 tty you would rather use @kbd{C-c .} to re-insert the timestamp.
15074 @multitable @columnfractions 0.15 0.2 0.1 0.2
15075 @item @b{Default} @tab @b{Alternative 1} @tab @b{Speed key} @tab @b{Alternative 2}
15076 @item @kbd{S-@key{TAB}}     @tab @kbd{C-u @key{TAB}}       @tab @kbd{C} @tab
15077 @item @kbd{M-@key{left}}    @tab @kbd{C-c C-x l}           @tab @kbd{l} @tab @kbd{@key{Esc} @key{left}}
15078 @item @kbd{M-S-@key{left}}  @tab @kbd{C-c C-x L}           @tab @kbd{L} @tab
15079 @item @kbd{M-@key{right}}   @tab @kbd{C-c C-x r}           @tab @kbd{r} @tab @kbd{@key{Esc} @key{right}}
15080 @item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R}           @tab @kbd{R} @tab
15081 @item @kbd{M-@key{up}}      @tab @kbd{C-c C-x u}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{up}}
15082 @item @kbd{M-S-@key{up}}    @tab @kbd{C-c C-x U}           @tab @kbd{U} @tab
15083 @item @kbd{M-@key{down}}    @tab @kbd{C-c C-x d}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{down}}
15084 @item @kbd{M-S-@key{down}}  @tab @kbd{C-c C-x D}           @tab @kbd{D} @tab
15085 @item @kbd{S-@key{RET}}     @tab @kbd{C-c C-x c}           @tab @kbd{ } @tab
15086 @item @kbd{M-@key{RET}}     @tab @kbd{C-c C-x m}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{RET}}
15087 @item @kbd{M-S-@key{RET}}   @tab @kbd{C-c C-x M}           @tab @kbd{ } @tab
15088 @item @kbd{S-@key{left}}    @tab @kbd{C-c @key{left}}      @tab @kbd{ } @tab
15089 @item @kbd{S-@key{right}}   @tab @kbd{C-c @key{right}}     @tab @kbd{ } @tab
15090 @item @kbd{S-@key{up}}      @tab @kbd{C-c @key{up}}        @tab @kbd{ } @tab
15091 @item @kbd{S-@key{down}}    @tab @kbd{C-c @key{down}}      @tab @kbd{ } @tab
15092 @item @kbd{C-S-@key{left}}  @tab @kbd{C-c C-x @key{left}}  @tab @kbd{ } @tab
15093 @item @kbd{C-S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab @kbd{ } @tab
15094 @end multitable
15097 @node Interaction, org-crypt.el, TTY keys, Miscellaneous
15098 @section Interaction with other packages
15099 @cindex packages, interaction with other
15100 Org lives in the world of GNU Emacs and interacts in various ways
15101 with other code out there.
15103 @menu
15104 * Cooperation::                 Packages Org cooperates with
15105 * Conflicts::                   Packages that lead to conflicts
15106 @end menu
15108 @node Cooperation, Conflicts, Interaction, Interaction
15109 @subsection Packages that Org cooperates with
15111 @table @asis
15112 @cindex @file{calc.el}
15113 @cindex Gillespie, Dave
15114 @item @file{calc.el} by Dave Gillespie
15115 Org uses the Calc package for implementing spreadsheet
15116 functionality in its tables (@pxref{The spreadsheet}).  Org
15117 checks for the availability of Calc by looking for the function
15118 @code{calc-eval} which will have been autoloaded during setup if Calc has
15119 been installed properly.  As of Emacs 22, Calc is part of the Emacs
15120 distribution.  Another possibility for interaction between the two
15121 packages is using Calc for embedded calculations.  @xref{Embedded Mode,
15122 , Embedded Mode, calc, GNU Emacs Calc Manual}.
15123 @item @file{constants.el} by Carsten Dominik
15124 @cindex @file{constants.el}
15125 @cindex Dominik, Carsten
15126 @vindex org-table-formula-constants
15127 In a table formula (@pxref{The spreadsheet}), it is possible to use
15128 names for natural constants or units.  Instead of defining your own
15129 constants in the variable @code{org-table-formula-constants}, install
15130 the @file{constants} package which defines a large number of constants
15131 and units, and lets you use unit prefixes like @samp{M} for
15132 @samp{Mega}, etc@.  You will need version 2.0 of this package, available
15133 at @url{http://www.astro.uva.nl/~dominik/Tools}.  Org checks for
15134 the function @code{constants-get}, which has to be autoloaded in your
15135 setup.  See the installation instructions in the file
15136 @file{constants.el}.
15137 @item @file{cdlatex.el} by Carsten Dominik
15138 @cindex @file{cdlatex.el}
15139 @cindex Dominik, Carsten
15140 Org mode can make use of the CD@LaTeX{} package to efficiently enter
15141 @LaTeX{} fragments into Org files.  See @ref{CDLaTeX mode}.
15142 @item @file{imenu.el} by Ake Stenhoff and Lars Lindberg
15143 @cindex @file{imenu.el}
15144 Imenu allows menu access to an index of items in a file.  Org mode
15145 supports Imenu---all you need to do to get the index is the following:
15146 @lisp
15147 (add-hook 'org-mode-hook
15148           (lambda () (imenu-add-to-menubar "Imenu")))
15149 @end lisp
15150 @vindex org-imenu-depth
15151 By default the index is two levels deep---you can modify the depth using
15152 the option @code{org-imenu-depth}.
15153 @item @file{remember.el} by John Wiegley
15154 @cindex @file{remember.el}
15155 @cindex Wiegley, John
15156 Org used to use this package for capture, but no longer does.
15157 @item @file{speedbar.el} by Eric M. Ludlam
15158 @cindex @file{speedbar.el}
15159 @cindex Ludlam, Eric M.
15160 Speedbar is a package that creates a special frame displaying files and
15161 index items in files.  Org mode supports Speedbar and allows you to
15162 drill into Org files directly from the Speedbar.  It also allows you to
15163 restrict the scope of agenda commands to a file or a subtree by using
15164 the command @kbd{<} in the Speedbar frame.
15165 @cindex @file{table.el}
15166 @item @file{table.el} by Takaaki Ota
15167 @kindex C-c C-c
15168 @cindex table editor, @file{table.el}
15169 @cindex @file{table.el}
15170 @cindex Ota, Takaaki
15172 Complex ASCII tables with automatic line wrapping, column- and row-spanning,
15173 and alignment can be created using the Emacs table package by Takaaki Ota
15174 (@uref{http://sourceforge.net/projects/table}, and also part of Emacs 22).
15175 Org mode will recognize these tables and export them properly.  Because of
15176 interference with other Org mode functionality, you unfortunately cannot edit
15177 these tables directly in the buffer.  Instead, you need to use the command
15178 @kbd{C-c '} to edit them, similar to source code snippets.
15180 @table @kbd
15181 @orgcmd{C-c ',org-edit-special}
15182 Edit a @file{table.el} table.  Works when the cursor is in a table.el table.
15184 @orgcmd{C-c ~,org-table-create-with-table.el}
15185 Insert a @file{table.el} table.  If there is already a table at point, this
15186 command converts it between the @file{table.el} format and the Org mode
15187 format.  See the documentation string of the command
15188 @code{org-convert-table} for the restrictions under which this is
15189 possible.
15190 @end table
15191 @file{table.el} is part of Emacs since Emacs 22.
15192 @item @file{footnote.el} by Steven L. Baur
15193 @cindex @file{footnote.el}
15194 @cindex Baur, Steven L.
15195 Org mode recognizes numerical footnotes as provided by this package.
15196 However, Org mode also has its own footnote support (@pxref{Footnotes}),
15197 which makes using @file{footnote.el} unnecessary.
15198 @end table
15200 @node Conflicts,  , Cooperation, Interaction
15201 @subsection Packages that lead to conflicts with Org mode
15203 @table @asis
15205 @cindex @code{shift-selection-mode}
15206 @vindex org-support-shift-select
15207 In Emacs 23, @code{shift-selection-mode} is on by default, meaning that
15208 cursor motions combined with the shift key should start or enlarge regions.
15209 This conflicts with the use of @kbd{S-@key{cursor}} commands in Org to change
15210 timestamps, TODO keywords, priorities, and item bullet types if the cursor is
15211 at such a location.  By default, @kbd{S-@key{cursor}} commands outside
15212 special contexts don't do anything, but you can customize the variable
15213 @code{org-support-shift-select}.  Org mode then tries to accommodate shift
15214 selection by (i) using it outside of the special contexts where special
15215 commands apply, and by (ii) extending an existing active region even if the
15216 cursor moves across a special context.
15218 @item @file{CUA.el} by Kim. F. Storm
15219 @cindex @file{CUA.el}
15220 @cindex Storm, Kim. F.
15221 @vindex org-replace-disputed-keys
15222 Key bindings in Org conflict with the @kbd{S-<cursor>} keys used by CUA mode
15223 (as well as @code{pc-select-mode} and @code{s-region-mode}) to select and extend the
15224 region.  In fact, Emacs 23 has this built-in in the form of
15225 @code{shift-selection-mode}, see previous paragraph.  If you are using Emacs
15226 23, you probably don't want to use another package for this purpose.  However,
15227 if you prefer to leave these keys to a different package while working in
15228 Org mode, configure the variable @code{org-replace-disputed-keys}.  When set,
15229 Org will move the following key bindings in Org files, and in the agenda
15230 buffer (but not during date selection).
15232 @example
15233 S-UP      @result{}  M-p             S-DOWN     @result{}  M-n
15234 S-LEFT    @result{}  M--             S-RIGHT    @result{}  M-+
15235 C-S-LEFT  @result{}  M-S--           C-S-RIGHT  @result{}  M-S-+
15236 @end example
15238 @vindex org-disputed-keys
15239 Yes, these are unfortunately more difficult to remember.  If you want
15240 to have other replacement keys, look at the variable
15241 @code{org-disputed-keys}.
15243 @item @file{yasnippet.el}
15244 @cindex @file{yasnippet.el}
15245 The way Org mode binds the TAB key (binding to @code{[tab]} instead of
15246 @code{"\t"}) overrules YASnippet's access to this key.  The following code
15247 fixed this problem:
15249 @lisp
15250 (add-hook 'org-mode-hook
15251           (lambda ()
15252             (org-set-local 'yas/trigger-key [tab])
15253             (define-key yas/keymap [tab] 'yas/next-field-or-maybe-expand)))
15254 @end lisp
15256 The latest version of yasnippet doesn't play well with Org mode.  If the
15257 above code does not fix the conflict, start by defining the following
15258 function:
15260 @lisp
15261 (defun yas/org-very-safe-expand ()
15262        (let ((yas/fallback-behavior 'return-nil)) (yas/expand)))
15263 @end lisp
15265 Then, tell Org mode what to do with the new function:
15267 @lisp
15268 (add-hook 'org-mode-hook
15269           (lambda ()
15270               (make-variable-buffer-local 'yas/trigger-key)
15271               (setq yas/trigger-key [tab])
15272               (add-to-list 'org-tab-first-hook 'yas/org-very-safe-expand)
15273               (define-key yas/keymap [tab] 'yas/next-field)))
15274 @end lisp
15276 @item @file{windmove.el} by Hovav Shacham
15277 @cindex @file{windmove.el}
15278 This package also uses the @kbd{S-<cursor>} keys, so everything written
15279 in the paragraph above about CUA mode also applies here.  If you want make
15280 the windmove function active in locations where Org mode does not have
15281 special functionality on @kbd{S-@key{cursor}}, add this to your
15282 configuration:
15284 @lisp
15285 ;; Make windmove work in org-mode:
15286 (add-hook 'org-shiftup-final-hook 'windmove-up)
15287 (add-hook 'org-shiftleft-final-hook 'windmove-left)
15288 (add-hook 'org-shiftdown-final-hook 'windmove-down)
15289 (add-hook 'org-shiftright-final-hook 'windmove-right)
15290 @end lisp
15292 @item @file{viper.el} by Michael Kifer
15293 @cindex @file{viper.el}
15294 @kindex C-c /
15295 Viper uses @kbd{C-c /} and therefore makes this key not access the
15296 corresponding Org mode command @code{org-sparse-tree}.  You need to find
15297 another key for this command, or override the key in
15298 @code{viper-vi-global-user-map} with
15300 @lisp
15301 (define-key viper-vi-global-user-map "C-c /" 'org-sparse-tree)
15302 @end lisp
15304 @end table
15306 @node org-crypt.el,  , Interaction, Miscellaneous
15307 @section org-crypt.el
15308 @cindex @file{org-crypt.el}
15309 @cindex @code{org-decrypt-entry}
15311 Org-crypt will encrypt the text of an entry, but not the headline, or
15312 properties.  Org-crypt uses the Emacs EasyPG library to encrypt and decrypt
15313 files.
15315 Any text below a headline that has a @samp{:crypt:} tag will be automatically
15316 be encrypted when the file is saved.  If you want to use a different tag just
15317 customize the @code{org-crypt-tag-matcher} setting.
15319 To use org-crypt it is suggested that you have the following in your
15320 @file{.emacs}:
15322 @example
15323 (require 'org-crypt)
15324 (org-crypt-use-before-save-magic)
15325 (setq org-tags-exclude-from-inheritance (quote ("crypt")))
15327 (setq org-crypt-key nil)
15328   ;; GPG key to use for encryption
15329   ;; Either the Key ID or set to nil to use symmetric encryption.
15331 (setq auto-save-default nil)
15332   ;; Auto-saving does not cooperate with org-crypt.el: so you need
15333   ;; to turn it off if you plan to use org-crypt.el quite often.
15334   ;; Otherwise, you'll get an (annoying) message each time you
15335   ;; start Org.
15337   ;; To turn it off only locally, you can insert this:
15338   ;;
15339   ;; # -*- buffer-auto-save-file-name: nil; -*-
15340 @end example
15342 Excluding the crypt tag from inheritance prevents already encrypted text
15343 being encrypted again.
15345 @node Hacking, MobileOrg, Miscellaneous, Top
15346 @appendix Hacking
15347 @cindex hacking
15349 This appendix covers some aspects where users can extend the functionality of
15350 Org.
15352 @menu
15353 * Hooks::                       How to reach into Org's internals
15354 * Add-on packages::             Available extensions
15355 * Adding hyperlink types::      New custom link types
15356 * Context-sensitive commands::  How to add functionality to such commands
15357 * Tables in arbitrary syntax::  Orgtbl for @LaTeX{} and other programs
15358 * Dynamic blocks::              Automatically filled blocks
15359 * Special agenda views::        Customized views
15360 * Extracting agenda information::  Postprocessing of agenda information
15361 * Using the property API::      Writing programs that use entry properties
15362 * Using the mapping API::       Mapping over all or selected entries
15363 @end menu
15365 @node Hooks, Add-on packages, Hacking, Hacking
15366 @section Hooks
15367 @cindex hooks
15369 Org has a large number of hook variables that can be used to add
15370 functionality.  This appendix about hacking is going to illustrate the
15371 use of some of them.  A complete list of all hooks with documentation is
15372 maintained by the Worg project and can be found at
15373 @uref{http://orgmode.org/worg/org-configs/org-hooks.php}.
15375 @node Add-on packages, Adding hyperlink types, Hooks, Hacking
15376 @section Add-on packages
15377 @cindex add-on packages
15379 A large number of add-on packages have been written by various authors.
15380 These packages are not part of Emacs, but they are distributed as contributed
15381 packages with the separate release available at the Org mode home page at
15382 @uref{http://orgmode.org}.  The list of contributed packages, along with
15383 documentation about each package, is maintained by the Worg project at
15384 @uref{http://orgmode.org/worg/org-contrib/}.
15388 @node Adding hyperlink types, Context-sensitive commands, Add-on packages, Hacking
15389 @section Adding hyperlink types
15390 @cindex hyperlinks, adding new types
15392 Org has a large number of hyperlink types built-in
15393 (@pxref{Hyperlinks}).  If you would like to add new link types, Org
15394 provides an interface for doing so.  Let's look at an example file,
15395 @file{org-man.el}, that will add support for creating links like
15396 @samp{[[man:printf][The printf manpage]]} to show Unix manual pages inside
15397 Emacs:
15399 @lisp
15400 ;;; org-man.el - Support for links to manpages in Org
15402 (require 'org)
15404 (org-add-link-type "man" 'org-man-open)
15405 (add-hook 'org-store-link-functions 'org-man-store-link)
15407 (defcustom org-man-command 'man
15408   "The Emacs command to be used to display a man page."
15409   :group 'org-link
15410   :type '(choice (const man) (const woman)))
15412 (defun org-man-open (path)
15413   "Visit the manpage on PATH.
15414 PATH should be a topic that can be thrown at the man command."
15415   (funcall org-man-command path))
15417 (defun org-man-store-link ()
15418   "Store a link to a manpage."
15419   (when (memq major-mode '(Man-mode woman-mode))
15420     ;; This is a man page, we do make this link
15421     (let* ((page (org-man-get-page-name))
15422            (link (concat "man:" page))
15423            (description (format "Manpage for %s" page)))
15424       (org-store-link-props
15425        :type "man"
15426        :link link
15427        :description description))))
15429 (defun org-man-get-page-name ()
15430   "Extract the page name from the buffer name."
15431   ;; This works for both `Man-mode' and `woman-mode'.
15432   (if (string-match " \\(\\S-+\\)\\*" (buffer-name))
15433       (match-string 1 (buffer-name))
15434     (error "Cannot create link to this man page")))
15436 (provide 'org-man)
15438 ;;; org-man.el ends here
15439 @end lisp
15441 @noindent
15442 You would activate this new link type in @file{.emacs} with
15444 @lisp
15445 (require 'org-man)
15446 @end lisp
15448 @noindent
15449 Let's go through the file and see what it does.
15450 @enumerate
15451 @item
15452 It does @code{(require 'org)} to make sure that @file{org.el} has been
15453 loaded.
15454 @item
15455 The next line calls @code{org-add-link-type} to define a new link type
15456 with prefix @samp{man}.  The call also contains the name of a function
15457 that will be called to follow such a link.
15458 @item
15459 @vindex org-store-link-functions
15460 The next line adds a function to @code{org-store-link-functions}, in
15461 order to allow the command @kbd{C-c l} to record a useful link in a
15462 buffer displaying a man page.
15463 @end enumerate
15465 The rest of the file defines the necessary variables and functions.
15466 First there is a customization variable that determines which Emacs
15467 command should be used to display man pages.  There are two options,
15468 @code{man} and @code{woman}.  Then the function to follow a link is
15469 defined.  It gets the link path as an argument---in this case the link
15470 path is just a topic for the manual command.  The function calls the
15471 value of @code{org-man-command} to display the man page.
15473 Finally the function @code{org-man-store-link} is defined.  When you try
15474 to store a link with @kbd{C-c l}, this function will be called to
15475 try to make a link.  The function must first decide if it is supposed to
15476 create the link for this buffer type; we do this by checking the value
15477 of the variable @code{major-mode}.  If not, the function must exit and
15478 return the value @code{nil}.  If yes, the link is created by getting the
15479 manual topic from the buffer name and prefixing it with the string
15480 @samp{man:}.  Then it must call the command @code{org-store-link-props}
15481 and set the @code{:type} and @code{:link} properties.  Optionally you
15482 can also set the @code{:description} property to provide a default for
15483 the link description when the link is later inserted into an Org
15484 buffer with @kbd{C-c C-l}.
15486 When it makes sense for your new link type, you may also define a function
15487 @code{org-PREFIX-complete-link} that implements special (e.g.@: completion)
15488 support for inserting such a link with @kbd{C-c C-l}.  Such a function should
15489 not accept any arguments, and return the full link with prefix.
15491 @node Context-sensitive commands, Tables in arbitrary syntax, Adding hyperlink types, Hacking
15492 @section Context-sensitive commands
15493 @cindex context-sensitive commands, hooks
15494 @cindex add-ons, context-sensitive commands
15495 @vindex org-ctrl-c-ctrl-c-hook
15497 Org has several commands that act differently depending on context.  The most
15498 important example is the @kbd{C-c C-c} (@pxref{The very busy C-c C-c key}).
15499 Also the @kbd{M-cursor} and @kbd{M-S-cursor} keys have this property.
15501 Add-ons can tap into this functionality by providing a function that detects
15502 special context for that add-on and executes functionality appropriate for
15503 the context.  Here is an example from Dan Davison's @file{org-R.el} which
15504 allows you to evaluate commands based on the @file{R} programming language
15505 @footnote{@file{org-R.el} has been replaced by the Org mode functionality
15506 described in @ref{Working With Source Code} and is now obsolete.}.  For this
15507 package, special contexts are lines that start with @code{#+R:} or
15508 @code{#+RR:}.
15510 @lisp
15511 (defun org-R-apply-maybe ()
15512   "Detect if this is context for org-R and execute R commands."
15513   (if (save-excursion
15514         (beginning-of-line 1)
15515         (looking-at "#\\+RR?:"))
15516       (progn (call-interactively 'org-R-apply)
15517              t) ;; to signal that we took action
15518     nil)) ;; to signal that we did not
15520 (add-hook 'org-ctrl-c-ctrl-c-hook 'org-R-apply-maybe)
15521 @end lisp
15523 The function first checks if the cursor is in such a line.  If that is the
15524 case, @code{org-R-apply} is called and the function returns @code{t} to
15525 signal that action was taken, and @kbd{C-c C-c} will stop looking for other
15526 contexts.  If the function finds it should do nothing locally, it returns
15527 @code{nil} so that other, similar functions can have a try.
15530 @node Tables in arbitrary syntax, Dynamic blocks, Context-sensitive commands, Hacking
15531 @section Tables and lists in arbitrary syntax
15532 @cindex tables, in other modes
15533 @cindex lists, in other modes
15534 @cindex Orgtbl mode
15536 Since Orgtbl mode can be used as a minor mode in arbitrary buffers, a
15537 frequent feature request has been to make it work with native tables in
15538 specific languages, for example @LaTeX{}.  However, this is extremely
15539 hard to do in a general way, would lead to a customization nightmare,
15540 and would take away much of the simplicity of the Orgtbl mode table
15541 editor.
15543 This appendix describes a different approach.  We keep the Orgtbl mode
15544 table in its native format (the @i{source table}), and use a custom
15545 function to @i{translate} the table to the correct syntax, and to
15546 @i{install} it in the right location (the @i{target table}).  This puts
15547 the burden of writing conversion functions on the user, but it allows
15548 for a very flexible system.
15550 Bastien added the ability to do the same with lists, in Orgstruct mode.  You
15551 can use Org's facilities to edit and structure lists by turning
15552 @code{orgstruct-mode} on, then locally exporting such lists in another format
15553 (HTML, @LaTeX{} or Texinfo.)
15556 @menu
15557 * Radio tables::                Sending and receiving radio tables
15558 * A @LaTeX{} example::          Step by step, almost a tutorial
15559 * Translator functions::        Copy and modify
15560 * Radio lists::                 Doing the same for lists
15561 @end menu
15563 @node Radio tables, A @LaTeX{} example, Tables in arbitrary syntax, Tables in arbitrary syntax
15564 @subsection Radio tables
15565 @cindex radio tables
15567 To define the location of the target table, you first need to create two
15568 lines that are comments in the current mode, but contain magic words for
15569 Orgtbl mode to find.  Orgtbl mode will insert the translated table
15570 between these lines, replacing whatever was there before.  For example:
15572 @example
15573 /* BEGIN RECEIVE ORGTBL table_name */
15574 /* END RECEIVE ORGTBL table_name */
15575 @end example
15577 @noindent
15578 Just above the source table, we put a special line that tells
15579 Orgtbl mode how to translate this table and where to install it.  For
15580 example:
15581 @cindex #+ORGTBL
15582 @example
15583 #+ORGTBL: SEND table_name translation_function arguments....
15584 @end example
15586 @noindent
15587 @code{table_name} is the reference name for the table that is also used
15588 in the receiver lines.  @code{translation_function} is the Lisp function
15589 that does the translation.  Furthermore, the line can contain a list of
15590 arguments (alternating key and value) at the end.  The arguments will be
15591 passed as a property list to the translation function for
15592 interpretation.  A few standard parameters are already recognized and
15593 acted upon before the translation function is called:
15595 @table @code
15596 @item :skip N
15597 Skip the first N lines of the table.  Hlines do count as separate lines for
15598 this parameter!
15600 @item :skipcols (n1 n2 ...)
15601 List of columns that should be skipped.  If the table has a column with
15602 calculation marks, that column is automatically discarded as well.
15603 Please note that the translator function sees the table @emph{after} the
15604 removal of these columns, the function never knows that there have been
15605 additional columns.
15607 @item :no-escape t
15608 When non-nil, do not escape special characters @code{&%#_^} when exporting
15609 the table.  The default value is nil.
15610 @end table
15612 @noindent
15613 The one problem remaining is how to keep the source table in the buffer
15614 without disturbing the normal workings of the file, for example during
15615 compilation of a C file or processing of a @LaTeX{} file.  There are a
15616 number of different solutions:
15618 @itemize @bullet
15619 @item
15620 The table could be placed in a block comment if that is supported by the
15621 language.  For example, in C mode you could wrap the table between
15622 @samp{/*} and @samp{*/} lines.
15623 @item
15624 Sometimes it is possible to put the table after some kind of @i{END}
15625 statement, for example @samp{\bye} in @TeX{} and @samp{\end@{document@}}
15626 in @LaTeX{}.
15627 @item
15628 You can just comment the table line-by-line whenever you want to process
15629 the file, and uncomment it whenever you need to edit the table.  This
15630 only sounds tedious---the command @kbd{M-x orgtbl-toggle-comment}
15631 makes this comment-toggling very easy, in particular if you bind it to a
15632 key.
15633 @end itemize
15635 @node A @LaTeX{} example, Translator functions, Radio tables, Tables in arbitrary syntax
15636 @subsection A @LaTeX{} example of radio tables
15637 @cindex @LaTeX{}, and Orgtbl mode
15639 The best way to wrap the source table in @LaTeX{} is to use the
15640 @code{comment} environment provided by @file{comment.sty}.  It has to be
15641 activated by placing @code{\usepackage@{comment@}} into the document
15642 header.  Orgtbl mode can insert a radio table skeleton@footnote{By
15643 default this works only for @LaTeX{}, HTML, and Texinfo.  Configure the
15644 variable @code{orgtbl-radio-tables} to install templates for other
15645 modes.}  with the command @kbd{M-x orgtbl-insert-radio-table}.  You will
15646 be prompted for a table name, let's say we use @samp{salesfigures}.  You
15647 will then get the following template:
15649 @cindex #+ORGTBL, SEND
15650 @example
15651 % BEGIN RECEIVE ORGTBL salesfigures
15652 % END RECEIVE ORGTBL salesfigures
15653 \begin@{comment@}
15654 #+ORGTBL: SEND salesfigures orgtbl-to-latex
15655 | | |
15656 \end@{comment@}
15657 @end example
15659 @noindent
15660 @vindex @LaTeX{}-verbatim-environments
15661 The @code{#+ORGTBL: SEND} line tells Orgtbl mode to use the function
15662 @code{orgtbl-to-latex} to convert the table into @LaTeX{} and to put it
15663 into the receiver location with name @code{salesfigures}.  You may now
15664 fill in the table---feel free to use the spreadsheet features@footnote{If
15665 the @samp{#+TBLFM} line contains an odd number of dollar characters,
15666 this may cause problems with font-lock in @LaTeX{} mode.  As shown in the
15667 example you can fix this by adding an extra line inside the
15668 @code{comment} environment that is used to balance the dollar
15669 expressions.  If you are using AUC@TeX{} with the font-latex library, a
15670 much better solution is to add the @code{comment} environment to the
15671 variable @code{LaTeX-verbatim-environments}.}:
15673 @example
15674 % BEGIN RECEIVE ORGTBL salesfigures
15675 % END RECEIVE ORGTBL salesfigures
15676 \begin@{comment@}
15677 #+ORGTBL: SEND salesfigures orgtbl-to-latex
15678 | Month | Days | Nr sold | per day |
15679 |-------+------+---------+---------|
15680 | Jan   |   23 |      55 |     2.4 |
15681 | Feb   |   21 |      16 |     0.8 |
15682 | March |   22 |     278 |    12.6 |
15683 #+TBLFM: $4=$3/$2;%.1f
15684 % $ (optional extra dollar to keep font-lock happy, see footnote)
15685 \end@{comment@}
15686 @end example
15688 @noindent
15689 When you are done, press @kbd{C-c C-c} in the table to get the converted
15690 table inserted between the two marker lines.
15692 Now let's assume you want to make the table header by hand, because you
15693 want to control how columns are aligned, etc@.  In this case we make sure
15694 that the table translator skips the first 2 lines of the source
15695 table, and tell the command to work as a @i{splice}, i.e.@: to not produce
15696 header and footer commands of the target table:
15698 @example
15699 \begin@{tabular@}@{lrrr@}
15700 Month & \multicolumn@{1@}@{c@}@{Days@} & Nr.\ sold & per day\\
15701 % BEGIN RECEIVE ORGTBL salesfigures
15702 % END RECEIVE ORGTBL salesfigures
15703 \end@{tabular@}
15705 \begin@{comment@}
15706 #+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2
15707 | Month | Days | Nr sold | per day |
15708 |-------+------+---------+---------|
15709 | Jan   |   23 |      55 |     2.4 |
15710 | Feb   |   21 |      16 |     0.8 |
15711 | March |   22 |     278 |    12.6 |
15712 #+TBLFM: $4=$3/$2;%.1f
15713 \end@{comment@}
15714 @end example
15716 The @LaTeX{} translator function @code{orgtbl-to-latex} is already part of
15717 Orgtbl mode.  It uses a @code{tabular} environment to typeset the table
15718 and marks horizontal lines with @code{\hline}.  Furthermore, it
15719 interprets the following parameters (see also @pxref{Translator functions}):
15721 @table @code
15722 @item :splice nil/t
15723 When set to t, return only table body lines, don't wrap them into a
15724 tabular environment.  Default is nil.
15726 @item :fmt fmt
15727 A format to be used to wrap each field, it should contain @code{%s} for the
15728 original field value.  For example, to wrap each field value in dollars,
15729 you could use @code{:fmt "$%s$"}.  This may also be a property list with
15730 column numbers and formats, for example @code{:fmt (2 "$%s$" 4 "%s\\%%")}.
15731 A function of one argument can be used in place of the strings; the
15732 function must return a formatted string.
15734 @item :efmt efmt
15735 Use this format to print numbers with exponentials.  The format should
15736 have @code{%s} twice for inserting mantissa and exponent, for example
15737 @code{"%s\\times10^@{%s@}"}.  The default is @code{"%s\\,(%s)"}.  This
15738 may also be a property list with column numbers and formats, for example
15739 @code{:efmt (2 "$%s\\times10^@{%s@}$" 4 "$%s\\cdot10^@{%s@}$")}.  After
15740 @code{efmt} has been applied to a value, @code{fmt} will also be
15741 applied.  Similar to @code{fmt}, functions of two arguments can be
15742 supplied instead of strings.
15743 @end table
15745 @node Translator functions, Radio lists, A @LaTeX{} example, Tables in arbitrary syntax
15746 @subsection Translator functions
15747 @cindex HTML, and Orgtbl mode
15748 @cindex translator function
15750 Orgtbl mode has several translator functions built-in: @code{orgtbl-to-csv}
15751 (comma-separated values), @code{orgtbl-to-tsv} (TAB-separated values)
15752 @code{orgtbl-to-latex}, @code{orgtbl-to-html}, and @code{orgtbl-to-texinfo}.
15753 Except for @code{orgtbl-to-html}@footnote{The HTML translator uses the same
15754 code that produces tables during HTML export.}, these all use a generic
15755 translator, @code{orgtbl-to-generic}.  For example, @code{orgtbl-to-latex}
15756 itself is a very short function that computes the column definitions for the
15757 @code{tabular} environment, defines a few field and line separators and then
15758 hands processing over to the generic translator.  Here is the entire code:
15760 @lisp
15761 @group
15762 (defun orgtbl-to-latex (table params)
15763   "Convert the Orgtbl mode TABLE to LaTeX."
15764   (let* ((alignment (mapconcat (lambda (x) (if x "r" "l"))
15765                                org-table-last-alignment ""))
15766          (params2
15767           (list
15768            :tstart (concat "\\begin@{tabular@}@{" alignment "@}")
15769            :tend "\\end@{tabular@}"
15770            :lstart "" :lend " \\\\" :sep " & "
15771            :efmt "%s\\,(%s)" :hline "\\hline")))
15772     (orgtbl-to-generic table (org-combine-plists params2 params))))
15773 @end group
15774 @end lisp
15776 As you can see, the properties passed into the function (variable
15777 @var{PARAMS}) are combined with the ones newly defined in the function
15778 (variable @var{PARAMS2}).  The ones passed into the function (i.e.@: the
15779 ones set by the @samp{ORGTBL SEND} line) take precedence.  So if you
15780 would like to use the @LaTeX{} translator, but wanted the line endings to
15781 be @samp{\\[2mm]} instead of the default @samp{\\}, you could just
15782 overrule the default with
15784 @example
15785 #+ORGTBL: SEND test orgtbl-to-latex :lend " \\\\[2mm]"
15786 @end example
15788 For a new language, you can either write your own converter function in
15789 analogy with the @LaTeX{} translator, or you can use the generic function
15790 directly.  For example, if you have a language where a table is started
15791 with @samp{!BTBL!}, ended with @samp{!ETBL!}, and where table lines are
15792 started with @samp{!BL!}, ended with @samp{!EL!}, and where the field
15793 separator is a TAB, you could call the generic translator like this (on
15794 a single line!):
15796 @example
15797 #+ORGTBL: SEND test orgtbl-to-generic :tstart "!BTBL!" :tend "!ETBL!"
15798                               :lstart "!BL! " :lend " !EL!" :sep "\t"
15799 @end example
15801 @noindent
15802 Please check the documentation string of the function
15803 @code{orgtbl-to-generic} for a full list of parameters understood by
15804 that function, and remember that you can pass each of them into
15805 @code{orgtbl-to-latex}, @code{orgtbl-to-texinfo}, and any other function
15806 using the generic function.
15808 Of course you can also write a completely new function doing complicated
15809 things the generic translator cannot do.  A translator function takes
15810 two arguments.  The first argument is the table, a list of lines, each
15811 line either the symbol @code{hline} or a list of fields.  The second
15812 argument is the property list containing all parameters specified in the
15813 @samp{#+ORGTBL: SEND} line.  The function must return a single string
15814 containing the formatted table.  If you write a generally useful
15815 translator, please post it on @email{emacs-orgmode@@gnu.org} so that
15816 others can benefit from your work.
15818 @node Radio lists,  , Translator functions, Tables in arbitrary syntax
15819 @subsection Radio lists
15820 @cindex radio lists
15821 @cindex org-list-insert-radio-list
15823 Sending and receiving radio lists works exactly the same way as sending and
15824 receiving radio tables (@pxref{Radio tables}).  As for radio tables, you can
15825 insert radio list templates in HTML, @LaTeX{} and Texinfo modes by calling
15826 @code{org-list-insert-radio-list}.
15828 Here are the differences with radio tables:
15830 @itemize @minus
15831 @item
15832 Orgstruct mode must be active.
15833 @item
15834 Use the @code{ORGLST} keyword instead of @code{ORGTBL}.
15835 @item
15836 The available translation functions for radio lists don't take
15837 parameters.
15838 @item
15839 @kbd{C-c C-c} will work when pressed on the first item of the list.
15840 @end itemize
15842 Here is a @LaTeX{} example.  Let's say that you have this in your
15843 @LaTeX{} file:
15845 @cindex #+ORGLST
15846 @example
15847 % BEGIN RECEIVE ORGLST to-buy
15848 % END RECEIVE ORGLST to-buy
15849 \begin@{comment@}
15850 #+ORGLST: SEND to-buy org-list-to-latex
15851 - a new house
15852 - a new computer
15853   + a new keyboard
15854   + a new mouse
15855 - a new life
15856 \end@{comment@}
15857 @end example
15859 Pressing `C-c C-c' on @code{a new house} and will insert the converted
15860 @LaTeX{} list between the two marker lines.
15862 @node Dynamic blocks, Special agenda views, Tables in arbitrary syntax, Hacking
15863 @section Dynamic blocks
15864 @cindex dynamic blocks
15866 Org documents can contain @emph{dynamic blocks}.  These are
15867 specially marked regions that are updated by some user-written function.
15868 A good example for such a block is the clock table inserted by the
15869 command @kbd{C-c C-x C-r} (@pxref{Clocking work time}).
15871 Dynamic blocks are enclosed by a BEGIN-END structure that assigns a name
15872 to the block and can also specify parameters for the function producing
15873 the content of the block.
15875 @cindex #+BEGIN:dynamic block
15876 @example
15877 #+BEGIN: myblock :parameter1 value1 :parameter2 value2 ...
15879 #+END:
15880 @end example
15882 Dynamic blocks are updated with the following commands
15884 @table @kbd
15885 @orgcmd{C-c C-x C-u,org-dblock-update}
15886 Update dynamic block at point.
15887 @orgkey{C-u C-c C-x C-u}
15888 Update all dynamic blocks in the current file.
15889 @end table
15891 Updating a dynamic block means to remove all the text between BEGIN and
15892 END, parse the BEGIN line for parameters and then call the specific
15893 writer function for this block to insert the new content.  If you want
15894 to use the original content in the writer function, you can use the
15895 extra parameter @code{:content}.
15897 For a block with name @code{myblock}, the writer function is
15898 @code{org-dblock-write:myblock} with as only parameter a property list
15899 with the parameters given in the begin line.  Here is a trivial example
15900 of a block that keeps track of when the block update function was last
15901 run:
15903 @example
15904 #+BEGIN: block-update-time :format "on %m/%d/%Y at %H:%M"
15906 #+END:
15907 @end example
15909 @noindent
15910 The corresponding block writer function could look like this:
15912 @lisp
15913 (defun org-dblock-write:block-update-time (params)
15914    (let ((fmt (or (plist-get params :format) "%d. %m. %Y")))
15915      (insert "Last block update at: "
15916              (format-time-string fmt (current-time)))))
15917 @end lisp
15919 If you want to make sure that all dynamic blocks are always up-to-date,
15920 you could add the function @code{org-update-all-dblocks} to a hook, for
15921 example @code{before-save-hook}.  @code{org-update-all-dblocks} is
15922 written in a way such that it does nothing in buffers that are not in
15923 @code{org-mode}.
15925 You can narrow the current buffer to the current dynamic block (like any
15926 other block) with @code{org-narrow-to-block}.
15928 @node Special agenda views, Extracting agenda information, Dynamic blocks, Hacking
15929 @section Special agenda views
15930 @cindex agenda views, user-defined
15932 @vindex org-agenda-skip-function
15933 @vindex org-agenda-skip-function-global
15934 Org provides a special hook that can be used to narrow down the selection
15935 made by these agenda views: @code{agenda}, @code{todo}, @code{alltodo},
15936 @code{tags}, @code{tags-todo}, @code{tags-tree}.  You may specify a function
15937 that is used at each match to verify if the match should indeed be part of
15938 the agenda view, and if not, how much should be skipped.  You can specify a
15939 global condition that will be applied to all agenda views, this condition
15940 would be stored in the variable @code{org-agenda-skip-function-global}.  More
15941 commonly, such a definition is applied only to specific custom searches,
15942 using @code{org-agenda-skip-function}.
15944 Let's say you want to produce a list of projects that contain a WAITING
15945 tag anywhere in the project tree.  Let's further assume that you have
15946 marked all tree headings that define a project with the TODO keyword
15947 PROJECT.  In this case you would run a TODO search for the keyword
15948 PROJECT, but skip the match unless there is a WAITING tag anywhere in
15949 the subtree belonging to the project line.
15951 To achieve this, you must write a function that searches the subtree for
15952 the tag.  If the tag is found, the function must return @code{nil} to
15953 indicate that this match should not be skipped.  If there is no such
15954 tag, return the location of the end of the subtree, to indicate that
15955 search should continue from there.
15957 @lisp
15958 (defun my-skip-unless-waiting ()
15959   "Skip trees that are not waiting"
15960   (let ((subtree-end (save-excursion (org-end-of-subtree t))))
15961     (if (re-search-forward ":waiting:" subtree-end t)
15962         nil          ; tag found, do not skip
15963       subtree-end))) ; tag not found, continue after end of subtree
15964 @end lisp
15966 Now you may use this function in an agenda custom command, for example
15967 like this:
15969 @lisp
15970 (org-add-agenda-custom-command
15971  '("b" todo "PROJECT"
15972    ((org-agenda-skip-function 'my-skip-unless-waiting)
15973     (org-agenda-overriding-header "Projects waiting for something: "))))
15974 @end lisp
15976 @vindex org-agenda-overriding-header
15977 Note that this also binds @code{org-agenda-overriding-header} to get a
15978 meaningful header in the agenda view.
15980 @vindex org-odd-levels-only
15981 @vindex org-agenda-skip-function
15982 A general way to create custom searches is to base them on a search for
15983 entries with a certain level limit.  If you want to study all entries with
15984 your custom search function, simply do a search for
15985 @samp{LEVEL>0}@footnote{Note that, when using @code{org-odd-levels-only}, a
15986 level number corresponds to order in the hierarchy, not to the number of
15987 stars.}, and then use @code{org-agenda-skip-function} to select the entries
15988 you really want to have.
15990 You may also put a Lisp form into @code{org-agenda-skip-function}.  In
15991 particular, you may use the functions @code{org-agenda-skip-entry-if}
15992 and @code{org-agenda-skip-subtree-if} in this form, for example:
15994 @table @code
15995 @item (org-agenda-skip-entry-if 'scheduled)
15996 Skip current entry if it has been scheduled.
15997 @item (org-agenda-skip-entry-if 'notscheduled)
15998 Skip current entry if it has not been scheduled.
15999 @item (org-agenda-skip-entry-if 'deadline)
16000 Skip current entry if it has a deadline.
16001 @item (org-agenda-skip-entry-if 'scheduled 'deadline)
16002 Skip current entry if it has a deadline, or if it is scheduled.
16003 @item (org-agenda-skip-entry-if 'todo '("TODO" "WAITING"))
16004 Skip current entry if the TODO keyword is TODO or WAITING.
16005 @item (org-agenda-skip-entry-if 'todo 'done)
16006 Skip current entry if the TODO keyword marks a DONE state.
16007 @item (org-agenda-skip-entry-if 'timestamp)
16008 Skip current entry if it has any timestamp, may also be deadline or scheduled.
16009 @anchor{x-agenda-skip-entry-regexp}
16010 @item (org-agenda-skip-entry-if 'regexp "regular expression")
16011 Skip current entry if the regular expression matches in the entry.
16012 @item (org-agenda-skip-entry-if 'notregexp "regular expression")
16013 Skip current entry unless the regular expression matches.
16014 @item (org-agenda-skip-subtree-if 'regexp "regular expression")
16015 Same as above, but check and skip the entire subtree.
16016 @end table
16018 Therefore we could also have written the search for WAITING projects
16019 like this, even without defining a special function:
16021 @lisp
16022 (org-add-agenda-custom-command
16023  '("b" todo "PROJECT"
16024    ((org-agenda-skip-function '(org-agenda-skip-subtree-if
16025                                 'regexp ":waiting:"))
16026     (org-agenda-overriding-header "Projects waiting for something: "))))
16027 @end lisp
16029 @node Extracting agenda information, Using the property API, Special agenda views, Hacking
16030 @section Extracting agenda information
16031 @cindex agenda, pipe
16032 @cindex Scripts, for agenda processing
16034 @vindex org-agenda-custom-commands
16035 Org provides commands to access agenda information for the command
16036 line in Emacs batch mode.  This extracted information can be sent
16037 directly to a printer, or it can be read by a program that does further
16038 processing of the data.  The first of these commands is the function
16039 @code{org-batch-agenda}, that produces an agenda view and sends it as
16040 ASCII text to STDOUT.  The command takes a single string as parameter.
16041 If the string has length 1, it is used as a key to one of the commands
16042 you have configured in @code{org-agenda-custom-commands}, basically any
16043 key you can use after @kbd{C-c a}.  For example, to directly print the
16044 current TODO list, you could use
16046 @example
16047 emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
16048 @end example
16050 If the parameter is a string with 2 or more characters, it is used as a
16051 tags/TODO match string.  For example, to print your local shopping list
16052 (all items with the tag @samp{shop}, but excluding the tag
16053 @samp{NewYork}), you could use
16055 @example
16056 emacs -batch -l ~/.emacs                                      \
16057       -eval '(org-batch-agenda "+shop-NewYork")' | lpr
16058 @end example
16060 @noindent
16061 You may also modify parameters on the fly like this:
16063 @example
16064 emacs -batch -l ~/.emacs                                      \
16065    -eval '(org-batch-agenda "a"                               \
16066             org-agenda-span (quote month)                     \
16067             org-agenda-include-diary nil                      \
16068             org-agenda-files (quote ("~/org/project.org")))'  \
16069    | lpr
16070 @end example
16072 @noindent
16073 which will produce a 30-day agenda, fully restricted to the Org file
16074 @file{~/org/projects.org}, not even including the diary.
16076 If you want to process the agenda data in more sophisticated ways, you
16077 can use the command @code{org-batch-agenda-csv} to get a comma-separated
16078 list of values for each agenda item.  Each line in the output will
16079 contain a number of fields separated by commas.  The fields in a line
16080 are:
16082 @example
16083 category     @r{The category of the item}
16084 head         @r{The headline, without TODO keyword, TAGS and PRIORITY}
16085 type         @r{The type of the agenda entry, can be}
16086                 todo               @r{selected in TODO match}
16087                 tagsmatch          @r{selected in tags match}
16088                 diary              @r{imported from diary}
16089                 deadline           @r{a deadline}
16090                 scheduled          @r{scheduled}
16091                 timestamp          @r{appointment, selected by timestamp}
16092                 closed             @r{entry was closed on date}
16093                 upcoming-deadline  @r{warning about nearing deadline}
16094                 past-scheduled     @r{forwarded scheduled item}
16095                 block              @r{entry has date block including date}
16096 todo         @r{The TODO keyword, if any}
16097 tags         @r{All tags including inherited ones, separated by colons}
16098 date         @r{The relevant date, like 2007-2-14}
16099 time         @r{The time, like 15:00-16:50}
16100 extra        @r{String with extra planning info}
16101 priority-l   @r{The priority letter if any was given}
16102 priority-n   @r{The computed numerical priority}
16103 @end example
16105 @noindent
16106 Time and date will only be given if a timestamp (or deadline/scheduled)
16107 led to the selection of the item.
16109 A CSV list like this is very easy to use in a post-processing script.
16110 For example, here is a Perl program that gets the TODO list from
16111 Emacs/Org and prints all the items, preceded by a checkbox:
16113 @example
16114 #!/usr/bin/perl
16116 # define the Emacs command to run
16117 $cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'";
16119 # run it and capture the output
16120 $agenda = qx@{$cmd 2>/dev/null@};
16122 # loop over all lines
16123 foreach $line (split(/\n/,$agenda)) @{
16124   # get the individual values
16125   ($category,$head,$type,$todo,$tags,$date,$time,$extra,
16126    $priority_l,$priority_n) = split(/,/,$line);
16127   # process and print
16128   print "[ ] $head\n";
16130 @end example
16132 @node Using the property API, Using the mapping API, Extracting agenda information, Hacking
16133 @section Using the property API
16134 @cindex API, for properties
16135 @cindex properties, API
16137 Here is a description of the functions that can be used to work with
16138 properties.
16140 @defun org-entry-properties &optional pom which
16141 Get all properties of the entry at point-or-marker POM.@*
16142 This includes the TODO keyword, the tags, time strings for deadline,
16143 scheduled, and clocking, and any additional properties defined in the
16144 entry.  The return value is an alist.  Keys may occur multiple times
16145 if the property key was used several times.@*
16146 POM may also be nil, in which case the current entry is used.
16147 If WHICH is nil or `all', get all properties.  If WHICH is
16148 `special' or `standard', only get that subclass.
16149 @end defun
16150 @vindex org-use-property-inheritance
16151 @findex org-insert-property-drawer
16152 @defun org-entry-get pom property &optional inherit
16153 Get value of PROPERTY for entry at point-or-marker POM.  By default,
16154 this only looks at properties defined locally in the entry.  If INHERIT
16155 is non-nil and the entry does not have the property, then also check
16156 higher levels of the hierarchy.  If INHERIT is the symbol
16157 @code{selective}, use inheritance if and only if the setting of
16158 @code{org-use-property-inheritance} selects PROPERTY for inheritance.
16159 @end defun
16161 @defun org-entry-delete pom property
16162 Delete the property PROPERTY from entry at point-or-marker POM.
16163 @end defun
16165 @defun org-entry-put pom property value
16166 Set PROPERTY to VALUE for entry at point-or-marker POM.
16167 @end defun
16169 @defun org-buffer-property-keys &optional include-specials
16170 Get all property keys in the current buffer.
16171 @end defun
16173 @defun org-insert-property-drawer
16174 Insert a property drawer for the current entry.  Also
16175 @end defun
16177 @defun org-entry-put-multivalued-property pom property &rest values
16178 Set PROPERTY at point-or-marker POM to VALUES.  VALUES should be a list of
16179 strings.  They will be concatenated, with spaces as separators.
16180 @end defun
16182 @defun org-entry-get-multivalued-property pom property
16183 Treat the value of the property PROPERTY as a whitespace-separated list of
16184 values and return the values as a list of strings.
16185 @end defun
16187 @defun org-entry-add-to-multivalued-property pom property value
16188 Treat the value of the property PROPERTY as a whitespace-separated list of
16189 values and make sure that VALUE is in this list.
16190 @end defun
16192 @defun org-entry-remove-from-multivalued-property pom property value
16193 Treat the value of the property PROPERTY as a whitespace-separated list of
16194 values and make sure that VALUE is @emph{not} in this list.
16195 @end defun
16197 @defun org-entry-member-in-multivalued-property pom property value
16198 Treat the value of the property PROPERTY as a whitespace-separated list of
16199 values and check if VALUE is in this list.
16200 @end defun
16202 @defopt org-property-allowed-value-functions
16203 Hook for functions supplying allowed values for a specific property.
16204 The functions must take a single argument, the name of the property, and
16205 return a flat list of allowed values.  If @samp{:ETC} is one of
16206 the values, use the values as completion help, but allow also other values
16207 to be entered.  The functions must return @code{nil} if they are not
16208 responsible for this property.
16209 @end defopt
16211 @node Using the mapping API,  , Using the property API, Hacking
16212 @section Using the mapping API
16213 @cindex API, for mapping
16214 @cindex mapping entries, API
16216 Org has sophisticated mapping capabilities to find all entries satisfying
16217 certain criteria.  Internally, this functionality is used to produce agenda
16218 views, but there is also an API that can be used to execute arbitrary
16219 functions for each or selected entries.  The main entry point for this API
16222 @defun org-map-entries func &optional match scope &rest skip
16223 Call FUNC at each headline selected by MATCH in SCOPE.
16225 FUNC is a function or a Lisp form.  The function will be called without
16226 arguments, with the cursor positioned at the beginning of the headline.
16227 The return values of all calls to the function will be collected and
16228 returned as a list.
16230 The call to FUNC will be wrapped into a save-excursion form, so FUNC
16231 does not need to preserve point.  After evaluation, the cursor will be
16232 moved to the end of the line (presumably of the headline of the
16233 processed entry) and search continues from there.  Under some
16234 circumstances, this may not produce the wanted results.  For example,
16235 if you have removed (e.g.@: archived) the current (sub)tree it could
16236 mean that the next entry will be skipped entirely.  In such cases, you
16237 can specify the position from where search should continue by making
16238 FUNC set the variable `org-map-continue-from' to the desired buffer
16239 position.
16241 MATCH is a tags/property/todo match as it is used in the agenda match view.
16242 Only headlines that are matched by this query will be considered during
16243 the iteration.  When MATCH is nil or t, all headlines will be
16244 visited by the iteration.
16246 SCOPE determines the scope of this command.  It can be any of:
16248 @example
16249 nil     @r{the current buffer, respecting the restriction if any}
16250 tree    @r{the subtree started with the entry at point}
16251 region  @r{The entries within the active region, if any}
16252 file    @r{the current buffer, without restriction}
16253 file-with-archives
16254         @r{the current buffer, and any archives associated with it}
16255 agenda  @r{all agenda files}
16256 agenda-with-archives
16257         @r{all agenda files with any archive files associated with them}
16258 (file1 file2 ...)
16259         @r{if this is a list, all files in the list will be scanned}
16260 @end example
16261 @noindent
16262 The remaining args are treated as settings for the skipping facilities of
16263 the scanner.  The following items can be given here:
16265 @vindex org-agenda-skip-function
16266 @example
16267 archive   @r{skip trees with the archive tag}
16268 comment   @r{skip trees with the COMMENT keyword}
16269 function or Lisp form
16270           @r{will be used as value for @code{org-agenda-skip-function},}
16271           @r{so whenever the function returns t, FUNC}
16272           @r{will not be called for that entry and search will}
16273           @r{continue from the point where the function leaves it}
16274 @end example
16275 @end defun
16277 The function given to that mapping routine can really do anything you like.
16278 It can use the property API (@pxref{Using the property API}) to gather more
16279 information about the entry, or in order to change metadata in the entry.
16280 Here are a couple of functions that might be handy:
16282 @defun org-todo &optional arg
16283 Change the TODO state of the entry.  See the docstring of the functions for
16284 the many possible values for the argument ARG.
16285 @end defun
16287 @defun org-priority &optional action
16288 Change the priority of the entry.  See the docstring of this function for the
16289 possible values for ACTION.
16290 @end defun
16292 @defun org-toggle-tag tag &optional onoff
16293 Toggle the tag TAG in the current entry.  Setting ONOFF to either @code{on}
16294 or @code{off} will not toggle tag, but ensure that it is either on or off.
16295 @end defun
16297 @defun org-promote
16298 Promote the current entry.
16299 @end defun
16301 @defun org-demote
16302 Demote the current entry.
16303 @end defun
16305 Here is a simple example that will turn all entries in the current file with
16306 a tag @code{TOMORROW} into TODO entries with the keyword @code{UPCOMING}.
16307 Entries in comment trees and in archive trees will be ignored.
16309 @lisp
16310 (org-map-entries
16311    '(org-todo "UPCOMING")
16312    "+TOMORROW" 'file 'archive 'comment)
16313 @end lisp
16315 The following example counts the number of entries with TODO keyword
16316 @code{WAITING}, in all agenda files.
16318 @lisp
16319 (length (org-map-entries t "/+WAITING" 'agenda))
16320 @end lisp
16322 @node MobileOrg, History and Acknowledgments, Hacking, Top
16323 @appendix MobileOrg
16324 @cindex iPhone
16325 @cindex MobileOrg
16327 @i{MobileOrg} is the name of the mobile companion app for Org mode, currently
16328 available for iOS and for Android.  @i{MobileOrg} offers offline viewing and
16329 capture support for an Org mode system rooted on a ``real'' computer.  It
16330 does also allow you to record changes to existing entries.
16331 The @uref{http://mobileorg.ncogni.to/, iOS implementation} for the
16332 @i{iPhone/iPod Touch/iPad} series of devices, was developed by Richard
16333 Moreland.  Android users should check out
16334 @uref{http://wiki.github.com/matburt/mobileorg-android/, MobileOrg Android}
16335 by Matt Jones.  The two implementations are not identical but offer similar
16336 features.
16338 This appendix describes the support Org has for creating agenda views in a
16339 format that can be displayed by @i{MobileOrg}, and for integrating notes
16340 captured and changes made by @i{MobileOrg} into the main system.
16342 For changing tags and TODO states in MobileOrg, you should have set up the
16343 customization variables @code{org-todo-keywords} and @code{org-tags-alist} to
16344 cover all important tags and TODO keywords, even if individual files use only
16345 part of these.  MobileOrg will also offer you states and tags set up with
16346 in-buffer settings, but it will understand the logistics of TODO state
16347 @i{sets} (@pxref{Per-file keywords}) and @i{mutually exclusive} tags
16348 (@pxref{Setting tags}) only for those set in these variables.
16350 @menu
16351 * Setting up the staging area::  Where to interact with the mobile device
16352 * Pushing to MobileOrg::        Uploading Org files and agendas
16353 * Pulling from MobileOrg::      Integrating captured and flagged items
16354 @end menu
16356 @node Setting up the staging area, Pushing to MobileOrg, MobileOrg, MobileOrg
16357 @section Setting up the staging area
16359 MobileOrg needs to interact with Emacs through a directory on a server.  If you
16360 are using a public server, you should consider to encrypt the files that are
16361 uploaded to the server.  This can be done with Org mode 7.02 and with
16362 @i{MobileOrg 1.5} (iPhone version), and you need an @file{openssl}
16363 installation on your system.  To turn on encryption, set a password in
16364 @i{MobileOrg} and, on the Emacs side, configure the variable
16365 @code{org-mobile-use-encryption}@footnote{If you can safely store the
16366 password in your Emacs setup, you might also want to configure
16367 @code{org-mobile-encryption-password}.  Please read the docstring of that
16368 variable.  Note that encryption will apply only to the contents of the
16369 @file{.org} files.  The file names themselves will remain visible.}.
16371 The easiest way to create that directory is to use a free
16372 @uref{http://dropbox.com,Dropbox.com} account@footnote{If you cannot use
16373 Dropbox, or if your version of MobileOrg does not support it, you can use a
16374 webdav server.  For more information, check out the documentation of MobileOrg and also this
16375 @uref{http://orgmode.org/worg/org-faq.html#mobileorg_webdav, FAQ entry}.}.
16376 When MobileOrg first connects to your Dropbox, it will create a directory
16377 @i{MobileOrg} inside the Dropbox.  After the directory has been created, tell
16378 Emacs about it:
16380 @lisp
16381 (setq org-mobile-directory "~/Dropbox/MobileOrg")
16382 @end lisp
16384 Org mode has commands to put files for @i{MobileOrg} into that directory,
16385 and to read captured notes from there.
16387 @node Pushing to MobileOrg, Pulling from MobileOrg, Setting up the staging area, MobileOrg
16388 @section Pushing to MobileOrg
16390 This operation copies all files currently listed in @code{org-mobile-files}
16391 to the directory @code{org-mobile-directory}.  By default this list contains
16392 all agenda files (as listed in @code{org-agenda-files}), but additional files
16393 can be included by customizing @code{org-mobile-files}.  File names will be
16394 staged with paths relative to @code{org-directory}, so all files should be
16395 inside this directory.  The push operation also creates a special Org file
16396 @file{agendas.org} with all custom agenda view defined by the
16397 user@footnote{While creating the agendas, Org mode will force ID properties
16398 on all referenced entries, so that these entries can be uniquely identified
16399 if @i{MobileOrg} flags them for further action.  If you do not want to get
16400 these properties in so many entries, you can set the variable
16401 @code{org-mobile-force-id-on-agenda-items} to @code{nil}.  Org mode will then
16402 rely on outline paths, in the hope that these will be unique enough.}.
16403 Finally, Org writes the file @file{index.org}, containing links to all other
16404 files.  @i{MobileOrg} first reads this file from the server, and then
16405 downloads all agendas and Org files listed in it.  To speed up the download,
16406 MobileOrg will only read files whose checksums@footnote{stored automatically
16407 in the file @file{checksums.dat}} have changed.
16409 @node Pulling from MobileOrg,  , Pushing to MobileOrg, MobileOrg
16410 @section Pulling from MobileOrg
16412 When @i{MobileOrg} synchronizes with the server, it not only pulls the Org
16413 files for viewing.  It also appends captured entries and pointers to flagged
16414 and changed entries to the file @file{mobileorg.org} on the server.  Org has
16415 a @emph{pull} operation that integrates this information into an inbox file
16416 and operates on the pointers to flagged entries.  Here is how it works:
16418 @enumerate
16419 @item
16420 Org moves all entries found in
16421 @file{mobileorg.org}@footnote{@file{mobileorg.org} will be empty after this
16422 operation.} and appends them to the file pointed to by the variable
16423 @code{org-mobile-inbox-for-pull}.  Each captured entry and each editing event
16424 will be a top-level entry in the inbox file.
16425 @item
16426 After moving the entries, Org will attempt to implement the changes made in
16427 @i{MobileOrg}.  Some changes are applied directly and without user
16428 interaction.  Examples are all changes to tags, TODO state, headline and body
16429 text that can be cleanly applied.  Entries that have been flagged for further
16430 action will receive a tag @code{:FLAGGED:}, so that they can be easily found
16431 again.  When there is a problem finding an entry or applying the change, the
16432 pointer entry will remain in the inbox and will be marked with an error
16433 message.  You need to later resolve these issues by hand.
16434 @item
16435 Org will then generate an agenda view with all flagged entries.  The user
16436 should then go through these entries and do whatever actions are necessary.
16437 If a note has been stored while flagging an entry in @i{MobileOrg}, that note
16438 will be displayed in the echo area when the cursor is on the corresponding
16439 agenda line.
16440 @table @kbd
16441 @kindex ?
16442 @item ?
16443 Pressing @kbd{?} in that special agenda will display the full flagging note in
16444 another window and also push it onto the kill ring.  So you could use @kbd{?
16445 z C-y C-c C-c} to store that flagging note as a normal note in the entry.
16446 Pressing @kbd{?} twice in succession will offer to remove the
16447 @code{:FLAGGED:} tag along with the recorded flagging note (which is stored
16448 in a property).  In this way you indicate that the intended processing for
16449 this flagged entry is finished.
16450 @end table
16451 @end enumerate
16453 @kindex C-c a ?
16454 If you are not able to process all flagged entries directly, you can always
16455 return to this agenda view@footnote{Note, however, that there is a subtle
16456 difference.  The view created automatically by @kbd{M-x org-mobile-pull
16457 @key{RET}} is guaranteed to search all files that have been addressed by the
16458 last pull.  This might include a file that is not currently in your list of
16459 agenda files.  If you later use @kbd{C-c a ?} to regenerate the view, only
16460 the current agenda files will be searched.} using @kbd{C-c a ?}.
16462 @node History and Acknowledgments, Main Index, MobileOrg, Top
16463 @appendix History and acknowledgments
16464 @cindex acknowledgments
16465 @cindex history
16466 @cindex thanks
16468 Org was born in 2003, out of frustration over the user interface of the Emacs
16469 Outline mode.  I was trying to organize my notes and projects, and using
16470 Emacs seemed to be the natural way to go.  However, having to remember eleven
16471 different commands with two or three keys per command, only to hide and show
16472 parts of the outline tree, that seemed entirely unacceptable to me.  Also,
16473 when using outlines to take notes, I constantly wanted to restructure the
16474 tree, organizing it parallel to my thoughts and plans.  @emph{Visibility
16475 cycling} and @emph{structure editing} were originally implemented in the
16476 package @file{outline-magic.el}, but quickly moved to the more general
16477 @file{org.el}.  As this environment became comfortable for project planning,
16478 the next step was adding @emph{TODO entries}, basic @emph{timestamps}, and
16479 @emph{table support}.  These areas highlighted the two main goals that Org
16480 still has today: to be a new, outline-based, plain text mode with innovative
16481 and intuitive editing features, and to incorporate project planning
16482 functionality directly into a notes file.
16484 Since the first release, literally thousands of emails to me or to
16485 @email{emacs-orgmode@@gnu.org} have provided a constant stream of bug
16486 reports, feedback, new ideas, and sometimes patches and add-on code.
16487 Many thanks to everyone who has helped to improve this package.  I am
16488 trying to keep here a list of the people who had significant influence
16489 in shaping one or more aspects of Org.  The list may not be
16490 complete, if I have forgotten someone, please accept my apologies and
16491 let me know.
16493 Before I get to this list, a few special mentions are in order:
16495 @table @i
16496 @item Bastien Guerry
16497 Bastien has written a large number of extensions to Org (most of them
16498 integrated into the core by now), including the @LaTeX{} exporter and the plain
16499 list parser.  His support during the early days, when he basically acted as
16500 co-maintainer, was central to the success of this project.  Bastien also
16501 invented Worg, helped establishing the Web presence of Org, and sponsored
16502 hosting costs for the orgmode.org website.
16503 @item Eric Schulte and Dan Davison
16504 Eric and Dan are jointly responsible for the Org-babel system, which turns
16505 Org into a multi-language environment for evaluating code and doing literate
16506 programming and reproducible research.
16507 @item John Wiegley
16508 John has contributed a number of great ideas and patches directly to Org,
16509 including the attachment system (@file{org-attach.el}), integration with
16510 Apple Mail (@file{org-mac-message.el}), hierarchical dependencies of TODO
16511 items, habit tracking (@file{org-habits.el}), and encryption
16512 (@file{org-crypt.el}).  Also, the capture system is really an extended copy
16513 of his great @file{remember.el}.
16514 @item Sebastian Rose
16515 Without Sebastian, the HTML/XHTML publishing of Org would be the pitiful work
16516 of an ignorant amateur.  Sebastian has pushed this part of Org onto a much
16517 higher level.  He also wrote @file{org-info.js}, a Java script for displaying
16518 webpages derived from Org using an Info-like or a folding interface with
16519 single-key navigation.
16520 @end table
16522 @noindent OK, now to the full list of contributions!  Again, please let me
16523 know what I am missing here!
16525 @itemize @bullet
16527 @item
16528 @i{Russel Adams} came up with the idea for drawers.
16529 @item
16530 @i{Thomas Baumann} wrote @file{org-bbdb.el} and @file{org-mhe.el}.
16531 @item
16532 @i{Christophe Bataillon} created the great unicorn logo that we use on the
16533 Org mode website.
16534 @item
16535 @i{Alex Bochannek} provided a patch for rounding timestamps.
16536 @item
16537 @i{Jan Böcker} wrote @file{org-docview.el}.
16538 @item
16539 @i{Brad Bozarth} showed how to pull RSS feed data into Org mode files.
16540 @item
16541 @i{Tom Breton} wrote @file{org-choose.el}.
16542 @item
16543 @i{Charles Cave}'s suggestion sparked the implementation of templates
16544 for Remember, which are now templates for capture.
16545 @item
16546 @i{Pavel Chalmoviansky} influenced the agenda treatment of items with
16547 specified time.
16548 @item
16549 @i{Gregory Chernov} patched support for Lisp forms into table
16550 calculations and improved XEmacs compatibility, in particular by porting
16551 @file{nouline.el} to XEmacs.
16552 @item
16553 @i{Sacha Chua} suggested copying some linking code from Planner.
16554 @item
16555 @i{Baoqiu Cui} contributed the DocBook exporter.
16556 @item
16557 @i{Eddward DeVilla} proposed and tested checkbox statistics.  He also
16558 came up with the idea of properties, and that there should be an API for
16559 them.
16560 @item
16561 @i{Nick Dokos} tracked down several nasty bugs.
16562 @item
16563 @i{Kees Dullemond} used to edit projects lists directly in HTML and so
16564 inspired some of the early development, including HTML export.  He also
16565 asked for a way to narrow wide table columns.
16566 @item
16567 @i{Thomas S. Dye} contributed documentation on Worg and helped integrating
16568 the Org-Babel documentation into the manual.
16569 @item
16570 @i{Christian Egli} converted the documentation into Texinfo format, inspired
16571 the agenda, patched CSS formatting into the HTML exporter, and wrote
16572 @file{org-taskjuggler.el}.
16573 @item
16574 @i{David Emery} provided a patch for custom CSS support in exported
16575 HTML agendas.
16576 @item
16577 @i{Nic Ferrier} contributed mailcap and XOXO support.
16578 @item
16579 @i{Miguel A. Figueroa-Villanueva} implemented hierarchical checkboxes.
16580 @item
16581 @i{John Foerch} figured out how to make incremental search show context
16582 around a match in a hidden outline tree.
16583 @item
16584 @i{Raimar Finken} wrote @file{org-git-line.el}.
16585 @item
16586 @i{Mikael Fornius} works as a mailing list moderator.
16587 @item
16588 @i{Austin Frank} works as a mailing list moderator.
16589 @item
16590 @i{Eric Fraga} drove the development of BEAMER export with ideas and
16591 testing.
16592 @item
16593 @i{Barry Gidden} did proofreading the manual in preparation for the book
16594 publication through Network Theory Ltd.
16595 @item
16596 @i{Niels Giesen} had the idea to automatically archive DONE trees.
16597 @item
16598 @i{Nicolas Goaziou} rewrote much of the plain list code.
16599 @item
16600 @i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
16601 @item
16602 @i{Brian Gough} of Network Theory Ltd publishes the Org mode manual as a
16603 book.
16604 @item
16605 @i{Bernt Hansen} has driven much of the support for auto-repeating tasks,
16606 task state change logging, and the clocktable.  His clear explanations have
16607 been critical when we started to adopt the Git version control system.
16608 @item
16609 @i{Manuel Hermenegildo} has contributed various ideas, small fixes and
16610 patches.
16611 @item
16612 @i{Phil Jackson} wrote @file{org-irc.el}.
16613 @item
16614 @i{Scott Jaderholm} proposed footnotes, control over whitespace between
16615 folded entries, and column view for properties.
16616 @item
16617 @i{Matt Jones} wrote @i{MobileOrg Android}.
16618 @item
16619 @i{Tokuya Kameshima} wrote @file{org-wl.el} and @file{org-mew.el}.
16620 @item
16621 @i{Shidai Liu} ("Leo") asked for embedded @LaTeX{} and tested it.  He also
16622 provided frequent feedback and some patches.
16623 @item
16624 @i{Matt Lundin} has proposed last-row references for table formulas and named
16625 invisible anchors.  He has also worked a lot on the FAQ.
16626 @item
16627 @i{David Maus} wrote @file{org-atom.el}, maintains the issues file for Org,
16628 and is a prolific contributor on the mailing list with competent replies,
16629 small fixes and patches.
16630 @item
16631 @i{Jason F. McBrayer} suggested agenda export to CSV format.
16632 @item
16633 @i{Max Mikhanosha} came up with the idea of refiling.
16634 @item
16635 @i{Dmitri Minaev} sent a patch to set priority limits on a per-file
16636 basis.
16637 @item
16638 @i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler
16639 happy.
16640 @item
16641 @i{Richard Moreland} wrote @i{MobileOrg} for the iPhone.
16642 @item
16643 @i{Rick Moynihan} proposed allowing multiple TODO sequences in a file
16644 and being able to quickly restrict the agenda to a subtree.
16645 @item
16646 @i{Todd Neal} provided patches for links to Info files and Elisp forms.
16647 @item
16648 @i{Greg Newman} refreshed the unicorn logo into its current form.
16649 @item
16650 @i{Tim O'Callaghan} suggested in-file links, search options for general
16651 file links, and TAGS.
16652 @item
16653 @i{Osamu Okano} wrote @file{orgcard2ref.pl}, a Perl program to create a text
16654 version of the reference card.
16655 @item
16656 @i{Takeshi Okano} translated the manual and David O'Toole's tutorial
16657 into Japanese.
16658 @item
16659 @i{Oliver Oppitz} suggested multi-state TODO items.
16660 @item
16661 @i{Scott Otterson} sparked the introduction of descriptive text for
16662 links, among other things.
16663 @item
16664 @i{Pete Phillips} helped during the development of the TAGS feature, and
16665 provided frequent feedback.
16666 @item
16667 @i{Martin Pohlack} provided the code snippet to bundle character insertion
16668 into bundles of 20 for undo.
16669 @item
16670 @i{T.V. Raman} reported bugs and suggested improvements.
16671 @item
16672 @i{Matthias Rempe} (Oelde) provided ideas, Windows support, and quality
16673 control.
16674 @item
16675 @i{Paul Rivier} provided the basic implementation of named footnotes.  He
16676 also acted as mailing list moderator for some time.
16677 @item
16678 @i{Kevin Rogers} contributed code to access VM files on remote hosts.
16679 @item
16680 @i{Frank Ruell} solved the mystery of the @code{keymapp nil} bug, a
16681 conflict with @file{allout.el}.
16682 @item
16683 @i{Jason Riedy} generalized the send-receive mechanism for Orgtbl tables with
16684 extensive patches.
16685 @item
16686 @i{Philip Rooke} created the Org reference card, provided lots
16687 of feedback, developed and applied standards to the Org documentation.
16688 @item
16689 @i{Christian Schlauer} proposed angular brackets around links, among
16690 other things.
16691 @item
16692 @i{Paul Sexton} wrote @file{org-ctags.el}.
16693 @item
16694 Linking to VM/BBDB/Gnus was first inspired by @i{Tom Shannon}'s
16695 @file{organizer-mode.el}.
16696 @item
16697 @i{Ilya Shlyakhter} proposed the Archive Sibling, line numbering in literal
16698 examples, and remote highlighting for referenced code lines.
16699 @item
16700 @i{Stathis Sideris} wrote the @file{ditaa.jar} ASCII to PNG converter that is
16701 now packaged into Org's @file{contrib} directory.
16702 @item
16703 @i{Daniel Sinder} came up with the idea of internal archiving by locking
16704 subtrees.
16705 @item
16706 @i{Dale Smith} proposed link abbreviations.
16707 @item
16708 @i{James TD Smith} has contributed a large number of patches for useful
16709 tweaks and features.
16710 @item
16711 @i{Adam Spiers} asked for global linking commands, inspired the link
16712 extension system, added support for mairix, and proposed the mapping API.
16713 @item
16714 @i{Ulf Stegemann} created the table to translate special symbols to HTML,
16715 @LaTeX{}, UTF-8, Latin-1 and ASCII.
16716 @item
16717 @i{Andy Stewart} contributed code to @file{org-w3m.el}, to copy HTML content
16718 with links transformation to Org syntax.
16719 @item
16720 @i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
16721 chapter about publishing.
16722 @item
16723 @i{Jambunathan K} contributed the ODT exporter.
16724 @item
16725 @i{Sebastien Vauban} reported many issues with @LaTeX{} and BEAMER export and
16726 enabled source code highlighting in Gnus.
16727 @item
16728 @i{Stefan Vollmar} organized a video-recorded talk at the
16729 Max-Planck-Institute for Neurology.  He also inspired the creation of a
16730 concept index for HTML export.
16731 @item
16732 @i{J@"urgen Vollmer} contributed code generating the table of contents
16733 in HTML output.
16734 @item
16735 @i{Samuel Wales} has provided important feedback and bug reports.
16736 @item
16737 @i{Chris Wallace} provided a patch implementing the @samp{QUOTE}
16738 keyword.
16739 @item
16740 @i{David Wainberg} suggested archiving, and improvements to the linking
16741 system.
16742 @item
16743 @i{Carsten Wimmer} suggested some changes and helped fix a bug in
16744 linking to Gnus.
16745 @item
16746 @i{Roland Winkler} requested additional key bindings to make Org
16747 work on a tty.
16748 @item
16749 @i{Piotr Zielinski} wrote @file{org-mouse.el}, proposed agenda blocks
16750 and contributed various ideas and code snippets.
16751 @item
16752 @end itemize
16755 @node Main Index, Key Index, History and Acknowledgments, Top
16756 @unnumbered Concept index
16758 @printindex cp
16760 @node Key Index, Command and Function Index, Main Index, Top
16761 @unnumbered Key index
16763 @printindex ky
16765 @node Command and Function Index, Variable Index, Key Index, Top
16766 @unnumbered Command and function index
16768 @printindex fn
16770 @node Variable Index,  , Command and Function Index, Top
16771 @unnumbered Variable index
16773 This is not a complete index of variables and faces, only the ones that are
16774 mentioned in the manual.  For a more complete list, use @kbd{M-x
16775 org-customize @key{RET}} and then click yourself through the tree.
16777 @printindex vr
16779 @bye
16781 @c Local variables:
16782 @c fill-column: 77
16783 @c indent-tabs-mode: nil
16784 @c paragraph-start:    "\b\\|^@[a-zA-Z]*[ \n]\\|^@x?org\\(key\\|cmd\\)\\|\f\\|[  ]*$"
16785 @c paragraph-separate: "\b\\|^@[a-zA-Z]*[ \n]\\|^@x?org\\(key\\|cmd\\)\\|[       \f]*$"
16786 @c End:
16789 @c  LocalWords:  webdavhost pre