Merge branch 'command-name-fixes'
[org-mode/org-jambu.git] / doc / org.texi
blob3944e8b245b072bc78af25b8fe5eeaa83824e052
2 \input texinfo
3 @c %**start of header
4 @setfilename ../../info/org
5 @settitle The Org Manual
7 @set VERSION 7.3
8 @set DATE November 2010
10 @c Use proper quote and backtick for code sections in PDF output
11 @c Cf. Texinfo manual 14.2
12 @set txicodequoteundirected
13 @set txicodequotebacktick
15 @c Version and Contact Info
16 @set MAINTAINERSITE @uref{http://orgmode.org,maintainers webpage}
17 @set AUTHOR Carsten Dominik
18 @set MAINTAINER Carsten Dominik
19 @set MAINTAINEREMAIL @email{carsten at orgmode dot org}
20 @set MAINTAINERCONTACT @uref{mailto:carsten at orgmode dot org,contact the maintainer}
21 @c %**end of header
22 @finalout
25 @c -----------------------------------------------------------------------------
27 @c Macro definitions for commands and keys
28 @c =======================================
30 @c The behavior of the key/command macros will depend on the flag cmdnames
31 @c When set, commands names are shown.  When clear, they are not shown.
33 @set cmdnames
35 @c Below we define the following macros for Org key tables:
37 @c orgkey{key}                        A key item                     
38 @c orgcmd{key,cmd}                    Key with command name
39 @c xorgcmd{key,cmmand}                Key with command name as @itemx
40 @c orgcmdnki{key,cmd}                 Like orgcmd, but do not index the key
41 @c orgcmdtkc{text,key,cmd}            Like orgcmd,special text instead of key
42 @c orgcmdkkc{key1,key2,cmd}           Two keys with one command name, use "or"
43 @c orgcmdkxkc{key1,key2,cmd}          Two keys with one command name, but
44 @c                                    different functions, so format as @itemx
45 @c orgcmdkskc{key1,key2,cmd}          Same as orgcmdkkc, but use "or short"
46 @c xorgcmdkskc{key1,key2,cmd}         Same as previous, but use @itemx
47 @c orgcmdkkcc{key1,key2,cmd1,cmd2}    Two keys and two commands
49 @c a key but no command
50 @c    Inserts:    @item key
51 @macro orgkey{key}
52 @kindex \key\
53 @item @kbd{\key\}
54 @end macro
56 @macro xorgkey{key}
57 @kindex \key\
58 @itemx @kbd{\key\}
59 @end macro
61 @c one key with a command
62 @c   Inserts:    @item KEY               COMMAND
63 @macro orgcmd{key,command}
64 @ifset cmdnames
65 @kindex \key\
66 @findex \command\
67 @iftex
68 @item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
69 @end iftex
70 @ifnottex
71 @item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
72 @end ifnottex
73 @end ifset
74 @ifclear cmdnames
75 @kindex \key\
76 @item @kbd{\key\}
77 @end ifclear
78 @end macro
80 @c One key with one command, formatted using @itemx
81 @c   Inserts:    @itemx KEY               COMMAND
82 @macro xorgcmd{key,command}
83 @ifset cmdnames
84 @kindex \key\
85 @findex \command\
86 @iftex
87 @itemx @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
88 @end iftex
89 @ifnottex
90 @itemx @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
91 @end ifnottex
92 @end ifset
93 @ifclear cmdnames
94 @kindex \key\
95 @itemx @kbd{\key\}
96 @end ifclear
97 @end macro
99 @c one key with a command, bit do not index the key
100 @c   Inserts:    @item KEY               COMMAND
101 @macro orgcmdnki{key,command}
102 @ifset cmdnames
103 @findex \command\
104 @iftex
105 @item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
106 @end iftex
107 @ifnottex
108 @item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
109 @end ifnottex
110 @end ifset
111 @ifclear cmdnames
112 @item @kbd{\key\}
113 @end ifclear
114 @end macro
116 @c one key with a command, and special text to replace key in item
117 @c   Inserts:    @item TEXT                    COMMAND
118 @macro orgcmdtkc{text,key,command}
119 @ifset cmdnames
120 @kindex \key\
121 @findex \command\
122 @iftex
123 @item @kbd{\text\} @hskip 0pt plus 1filll @code{\command\}
124 @end iftex
125 @ifnottex
126 @item @kbd{\text\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
127 @end ifnottex
128 @end ifset
129 @ifclear cmdnames
130 @kindex \key\
131 @item @kbd{\text\}
132 @end ifclear
133 @end macro
135 @c two keys with one command
136 @c   Inserts:    @item KEY1 or KEY2            COMMAND
137 @macro orgcmdkkc{key1,key2,command}
138 @ifset cmdnames
139 @kindex \key1\
140 @kindex \key2\
141 @findex \command\
142 @iftex
143 @item @kbd{\key1\} @ @r{or} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
144 @end iftex
145 @ifnottex
146 @item @kbd{\key1\} @ @r{or} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
147 @end ifnottex
148 @end ifset
149 @ifclear cmdnames
150 @kindex \key1\
151 @kindex \key2\
152 @item @kbd{\key1\} @ @r{or} @ @kbd{\key2\}
153 @end ifclear
154 @end macro
156 @c Two keys with one command name, but different functions, so format as
157 @c @itemx
158 @c   Inserts:    @item KEY1
159 @c               @itemx KEY2                COMMAND
160 @macro orgcmdkxkc{key1,key2,command}
161 @ifset cmdnames
162 @kindex \key1\
163 @kindex \key2\
164 @findex \command\
165 @iftex
166 @item @kbd{\key1\}
167 @itemx @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
168 @end iftex
169 @ifnottex
170 @item @kbd{\key1\}
171 @itemx @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
172 @end ifnottex
173 @end ifset
174 @ifclear cmdnames
175 @kindex \key1\
176 @kindex \key2\
177 @item @kbd{\key1\}
178 @itemx @kbd{\key2\}
179 @end ifclear
180 @end macro
182 @c Same as previous, but use "or short"
183 @c   Inserts:    @item KEY1 or short KEY2            COMMAND
184 @macro orgcmdkskc{key1,key2,command}
185 @ifset cmdnames
186 @kindex \key1\
187 @kindex \key2\
188 @findex \command\
189 @iftex
190 @item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
191 @end iftex
192 @ifnottex
193 @item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
194 @end ifnottex
195 @end ifset
196 @ifclear cmdnames
197 @kindex \key1\
198 @kindex \key2\
199 @item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\}
200 @end ifclear
201 @end macro
203 @c Same as previous, but use @itemx
204 @c   Inserts:    @itemx KEY1 or short KEY2            COMMAND
205 @macro xorgcmdkskc{key1,key2,command}
206 @ifset cmdnames
207 @kindex \key1\
208 @kindex \key2\
209 @findex \command\
210 @iftex
211 @itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
212 @end iftex
213 @ifnottex
214 @itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
215 @end ifnottex
216 @end ifset
217 @ifclear cmdnames
218 @kindex \key1\
219 @kindex \key2\
220 @itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\}
221 @end ifclear
222 @end macro
224 @c two keys with two commands
225 @c   Inserts:    @item KEY1                        COMMAND1
226 @c               @itemx KEY2                       COMMAND2
227 @macro orgcmdkkcc{key1,key2,command1,command2}
228 @ifset cmdnames
229 @kindex \key1\
230 @kindex \key2\
231 @findex \command1\
232 @findex \command2\
233 @iftex
234 @item @kbd{\key1\} @hskip 0pt plus 1filll @code{\command1\}
235 @itemx @kbd{\key2\} @hskip 0pt plus 1filll @code{\command2\}
236 @end iftex
237 @ifnottex
238 @item @kbd{\key1\} @tie{}@tie{}@tie{}@tie{}(@code{\command1\})
239 @itemx @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command2\})
240 @end ifnottex
241 @end ifset
242 @ifclear cmdnames
243 @kindex \key1\
244 @kindex \key2\
245 @item @kbd{\key1\}
246 @itemx @kbd{\key2\}
247 @end ifclear
248 @end macro
249 @c -----------------------------------------------------------------------------
251 @iftex
252 @c @hyphenation{time-stamp time-stamps time-stamp-ing time-stamp-ed}
253 @end iftex
255 @c Subheadings inside a table.
256 @macro tsubheading{text}
257 @ifinfo
258 @subsubheading \text\
259 @end ifinfo
260 @ifnotinfo
261 @item @b{\text\}
262 @end ifnotinfo
263 @end macro
265 @copying
266 This manual is for Org version @value{VERSION}.
268 Copyright @copyright{} 2004, 2005, 2006, 2007, 2008, 2009, 2010
269 Free Software Foundation, Inc.
271 @quotation
272 Permission is granted to copy, distribute and/or modify this document
273 under the terms of the GNU Free Documentation License, Version 1.3 or
274 any later version published by the Free Software Foundation; with no
275 Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
276 and with the Back-Cover Texts as in (a) below.  A copy of the license
277 is included in the section entitled ``GNU Free Documentation License.''
279 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
280 modify this GNU manual.  Buying copies from the FSF supports it in
281 developing GNU and promoting software freedom.''
283 This document is part of a collection distributed under the GNU Free
284 Documentation License.  If you want to distribute this document
285 separately from the collection, you can do so by adding a copy of the
286 license to the document, as described in section 6 of the license.
287 @end quotation
288 @end copying
290 @dircategory Emacs
291 @direntry
292 * Org Mode: (org).      Outline-based notes management and organizer
293 @end direntry
295 @titlepage
296 @title The Org Manual
298 @subtitle Release @value{VERSION}
299 @author by Carsten Dominik
300 with contributions by David O'Toole, Bastien Guerry, Philip Rooke, Dan Davison, Eric Schulte, and Thomas Dye
302 @c The following two commands start the copyright page.
303 @page
304 @vskip 0pt plus 1filll
305 @insertcopying
306 @end titlepage
308 @c Output the table of contents at the beginning.
309 @contents
311 @ifnottex
312 @node Top, Introduction, (dir), (dir)
313 @top Org Mode Manual
315 @insertcopying
316 @end ifnottex
318 @menu
319 * Introduction::                Getting started
320 * Document Structure::          A tree works like your brain
321 * Tables::                      Pure magic for quick formatting
322 * Hyperlinks::                  Notes in context
323 * TODO Items::                  Every tree branch can be a TODO item
324 * Tags::                        Tagging headlines and matching sets of tags
325 * Properties and Columns::      Storing information about an entry
326 * Dates and Times::             Making items useful for planning
327 * Capture - Refile - Archive::  The ins and outs for projects
328 * Agenda Views::                Collecting information into views
329 * Markup::                      Prepare text for rich export
330 * Exporting::                   Sharing and publishing of notes
331 * Publishing::                  Create a web site of linked Org files
332 * Working With Source Code::    Export, evaluate, and tangle code blocks
333 * Miscellaneous::               All the rest which did not fit elsewhere
334 * Hacking::                     How to hack your way around
335 * MobileOrg::                   Viewing and capture on a mobile device
336 * History and Acknowledgments::  How Org came into being
337 * Main Index::                  An index of Org's concepts and features
338 * Key Index::                   Key bindings and where they are described
339 * Command and Function Index::  Command names and some internal functions
340 * Variable Index::              Variables mentioned in the manual
342 @detailmenu
343  --- The Detailed Node Listing ---
345 Introduction
347 * Summary::                     Brief summary of what Org does
348 * Installation::                How to install a downloaded version of Org
349 * Activation::                  How to activate Org for certain buffers
350 * Feedback::                    Bug reports, ideas, patches etc.
351 * Conventions::                 Type-setting conventions in the manual
353 Document structure
355 * Outlines::                    Org is based on Outline mode
356 * Headlines::                   How to typeset Org tree headlines
357 * Visibility cycling::          Show and hide, much simplified
358 * Motion::                      Jumping to other headlines
359 * Structure editing::           Changing sequence and level of headlines
360 * Sparse trees::                Matches embedded in context
361 * Plain lists::                 Additional structure within an entry
362 * Drawers::                     Tucking stuff away
363 * Blocks::                      Folding blocks
364 * Footnotes::                   How footnotes are defined in Org's syntax
365 * Orgstruct mode::              Structure editing outside Org
367 Tables
369 * Built-in table editor::       Simple tables
370 * Column width and alignment::  Overrule the automatic settings
371 * Column groups::               Grouping to trigger vertical lines
372 * Orgtbl mode::                 The table editor as minor mode
373 * The spreadsheet::             The table editor has spreadsheet capabilities
374 * Org-Plot::                    Plotting from org tables
376 The spreadsheet
378 * References::                  How to refer to another field or range
379 * Formula syntax for Calc::     Using Calc to compute stuff
380 * Formula syntax for Lisp::     Writing formulas in Emacs Lisp
381 * Field formulas::              Formulas valid for a single field
382 * Column formulas::             Formulas valid for an entire column
383 * Editing and debugging formulas::  Fixing formulas
384 * Updating the table::          Recomputing all dependent fields
385 * Advanced features::           Field names, parameters and automatic recalc
387 Hyperlinks
389 * Link format::                 How links in Org are formatted
390 * Internal links::              Links to other places in the current file
391 * External links::              URL-like links to the world
392 * Handling links::              Creating, inserting and following
393 * Using links outside Org::     Linking from my C source code?
394 * Link abbreviations::          Shortcuts for writing complex links
395 * Search options::              Linking to a specific location
396 * Custom searches::             When the default search is not enough
398 Internal links
400 * Radio targets::               Make targets trigger links in plain text
402 TODO items
404 * TODO basics::                 Marking and displaying TODO entries
405 * TODO extensions::             Workflow and assignments
406 * Progress logging::            Dates and notes for progress
407 * Priorities::                  Some things are more important than others
408 * Breaking down tasks::         Splitting a task into manageable pieces
409 * Checkboxes::                  Tick-off lists
411 Extended use of TODO keywords
413 * Workflow states::             From TODO to DONE in steps
414 * TODO types::                  I do this, Fred does the rest
415 * Multiple sets in one file::   Mixing it all, and still finding your way
416 * Fast access to TODO states::  Single letter selection of a state
417 * Per-file keywords::           Different files, different requirements
418 * Faces for TODO keywords::     Highlighting states
419 * TODO dependencies::           When one task needs to wait for others
421 Progress logging
423 * Closing items::               When was this entry marked DONE?
424 * Tracking TODO state changes::  When did the status change?
425 * Tracking your habits::        How consistent have you been?
427 Tags
429 * Tag inheritance::             Tags use the tree structure of the outline
430 * Setting tags::                How to assign tags to a headline
431 * Tag searches::                Searching for combinations of tags
433 Properties and columns
435 * Property syntax::             How properties are spelled out
436 * Special properties::          Access to other Org-mode features
437 * Property searches::           Matching property values
438 * Property inheritance::        Passing values down the tree
439 * Column view::                 Tabular viewing and editing
440 * Property API::                Properties for Lisp programmers
442 Column view
444 * Defining columns::            The COLUMNS format property
445 * Using column view::           How to create and use column view
446 * Capturing column view::       A dynamic block for column view
448 Defining columns
450 * Scope of column definitions::  Where defined, where valid?
451 * Column attributes::           Appearance and content of a column
453 Dates and times
455 * Timestamps::                  Assigning a time to a tree entry
456 * Creating timestamps::         Commands which insert timestamps
457 * Deadlines and scheduling::    Planning your work
458 * Clocking work time::          Tracking how long you spend on a task
459 * Effort estimates::            Planning work effort in advance
460 * Relative timer::              Notes with a running timer
461 * Countdown timer::             Starting a countdown timer for a task
463 Creating timestamps
465 * The date/time prompt::        How Org-mode helps you entering date and time
466 * Custom time format::          Making dates look different
468 Deadlines and scheduling
470 * Inserting deadline/schedule::  Planning items
471 * Repeated tasks::              Items that show up again and again
473 Clocking work time
475 * Clocking commands::           Starting and stopping a clock
476 * The clock table::             Detailed reports
477 * Resolving idle time::         Resolving time when you've been idle
479 Capture - Refile - Archive
481 * Capture::                     Capturing new stuff
482 * Attachments::                 Add files to tasks
483 * RSS Feeds::                   Getting input from RSS feeds
484 * Protocols::                   External (e.g. Browser) access to Emacs and Org
485 * Refiling notes::              Moving a tree from one place to another
486 * Archiving::                   What to do with finished projects
488 Capture
490 * Setting up capture::          Where notes will be stored
491 * Using capture::               Commands to invoke and terminate capture
492 * Capture templates::           Define the outline of different note types
494 Capture templates
496 * Template elements::           What is needed for a complete template entry
497 * Template expansion::          Filling in information about time and context
499 Archiving
501 * Moving subtrees::             Moving a tree to an archive file
502 * Internal archiving::          Switch off a tree but keep it in the file
504 Agenda views
506 * Agenda files::                Files being searched for agenda information
507 * Agenda dispatcher::           Keyboard access to agenda views
508 * Built-in agenda views::       What is available out of the box?
509 * Presentation and sorting::    How agenda items are prepared for display
510 * Agenda commands::             Remote editing of Org trees
511 * Custom agenda views::         Defining special searches and views
512 * Exporting Agenda Views::      Writing a view to a file
513 * Agenda column view::          Using column view for collected entries
515 The built-in agenda views
517 * Weekly/daily agenda::         The calendar page with current tasks
518 * Global TODO list::            All unfinished action items
519 * Matching tags and properties::  Structured information with fine-tuned search
520 * Timeline::                    Time-sorted view for single file
521 * Search view::                 Find entries by searching for text
522 * Stuck projects::              Find projects you need to review
524 Presentation and sorting
526 * Categories::                  Not all tasks are equal
527 * Time-of-day specifications::  How the agenda knows the time
528 * Sorting of agenda items::     The order of things
530 Custom agenda views
532 * Storing searches::            Type once, use often
533 * Block agenda::                All the stuff you need in a single buffer
534 * Setting Options::             Changing the rules
536 Markup for rich export
538 * Structural markup elements::  The basic structure as seen by the exporter
539 * Images and tables::           Tables and Images will be included
540 * Literal examples::            Source code examples with special formatting
541 * Include files::               Include additional files into a document
542 * Index entries::               Making an index
543 * Macro replacement::           Use macros to create complex output
544 * Embedded LaTeX::              LaTeX can be freely used inside Org documents
546 Structural markup elements
548 * Document title::              Where the title is taken from
549 * Headings and sections::       The document structure as seen by the exporter
550 * Table of contents::           The if and where of the table of contents
551 * Initial text::                Text before the first heading?
552 * Lists::                       Lists
553 * Paragraphs::                  Paragraphs
554 * Footnote markup::             Footnotes
555 * Emphasis and monospace::      Bold, italic, etc.
556 * Horizontal rules::            Make a line
557 * Comment lines::               What will *not* be exported
559 Embedded La@TeX{}
561 * Special symbols::             Greek letters and other symbols
562 * Subscripts and superscripts::  Simple syntax for raising/lowering text
563 * LaTeX fragments::             Complex formulas made easy
564 * Previewing LaTeX fragments::  What will this snippet look like?
565 * CDLaTeX mode::                Speed up entering of formulas
567 Exporting
569 * Selective export::            Using tags to select and exclude trees
570 * Export options::              Per-file export settings
571 * The export dispatcher::       How to access exporter commands
572 * ASCII/Latin-1/UTF-8 export::  Exporting to flat files with encoding
573 * HTML export::                 Exporting to HTML
574 * LaTeX and PDF export::        Exporting to La@TeX{}, and processing to PDF
575 * DocBook export::              Exporting to DocBook
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 * Quoting HTML tags::           Using direct HTML in Org-mode
585 * Links in HTML export::        How links will be interpreted and formatted
586 * Tables in HTML export::       How to modify the formatting of tables
587 * Images in HTML export::       How to insert figures into HTML output
588 * Math formatting in HTML export::  Beautiful math also on the web
589 * Text areas in HTML export::   An alternative way to show an example
590 * CSS support::                 Changing the appearance of the output
591 * JavaScript support::          Info and Folding in a web browser
593 La@TeX{} and PDF export
595 * LaTeX/PDF export commands::   Which key invokes which commands
596 * Header and sectioning::       Setting up the export file structure
597 * Quoting LaTeX code::          Incorporating literal La@TeX{} code
598 * Tables in LaTeX export::      Options for exporting tables to La@TeX{}
599 * Images in LaTeX export::      How to insert figures into La@TeX{} output
600 * Beamer class export::         Turning the file into a presentation
602 DocBook export
604 * DocBook export commands::     How to invoke DocBook export
605 * Quoting DocBook code::        Incorporating DocBook code in Org files
606 * Recursive sections::          Recursive sections in DocBook
607 * Tables in DocBook export::    Tables are exported as HTML tables
608 * Images in DocBook export::    How to insert figures into DocBook output
609 * Special characters::          How to handle special characters
611 Publishing
613 * Configuration::               Defining projects
614 * Uploading files::             How to get files up on the server
615 * Sample configuration::        Example projects
616 * Triggering publication::      Publication commands
618 Configuration
620 * Project alist::               The central configuration variable
621 * Sources and destinations::    From here to there
622 * Selecting files::             What files are part of the project?
623 * Publishing action::           Setting the function doing the publishing
624 * Publishing options::          Tweaking HTML export
625 * Publishing links::            Which links keep working after publishing?
626 * Sitemap::                     Generating a list of all pages
627 * Generating an index::         An index that reaches across pages
629 Sample configuration
631 * Simple example::              One-component publishing
632 * Complex example::             A multi-component publishing example
634 Working with source code
636 * Structure of code blocks::    Code block syntax described
637 * Editing source code::         Language major-mode editing
638 * Exporting code blocks::       Export contents and/or results
639 * Extracting source code::      Create pure source code files
640 * Evaluating code blocks::      Place results of evaluation in the Org-mode buffer
641 * Library of Babel::            Use and contribute to a library of useful code blocks
642 * Languages::                   List of supported code block languages
643 * Header arguments::            Configure code block functionality
644 * Results of evaluation::       How evaluation results are handled
645 * Noweb reference syntax::      Literate programming in Org-mode
646 * Key bindings and useful functions::  Work quickly with code blocks
647 * Batch execution::             Call functions from the command line
649 Header arguments
651 * Using header arguments::      Different ways to set header arguments
652 * Specific header arguments::   List of header arguments
654 Using header arguments
656 * System-wide header arguments::  Set global default values
657 * Language-specific header arguments::  Set default values by language
658 * Buffer-wide header arguments::  Set default values for a specific buffer
659 * Header arguments in Org-mode properties::  Set default values for a buffer or heading
660 * Code block specific header arguments::  The most common way to set values
661 * Header arguments in function calls::  The most specific level
663 Specific header arguments
665 * var::                         Pass arguments to code blocks
666 * results::                     Specify the type of results and how they will
667                                 be collected and handled
668 * file::                        Specify a path for file output
669 * dir::                         Specify the default (possibly remote)
670                                 directory for code block execution
671 * exports::                     Export code and/or results
672 * tangle::                      Toggle tangling and specify file name
673 * comments::                    Toggle insertion of comments in tangled
674                                 code files
675 * no-expand::                   Turn off variable assignment and noweb
676                                 expansion during tangling
677 * session::                     Preserve the state of code evaluation
678 * noweb::                       Toggle expansion of noweb references
679 * cache::                       Avoid re-evaluating unchanged code blocks
680 * hlines::                      Handle horizontal lines in tables
681 * colnames::                    Handle column names in tables
682 * rownames::                    Handle row names in tables
683 * shebang::                     Make tangled files executable
684 * eval::                        Limit evaluation of specific code blocks
686 Miscellaneous
688 * Completion::                  M-TAB knows what you need
689 * Easy Templates::              Quick insertion of structural elements
690 * Speed keys::                  Electric commands at the beginning of a headline
691 * Code evaluation security::    Org mode files evaluate inline code
692 * Customization::               Adapting Org to your taste
693 * In-buffer settings::          Overview of the #+KEYWORDS
694 * The very busy C-c C-c key::   When in doubt, press C-c C-c
695 * Clean view::                  Getting rid of leading stars in the outline
696 * TTY keys::                    Using Org on a tty
697 * Interaction::                 Other Emacs packages
699 Interaction with other packages
701 * Cooperation::                 Packages Org cooperates with
702 * Conflicts::                   Packages that lead to conflicts
704 Hacking
706 * Hooks::                       Who to reach into Org's internals
707 * Add-on packages::             Available extensions
708 * Adding hyperlink types::      New custom link types
709 * Context-sensitive commands::  How to add functionality to such commands
710 * Tables in arbitrary syntax::  Orgtbl for La@TeX{} and other programs
711 * Dynamic blocks::              Automatically filled blocks
712 * Special agenda views::        Customized views
713 * Extracting agenda information::  Postprocessing of agenda information
714 * Using the property API::      Writing programs that use entry properties
715 * Using the mapping API::       Mapping over all or selected entries
717 Tables and lists in arbitrary syntax
719 * Radio tables::                Sending and receiving radio tables
720 * A LaTeX example::             Step by step, almost a tutorial
721 * Translator functions::        Copy and modify
722 * Radio lists::                 Doing the same for lists
724 MobileOrg
726 * Setting up the staging area::  Where to interact with the mobile device
727 * Pushing to MobileOrg::        Uploading Org files and agendas
728 * Pulling from MobileOrg::      Integrating captured and flagged items
730 @end detailmenu
731 @end menu
733 @node Introduction, Document Structure, Top, Top
734 @chapter Introduction
735 @cindex introduction
737 @menu
738 * Summary::                     Brief summary of what Org does
739 * Installation::                How to install a downloaded version of Org
740 * Activation::                  How to activate Org for certain buffers
741 * Feedback::                    Bug reports, ideas, patches etc.
742 * Conventions::                 Type-setting conventions in the manual
743 @end menu
745 @node Summary, Installation, Introduction, Introduction
746 @section Summary
747 @cindex summary
749 Org is a mode for keeping notes, maintaining TODO lists, and doing
750 project planning with a fast and effective plain-text system.
752 Org develops organizational tasks around NOTES files that contain
753 lists or information about projects as plain text.  Org is
754 implemented on top of Outline mode, which makes it possible to keep the
755 content of large files well structured.  Visibility cycling and
756 structure editing help to work with the tree.  Tables are easily created
757 with a built-in table editor.  Org supports TODO items, deadlines,
758 timestamps, and scheduling.  It dynamically compiles entries into an
759 agenda that utilizes and smoothly integrates much of the Emacs calendar
760 and diary.  Plain text URL-like links connect to websites, emails,
761 Usenet messages, BBDB entries, and any files related to the projects.
762 For printing and sharing of notes, an Org file can be exported as a
763 structured ASCII file, as HTML, or (TODO and agenda items only) as an
764 iCalendar file.  It can also serve as a publishing tool for a set of
765 linked web pages.
767 As a project planning environment, Org works by adding metadata to outline
768 nodes.  Based on this data, specific entries can be extracted in queries and
769 create dynamic @i{agenda views}.
771 Org mode contains the Org Babel environment which allows to work with
772 embedded source code block in a file, to facilitate code evaluation,
773 documentation, and tangling.
775 Org's automatic, context-sensitive table editor with spreadsheet
776 capabilities can be integrated into any major mode by activating the
777 minor Orgtbl mode.  Using a translation step, it can be used to maintain
778 tables in arbitrary file types, for example in La@TeX{}.  The structure
779 editing and list creation capabilities can be used outside Org with
780 the minor Orgstruct mode.
782 Org keeps simple things simple.  When first fired up, it should
783 feel like a straightforward, easy to use outliner.  Complexity is not
784 imposed, but a large amount of functionality is available when you need
785 it.  Org is a toolbox and can be used in different ways and for different
786 ends, for example:
788 @example
789 @r{@bullet{} an outline extension with visibility cycling and structure editing}
790 @r{@bullet{} an ASCII system and table editor for taking structured notes}
791 @r{@bullet{} a TODO list editor}
792 @r{@bullet{} a full agenda and planner with deadlines and work scheduling}
793 @pindex GTD, Getting Things Done
794 @r{@bullet{} an environment in which to implement David Allen's GTD system}
795 @r{@bullet{} a simple hypertext system, with HTML and La@TeX{} export}
796 @r{@bullet{} a publishing tool to create a set of interlinked webpages}
797 @r{@bullet{} an environment for literate programming}
798 @end example
801 @cindex FAQ
802 There is a website for Org which provides links to the newest
803 version of Org, as well as additional information, frequently asked
804 questions (FAQ), links to tutorials, etc@.  This page is located at
805 @uref{http://orgmode.org}.
807 @page
810 @node Installation, Activation, Summary, Introduction
811 @section Installation
812 @cindex installation
813 @cindex XEmacs
815 @b{Important:} @i{If you are using a version of Org that is part of the Emacs
816 distribution or an XEmacs package, please skip this section and go directly
817 to @ref{Activation}.}
819 If you have downloaded Org from the Web, either as a distribution @file{.zip}
820 or @file{.tar} file, or as a Git archive, you must take the following steps
821 to install it: go into the unpacked Org distribution directory and edit the
822 top section of the file @file{Makefile}.  You must set the name of the Emacs
823 binary (likely either @file{emacs} or @file{xemacs}), and the paths to the
824 directories where local Lisp and Info files are kept.  If you don't have
825 access to the system-wide directories, you can simply run Org directly from
826 the distribution directory by adding the @file{lisp} subdirectory to the
827 Emacs load path.  To do this, add the following line to @file{.emacs}:
829 @example
830 (setq load-path (cons "~/path/to/orgdir/lisp" load-path))
831 @end example
833 @noindent
834 If you plan to use code from the @file{contrib} subdirectory, do a similar
835 step for this directory:
837 @example
838 (setq load-path (cons "~/path/to/orgdir/contrib/lisp" load-path))
839 @end example
841 @noindent Now byte-compile the Lisp files with the shell command:
843 @example
844 make
845 @end example
847 @noindent If you are running Org from the distribution directory, this is
848 all.  If you want to install Org into the system directories, use (as
849 administrator)
851 @example
852 make install
853 @end example
855 Installing Info files is system dependent, because of differences in the
856 @file{install-info} program.  In Debian it copies the info files into the
857 correct directory and modifies the info directory file.  In many other
858 systems, the files need to be copied to the correct directory separately, and
859 @file{install-info} then only modifies the directory file.  Check your system
860 documentation to find out which of the following commands you need:
862 @example
863 make install-info
864 make install-info-debian
865 @end example
867 Then add the following line to @file{.emacs}.  It is needed so that
868 Emacs can autoload functions that are located in files not immediately loaded
869 when Org-mode starts.
870 @lisp
871 (require 'org-install)
872 @end lisp
874 Do not forget to activate Org as described in the following section.
875 @page
877 @node Activation, Feedback, Installation, Introduction
878 @section Activation
879 @cindex activation
880 @cindex autoload
881 @cindex global key bindings
882 @cindex key bindings, global
884 Add the following lines to your @file{.emacs} file.  The last three lines
885 define @emph{global} keys for the commands @command{org-store-link},
886 @command{org-agenda}, and @command{org-iswitchb}---please choose suitable
887 keys yourself.
889 @lisp
890 ;; The following lines are always needed.  Choose your own keys.
891 (add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
892 (global-set-key "\C-cl" 'org-store-link)
893 (global-set-key "\C-ca" 'org-agenda)
894 (global-set-key "\C-cb" 'org-iswitchb)
895 @end lisp
897 Furthermore, you must activate @code{font-lock-mode} in Org
898 buffers, because significant functionality depends on font-locking being
899 active.  You can do this with either one of the following two lines
900 (XEmacs users must use the second option):
901 @lisp
902 (global-font-lock-mode 1)                     ; for all buffers
903 (add-hook 'org-mode-hook 'turn-on-font-lock)  ; Org buffers only
904 @end lisp
906 @cindex Org-mode, turning on
907 With this setup, all files with extension @samp{.org} will be put
908 into Org-mode.  As an alternative, make the first line of a file look
909 like this:
911 @example
912 MY PROJECTS    -*- mode: org; -*-
913 @end example
915 @vindex org-insert-mode-line-in-empty-file
916 @noindent which will select Org-mode for this buffer no matter what
917 the file's name is.  See also the variable
918 @code{org-insert-mode-line-in-empty-file}.
920 Many commands in Org work on the region if the region is @i{active}.  To make
921 use of this, you need to have @code{transient-mark-mode}
922 (@code{zmacs-regions} in XEmacs) turned on.  In Emacs 23 this is the default,
923 in Emacs 22 you need to do this yourself with
924 @lisp
925 (transient-mark-mode 1)
926 @end lisp
927 @noindent If you do not like @code{transient-mark-mode}, you can create an
928 active region by using the mouse to select a region, or pressing
929 @kbd{C-@key{SPC}} twice before moving the cursor.
931 @node Feedback, Conventions, Activation, Introduction
932 @section Feedback
933 @cindex feedback
934 @cindex bug reports
935 @cindex maintainer
936 @cindex author
938 If you find problems with Org, or if you have questions, remarks, or ideas
939 about it, please mail to the Org mailing list @email{emacs-orgmode@@gnu.org}.
940 If you are not a member of the mailing list, your mail will be passed to the
941 list after a moderator has approved it@footnote{Please consider subscribing
942 to the mailing list, in order to minimize the work the mailing list
943 moderators have to do.}.
945 For bug reports, please first try to reproduce the bug with the latest
946 version of Org available - if you are running an outdated version, it is
947 quite possible that the bug has been fixed already.  If the bug persists,
948 prepare a report and provide as much information as possible, including the
949 version information of Emacs (@kbd{M-x emacs-version @key{RET}}) and Org
950 (@kbd{M-x org-version @key{RET}}), as well as the Org related setup in
951 @file{.emacs}.  The easiest way to do this is to use the command
952 @example
953 @kbd{M-x org-submit-bug-report}
954 @end example
955 @noindent which will put all this information into an Emacs mail buffer so
956 that you only need to add your description.  If you re not sending the Email
957 from within Emacs, please copy and paste the content into your Email program.
959 If an error occurs, a backtrace can be very useful (see below on how to
960 create one).  Often a small example file helps, along with clear information
961 about:
963 @enumerate
964 @item What exactly did you do?
965 @item What did you expect to happen?
966 @item What happened instead?
967 @end enumerate
968 @noindent Thank you for helping to improve this program.
970 @subsubheading How to create a useful backtrace
972 @cindex backtrace of an error
973 If working with Org produces an error with a message you don't
974 understand, you may have hit a bug.  The best way to report this is by
975 providing, in addition to what was mentioned above, a @emph{backtrace}.
976 This is information from the built-in debugger about where and how the
977 error occurred.  Here is how to produce a useful backtrace:
979 @enumerate
980 @item
981 Reload uncompiled versions of all Org-mode Lisp files.  The backtrace
982 contains much more information if it is produced with uncompiled code.
983 To do this, use
984 @example
985 C-u M-x org-reload RET
986 @end example
987 @noindent
988 or select @code{Org -> Refresh/Reload -> Reload Org uncompiled} from the
989 menu.
990 @item
991 Go to the @code{Options} menu and select @code{Enter Debugger on Error}
992 (XEmacs has this option in the @code{Troubleshooting} sub-menu).
993 @item
994 Do whatever you have to do to hit the error.  Don't forget to
995 document the steps you take.
996 @item
997 When you hit the error, a @file{*Backtrace*} buffer will appear on the
998 screen.  Save this buffer to a file (for example using @kbd{C-x C-w}) and
999 attach it to your bug report.
1000 @end enumerate
1002 @node Conventions,  , Feedback, Introduction
1003 @section Typesetting conventions used in this manual
1005 Org uses three types of keywords: TODO keywords, tags, and property
1006 names.  In this manual we use the following conventions:
1008 @table @code
1009 @item TODO
1010 @itemx WAITING
1011 TODO keywords are written with all capitals, even if they are
1012 user-defined.
1013 @item boss
1014 @itemx ARCHIVE
1015 User-defined tags are written in lowercase; built-in tags with special
1016 meaning are written with all capitals.
1017 @item Release
1018 @itemx PRIORITY
1019 User-defined properties are capitalized; built-in properties with
1020 special meaning are written with all capitals.
1021 @end table
1023 @node Document Structure, Tables, Introduction, Top
1024 @chapter Document structure
1025 @cindex document structure
1026 @cindex structure of document
1028 Org is based on Outline mode and provides flexible commands to
1029 edit the structure of the document.
1031 @menu
1032 * Outlines::                    Org is based on Outline mode
1033 * Headlines::                   How to typeset Org tree headlines
1034 * Visibility cycling::          Show and hide, much simplified
1035 * Motion::                      Jumping to other headlines
1036 * Structure editing::           Changing sequence and level of headlines
1037 * Sparse trees::                Matches embedded in context
1038 * Plain lists::                 Additional structure within an entry
1039 * Drawers::                     Tucking stuff away
1040 * Blocks::                      Folding blocks
1041 * Footnotes::                   How footnotes are defined in Org's syntax
1042 * Orgstruct mode::              Structure editing outside Org
1043 @end menu
1045 @node Outlines, Headlines, Document Structure, Document Structure
1046 @section Outlines
1047 @cindex outlines
1048 @cindex Outline mode
1050 Org is implemented on top of Outline mode.  Outlines allow a
1051 document to be organized in a hierarchical structure, which (at least
1052 for me) is the best representation of notes and thoughts.  An overview
1053 of this structure is achieved by folding (hiding) large parts of the
1054 document to show only the general document structure and the parts
1055 currently being worked on.  Org greatly simplifies the use of
1056 outlines by compressing the entire show/hide functionality into a single
1057 command, @command{org-cycle}, which is bound to the @key{TAB} key.
1059 @node Headlines, Visibility cycling, Outlines, Document Structure
1060 @section Headlines
1061 @cindex headlines
1062 @cindex outline tree
1063 @vindex org-special-ctrl-a/e
1064 @vindex org-special-ctrl-k
1065 @vindex org-ctrl-k-protect-subtree
1067 Headlines define the structure of an outline tree.  The headlines in Org
1068 start with one or more stars, on the left margin@footnote{See the variables
1069 @code{org-special-ctrl-a/e}, @code{org-special-ctrl-k}, and
1070 @code{org-ctrl-k-protect-subtree} to configure special behavior of @kbd{C-a},
1071 @kbd{C-e}, and @kbd{C-k} in headlines.}.  For example:
1073 @example
1074 * Top level headline
1075 ** Second level
1076 *** 3rd level
1077     some text
1078 *** 3rd level
1079     more text
1081 * Another top level headline
1082 @end example
1084 @noindent Some people find the many stars too noisy and would prefer an
1085 outline that has whitespace followed by a single star as headline
1086 starters.  @ref{Clean view}, describes a setup to realize this.
1088 @vindex org-cycle-separator-lines
1089 An empty line after the end of a subtree is considered part of it and
1090 will be hidden when the subtree is folded.  However, if you leave at
1091 least two empty lines, one empty line will remain visible after folding
1092 the subtree, in order to structure the collapsed view.  See the
1093 variable @code{org-cycle-separator-lines} to modify this behavior.
1095 @node Visibility cycling, Motion, Headlines, Document Structure
1096 @section Visibility cycling
1097 @cindex cycling, visibility
1098 @cindex visibility cycling
1099 @cindex trees, visibility
1100 @cindex show hidden text
1101 @cindex hide text
1103 Outlines make it possible to hide parts of the text in the buffer.
1104 Org uses just two commands, bound to @key{TAB} and
1105 @kbd{S-@key{TAB}} to change the visibility in the buffer.
1107 @cindex subtree visibility states
1108 @cindex subtree cycling
1109 @cindex folded, subtree visibility state
1110 @cindex children, subtree visibility state
1111 @cindex subtree, subtree visibility state
1112 @table @asis
1113 @orgcmd{@key{TAB},org-cycle}
1114 @emph{Subtree cycling}: Rotate current subtree among the states
1116 @example
1117 ,-> FOLDED -> CHILDREN -> SUBTREE --.
1118 '-----------------------------------'
1119 @end example
1121 @vindex org-cycle-emulate-tab
1122 @vindex org-cycle-global-at-bob
1123 The cursor must be on a headline for this to work@footnote{see, however,
1124 the option @code{org-cycle-emulate-tab}.}.  When the cursor is at the
1125 beginning of the buffer and the first line is not a headline, then
1126 @key{TAB} actually runs global cycling (see below)@footnote{see the
1127 option @code{org-cycle-global-at-bob}.}.  Also when called with a prefix
1128 argument (@kbd{C-u @key{TAB}}), global cycling is invoked.
1130 @cindex global visibility states
1131 @cindex global cycling
1132 @cindex overview, global visibility state
1133 @cindex contents, global visibility state
1134 @cindex show all, global visibility state
1135 @orgcmd{S-@key{TAB},org-global-cycle}
1136 @itemx C-u @key{TAB}
1137 @emph{Global cycling}: Rotate the entire buffer among the states
1139 @example
1140 ,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
1141 '--------------------------------------'
1142 @end example
1144 When @kbd{S-@key{TAB}} is called with a numeric prefix argument N, the
1145 CONTENTS view up to headlines of level N will be shown.  Note that inside
1146 tables, @kbd{S-@key{TAB}} jumps to the previous field.
1148 @cindex show all, command
1149 @orgcmd{C-u C-u C-u @key{TAB},show-all}
1150 Show all, including drawers.
1151 @orgcmd{C-c C-r,org-reveal}
1152 Reveal context around point, showing the current entry, the following heading
1153 and the hierarchy above.  Useful for working near a location that has been
1154 exposed by a sparse tree command (@pxref{Sparse trees}) or an agenda command
1155 (@pxref{Agenda commands}).  With a prefix argument show, on each
1156 level, all sibling headings.  With double prefix arg, also show the entire
1157 subtree of the parent.
1158 @orgcmd{C-c C-k,show-branches}
1159 Expose all the headings of the subtree, CONTENT view for just one subtree.
1160 @orgcmd{C-c C-x b,org-tree-to-indirect-buffer}
1161 Show the current subtree in an indirect buffer@footnote{The indirect
1162 buffer
1163 @ifinfo
1164 (@pxref{Indirect Buffers,,,emacs,GNU Emacs Manual})
1165 @end ifinfo
1166 @ifnotinfo
1167 (see the Emacs manual for more information about indirect buffers)
1168 @end ifnotinfo
1169 will contain the entire buffer, but will be narrowed to the current
1170 tree.  Editing the indirect buffer will also change the original buffer,
1171 but without affecting visibility in that buffer.}.  With a numeric
1172 prefix argument N, go up to level N and then take that tree.  If N is
1173 negative then go up that many levels.  With a @kbd{C-u} prefix, do not remove
1174 the previously used indirect buffer.
1175 @end table
1177 @vindex org-startup-folded
1178 @cindex @code{overview}, STARTUP keyword
1179 @cindex @code{content}, STARTUP keyword
1180 @cindex @code{showall}, STARTUP keyword
1181 @cindex @code{showeverything}, STARTUP keyword
1183 When Emacs first visits an Org file, the global state is set to
1184 OVERVIEW, i.e. only the top level headlines are visible.  This can be
1185 configured through the variable @code{org-startup-folded}, or on a
1186 per-file basis by adding one of the following lines anywhere in the
1187 buffer:
1189 @example
1190 #+STARTUP: overview
1191 #+STARTUP: content
1192 #+STARTUP: showall
1193 #+STARTUP: showeverything
1194 @end example
1196 @cindex property, VISIBILITY
1197 @noindent
1198 Furthermore, any entries with a @samp{VISIBILITY} property (@pxref{Properties
1199 and Columns}) will get their visibility adapted accordingly.  Allowed values
1200 for this property are @code{folded}, @code{children}, @code{content}, and
1201 @code{all}.
1202 @table @asis
1203 @orgcmd{C-u C-u @key{TAB},org-set-startup-visibility}
1204 Switch back to the startup visibility of the buffer, i.e. whatever is
1205 requested by startup options and @samp{VISIBILITY} properties in individual
1206 entries.
1207 @end table
1209 @node Motion, Structure editing, Visibility cycling, Document Structure
1210 @section Motion
1211 @cindex motion, between headlines
1212 @cindex jumping, to headlines
1213 @cindex headline navigation
1214 The following commands jump to other headlines in the buffer.
1216 @table @asis
1217 @orgcmd{C-c C-n,outline-next-visible-heading}
1218 Next heading.
1219 @orgcmd{C-c C-p,outline-previous-visible-heading}
1220 Previous heading.
1221 @orgcmd{C-c C-f,org-forward-same-level}
1222 Next heading same level.
1223 @orgcmd{C-c C-b,org-backward-same-level}
1224 Previous heading same level.
1225 @orgcmd{C-c C-u,outline-up-heading}
1226 Backward to higher level heading.
1227 @orgcmd{C-c C-j,org-goto}
1228 Jump to a different place without changing the current outline
1229 visibility.  Shows the document structure in a temporary buffer, where
1230 you can use the following keys to find your destination:
1231 @vindex org-goto-auto-isearch
1232 @example
1233 @key{TAB}         @r{Cycle visibility.}
1234 @key{down} / @key{up}   @r{Next/previous visible headline.}
1235 @key{RET}         @r{Select this location.}
1236 @kbd{/}           @r{Do a Sparse-tree search}
1237 @r{The following keys work if you turn off @code{org-goto-auto-isearch}}
1238 n / p        @r{Next/previous visible headline.}
1239 f / b        @r{Next/previous headline same level.}
1240 u            @r{One level up.}
1241 0-9          @r{Digit argument.}
1242 q            @r{Quit}
1243 @end example
1244 @vindex org-goto-interface
1245 @noindent
1246 See also the variable @code{org-goto-interface}.
1247 @end table
1249 @node Structure editing, Sparse trees, Motion, Document Structure
1250 @section Structure editing
1251 @cindex structure editing
1252 @cindex headline, promotion and demotion
1253 @cindex promotion, of subtrees
1254 @cindex demotion, of subtrees
1255 @cindex subtree, cut and paste
1256 @cindex pasting, of subtrees
1257 @cindex cutting, of subtrees
1258 @cindex copying, of subtrees
1259 @cindex sorting, of subtrees
1260 @cindex subtrees, cut and paste
1262 @table @asis
1263 @orgcmd{M-@key{RET},org-insert-heading}
1264 @vindex org-M-RET-may-split-line
1265 Insert new heading with same level as current.  If the cursor is in a
1266 plain list item, a new item is created (@pxref{Plain lists}).  To force
1267 creation of a new headline, use a prefix argument, or first press @key{RET}
1268 to get to the beginning of the next line.  When this command is used in
1269 the middle of a line, the line is split and the rest of the line becomes
1270 the new headline@footnote{If you do not want the line to be split,
1271 customize the variable @code{org-M-RET-may-split-line}.}.  If the
1272 command is used at the beginning of a headline, the new headline is
1273 created before the current line.  If at the beginning of any other line,
1274 the content of that line is made the new heading.  If the command is
1275 used at the end of a folded subtree (i.e. behind the ellipses at the end
1276 of a headline), then a headline like the current one will be inserted
1277 after the end of the subtree.
1278 @orgcmd{C-@key{RET},org-insert-heading-respect-content}
1279 Just like @kbd{M-@key{RET}}, except when adding a new heading below the
1280 current heading, the new heading is placed after the body instead of before
1281 it.  This command works from anywhere in the entry.
1282 @orgcmd{M-S-@key{RET},org-insert-todo-heading}
1283 @vindex org-treat-insert-todo-heading-as-state-change
1284 Insert new TODO entry with same level as current heading.  See also the
1285 variable @code{org-treat-insert-todo-heading-as-state-change}.
1286 @orgcmd{C-S-@key{RET},org-insert-todo-heading-respect-content}
1287 Insert new TODO entry with same level as current heading.  Like
1288 @kbd{C-@key{RET}}, the new headline will be inserted after the current
1289 subtree.
1290 @orgcmd{@key{TAB},org-cycle}
1291 In a new entry with no text yet, the first @key{TAB} demotes the entry to
1292 become a child of the previous one.  The next @key{TAB} makes it a parent,
1293 and so on, all the way to top level.  Yet another @key{TAB}, and you are back
1294 to the initial level.
1295 @orgcmd{M-@key{left},org-do-promote}
1296 Promote current heading by one level.
1297 @orgcmd{M-@key{right},org-do-demote}
1298 Demote current heading by one level.
1299 @orgcmd{M-S-@key{left},org-promote-subtree}
1300 Promote the current subtree by one level.
1301 @orgcmd{M-S-@key{right},org-demote-subtree}
1302 Demote the current subtree by one level.
1303 @orgcmd{M-S-@key{up},org-move-subtree-up}
1304 Move subtree up (swap with previous subtree of same
1305 level).
1306 @orgcmd{M-S-@key{down},org-move-subtree-down}
1307 Move subtree down (swap with next subtree of same level).
1308 @orgcmd{C-c C-x C-w,org-cut-subtree}
1309 Kill subtree, i.e. remove it from buffer but save in kill ring.
1310 With a numeric prefix argument N, kill N sequential subtrees.
1311 @orgcmd{C-c C-x M-w,org-copy-subtree}
1312 Copy subtree to kill ring.  With a numeric prefix argument N, copy the N
1313 sequential subtrees.
1314 @orgcmd{C-c C-x C-y,org-paste-subtree}
1315 Yank subtree from kill ring.  This does modify the level of the subtree to
1316 make sure the tree fits in nicely at the yank position.  The yank level can
1317 also be specified with a numeric prefix argument, or by yanking after a
1318 headline marker like @samp{****}.
1319 @orgcmd{C-y,org-yank}
1320 @vindex org-yank-adjusted-subtrees
1321 @vindex org-yank-folded-subtrees
1322 Depending on the variables @code{org-yank-adjusted-subtrees} and
1323 @code{org-yank-folded-subtrees}, Org's internal @code{yank} command will
1324 paste subtrees folded and in a clever way, using the same command as @kbd{C-c
1325 C-x C-y}.  With the default settings, no level adjustment will take place,
1326 but the yanked tree will be folded unless doing so would swallow text
1327 previously visible.  Any prefix argument to this command will force a normal
1328 @code{yank} to be executed, with the prefix passed along.  A good way to
1329 force a normal yank is @kbd{C-u C-y}.  If you use @code{yank-pop} after a
1330 yank, it will yank previous kill items plainly, without adjustment and
1331 folding.
1332 @orgcmd{C-c C-x c,org-clone-subtree-with-time-shift}
1333 Clone a subtree by making a number of sibling copies of it.  You will be
1334 prompted for the number of copies to make, and you can also specify if any
1335 timestamps in the entry should be shifted.  This can be useful, for example,
1336 to create a number of tasks related to a series of lectures to prepare.  For
1337 more details, see the docstring of the command
1338 @code{org-clone-subtree-with-time-shift}.
1339 @orgcmd{C-c C-w,org-refile}
1340 Refile entry or region to a different location.  @xref{Refiling notes}.
1341 @orgcmd{C-c ^,org-sort-entries-or-items}
1342 Sort same-level entries.  When there is an active region, all entries in the
1343 region will be sorted.  Otherwise the children of the current headline are
1344 sorted.  The command prompts for the sorting method, which can be
1345 alphabetically, numerically, by time (first timestamp with active preferred,
1346 creation time, scheduled time, deadline time), by priority, by TODO keyword
1347 (in the sequence the keywords have been defined in the setup) or by the value
1348 of a property.  Reverse sorting is possible as well.  You can also supply
1349 your own function to extract the sorting key.  With a @kbd{C-u} prefix,
1350 sorting will be case-sensitive.  With two @kbd{C-u C-u} prefixes, duplicate
1351 entries will also be removed.
1352 @orgcmd{C-x n s,org-narrow-to-subtree}
1353 Narrow buffer to current subtree.
1354 @orgcmd{C-x n w,widen}
1355 Widen buffer to remove narrowing.
1356 @orgcmd{C-c *,org-toggle-heading}
1357 Turn a normal line or plain list item into a headline (so that it becomes a
1358 subheading at its location).  Also turn a headline into a normal line by
1359 removing the stars.  If there is an active region, turn all lines in the
1360 region into headlines.  If the first line in the region was an item, turn
1361 only the item lines into headlines.  Finally, if the first line is a
1362 headline, remove the stars from all headlines in the region.
1363 @end table
1365 @cindex region, active
1366 @cindex active region
1367 @cindex transient mark mode
1368 When there is an active region (Transient Mark mode), promotion and
1369 demotion work on all headlines in the region.  To select a region of
1370 headlines, it is best to place both point and mark at the beginning of a
1371 line, mark at the beginning of the first headline, and point at the line
1372 just after the last headline to change.  Note that when the cursor is
1373 inside a table (@pxref{Tables}), the Meta-Cursor keys have different
1374 functionality.
1377 @node Sparse trees, Plain lists, Structure editing, Document Structure
1378 @section Sparse trees
1379 @cindex sparse trees
1380 @cindex trees, sparse
1381 @cindex folding, sparse trees
1382 @cindex occur, command
1384 @vindex org-show-hierarchy-above
1385 @vindex org-show-following-heading
1386 @vindex org-show-siblings
1387 @vindex org-show-entry-below
1388 An important feature of Org-mode is the ability to construct @emph{sparse
1389 trees} for selected information in an outline tree, so that the entire
1390 document is folded as much as possible, but the selected information is made
1391 visible along with the headline structure above it@footnote{See also the
1392 variables @code{org-show-hierarchy-above}, @code{org-show-following-heading},
1393 @code{org-show-siblings}, and @code{org-show-entry-below} for detailed
1394 control on how much context is shown around each match.}.  Just try it out
1395 and you will see immediately how it works.
1397 Org-mode contains several commands creating such trees, all these
1398 commands can be accessed through a dispatcher:
1400 @table @asis
1401 @orgcmd{C-c /,org-sparse-tree}
1402 This prompts for an extra key to select a sparse-tree creating command.
1403 @orgcmd{C-c / r,org-occur}
1404 @vindex org-remove-highlights-with-change
1405 Occur.  Prompts for a regexp and shows a sparse tree with all matches.  If
1406 the match is in a headline, the headline is made visible.  If the match is in
1407 the body of an entry, headline and body are made visible.  In order to
1408 provide minimal context, also the full hierarchy of headlines above the match
1409 is shown, as well as the headline following the match.  Each match is also
1410 highlighted; the highlights disappear when the buffer is changed by an
1411 editing command@footnote{This depends on the option
1412 @code{org-remove-highlights-with-change}}, or by pressing @kbd{C-c C-c}.
1413 When called with a @kbd{C-u} prefix argument, previous highlights are kept,
1414 so several calls to this command can be stacked.
1415 @end table
1417 @noindent
1418 @vindex org-agenda-custom-commands
1419 For frequently used sparse trees of specific search strings, you can
1420 use the variable @code{org-agenda-custom-commands} to define fast
1421 keyboard access to specific sparse trees.  These commands will then be
1422 accessible through the agenda dispatcher (@pxref{Agenda dispatcher}).
1423 For example:
1425 @lisp
1426 (setq org-agenda-custom-commands
1427       '(("f" occur-tree "FIXME")))
1428 @end lisp
1430 @noindent will define the key @kbd{C-c a f} as a shortcut for creating
1431 a sparse tree matching the string @samp{FIXME}.
1433 The other sparse tree commands select headings based on TODO keywords,
1434 tags, or properties and will be discussed later in this manual.
1436 @kindex C-c C-e v
1437 @cindex printing sparse trees
1438 @cindex visible text, printing
1439 To print a sparse tree, you can use the Emacs command
1440 @code{ps-print-buffer-with-faces} which does not print invisible parts
1441 of the document @footnote{This does not work under XEmacs, because
1442 XEmacs uses selective display for outlining, not text properties.}.
1443 Or you can use the command @kbd{C-c C-e v} to export only the visible
1444 part of the document and print the resulting file.
1446 @node Plain lists, Drawers, Sparse trees, Document Structure
1447 @section Plain lists
1448 @cindex plain lists
1449 @cindex lists, plain
1450 @cindex lists, ordered
1451 @cindex ordered lists
1453 Within an entry of the outline tree, hand-formatted lists can provide
1454 additional structure.  They also provide a way to create lists of checkboxes
1455 (@pxref{Checkboxes}).  Org supports editing such lists, and every exporter
1456 (@pxref{Exporting}) can parse and format them.
1458 Org knows ordered lists, unordered lists, and description lists.
1459 @itemize @bullet
1460 @item
1461 @emph{Unordered} list items start with @samp{-}, @samp{+}, or
1462 @samp{*}@footnote{When using @samp{*} as a bullet, lines must be indented or
1463 they will be seen as top-level headlines.  Also, when you are hiding leading
1464 stars to get a clean outline view, plain list items starting with a star are
1465 visually indistinguishable from true headlines.  In short: even though
1466 @samp{*} is supported, it may be better to not use it for plain list items.}
1467 as bullets.
1468 @item
1469 @vindex org-plain-list-ordered-item-terminator
1470 @emph{Ordered} list items start with a numeral followed by either a period or
1471 a right parenthesis@footnote{You can filter out any of them by configuring
1472 @code{org-plain-list-ordered-item-terminator}.}, such as @samp{1.} or
1473 @samp{1)}.  If you want a list to start a different value (e.g. 20), start
1474 the text of the item with @code{[@@20]}@footnote{If there's a checkbox in the
1475 item, the cookie must be put @emph{before} the checkbox.}.  Those constructs
1476 can be used in any item of the list in order to enforce a particular
1477 numbering.
1478 @item
1479 @emph{Description} list items are unordered list items, and contain the
1480 separator @samp{ :: } to separate the description @emph{term} from the
1481 description.
1482 @end itemize
1484 Items belonging to the same list must have the same indentation on the first
1485 line.  In particular, if an ordered list reaches number @samp{10.}, then the
1486 2--digit numbers must be written left-aligned with the other numbers in the
1487 list.
1489 @vindex org-list-ending-method
1490 @vindex org-list-end-regexp
1491 @vindex org-empty-line-terminates-plain-lists
1492 Two methods@footnote{To disable either of them, configure
1493 @code{org-list-ending-method}.} are provided to terminate lists.  A list ends
1494 before the next line that is indented like the bullet/number or less, or it
1495 ends before two blank lines@footnote{See also
1496 @code{org-empty-line-terminates-plain-lists}.}.  In both cases, all levels of
1497 the list are closed@footnote{So you cannot have a sublist, some text and then
1498 another sublist while still in the same top-level list item.  This used to be
1499 possible, but it was only supported in the HTML exporter and difficult to
1500 manage with automatic indentation.}.  For finer control, you can end lists
1501 with any pattern set in @code{org-list-end-regexp}.  Here is an example:
1503 @example
1504 @group
1505 ** Lord of the Rings
1506    My favorite scenes are (in this order)
1507    1. The attack of the Rohirrim
1508    2. Eowyn's fight with the witch king
1509       + this was already my favorite scene in the book
1510       + I really like Miranda Otto.
1511    3. Peter Jackson being shot by Legolas
1512       He makes a really funny face when it happens.
1513       - on DVD only
1514    But in the end, no individual scenes matter but the film as a whole.
1515    Important actors in this film are:
1516    - @b{Elijah Wood} :: He plays Frodo
1517    - @b{Sean Austin} :: He plays Sam, Frodo's friend.  I still remember
1518      him very well from his role as Mikey Walsh in @i{The Goonies}.
1519 @end group
1520 @end example
1522 Org supports these lists by tuning filling and wrapping commands to deal with
1523 them correctly@footnote{Org only changes the filling settings for Emacs.  For
1524 XEmacs, you should use Kyle E. Jones' @file{filladapt.el}.  To turn this on,
1525 put into @file{.emacs}: @code{(require 'filladapt)}}, and by exporting them
1526 properly (@pxref{Exporting}).  Since indentation is what governs the
1527 structure of these lists, many structural constructs like @code{#+BEGIN_...}
1528 blocks can be indented to signal that they should be considered of a list
1529 item.
1531 @vindex org-list-demote-modify-bullet
1532 If you find that using a different bullet for a sub-list (than that used for
1533 the current list-level) improves readability, customize the variable
1534 @code{org-list-demote-modify-bullet}.
1536 @vindex org-list-automatic-rules
1537 The following commands act on items when the cursor is in the first line of
1538 an item (the line with the bullet or number).  Some of them imply the
1539 application of automatic rules to keep list structure in tact.  If some of
1540 these actions get in your way, configure @code{org-list-automatic-rules}
1541 to disable them individually.
1543 @table @asis
1544 @orgcmd{@key{TAB},org-cycle}
1545 @vindex org-cycle-include-plain-lists
1546 Items can be folded just like headline levels.  Normally this works only if
1547 the cursor is on a plain list item.  For more details, see the variable
1548 @code{org-cycle-include-plain-lists}. to @code{integrate}, plain list items
1549 will be treated like low-level.  The level of an item is then given by the
1550 indentation of the bullet/number.  Items are always subordinate to real
1551 headlines, however; the hierarchies remain completely separated.
1552 @orgcmd{M-@key{RET},org-insert-heading}
1553 @vindex org-M-RET-may-split-line
1554 @vindex org-list-automatic-rules
1555 Insert new item at current level.  With a prefix argument, force a new
1556 heading (@pxref{Structure editing}).  If this command is used in the middle
1557 of a line, the line is @emph{split} and the rest of the line becomes the new
1558 item@footnote{If you do not want the line to be split, customize the variable
1559 @code{org-M-RET-may-split-line}.}.  If this command is executed @emph{before
1560 item's body}, the new item is created @emph{before} the current item.  If the
1561 command is executed in the white space before the text that is part of an
1562 item but does not contain the bullet, a bullet is added to the current line.
1564 As a new item cannot be inserted in a structural construct (like an example
1565 or source code block) within a list, Org will instead insert it right before
1566 the structure, or return an error.
1567 @kindex M-S-@key{RET}
1568 @item M-S-@key{RET}
1569 Insert a new item with a checkbox (@pxref{Checkboxes}).
1570 @orgcmd{@key{TAB},org-cycle}
1571 In a new item with no text yet, the first @key{TAB} demotes the item to
1572 become a child of the previous one.  Subsequents @key{TAB} move the item to
1573 meaningful levels in the list and eventually get it back to its initial
1574 position.
1575 @kindex S-@key{down}
1576 @item S-@key{up}
1577 @itemx S-@key{down}
1578 @cindex shift-selection-mode
1579 @vindex org-support-shift-select
1580 Jump to the previous/next item in the current list, but only if
1581 @code{org-support-shift-select} is off.  If not, you can still use paragraph
1582 jumping commands like @kbd{C-@key{up}} and @kbd{C-@key{down}} to quite
1583 similar effect.
1584 @kindex M-S-@key{up}
1585 @kindex M-S-@key{down}
1586 @item M-S-@key{up}
1587 @itemx M-S-@key{down}
1588 Move the item including subitems up/down (swap with previous/next item
1589 of same indentation).  If the list is ordered, renumbering is
1590 automatic.
1591 @kindex M-@key{left}
1592 @kindex M-@key{right}
1593 @item M-@key{left}
1594 @itemx M-@key{right}
1595 Decrease/increase the indentation of an item, leaving children alone.
1596 @kindex M-S-@key{left}
1597 @kindex M-S-@key{right}
1598 @item M-S-@key{left}
1599 @itemx M-S-@key{right}
1600 Decrease/increase the indentation of the item, including subitems.
1601 Initially, the item tree is selected based on current indentation.  When
1602 these commands are executed several times in direct succession, the initially
1603 selected region is used, even if the new indentation would imply a different
1604 hierarchy.  To use the new hierarchy, break the command chain with a cursor
1605 motion or so.
1607 As a special case, using this command on the very first item of a list will
1608 move the whole list.  This behavior can be disabled by configuring
1609 @code{org-list-automatic-rules}.  The global indentation of a list has no
1610 influence on the text @emph{after} the list.
1611 @kindex C-c C-c
1612 @item C-c C-c
1613 If there is a checkbox (@pxref{Checkboxes}) in the item line, toggle the
1614 state of the checkbox.  Also, makes sure that all the
1615 items on this list level use the same bullet and that the numbering of list
1616 items (if applicable) is correct.
1617 @kindex C-c -
1618 @vindex org-plain-list-ordered-item-terminator
1619 @vindex org-list-automatic-rules
1620 @item C-c -
1621 Cycle the entire list level through the different itemize/enumerate bullets
1622 (@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}) or a subset of them,
1623 depending on @code{org-plain-list-ordered-item-terminator}, the type of list,
1624 and its position@footnote{See @code{bullet} rule in
1625 @code{org-list-automatic-rules} for more information.}.  With a numeric
1626 prefix argument N, select the Nth bullet from this list.  If there is an
1627 active region when calling this, all lines will be converted to list items.
1628 If the first line already was a list item, any item markers will be removed
1629 from the list.  Finally, even without an active region, a normal line will be
1630 converted into a list item.
1631 @kindex C-c *
1632 @item C-c *
1633 Turn a plain list item into a headline (so that it becomes a subheading at
1634 its location). @xref{Structure editing}, for a detailed explanation.
1635 @kindex S-@key{left}
1636 @kindex S-@key{right}
1637 @item S-@key{left}/@key{right}
1638 @vindex org-support-shift-select
1639 This command also cycles bullet styles when the cursor in on the bullet or
1640 anywhere in an item line, details depending on
1641 @code{org-support-shift-select}.
1642 @kindex C-c ^
1643 @item C-c ^
1644 Sort the plain list.  You will be prompted for the sorting method:
1645 numerically, alphabetically, by time, or by custom function.
1646 @end table
1648 @node Drawers, Blocks, Plain lists, Document Structure
1649 @section Drawers
1650 @cindex drawers
1651 @cindex #+DRAWERS
1652 @cindex visibility cycling, drawers
1654 @vindex org-drawers
1655 Sometimes you want to keep information associated with an entry, but you
1656 normally don't want to see it.  For this, Org-mode has @emph{drawers}.
1657 Drawers need to be configured with the variable
1658 @code{org-drawers}@footnote{You can define drawers on a per-file basis
1659 with a line like @code{#+DRAWERS: HIDDEN PROPERTIES STATE}}.  Drawers
1660 look like this:
1662 @example
1663 ** This is a headline
1664    Still outside the drawer
1665    :DRAWERNAME:
1666       This is inside the drawer.
1667    :END:
1668    After the drawer.
1669 @end example
1671 Visibility cycling (@pxref{Visibility cycling}) on the headline will hide and
1672 show the entry, but keep the drawer collapsed to a single line.  In order to
1673 look inside the drawer, you need to move the cursor to the drawer line and
1674 press @key{TAB} there.  Org-mode uses the @code{PROPERTIES} drawer for
1675 storing properties (@pxref{Properties and Columns}), and you can also arrange
1676 for state change notes (@pxref{Tracking TODO state changes}) and clock times
1677 (@pxref{Clocking work time}) to be stored in a drawer @code{LOGBOOK}.  If you
1678 want to store a quick note in the LOGBOOK drawer, in a similar way as this is
1679 done by state changes, use
1681 @table @kbd
1682 @kindex C-c C-z
1683 @item C-c C-z
1684 Add a time-stamped note to the LOGBOOK drawer.
1685 @end table
1687 @node Blocks, Footnotes, Drawers, Document Structure
1688 @section Blocks
1690 @vindex org-hide-block-startup
1691 @cindex blocks, folding
1692 Org-mode uses begin...end blocks for various purposes from including source
1693 code examples (@pxref{Literal examples}) to capturing time logging
1694 information (@pxref{Clocking work time}).  These blocks can be folded and
1695 unfolded by pressing TAB in the begin line.  You can also get all blocks
1696 folded at startup by configuring the variable @code{org-hide-block-startup}
1697 or on a per-file basis by using
1699 @cindex @code{hideblocks}, STARTUP keyword
1700 @cindex @code{nohideblocks}, STARTUP keyword
1701 @example
1702 #+STARTUP: hideblocks
1703 #+STARTUP: nohideblocks
1704 @end example
1706 @node Footnotes, Orgstruct mode, Blocks, Document Structure
1707 @section Footnotes
1708 @cindex footnotes
1710 Org-mode supports the creation of footnotes.  In contrast to the
1711 @file{footnote.el} package, Org-mode's footnotes are designed for work on a
1712 larger document, not only for one-off documents like emails.  The basic
1713 syntax is similar to the one used by @file{footnote.el}, i.e. a footnote is
1714 defined in a paragraph that is started by a footnote marker in square
1715 brackets in column 0, no indentation allowed.  If you need a paragraph break
1716 inside a footnote, use the La@TeX{} idiom @samp{\par}.  The footnote reference
1717 is simply the marker in square brackets, inside text.  For example:
1719 @example
1720 The Org homepage[fn:1] now looks a lot better than it used to.
1722 [fn:1] The link is: http://orgmode.org
1723 @end example
1725 Org-mode extends the number-based syntax to @emph{named} footnotes and
1726 optional inline definition.  Using plain numbers as markers (as
1727 @file{footnote.el} does) is supported for backward compatibility, but not
1728 encouraged because of possible conflicts with La@TeX{} snippets (@pxref{Embedded
1729 LaTeX}).  Here are the valid references:
1731 @table @code
1732 @item [1]
1733 A plain numeric footnote marker.  Compatible with @file{footnote.el}, but not
1734 recommended because something like @samp{[1]} could easily be part of a code
1735 snippet.
1736 @item [fn:name]
1737 A named footnote reference, where @code{name} is a unique label word, or, for
1738 simplicity of automatic creation, a number.
1739 @item [fn:: This is the inline definition of this footnote]
1740 A La@TeX{}-like anonymous footnote where the definition is given directly at the
1741 reference point.
1742 @item [fn:name: a definition]
1743 An inline definition of a footnote, which also specifies a name for the note.
1744 Since Org allows multiple references to the same note, you can then use
1745 @code{[fn:name]} to create additional references.
1746 @end table
1748 @vindex org-footnote-auto-label
1749 Footnote labels can be created automatically, or you can create names yourself.
1750 This is handled by the variable @code{org-footnote-auto-label} and its
1751 corresponding @code{#+STARTUP} keywords, see the docstring of that variable
1752 for details.
1754 @noindent The following command handles footnotes:
1756 @table @kbd
1757 @kindex C-c C-x f
1758 @item C-c C-x f
1759 The footnote action command.
1761 When the cursor is on a footnote reference, jump to the definition.  When it
1762 is at a definition, jump to the (first) reference.
1764 @vindex org-footnote-define-inline
1765 @vindex org-footnote-section
1766 @vindex org-footnote-auto-adjust
1767 Otherwise, create a new footnote.  Depending on the variable
1768 @code{org-footnote-define-inline}@footnote{The corresponding in-buffer
1769 setting is: @code{#+STARTUP: fninline} or @code{#+STARTUP: nofninline}}, the
1770 definition will be placed right into the text as part of the reference, or
1771 separately into the location determined by the variable
1772 @code{org-footnote-section}.
1774 When this command is called with a prefix argument, a menu of additional
1775 options is offered:
1776 @example
1777 s   @r{Sort the footnote definitions by reference sequence.  During editing,}
1778     @r{Org makes no effort to sort footnote definitions into a particular}
1779     @r{sequence.  If you want them sorted, use this command, which will}
1780     @r{also move entries according to @code{org-footnote-section}.  Automatic}
1781     @r{sorting after each insertion/deletion can be configured using the}
1782     @r{variable @code{org-footnote-auto-adjust}.}
1783 r   @r{Renumber the simple @code{fn:N} footnotes.  Automatic renumbering}
1784     @r{after each insertion/deletion can be configured using the variable}
1785     @r{@code{org-footnote-auto-adjust}.}
1786 S   @r{Short for first @code{r}, then @code{s} action.}
1787 n   @r{Normalize the footnotes by collecting all definitions (including}
1788     @r{inline definitions) into a special section, and then numbering them}
1789     @r{in sequence.  The references will then also be numbers.  This is}
1790     @r{meant to be the final step before finishing a document (e.g. sending}
1791     @r{off an email).  The exporters do this automatically, and so could}
1792     @r{something like @code{message-send-hook}.}
1793 d   @r{Delete the footnote at point, and all definitions of and references}
1794     @r{to it.}
1795 @end example
1796 Depending on the variable @code{org-footnote-auto-adjust}@footnote{the
1797 corresponding in-buffer options are @code{fnadjust} and @code{nofnadjust}.},
1798 renumbering and sorting footnotes can be automatic after each insertion or
1799 deletion.
1801 @kindex C-c C-c
1802 @item C-c C-c
1803 If the cursor is on a footnote reference, jump to the definition.  If it is a
1804 the definition, jump back to the reference.  When called at a footnote
1805 location with a prefix argument, offer the same menu as @kbd{C-c C-x f}.
1806 @kindex C-c C-o
1807 @kindex mouse-1
1808 @kindex mouse-2
1809 @item C-c C-o  @r{or} mouse-1/2
1810 Footnote labels are also links to the corresponding definition/reference, and
1811 you can use the usual commands to follow these links.
1812 @end table
1814 @node Orgstruct mode,  , Footnotes, Document Structure
1815 @section The Orgstruct minor mode
1816 @cindex Orgstruct mode
1817 @cindex minor mode for structure editing
1819 If you like the intuitive way the Org-mode structure editing and list
1820 formatting works, you might want to use these commands in other modes like
1821 Text mode or Mail mode as well.  The minor mode @code{orgstruct-mode} makes
1822 this possible.   Toggle the mode with @kbd{M-x orgstruct-mode}, or
1823 turn it on by default, for example in Mail mode, with one of:
1825 @lisp
1826 (add-hook 'mail-mode-hook 'turn-on-orgstruct)
1827 (add-hook 'mail-mode-hook 'turn-on-orgstruct++)
1828 @end lisp
1830 When this mode is active and the cursor is on a line that looks to Org like a
1831 headline or the first line of a list item, most structure editing commands
1832 will work, even if the same keys normally have different functionality in the
1833 major mode you are using.  If the cursor is not in one of those special
1834 lines, Orgstruct mode lurks silently in the shadow.  When you use
1835 @code{orgstruct++-mode}, Org will also export indentation and autofill
1836 settings into that mode, and detect item context after the first line of an
1837 item.
1839 @node Tables, Hyperlinks, Document Structure, Top
1840 @chapter Tables
1841 @cindex tables
1842 @cindex editing tables
1844 Org comes with a fast and intuitive table editor.  Spreadsheet-like
1845 calculations are supported in connection with the Emacs @file{calc}
1846 package
1847 @ifinfo
1848 (@pxref{Top,Calc,,Calc,Gnu Emacs Calculator Manual}).
1849 @end ifinfo
1850 @ifnotinfo
1851 (see the Emacs Calculator manual for more information about the Emacs
1852 calculator).
1853 @end ifnotinfo
1855 @menu
1856 * Built-in table editor::       Simple tables
1857 * Column width and alignment::  Overrule the automatic settings
1858 * Column groups::               Grouping to trigger vertical lines
1859 * Orgtbl mode::                 The table editor as minor mode
1860 * The spreadsheet::             The table editor has spreadsheet capabilities
1861 * Org-Plot::                    Plotting from org tables
1862 @end menu
1864 @node Built-in table editor, Column width and alignment, Tables, Tables
1865 @section The built-in table editor
1866 @cindex table editor, built-in
1868 Org makes it easy to format tables in plain ASCII.  Any line with
1869 @samp{|} as the first non-whitespace character is considered part of a
1870 table.  @samp{|} is also the column separator.  A table might look like
1871 this:
1873 @example
1874 | Name  | Phone | Age |
1875 |-------+-------+-----|
1876 | Peter |  1234 |  17 |
1877 | Anna  |  4321 |  25 |
1878 @end example
1880 A table is re-aligned automatically each time you press @key{TAB} or
1881 @key{RET} or @kbd{C-c C-c} inside the table.  @key{TAB} also moves to
1882 the next field (@key{RET} to the next row) and creates new table rows
1883 at the end of the table or before horizontal lines.  The indentation
1884 of the table is set by the first line.  Any line starting with
1885 @samp{|-} is considered as a horizontal separator line and will be
1886 expanded on the next re-align to span the whole table width.  So, to
1887 create the above table, you would only type
1889 @example
1890 |Name|Phone|Age|
1892 @end example
1894 @noindent and then press @key{TAB} to align the table and start filling in
1895 fields.  Even faster would be to type @code{|Name|Phone|Age} followed by
1896 @kbd{C-c @key{RET}}.
1898 @vindex org-enable-table-editor
1899 @vindex org-table-auto-blank-field
1900 When typing text into a field, Org treats @key{DEL},
1901 @key{Backspace}, and all character keys in a special way, so that
1902 inserting and deleting avoids shifting other fields.  Also, when
1903 typing @emph{immediately after the cursor was moved into a new field
1904 with @kbd{@key{TAB}}, @kbd{S-@key{TAB}} or @kbd{@key{RET}}}, the
1905 field is automatically made blank.  If this behavior is too
1906 unpredictable for you, configure the variables
1907 @code{org-enable-table-editor} and @code{org-table-auto-blank-field}.
1909 @table @kbd
1910 @tsubheading{Creation and conversion}
1911 @orgcmd{C-c |,org-table-create-or-convert-from-region}
1912 Convert the active region to table. If every line contains at least one
1913 TAB character, the function assumes that the material is tab separated.
1914 If every line contains a comma, comma-separated values (CSV) are assumed.
1915 If not, lines are split at whitespace into fields.  You can use a prefix
1916 argument to force a specific separator: @kbd{C-u} forces CSV, @kbd{C-u
1917 C-u} forces TAB, and a numeric argument N indicates that at least N
1918 consecutive spaces, or alternatively a TAB will be the separator.
1920 If there is no active region, this command creates an empty Org
1921 table.  But it's easier just to start typing, like
1922 @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
1924 @tsubheading{Re-aligning and field motion}
1925 @orgcmd{C-c C-c,org-table-align}
1926 Re-align the table without moving the cursor.
1928 @orgcmd{<TAB>,org-table-next-field}
1929 Re-align the table, move to the next field.  Creates a new row if
1930 necessary.
1932 @orgcmd{S-@key{TAB},org-table-previous-field}
1933 Re-align, move to previous field.
1935 @orgcmd{@key{RET},org-table-next-row}
1936 Re-align the table and move down to next row.  Creates a new row if
1937 necessary.  At the beginning or end of a line, @key{RET} still does
1938 NEWLINE, so it can be used to split a table.
1940 @orgcmd{M-a,org-table-beginning-of-field}
1941 Move to beginning of the current table field, or on to the previous field.
1942 @orgcmd{M-e,org-table-end-of-field}
1943 Move to end of the current table field, or on to the next field.
1945 @tsubheading{Column and row editing}
1946 @orgcmdkkcc{M-@key{left},M-@key{right},org-table-move-column-left,org-table-move-column-right}
1947 Move the current column left/right.
1949 @orgcmd{M-S-@key{left},org-table-delete-column}
1950 Kill the current column.
1952 @orgcmd{M-S-@key{right},org-table-insert-column}
1953 Insert a new column to the left of the cursor position.
1955 @orgcmdkkcc{M-@key{up},M-@key{down},org-table-move-row-up,org-table-move-row-down}
1956 Move the current row up/down.
1958 @orgcmd{M-S-@key{up},org-table-kill-row}
1959 Kill the current row or horizontal line.
1961 @orgcmd{M-S-@key{down},org-table-insert-row}
1962 Insert a new row above the current row.  With a prefix argument, the line is
1963 created below the current one.
1965 @orgcmd{C-c -,org-table-insert-hline}
1966 Insert a horizontal line below current row.  With a prefix argument, the line
1967 is created above the current line.
1969 @orgcmd{C-c @key{RET},org-table-hline-and-move}
1970 Insert a horizontal line below current row, and move the cursor into the row
1971 below that line.
1973 @orgcmd{C-c ^,org-table-sort-lines}
1974 Sort the table lines in the region.  The position of point indicates the
1975 column to be used for sorting, and the range of lines is the range
1976 between the nearest horizontal separator lines, or the entire table.  If
1977 point is before the first column, you will be prompted for the sorting
1978 column.  If there is an active region, the mark specifies the first line
1979 and the sorting column, while point should be in the last line to be
1980 included into the sorting.  The command prompts for the sorting type
1981 (alphabetically, numerically, or by time).  When called with a prefix
1982 argument, alphabetic sorting will be case-sensitive.
1984 @tsubheading{Regions}
1985 @orgcmd{C-c C-x M-w,org-table-copy-region}
1986 Copy a rectangular region from a table to a special clipboard.  Point and
1987 mark determine edge fields of the rectangle.  If there is no active region,
1988 copy just the current field.  The process ignores horizontal separator lines.
1990 @orgcmd{C-c C-x C-w,org-table-cut-region}
1991 Copy a rectangular region from a table to a special clipboard, and
1992 blank all fields in the rectangle.  So this is the ``cut'' operation.
1994 @orgcmd{C-c C-x C-y,org-table-paste-rectangle}
1995 Paste a rectangular region into a table.
1996 The upper left corner ends up in the current field.  All involved fields
1997 will be overwritten.  If the rectangle does not fit into the present table,
1998 the table is enlarged as needed.  The process ignores horizontal separator
1999 lines.
2001 @orgcmd{M-@key{RET},org-table-wrap-region}
2002 Split the current field at the cursor position and move the rest to the line
2003 below.  If there is an active region, and both point and mark are in the same
2004 column, the text in the column is wrapped to minimum width for the given
2005 number of lines.  A numeric prefix argument may be used to change the number
2006 of desired lines.  If there is no region, but you specify a prefix argument,
2007 the current field is made blank, and the content is appended to the field
2008 above.
2010 @tsubheading{Calculations}
2011 @cindex formula, in tables
2012 @cindex calculations, in tables
2013 @cindex region, active
2014 @cindex active region
2015 @cindex transient mark mode
2016 @orgcmd{C-c +,org-table-sum}
2017 Sum the numbers in the current column, or in the rectangle defined by
2018 the active region.  The result is shown in the echo area and can
2019 be inserted with @kbd{C-y}.
2021 @orgcmd{S-@key{RET},org-table-copy-down}
2022 @vindex org-table-copy-increment
2023 When current field is empty, copy from first non-empty field above.  When not
2024 empty, copy current field down to next row and move cursor along with it.
2025 Depending on the variable @code{org-table-copy-increment}, integer field
2026 values will be incremented during copy.  Integers that are too large will not
2027 be incremented.  Also, a @code{0} prefix argument temporarily disables the
2028 increment.  This key is also used by shift-selection and related modes
2029 (@pxref{Conflicts}).
2031 @tsubheading{Miscellaneous}
2032 @orgcmd{C-c `,org-table-edit-field}
2033 Edit the current field in a separate window.  This is useful for fields that
2034 are not fully visible (@pxref{Column width and alignment}).  When called with
2035 a @kbd{C-u} prefix, just make the full field visible, so that it can be
2036 edited in place.
2038 @item M-x org-table-import
2039 Import a file as a table.  The table should be TAB or whitespace
2040 separated.  Use, for example, to import a spreadsheet table or data
2041 from a database, because these programs generally can write
2042 TAB-separated text files.  This command works by inserting the file into
2043 the buffer and then converting the region to a table.  Any prefix
2044 argument is passed on to the converter, which uses it to determine the
2045 separator.
2046 @orgcmd{C-c |,org-table-create-or-convert-from-region}
2047 Tables can also be imported by pasting tabular text into the Org
2048 buffer, selecting the pasted text with @kbd{C-x C-x} and then using the
2049 @kbd{C-c |} command (see above under @i{Creation and conversion}).
2051 @item M-x org-table-export
2052 @findex org-table-export
2053 @vindex org-table-export-default-format
2054 Export the table, by default as a TAB-separated file.  Use for data
2055 exchange with, for example, spreadsheet or database programs.  The format
2056 used to export the file can be configured in the variable
2057 @code{org-table-export-default-format}.  You may also use properties
2058 @code{TABLE_EXPORT_FILE} and @code{TABLE_EXPORT_FORMAT} to specify the file
2059 name and the format for table export in a subtree.  Org supports quite
2060 general formats for exported tables.  The exporter format is the same as the
2061 format used by Orgtbl radio tables, see @ref{Translator functions}, for a
2062 detailed description.
2063 @end table
2065 If you don't like the automatic table editor because it gets in your
2066 way on lines which you would like to start with @samp{|}, you can turn
2067 it off with
2069 @lisp
2070 (setq org-enable-table-editor nil)
2071 @end lisp
2073 @noindent Then the only table command that still works is
2074 @kbd{C-c C-c} to do a manual re-align.
2076 @node Column width and alignment, Column groups, Built-in table editor, Tables
2077 @section Column width and alignment
2078 @cindex narrow columns in tables
2079 @cindex alignment in tables
2081 The width of columns is automatically determined by the table editor.  And
2082 also the alignment of a column is determined automatically from the fraction
2083 of number-like versus non-number fields in the column.
2085 Sometimes a single field or a few fields need to carry more text, leading to
2086 inconveniently wide columns.  Or maybe you want to make a table with several
2087 columns having a fixed width, regardless of content.  To set@footnote{This
2088 feature does not work on XEmacs.} the width of a column, one field anywhere
2089 in the column may contain just the string @samp{<N>} where @samp{N} is an
2090 integer specifying the width of the column in characters.  The next re-align
2091 will then set the width of this column to this value.
2093 @example
2094 @group
2095 |---+------------------------------|               |---+--------|
2096 |   |                              |               |   | <6>    |
2097 | 1 | one                          |               | 1 | one    |
2098 | 2 | two                          |     ----\     | 2 | two    |
2099 | 3 | This is a long chunk of text |     ----/     | 3 | This=> |
2100 | 4 | four                         |               | 4 | four   |
2101 |---+------------------------------|               |---+--------|
2102 @end group
2103 @end example
2105 @noindent
2106 Fields that are wider become clipped and end in the string @samp{=>}.
2107 Note that the full text is still in the buffer, it is only invisible.
2108 To see the full text, hold the mouse over the field---a tool-tip window
2109 will show the full content.  To edit such a field, use the command
2110 @kbd{C-c `} (that is @kbd{C-c} followed by the backquote).  This will
2111 open a new window with the full field.  Edit it and finish with @kbd{C-c
2112 C-c}.
2114 @vindex org-startup-align-all-tables
2115 When visiting a file containing a table with narrowed columns, the
2116 necessary character hiding has not yet happened, and the table needs to
2117 be aligned before it looks nice.  Setting the option
2118 @code{org-startup-align-all-tables} will realign all tables in a file
2119 upon visiting, but also slow down startup.  You can also set this option
2120 on a per-file basis with:
2122 @example
2123 #+STARTUP: align
2124 #+STARTUP: noalign
2125 @end example
2127 If you would like to overrule the automatic alignment of number-rich columns
2128 to the right and of string-rich column to the left, you and use @samp{<r>},
2129 @samp{c}@footnote{Centering does not work inside Emacs, but it does have an
2130 effect when exporting to HTML.} or @samp{<l>} in a similar fashion.  You may
2131 also combine alignment and field width like this: @samp{<l10>}.
2133 Lines which only contain these formatting cookies will be removed
2134 automatically when exporting the document.
2136 @node Column groups, Orgtbl mode, Column width and alignment, Tables
2137 @section Column groups
2138 @cindex grouping columns in tables
2140 When Org exports tables, it does so by default without vertical
2141 lines because that is visually more satisfying in general.  Occasionally
2142 however, vertical lines can be useful to structure a table into groups
2143 of columns, much like horizontal lines can do for groups of rows.  In
2144 order to specify column groups, you can use a special row where the
2145 first field contains only @samp{/}.  The further fields can either
2146 contain @samp{<} to indicate that this column should start a group,
2147 @samp{>} to indicate the end of a column, or @samp{<>} to make a column
2148 a group of its own.  Boundaries between column groups will upon export be
2149 marked with vertical lines.  Here is an example:
2151 @example
2152 | N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
2153 |---+-----+-----+-----+---------+------------|
2154 | / |   < |     |   > |       < |          > |
2155 | 1 |   1 |   1 |   1 |       1 |          1 |
2156 | 2 |   4 |   8 |  16 |  1.4142 |     1.1892 |
2157 | 3 |   9 |  27 |  81 |  1.7321 |     1.3161 |
2158 |---+-----+-----+-----+---------+------------|
2159 #+TBLFM: $2=$1^2::$3=$1^3::$4=$1^4::$5=sqrt($1)::$6=sqrt(sqrt(($1)))
2160 @end example
2162 It is also sufficient to just insert the column group starters after
2163 every vertical line you would like to have:
2165 @example
2166 |  N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
2167 |----+-----+-----+-----+---------+------------|
2168 | /  | <   |     |     | <       |            |
2169 @end example
2171 @node Orgtbl mode, The spreadsheet, Column groups, Tables
2172 @section The Orgtbl minor mode
2173 @cindex Orgtbl mode
2174 @cindex minor mode for tables
2176 If you like the intuitive way the Org table editor works, you
2177 might also want to use it in other modes like Text mode or Mail mode.
2178 The minor mode Orgtbl mode makes this possible.  You can always toggle
2179 the mode with @kbd{M-x orgtbl-mode}.  To turn it on by default, for
2180 example in mail mode, use
2182 @lisp
2183 (add-hook 'mail-mode-hook 'turn-on-orgtbl)
2184 @end lisp
2186 Furthermore, with some special setup, it is possible to maintain tables
2187 in arbitrary syntax with Orgtbl mode.  For example, it is possible to
2188 construct La@TeX{} tables with the underlying ease and power of
2189 Orgtbl mode, including spreadsheet capabilities.  For details, see
2190 @ref{Tables in arbitrary syntax}.
2192 @node The spreadsheet, Org-Plot, Orgtbl mode, Tables
2193 @section The spreadsheet
2194 @cindex calculations, in tables
2195 @cindex spreadsheet capabilities
2196 @cindex @file{calc} package
2198 The table editor makes use of the Emacs @file{calc} package to implement
2199 spreadsheet-like capabilities.  It can also evaluate Emacs Lisp forms to
2200 derive fields from other fields.  While fully featured, Org's implementation
2201 is not identical to other spreadsheets.  For example, Org knows the concept
2202 of a @emph{column formula} that will be applied to all non-header fields in a
2203 column without having to copy the formula to each relevant field.  There is
2204 also a formula debugger, and a formula editor with features for highlighting
2205 fields in the table corresponding to the references at the point in the
2206 formula, moving these references by arrow keys
2208 @menu
2209 * References::                  How to refer to another field or range
2210 * Formula syntax for Calc::     Using Calc to compute stuff
2211 * Formula syntax for Lisp::     Writing formulas in Emacs Lisp
2212 * Field formulas::              Formulas valid for a single field
2213 * Column formulas::             Formulas valid for an entire column
2214 * Editing and debugging formulas::  Fixing formulas
2215 * Updating the table::          Recomputing all dependent fields
2216 * Advanced features::           Field names, parameters and automatic recalc
2217 @end menu
2219 @node References, Formula syntax for Calc, The spreadsheet, The spreadsheet
2220 @subsection References
2221 @cindex references
2223 To compute fields in the table from other fields, formulas must
2224 reference other fields or ranges.  In Org, fields can be referenced
2225 by name, by absolute coordinates, and by relative coordinates.  To find
2226 out what the coordinates of a field are, press @kbd{C-c ?} in that
2227 field, or press @kbd{C-c @}} to toggle the display of a grid.
2229 @subsubheading Field references
2230 @cindex field references
2231 @cindex references, to fields
2233 Formulas can reference the value of another field in two ways.  Like in
2234 any other spreadsheet, you may reference fields with a letter/number
2235 combination like @code{B3}, meaning the 2nd field in the 3rd row.
2236 @c Such references are always fixed to that field, they don't change
2237 @c when you copy and paste a formula to a different field.  So
2238 @c Org's @code{B3} behaves like @code{$B$3} in other spreadsheets.
2240 @noindent
2241 Org also uses another, more general operator that looks like this:
2242 @example
2243 @@@var{row}$@var{column}
2244 @end example
2246 @noindent
2247 Column references can be absolute like @samp{1}, @samp{2},...@samp{@var{N}},
2248 or relative to the current column like @samp{+1} or @samp{-2}.
2250 The row specification only counts data lines and ignores horizontal
2251 separator lines (hlines).  You can use absolute row numbers
2252 @samp{1}...@samp{@var{N}}, and row numbers relative to the current row like
2253 @samp{+3} or @samp{-1}.  Or specify the row relative to one of the
2254 hlines: @samp{I} refers to the first hline@footnote{Note that only
2255 hlines are counted that @emph{separate} table lines.  If the table
2256 starts with a hline above the header, it does not count.}, @samp{II} to
2257 the second, etc@.  @samp{-I} refers to the first such line above the
2258 current line, @samp{+I} to the first such line below the current line.
2259 You can also write @samp{III+2} which is the second data line after the
2260 third hline in the table.
2262 @samp{0} refers to the current row and column.  Also, if you omit
2263 either the column or the row part of the reference, the current
2264 row/column is implied.
2266 Org's references with @emph{unsigned} numbers are fixed references
2267 in the sense that if you use the same reference in the formula for two
2268 different fields, the same field will be referenced each time.
2269 Org's references with @emph{signed} numbers are floating
2270 references because the same reference operator can reference different
2271 fields depending on the field being calculated by the formula.
2273 As a special case, references like @samp{$LR5} and @samp{$LR12} can be used
2274 to refer in a stable way to the 5th and 12th field in the last row of the
2275 table.
2277 Here are a few examples:
2279 @example
2280 @@2$3      @r{2nd row, 3rd column}
2281 C2        @r{same as previous}
2282 $5        @r{column 5 in the current row}
2283 E&        @r{same as previous}
2284 @@2        @r{current column, row 2}
2285 @@-1$-3    @r{the field one row up, three columns to the left}
2286 @@-I$2     @r{field just under hline above current row, column 2}
2287 @end example
2289 @subsubheading Range references
2290 @cindex range references
2291 @cindex references, to ranges
2293 You may reference a rectangular range of fields by specifying two field
2294 references connected by two dots @samp{..}.  If both fields are in the
2295 current row, you may simply use @samp{$2..$7}, but if at least one field
2296 is in a different row, you need to use the general @code{@@row$column}
2297 format at least for the first field (i.e the reference must start with
2298 @samp{@@} in order to be interpreted correctly).  Examples:
2300 @example
2301 $1..$3        @r{First three fields in the current row.}
2302 $P..$Q        @r{Range, using column names (see under Advanced)}
2303 @@2$1..@@4$3    @r{6 fields between these two fields.}
2304 A2..C4        @r{Same as above.}
2305 @@-1$-2..@@-1   @r{3 numbers from the column to the left, 2 up to current row}
2306 @end example
2308 @noindent Range references return a vector of values that can be fed
2309 into Calc vector functions.  Empty fields in ranges are normally
2310 suppressed, so that the vector contains only the non-empty fields (but
2311 see the @samp{E} mode switch below).  If there are no non-empty fields,
2312 @samp{[0]} is returned to avoid syntax errors in formulas.
2314 @subsubheading Field coordinates in formulas
2315 @cindex field coordinates
2316 @cindex coordinates, of field
2317 @cindex row, of field coordinates
2318 @cindex column, of field coordinates
2320 For Calc formulas and Lisp formulas @code{@@#} and @code{$#} can be used to
2321 get the row or column number of the field where the formula result goes.
2322 The traditional Lisp formula equivalents are @code{org-table-current-dline}
2323 and @code{org-table-current-column}.  Examples:
2325 @example
2326 if(@@# % 2, $#, string(""))   @r{column number on odd lines only}
2327 $3 = remote(FOO, @@@@#$2)      @r{copy column 2 from table FOO into}
2328                              @r{column 3 of the current table}
2329 @end example
2331 @noindent For the second example, table FOO must have at least as many rows
2332 as the current table.  Inefficient@footnote{The computation time scales as
2333 O(N^2) because table FOO is parsed for each field to be copied.} for large
2334 number of rows.
2336 @subsubheading Named references
2337 @cindex named references
2338 @cindex references, named
2339 @cindex name, of column or field
2340 @cindex constants, in calculations
2341 @cindex #+CONSTANTS
2343 @vindex org-table-formula-constants
2344 @samp{$name} is interpreted as the name of a column, parameter or
2345 constant.  Constants are defined globally through the variable
2346 @code{org-table-formula-constants}, and locally (for the file) through a
2347 line like
2349 @example
2350 #+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6
2351 @end example
2353 @noindent
2354 @vindex constants-unit-system
2355 @pindex constants.el
2356 Also properties (@pxref{Properties and Columns}) can be used as
2357 constants in table formulas: for a property @samp{:Xyz:} use the name
2358 @samp{$PROP_Xyz}, and the property will be searched in the current
2359 outline entry and in the hierarchy above it.  If you have the
2360 @file{constants.el} package, it will also be used to resolve constants,
2361 including natural constants like @samp{$h} for Planck's constant, and
2362 units like @samp{$km} for kilometers@footnote{@file{constants.el} can
2363 supply the values of constants in two different unit systems, @code{SI}
2364 and @code{cgs}.  Which one is used depends on the value of the variable
2365 @code{constants-unit-system}.  You can use the @code{#+STARTUP} options
2366 @code{constSI} and @code{constcgs} to set this value for the current
2367 buffer.}.  Column names and parameters can be specified in special table
2368 lines.  These are described below, see @ref{Advanced features}.  All
2369 names must start with a letter, and further consist of letters and
2370 numbers.
2372 @subsubheading Remote references
2373 @cindex remote references
2374 @cindex references, remote
2375 @cindex references, to a different table
2376 @cindex name, of column or field
2377 @cindex constants, in calculations
2378 @cindex #+TBLNAME
2380 You may also reference constants, fields and ranges from a different table,
2381 either in the current file or even in a different file.  The syntax is
2383 @example
2384 remote(NAME-OR-ID,REF)
2385 @end example
2387 @noindent
2388 where NAME can be the name of a table in the current file as set by a
2389 @code{#+TBLNAME: NAME} line before the table.  It can also be the ID of an
2390 entry, even in a different file, and the reference then refers to the first
2391 table in that entry.  REF is an absolute field or range reference as
2392 described above for example @code{@@3$3} or @code{$somename}, valid in the
2393 referenced table.
2395 @node Formula syntax for Calc, Formula syntax for Lisp, References, The spreadsheet
2396 @subsection Formula syntax for Calc
2397 @cindex formula syntax, Calc
2398 @cindex syntax, of formulas
2400 A formula can be any algebraic expression understood by the Emacs
2401 @file{Calc} package.  @b{Note that @file{calc} has the
2402 non-standard convention that @samp{/} has lower precedence than
2403 @samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.}  Before
2404 evaluation by @code{calc-eval} (@pxref{Calling Calc from
2405 Your Programs,calc-eval,Calling Calc from Your Lisp Programs,Calc,GNU
2406 Emacs Calc Manual}),
2407 @c FIXME:  The link to the Calc manual in HTML does not work.
2408 variable substitution takes place according to the rules described above.
2409 @cindex vectors, in table calculations
2410 The range vectors can be directly fed into the Calc vector functions
2411 like @samp{vmean} and @samp{vsum}.
2413 @cindex format specifier
2414 @cindex mode, for @file{calc}
2415 @vindex org-calc-default-modes
2416 A formula can contain an optional mode string after a semicolon.  This
2417 string consists of flags to influence Calc and other modes during
2418 execution.  By default, Org uses the standard Calc modes (precision
2419 12, angular units degrees, fraction and symbolic modes off).  The display
2420 format, however, has been changed to @code{(float 8)} to keep tables
2421 compact.  The default settings can be configured using the variable
2422 @code{org-calc-default-modes}.
2424 @example
2425 p20           @r{set the internal Calc calculation precision to 20 digits}
2426 n3 s3 e2 f4   @r{Normal, scientific, engineering, or fixed}
2427               @r{format of the result of Calc passed back to Org.}
2428               @r{Calc formatting is unlimited in precision as}
2429               @r{long as the Calc calculation precision is greater.}
2430 D R           @r{angle modes: degrees, radians}
2431 F S           @r{fraction and symbolic modes}
2432 N             @r{interpret all fields as numbers, use 0 for non-numbers}
2433 T             @r{force text interpretation}
2434 E             @r{keep empty fields in ranges}
2435 L             @r{literal}
2436 @end example
2438 @noindent
2439 Unless you use large integer numbers or high-precision-calculation
2440 and -display for floating point numbers you may alternatively provide a
2441 @code{printf} format specifier to reformat the Calc result after it has been
2442 passed back to Org instead of letting Calc already do the
2443 formatting@footnote{The @code{printf} reformatting is limited in precision
2444 because the value passed to it is converted into an @code{integer} or
2445 @code{double}.  The @code{integer} is limited in size by truncating the
2446 signed value to 32 bits.  The @code{double} is limited in precision to 64
2447 bits overall which leaves approximately 16 significant decimal digits.}.
2448 A few examples:
2450 @example
2451 $1+$2                @r{Sum of first and second field}
2452 $1+$2;%.2f           @r{Same, format result to two decimals}
2453 exp($2)+exp($1)      @r{Math functions can be used}
2454 $0;%.1f              @r{Reformat current cell to 1 decimal}
2455 ($3-32)*5/9          @r{Degrees F -> C conversion}
2456 $c/$1/$cm            @r{Hz -> cm conversion, using @file{constants.el}}
2457 tan($1);Dp3s1        @r{Compute in degrees, precision 3, display SCI 1}
2458 sin($1);Dp3%.1e      @r{Same, but use printf specifier for display}
2459 vmean($2..$7)        @r{Compute column range mean, using vector function}
2460 vmean($2..$7);EN     @r{Same, but treat empty fields as 0}
2461 taylor($3,x=7,2)     @r{taylor series of $3, at x=7, second degree}
2462 @end example
2464 Calc also contains a complete set of logical operations.  For example
2466 @example
2467 if($1<20,teen,string(""))  @r{``teen'' if age $1 less than 20, else empty}
2468 @end example
2470 @node Formula syntax for Lisp, Field formulas, Formula syntax for Calc, The spreadsheet
2471 @subsection Emacs Lisp forms as formulas
2472 @cindex Lisp forms, as table formulas
2474 It is also possible to write a formula in Emacs Lisp; this can be useful
2475 for string manipulation and control structures, if Calc's
2476 functionality is not enough.  If a formula starts with a single-quote
2477 followed by an opening parenthesis, then it is evaluated as a Lisp form.
2478 The evaluation should return either a string or a number.  Just as with
2479 @file{calc} formulas, you can specify modes and a printf format after a
2480 semicolon.  With Emacs Lisp forms, you need to be conscious about the way
2481 field references are interpolated into the form.  By default, a
2482 reference will be interpolated as a Lisp string (in double-quotes)
2483 containing the field.  If you provide the @samp{N} mode switch, all
2484 referenced elements will be numbers (non-number fields will be zero) and
2485 interpolated as Lisp numbers, without quotes.  If you provide the
2486 @samp{L} flag, all fields will be interpolated literally, without quotes.
2487 I.e., if you want a reference to be interpreted as a string by the Lisp
2488 form, enclose the reference operator itself in double-quotes, like
2489 @code{"$3"}.  Ranges are inserted as space-separated fields, so you can
2490 embed them in list or vector syntax.  A few examples, note how the
2491 @samp{N} mode is used when we do computations in Lisp.
2493 @example
2494 @r{Swap the first two characters of the content of column 1}
2495   '(concat (substring $1 1 2) (substring $1 0 1) (substring $1 2))
2496 @r{Add columns 1 and 2, equivalent to Calc's @code{$1+$2}}
2497   '(+ $1 $2);N
2498 @r{Compute the sum of columns 1-4, like Calc's @code{vsum($1..$4)}}
2499   '(apply '+ '($1..$4));N
2500 @end example
2502 @node Field formulas, Column formulas, Formula syntax for Lisp, The spreadsheet
2503 @subsection Field formulas
2504 @cindex field formula
2505 @cindex formula, for individual table field
2507 To assign a formula to a particular field, type it directly into the
2508 field, preceded by @samp{:=}, for example @samp{:=$1+$2}.  When you
2509 press @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in
2510 the field, the formula will be stored as the formula for this field,
2511 evaluated, and the current field replaced with the result.
2513 @cindex #+TBLFM
2514 Formulas are stored in a special line starting with @samp{#+TBLFM:}
2515 directly below the table.  If you typed the equation in the 4th field of
2516 the 3rd data line in the table, the formula will look like
2517 @samp{@@3$4=$1+$2}.  When inserting/deleting/swapping column and rows
2518 with the appropriate commands, @i{absolute references} (but not relative
2519 ones) in stored formulas are modified in order to still reference the
2520 same field.  Of course this is not true if you edit the table structure
2521 with normal editing commands---then you must fix the equations yourself.
2522 The left-hand side of a formula may also be a named field (@pxref{Advanced
2523 features}), or a last-row reference like @samp{$LR3}.
2525 Instead of typing an equation into the field, you may also use the
2526 following command
2528 @table @kbd
2529 @orgcmd{C-u C-c =,org-table-eval-formula}
2530 Install a new formula for the current field.  The command prompts for a
2531 formula with default taken from the @samp{#+TBLFM:} line, applies
2532 it to the current field, and stores it.
2533 @end table
2535 @node Column formulas, Editing and debugging formulas, Field formulas, The spreadsheet
2536 @subsection Column formulas
2537 @cindex column formula
2538 @cindex formula, for table column
2540 Often in a table, the same formula should be used for all fields in a
2541 particular column.  Instead of having to copy the formula to all fields
2542 in that column, Org allows you to assign a single formula to an entire
2543 column.  If the table contains horizontal separator hlines, everything
2544 before the first such line is considered part of the table @emph{header}
2545 and will not be modified by column formulas.
2547 To assign a formula to a column, type it directly into any field in the
2548 column, preceded by an equal sign, like @samp{=$1+$2}.  When you press
2549 @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the field,
2550 the formula will be stored as the formula for the current column, evaluated
2551 and the current field replaced with the result.  If the field contains only
2552 @samp{=}, the previously stored formula for this column is used.  For each
2553 column, Org will only remember the most recently used formula.  In the
2554 @samp{#+TBLFM:} line, column formulas will look like @samp{$4=$1+$2}.  The left-hand
2555 side of a column formula cannot currently be the name of column, it
2556 must be the numeric column reference.
2558 Instead of typing an equation into the field, you may also use the
2559 following command:
2561 @table @kbd
2562 @orgcmd{C-c =,org-table-eval-formula}
2563 Install a new formula for the current column and replace current field with
2564 the result of the formula.  The command prompts for a formula, with default
2565 taken from the @samp{#+TBLFM} line, applies it to the current field and
2566 stores it.  With a numeric prefix argument(e.g. @kbd{C-5 C-c =}) the command
2567 will apply it to that many consecutive fields in the current column.
2568 @end table
2570 @node Editing and debugging formulas, Updating the table, Column formulas, The spreadsheet
2571 @subsection Editing and debugging formulas
2572 @cindex formula editing
2573 @cindex editing, of table formulas
2575 @vindex org-table-use-standard-references
2576 You can edit individual formulas in the minibuffer or directly in the
2577 field.  Org can also prepare a special buffer with all active
2578 formulas of a table.  When offering a formula for editing, Org
2579 converts references to the standard format (like @code{B3} or @code{D&})
2580 if possible.  If you prefer to only work with the internal format (like
2581 @code{@@3$2} or @code{$4}), configure the variable
2582 @code{org-table-use-standard-references}.
2584 @table @kbd
2585 @orgcmdkkc{C-c =,C-u C-c =,org-table-eval-formula}
2586 Edit the formula associated with the current column/field in the
2587 minibuffer.  See @ref{Column formulas}, and @ref{Field formulas}.
2588 @orgcmd{C-u C-u C-c =,org-table-eval-formula}
2589 Re-insert the active formula (either a
2590 field formula, or a column formula) into the current field, so that you
2591 can edit it directly in the field.  The advantage over editing in the
2592 minibuffer is that you can use the command @kbd{C-c ?}.
2593 @orgcmd{C-c ?,org-table-field-info}
2594 While editing a formula in a table field, highlight the field(s)
2595 referenced by the reference at the cursor position in the formula.
2596 @kindex C-c @}
2597 @findex org-table-toggle-coordinate-overlays
2598 @item C-c @}
2599 Toggle the display of row and column numbers for a table, using overlays
2600 (@command{org-table-toggle-coordinate-overlays}).  These are updated each
2601 time the table is aligned; you can force it with @kbd{C-c C-c}.
2602 @kindex C-c @{
2603 @findex org-table-toggle-formula-debugger
2604 @item C-c @{
2605 Toggle the formula debugger on and off
2606 (@command{org-table-toggle-formula-debugger}).  See below.
2607 @orgcmd{C-c ',org-table-edit-formulas}
2608 Edit all formulas for the current table in a special buffer, where the
2609 formulas will be displayed one per line.  If the current field has an
2610 active formula, the cursor in the formula editor will mark it.
2611 While inside the special buffer, Org will automatically highlight
2612 any field or range reference at the cursor position.  You may edit,
2613 remove and add formulas, and use the following commands:
2614 @table @kbd
2615 @orgcmdkkc{C-c C-c,C-x C-s,org-table-fedit-finish}
2616 Exit the formula editor and store the modified formulas.  With @kbd{C-u}
2617 prefix, also apply the new formulas to the entire table.
2618 @orgcmd{C-c C-q,org-table-fedit-abort}
2619 Exit the formula editor without installing changes.
2620 @orgcmd{C-c C-r,org-table-fedit-toggle-ref-type}
2621 Toggle all references in the formula editor between standard (like
2622 @code{B3}) and internal (like @code{@@3$2}).
2623 @orgcmd{@key{TAB},org-table-fedit-lisp-indent}
2624 Pretty-print or indent Lisp formula at point.  When in a line containing
2625 a Lisp formula, format the formula according to Emacs Lisp rules.
2626 Another @key{TAB} collapses the formula back again.  In the open
2627 formula, @key{TAB} re-indents just like in Emacs Lisp mode.
2628 @orgcmd{M-@key{TAB},lisp-complete-symbol}
2629 Complete Lisp symbols, just like in Emacs Lisp mode.
2630 @kindex S-@key{up}
2631 @kindex S-@key{down}
2632 @kindex S-@key{left}
2633 @kindex S-@key{right}
2634 @findex org-table-fedit-ref-up
2635 @findex org-table-fedit-ref-down
2636 @findex org-table-fedit-ref-left
2637 @findex org-table-fedit-ref-right
2638 @item S-@key{up}/@key{down}/@key{left}/@key{right}
2639 Shift the reference at point.  For example, if the reference is
2640 @code{B3} and you press @kbd{S-@key{right}}, it will become @code{C3}.
2641 This also works for relative references and for hline references.
2642 @orgcmdkkcc{M-S-@key{up},M-S-@key{down},org-table-fedit-line-up,org-table-fedit-line-down}
2643 Move the test line for column formulas in the Org buffer up and
2644 down.
2645 @orgcmdkkcc{M-@key{up},M-@key{down},org-table-fedit-scroll-down,org-table-fedit-scroll-up}
2646 Scroll the window displaying the table.
2647 @kindex C-c @}
2648 @findex org-table-toggle-coordinate-overlays
2649 @item C-c @}
2650 Turn the coordinate grid in the table on and off.
2651 @end table
2652 @end table
2654 Making a table field blank does not remove the formula associated with
2655 the field, because that is stored in a different line (the @samp{#+TBLFM}
2656 line)---during the next recalculation the field will be filled again.
2657 To remove a formula from a field, you have to give an empty reply when
2658 prompted for the formula, or to edit the @samp{#+TBLFM} line.
2660 @kindex C-c C-c
2661 You may edit the @samp{#+TBLFM} directly and re-apply the changed
2662 equations with @kbd{C-c C-c} in that line or with the normal
2663 recalculation commands in the table.
2665 @subsubheading Debugging formulas
2666 @cindex formula debugging
2667 @cindex debugging, of table formulas
2668 When the evaluation of a formula leads to an error, the field content
2669 becomes the string @samp{#ERROR}.  If you would like see what is going
2670 on during variable substitution and calculation in order to find a bug,
2671 turn on formula debugging in the @code{Tbl} menu and repeat the
2672 calculation, for example by pressing @kbd{C-u C-u C-c = @key{RET}} in a
2673 field.  Detailed information will be displayed.
2675 @node Updating the table, Advanced features, Editing and debugging formulas, The spreadsheet
2676 @subsection Updating the table
2677 @cindex recomputing table fields
2678 @cindex updating, table
2680 Recalculation of a table is normally not automatic, but needs to be
2681 triggered by a command.  See @ref{Advanced features}, for a way to make
2682 recalculation at least semi-automatic.
2684 In order to recalculate a line of a table or the entire table, use the
2685 following commands:
2687 @table @kbd
2688 @orgcmd{C-c *,org-table-recalculate}
2689 Recalculate the current row by first applying the stored column formulas
2690 from left to right, and all field formulas in the current row.
2692 @kindex C-u C-c *
2693 @item C-u C-c *
2694 @kindex C-u C-c C-c
2695 @itemx C-u C-c C-c
2696 Recompute the entire table, line by line.  Any lines before the first
2697 hline are left alone, assuming that these are part of the table header.
2699 @orgcmdkkc{C-u C-u C-c *,C-u C-u C-c C-c,org-table-iterate}
2700 Iterate the table by recomputing it until no further changes occur.
2701 This may be necessary if some computed fields use the value of other
2702 fields that are computed @i{later} in the calculation sequence.
2703 @item M-x org-table-recalculate-buffer-tables
2704 @findex org-table-recalculate-buffer-tables
2705 Recompute all tables in the current buffer.
2706 @item M-x org-table-iterate-buffer-tables
2707 @findex org-table-iterate-buffer-tables
2708 Iterate all tables in the current buffer, in order to converge table-to-table
2709 dependencies.
2710 @end table
2712 @node Advanced features,  , Updating the table, The spreadsheet
2713 @subsection Advanced features
2715 If you want the recalculation of fields to happen automatically, or if
2716 you want to be able to assign @i{names} to fields and columns, you need
2717 to reserve the first column of the table for special marking characters.
2718 @table @kbd
2719 @orgcmd{C-#,org-table-rotate-recalc-marks}
2720 Rotate the calculation mark in first column through the states @samp{ },
2721 @samp{#}, @samp{*}, @samp{!}, @samp{$}.  When there is an active region,
2722 change all marks in the region.
2723 @end table
2725 Here is an example of a table that collects exam results of students and
2726 makes use of these features:
2728 @example
2729 @group
2730 |---+---------+--------+--------+--------+-------+------|
2731 |   | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
2732 |---+---------+--------+--------+--------+-------+------|
2733 | ! |         |     P1 |     P2 |     P3 |   Tot |      |
2734 | # | Maximum |     10 |     15 |     25 |    50 | 10.0 |
2735 | ^ |         |     m1 |     m2 |     m3 |    mt |      |
2736 |---+---------+--------+--------+--------+-------+------|
2737 | # | Peter   |     10 |      8 |     23 |    41 |  8.2 |
2738 | # | Sam     |      2 |      4 |      3 |     9 |  1.8 |
2739 |---+---------+--------+--------+--------+-------+------|
2740 |   | Average |        |        |        |  29.7 |      |
2741 | ^ |         |        |        |        |    at |      |
2742 | $ | max=50  |        |        |        |       |      |
2743 |---+---------+--------+--------+--------+-------+------|
2744 #+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(@@-II..@@-I);%.1f
2745 @end group
2746 @end example
2748 @noindent @b{Important}: please note that for these special tables,
2749 recalculating the table with @kbd{C-u C-c *} will only affect rows that
2750 are marked @samp{#} or @samp{*}, and fields that have a formula assigned
2751 to the field itself.  The column formulas are not applied in rows with
2752 empty first field.
2754 @cindex marking characters, tables
2755 The marking characters have the following meaning:
2756 @table @samp
2757 @item !
2758 The fields in this line define names for the columns, so that you may
2759 refer to a column as @samp{$Tot} instead of @samp{$6}.
2760 @item ^
2761 This row defines names for the fields @emph{above} the row.  With such
2762 a definition, any formula in the table may use @samp{$m1} to refer to
2763 the value @samp{10}.  Also, if you assign a formula to a names field, it
2764 will be stored as @samp{$name=...}.
2765 @item _
2766 Similar to @samp{^}, but defines names for the fields in the row
2767 @emph{below}.
2768 @item $
2769 Fields in this row can define @emph{parameters} for formulas.  For
2770 example, if a field in a @samp{$} row contains @samp{max=50}, then
2771 formulas in this table can refer to the value 50 using @samp{$max}.
2772 Parameters work exactly like constants, only that they can be defined on
2773 a per-table basis.
2774 @item #
2775 Fields in this row are automatically recalculated when pressing
2776 @key{TAB} or @key{RET} or @kbd{S-@key{TAB}} in this row.  Also, this row
2777 is selected for a global recalculation with @kbd{C-u C-c *}.  Unmarked
2778 lines will be left alone by this command.
2779 @item *
2780 Selects this line for global recalculation with @kbd{C-u C-c *}, but
2781 not for automatic recalculation.  Use this when automatic
2782 recalculation slows down editing too much.
2783 @item
2784 Unmarked lines are exempt from recalculation with @kbd{C-u C-c *}.
2785 All lines that should be recalculated should be marked with @samp{#}
2786 or @samp{*}.
2787 @item /
2788 Do not export this line.  Useful for lines that contain the narrowing
2789 @samp{<N>} markers or column group markers.
2790 @end table
2792 Finally, just to whet your appetite for what can be done with the
2793 fantastic @file{calc.el} package, here is a table that computes the Taylor
2794 series of degree @code{n} at location @code{x} for a couple of
2795 functions.
2797 @example
2798 @group
2799 |---+-------------+---+-----+--------------------------------------|
2800 |   | Func        | n | x   | Result                               |
2801 |---+-------------+---+-----+--------------------------------------|
2802 | # | exp(x)      | 1 | x   | 1 + x                                |
2803 | # | exp(x)      | 2 | x   | 1 + x + x^2 / 2                      |
2804 | # | exp(x)      | 3 | x   | 1 + x + x^2 / 2 + x^3 / 6            |
2805 | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
2806 | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2    |
2807 | * | tan(x)      | 3 | x   | 0.0175 x + 1.77e-6 x^3               |
2808 |---+-------------+---+-----+--------------------------------------|
2809 #+TBLFM: $5=taylor($2,$4,$3);n3
2810 @end group
2811 @end example
2813 @node Org-Plot,  , The spreadsheet, Tables
2814 @section Org-Plot
2815 @cindex graph, in tables
2816 @cindex plot tables using Gnuplot
2817 @cindex #+PLOT
2819 Org-Plot can produce 2D and 3D graphs of information stored in org tables
2820 using @file{Gnuplot} @uref{http://www.gnuplot.info/} and @file{gnuplot-mode}
2821 @uref{http://cars9.uchicago.edu/~ravel/software/gnuplot-mode.html}.  To see
2822 this in action, ensure that you have both Gnuplot and Gnuplot mode installed
2823 on your system, then call @code{org-plot/gnuplot} on the following table.
2825 @example
2826 @group
2827 #+PLOT: title:"Citas" ind:1 deps:(3) type:2d with:histograms set:"yrange [0:]"
2828 | Sede      | Max cites | H-index |
2829 |-----------+-----------+---------|
2830 | Chile     |    257.72 |   21.39 |
2831 | Leeds     |    165.77 |   19.68 |
2832 | Sao Paolo |     71.00 |   11.50 |
2833 | Stockholm |    134.19 |   14.33 |
2834 | Morelia   |    257.56 |   17.67 |
2835 @end group
2836 @end example
2838 Notice that Org Plot is smart enough to apply the table's headers as labels.
2839 Further control over the labels, type, content, and appearance of plots can
2840 be exercised through the @code{#+PLOT:} lines preceding a table.  See below
2841 for a complete list of Org-plot options.  For more information and examples
2842 see the Org-plot tutorial at
2843 @uref{http://orgmode.org/worg/org-tutorials/org-plot.php}.
2845 @subsubheading Plot Options
2847 @table @code
2848 @item set
2849 Specify any @command{gnuplot} option to be set when graphing.
2851 @item title
2852 Specify the title of the plot.
2854 @item ind
2855 Specify which column of the table to use as the @code{x} axis.
2857 @item deps
2858 Specify the columns to graph as a Lisp style list, surrounded by parentheses
2859 and separated by spaces for example @code{dep:(3 4)} to graph the third and
2860 fourth columns (defaults to graphing all other columns aside from the @code{ind}
2861 column).
2863 @item type
2864 Specify whether the plot will be @code{2d}, @code{3d}, or @code{grid}.
2866 @item with
2867 Specify a @code{with} option to be inserted for every col being plotted
2868 (e.g. @code{lines}, @code{points}, @code{boxes}, @code{impulses}, etc...).
2869 Defaults to @code{lines}.
2871 @item file
2872 If you want to plot to a file, specify @code{"@var{path/to/desired/output-file}"}.
2874 @item labels
2875 List of labels to be used for the deps (defaults to the column headers if
2876 they exist).
2878 @item line
2879 Specify an entire line to be inserted in the Gnuplot script.
2881 @item map
2882 When plotting @code{3d} or @code{grid} types, set this to @code{t} to graph a
2883 flat mapping rather than a @code{3d} slope.
2885 @item timefmt
2886 Specify format of Org-mode timestamps as they will be parsed by Gnuplot.
2887 Defaults to @samp{%Y-%m-%d-%H:%M:%S}.
2889 @item script
2890 If you want total control, you can specify a script file (place the file name
2891 between double-quotes) which will be used to plot.  Before plotting, every
2892 instance of @code{$datafile} in the specified script will be replaced with
2893 the path to the generated data file.  Note: even if you set this option, you
2894 may still want to specify the plot type, as that can impact the content of
2895 the data file.
2896 @end table
2898 @node Hyperlinks, TODO Items, Tables, Top
2899 @chapter Hyperlinks
2900 @cindex hyperlinks
2902 Like HTML, Org provides links inside a file, external links to
2903 other files, Usenet articles, emails, and much more.
2905 @menu
2906 * Link format::                 How links in Org are formatted
2907 * Internal links::              Links to other places in the current file
2908 * External links::              URL-like links to the world
2909 * Handling links::              Creating, inserting and following
2910 * Using links outside Org::     Linking from my C source code?
2911 * Link abbreviations::          Shortcuts for writing complex links
2912 * Search options::              Linking to a specific location
2913 * Custom searches::             When the default search is not enough
2914 @end menu
2916 @node Link format, Internal links, Hyperlinks, Hyperlinks
2917 @section Link format
2918 @cindex link format
2919 @cindex format, of links
2921 Org will recognize plain URL-like links and activate them as
2922 clickable links.  The general link format, however, looks like this:
2924 @example
2925 [[link][description]]       @r{or alternatively}           [[link]]
2926 @end example
2928 @noindent
2929 Once a link in the buffer is complete (all brackets present), Org
2930 will change the display so that @samp{description} is displayed instead
2931 of @samp{[[link][description]]} and @samp{link} is displayed instead of
2932 @samp{[[link]]}.  Links will be highlighted in the face @code{org-link},
2933 which by default is an underlined face.  You can directly edit the
2934 visible part of a link.  Note that this can be either the @samp{link}
2935 part (if there is no description) or the @samp{description} part.  To
2936 edit also the invisible @samp{link} part, use @kbd{C-c C-l} with the
2937 cursor on the link.
2939 If you place the cursor at the beginning or just behind the end of the
2940 displayed text and press @key{BACKSPACE}, you will remove the
2941 (invisible) bracket at that location.  This makes the link incomplete
2942 and the internals are again displayed as plain text.  Inserting the
2943 missing bracket hides the link internals again.  To show the
2944 internal structure of all links, use the menu entry
2945 @code{Org->Hyperlinks->Literal links}.
2947 @node Internal links, External links, Link format, Hyperlinks
2948 @section Internal links
2949 @cindex internal links
2950 @cindex links, internal
2951 @cindex targets, for links
2953 @cindex property, CUSTOM_ID
2954 If the link does not look like a URL, it is considered to be internal in the
2955 current file.  The most important case is a link like
2956 @samp{[[#my-custom-id]]} which will link to the entry with the
2957 @code{CUSTOM_ID} property @samp{my-custom-id}.  Such custom IDs are very good
2958 for HTML export (@pxref{HTML export}) where they produce pretty section
2959 links.  You are responsible yourself to make sure these custom IDs are unique
2960 in a file.
2962 Links such as @samp{[[My Target]]} or @samp{[[My Target][Find my target]]}
2963 lead to a text search in the current file.
2965 The link can be followed with @kbd{C-c C-o} when the cursor is on the link,
2966 or with a mouse click (@pxref{Handling links}).  Links to custom IDs will
2967 point to the corresponding headline.  The preferred match for a text link is
2968 a @i{dedicated target}: the same string in double angular brackets.  Targets
2969 may be located anywhere; sometimes it is convenient to put them into a
2970 comment line. For example
2972 @example
2973 # <<My Target>>
2974 @end example
2976 @noindent In HTML export (@pxref{HTML export}), such targets will become
2977 named anchors for direct access through @samp{http} links@footnote{Note that
2978 text before the first headline is usually not exported, so the first such
2979 target should be after the first headline, or in the line directly before the
2980 first headline.}.
2982 If no dedicated target exists, Org will search for a headline that is exactly
2983 the link text but may also include a TODO keyword and tags@footnote{To insert
2984 a link targeting a headline, in-buffer completion can be used.  Just type a
2985 star followed by a few optional letters into the buffer and press
2986 @kbd{M-@key{TAB}}.  All headlines in the current buffer will be offered as
2987 completions.}.  In non-Org files, the search will look for the words in the
2988 link text, in the above example the search would be for @samp{my target}.
2990 Following a link pushes a mark onto Org's own mark ring.  You can
2991 return to the previous position with @kbd{C-c &}.  Using this command
2992 several times in direct succession goes back to positions recorded
2993 earlier.
2995 @menu
2996 * Radio targets::               Make targets trigger links in plain text
2997 @end menu
2999 @node Radio targets,  , Internal links, Internal links
3000 @subsection Radio targets
3001 @cindex radio targets
3002 @cindex targets, radio
3003 @cindex links, radio targets
3005 Org can automatically turn any occurrences of certain target names
3006 in normal text into a link.  So without explicitly creating a link, the
3007 text connects to the target radioing its position.  Radio targets are
3008 enclosed by triple angular brackets.  For example, a target @samp{<<<My
3009 Target>>>} causes each occurrence of @samp{my target} in normal text to
3010 become activated as a link.  The Org file is scanned automatically
3011 for radio targets only when the file is first loaded into Emacs.  To
3012 update the target list during editing, press @kbd{C-c C-c} with the
3013 cursor on or at a target.
3015 @node External links, Handling links, Internal links, Hyperlinks
3016 @section External links
3017 @cindex links, external
3018 @cindex external links
3019 @cindex links, external
3020 @cindex Gnus links
3021 @cindex BBDB links
3022 @cindex IRC links
3023 @cindex URL links
3024 @cindex file links
3025 @cindex VM links
3026 @cindex RMAIL links
3027 @cindex WANDERLUST links
3028 @cindex MH-E links
3029 @cindex USENET links
3030 @cindex SHELL links
3031 @cindex Info links
3032 @cindex Elisp links
3034 Org supports links to files, websites, Usenet and email messages,
3035 BBDB database entries and links to both IRC conversations and their
3036 logs.  External links are URL-like locators.  They start with a short
3037 identifying string followed by a colon.  There can be no space after
3038 the colon.  The following list shows examples for each link type.
3040 @example
3041 http://www.astro.uva.nl/~dominik          @r{on the web}
3042 doi:10.1000/182                           @r{DOI for an electronic resource}
3043 file:/home/dominik/images/jupiter.jpg     @r{file, absolute path}
3044 /home/dominik/images/jupiter.jpg          @r{same as above}
3045 file:papers/last.pdf                      @r{file, relative path}
3046 ./papers/last.pdf                         @r{same as above}
3047 file:/myself@@some.where:papers/last.pdf   @r{file, path on remote machine}
3048 /myself@@some.where:papers/last.pdf        @r{same as above}
3049 file:sometextfile::NNN                    @r{file with line number to jump to}
3050 file:projects.org                         @r{another Org file}
3051 file:projects.org::some words             @r{text search in Org file}
3052 file:projects.org::*task title            @r{heading search in Org file}
3053 docview:papers/last.pdf::NNN              @r{open file in doc-view mode at page NNN}
3054 id:B7423F4D-2E8A-471B-8810-C40F074717E9   @r{Link to heading by ID}
3055 news:comp.emacs                           @r{Usenet link}
3056 mailto:adent@@galaxy.net                   @r{Mail link}
3057 vm:folder                                 @r{VM folder link}
3058 vm:folder#id                              @r{VM message link}
3059 vm://myself@@some.where.org/folder#id      @r{VM on remote machine}
3060 wl:folder                                 @r{WANDERLUST folder link}
3061 wl:folder#id                              @r{WANDERLUST message link}
3062 mhe:folder                                @r{MH-E folder link}
3063 mhe:folder#id                             @r{MH-E message link}
3064 rmail:folder                              @r{RMAIL folder link}
3065 rmail:folder#id                           @r{RMAIL message link}
3066 gnus:group                                @r{Gnus group link}
3067 gnus:group#id                             @r{Gnus article link}
3068 bbdb:R.*Stallman                          @r{BBDB link (with regexp)}
3069 irc:/irc.com/#emacs/bob                   @r{IRC link}
3070 info:org:External%20links                 @r{Info node link (with encoded space)}
3071 shell:ls *.org                            @r{A shell command}
3072 elisp:org-agenda                          @r{Interactive Elisp command}
3073 elisp:(find-file-other-frame "Elisp.org") @r{Elisp form to evaluate}
3074 @end example
3076 A link should be enclosed in double brackets and may contain a
3077 descriptive text to be displayed instead of the URL (@pxref{Link
3078 format}), for example:
3080 @example
3081 [[http://www.gnu.org/software/emacs/][GNU Emacs]]
3082 @end example
3084 @noindent
3085 If the description is a file name or URL that points to an image, HTML
3086 export (@pxref{HTML export}) will inline the image as a clickable
3087 button.  If there is no description at all and the link points to an
3088 image,
3089 that image will be inlined into the exported HTML file.
3091 @cindex square brackets, around links
3092 @cindex plain text external links
3093 Org also finds external links in the normal text and activates them
3094 as links.  If spaces must be part of the link (for example in
3095 @samp{bbdb:Richard Stallman}), or if you need to remove ambiguities
3096 about the end of the link, enclose them in square brackets.
3098 @node Handling links, Using links outside Org, External links, Hyperlinks
3099 @section Handling links
3100 @cindex links, handling
3102 Org provides methods to create a link in the correct syntax, to
3103 insert it into an Org file, and to follow the link.
3105 @table @kbd
3106 @kindex C-c l
3107 @cindex storing links
3108 @item C-c l
3109 Store a link to the current location.  This is a @emph{global} command (you
3110 must create the key binding yourself) which can be used in any buffer to
3111 create a link.  The link will be stored for later insertion into an Org
3112 buffer (see below).  What kind of link will be created depends on the current
3113 buffer:
3115 @b{Org-mode buffers}@*
3116 For Org files, if there is a @samp{<<target>>} at the cursor, the link points
3117 to the target.  Otherwise it points to the current headline, which will also
3118 be the description.
3120 @vindex org-link-to-org-use-id
3121 @cindex property, CUSTOM_ID
3122 @cindex property, ID
3123 If the headline has a @code{CUSTOM_ID} property, a link to this custom ID
3124 will be stored.  In addition or alternatively (depending on the value of
3125 @code{org-link-to-org-use-id}), a globally unique @code{ID} property will be
3126 created and/or used to construct a link.  So using this command in Org
3127 buffers will potentially create two links: a human-readable from the custom
3128 ID, and one that is globally unique and works even if the entry is moved from
3129 file to file.  Later, when inserting the link, you need to decide which one
3130 to use.
3132 @b{Email/News clients: VM, Rmail, Wanderlust, MH-E, Gnus}@*
3133 Pretty much all Emacs mail clients are supported.  The link will point to the
3134 current article, or, in some GNUS buffers, to the group.  The description is
3135 constructed from the author and the subject.
3137 @b{Web browsers: W3 and W3M}@*
3138 Here the link will be the current URL, with the page title as description.
3140 @b{Contacts: BBDB}@*
3141 Links created in a BBDB buffer will point to the current entry.
3143 @b{Chat: IRC}@*
3144 @vindex org-irc-link-to-logs
3145 For IRC links, if you set the variable @code{org-irc-link-to-logs} to
3146 @code{t}, a @samp{file:/} style link to the relevant point in the logs for
3147 the current conversation is created.  Otherwise an @samp{irc:/} style link to
3148 the user/channel/server under the point will be stored.
3150 @b{Other files}@*
3151 For any other files, the link will point to the file, with a search string
3152 (@pxref{Search options}) pointing to the contents of the current line.  If
3153 there is an active region, the selected words will form the basis of the
3154 search string.  If the automatically created link is not working correctly or
3155 accurately enough, you can write custom functions to select the search string
3156 and to do the search for particular file types---see @ref{Custom searches}.
3157 The key binding @kbd{C-c l} is only a suggestion---see @ref{Installation}.
3159 @b{Agenda view}@*
3160 When the cursor is in an agenda view, the created link points to the
3161 entry referenced by the current line.
3164 @kindex C-c C-l
3165 @cindex link completion
3166 @cindex completion, of links
3167 @cindex inserting links
3168 @item C-c C-l
3169 @vindex org-keep-stored-link-after-insertion
3170 Insert a link@footnote{ Note that you don't have to use this command to
3171 insert a link.  Links in Org are plain text, and you can type or paste them
3172 straight into the buffer.  By using this command, the links are automatically
3173 enclosed in double brackets, and you will be asked for the optional
3174 descriptive text.}.  This prompts for a link to be inserted into the buffer.
3175 You can just type a link, using text for an internal link, or one of the link
3176 type prefixes mentioned in the examples above.  The link will be inserted
3177 into the buffer@footnote{After insertion of a stored link, the link will be
3178 removed from the list of stored links.  To keep it in the list later use, use
3179 a triple @kbd{C-u} prefix argument to @kbd{C-c C-l}, or configure the option
3180 @code{org-keep-stored-link-after-insertion}.}, along with a descriptive text.
3181 If some text was selected when this command is called, the selected text
3182 becomes the default description.
3184 @b{Inserting stored links}@*
3185 All links stored during the
3186 current session are part of the history for this prompt, so you can access
3187 them with @key{up} and @key{down} (or @kbd{M-p/n}).
3189 @b{Completion support}@* Completion with @key{TAB} will help you to insert
3190 valid link prefixes like @samp{http:} or @samp{ftp:}, including the prefixes
3191 defined through link abbreviations (@pxref{Link abbreviations}).  If you
3192 press @key{RET} after inserting only the @var{prefix}, Org will offer
3193 specific completion support for some link types@footnote{This works by
3194 calling a special function @code{org-PREFIX-complete-link}.}  For
3195 example, if you type @kbd{file @key{RET}}, file name completion (alternative
3196 access: @kbd{C-u C-c C-l}, see below) will be offered, and after @kbd{bbdb
3197 @key{RET}} you can complete contact names.
3198 @kindex C-u C-c C-l
3199 @cindex file name completion
3200 @cindex completion, of file names
3201 @item C-u C-c C-l
3202 When @kbd{C-c C-l} is called with a @kbd{C-u} prefix argument, a link to
3203 a file will be inserted and you may use file name completion to select
3204 the name of the file.  The path to the file is inserted relative to the
3205 directory of the current Org file, if the linked file is in the current
3206 directory or in a sub-directory of it, or if the path is written relative
3207 to the current directory using @samp{../}.  Otherwise an absolute path
3208 is used, if possible with @samp{~/} for your home directory.  You can
3209 force an absolute path with two @kbd{C-u} prefixes.
3211 @item C-c C-l @ @r{(with cursor on existing link)}
3212 When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the
3213 link and description parts of the link.
3215 @cindex following links
3216 @kindex C-c C-o
3217 @kindex @key{RET}
3218 @item C-c C-o @ @r{(or, if @code{org-return-follows-link} is set, also} @key{RET}
3219 @vindex org-file-apps
3220 Open link at point.  This will launch a web browser for URLs (using
3221 @command{browse-url-at-point}), run VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for
3222 the corresponding links, and execute the command in a shell link.  When the
3223 cursor is on an internal link, this command runs the corresponding search.
3224 When the cursor is on a TAG list in a headline, it creates the corresponding
3225 TAGS view.  If the cursor is on a timestamp, it compiles the agenda for that
3226 date.  Furthermore, it will visit text and remote files in @samp{file:} links
3227 with Emacs and select a suitable application for local non-text files.
3228 Classification of files is based on file extension only.  See option
3229 @code{org-file-apps}.  If you want to override the default application and
3230 visit the file with Emacs, use a @kbd{C-u} prefix.  If you want to avoid
3231 opening in Emacs, use a @kbd{C-u C-u} prefix.@*
3232 If the cursor is on a headline, but not on a link, offer all links in the
3233 headline and entry text.
3235 @kindex mouse-2
3236 @kindex mouse-1
3237 @item mouse-2
3238 @itemx mouse-1
3239 On links, @kbd{mouse-2} will open the link just as @kbd{C-c C-o}
3240 would.  Under Emacs 22, @kbd{mouse-1} will also follow a link.
3242 @kindex mouse-3
3243 @item mouse-3
3244 @vindex org-display-internal-link-with-indirect-buffer
3245 Like @kbd{mouse-2}, but force file links to be opened with Emacs, and
3246 internal links to be displayed in another window@footnote{See the
3247 variable @code{org-display-internal-link-with-indirect-buffer}}.
3249 @cindex inlining images
3250 @cindex images, inlining
3251 @kindex C-c C-x C-v
3252 @vindex org-startup-with-inline-images
3253 @cindex @code{inlineimages}, STARTUP keyword
3254 @cindex @code{noinlineimages}, STARTUP keyword
3255 @item C-c C-x C-v
3256 Toggle the inline display of linked images.  Normally this will only inline
3257 images that have no description part in the link, i.e. images that will also
3258 be inlined during export.  When called with a prefix argument, also display
3259 images that do have a link description.  You can ask for inline images to be
3260 displayed at startup by configuring the variable
3261 @code{org-startup-with-inline-images}@footnote{with corresponding
3262 @code{#+STARTUP} keywords @code{inlineimages} and @code{inlineimages}}.
3263 @cindex mark ring
3264 @kindex C-c %
3265 @item C-c %
3266 Push the current position onto the mark ring, to be able to return
3267 easily. Commands following an internal link do this automatically.
3269 @cindex links, returning to
3270 @kindex C-c &
3271 @item C-c &
3272 Jump back to a recorded position.  A position is recorded by the
3273 commands following internal links, and by @kbd{C-c %}.  Using this
3274 command several times in direct succession moves through a ring of
3275 previously recorded positions.
3277 @kindex C-c C-x C-n
3278 @kindex C-c C-x C-p
3279 @cindex links, finding next/previous
3280 @item C-c C-x C-n
3281 @itemx C-c C-x C-p
3282 Move forward/backward to the next link in the buffer.  At the limit of
3283 the buffer, the search fails once, and then wraps around.  The key
3284 bindings for this are really too long, you might want to bind this also
3285 to @kbd{C-n} and @kbd{C-p}
3286 @lisp
3287 (add-hook 'org-load-hook
3288   (lambda ()
3289     (define-key 'org-mode-map "\C-n" 'org-next-link)
3290     (define-key 'org-mode-map "\C-p" 'org-previous-link)))
3291 @end lisp
3292 @end table
3294 @node Using links outside Org, Link abbreviations, Handling links, Hyperlinks
3295 @section Using links outside Org
3297 You can insert and follow links that have Org syntax not only in
3298 Org, but in any Emacs buffer.  For this, you should create two
3299 global commands, like this (please select suitable global keys
3300 yourself):
3302 @lisp
3303 (global-set-key "\C-c L" 'org-insert-link-global)
3304 (global-set-key "\C-c o" 'org-open-at-point-global)
3305 @end lisp
3307 @node Link abbreviations, Search options, Using links outside Org, Hyperlinks
3308 @section Link abbreviations
3309 @cindex link abbreviations
3310 @cindex abbreviation, links
3312 Long URLs can be cumbersome to type, and often many similar links are
3313 needed in a document.  For this you can use link abbreviations.  An
3314 abbreviated link looks like this
3316 @example
3317 [[linkword:tag][description]]
3318 @end example
3320 @noindent
3321 @vindex org-link-abbrev-alist
3322 where the tag is optional.
3323 The @i{linkword} must be a word, starting with a letter, followed by
3324 letters, numbers, @samp{-}, and @samp{_}.  Abbreviations are resolved
3325 according to the information in the variable @code{org-link-abbrev-alist}
3326 that relates the linkwords to replacement text.  Here is an example:
3328 @smalllisp
3329 @group
3330 (setq org-link-abbrev-alist
3331   '(("bugzilla" . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
3332     ("google"   . "http://www.google.com/search?q=")
3333     ("gmap"     . "http://maps.google.com/maps?q=%s")
3334     ("omap"     . "http://nominatim.openstreetmap.org/search?q=%s&polygon=1")
3335     ("ads"      . "http://adsabs.harvard.edu/cgi-bin/nph-abs_connect?author=%s&db_key=AST")))
3336 @end group
3337 @end smalllisp
3339 If the replacement text contains the string @samp{%s}, it will be
3340 replaced with the tag.  Otherwise the tag will be appended to the string
3341 in order to create the link.  You may also specify a function that will
3342 be called with the tag as the only argument to create the link.
3344 With the above setting, you could link to a specific bug with
3345 @code{[[bugzilla:129]]}, search the web for @samp{OrgMode} with
3346 @code{[[google:OrgMode]]}, show the map location of the Free Software
3347 Foundation @code{[[gmap:51 Franklin Street, Boston]]} or of Carsten office
3348 @code{[[omap:Science Park 904, Amsterdam, The Netherlands]]} and find out
3349 what the Org author is doing besides Emacs hacking with
3350 @code{[[ads:Dominik,C]]}.
3352 If you need special abbreviations just for a single Org buffer, you
3353 can define them in the file with
3355 @cindex #+LINK
3356 @example
3357 #+LINK: bugzilla  http://10.1.2.9/bugzilla/show_bug.cgi?id=
3358 #+LINK: google    http://www.google.com/search?q=%s
3359 @end example
3361 @noindent
3362 In-buffer completion (@pxref{Completion}) can be used after @samp{[} to
3363 complete link abbreviations.  You may also define a function
3364 @code{org-PREFIX-complete-link} that implements special (e.g. completion)
3365 support for inserting such a link with @kbd{C-c C-l}.  Such a function should
3366 not accept any arguments, and return the full link with prefix.
3368 @node Search options, Custom searches, Link abbreviations, Hyperlinks
3369 @section Search options in file links
3370 @cindex search option in file links
3371 @cindex file links, searching
3373 File links can contain additional information to make Emacs jump to a
3374 particular location in the file when following a link.  This can be a
3375 line number or a search option after a double@footnote{For backward
3376 compatibility, line numbers can also follow a single colon.} colon. For
3377 example, when the command @kbd{C-c l} creates a link (@pxref{Handling
3378 links}) to a file, it encodes the words in the current line as a search
3379 string that can be used to find this line back later when following the
3380 link with @kbd{C-c C-o}.
3382 Here is the syntax of the different ways to attach a search to a file
3383 link, together with an explanation:
3385 @example
3386 [[file:~/code/main.c::255]]
3387 [[file:~/xx.org::My Target]]
3388 [[file:~/xx.org::*My Target]]
3389 [[file:~/xx.org::#my-custom-id]]
3390 [[file:~/xx.org::/regexp/]]
3391 @end example
3393 @table @code
3394 @item 255
3395 Jump to line 255.
3396 @item My Target
3397 Search for a link target @samp{<<My Target>>}, or do a text search for
3398 @samp{my target}, similar to the search in internal links, see
3399 @ref{Internal links}.  In HTML export (@pxref{HTML export}), such a file
3400 link will become an HTML reference to the corresponding named anchor in
3401 the linked file.
3402 @item *My Target
3403 In an Org file, restrict search to headlines.
3404 @item #my-custom-id
3405 Link to a heading with a @code{CUSTOM_ID} property
3406 @item /regexp/
3407 Do a regular expression search for @code{regexp}.  This uses the Emacs
3408 command @code{occur} to list all matches in a separate window.  If the
3409 target file is in Org-mode, @code{org-occur} is used to create a
3410 sparse tree with the matches.
3411 @c If the target file is a directory,
3412 @c @code{grep} will be used to search all files in the directory.
3413 @end table
3415 As a degenerate case, a file link with an empty file name can be used
3416 to search the current file.  For example, @code{[[file:::find me]]} does
3417 a search for @samp{find me} in the current file, just as
3418 @samp{[[find me]]} would.
3420 @node Custom searches,  , Search options, Hyperlinks
3421 @section Custom Searches
3422 @cindex custom search strings
3423 @cindex search strings, custom
3425 The default mechanism for creating search strings and for doing the
3426 actual search related to a file link may not work correctly in all
3427 cases.  For example, Bib@TeX{} database files have many entries like
3428 @samp{year="1993"} which would not result in good search strings,
3429 because the only unique identification for a Bib@TeX{} entry is the
3430 citation key.
3432 @vindex org-create-file-search-functions
3433 @vindex org-execute-file-search-functions
3434 If you come across such a problem, you can write custom functions to set
3435 the right search string for a particular file type, and to do the search
3436 for the string in the file.  Using @code{add-hook}, these functions need
3437 to be added to the hook variables
3438 @code{org-create-file-search-functions} and
3439 @code{org-execute-file-search-functions}.  See the docstring for these
3440 variables for more information.  Org actually uses this mechanism
3441 for Bib@TeX{} database files, and you can use the corresponding code as
3442 an implementation example.  See the file @file{org-bibtex.el}.
3444 @node TODO Items, Tags, Hyperlinks, Top
3445 @chapter TODO items
3446 @cindex TODO items
3448 Org-mode does not maintain TODO lists as separate documents@footnote{Of
3449 course, you can make a document that contains only long lists of TODO items,
3450 but this is not required.}.  Instead, TODO items are an integral part of the
3451 notes file, because TODO items usually come up while taking notes!  With Org
3452 mode, simply mark any entry in a tree as being a TODO item.  In this way,
3453 information is not duplicated, and the entire context from which the TODO
3454 item emerged is always present.
3456 Of course, this technique for managing TODO items scatters them
3457 throughout your notes file.  Org-mode compensates for this by providing
3458 methods to give you an overview of all the things that you have to do.
3460 @menu
3461 * TODO basics::                 Marking and displaying TODO entries
3462 * TODO extensions::             Workflow and assignments
3463 * Progress logging::            Dates and notes for progress
3464 * Priorities::                  Some things are more important than others
3465 * Breaking down tasks::         Splitting a task into manageable pieces
3466 * Checkboxes::                  Tick-off lists
3467 @end menu
3469 @node TODO basics, TODO extensions, TODO Items, TODO Items
3470 @section Basic TODO functionality
3472 Any headline becomes a TODO item when it starts with the word
3473 @samp{TODO}, for example:
3475 @example
3476 *** TODO Write letter to Sam Fortune
3477 @end example
3479 @noindent
3480 The most important commands to work with TODO entries are:
3482 @table @kbd
3483 @kindex C-c C-t
3484 @cindex cycling, of TODO states
3485 @item C-c C-t
3486 Rotate the TODO state of the current item among
3488 @example
3489 ,-> (unmarked) -> TODO -> DONE --.
3490 '--------------------------------'
3491 @end example
3493 The same rotation can also be done ``remotely'' from the timeline and
3494 agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
3496 @kindex C-u C-c C-t
3497 @item C-u C-c C-t
3498 Select a specific keyword using completion or (if it has been set up)
3499 the fast selection interface.  For the latter, you need to assign keys
3500 to TODO states, see @ref{Per-file keywords}, and @ref{Setting tags}, for
3501 more information.
3503 @kindex S-@key{right}
3504 @kindex S-@key{left}
3505 @vindex org-treat-S-cursor-todo-selection-as-state-change
3506 @item S-@key{right}
3507 @itemx S-@key{left}
3508 Select the following/preceding TODO state, similar to cycling.  Useful
3509 mostly if more than two TODO states are possible (@pxref{TODO
3510 extensions}).  See also @ref{Conflicts}, for a discussion of the interaction
3511 with @code{shift-selection-mode}.  See also the variable
3512 @code{org-treat-S-cursor-todo-selection-as-state-change}.
3513 @kindex C-c / t
3514 @cindex sparse tree, for TODO
3515 @itemx C-c / t
3516 @vindex org-todo-keywords
3517 View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}).  Folds the
3518 entire buffer, but shows all TODO items (with not-DONE state) and the
3519 headings hierarchy above them.  With a prefix argument (or by using @kbd{C-c
3520 / T}), search for a specific TODO.  You will be prompted for the keyword, and
3521 you can also give a list of keywords like @code{KWD1|KWD2|...} to list
3522 entries that match any one of these keywords.  With numeric prefix argument
3523 N, show the tree for the Nth keyword in the variable
3524 @code{org-todo-keywords}.  With two prefix arguments, find all TODO states,
3525 both un-done and done.
3526 @kindex C-c a t
3527 @item C-c a t
3528 Show the global TODO list.  Collects the TODO items (with not-DONE states)
3529 from all agenda files (@pxref{Agenda Views}) into a single buffer.  The new
3530 buffer will be in @code{agenda-mode}, which provides commands to examine and
3531 manipulate the TODO entries from the new buffer (@pxref{Agenda commands}).
3532 @xref{Global TODO list}, for more information.
3533 @kindex S-M-@key{RET}
3534 @item S-M-@key{RET}
3535 Insert a new TODO entry below the current one.
3536 @end table
3538 @noindent
3539 @vindex org-todo-state-tags-triggers
3540 Changing a TODO state can also trigger tag changes.  See the docstring of the
3541 option @code{org-todo-state-tags-triggers} for details.
3543 @node TODO extensions, Progress logging, TODO basics, TODO Items
3544 @section Extended use of TODO keywords
3545 @cindex extended TODO keywords
3547 @vindex org-todo-keywords
3548 By default, marked TODO entries have one of only two states: TODO and
3549 DONE.  Org-mode allows you to classify TODO items in more complex ways
3550 with @emph{TODO keywords} (stored in @code{org-todo-keywords}).  With
3551 special setup, the TODO keyword system can work differently in different
3552 files.
3554 Note that @i{tags} are another way to classify headlines in general and
3555 TODO items in particular (@pxref{Tags}).
3557 @menu
3558 * Workflow states::             From TODO to DONE in steps
3559 * TODO types::                  I do this, Fred does the rest
3560 * Multiple sets in one file::   Mixing it all, and still finding your way
3561 * Fast access to TODO states::  Single letter selection of a state
3562 * Per-file keywords::           Different files, different requirements
3563 * Faces for TODO keywords::     Highlighting states
3564 * TODO dependencies::           When one task needs to wait for others
3565 @end menu
3567 @node Workflow states, TODO types, TODO extensions, TODO extensions
3568 @subsection TODO keywords as workflow states
3569 @cindex TODO workflow
3570 @cindex workflow states as TODO keywords
3572 You can use TODO keywords to indicate different @emph{sequential} states
3573 in the process of working on an item, for example@footnote{Changing
3574 this variable only becomes effective after restarting Org-mode in a
3575 buffer.}:
3577 @lisp
3578 (setq org-todo-keywords
3579   '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
3580 @end lisp
3582 The vertical bar separates the TODO keywords (states that @emph{need
3583 action}) from the DONE states (which need @emph{no further action}).  If
3584 you don't provide the separator bar, the last state is used as the DONE
3585 state.
3586 @cindex completion, of TODO keywords
3587 With this setup, the command @kbd{C-c C-t} will cycle an entry from TODO
3588 to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED.  You may
3589 also use a numeric prefix argument to quickly select a specific state.  For
3590 example @kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
3591 Or you can use @kbd{S-@key{left}} to go backward through the sequence.  If you
3592 define many keywords, you can use in-buffer completion
3593 (@pxref{Completion}) or even a special one-key selection scheme
3594 (@pxref{Fast access to TODO states}) to insert these words into the
3595 buffer.  Changing a TODO state can be logged with a timestamp, see
3596 @ref{Tracking TODO state changes}, for more information.
3598 @node TODO types, Multiple sets in one file, Workflow states, TODO extensions
3599 @subsection TODO keywords as types
3600 @cindex TODO types
3601 @cindex names as TODO keywords
3602 @cindex types as TODO keywords
3604 The second possibility is to use TODO keywords to indicate different
3605 @emph{types} of action items.  For example, you might want to indicate
3606 that items are for ``work'' or ``home''.  Or, when you work with several
3607 people on a single project, you might want to assign action items
3608 directly to persons, by using their names as TODO keywords.  This would
3609 be set up like this:
3611 @lisp
3612 (setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
3613 @end lisp
3615 In this case, different keywords do not indicate a sequence, but rather
3616 different types.  So the normal work flow would be to assign a task to a
3617 person, and later to mark it DONE.  Org-mode supports this style by adapting
3618 the workings of the command @kbd{C-c C-t}@footnote{This is also true for the
3619 @kbd{t} command in the timeline and agenda buffers.}.  When used several
3620 times in succession, it will still cycle through all names, in order to first
3621 select the right type for a task.  But when you return to the item after some
3622 time and execute @kbd{C-c C-t} again, it will switch from any name directly
3623 to DONE.  Use prefix arguments or completion to quickly select a specific
3624 name.  You can also review the items of a specific TODO type in a sparse tree
3625 by using a numeric prefix to @kbd{C-c / t}.  For example, to see all things
3626 Lucy has to do, you would use @kbd{C-3 C-c / t}.  To collect Lucy's items
3627 from all agenda files into a single buffer, you would use the numeric prefix
3628 argument as well when creating the global TODO list: @kbd{C-3 C-c a t}.
3630 @node Multiple sets in one file, Fast access to TODO states, TODO types, TODO extensions
3631 @subsection Multiple keyword sets in one file
3632 @cindex TODO keyword sets
3634 Sometimes you may want to use different sets of TODO keywords in
3635 parallel.  For example, you may want to have the basic
3636 @code{TODO}/@code{DONE}, but also a workflow for bug fixing, and a
3637 separate state indicating that an item has been canceled (so it is not
3638 DONE, but also does not require action).  Your setup would then look
3639 like this:
3641 @lisp
3642 (setq org-todo-keywords
3643       '((sequence "TODO" "|" "DONE")
3644         (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
3645         (sequence "|" "CANCELED")))
3646 @end lisp
3648 The keywords should all be different, this helps Org-mode to keep track
3649 of which subsequence should be used for a given entry.  In this setup,
3650 @kbd{C-c C-t} only operates within a subsequence, so it switches from
3651 @code{DONE} to (nothing) to @code{TODO}, and from @code{FIXED} to
3652 (nothing) to @code{REPORT}.  Therefore you need a mechanism to initially
3653 select the correct sequence.  Besides the obvious ways like typing a
3654 keyword or using completion, you may also apply the following commands:
3656 @table @kbd
3657 @kindex C-S-@key{right}
3658 @kindex C-S-@key{left}
3659 @kindex C-u C-u C-c C-t
3660 @item C-u C-u C-c C-t
3661 @itemx C-S-@key{right}
3662 @itemx C-S-@key{left}
3663 These keys jump from one TODO subset to the next.  In the above example,
3664 @kbd{C-u C-u C-c C-t} or @kbd{C-S-@key{right}} would jump from @code{TODO} or
3665 @code{DONE} to @code{REPORT}, and any of the words in the second row to
3666 @code{CANCELED}.  Note that the @kbd{C-S-} key binding conflict with
3667 @code{shift-selection-mode} (@pxref{Conflicts}).
3668 @kindex S-@key{right}
3669 @kindex S-@key{left}
3670 @item S-@key{right}
3671 @itemx S-@key{left}
3672 @kbd{S-@key{<left>}} and @kbd{S-@key{<right>}} and walk through @emph{all}
3673 keywords from all sets, so for example @kbd{S-@key{<right>}} would switch
3674 from @code{DONE} to @code{REPORT} in the example above.  See also
3675 @ref{Conflicts}, for a discussion of the interaction with
3676 @code{shift-selection-mode}.
3677 @end table
3679 @node Fast access to TODO states, Per-file keywords, Multiple sets in one file, TODO extensions
3680 @subsection Fast access to TODO states
3682 If you would like to quickly change an entry to an arbitrary TODO state
3683 instead of cycling through the states, you can set up keys for
3684 single-letter access to the states.  This is done by adding the section
3685 key after each keyword, in parentheses.  For example:
3687 @lisp
3688 (setq org-todo-keywords
3689       '((sequence "TODO(t)" "|" "DONE(d)")
3690         (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
3691         (sequence "|" "CANCELED(c)")))
3692 @end lisp
3694 @vindex org-fast-tag-selection-include-todo
3695 If you then press @code{C-c C-t} followed by the selection key, the entry
3696 will be switched to this state.  @key{SPC} can be used to remove any TODO
3697 keyword from an entry.@footnote{Check also the variable
3698 @code{org-fast-tag-selection-include-todo}, it allows you to change the TODO
3699 state through the tags interface (@pxref{Setting tags}), in case you like to
3700 mingle the two concepts.  Note that this means you need to come up with
3701 unique keys across both sets of keywords.}
3703 @node Per-file keywords, Faces for TODO keywords, Fast access to TODO states, TODO extensions
3704 @subsection Setting up keywords for individual files
3705 @cindex keyword options
3706 @cindex per-file keywords
3707 @cindex #+TODO
3708 @cindex #+TYP_TODO
3709 @cindex #+SEQ_TODO
3711 It can be very useful to use different aspects of the TODO mechanism in
3712 different files.  For file-local settings, you need to add special lines
3713 to the file which set the keywords and interpretation for that file
3714 only.  For example, to set one of the two examples discussed above, you
3715 need one of the following lines, starting in column zero anywhere in the
3716 file:
3718 @example
3719 #+TODO: TODO FEEDBACK VERIFY | DONE CANCELED
3720 @end example
3721 @noindent (you may also write @code{#+SEQ_TODO} to be explicit about the
3722 interpretation, but it means the same as @code{#+TODO}), or
3723 @example
3724 #+TYP_TODO: Fred Sara Lucy Mike | DONE
3725 @end example
3727 A setup for using several sets in parallel would be:
3729 @example
3730 #+TODO: TODO | DONE
3731 #+TODO: REPORT BUG KNOWNCAUSE | FIXED
3732 #+TODO: | CANCELED
3733 @end example
3735 @cindex completion, of option keywords
3736 @kindex M-@key{TAB}
3737 @noindent To make sure you are using the correct keyword, type
3738 @samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
3740 @cindex DONE, final TODO keyword
3741 Remember that the keywords after the vertical bar (or the last keyword
3742 if no bar is there) must always mean that the item is DONE (although you
3743 may use a different word).  After changing one of these lines, use
3744 @kbd{C-c C-c} with the cursor still in the line to make the changes
3745 known to Org-mode@footnote{Org-mode parses these lines only when
3746 Org-mode is activated after visiting a file.  @kbd{C-c C-c} with the
3747 cursor in a line starting with @samp{#+} is simply restarting Org-mode
3748 for the current buffer.}.
3750 @node Faces for TODO keywords, TODO dependencies, Per-file keywords, TODO extensions
3751 @subsection Faces for TODO keywords
3752 @cindex faces, for TODO keywords
3754 @vindex org-todo @r{(face)}
3755 @vindex org-done @r{(face)}
3756 @vindex org-todo-keyword-faces
3757 Org-mode highlights TODO keywords with special faces: @code{org-todo}
3758 for keywords indicating that an item still has to be acted upon, and
3759 @code{org-done} for keywords indicating that an item is finished.  If
3760 you are using more than 2 different states, you might want to use
3761 special faces for some of them.  This can be done using the variable
3762 @code{org-todo-keyword-faces}.  For example:
3764 @lisp
3765 @group
3766 (setq org-todo-keyword-faces
3767       '(("TODO" . org-warning) ("STARTED" . "yellow")
3768         ("CANCELED" . (:foreground "blue" :weight bold))))
3769 @end group
3770 @end lisp
3772 While using a list with face properties as shown for CANCELED @emph{should}
3773 work, this does not aways seem to be the case.  If necessary, define a
3774 special face and use that.  A string is interpreted as a color.  The variable
3775 @code{org-faces-easy-properties} determines if that color is interpreted as a
3776 foreground or a background color.
3778 @node TODO dependencies,  , Faces for TODO keywords, TODO extensions
3779 @subsection TODO dependencies
3780 @cindex TODO dependencies
3781 @cindex dependencies, of TODO states
3783 @vindex org-enforce-todo-dependencies
3784 @cindex property, ORDERED
3785 The structure of Org files (hierarchy and lists) makes it easy to define TODO
3786 dependencies.  Usually, a parent TODO task should not be marked DONE until
3787 all subtasks (defined as children tasks) are marked as DONE.  And sometimes
3788 there is a logical sequence to a number of (sub)tasks, so that one task
3789 cannot be acted upon before all siblings above it are done.  If you customize
3790 the variable @code{org-enforce-todo-dependencies}, Org will block entries
3791 from changing state to DONE while they have children that are not DONE.
3792 Furthermore, if an entry has a property @code{ORDERED}, each of its children
3793 will be blocked until all earlier siblings are marked DONE.  Here is an
3794 example:
3796 @example
3797 * TODO Blocked until (two) is done
3798 ** DONE one
3799 ** TODO two
3801 * Parent
3802   :PROPERTIES:
3803     :ORDERED: t
3804   :END:
3805 ** TODO a
3806 ** TODO b, needs to wait for (a)
3807 ** TODO c, needs to wait for (a) and (b)
3808 @end example
3810 @table @kbd
3811 @kindex C-c C-x o
3812 @item C-c C-x o
3813 @vindex org-track-ordered-property-with-tag
3814 @cindex property, ORDERED
3815 Toggle the @code{ORDERED} property of the current entry.  A property is used
3816 for this behavior because this should be local to the current entry, not
3817 inherited like a tag.  However, if you would like to @i{track} the value of
3818 this property with a tag for better visibility, customize the variable
3819 @code{org-track-ordered-property-with-tag}.
3820 @kindex C-u C-u C-u C-c C-t
3821 @item C-u C-u C-u C-c C-t
3822 Change TODO state, circumventing any state blocking.
3823 @end table
3825 @vindex org-agenda-dim-blocked-tasks
3826 If you set the variable @code{org-agenda-dim-blocked-tasks}, TODO entries
3827 that cannot be closed because of such dependencies will be shown in a dimmed
3828 font or even made invisible in agenda views (@pxref{Agenda Views}).
3830 @cindex checkboxes and TODO dependencies
3831 @vindex org-enforce-todo-dependencies
3832 You can also block changes of TODO states by looking at checkboxes
3833 (@pxref{Checkboxes}).  If you set the variable
3834 @code{org-enforce-todo-checkbox-dependencies}, an entry that has unchecked
3835 checkboxes will be blocked from switching to DONE.
3837 If you need more complex dependency structures, for example dependencies
3838 between entries in different trees or files, check out the contributed
3839 module @file{org-depend.el}.
3841 @page
3842 @node Progress logging, Priorities, TODO extensions, TODO Items
3843 @section Progress logging
3844 @cindex progress logging
3845 @cindex logging, of progress
3847 Org-mode can automatically record a timestamp and possibly a note when
3848 you mark a TODO item as DONE, or even each time you change the state of
3849 a TODO item.  This system is highly configurable, settings can be on a
3850 per-keyword basis and can be localized to a file or even a subtree.  For
3851 information on how to clock working time for a task, see @ref{Clocking
3852 work time}.
3854 @menu
3855 * Closing items::               When was this entry marked DONE?
3856 * Tracking TODO state changes::  When did the status change?
3857 * Tracking your habits::        How consistent have you been?
3858 @end menu
3860 @node Closing items, Tracking TODO state changes, Progress logging, Progress logging
3861 @subsection Closing items
3863 The most basic logging is to keep track of @emph{when} a certain TODO
3864 item was finished.  This is achieved with@footnote{The corresponding
3865 in-buffer setting is: @code{#+STARTUP: logdone}}.
3867 @lisp
3868 (setq org-log-done 'time)
3869 @end lisp
3871 @noindent
3872 Then each time you turn an entry from a TODO (not-done) state into any
3873 of the DONE states, a line @samp{CLOSED: [timestamp]} will be inserted
3874 just after the headline.  If you turn the entry back into a TODO item
3875 through further state cycling, that line will be removed again.  If you
3876 want to record a note along with the timestamp, use@footnote{The
3877 corresponding in-buffer setting is: @code{#+STARTUP: lognotedone}}
3879 @lisp
3880 (setq org-log-done 'note)
3881 @end lisp
3883 @noindent
3884 You will then be prompted for a note, and that note will be stored below
3885 the entry with a @samp{Closing Note} heading.
3887 In the timeline (@pxref{Timeline}) and in the agenda
3888 (@pxref{Weekly/daily agenda}), you can then use the @kbd{l} key to
3889 display the TODO items with a @samp{CLOSED} timestamp on each day,
3890 giving you an overview of what has been done.
3892 @node Tracking TODO state changes, Tracking your habits, Closing items, Progress logging
3893 @subsection Tracking TODO state changes
3894 @cindex drawer, for state change recording
3896 @vindex org-log-states-order-reversed
3897 @vindex org-log-into-drawer
3898 @cindex property, LOG_INTO_DRAWER
3899 When TODO keywords are used as workflow states (@pxref{Workflow states}), you
3900 might want to keep track of when a state change occurred and maybe take a
3901 note about this change.  You can either record just a timestamp, or a
3902 time-stamped note for a change.  These records will be inserted after the
3903 headline as an itemized list, newest first@footnote{See the variable
3904 @code{org-log-states-order-reversed}}.  When taking a lot of notes, you might
3905 want to get the notes out of the way into a drawer (@pxref{Drawers}).
3906 Customize the variable @code{org-log-into-drawer} to get this
3907 behavior---the recommended drawer for this is called @code{LOGBOOK}.  You can
3908 also overrule the setting of this variable for a subtree by setting a
3909 @code{LOG_INTO_DRAWER} property.
3911 Since it is normally too much to record a note for every state, Org-mode
3912 expects configuration on a per-keyword basis for this.  This is achieved by
3913 adding special markers @samp{!} (for a timestamp) and @samp{@@} (for a note)
3914 in parentheses after each keyword.  For example, with the setting
3916 @lisp
3917 (setq org-todo-keywords
3918   '((sequence "TODO(t)" "WAIT(w@@/!)" "|" "DONE(d!)" "CANCELED(c@@)")))
3919 @end lisp
3921 @noindent
3922 @vindex org-log-done
3923 you not only define global TODO keywords and fast access keys, but also
3924 request that a time is recorded when the entry is set to
3925 DONE@footnote{It is possible that Org-mode will record two timestamps
3926 when you are using both @code{org-log-done} and state change logging.
3927 However, it will never prompt for two notes---if you have configured
3928 both, the state change recording note will take precedence and cancel
3929 the @samp{Closing Note}.}, and that a note is recorded when switching to
3930 WAIT or CANCELED.  The setting for WAIT is even more special: the
3931 @samp{!} after the slash means that in addition to the note taken when
3932 entering the state, a timestamp should be recorded when @i{leaving} the
3933 WAIT state, if and only if the @i{target} state does not configure
3934 logging for entering it.  So it has no effect when switching from WAIT
3935 to DONE, because DONE is configured to record a timestamp only.  But
3936 when switching from WAIT back to TODO, the @samp{/!} in the WAIT
3937 setting now triggers a timestamp even though TODO has no logging
3938 configured.
3940 You can use the exact same syntax for setting logging preferences local
3941 to a buffer:
3942 @example
3943 #+TODO: TODO(t) WAIT(w@@/!) | DONE(d!) CANCELED(c@@)
3944 @end example
3946 @cindex property, LOGGING
3947 In order to define logging settings that are local to a subtree or a
3948 single item, define a LOGGING property in this entry.  Any non-empty
3949 LOGGING property resets all logging settings to nil.  You may then turn
3950 on logging for this specific tree using STARTUP keywords like
3951 @code{lognotedone} or @code{logrepeat}, as well as adding state specific
3952 settings like @code{TODO(!)}.  For example
3954 @example
3955 * TODO Log each state with only a time
3956   :PROPERTIES:
3957   :LOGGING: TODO(!) WAIT(!) DONE(!) CANCELED(!)
3958   :END:
3959 * TODO Only log when switching to WAIT, and when repeating
3960   :PROPERTIES:
3961   :LOGGING: WAIT(@@) logrepeat
3962   :END:
3963 * TODO No logging at all
3964   :PROPERTIES:
3965   :LOGGING: nil
3966   :END:
3967 @end example
3969 @node Tracking your habits,  , Tracking TODO state changes, Progress logging
3970 @subsection Tracking your habits
3971 @cindex habits
3973 Org has the ability to track the consistency of a special category of TODOs,
3974 called ``habits''.  A habit has the following properties:
3976 @enumerate
3977 @item
3978 You have enabled the @code{habits} module by customizing the variable
3979 @code{org-modules}.
3980 @item
3981 The habit is a TODO, with a TODO keyword representing an open state.
3982 @item
3983 The property @code{STYLE} is set to the value @code{habit}.
3984 @item
3985 The TODO has a scheduled date, usually with a @code{.+} style repeat
3986 interval.  A @code{++} style may be appropriate for habits with time
3987 constraints, e.g., must be done on weekends, or a @code{+} style for an
3988 unusual habit that can have a backlog, e.g., weekly reports.
3989 @item
3990 The TODO may also have minimum and maximum ranges specified by using the
3991 syntax @samp{.+2d/3d}, which says that you want to do the task at least every
3992 three days, but at most every two days.
3993 @item
3994 You must also have state logging for the @code{DONE} state enabled, in order
3995 for historical data to be represented in the consistency graph.  If it's not
3996 enabled it's not an error, but the consistency graphs will be largely
3997 meaningless.
3998 @end enumerate
4000 To give you an idea of what the above rules look like in action, here's an
4001 actual habit with some history:
4003 @example
4004 ** TODO Shave
4005    SCHEDULED: <2009-10-17 Sat .+2d/4d>
4006    - State "DONE"       from "TODO"       [2009-10-15 Thu]
4007    - State "DONE"       from "TODO"       [2009-10-12 Mon]
4008    - State "DONE"       from "TODO"       [2009-10-10 Sat]
4009    - State "DONE"       from "TODO"       [2009-10-04 Sun]
4010    - State "DONE"       from "TODO"       [2009-10-02 Fri]
4011    - State "DONE"       from "TODO"       [2009-09-29 Tue]
4012    - State "DONE"       from "TODO"       [2009-09-25 Fri]
4013    - State "DONE"       from "TODO"       [2009-09-19 Sat]
4014    - State "DONE"       from "TODO"       [2009-09-16 Wed]
4015    - State "DONE"       from "TODO"       [2009-09-12 Sat]
4016    :PROPERTIES:
4017    :STYLE:    habit
4018    :LAST_REPEAT: [2009-10-19 Mon 00:36]
4019    :END:
4020 @end example
4022 What this habit says is: I want to shave at most every 2 days (given by the
4023 @code{SCHEDULED} date and repeat interval) and at least every 4 days.  If
4024 today is the 15th, then the habit first appears in the agenda on Oct 17,
4025 after the minimum of 2 days has elapsed, and will appear overdue on Oct 19,
4026 after four days have elapsed.
4028 What's really useful about habits is that they are displayed along with a
4029 consistency graph, to show how consistent you've been at getting that task
4030 done in the past.  This graph shows every day that the task was done over the
4031 past three weeks, with colors for each day.  The colors used are:
4033 @table @code
4034 @item Blue
4035 If the task wasn't to be done yet on that day.
4036 @item Green
4037 If the task could have been done on that day.
4038 @item Yellow
4039 If the task was going to be overdue the next day.
4040 @item Red
4041 If the task was overdue on that day.
4042 @end table
4044 In addition to coloring each day, the day is also marked with an asterisk if
4045 the task was actually done that day, and an exclamation mark to show where
4046 the current day falls in the graph.
4048 There are several configuration variables that can be used to change the way
4049 habits are displayed in the agenda.
4051 @table @code
4052 @item org-habit-graph-column
4053 The buffer column at which the consistency graph should be drawn.  This will
4054 overwrite any text in that column, so it's a good idea to keep your habits'
4055 titles brief and to the point.
4056 @item org-habit-preceding-days
4057 The amount of history, in days before today, to appear in consistency graphs.
4058 @item org-habit-following-days
4059 The number of days after today that will appear in consistency graphs.
4060 @item org-habit-show-habits-only-for-today
4061 If non-nil, only show habits in today's agenda view.  This is set to true by
4062 default.
4063 @end table
4065 Lastly, pressing @kbd{K} in the agenda buffer will cause habits to
4066 temporarily be disabled and they won't appear at all.  Press @kbd{K} again to
4067 bring them back.  They are also subject to tag filtering, if you have habits
4068 which should only be done in certain contexts, for example.
4070 @node Priorities, Breaking down tasks, Progress logging, TODO Items
4071 @section Priorities
4072 @cindex priorities
4074 If you use Org-mode extensively, you may end up with enough TODO items that
4075 it starts to make sense to prioritize them.  Prioritizing can be done by
4076 placing a @emph{priority cookie} into the headline of a TODO item, like this
4078 @example
4079 *** TODO [#A] Write letter to Sam Fortune
4080 @end example
4082 @noindent
4083 @vindex org-priority-faces
4084 By default, Org-mode supports three priorities: @samp{A}, @samp{B}, and
4085 @samp{C}.  @samp{A} is the highest priority.  An entry without a cookie is
4086 treated just like priority @samp{B}.  Priorities make a difference only for
4087 sorting in the agenda (@pxref{Weekly/daily agenda}); outside the agenda, they
4088 have no inherent meaning to Org-mode.  The cookies can be highlighted with
4089 special faces by customizing the variable @code{org-priority-faces}.
4091 Priorities can be attached to any outline node; they do not need to be TODO
4092 items.
4094 @table @kbd
4095 @kindex @kbd{C-c ,}
4096 @item @kbd{C-c ,}
4097 Set the priority of the current headline.  The command prompts for a
4098 priority character @samp{A}, @samp{B} or @samp{C}.  When you press
4099 @key{SPC} instead, the priority cookie is removed from the headline.
4100 The priorities can also be changed ``remotely'' from the timeline and
4101 agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
4103 @kindex S-@key{up}
4104 @kindex S-@key{down}
4105 @item S-@key{up}
4106 @itemx S-@key{down}
4107 @vindex org-priority-start-cycle-with-default
4108 Increase/decrease priority of current headline@footnote{See also the option
4109 @code{org-priority-start-cycle-with-default}.}.  Note that these keys are
4110 also used to modify timestamps (@pxref{Creating timestamps}).  See also
4111 @ref{Conflicts}, for a discussion of the interaction with
4112 @code{shift-selection-mode}.
4113 @end table
4115 @vindex org-highest-priority
4116 @vindex org-lowest-priority
4117 @vindex org-default-priority
4118 You can change the range of allowed priorities by setting the variables
4119 @code{org-highest-priority}, @code{org-lowest-priority}, and
4120 @code{org-default-priority}.  For an individual buffer, you may set
4121 these values (highest, lowest, default) like this (please make sure that
4122 the highest priority is earlier in the alphabet than the lowest
4123 priority):
4125 @cindex #+PRIORITIES
4126 @example
4127 #+PRIORITIES: A C B
4128 @end example
4130 @node Breaking down tasks, Checkboxes, Priorities, TODO Items
4131 @section Breaking tasks down into subtasks
4132 @cindex tasks, breaking down
4133 @cindex statistics, for TODO items
4135 @vindex org-agenda-todo-list-sublevels
4136 It is often advisable to break down large tasks into smaller, manageable
4137 subtasks.  You can do this by creating an outline tree below a TODO item,
4138 with detailed subtasks on the tree@footnote{To keep subtasks out of the
4139 global TODO list, see the @code{org-agenda-todo-list-sublevels}.}.  To keep
4140 the overview over the fraction of subtasks that are already completed, insert
4141 either @samp{[/]} or @samp{[%]} anywhere in the headline.  These cookies will
4142 be updated each time the TODO status of a child changes, or when pressing
4143 @kbd{C-c C-c} on the cookie.  For example:
4145 @example
4146 * Organize Party [33%]
4147 ** TODO Call people [1/2]
4148 *** TODO Peter
4149 *** DONE Sarah
4150 ** TODO Buy food
4151 ** DONE Talk to neighbor
4152 @end example
4154 @cindex property, COOKIE_DATA
4155 If a heading has both checkboxes and TODO children below it, the meaning of
4156 the statistics cookie become ambiguous.  Set the property
4157 @code{COOKIE_DATA} to either @samp{checkbox} or @samp{todo} to resolve
4158 this issue.
4160 @vindex org-hierarchical-todo-statistics
4161 If you would like to have the statistics cookie count any TODO entries in the
4162 subtree (not just direct children), configure the variable
4163 @code{org-hierarchical-todo-statistics}.  To do this for a single subtree,
4164 include the word @samp{recursive} into the value of the @code{COOKIE_DATA}
4165 property.
4167 @example
4168 * Parent capturing statistics [2/20]
4169   :PROPERTIES:
4170   :COOKIE_DATA: todo recursive
4171   :END:
4172 @end example
4174 If you would like a TODO entry to automatically change to DONE
4175 when all children are done, you can use the following setup:
4177 @example
4178 (defun org-summary-todo (n-done n-not-done)
4179   "Switch entry to DONE when all subentries are done, to TODO otherwise."
4180   (let (org-log-done org-log-states)   ; turn off logging
4181     (org-todo (if (= n-not-done 0) "DONE" "TODO"))))
4183 (add-hook 'org-after-todo-statistics-hook 'org-summary-todo)
4184 @end example
4187 Another possibility is the use of checkboxes to identify (a hierarchy of) a
4188 large number of subtasks (@pxref{Checkboxes}).
4191 @node Checkboxes,  , Breaking down tasks, TODO Items
4192 @section Checkboxes
4193 @cindex checkboxes
4195 @vindex org-list-automatic-rules
4196 Every item in a plain list@footnote{With the exception of description
4197 lists. But you can allow it by modifying @code{org-list-automatic-rules}
4198 accordingly.} (@pxref{Plain lists}) can be made into a checkbox by starting
4199 it with the string @samp{[ ]}.  This feature is similar to TODO items
4200 (@pxref{TODO Items}), but is more lightweight.  Checkboxes are not included
4201 into the global TODO list, so they are often great to split a task into a
4202 number of simple steps.  Or you can use them in a shopping list.  To toggle a
4203 checkbox, use @kbd{C-c C-c}, or use the mouse (thanks to Piotr Zielinski's
4204 @file{org-mouse.el}).
4206 Here is an example of a checkbox list.
4208 @example
4209 * TODO Organize party [2/4]
4210   - [-] call people [1/3]
4211     - [ ] Peter
4212     - [X] Sarah
4213     - [ ] Sam
4214   - [X] order food
4215   - [ ] think about what music to play
4216   - [X] talk to the neighbors
4217 @end example
4219 Checkboxes work hierarchically, so if a checkbox item has children that
4220 are checkboxes, toggling one of the children checkboxes will make the
4221 parent checkbox reflect if none, some, or all of the children are
4222 checked.
4224 @cindex statistics, for checkboxes
4225 @cindex checkbox statistics
4226 @cindex property, COOKIE_DATA
4227 @vindex org-hierarchical-checkbox-statistics
4228 The @samp{[2/4]} and @samp{[1/3]} in the first and second line are cookies
4229 indicating how many checkboxes present in this entry have been checked off,
4230 and the total number of checkboxes present.  This can give you an idea on how
4231 many checkboxes remain, even without opening a folded entry.  The cookies can
4232 be placed into a headline or into (the first line of) a plain list item.
4233 Each cookie covers checkboxes of direct children structurally below the
4234 headline/item on which the cookie appears@footnote{Set the variable
4235 @code{org-hierarchical-checkbox-statistics} if you want such cookies to
4236 represent the all checkboxes below the cookie, not just the direct
4237 children.}.  You have to insert the cookie yourself by typing either
4238 @samp{[/]} or @samp{[%]}.  With @samp{[/]} you get an @samp{n out of m}
4239 result, as in the examples above.  With @samp{[%]} you get information about
4240 the percentage of checkboxes checked (in the above example, this would be
4241 @samp{[50%]} and @samp{[33%]}, respectively).  In a headline, a cookie can
4242 count either checkboxes below the heading or TODO states of children, and it
4243 will display whatever was changed last.  Set the property @code{COOKIE_DATA}
4244 to either @samp{checkbox} or @samp{todo} to resolve this issue.
4246 @cindex blocking, of checkboxes
4247 @cindex checkbox blocking
4248 @cindex property, ORDERED
4249 If the current outline node has an @code{ORDERED} property, checkboxes must
4250 be checked off in sequence, and an error will be thrown if you try to check
4251 off a box while there are unchecked boxes above it.
4253 @noindent The following commands work with checkboxes:
4255 @table @kbd
4256 @kindex C-c C-c
4257 @item C-c C-c
4258 Toggle checkbox status or (with prefix arg) checkbox presence at point.  With
4259 double prefix argument, set it to @samp{[-]}, which is considered to be an
4260 intermediate state.
4261 @kindex C-c C-x C-b
4262 @item C-c C-x C-b
4263 Toggle checkbox status or (with prefix arg) checkbox presence at point.  With
4264 double prefix argument, set it to @samp{[-]}, which is considered to be an
4265 intermediate state.
4266 @itemize @minus
4267 @item
4268 If there is an active region, toggle the first checkbox in the region
4269 and set all remaining boxes to the same status as the first.  With a prefix
4270 arg, add or remove the checkbox for all items in the region.
4271 @item
4272 If the cursor is in a headline, toggle checkboxes in the region between
4273 this headline and the next (so @emph{not} the entire subtree).
4274 @item
4275 If there is no active region, just toggle the checkbox at point.
4276 @end itemize
4277 @kindex M-S-@key{RET}
4278 @item M-S-@key{RET}
4279 Insert a new item with a checkbox.
4280 This works only if the cursor is already in a plain list item
4281 (@pxref{Plain lists}).
4282 @kindex C-c C-x o
4283 @item C-c C-x o
4284 @vindex org-track-ordered-property-with-tag
4285 @cindex property, ORDERED
4286 Toggle the @code{ORDERED} property of the entry, to toggle if checkboxes must
4287 be checked off in sequence.  A property is used for this behavior because
4288 this should be local to the current entry, not inherited like a tag.
4289 However, if you would like to @i{track} the value of this property with a tag
4290 for better visibility, customize the variable
4291 @code{org-track-ordered-property-with-tag}.
4292 @kindex C-c #
4293 @item C-c #
4294 Update the statistics cookie in the current outline entry.  When called with
4295 a @kbd{C-u} prefix, update the entire file.  Checkbox statistic cookies are
4296 updated automatically if you toggle checkboxes with @kbd{C-c C-c} and make
4297 new ones with @kbd{M-S-@key{RET}}.  TODO statistics cookies update when
4298 changing TODO states.  If you delete boxes/entries or add/change them by
4299 hand, use this command to get things back into sync.  Or simply toggle any
4300 entry twice (checkboxes with @kbd{C-c C-c}).
4301 @end table
4303 @node Tags, Properties and Columns, TODO Items, Top
4304 @chapter Tags
4305 @cindex tags
4306 @cindex headline tagging
4307 @cindex matching, tags
4308 @cindex sparse tree, tag based
4310 An excellent way to implement labels and contexts for cross-correlating
4311 information is to assign @i{tags} to headlines.  Org-mode has extensive
4312 support for tags.
4314 @vindex org-tag-faces
4315 Every headline can contain a list of tags; they occur at the end of the
4316 headline.  Tags are normal words containing letters, numbers, @samp{_}, and
4317 @samp{@@}.  Tags must be preceded and followed by a single colon, e.g.,
4318 @samp{:work:}.  Several tags can be specified, as in @samp{:work:urgent:}.
4319 Tags will by default be in bold face with the same color as the headline.
4320 You may specify special faces for specific tags using the variable
4321 @code{org-tag-faces}, in much the same way as you can for TODO keywords
4322 (@pxref{Faces for TODO keywords}).
4324 @menu
4325 * Tag inheritance::             Tags use the tree structure of the outline
4326 * Setting tags::                How to assign tags to a headline
4327 * Tag searches::                Searching for combinations of tags
4328 @end menu
4330 @node Tag inheritance, Setting tags, Tags, Tags
4331 @section Tag inheritance
4332 @cindex tag inheritance
4333 @cindex inheritance, of tags
4334 @cindex sublevels, inclusion into tags match
4336 @i{Tags} make use of the hierarchical structure of outline trees.  If a
4337 heading has a certain tag, all subheadings will inherit the tag as
4338 well.  For example, in the list
4340 @example
4341 * Meeting with the French group      :work:
4342 ** Summary by Frank                  :boss:notes:
4343 *** TODO Prepare slides for him      :action:
4344 @end example
4346 @noindent
4347 the final heading will have the tags @samp{:work:}, @samp{:boss:},
4348 @samp{:notes:}, and @samp{:action:} even though the final heading is not
4349 explicitly marked with those tags.  You can also set tags that all entries in
4350 a file should inherit just as if these tags were defined in a hypothetical
4351 level zero that surrounds the entire file.  Use a line like this@footnote{As
4352 with all these in-buffer settings, pressing @kbd{C-c C-c} activates any
4353 changes in the line.}:
4355 @cindex #+FILETAGS
4356 @example
4357 #+FILETAGS: :Peter:Boss:Secret:
4358 @end example
4360 @noindent
4361 @vindex org-use-tag-inheritance
4362 @vindex org-tags-exclude-from-inheritance
4363 To limit tag inheritance to specific tags, or to turn it off entirely, use
4364 the variables @code{org-use-tag-inheritance} and
4365 @code{org-tags-exclude-from-inheritance}.
4367 @vindex org-tags-match-list-sublevels
4368 When a headline matches during a tags search while tag inheritance is turned
4369 on, all the sublevels in the same tree will (for a simple match form) match
4370 as well@footnote{This is only true if the search does not involve more
4371 complex tests including properties (@pxref{Property searches}).}.  The list
4372 of matches may then become very long.  If you only want to see the first tags
4373 match in a subtree, configure the variable
4374 @code{org-tags-match-list-sublevels} (not recommended).
4376 @node Setting tags, Tag searches, Tag inheritance, Tags
4377 @section Setting tags
4378 @cindex setting tags
4379 @cindex tags, setting
4381 @kindex M-@key{TAB}
4382 Tags can simply be typed into the buffer at the end of a headline.
4383 After a colon, @kbd{M-@key{TAB}} offers completion on tags.  There is
4384 also a special command for inserting tags:
4386 @table @kbd
4387 @kindex C-c C-q
4388 @item C-c C-q
4389 @cindex completion, of tags
4390 @vindex org-tags-column
4391 Enter new tags for the current headline.  Org-mode will either offer
4392 completion or a special single-key interface for setting tags, see
4393 below.  After pressing @key{RET}, the tags will be inserted and aligned
4394 to @code{org-tags-column}.  When called with a @kbd{C-u} prefix, all
4395 tags in the current buffer will be aligned to that column, just to make
4396 things look nice.  TAGS are automatically realigned after promotion,
4397 demotion, and TODO state changes (@pxref{TODO basics}).
4398 @kindex C-c C-c
4399 @item C-c C-c
4400 When the cursor is in a headline, this does the same as @kbd{C-c C-q}.
4401 @end table
4403 @vindex org-tag-alist
4404 Org will support tag insertion based on a @emph{list of tags}.  By
4405 default this list is constructed dynamically, containing all tags
4406 currently used in the buffer.  You may also globally specify a hard list
4407 of tags with the variable @code{org-tag-alist}.  Finally you can set
4408 the default tags for a given file with lines like
4410 @cindex #+TAGS
4411 @example
4412 #+TAGS: @@work @@home @@tennisclub
4413 #+TAGS: laptop car pc sailboat
4414 @end example
4416 If you have globally defined your preferred set of tags using the
4417 variable @code{org-tag-alist}, but would like to use a dynamic tag list
4418 in a specific file, add an empty TAGS option line to that file:
4420 @example
4421 #+TAGS:
4422 @end example
4424 @vindex org-tag-persistent-alist
4425 If you have a preferred set of tags that you would like to use in every file,
4426 in addition to those defined on a per-file basis by TAGS option lines, then
4427 you may specify a list of tags with the variable
4428 @code{org-tag-persistent-alist}.  You may turn this off on a per-file basis
4429 by adding a STARTUP option line to that file:
4431 @example
4432 #+STARTUP: noptag
4433 @end example
4435 By default Org-mode uses the standard minibuffer completion facilities for
4436 entering tags.  However, it also implements another, quicker, tag selection
4437 method called @emph{fast tag selection}.  This allows you to select and
4438 deselect tags with just a single key press.  For this to work well you should
4439 assign unique letters to most of your commonly used tags.  You can do this
4440 globally by configuring the variable @code{org-tag-alist} in your
4441 @file{.emacs} file.  For example, you may find the need to tag many items in
4442 different files with @samp{:@@home:}.  In this case you can set something
4443 like:
4445 @lisp
4446 (setq org-tag-alist '(("@@work" . ?w) ("@@home" . ?h) ("laptop" . ?l)))
4447 @end lisp
4449 @noindent If the tag is only relevant to the file you are working on, then you
4450 can instead set the TAGS option line as:
4452 @example
4453 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t)  laptop(l)  pc(p)
4454 @end example
4456 @noindent The tags interface will show the available tags in a splash
4457 window.  If you want to start a new line after a specific tag, insert
4458 @samp{\n} into the tag list
4460 @example
4461 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t) \n laptop(l)  pc(p)
4462 @end example
4464 @noindent or write them in two lines:
4466 @example
4467 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t)
4468 #+TAGS: laptop(l)  pc(p)
4469 @end example
4471 @noindent
4472 You can also group together tags that are mutually exclusive by using
4473 braces, as in:
4475 @example
4476 #+TAGS: @{ @@work(w)  @@home(h)  @@tennisclub(t) @}  laptop(l)  pc(p)
4477 @end example
4479 @noindent you indicate that at most one of @samp{@@work}, @samp{@@home},
4480 and @samp{@@tennisclub} should be selected.  Multiple such groups are allowed.
4482 @noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
4483 these lines to activate any changes.
4485 @noindent
4486 To set these mutually exclusive groups in the variable @code{org-tags-alist},
4487 you must use the dummy tags @code{:startgroup} and @code{:endgroup} instead
4488 of the braces.  Similarly, you can use @code{:newline} to indicate a line
4489 break.  The previous example would be set globally by the following
4490 configuration:
4492 @lisp
4493 (setq org-tag-alist '((:startgroup . nil)
4494                       ("@@work" . ?w) ("@@home" . ?h)
4495                       ("@@tennisclub" . ?t)
4496                       (:endgroup . nil)
4497                       ("laptop" . ?l) ("pc" . ?p)))
4498 @end lisp
4500 If at least one tag has a selection key then pressing @kbd{C-c C-c} will
4501 automatically present you with a special interface, listing inherited tags,
4502 the tags of the current headline, and a list of all valid tags with
4503 corresponding keys@footnote{Keys will automatically be assigned to tags which
4504 have no configured keys.}.  In this interface, you can use the following
4505 keys:
4507 @table @kbd
4508 @item a-z...
4509 Pressing keys assigned to tags will add or remove them from the list of
4510 tags in the current line.  Selecting a tag in a group of mutually
4511 exclusive tags will turn off any other tags from that group.
4512 @kindex @key{TAB}
4513 @item @key{TAB}
4514 Enter a tag in the minibuffer, even if the tag is not in the predefined
4515 list.  You will be able to complete on all tags present in the buffer.
4516 @kindex @key{SPC}
4517 @item @key{SPC}
4518 Clear all tags for this line.
4519 @kindex @key{RET}
4520 @item @key{RET}
4521 Accept the modified set.
4522 @item C-g
4523 Abort without installing changes.
4524 @item q
4525 If @kbd{q} is not assigned to a tag, it aborts like @kbd{C-g}.
4526 @item !
4527 Turn off groups of mutually exclusive tags.  Use this to (as an
4528 exception) assign several tags from such a group.
4529 @item C-c
4530 Toggle auto-exit after the next change (see below).
4531 If you are using expert mode, the first @kbd{C-c} will display the
4532 selection window.
4533 @end table
4535 @noindent
4536 This method lets you assign tags to a headline with very few keys.  With
4537 the above setup, you could clear the current tags and set @samp{@@home},
4538 @samp{laptop} and @samp{pc} tags with just the following keys: @kbd{C-c
4539 C-c @key{SPC} h l p @key{RET}}.  Switching from @samp{@@home} to
4540 @samp{@@work} would be done with @kbd{C-c C-c w @key{RET}} or
4541 alternatively with @kbd{C-c C-c C-c w}.  Adding the non-predefined tag
4542 @samp{Sarah} could be done with @kbd{C-c C-c @key{TAB} S a r a h
4543 @key{RET} @key{RET}}.
4545 @vindex org-fast-tag-selection-single-key
4546 If you find that most of the time you need only a single key press to
4547 modify your list of tags, set the variable
4548 @code{org-fast-tag-selection-single-key}.  Then you no longer have to
4549 press @key{RET} to exit fast tag selection---it will immediately exit
4550 after the first change.  If you then occasionally need more keys, press
4551 @kbd{C-c} to turn off auto-exit for the current tag selection process
4552 (in effect: start selection with @kbd{C-c C-c C-c} instead of @kbd{C-c
4553 C-c}).  If you set the variable to the value @code{expert}, the special
4554 window is not even shown for single-key tag selection, it comes up only
4555 when you press an extra @kbd{C-c}.
4557 @node Tag searches,  , Setting tags, Tags
4558 @section Tag searches
4559 @cindex tag searches
4560 @cindex searching for tags
4562 Once a system of tags has been set up, it can be used to collect related
4563 information into special lists.
4565 @table @kbd
4566 @kindex C-c \
4567 @kindex C-c / m
4568 @item C-c \
4569 @itemx C-c / m
4570 Create a sparse tree with all headlines matching a tags search.  With a
4571 @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
4572 @kindex C-c a m
4573 @item C-c a m
4574 Create a global list of tag matches from all agenda files.
4575 @xref{Matching tags and properties}.
4576 @kindex C-c a M
4577 @item C-c a M
4578 @vindex org-tags-match-list-sublevels
4579 Create a global list of tag matches from all agenda files, but check
4580 only TODO items and force checking subitems (see variable
4581 @code{org-tags-match-list-sublevels}).
4582 @end table
4584 These commands all prompt for a match string which allows basic Boolean logic
4585 like @samp{+boss+urgent-project1}, to find entries with tags @samp{boss} and
4586 @samp{urgent}, but not @samp{project1}, or @samp{Kathy|Sally} to find entries
4587 which are tagged, like @samp{Kathy} or @samp{Sally}.  The full syntax of the search
4588 string is rich and allows also matching against TODO keywords, entry levels
4589 and properties.  For a complete description with many examples, see
4590 @ref{Matching tags and properties}.
4593 @node Properties and Columns, Dates and Times, Tags, Top
4594 @chapter Properties and columns
4595 @cindex properties
4597 Properties are a set of key-value pairs associated with an entry.  There
4598 are two main applications for properties in Org-mode.  First, properties
4599 are like tags, but with a value.  Second, you can use properties to
4600 implement (very basic) database capabilities in an Org buffer.  For
4601 an example of the first application, imagine maintaining a file where
4602 you document bugs and plan releases for a piece of software.  Instead of
4603 using tags like @code{:release_1:}, @code{:release_2:}, one can use a
4604 property, say @code{:Release:}, that in different subtrees has different
4605 values, such as @code{1.0} or @code{2.0}.  For an example of the second
4606 application of properties, imagine keeping track of your music CDs,
4607 where properties could be things such as the album, artist, date of
4608 release, number of tracks, and so on.
4610 Properties can be conveniently edited and viewed in column view
4611 (@pxref{Column view}).
4613 @menu
4614 * Property syntax::             How properties are spelled out
4615 * Special properties::          Access to other Org-mode features
4616 * Property searches::           Matching property values
4617 * Property inheritance::        Passing values down the tree
4618 * Column view::                 Tabular viewing and editing
4619 * Property API::                Properties for Lisp programmers
4620 @end menu
4622 @node Property syntax, Special properties, Properties and Columns, Properties and Columns
4623 @section Property syntax
4624 @cindex property syntax
4625 @cindex drawer, for properties
4627 Properties are key-value pairs.  They need to be inserted into a special
4628 drawer (@pxref{Drawers}) with the name @code{PROPERTIES}.  Each property
4629 is specified on a single line, with the key (surrounded by colons)
4630 first, and the value after it.  Here is an example:
4632 @example
4633 * CD collection
4634 ** Classic
4635 *** Goldberg Variations
4636     :PROPERTIES:
4637     :Title:     Goldberg Variations
4638     :Composer:  J.S. Bach
4639     :Artist:    Glen Gould
4640     :Publisher: Deutsche Grammophon
4641     :NDisks:    1
4642     :END:
4643 @end example
4645 You may define the allowed values for a particular property @samp{:Xyz:}
4646 by setting a property @samp{:Xyz_ALL:}.  This special property is
4647 @emph{inherited}, so if you set it in a level 1 entry, it will apply to
4648 the entire tree.  When allowed values are defined, setting the
4649 corresponding property becomes easier and is less prone to typing
4650 errors.  For the example with the CD collection, we can predefine
4651 publishers and the number of disks in a box like this:
4653 @example
4654 * CD collection
4655   :PROPERTIES:
4656   :NDisks_ALL:  1 2 3 4
4657   :Publisher_ALL: "Deutsche Grammophon" Philips EMI
4658   :END:
4659 @end example
4661 If you want to set properties that can be inherited by any entry in a
4662 file, use a line like
4663 @cindex property, _ALL
4664 @cindex #+PROPERTY
4665 @example
4666 #+PROPERTY: NDisks_ALL 1 2 3 4
4667 @end example
4669 @vindex org-global-properties
4670 Property values set with the global variable
4671 @code{org-global-properties} can be inherited by all entries in all
4672 Org files.
4674 @noindent
4675 The following commands help to work with properties:
4677 @table @kbd
4678 @kindex M-@key{TAB}
4679 @item M-@key{TAB}
4680 After an initial colon in a line, complete property keys.  All keys used
4681 in the current file will be offered as possible completions.
4682 @kindex C-c C-x p
4683 @item C-c C-x p
4684 Set a property.  This prompts for a property name and a value.  If
4685 necessary, the property drawer is created as well.
4686 @item M-x org-insert-property-drawer
4687 Insert a property drawer into the current entry.  The drawer will be
4688 inserted early in the entry, but after the lines with planning
4689 information like deadlines.
4690 @kindex C-c C-c
4691 @item C-c C-c
4692 With the cursor in a property drawer, this executes property commands.
4693 @item C-c C-c s
4694 Set a property in the current entry.  Both the property and the value
4695 can be inserted using completion.
4696 @kindex S-@key{right}
4697 @kindex S-@key{left}
4698 @item S-@key{left}/@key{right}
4699 Switch property at point to the next/previous allowed value.
4700 @item C-c C-c d
4701 Remove a property from the current entry.
4702 @item C-c C-c D
4703 Globally remove a property, from all entries in the current file.
4704 @item C-c C-c c
4705 Compute the property at point, using the operator and scope from the
4706 nearest column format definition.
4707 @end table
4709 @node Special properties, Property searches, Property syntax, Properties and Columns
4710 @section Special properties
4711 @cindex properties, special
4713 Special properties provide an alternative access method to Org-mode
4714 features, like the TODO state or the priority of an entry, discussed in the
4715 previous chapters.  This interface exists so that you can include
4716 these states in a column view (@pxref{Column view}), or to use them in
4717 queries.  The following property names are special and should not be
4718 used as keys in the properties drawer:
4720 @cindex property, special, TODO
4721 @cindex property, special, TAGS
4722 @cindex property, special, ALLTAGS
4723 @cindex property, special, CATEGORY
4724 @cindex property, special, PRIORITY
4725 @cindex property, special, DEADLINE
4726 @cindex property, special, SCHEDULED
4727 @cindex property, special, CLOSED
4728 @cindex property, special, TIMESTAMP
4729 @cindex property, special, TIMESTAMP_IA
4730 @cindex property, special, CLOCKSUM
4731 @cindex property, special, BLOCKED
4732 @c guessing that ITEM is needed in this area; also, should this list be sorted?
4733 @cindex property, special, ITEM
4734 @example
4735 TODO         @r{The TODO keyword of the entry.}
4736 TAGS         @r{The tags defined directly in the headline.}
4737 ALLTAGS      @r{All tags, including inherited ones.}
4738 CATEGORY     @r{The category of an entry.}
4739 PRIORITY     @r{The priority of the entry, a string with a single letter.}
4740 DEADLINE     @r{The deadline time string, without the angular brackets.}
4741 SCHEDULED    @r{The scheduling timestamp, without the angular brackets.}
4742 CLOSED       @r{When was this entry closed?}
4743 TIMESTAMP    @r{The first keyword-less timestamp in the entry.}
4744 TIMESTAMP_IA @r{The first inactive timestamp in the entry.}
4745 CLOCKSUM     @r{The sum of CLOCK intervals in the subtree.  @code{org-clock-sum}}
4746              @r{must be run first to compute the values.}
4747 BLOCKED      @r{"t" if task is currently blocked by children or siblings}
4748 ITEM         @r{The content of the entry.}
4749 @end example
4751 @node Property searches, Property inheritance, Special properties, Properties and Columns
4752 @section Property searches
4753 @cindex properties, searching
4754 @cindex searching, of properties
4756 To create sparse trees and special lists with selection based on properties,
4757 the same commands are used as for tag searches (@pxref{Tag searches}).
4758 @table @kbd
4759 @kindex C-c \
4760 @kindex C-c / m
4761 @item C-c \
4762 @itemx C-c / m
4763 Create a sparse tree with all matching entries.  With a
4764 @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
4765 @kindex C-c a m
4766 @item C-c a m
4767 Create a global list of tag/property  matches from all agenda files.
4768 @xref{Matching tags and properties}.
4769 @kindex C-c a M
4770 @item C-c a M
4771 @vindex org-tags-match-list-sublevels
4772 Create a global list of tag matches from all agenda files, but check
4773 only TODO items and force checking of subitems (see variable
4774 @code{org-tags-match-list-sublevels}).
4775 @end table
4777 The syntax for the search string is described in @ref{Matching tags and
4778 properties}.
4780 There is also a special command for creating sparse trees based on a
4781 single property:
4783 @table @kbd
4784 @kindex C-c / p
4785 @item C-c / p
4786 Create a sparse tree based on the value of a property.  This first
4787 prompts for the name of a property, and then for a value.  A sparse tree
4788 is created with all entries that define this property with the given
4789 value.  If you enclose the value into curly braces, it is interpreted as
4790 a regular expression and matched against the property values.
4791 @end table
4793 @node Property inheritance, Column view, Property searches, Properties and Columns
4794 @section Property Inheritance
4795 @cindex properties, inheritance
4796 @cindex inheritance, of properties
4798 @vindex org-use-property-inheritance
4799 The outline structure of Org-mode documents lends itself for an
4800 inheritance model of properties: if the parent in a tree has a certain
4801 property, the children can inherit this property.  Org-mode does not
4802 turn this on by default, because it can slow down property searches
4803 significantly and is often not needed.  However, if you find inheritance
4804 useful, you can turn it on by setting the variable
4805 @code{org-use-property-inheritance}.  It may be set to @code{t} to make
4806 all properties inherited from the parent, to a list of properties
4807 that should be inherited, or to a regular expression that matches
4808 inherited properties.  If a property has the value @samp{nil}, this is
4809 interpreted as an explicit undefine of he property, so that inheritance
4810 search will stop at this value and return @code{nil}.
4812 Org-mode has a few properties for which inheritance is hard-coded, at
4813 least for the special applications for which they are used:
4815 @cindex property, COLUMNS
4816 @table @code
4817 @item COLUMNS
4818 The @code{:COLUMNS:} property defines the format of column view
4819 (@pxref{Column view}).  It is inherited in the sense that the level
4820 where a @code{:COLUMNS:} property is defined is used as the starting
4821 point for a column view table, independently of the location in the
4822 subtree from where columns view is turned on.
4823 @item CATEGORY
4824 @cindex property, CATEGORY
4825 For agenda view, a category set through a @code{:CATEGORY:} property
4826 applies to the entire subtree.
4827 @item ARCHIVE
4828 @cindex property, ARCHIVE
4829 For archiving, the @code{:ARCHIVE:} property may define the archive
4830 location for the entire subtree (@pxref{Moving subtrees}).
4831 @item LOGGING
4832 @cindex property, LOGGING
4833 The LOGGING property may define logging settings for an entry or a
4834 subtree (@pxref{Tracking TODO state changes}).
4835 @end table
4837 @node Column view, Property API, Property inheritance, Properties and Columns
4838 @section Column view
4840 A great way to view and edit properties in an outline tree is
4841 @emph{column view}.  In column view, each outline node is turned into a
4842 table row.  Columns in this table provide access to properties of the
4843 entries.  Org-mode implements columns by overlaying a tabular structure
4844 over the headline of each item.  While the headlines have been turned
4845 into a table row, you can still change the visibility of the outline
4846 tree.  For example, you get a compact table by switching to CONTENTS
4847 view (@kbd{S-@key{TAB} S-@key{TAB}}, or simply @kbd{c} while column view
4848 is active), but you can still open, read, and edit the entry below each
4849 headline.  Or, you can switch to column view after executing a sparse
4850 tree command and in this way get a table only for the selected items.
4851 Column view also works in agenda buffers (@pxref{Agenda Views}) where
4852 queries have collected selected items, possibly from a number of files.
4854 @menu
4855 * Defining columns::            The COLUMNS format property
4856 * Using column view::           How to create and use column view
4857 * Capturing column view::       A dynamic block for column view
4858 @end menu
4860 @node Defining columns, Using column view, Column view, Column view
4861 @subsection Defining columns
4862 @cindex column view, for properties
4863 @cindex properties, column view
4865 Setting up a column view first requires defining the columns.  This is
4866 done by defining a column format line.
4868 @menu
4869 * Scope of column definitions::  Where defined, where valid?
4870 * Column attributes::           Appearance and content of a column
4871 @end menu
4873 @node Scope of column definitions, Column attributes, Defining columns, Defining columns
4874 @subsubsection Scope of column definitions
4876 To define a column format for an entire file, use a line like
4878 @cindex #+COLUMNS
4879 @example
4880 #+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
4881 @end example
4883 To specify a format that only applies to a specific tree, add a
4884 @code{:COLUMNS:} property to the top node of that tree, for example:
4886 @example
4887 ** Top node for columns view
4888    :PROPERTIES:
4889    :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
4890    :END:
4891 @end example
4893 If a @code{:COLUMNS:} property is present in an entry, it defines columns
4894 for the entry itself, and for the entire subtree below it.  Since the
4895 column definition is part of the hierarchical structure of the document,
4896 you can define columns on level 1 that are general enough for all
4897 sublevels, and more specific columns further down, when you edit a
4898 deeper part of the tree.
4900 @node Column attributes,  , Scope of column definitions, Defining columns
4901 @subsubsection Column attributes
4902 A column definition sets the attributes of a column.  The general
4903 definition looks like this:
4905 @example
4906  %[@var{width}]@var{property}[(@var{title})][@{@var{summary-type}@}]
4907 @end example
4909 @noindent
4910 Except for the percent sign and the property name, all items are
4911 optional.  The individual parts have the following meaning:
4913 @example
4914 @var{width}           @r{An integer specifying the width of the column in characters.}
4915                 @r{If omitted, the width will be determined automatically.}
4916 @var{property}        @r{The property that should be edited in this column.}
4917                 @r{Special properties representing meta data are allowed here}
4918                 @r{as well (@pxref{Special properties})}
4919 @var{title}     @r{The header text for the column. If omitted, the property}
4920                 @r{name is used.}
4921 @{@var{summary-type}@}  @r{The summary type.  If specified, the column values for}
4922                 @r{parent nodes are computed from the children.}
4923                 @r{Supported summary types are:}
4924                 @{+@}       @r{Sum numbers in this column.}
4925                 @{+;%.1f@}  @r{Like @samp{+}, but format result with @samp{%.1f}.}
4926                 @{$@}       @r{Currency, short for @samp{+;%.2f}.}
4927                 @{:@}       @r{Sum times, HH:MM, plain numbers are hours.}
4928                 @{X@}       @r{Checkbox status, @samp{[X]} if all children are @samp{[X]}.}
4929                 @{X/@}      @r{Checkbox status, @samp{[n/m]}.}
4930                 @{X%@}      @r{Checkbox status, @samp{[n%]}.}
4931                 @{min@}     @r{Smallest number in column.}
4932                 @{max@}     @r{Largest number.}
4933                 @{mean@}    @r{Arithmetic mean of numbers.}
4934                 @{:min@}    @r{Smallest time value in column.}
4935                 @{:max@}    @r{Largest time value.}
4936                 @{:mean@}   @r{Arithmetic mean of time values.}
4937                 @{@@min@}    @r{Minimum age (in days/hours/mins/seconds).}
4938                 @{@@max@}    @r{Maximum age (in days/hours/mins/seconds).}
4939                 @{@@mean@}   @r{Arithmetic mean of ages (in days/hours/mins/seconds).}
4940                 @{est+@}    @r{Add low-high estimates.}
4941 @end example
4943 @noindent
4944 Be aware that you can only have one summary type for any property you
4945 include. Subsequent columns referencing the same property will all display the
4946 same summary information.
4948 The @code{est+} summary type requires further explanation.  It is used for
4949 combining estimates, expressed as low-high ranges.  For example, instead
4950 of estimating a particular task will take 5 days, you might estimate it as
4951 5-6 days if you're fairly confident you know how much woark is required, or
4952 1-10 days if you don't really know what needs to be done.  Both ranges
4953 average at 5.5 days, but the first represents a more predictable delivery.
4955 When combining a set of such estimates, simply adding the lows and highs
4956 produces an unrealistically wide result. Instead, @code{est+} adds the
4957 statistical mean and variance of the sub-tasks, generating a final estimate
4958 from the sum.  For example, suppose you had ten tasks, each of which was
4959 estimated at 0.5 to 2 days of work.  Straight addition produces an estimate
4960 of 5 to 20 days, representing what to expect if everything goes either
4961 extremely well or extremely poorly. In contrast, @code{est+} estimates the
4962 full job more realistically, at 10-15 days.
4964 Here is an example for a complete columns definition, along with allowed
4965 values.
4967 @example
4968 :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.}
4969                    %10Time_Estimate@{:@} %CLOCKSUM
4970 :Owner_ALL:    Tammy Mark Karl Lisa Don
4971 :Status_ALL:   "In progress" "Not started yet" "Finished" ""
4972 :Approved_ALL: "[ ]" "[X]"
4973 @end example
4975 @noindent
4976 The first column, @samp{%25ITEM}, means the first 25 characters of the
4977 item itself, i.e. of the headline.  You probably always should start the
4978 column definition with the @samp{ITEM} specifier.  The other specifiers
4979 create columns @samp{Owner} with a list of names as allowed values, for
4980 @samp{Status} with four different possible values, and for a checkbox
4981 field @samp{Approved}.  When no width is given after the @samp{%}
4982 character, the column will be exactly as wide as it needs to be in order
4983 to fully display all values.  The @samp{Approved} column does have a
4984 modified title (@samp{Approved?}, with a question mark).  Summaries will
4985 be created for the @samp{Time_Estimate} column by adding time duration
4986 expressions like HH:MM, and for the @samp{Approved} column, by providing
4987 an @samp{[X]} status if all children have been checked.  The
4988 @samp{CLOCKSUM} column is special, it lists the sum of CLOCK intervals
4989 in the subtree.
4991 @node Using column view, Capturing column view, Defining columns, Column view
4992 @subsection Using column view
4994 @table @kbd
4995 @tsubheading{Turning column view on and off}
4996 @kindex C-c C-x C-c
4997 @item C-c C-x C-c
4998 @vindex org-columns-default-format
4999 Turn on column view.  If the cursor is before the first headline in the file,
5000 column view is turned on for the entire file, using the @code{#+COLUMNS}
5001 definition.  If the cursor is somewhere inside the outline, this command
5002 searches the hierarchy, up from point, for a @code{:COLUMNS:} property that
5003 defines a format.  When one is found, the column view table is established
5004 for the tree starting at the entry that contains the @code{:COLUMNS:}
5005 property.  If no such property is found, the format is taken from the
5006 @code{#+COLUMNS} line or from the variable @code{org-columns-default-format},
5007 and column view is established for the current entry and its subtree.
5008 @kindex r
5009 @item r
5010 Recreate the column view, to include recent changes made in the buffer.
5011 @kindex g
5012 @item g
5013 Same as @kbd{r}.
5014 @kindex q
5015 @item q
5016 Exit column view.
5017 @tsubheading{Editing values}
5018 @item @key{left} @key{right} @key{up} @key{down}
5019 Move through the column view from field to field.
5020 @kindex S-@key{left}
5021 @kindex S-@key{right}
5022 @item  S-@key{left}/@key{right}
5023 Switch to the next/previous allowed value of the field.  For this, you
5024 have to have specified allowed values for a property.
5025 @item 1..9,0
5026 Directly select the nth allowed value, @kbd{0} selects the 10th value.
5027 @kindex n
5028 @kindex p
5029 @itemx  n / p
5030 Same as @kbd{S-@key{left}/@key{right}}
5031 @kindex e
5032 @item e
5033 Edit the property at point.  For the special properties, this will
5034 invoke the same interface that you normally use to change that
5035 property.  For example, when editing a TAGS property, the tag completion
5036 or fast selection interface will pop up.
5037 @kindex C-c C-c
5038 @item C-c C-c
5039 When there is a checkbox at point, toggle it.
5040 @kindex v
5041 @item v
5042 View the full value of this property.  This is useful if the width of
5043 the column is smaller than that of the value.
5044 @kindex a
5045 @item a
5046 Edit the list of allowed values for this property.  If the list is found
5047 in the hierarchy, the modified values is stored there.  If no list is
5048 found, the new value is stored in the first entry that is part of the
5049 current column view.
5050 @tsubheading{Modifying the table structure}
5051 @kindex <
5052 @kindex >
5053 @item < / >
5054 Make the column narrower/wider by one character.
5055 @kindex S-M-@key{right}
5056 @item S-M-@key{right}
5057 Insert a new column, to the left of the current column.
5058 @kindex S-M-@key{left}
5059 @item S-M-@key{left}
5060 Delete the current column.
5061 @end table
5063 @node Capturing column view,  , Using column view, Column view
5064 @subsection Capturing column view
5066 Since column view is just an overlay over a buffer, it cannot be
5067 exported or printed directly.  If you want to capture a column view, use
5068 a @code{columnview} dynamic block (@pxref{Dynamic blocks}).  The frame
5069 of this block looks like this:
5071 @cindex #+BEGIN, columnview
5072 @example
5073 * The column view
5074 #+BEGIN: columnview :hlines 1 :id "label"
5076 #+END:
5077 @end example
5079 @noindent This dynamic block has the following parameters:
5081 @table @code
5082 @item :id
5083 This is the most important parameter.  Column view is a feature that is
5084 often localized to a certain (sub)tree, and the capture block might be
5085 at a different location in the file.  To identify the tree whose view to
5086 capture, you can use 4 values:
5087 @cindex property, ID
5088 @example
5089 local     @r{use the tree in which the capture block is located}
5090 global    @r{make a global view, including all headings in the file}
5091 "file:@var{path-to-file}"
5092           @r{run column view at the top of this file}
5093 "@var{ID}"      @r{call column view in the tree that has an @code{:ID:}}
5094           @r{property with the value @i{label}.  You can use}
5095           @r{@kbd{M-x org-id-copy} to create a globally unique ID for}
5096           @r{the current entry and copy it to the kill-ring.}
5097 @end example
5098 @item :hlines
5099 When @code{t}, insert an hline after every line.  When a number @var{N}, insert
5100 an hline before each headline with level @code{<= @var{N}}.
5101 @item :vlines
5102 When set to @code{t}, force column groups to get vertical lines.
5103 @item :maxlevel
5104 When set to a number, don't capture entries below this level.
5105 @item :skip-empty-rows
5106 When set to @code{t}, skip rows where the only non-empty specifier of the
5107 column view is @code{ITEM}.
5109 @end table
5111 @noindent
5112 The following commands insert or update the dynamic block:
5114 @table @kbd
5115 @kindex C-c C-x i
5116 @item C-c C-x i
5117 Insert a dynamic block capturing a column view.  You will be prompted
5118 for the scope or ID of the view.
5119 @kindex C-c C-c
5120 @item C-c C-c
5121 @kindex C-c C-x C-u
5122 @itemx C-c C-x C-u
5123 Update dynamic block at point.  The cursor needs to be in the
5124 @code{#+BEGIN} line of the dynamic block.
5125 @kindex C-u C-c C-x C-u
5126 @item C-u C-c C-x C-u
5127 Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
5128 you have several clock table blocks in a buffer.
5129 @end table
5131 You can add formulas to the column view table and you may add plotting
5132 instructions in front of the table---these will survive an update of the
5133 block.  If there is a @code{#+TBLFM:} after the table, the table will
5134 actually be recalculated automatically after an update.
5136 An alternative way to capture and process property values into a table is
5137 provided by Eric Schulte's @file{org-collector.el} which is a contributed
5138 package@footnote{Contributed packages are not part of Emacs, but are
5139 distributed with the main distribution of Org (visit
5140 @uref{http://orgmode.org}).}.  It provides a general API to collect
5141 properties from entries in a certain scope, and arbitrary Lisp expressions to
5142 process these values before inserting them into a table or a dynamic block.
5144 @node Property API,  , Column view, Properties and Columns
5145 @section The Property API
5146 @cindex properties, API
5147 @cindex API, for properties
5149 There is a full API for accessing and changing properties.  This API can
5150 be used by Emacs Lisp programs to work with properties and to implement
5151 features based on them.  For more information see @ref{Using the
5152 property API}.
5154 @node Dates and Times, Capture - Refile - Archive, Properties and Columns, Top
5155 @chapter Dates and times
5156 @cindex dates
5157 @cindex times
5158 @cindex timestamp
5159 @cindex date stamp
5161 To assist project planning, TODO items can be labeled with a date and/or
5162 a time.  The specially formatted string carrying the date and time
5163 information is called a @emph{timestamp} in Org-mode.  This may be a
5164 little confusing because timestamp is often used as indicating when
5165 something was created or last changed.  However, in Org-mode this term
5166 is used in a much wider sense.
5168 @menu
5169 * Timestamps::                  Assigning a time to a tree entry
5170 * Creating timestamps::         Commands which insert timestamps
5171 * Deadlines and scheduling::    Planning your work
5172 * Clocking work time::          Tracking how long you spend on a task
5173 * Effort estimates::            Planning work effort in advance
5174 * Relative timer::              Notes with a running timer
5175 * Countdown timer::             Starting a countdown timer for a task
5176 @end menu
5179 @node Timestamps, Creating timestamps, Dates and Times, Dates and Times
5180 @section Timestamps, deadlines, and scheduling
5181 @cindex timestamps
5182 @cindex ranges, time
5183 @cindex date stamps
5184 @cindex deadlines
5185 @cindex scheduling
5187 A timestamp is a specification of a date (possibly with a time or a range of
5188 times) in a special format, either @samp{<2003-09-16 Tue>} or
5189 @samp{<2003-09-16 Tue 09:39>} or @samp{<2003-09-16 Tue
5190 12:00-12:30>}@footnote{This is inspired by the standard ISO 8601 date/time
5191 format.  To use an alternative format, see @ref{Custom time format}.}.  A
5192 timestamp can appear anywhere in the headline or body of an Org tree entry.
5193 Its presence causes entries to be shown on specific dates in the agenda
5194 (@pxref{Weekly/daily agenda}).  We distinguish:
5196 @table @var
5197 @item Plain timestamp; Event; Appointment
5198 @cindex timestamp
5199 A simple timestamp just assigns a date/time to an item.  This is just
5200 like writing down an appointment or event in a paper agenda.  In the
5201 timeline and agenda displays, the headline of an entry associated with a
5202 plain timestamp will be shown exactly on that date.
5204 @example
5205 * Meet Peter at the movies <2006-11-01 Wed 19:15>
5206 * Discussion on climate change <2006-11-02 Thu 20:00-22:00>
5207 @end example
5209 @item Timestamp with repeater interval
5210 @cindex timestamp, with repeater interval
5211 A timestamp may contain a @emph{repeater interval}, indicating that it
5212 applies not only on the given date, but again and again after a certain
5213 interval of N days (d), weeks (w), months (m), or years (y).  The
5214 following will show up in the agenda every Wednesday:
5216 @example
5217 * Pick up Sam at school <2007-05-16 Wed 12:30 +1w>
5218 @end example
5220 @item Diary-style sexp entries
5221 For more complex date specifications, Org-mode supports using the
5222 special sexp diary entries implemented in the Emacs calendar/diary
5223 package.  For example
5225 @example
5226 * The nerd meeting on every 2nd Thursday of the month
5227   <%%(diary-float t 4 2)>
5228 @end example
5230 @item Time/Date range
5231 @cindex timerange
5232 @cindex date range
5233 Two timestamps connected by @samp{--} denote a range.  The headline
5234 will be shown on the first and last day of the range, and on any dates
5235 that are displayed and fall in the range.  Here is an example:
5237 @example
5238 ** Meeting in Amsterdam
5239    <2004-08-23 Mon>--<2004-08-26 Thu>
5240 @end example
5242 @item Inactive timestamp
5243 @cindex timestamp, inactive
5244 @cindex inactive timestamp
5245 Just like a plain timestamp, but with square brackets instead of
5246 angular ones.  These timestamps are inactive in the sense that they do
5247 @emph{not} trigger an entry to show up in the agenda.
5249 @example
5250 * Gillian comes late for the fifth time [2006-11-01 Wed]
5251 @end example
5253 @end table
5255 @node Creating timestamps, Deadlines and scheduling, Timestamps, Dates and Times
5256 @section Creating timestamps
5257 @cindex creating timestamps
5258 @cindex timestamps, creating
5260 For Org-mode to recognize timestamps, they need to be in the specific
5261 format.  All commands listed below produce timestamps in the correct
5262 format.
5264 @table @kbd
5265 @orgcmd{C-c .,org-time-stamp}
5266 Prompt for a date and insert a corresponding timestamp.  When the cursor is
5267 at an existing timestamp in the buffer, the command is used to modify this
5268 timestamp instead of inserting a new one.  When this command is used twice in
5269 succession, a time range is inserted.
5271 @orgcmd{C-c !,org-time-stamp-inactive}
5272 Like @kbd{C-c .}, but insert an inactive timestamp that will not cause
5273 an agenda entry.
5275 @kindex C-u C-c .
5276 @kindex C-u C-c !
5277 @item C-u C-c .
5278 @itemx C-u C-c !
5279 @vindex org-time-stamp-rounding-minutes
5280 Like @kbd{C-c .} and @kbd{C-c !}, but use the alternative format which
5281 contains date and time.  The default time can be rounded to multiples of 5
5282 minutes, see the option @code{org-time-stamp-rounding-minutes}.
5284 @orgcmd{C-c <,org-date-from-calendar}
5285 Insert a timestamp corresponding to the cursor date in the Calendar.
5287 @orgcmd{C-c >,org-goto-calendar}
5288 Access the Emacs calendar for the current date.  If there is a
5289 timestamp in the current line, go to the corresponding date
5290 instead.
5292 @orgcmd{C-c C-o,org-open-at-point}
5293 Access the agenda for the date given by the timestamp or -range at
5294 point (@pxref{Weekly/daily agenda}).
5296 @orgcmdkkcc{S-@key{left},S-@key{right},org-timestamp-down-day,org-timestamp-up-day}
5297 Change date at cursor by one day.  These key bindings conflict with
5298 shift-selection and related modes (@pxref{Conflicts}).
5300 @orgcmdkkcc{S-@key{up},S-@key{down},org-timestamp-up,org-timestamp-down-down}
5301 Change the item under the cursor in a timestamp.  The cursor can be on a
5302 year, month, day, hour or minute.  When the timestamp contains a time range
5303 like @samp{15:30-16:30}, modifying the first time will also shift the second,
5304 shifting the time block with constant length.  To change the length, modify
5305 the second time.  Note that if the cursor is in a headline and not at a
5306 timestamp, these same keys modify the priority of an item.
5307 (@pxref{Priorities}). The key bindings also conflict with shift-selection and
5308 related modes (@pxref{Conflicts}).
5310 @orgcmd{C-c C-y,org-evaluate-time-range}
5311 @cindex evaluate time range
5312 Evaluate a time range by computing the difference between start and end.
5313 With a prefix argument, insert result after the time range (in a table: into
5314 the following column).
5315 @end table
5318 @menu
5319 * The date/time prompt::        How Org-mode helps you entering date and time
5320 * Custom time format::          Making dates look different
5321 @end menu
5323 @node The date/time prompt, Custom time format, Creating timestamps, Creating timestamps
5324 @subsection The date/time prompt
5325 @cindex date, reading in minibuffer
5326 @cindex time, reading in minibuffer
5328 @vindex org-read-date-prefer-future
5329 When Org-mode prompts for a date/time, the default is shown in default
5330 date/time format, and the prompt therefore seems to ask for a specific
5331 format.  But it will in fact accept any string containing some date and/or
5332 time information, and it is really smart about interpreting your input.  You
5333 can, for example, use @kbd{C-y} to paste a (possibly multi-line) string
5334 copied from an email message.  Org-mode will find whatever information is in
5335 there and derive anything you have not specified from the @emph{default date
5336 and time}.  The default is usually the current date and time, but when
5337 modifying an existing timestamp, or when entering the second stamp of a
5338 range, it is taken from the stamp in the buffer.  When filling in
5339 information, Org-mode assumes that most of the time you will want to enter a
5340 date in the future: if you omit the month/year and the given day/month is
5341 @i{before} today, it will assume that you mean a future date@footnote{See the
5342 variable @code{org-read-date-prefer-future}.  You may set that variable to
5343 the symbol @code{time} to even make a time before now shift the date to
5344 tomorrow.}.  If the date has been automatically shifted into the future, the
5345 time prompt will show this with @samp{(=>F).}
5347 For example, let's assume that today is @b{June 13, 2006}.  Here is how
5348 various inputs will be interpreted, the items filled in by Org-mode are
5349 in @b{bold}.
5351 @example
5352 3-2-5         --> 2003-02-05
5353 2/5/3         --> 2003-02-05
5354 14            --> @b{2006}-@b{06}-14
5355 12            --> @b{2006}-@b{07}-12
5356 2/5           --> @b{2007}-02-05
5357 Fri           --> nearest Friday (default date or later)
5358 sep 15        --> @b{2006}-09-15
5359 feb 15        --> @b{2007}-02-15
5360 sep 12 9      --> 2009-09-12
5361 12:45         --> @b{2006}-@b{06}-@b{13} 12:45
5362 22 sept 0:34  --> @b{2006}-09-22 0:34
5363 w4            --> ISO week for of the current year @b{2006}
5364 2012 w4 fri   --> Friday of ISO week 4 in 2012
5365 2012-w04-5    --> Same as above
5366 @end example
5368 Furthermore you can specify a relative date by giving, as the
5369 @emph{first} thing in the input: a plus/minus sign, a number and a
5370 letter ([dwmy]) to indicate change in days, weeks, months, or years.  With a
5371 single plus or minus, the date is always relative to today.  With a
5372 double plus or minus, it is relative to the default date.  If instead of
5373 a single letter, you use the abbreviation of day name, the date will be
5374 the nth such day.  E.g.
5376 @example
5377 +0            --> today
5378 .             --> today
5379 +4d           --> four days from today
5380 +4            --> same as above
5381 +2w           --> two weeks from today
5382 ++5           --> five days from default date
5383 +2tue         --> second Tuesday from now.
5384 @end example
5386 @vindex parse-time-months
5387 @vindex parse-time-weekdays
5388 The function understands English month and weekday abbreviations.  If
5389 you want to use unabbreviated names and/or other languages, configure
5390 the variables @code{parse-time-months} and @code{parse-time-weekdays}.
5392 You can specify a time range by giving start and end times or by giving a
5393 start time and a duration (in HH:MM format). Use '-' or '--' as the separator
5394 in the former case and use '+' as the separator in the latter case. E.g.
5396 @example
5397 11am-1:15pm    --> 11:00-13:15
5398 11am--1:15pm   --> same as above
5399 11am+2:15      --> same as above
5400 @end example
5402 @cindex calendar, for selecting date
5403 @vindex org-popup-calendar-for-date-prompt
5404 Parallel to the minibuffer prompt, a calendar is popped up@footnote{If
5405 you don't need/want the calendar, configure the variable
5406 @code{org-popup-calendar-for-date-prompt}.}.  When you exit the date
5407 prompt, either by clicking on a date in the calendar, or by pressing
5408 @key{RET}, the date selected in the calendar will be combined with the
5409 information entered at the prompt.  You can control the calendar fully
5410 from the minibuffer:
5412 @kindex <
5413 @kindex >
5414 @kindex M-v
5415 @kindex C-v
5416 @kindex mouse-1
5417 @kindex S-@key{right}
5418 @kindex S-@key{left}
5419 @kindex S-@key{down}
5420 @kindex S-@key{up}
5421 @kindex M-S-@key{right}
5422 @kindex M-S-@key{left}
5423 @kindex @key{RET}
5424 @example
5425 @key{RET}           @r{Choose date at cursor in calendar.}
5426 mouse-1        @r{Select date by clicking on it.}
5427 S-@key{right}/@key{left}     @r{One day forward/backward.}
5428 S-@key{down}/@key{up}     @r{One week forward/backward.}
5429 M-S-@key{right}/@key{left}   @r{One month forward/backward.}
5430 > / <          @r{Scroll calendar forward/backward by one month.}
5431 M-v / C-v      @r{Scroll calendar forward/backward by 3 months.}
5432 @end example
5434 @vindex org-read-date-display-live
5435 The actions of the date/time prompt may seem complex, but I assure you they
5436 will grow on you, and you will start getting annoyed by pretty much any other
5437 way of entering a date/time out there.  To help you understand what is going
5438 on, the current interpretation of your input will be displayed live in the
5439 minibuffer@footnote{If you find this distracting, turn the display of with
5440 @code{org-read-date-display-live}.}.
5442 @node Custom time format,  , The date/time prompt, Creating timestamps
5443 @subsection Custom time format
5444 @cindex custom date/time format
5445 @cindex time format, custom
5446 @cindex date format, custom
5448 @vindex org-display-custom-times
5449 @vindex org-time-stamp-custom-formats
5450 Org-mode uses the standard ISO notation for dates and times as it is
5451 defined in ISO 8601.  If you cannot get used to this and require another
5452 representation of date and time to keep you happy, you can get it by
5453 customizing the variables @code{org-display-custom-times} and
5454 @code{org-time-stamp-custom-formats}.
5456 @table @kbd
5457 @orgcmd{C-c C-x C-t,org-toggle-time-stamp-overlays}
5458 Toggle the display of custom formats for dates and times.
5459 @end table
5461 @noindent
5462 Org-mode needs the default format for scanning, so the custom date/time
5463 format does not @emph{replace} the default format---instead it is put
5464 @emph{over} the default format using text properties.  This has the
5465 following consequences:
5466 @itemize @bullet
5467 @item
5468 You cannot place the cursor onto a timestamp anymore, only before or
5469 after.
5470 @item
5471 The @kbd{S-@key{up}/@key{down}} keys can no longer be used to adjust
5472 each component of a timestamp.  If the cursor is at the beginning of
5473 the stamp, @kbd{S-@key{up}/@key{down}} will change the stamp by one day,
5474 just like @kbd{S-@key{left}/@key{right}}.  At the end of the stamp, the
5475 time will be changed by one minute.
5476 @item
5477 If the timestamp contains a range of clock times or a repeater, these
5478 will not be overlayed, but remain in the buffer as they were.
5479 @item
5480 When you delete a timestamp character-by-character, it will only
5481 disappear from the buffer after @emph{all} (invisible) characters
5482 belonging to the ISO timestamp have been removed.
5483 @item
5484 If the custom timestamp format is longer than the default and you are
5485 using dates in tables, table alignment will be messed up.  If the custom
5486 format is shorter, things do work as expected.
5487 @end itemize
5490 @node Deadlines and scheduling, Clocking work time, Creating timestamps, Dates and Times
5491 @section Deadlines and scheduling
5493 A timestamp may be preceded by special keywords to facilitate planning:
5495 @table @var
5496 @item DEADLINE
5497 @cindex DEADLINE keyword
5499 Meaning: the task (most likely a TODO item, though not necessarily) is supposed
5500 to be finished on that date.
5502 @vindex org-deadline-warning-days
5503 On the deadline date, the task will be listed in the agenda.  In
5504 addition, the agenda for @emph{today} will carry a warning about the
5505 approaching or missed deadline, starting
5506 @code{org-deadline-warning-days} before the due date, and continuing
5507 until the entry is marked DONE.  An example:
5509 @example
5510 *** TODO write article about the Earth for the Guide
5511     The editor in charge is [[bbdb:Ford Prefect]]
5512     DEADLINE: <2004-02-29 Sun>
5513 @end example
5515 You can specify a different lead time for warnings for a specific
5516 deadlines using the following syntax.  Here is an example with a warning
5517 period of 5 days @code{DEADLINE: <2004-02-29 Sun -5d>}.
5519 @item SCHEDULED
5520 @cindex SCHEDULED keyword
5522 Meaning: you are planning to start working on that task on the given
5523 date.
5525 @vindex org-agenda-skip-scheduled-if-done
5526 The headline will be listed under the given date@footnote{It will still
5527 be listed on that date after it has been marked DONE.  If you don't like
5528 this, set the variable @code{org-agenda-skip-scheduled-if-done}.}.  In
5529 addition, a reminder that the scheduled date has passed will be present
5530 in the compilation for @emph{today}, until the entry is marked DONE.
5531 I.e. the task will automatically be forwarded until completed.
5533 @example
5534 *** TODO Call Trillian for a date on New Years Eve.
5535     SCHEDULED: <2004-12-25 Sat>
5536 @end example
5538 @noindent
5539 @b{Important:} Scheduling an item in Org-mode should @i{not} be
5540 understood in the same way that we understand @i{scheduling a meeting}.
5541 Setting a date for a meeting is just a simple appointment, you should
5542 mark this entry with a simple plain timestamp, to get this item shown
5543 on the date where it applies.  This is a frequent misunderstanding by
5544 Org users.  In Org-mode, @i{scheduling} means setting a date when you
5545 want to start working on an action item.
5546 @end table
5548 You may use timestamps with repeaters in scheduling and deadline
5549 entries.  Org-mode will issue early and late warnings based on the
5550 assumption that the timestamp represents the @i{nearest instance} of
5551 the repeater.  However, the use of diary sexp entries like
5553 @code{<%%(diary-float t 42)>}
5555 in scheduling and deadline timestamps is limited.  Org-mode does not
5556 know enough about the internals of each sexp function to issue early and
5557 late warnings.  However, it will show the item on each day where the
5558 sexp entry matches.
5560 @menu
5561 * Inserting deadline/schedule::  Planning items
5562 * Repeated tasks::              Items that show up again and again
5563 @end menu
5565 @node Inserting deadline/schedule, Repeated tasks, Deadlines and scheduling, Deadlines and scheduling
5566 @subsection Inserting deadlines or schedules
5568 The following commands allow you to quickly insert a deadline or to schedule
5569 an item:
5571 @table @kbd
5573 @orgcmd{C-c C-d,org-deadline}
5574 Insert @samp{DEADLINE} keyword along with a stamp.  The insertion will happen
5575 in the line directly following the headline.  When called with a prefix arg,
5576 an existing deadline will be removed from the entry.  Depending on the
5577 variable @code{org-log-redeadline}@footnote{with corresponding
5578 @code{#+STARTUP} keywords @code{logredeadline}, @code{lognoteredeadline},
5579 and @code{nologredeadline}}, a note will be taken when changing an existing
5580 deadline.
5581 @c FIXME Any CLOSED timestamp will be removed.????????
5583 @orgcmd{C-c C-s,org-schedule}
5584 Insert @samp{SCHEDULED} keyword along with a stamp.  The insertion will
5585 happen in the line directly following the headline.  Any CLOSED timestamp
5586 will be removed.  When called with a prefix argument, remove the scheduling
5587 date from the entry.  Depending on the variable
5588 @code{org-log-reschedule}@footnote{with corresponding @code{#+STARTUP}
5589 keywords @code{logredeadline}, @code{lognoteredeadline}, and
5590 @code{nologredeadline}}, a note will be taken when changing an existing
5591 scheduling time.
5593 @orgcmd{C-c C-x C-k,org-mark-entry-for-agenda-action}
5594 @kindex k a
5595 @kindex k s
5596 Mark the current entry for agenda action.  After you have marked the entry
5597 like this, you can open the agenda or the calendar to find an appropriate
5598 date.  With the cursor on the selected date, press @kbd{k s} or @kbd{k d} to
5599 schedule the marked item.
5601 @orgcmd{C-c / d,org-check-deadlines}
5602 @cindex sparse tree, for deadlines
5603 @vindex org-deadline-warning-days
5604 Create a sparse tree with all deadlines that are either past-due, or
5605 which will become due within @code{org-deadline-warning-days}.
5606 With @kbd{C-u} prefix, show all deadlines in the file.  With a numeric
5607 prefix, check that many days.  For example, @kbd{C-1 C-c / d} shows
5608 all deadlines due tomorrow.
5610 @orgcmd{C-c / b,org-check-before-date}
5611 Sparse tree for deadlines and scheduled items before a given date.
5613 @orgcmd{C-c / a,org-check-after-date}
5614 Sparse tree for deadlines and scheduled items after a given date.
5615 @end table
5617 @node Repeated tasks,  , Inserting deadline/schedule, Deadlines and scheduling
5618 @subsection Repeated tasks
5619 @cindex tasks, repeated
5620 @cindex repeated tasks
5622 Some tasks need to be repeated again and again.  Org-mode helps to
5623 organize such tasks using a so-called repeater in a DEADLINE, SCHEDULED,
5624 or plain timestamp.  In the following example
5625 @example
5626 ** TODO Pay the rent
5627    DEADLINE: <2005-10-01 Sat +1m>
5628 @end example
5629 @noindent
5630 the @code{+1m} is a repeater; the intended interpretation is that the task
5631 has a deadline on <2005-10-01> and repeats itself every (one) month starting
5632 from that time.  If you need both a repeater and a special warning period in
5633 a deadline entry, the repeater should come first and the warning period last:
5634 @code{DEADLINE: <2005-10-01 Sat +1m -3d>}.
5636 @vindex org-todo-repeat-to-state
5637 Deadlines and scheduled items produce entries in the agenda when they are
5638 over-due, so it is important to be able to mark such an entry as completed
5639 once you have done so.  When you mark a DEADLINE or a SCHEDULE with the TODO
5640 keyword DONE, it will no longer produce entries in the agenda.  The problem
5641 with this is, however, that then also the @emph{next} instance of the
5642 repeated entry will not be active.  Org-mode deals with this in the following
5643 way: When you try to mark such an entry DONE (using @kbd{C-c C-t}), it will
5644 shift the base date of the repeating timestamp by the repeater interval, and
5645 immediately set the entry state back to TODO@footnote{In fact, the target
5646 state is taken from, in this sequence, the @code{REPEAT_TO_STATE} property or
5647 the variable @code{org-todo-repeat-to-state}.  If neither of these is
5648 specified, the target state defaults to the first state of the TODO state
5649 sequence.}.  In the example above, setting the state to DONE would actually
5650 switch the date like this:
5652 @example
5653 ** TODO Pay the rent
5654    DEADLINE: <2005-11-01 Tue +1m>
5655 @end example
5657 @vindex org-log-repeat
5658 A timestamp@footnote{You can change this using the option
5659 @code{org-log-repeat}, or the @code{#+STARTUP} options @code{logrepeat},
5660 @code{lognoterepeat}, and @code{nologrepeat}.  With @code{lognoterepeat}, you
5661 will also be prompted for a note.} will be added under the deadline, to keep
5662 a record that you actually acted on the previous instance of this deadline.
5664 As a consequence of shifting the base date, this entry will no longer be
5665 visible in the agenda when checking past dates, but all future instances
5666 will be visible.
5668 With the @samp{+1m} cookie, the date shift will always be exactly one
5669 month.  So if you have not paid the rent for three months, marking this
5670 entry DONE will still keep it as an overdue deadline.  Depending on the
5671 task, this may not be the best way to handle it.  For example, if you
5672 forgot to call you father for 3 weeks, it does not make sense to call
5673 him 3 times in a single day to make up for it.  Finally, there are tasks
5674 like changing batteries which should always repeat a certain time
5675 @i{after} the last time you did it.  For these tasks, Org-mode has
5676 special repeaters markers with @samp{++} and @samp{.+}.  For example:
5678 @example
5679 ** TODO Call Father
5680    DEADLINE: <2008-02-10 Sun ++1w>
5681    Marking this DONE will shift the date by at least one week,
5682    but also by as many weeks as it takes to get this date into
5683    the future.  However, it stays on a Sunday, even if you called
5684    and marked it done on Saturday.
5685 ** TODO Check the batteries in the smoke detectors
5686    DEADLINE: <2005-11-01 Tue .+1m>
5687    Marking this DONE will shift the date to one month after
5688    today.
5689 @end example
5691 You may have both scheduling and deadline information for a specific
5692 task---just make sure that the repeater intervals on both are the same.
5694 An alternative to using a repeater is to create a number of copies of a task
5695 subtree, with dates shifted in each copy.  The command @kbd{C-c C-x c} was
5696 created for this purpose, it is described in @ref{Structure editing}.
5699 @node Clocking work time, Effort estimates, Deadlines and scheduling, Dates and Times
5700 @section Clocking work time
5701 @cindex clocking time
5702 @cindex time clocking
5704 Org-mode allows you to clock the time you spend on specific tasks in a
5705 project.  When you start working on an item, you can start the clock.
5706 When you stop working on that task, or when you mark the task done, the
5707 clock is stopped and the corresponding time interval is recorded.  It
5708 also computes the total time spent on each subtree of a project.  And it
5709 remembers a history or tasks recently clocked, to that you can jump quickly
5710 between a number of tasks absorbing your time.
5712 To save the clock history across Emacs sessions, use
5713 @lisp
5714 (setq org-clock-persist 'history)
5715 (org-clock-persistence-insinuate)
5716 @end lisp
5717 When you clock into a new task after resuming Emacs, the incomplete
5718 clock@footnote{To resume the clock under the assumption that you have worked
5719 on this task while outside Emacs, use @code{(setq org-clock-persist t)}.}
5720 will be found (@pxref{Resolving idle time}) and you will be prompted about
5721 what to do with it.
5723 @menu
5724 * Clocking commands::           Starting and stopping a clock
5725 * The clock table::             Detailed reports
5726 * Resolving idle time::         Resolving time when you've been idle
5727 @end menu
5729 @node Clocking commands, The clock table, Clocking work time, Clocking work time
5730 @subsection Clocking commands
5732 @table @kbd
5733 @orgcmd{C-c C-x C-i,org-clock-in}
5734 @vindex org-clock-into-drawer
5735 Start the clock on the current item (clock-in).  This inserts the CLOCK
5736 keyword together with a timestamp.  If this is not the first clocking of
5737 this item, the multiple CLOCK lines will be wrapped into a
5738 @code{:LOGBOOK:} drawer (see also the variable
5739 @code{org-clock-into-drawer}).  When called with a @kbd{C-u} prefix argument,
5740 select the task from a list of recently clocked tasks.  With two @kbd{C-u
5741 C-u} prefixes, clock into the task at point and mark it as the default task.
5742 The default task will always be available when selecting a clocking task,
5743 with letter @kbd{d}.@*
5744 @cindex property: CLOCK_MODELINE_TOTAL
5745 @cindex property: LAST_REPEAT
5746 @vindex org-clock-modeline-total
5747 While the clock is running, the current clocking time is shown in the mode
5748 line, along with the title of the task.  The clock time shown will be all
5749 time ever clocked for this task and its children.  If the task has an effort
5750 estimate (@pxref{Effort estimates}), the mode line displays the current
5751 clocking time against it@footnote{To add an effort estimate ``on the fly'',
5752 hook a function doing this to @code{org-clock-in-prepare-hook}.}  If the task
5753 is a repeating one (@pxref{Repeated tasks}), only the time since the last
5754 reset of the task @footnote{as recorded by the @code{LAST_REPEAT} property}
5755 will be shown.  More control over what time is shown can be exercised with
5756 the @code{CLOCK_MODELINE_TOTAL} property.  It may have the values
5757 @code{current} to show only the current clocking instance, @code{today} to
5758 show all time clocked on this tasks today (see also the variable
5759 @code{org-extend-today-until}), @code{all} to include all time, or
5760 @code{auto} which is the default@footnote{See also the variable
5761 @code{org-clock-modeline-total}.}.@* Clicking with @kbd{mouse-1} onto the
5762 mode line entry will pop up a menu with clocking options.
5764 @orgcmd{C-c C-x C-o,org-clock-out}
5765 @vindex org-log-note-clock-out
5766 Stop the clock (clock-out).  This inserts another timestamp at the same
5767 location where the clock was last started.  It also directly computes
5768 the resulting time in inserts it after the time range as @samp{=>
5769 HH:MM}.  See the variable @code{org-log-note-clock-out} for the
5770 possibility to record an additional note together with the clock-out
5771 timestamp@footnote{The corresponding in-buffer setting is:
5772 @code{#+STARTUP: lognoteclock-out}}.
5773 @orgcmd{C-c C-x C-e,org-clock-modify-effort-estimate}
5774 Update the effort estimate for the current clock task.
5775 @kindex C-c C-y
5776 @kindex C-c C-c
5777 @orgcmdkkc{C-c C-c,C-c C-y,org-evaluate-time-range}
5778 Recompute the time interval after changing one of the timestamps.  This
5779 is only necessary if you edit the timestamps directly.  If you change
5780 them with @kbd{S-@key{cursor}} keys, the update is automatic.
5781 @orgcmd{C-c C-t,org-todo}
5782 Changing the TODO state of an item to DONE automatically stops the clock
5783 if it is running in this same item.
5784 @orgcmd{C-c C-x C-x,org-clock-cancel}
5785 Cancel the current clock.  This is useful if a clock was started by
5786 mistake, or if you ended up working on something else.
5787 @orgcmd{C-c C-x C-j,org-clock-goto}
5788 Jump to the headline of the currently clocked in task.  With a @kbd{C-u}
5789 prefix arg, select the target task from a list of recently clocked tasks.
5790 @orgcmd{C-c C-x C-d,org-clock-display}
5791 @vindex org-remove-highlights-with-change
5792 Display time summaries for each subtree in the current buffer.  This
5793 puts overlays at the end of each headline, showing the total time
5794 recorded under that heading, including the time of any subheadings. You
5795 can use visibility cycling to study the tree, but the overlays disappear
5796 when you change the buffer (see variable
5797 @code{org-remove-highlights-with-change}) or press @kbd{C-c C-c}.
5798 @end table
5800 The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
5801 the agenda (@pxref{Weekly/daily agenda}) to show which tasks have been
5802 worked on or closed during a day.
5804 @node The clock table, Resolving idle time, Clocking commands, Clocking work time
5805 @subsection The clock table
5806 @cindex clocktable, dynamic block
5807 @cindex report, of clocked time
5809 Org mode can produce quite complex reports based on the time clocking
5810 inormation.  Such a report is called a @emph{clock table}, because it is
5811 formatted as one or several Org tables.
5813 @table @kbd
5814 @orgcmd{C-c C-x C-r,org-clock-report}
5815 Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
5816 report as an Org-mode table into the current file.  When the cursor is
5817 at an existing clock table, just update it.  When called with a prefix
5818 argument, jump to the first clock report in the current document and
5819 update it.
5820 @orgcmdkkc{C-c C-c,C-c C-x C-u,org-dblock-update}
5821 Update dynamic block at point.  The cursor needs to be in the
5822 @code{#+BEGIN} line of the dynamic block.
5823 @orgkey{C-u C-c C-x C-u}
5824 Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
5825 you have several clock table blocks in a buffer.
5826 @orgcmdkxkc{S-@key{left},S-@key{right},org-clocktable-try-shift}
5827 Shift the current @code{:block} interval and update the table.  The cursor
5828 needs to be in the @code{#+BEGIN: clocktable} line for this command.  If
5829 @code{:block} is @code{today}, it will be shifted to @code{today-1} etc.
5830 @end table
5833 Here is an example of the frame for a clock table as it is inserted into the
5834 buffer with the @kbd{C-c C-x C-r} command:
5836 @cindex #+BEGIN, clocktable
5837 @example
5838 #+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
5839 #+END: clocktable
5840 @end example
5841 @noindent
5842 @vindex org-clocktable-defaults
5843 The @samp{BEGIN} line and specify a number of options to define the scope,
5844 structure, and formatting of the report.  Defaults for all these options can
5845 be configured in the variable @code{org-clocktable-defaults}.
5847 @noindent First there are options that determine which clock entries are to
5848 be selected:
5849 @example
5850 :maxlevel    @r{Maximum level depth to which times are listed in the table.}
5851              @r{Clocks at deeper levels will be summed into the upper level.}
5852 :scope       @r{The scope to consider.  This can be any of the following:}
5853              nil        @r{the current buffer or narrowed region}
5854              file       @r{the full current buffer}
5855              subtree    @r{the subtree where the clocktable is located}
5856              tree@var{N}      @r{the surrounding level @var{N} tree, for example @code{tree3}}
5857              tree       @r{the surrounding level 1 tree}
5858              agenda     @r{all agenda files}
5859              ("file"..) @r{scan these files}
5860              file-with-archives    @r{current file and its archives}
5861              agenda-with-archives  @r{all agenda files, including archives}
5862 :block       @r{The time block to consider.  This block is specified either}
5863              @r{absolute, or relative to the current time and may be any of}
5864              @r{these formats:}
5865              2007-12-31    @r{New year eve 2007}
5866              2007-12       @r{December 2007}
5867              2007-W50      @r{ISO-week 50 in 2007}
5868              2007          @r{the year 2007}
5869              today, yesterday, today-@var{N}          @r{a relative day}
5870              thisweek, lastweek, thisweek-@var{N}     @r{a relative week}
5871              thismonth, lastmonth, thismonth-@var{N}  @r{a relative month}
5872              thisyear, lastyear, thisyear-@var{N}     @r{a relative year}
5873              @r{Use @kbd{S-@key{left}/@key{right}} keys to shift the time interval.}
5874 :tstart      @r{A time string specifying when to start considering times.}
5875 :tend        @r{A time string specifying when to stop considering times.}
5876 :step        @r{@code{week} or @code{day}, to split the table into chunks.}
5877              @r{To use this, @code{:block} or @code{:tstart}, @code{:tend} are needed.}
5878 :stepskip0   @r{Do not show steps that have zero time.}
5879 :fileskip0   @r{Do not show table sections from files which did not contribute.}
5880 :tags        @r{A tags match to select entries that should contribute}.
5881 @end example
5883 Then there are options which determine the formatting of the table.  There
5884 options are interpreted by the function @code{org-clocktable-write-default},
5885 but you can specify your own function using the @code{:formatter} parameter.
5886 @example
5887 :emphasize   @r{When @code{t}, emphasize level one and level two items.}
5888 :link        @r{Link the item headlines in the table to their origins.}
5889 :narrow      @r{An integer to limit the width of the headline column in}
5890              @r{the org table.  If you write it like @samp{50!}, then the}
5891              @r{headline will also be shortened in export.}
5892 :indent      @r{Indent each headline field according to its level.}
5893 :tcolumns    @r{Number of columns to be used for times.  If this is smaller}
5894              @r{than @code{:maxlevel}, lower levels will be lumped into one column.}
5895 :level       @r{Should a level number column be included?}
5896 :compact     @r{Abbreviation for @code{:level nil :indent t :narrow 40! :tcolumns 1}}
5897              @r{All are overwritten except if there is an explicit @code{:narrow}}
5898 :timestamp   @r{A timestamp for the entry, when available.  Look for SCHEDULED,}
5899              @r{DEADLINE, TIMESTAMP and TIMESTAMP_IA, in this order.}
5900 :formula     @r{Content of a @code{#+TBLFM} line to be added and evaluated.}
5901              @r{As a special case, @samp{:formula %} adds a column with % time.}
5902              @r{If you do not specify a formula here, any existing formula.}
5903              @r{below the clock table will survive updates and be evaluated.}
5904 :formatter   @r{A function to format clock data and insert it into the buffer.}
5905 @end example
5906 To get a clock summary of the current level 1 tree, for the current
5907 day, you could write
5908 @example
5909 #+BEGIN: clocktable :maxlevel 2 :block today :scope tree1 :link t
5910 #+END: clocktable
5911 @end example
5912 @noindent
5913 and to use a specific time range you could write@footnote{Note that all
5914 parameters must be specified in a single line---the line is broken here
5915 only to fit it into the manual.}
5916 @example
5917 #+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>"
5918                     :tend "<2006-08-10 Thu 12:00>"
5919 #+END: clocktable
5920 @end example
5921 A summary of the current subtree with % times would be
5922 @example
5923 #+BEGIN: clocktable :scope subtree :link t :formula %
5924 #+END: clocktable
5925 @end example
5926 A horizontally compact representation of everything clocked during last week
5927 would be
5928 @example
5929 #+BEGIN: clocktable :scope agenda :block lastweek :compact t
5930 #+END: clocktable
5931 @end example
5933 @node Resolving idle time,  , The clock table, Clocking work time
5934 @subsection Resolving idle time
5935 @cindex resolve idle time
5937 @cindex idle, resolve, dangling
5938 If you clock in on a work item, and then walk away from your
5939 computer---perhaps to take a phone call---you often need to ``resolve'' the
5940 time you were away by either subtracting it from the current clock, or
5941 applying it to another one.
5943 @vindex org-clock-idle-time
5944 By customizing the variable @code{org-clock-idle-time} to some integer, such
5945 as 10 or 15, Emacs can alert you when you get back to your computer after
5946 being idle for that many minutes@footnote{On computers using Mac OS X,
5947 idleness is based on actual user idleness, not just Emacs' idle time.  For
5948 X11, you can install a utility program @file{x11idle.c}, available in the
5949 UTILITIES directory of the Org git distribution, to get the same general
5950 treatment of idleness.  On other systems, idle time refers to Emacs idle time
5951 only.}, and ask what you want to do with the idle time.  There will be a
5952 question waiting for you when you get back, indicating how much idle time has
5953 passed (constantly updated with the current amount), as well as a set of
5954 choices to correct the discrepancy:
5956 @table @kbd
5957 @item k
5958 To keep some or all of the minutes and stay clocked in, press @kbd{k}.  Org
5959 will ask how many of the minutes to keep.  Press @key{RET} to keep them all,
5960 effectively changing nothing, or enter a number to keep that many minutes.
5961 @item K
5962 If you use the shift key and press @kbd{K}, it will keep however many minutes
5963 you request and then immediately clock out of that task.  If you keep all of
5964 the minutes, this is the same as just clocking out of the current task.
5965 @item s
5966 To keep none of the minutes, use @kbd{s} to subtract all the away time from
5967 the clock, and then check back in from the moment you returned.
5968 @item S
5969 To keep none of the minutes and just clock out at the start of the away time,
5970 use the shift key and press @kbd{S}.  Remember that using shift will always
5971 leave you clocked out, no matter which option you choose.
5972 @item C
5973 To cancel the clock altogether, use @kbd{C}.  Note that if instead of
5974 canceling you subtract the away time, and the resulting clock amount is less
5975 than a minute, the clock will still be canceled rather than clutter up the
5976 log with an empty entry.
5977 @end table
5979 What if you subtracted those away minutes from the current clock, and now
5980 want to apply them to a new clock?  Simply clock in to any task immediately
5981 after the subtraction.  Org will notice that you have subtracted time ``on
5982 the books'', so to speak, and will ask if you want to apply those minutes to
5983 the next task you clock in on.
5985 There is one other instance when this clock resolution magic occurs.  Say you
5986 were clocked in and hacking away, and suddenly your cat chased a mouse who
5987 scared a hamster that crashed into your UPS's power button!  You suddenly
5988 lose all your buffers, but thanks to auto-save you still have your recent Org
5989 mode changes, including your last clock in.
5991 If you restart Emacs and clock into any task, Org will notice that you have a
5992 dangling clock which was never clocked out from your last session.  Using
5993 that clock's starting time as the beginning of the unaccounted-for period,
5994 Org will ask how you want to resolve that time.  The logic and behavior is
5995 identical to dealing with away time due to idleness, it's just happening due
5996 to a recovery event rather than a set amount of idle time.
5998 You can also check all the files visited by your Org agenda for dangling
5999 clocks at any time using @kbd{M-x org-resolve-clocks}.
6001 @node Effort estimates, Relative timer, Clocking work time, Dates and Times
6002 @section Effort estimates
6003 @cindex effort estimates
6005 @cindex property, Effort
6006 @vindex org-effort-property
6007 If you want to plan your work in a very detailed way, or if you need to
6008 produce offers with quotations of the estimated work effort, you may want to
6009 assign effort estimates to entries.  If you are also clocking your work, you
6010 may later want to compare the planned effort with the actual working time, a
6011 great way to improve planning estimates.  Effort estimates are stored in a
6012 special property @samp{Effort}@footnote{You may change the property being
6013 used with the variable @code{org-effort-property}.}.  You can set the effort
6014 for an entry with the following commands:
6016 @table @kbd
6017 @orgcmd{C-c C-x e,org-set-effort}
6018 Set the effort estimate for the current entry.  With a numeric prefix
6019 argument, set it to the NTH allowed value (see below).  This command is also
6020 accessible from the agenda with the @kbd{e} key.
6021 @orgcmd{C-c C-x C-e,org-clock-modify-effort-estimate}
6022 Modify the effort estimate of the item currently being clocked.
6023 @end table
6025 Clearly the best way to work with effort estimates is through column view
6026 (@pxref{Column view}).  You should start by setting up discrete values for
6027 effort estimates, and a @code{COLUMNS} format that displays these values
6028 together with clock sums (if you want to clock your time).  For a specific
6029 buffer you can use
6031 @example
6032 #+PROPERTY: Effort_ALL 0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00 8:00
6033 #+COLUMNS: %40ITEM(Task) %17Effort(Estimated Effort)@{:@} %CLOCKSUM
6034 @end example
6036 @noindent
6037 @vindex org-global-properties
6038 @vindex org-columns-default-format
6039 or, even better, you can set up these values globally by customizing the
6040 variables @code{org-global-properties} and @code{org-columns-default-format}.
6041 In particular if you want to use this setup also in the agenda, a global
6042 setup may be advised.
6044 The way to assign estimates to individual items is then to switch to column
6045 mode, and to use @kbd{S-@key{right}} and @kbd{S-@key{left}} to change the
6046 value.  The values you enter will immediately be summed up in the hierarchy.
6047 In the column next to it, any clocked time will be displayed.
6049 @vindex org-agenda-columns-add-appointments-to-effort-sum
6050 If you switch to column view in the daily/weekly agenda, the effort column
6051 will summarize the estimated work effort for each day@footnote{Please note
6052 the pitfalls of summing hierarchical data in a flat list (@pxref{Agenda
6053 column view}).}, and you can use this to find space in your schedule.  To get
6054 an overview of the entire part of the day that is committed, you can set the
6055 option @code{org-agenda-columns-add-appointments-to-effort-sum}.  The
6056 appointments on a day that take place over a specified time interval will
6057 then also be added to the load estimate of the day.
6059 Effort estimates can be used in secondary agenda filtering that is triggered
6060 with the @kbd{/} key in the agenda (@pxref{Agenda commands}).  If you have
6061 these estimates defined consistently, two or three key presses will narrow
6062 down the list to stuff that fits into an available time slot.
6064 @node Relative timer, Countdown timer, Effort estimates, Dates and Times
6065 @section Taking notes with a relative timer
6066 @cindex relative timer
6068 When taking notes during, for example, a meeting or a video viewing, it can
6069 be useful to have access to times relative to a starting time.  Org provides
6070 such a relative timer and make it easy to create timed notes.
6072 @table @kbd
6073 @orgcmd{C-c C-x .,org-timer}
6074 Insert a relative time into the buffer.  The first time you use this, the
6075 timer will be started.  When called with a prefix argument, the timer is
6076 restarted.
6077 @orgcmd{C-c C-x -,org-timer-item}
6078 Insert a description list item with the current relative time.  With a prefix
6079 argument, first reset the timer to 0.
6080 @orgcmd{M-@key{RET},org-insert-heading}
6081 Once the timer list is started, you can also use @kbd{M-@key{RET}} to insert
6082 new timer items.
6083 @c for key sequences with a comma, command name macros fail :(
6084 @kindex C-c C-x ,
6085 @item C-c C-x ,
6086 Pause the timer, or continue it if it is already paused
6087 (@command{org-timer-pause-or-continue}).
6088 @c removed the sentence because it is redundant to the following item
6089 @kindex C-u C-c C-x ,
6090 @item C-u C-c C-x ,
6091 Stop the timer.  After this, you can only start a new timer, not continue the
6092 old one.  This command also removes the timer from the mode line.
6093 @orgcmd{C-c C-x 0,org-timer-start}
6094 Reset the timer without inserting anything into the buffer.  By default, the
6095 timer is reset to 0.  When called with a @kbd{C-u} prefix, reset the timer to
6096 specific starting offset.  The user is prompted for the offset, with a
6097 default taken from a timer string at point, if any, So this can be used to
6098 restart taking notes after a break in the process.  When called with a double
6099 prefix argument @kbd{C-u C-u}, change all timer strings in the active region
6100 by a certain amount.  This can be used to fix timer strings if the timer was
6101 not started at exactly the right moment.
6102 @end table
6104 @node Countdown timer,  , Relative timer, Dates and Times
6105 @section Countdown timer
6106 @cindex Countdown timer
6107 @kindex C-c C-x ;
6108 @kindex ;
6110 Calling @code{org-timer-set-timer} from an Org-mode buffer runs a countdown
6111 timer.  Use @key{;} from agenda buffers, @key{C-c C-x ;} everwhere else.
6113 @code{org-timer-set-timer} prompts the user for a duration and displays a
6114 countdown timer in the modeline.  @code{org-timer-default-timer} sets the
6115 default countdown value.  Giving a prefix numeric argument overrides this
6116 default value.
6118 @node Capture - Refile - Archive, Agenda Views, Dates and Times, Top
6119 @chapter Capture - Refile - Archive
6120 @cindex capture
6122 An important part of any organization system is the ability to quickly
6123 capture new ideas and tasks, and to associate reference material with them.
6124 Org does this using a process called @i{capture}.  It also can store files
6125 related to a task (@i{attachments}) in a special directory.  Once in the
6126 system, tasks and projects need to be moved around.  Moving completed project
6127 trees to an archive file keeps the system compact and fast.
6129 @menu
6130 * Capture::                     Capturing new stuff
6131 * Attachments::                 Add files to tasks
6132 * RSS Feeds::                   Getting input from RSS feeds
6133 * Protocols::                   External (e.g. Browser) access to Emacs and Org
6134 * Refiling notes::              Moving a tree from one place to another
6135 * Archiving::                   What to do with finished projects
6136 @end menu
6138 @node Capture, Attachments, Capture - Refile - Archive, Capture - Refile - Archive
6139 @section Capture
6140 @cindex capture
6142 Org's method for capturing new items is heavily inspired by John Wiegley
6143 excellent remember package.  Up to version 6.36 Org used a special setup
6144 for @file{remember.el}.  @file{org-remember.el} is still part of Org-mode for
6145 backward compatibility with existing setups.  You can find the documentation
6146 for org-remember at @url{http://orgmode.org/org-remember.pdf}.
6148 The new capturing setup described here is preferred and should be used by new
6149 users.  To convert your @code{org-remember-templates}, run the command
6150 @example
6151 @kbd{M-x org-capture-import-remember-templates @key{RET}}
6152 @end example
6153 @noindent and then customize the new variable with @kbd{M-x
6154 customize-variable org-capture-templates}, check the result, and save the
6155 customization.  You can then use both remember and capture until
6156 you are familiar with the new mechanism.
6158 Capture lets you quickly store notes with little interruption of your work
6159 flow.  The basic process of capturing is very similar to remember, but Org
6160 does enhance it with templates and more.
6162 @menu
6163 * Setting up capture::          Where notes will be stored
6164 * Using capture::               Commands to invoke and terminate capture
6165 * Capture templates::           Define the outline of different note types
6166 @end menu
6168 @node Setting up capture, Using capture, Capture, Capture
6169 @subsection Setting up capture
6171 The following customization sets a default target file for notes, and defines
6172 a global key@footnote{Please select your own key, @kbd{C-c c} is only a
6173 suggestion.}  for capturing new material.
6175 @vindex org-default-notes-file
6176 @example
6177 (setq org-default-notes-file (concat org-directory "/notes.org"))
6178 (define-key global-map "\C-cc" 'org-capture)
6179 @end example
6181 @node Using capture, Capture templates, Setting up capture, Capture
6182 @subsection Using capture
6184 @table @kbd
6185 @orgcmd{C-c c,org-capture}
6186 Call the command @code{org-capture}.  Note that this keybinding is global and
6187 not active by default - you need to install it.  If you have templates
6188 defined @pxref{Capture templates}, it will offer these templates for
6189 selection or use a new Org outline node as the default template.  It will
6190 insert the template into the target file and switch to an indirect buffer
6191 narrowed to this new node.  You may then insert the information you want.
6193 @orgcmd{C-c C-c,org-capture-finalize}
6194 Once you have finished entering information into the capture buffer, @kbd{C-c
6195 C-c} will return you to the window configuration before the capture process,
6196 so that you can resume your work without further distraction.
6198 @orgcmd{C-c C-w,org-capture-refile}
6199 Finalize the capture process by refiling (@pxref{Refiling notes}) the note to
6200 a different place.  Please realize that this is a normal refiling command
6201 that will be executed - so the cursor position at the moment you run this
6202 command is important.  If you have inserted a tree with a parent and
6203 children, first move the cursor back to the parent.
6205 @orgcmd{C-c C-k,org-capture-kill}
6206 Abort the capture process and return to the previous state.
6207 @end table
6209 You can also call @code{org-capture} in a special way from the agenda, using
6210 the @kbd{k c} key combination.  With this access, any timestamps inserted by
6211 the selected capture template will default to the cursor date in the agenda,
6212 rather than to the current date.
6214 @node Capture templates,  , Using capture, Capture
6215 @subsection Capture templates
6216 @cindex templates, for Capture
6218 You can use templates for different types of capture items, and
6219 for different target locations.  The easiest way to create such templates is
6220 through the customize interface.
6222 @table @kbd
6223 @orgkey{C-c c C}
6224 Customize the variable @code{org-capture-templates}.
6225 @end table
6227 Before we give the formal description of template definitions, let's look at
6228 an example.  Say you would like to use one template to create general TODO
6229 entries, and you want to put these entries under the heading @samp{Tasks} in
6230 your file @file{~/org/gtd.org}.  Also, a date tree in the file
6231 @file{journal.org} should capture journal entries.  A possible configuration
6232 would look like:
6234 @example
6235 (setq org-capture-templates
6236  '(("t" "Todo" entry (file+headline "~/org/gtd.org" "Tasks")
6237         "* TODO %?\n  %i\n  %a")
6238    ("j" "Journal" entry (file+datetree "~/org/journal.org")
6239         "* %?\nEntered on %U\n  %i\n  %a")))
6240 @end example
6242 @noindent If you then press @kbd{C-c c t}, Org will prepare the template
6243 for you like this:
6244 @example
6245 * TODO
6246   [[file:@var{link to where you initiated capture}]]
6247 @end example
6249 @noindent
6250 During expansion of the template, @code{%a} has been replaced by a link to
6251 the location from where you called the capture command.  This can be
6252 extremely useful for deriving tasks from emails, for example.  You fill in
6253 the task definition, press @code{C-c C-c} and Org returns you to the same
6254 place where you started the capture process.
6257 @menu
6258 * Template elements::           What is needed for a complete template entry
6259 * Template expansion::          Filling in information about time and context
6260 @end menu
6262 @node Template elements, Template expansion, Capture templates, Capture templates
6263 @subsubsection Template elements
6265 Now lets look at the elements of a template definition.  Each entry in
6266 @code{org-capture-templates} is a list with the following items: 
6268 @table @var
6269 @item keys
6270 The keys that will select the template, as a string, characters
6271 only, for example @code{"a"} for a template to be selected with a
6272 single key, or @code{"bt"} for selection with two keys.  When using
6273 several keys, keys using the same prefix key must be sequential 
6274 in the list and preceded by a 2-element entry explaining the
6275 prefix key, for example
6276 @example
6277          ("b" "Templates for marking stuff to buy")
6278 @end example
6279 @noindent If you do not define a template for the @kbd{C} key, this key will
6280 be used to open the customize buffer for this complex variable.
6282 @item description
6283 A short string describing the template, which will be shown during
6284 selection.
6286 @item type
6287 The type of entry, a symbol.  Valid values are:
6288 @table @code
6289 @item entry
6290 An Org-mode node, with a headline. Will be filed as the child of the
6291 target entry or as a top-level entry.  The target file should be an Org-mode
6292 file.
6293 @item item
6294 A plain list item, placed in the first plain  list at the target
6295 location.  Again the target file should be an Org file.
6296 @item checkitem
6297 A checkbox item.  This only differs from the plain list item by the
6298 default template.
6299 @item table-line
6300 a new line in the first table at the target location.  Where exactly the
6301 line will be inserted depends on the properties @code{:prepend} and
6302 @code{:table-line-pos} (see below).
6303 @item plain
6304 Text to be inserted as it is.
6305 @end table
6307 @item target
6308 @vindex org-default-notes-file
6309 Specification of where the captured item should be placed.  In Org-mode
6310 files, targets usually define a node.  Entries will become children of this
6311 node, other types will be added to the table or list in the body of this
6312 node.  Most target specifications contain a file name.  If that file name is
6313 the empty string, it defaults to @code{org-default-notes-file}.
6315 Valid values are:
6316 @table @code
6317 @item (file "path/to/file")
6318 Text will be placed at the beginning or end of that file.
6320 @item (id "id of existing org entry")
6321 Filing as child of this entry, or in the body of the entry.
6323 @item (file+headline "path/to/file" "node headline")
6324 Fast configuration if the target heading is unique in the file.
6326 @item (file+olp "path/to/file" "Level 1 heading" "Level 2" ...)
6327 For non-unique headings, the full path is safer.
6329 @item (file+regexp  "path/to/file" "regexp to find location")
6330 Use a regular expression to position the cursor.
6332 @item (file+datetree "path/to/file")
6333 Will create a heading in a date tree.
6335 @item (file+function "path/to/file" function-finding-location)
6336 A function to find the right location in the file.
6338 @item (clock)
6339 File to the entry that is currently being clocked.
6341 @item (function function-finding-location)
6342 Most general way, write your own function to find both
6343 file and location.
6344 @end table
6346 @item template
6347 The template for creating the capture item.  If you leave this empty, an
6348 appropriate default template will be used.  Otherwise this is a string with
6349 escape codes, which will be replaced depending on time and context of the
6350 capture call.  The string with escapes may be loaded from a template file,
6351 using the special syntax @code{(file "path/to/template")}.  See below for
6352 more details.
6354 @item properties
6355 The rest of the entry is a property list of additional options.
6356 Recognized properties are:
6357 @table @code
6358 @item :prepend
6359 Normally new captured information will be appended at
6360 the target location (last child, last table line, last list item...).
6361 Setting this property will change that.
6363 @item :immediate-finish
6364 When set, do not offer to edit the information, just
6365 file it away immediately.  This makes sense if the template only needs
6366 information that can be added automatically.
6368 @item :empty-lines
6369 Set this to the number of lines to insert
6370 before and after the new item.  Default 0, only common other value is 1.
6372 @item :clock-in
6373 Start the clock in this item.
6375 @item :clock-resume
6376 If starting the capture interrupted a clock, restart that clock when finished
6377 with the capture.
6379 @item :unnarrowed
6380 Do not narrow the target buffer, simply show the full buffer.  Default is to
6381 narrow it so that you only see the new material.
6383 @item :kill-buffer
6384 If the target file was not yet visited when capture was invoked, kill the
6385 buffer again after capture is completed.
6386 @end table
6387 @end table
6389 @node Template expansion,  , Template elements, Capture templates
6390 @subsubsection Template expansion
6392 In the template itself, special @kbd{%}-escapes@footnote{If you need one of
6393 these sequences literally, escape the @kbd{%} with a backslash.}  allow
6394 dynamic insertion of content:
6396 @comment SJE: should these sentences terminate in period?
6397 @smallexample
6398 %^@{@var{prompt}@}  @r{prompt the user for a string and replace this sequence with it.}
6399             @r{You may specify a default value and a completion table with}
6400             @r{%^@{prompt|default|completion2|completion3...@}}
6401             @r{The arrow keys access a prompt-specific history.}
6402 %a          @r{annotation, normally the link created with @code{org-store-link}}
6403 %A          @r{like @code{%a}, but prompt for the description part}
6404 %i          @r{initial content, the region when capture is called while the}
6405             @r{region is active.}
6406             @r{The entire text will be indented like @code{%i} itself.}
6407 %t          @r{timestamp, date only}
6408 %T          @r{timestamp with date and time}
6409 %u, %U      @r{like the above, but inactive timestamps}
6410 %^t         @r{like @code{%t}, but prompt for date.  Similarly @code{%^T}, @code{%^u}, @code{%^U}}
6411             @r{You may define a prompt like @code{%^@{Birthday@}t}}
6412 %n          @r{user name (taken from @code{user-full-name})}
6413 %c          @r{Current kill ring head.}
6414 %x          @r{Content of the X clipboard.}
6415 %^C         @r{Interactive selection of which kill or clip to use.}
6416 %^L         @r{Like @code{%^C}, but insert as link.}
6417 %k          @r{title of the currently clocked task}
6418 %K          @r{link to the currently clocked task}
6419 %^g         @r{prompt for tags, with completion on tags in target file.}
6420 %^G         @r{prompt for tags, with completion all tags in all agenda files.}
6421 %^@{@var{prop}@}p   @r{Prompt the user for a value for property @var{prop}}
6422 %:keyword   @r{specific information for certain link types, see below}
6423 %[@var{file}]     @r{insert the contents of the file given by @var{file}}
6424 %(@var{sexp})     @r{evaluate Elisp @var{sexp} and replace with the result}
6425 @end smallexample
6427 @noindent
6428 For specific link types, the following keywords will be
6429 defined@footnote{If you define your own link types (@pxref{Adding
6430 hyperlink types}), any property you store with
6431 @code{org-store-link-props} can be accessed in capture templates in a
6432 similar way.}:
6434 @vindex org-from-is-user-regexp
6435 @smallexample
6436 Link type          |  Available keywords
6437 -------------------+----------------------------------------------
6438 bbdb                    |  %:name %:company
6439 irc                     |  %:server %:port %:nick
6440 vm, wl, mh, mew, rmail  |  %:type %:subject %:message-id
6441                         |  %:from %:fromname %:fromaddress
6442                         |  %:to   %:toname   %:toaddress
6443                         |  %:date @r{(message date header field)}
6444                         |  %:date-timestamp @r{(date as active timestamp)}
6445                         |  %:date-timestamp-inactive @r{(date as inactive timestamp)}
6446                         |  %: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}.}}
6447 gnus                    |  %:group, @r{for messages also all email fields}
6448 w3, w3m                 |  %:url
6449 info                    |  %:file %:node
6450 calendar                |  %:date
6451 @end smallexample
6453 @noindent
6454 To place the cursor after template expansion use:
6456 @smallexample
6457 %?          @r{After completing the template, position cursor here.}
6458 @end smallexample
6461 @node Attachments, RSS Feeds, Capture, Capture - Refile - Archive
6462 @section Attachments
6463 @cindex attachments
6465 @vindex org-attach-directory
6466 It is often useful to associate reference material with an outline node/task.
6467 Small chunks of plain text can simply be stored in the subtree of a project.
6468 Hyperlinks (@pxref{Hyperlinks}) can establish associations with
6469 files that live elsewhere on your computer or in the cloud, like emails or
6470 source code files belonging to a project.  Another method is @i{attachments},
6471 which are files located in a directory belonging to an outline node.  Org
6472 uses directories named by the unique ID of each entry.  These directories are
6473 located in the @file{data} directory which lives in the same directory where
6474 your Org file lives@footnote{If you move entries or Org files from one
6475 directory to another, you may want to configure @code{org-attach-directory}
6476 to contain an absolute path.}.  If you initialize this directory with
6477 @code{git init}, Org will automatically commit changes when it sees them.
6478 The attachment system has been contributed to Org by John Wiegley.
6480 In cases where it seems better to do so, you can also attach a directory of your
6481 choice to an entry.  You can also make children inherit the attachment
6482 directory from a parent, so that an entire subtree uses the same attached
6483 directory.
6485 @noindent The following commands deal with attachments:
6487 @table @kbd
6489 @orgcmd{C-c C-a,org-attach}
6490 The dispatcher for commands related to the attachment system.  After these
6491 keys, a list of commands is displayed and you must press an additional key
6492 to select a command:
6494 @table @kbd
6495 @orgcmdtkc{a,C-c C-a a,org-attach-attach}
6496 @vindex org-attach-method
6497 Select a file and move it into the task's attachment directory.  The file
6498 will be copied, moved, or linked, depending on @code{org-attach-method}.
6499 Note that hard links are not supported on all systems.
6501 @kindex C-c C-a c
6502 @kindex C-c C-a m
6503 @kindex C-c C-a l
6504 @item c/m/l
6505 Attach a file using the copy/move/link method.
6506 Note that hard links are not supported on all systems.
6508 @orgcmdtkc{n,C-c C-a n,org-attach-new}
6509 Create a new attachment as an Emacs buffer.
6511 @orgcmdtkc{z,C-c C-a z,org-attach-sync}
6512 Synchronize the current task with its attachment directory, in case you added
6513 attachments yourself.
6515 @orgcmdtkc{p,C-c C-a o,org-attach-open}
6516 @vindex org-file-apps
6517 Open current task's attachment.  If there is more than one, prompt for a
6518 file name first.  Opening will follow the rules set by @code{org-file-apps}.
6519 For more details, see the information on following hyperlinks
6520 (@pxref{Handling links}).
6522 @orgcmdtkc{O,C-c C-a O,org-attach-open-in-emacs}
6523 Also open the attachment, but force opening the file in Emacs.
6525 @orgcmdtkc{f,C-c C-a f,org-attach-reveal}
6526 Open the current task's attachment directory.
6528 @orgcmdtkc{F,C-c C-a F,org-attach-reveal-in-emacs}
6529 Also open the directory, but force using @command{dired} in Emacs.
6531 @orgcmdtkc{d,C-c C-a d,org-attach-delete-one}
6532 Select and delete a single attachment.
6534 @orgcmdtkc{D,C-c C-a D,org-attach-delete-all}
6535 Delete all of a task's attachments.  A safer way is to open the directory in
6536 @command{dired} and delete from there.
6538 @orgcmdtkc{s,C-c C-a s,org-attach-set-directory}
6539 @cindex property, ATTACH_DIR
6540 Set a specific directory as the entry's attachment directory.  This works by
6541 putting the directory path into the @code{ATTACH_DIR} property.
6543 @orgcmdtkc{i,C-c C-a i,org-attach-set-inherit}
6544 @cindex property, ATTACH_DIR_INHERIT
6545 Set the @code{ATTACH_DIR_INHERIT} property, so that children will use the
6546 same directory for attachments as the parent does.
6547 @end table
6548 @end table
6550 @node RSS Feeds, Protocols, Attachments, Capture - Refile - Archive
6551 @section RSS feeds
6552 @cindex RSS feeds
6553 @cindex Atom feeds
6555 Org can add and change entries based on information found in RSS feeds and
6556 Atom feeds.  You could use this to make a task out of each new podcast in a
6557 podcast feed.  Or you could use a phone-based note-creating service on the
6558 web to import tasks into Org.  To access feeds, configure the variable
6559 @code{org-feed-alist}.  The docstring of this variable has detailed
6560 information.  Here is just an example:
6562 @example
6563 (setq org-feed-alist
6564      '(("Slashdot"
6565          "http://rss.slashdot.org/Slashdot/slashdot"
6566          "~/txt/org/feeds.org" "Slashdot Entries")))
6567 @end example
6569 @noindent
6570 will configure that new items from the feed provided by
6571 @code{rss.slashdot.org} will result in new entries in the file
6572 @file{~/org/feeds.org} under the heading @samp{Slashdot Entries}, whenever
6573 the following command is used:
6575 @table @kbd
6576 @orgcmd{C-c C-x g,org-feed-update-all}
6577 @item C-c C-x g
6578 Collect items from the feeds configured in @code{org-feed-alist} and act upon
6579 them.
6580 @orgcmd{C-c C-x G,org-feed-goto-inbox}
6581 Prompt for a feed name and go to the inbox configured for this feed.
6582 @end table
6584 Under the same headline, Org will create a drawer @samp{FEEDSTATUS} in which
6585 it will store information about the status of items in the feed, to avoid
6586 adding the same item several times.  You should add @samp{FEEDSTATUS} to the
6587 list of drawers in that file:
6589 @example
6590 #+DRAWERS: LOGBOOK PROPERTIES FEEDSTATUS
6591 @end example
6593 For more information, including how to read atom feeds, see
6594 @file{org-feed.el} and the docstring of @code{org-feed-alist}.
6596 @node Protocols, Refiling notes, RSS Feeds, Capture - Refile - Archive
6597 @section Protocols for external access
6598 @cindex protocols, for external access
6599 @cindex emacsserver
6601 You can set up Org for handling protocol calls from outside applications that
6602 are passed to Emacs through the @file{emacsserver}.  For example, you can
6603 configure bookmarks in your web browser to send a link to the current page to
6604 Org and create a note from it using capture (@pxref{Capture}).  Or you
6605 could create a bookmark that will tell Emacs to open the local source file of
6606 a remote website you are looking at with the browser.  See
6607 @uref{http://orgmode.org/worg/org-contrib/org-protocol.php} for detailed
6608 documentation and setup instructions.
6610 @node Refiling notes, Archiving, Protocols, Capture - Refile - Archive
6611 @section Refiling notes
6612 @cindex refiling notes
6614 When reviewing the captured data, you may want to refile some of the entries
6615 into a different list, for example into a project.  Cutting, finding the
6616 right location, and then pasting the note is cumbersome.  To simplify this
6617 process, you can use the following special command:
6619 @table @kbd
6620 @orgcmd{C-c C-w,org-refile}
6621 @vindex org-reverse-note-order
6622 @vindex org-refile-targets
6623 @vindex org-refile-use-outline-path
6624 @vindex org-outline-path-complete-in-steps
6625 @vindex org-refile-allow-creating-parent-nodes
6626 @vindex org-log-refile
6627 @vindex org-refile-use-cache
6628 Refile the entry or region at point.  This command offers possible locations
6629 for refiling the entry and lets you select one with completion.  The item (or
6630 all items in the region) is filed below the target heading as a subitem.
6631 Depending on @code{org-reverse-note-order}, it will be either the first or
6632 last subitem.@*
6633 By default, all level 1 headlines in the current buffer are considered to be
6634 targets, but you can have more complex definitions across a number of files.
6635 See the variable @code{org-refile-targets} for details.  If you would like to
6636 select a location via a file-path-like completion along the outline path, see
6637 the variables @code{org-refile-use-outline-path} and
6638 @code{org-outline-path-complete-in-steps}.  If you would like to be able to
6639 create new nodes as new parents for refiling on the fly, check the
6640 variable @code{org-refile-allow-creating-parent-nodes}.
6641 When the variable @code{org-log-refile}@footnote{with corresponding
6642 @code{#+STARTUP} keywords @code{logrefile}, @code{lognoterefile},
6643 and @code{nologrefile}} is set, a time stamp or a note will be
6644 recorded when an entry has been refiled.
6645 @orgkey{C-u C-c C-w}
6646 Use the refile interface to jump to a heading.
6647 @orgcmd{C-u C-u C-c C-w,org-refile-goto-last-stored}
6648 Jump to the location where @code{org-refile} last moved a tree to.
6649 @item C-2 C-c C-w
6650 Refile as the child of the item currently being clocked.
6651 @item C-0 C-c C-w @ @r{or} @ C-u C-u C-u C-c C-w
6653 @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}
6655 Clear the target cache.  Caching of refile targets can be turned on by
6656 setting @code{org-refile-use-cache}.  To make the command seen new possible
6657 targets, you have to clear the cache with this command.
6658 @end table
6660 @node Archiving,  , Refiling notes, Capture - Refile - Archive
6661 @section Archiving
6662 @cindex archiving
6664 When a project represented by a (sub)tree is finished, you may want
6665 to move the tree out of the way and to stop it from contributing to the
6666 agenda.  Archiving is important to keep your working files compact and global
6667 searches like the construction of agenda views fast.
6669 @table @kbd
6670 @orgcmd{C-c C-x C-a,org-archive-subtree-default}
6671 @vindex org-archive-default-command
6672 Archive the current entry using the command specified in the variable
6673 @code{org-archive-default-command}.
6674 @end table
6676 @menu
6677 * Moving subtrees::             Moving a tree to an archive file
6678 * Internal archiving::          Switch off a tree but keep it in the file
6679 @end menu
6681 @node Moving subtrees, Internal archiving, Archiving, Archiving
6682 @subsection Moving a tree to the archive file
6683 @cindex external archiving
6685 The most common archiving action is to move a project tree to another file,
6686 the archive file.
6688 @table @kbd
6689 @orgcmdkskc{C-c C-x C-s,C-c $,org-archive-subtree}
6690 @vindex org-archive-location
6691 Archive the subtree starting at the cursor position to the location
6692 given by @code{org-archive-location}.
6693 @orgkey{C-u C-c C-x C-s}
6694 Check if any direct children of the current headline could be moved to
6695 the archive.  To do this, each subtree is checked for open TODO entries.
6696 If none are found, the command offers to move it to the archive
6697 location.  If the cursor is @emph{not} on a headline when this command
6698 is invoked, the level 1 trees will be checked.
6699 @end table
6701 @cindex archive locations
6702 The default archive location is a file in the same directory as the
6703 current file, with the name derived by appending @file{_archive} to the
6704 current file name.  For information and examples on how to change this,
6705 see the documentation string of the variable
6706 @code{org-archive-location}.  There is also an in-buffer option for
6707 setting this variable, for example@footnote{For backward compatibility,
6708 the following also works: If there are several such lines in a file,
6709 each specifies the archive location for the text below it.  The first
6710 such line also applies to any text before its definition.  However,
6711 using this method is @emph{strongly} deprecated as it is incompatible
6712 with the outline structure of the document.  The correct method for
6713 setting multiple archive locations in a buffer is using properties.}:
6715 @cindex #+ARCHIVE
6716 @example
6717 #+ARCHIVE: %s_done::
6718 @end example
6720 @cindex property, ARCHIVE
6721 @noindent
6722 If you would like to have a special ARCHIVE location for a single entry
6723 or a (sub)tree, give the entry an @code{:ARCHIVE:} property with the
6724 location as the value (@pxref{Properties and Columns}).
6726 @vindex org-archive-save-context-info
6727 When a subtree is moved, it receives a number of special properties that
6728 record context information like the file from where the entry came, its
6729 outline path the archiving time etc.  Configure the variable
6730 @code{org-archive-save-context-info} to adjust the amount of information
6731 added.
6734 @node Internal archiving,  , Moving subtrees, Archiving
6735 @subsection Internal archiving
6737 If you want to just switch off (for agenda views) certain subtrees without
6738 moving them to a different file, you can use the @code{ARCHIVE tag}.
6740 A headline that is marked with the ARCHIVE tag (@pxref{Tags}) stays at
6741 its location in the outline tree, but behaves in the following way:
6742 @itemize @minus
6743 @item
6744 @vindex org-cycle-open-archived-trees
6745 It does not open when you attempt to do so with a visibility cycling
6746 command (@pxref{Visibility cycling}).  You can force cycling archived
6747 subtrees with @kbd{C-@key{TAB}}, or by setting the option
6748 @code{org-cycle-open-archived-trees}.  Also normal outline commands like
6749 @code{show-all} will open archived subtrees.
6750 @item
6751 @vindex org-sparse-tree-open-archived-trees
6752 During sparse tree construction (@pxref{Sparse trees}), matches in
6753 archived subtrees are not exposed, unless you configure the option
6754 @code{org-sparse-tree-open-archived-trees}.
6755 @item
6756 @vindex org-agenda-skip-archived-trees
6757 During agenda view construction (@pxref{Agenda Views}), the content of
6758 archived trees is ignored unless you configure the option
6759 @code{org-agenda-skip-archived-trees}, in which case these trees will always
6760 be included.  In the agenda you can press @kbd{v a} to get archives
6761 temporarily included.
6762 @item
6763 @vindex org-export-with-archived-trees
6764 Archived trees are not exported (@pxref{Exporting}), only the headline
6765 is.  Configure the details using the variable
6766 @code{org-export-with-archived-trees}.
6767 @item
6768 @vindex org-columns-skip-archived-trees
6769 Archived trees are excluded from column view unless the variable
6770 @code{org-columns-skip-archived-trees} is configured to @code{nil}.
6771 @end itemize
6773 The following commands help manage the ARCHIVE tag:
6775 @table @kbd
6776 @orgcmd{C-c C-x a,org-toggle-archive-tag}
6777 Toggle the ARCHIVE tag for the current headline.  When the tag is set,
6778 the headline changes to a shadowed face, and the subtree below it is
6779 hidden.
6780 @orgkey{C-u C-c C-x a}
6781 Check if any direct children of the current headline should be archived.
6782 To do this, each subtree is checked for open TODO entries.  If none are
6783 found, the command offers to set the ARCHIVE tag for the child.  If the
6784 cursor is @emph{not} on a headline when this command is invoked, the
6785 level 1 trees will be checked.
6786 @orgcmd{C-@kbd{TAB},org-force-cycle-archived}
6787 Cycle a tree even if it is tagged with ARCHIVE.
6788 @orgcmd{C-c C-x A,org-archive-to-archive-sibling}
6789 Move the current entry to the @emph{Archive Sibling}.  This is a sibling of
6790 the entry with the heading @samp{Archive} and the tag @samp{ARCHIVE}.  The
6791 entry becomes a child of that sibling and in this way retains a lot of its
6792 original context, including inherited tags and approximate position in the
6793 outline.
6794 @end table
6797 @node Agenda Views, Markup, Capture - Refile - Archive, Top
6798 @chapter Agenda views
6799 @cindex agenda views
6801 Due to the way Org works, TODO items, time-stamped items, and
6802 tagged headlines can be scattered throughout a file or even a number of
6803 files.  To get an overview of open action items, or of events that are
6804 important for a particular date, this information must be collected,
6805 sorted and displayed in an organized way.
6807 Org can select items based on various criteria and display them
6808 in a separate buffer.  Seven different view types are provided:
6810 @itemize @bullet
6811 @item
6812 an @emph{agenda} that is like a calendar and shows information
6813 for specific dates,
6814 @item
6815 a @emph{TODO list} that covers all unfinished
6816 action items,
6817 @item
6818 a @emph{match view}, showings headlines based on the tags, properties, and
6819 TODO state associated with them,
6820 @item
6821 a @emph{timeline view} that shows all events in a single Org file,
6822 in time-sorted view,
6823 @item
6824 a @emph{text search view} that shows all entries from multiple files
6825 that contain specified keywords,
6826 @item
6827 a @emph{stuck projects view} showing projects that currently don't move
6828 along, and
6829 @item
6830 @emph{custom views} that are special searches and combinations of different
6831 views.
6832 @end itemize
6834 @noindent
6835 The extracted information is displayed in a special @emph{agenda
6836 buffer}.  This buffer is read-only, but provides commands to visit the
6837 corresponding locations in the original Org files, and even to
6838 edit these files remotely.
6840 @vindex org-agenda-window-setup
6841 @vindex org-agenda-restore-windows-after-quit
6842 Two variables control how the agenda buffer is displayed and whether the
6843 window configuration is restored when the agenda exits:
6844 @code{org-agenda-window-setup} and
6845 @code{org-agenda-restore-windows-after-quit}.
6847 @menu
6848 * Agenda files::                Files being searched for agenda information
6849 * Agenda dispatcher::           Keyboard access to agenda views
6850 * Built-in agenda views::       What is available out of the box?
6851 * Presentation and sorting::    How agenda items are prepared for display
6852 * Agenda commands::             Remote editing of Org trees
6853 * Custom agenda views::         Defining special searches and views
6854 * Exporting Agenda Views::      Writing a view to a file
6855 * Agenda column view::          Using column view for collected entries
6856 @end menu
6858 @node Agenda files, Agenda dispatcher, Agenda Views, Agenda Views
6859 @section Agenda files
6860 @cindex agenda files
6861 @cindex files for agenda
6863 @vindex org-agenda-files
6864 The information to be shown is normally collected from all @emph{agenda
6865 files}, the files listed in the variable
6866 @code{org-agenda-files}@footnote{If the value of that variable is not a
6867 list, but a single file name, then the list of agenda files will be
6868 maintained in that external file.}. If a directory is part of this list,
6869 all files with the extension @file{.org} in this directory will be part
6870 of the list.
6872 Thus, even if you only work with a single Org file, that file should
6873 be put into the list@footnote{When using the dispatcher, pressing
6874 @kbd{<} before selecting a command will actually limit the command to
6875 the current file, and ignore @code{org-agenda-files} until the next
6876 dispatcher command.}.  You can customize @code{org-agenda-files}, but
6877 the easiest way to maintain it is through the following commands
6879 @cindex files, adding to agenda list
6880 @table @kbd
6881 @orgcmd{C-c [,org-agenda-to-front}
6882 Add current file to the list of agenda files.  The file is added to
6883 the front of the list.  If it was already in the list, it is moved to
6884 the front.  With a prefix argument, file is added/moved to the end.
6885 @orgcmd{C-c ],org-remove-file}
6886 Remove current file from the list of agenda files.
6887 @kindex C-,
6888 @orgcmd{C-',org-cycle-agenda-files}
6889 @itemx C-,
6890 Cycle through agenda file list, visiting one file after the other.
6891 @kindex M-x org-iswitchb
6892 @item M-x org-iswitchb
6893 Command to use an @code{iswitchb}-like interface to switch to and between Org
6894 buffers.
6895 @end table
6897 @noindent
6898 The Org menu contains the current list of files and can be used
6899 to visit any of them.
6901 If you would like to focus the agenda temporarily on a file not in
6902 this list, or on just one file in the list, or even on only a subtree in a
6903 file, then this can be done in different ways.  For a single agenda command,
6904 you may press @kbd{<} once or several times in the dispatcher
6905 (@pxref{Agenda dispatcher}).  To restrict the agenda scope for an
6906 extended period, use the following commands:
6908 @table @kbd
6909 @orgcmd{C-c C-x <,org-agenda-set-restriction-lock}
6910 Permanently restrict the agenda to the current subtree.  When with a
6911 prefix argument, or with the cursor before the first headline in a file,
6912 the agenda scope is set to the entire file.  This restriction remains in
6913 effect until removed with @kbd{C-c C-x >}, or by typing either @kbd{<}
6914 or @kbd{>} in the agenda dispatcher.  If there is a window displaying an
6915 agenda view, the new restriction takes effect immediately.
6916 @orgcmd{C-c C-x >,org-agenda-remove-restriction-lock}
6917 Remove the permanent restriction created by @kbd{C-c C-x <}.
6918 @end table
6920 @noindent
6921 When working with @file{speedbar.el}, you can use the following commands in
6922 the Speedbar frame:
6923 @table @kbd
6924 @orgcmdtkc{< @r{in the speedbar frame},<,org-speedbar-set-agenda-restriction}
6925 Permanently restrict the agenda to the item---either an Org file or a subtree
6926 in such a file---at the cursor in the Speedbar frame.
6927 If there is a window displaying an agenda view, the new restriction takes
6928 effect immediately.
6929 @orgcmdtkc{> @r{in the speedbar frame},>,org-agenda-remove-restriction-lock}
6930 Lift the restriction.
6931 @end table
6933 @node Agenda dispatcher, Built-in agenda views, Agenda files, Agenda Views
6934 @section The agenda dispatcher
6935 @cindex agenda dispatcher
6936 @cindex dispatching agenda commands
6937 The views are created through a dispatcher, which should be bound to a
6938 global key---for example @kbd{C-c a} (@pxref{Installation}).  In the
6939 following we will assume that @kbd{C-c a} is indeed how the dispatcher
6940 is accessed and list keyboard access to commands accordingly.  After
6941 pressing @kbd{C-c a}, an additional letter is required to execute a
6942 command.  The dispatcher offers the following default commands:
6943 @table @kbd
6944 @item a
6945 Create the calendar-like agenda (@pxref{Weekly/daily agenda}).
6946 @item t @r{/} T
6947 Create a list of all TODO items (@pxref{Global TODO list}).
6948 @item m @r{/} M
6949 Create a list of headlines matching a TAGS expression (@pxref{Matching
6950 tags and properties}).
6951 @item L
6952 Create the timeline view for the current buffer (@pxref{Timeline}).
6953 @item s
6954 Create a list of entries selected by a boolean expression of keywords
6955 and/or regular expressions that must or must not occur in the entry.
6956 @item /
6957 @vindex org-agenda-text-search-extra-files
6958 Search for a regular expression in all agenda files and additionally in
6959 the files listed in @code{org-agenda-text-search-extra-files}.  This
6960 uses the Emacs command @code{multi-occur}.  A prefix argument can be
6961 used to specify the number of context lines for each match, default is
6963 @item # @r{/} !
6964 Create a list of stuck projects (@pxref{Stuck projects}).
6965 @item <
6966 Restrict an agenda command to the current buffer@footnote{For backward
6967 compatibility, you can also press @kbd{1} to restrict to the current
6968 buffer.}.  After pressing @kbd{<}, you still need to press the character
6969 selecting the command.
6970 @item < <
6971 If there is an active region, restrict the following agenda command to
6972 the region.  Otherwise, restrict it to the current subtree@footnote{For
6973 backward compatibility, you can also press @kbd{0} to restrict to the
6974 current region/subtree.}.  After pressing @kbd{< <}, you still need to press the
6975 character selecting the command.
6976 @end table
6978 You can also define custom commands that will be accessible through the
6979 dispatcher, just like the default commands.  This includes the
6980 possibility to create extended agenda buffers that contain several
6981 blocks together, for example the weekly agenda, the global TODO list and
6982 a number of special tags matches.  @xref{Custom agenda views}.
6984 @node Built-in agenda views, Presentation and sorting, Agenda dispatcher, Agenda Views
6985 @section The built-in agenda views
6987 In this section we describe the built-in views.
6989 @menu
6990 * Weekly/daily agenda::         The calendar page with current tasks
6991 * Global TODO list::            All unfinished action items
6992 * Matching tags and properties::  Structured information with fine-tuned search
6993 * Timeline::                    Time-sorted view for single file
6994 * Search view::                 Find entries by searching for text
6995 * Stuck projects::              Find projects you need to review
6996 @end menu
6998 @node Weekly/daily agenda, Global TODO list, Built-in agenda views, Built-in agenda views
6999 @subsection The weekly/daily agenda
7000 @cindex agenda
7001 @cindex weekly agenda
7002 @cindex daily agenda
7004 The purpose of the weekly/daily @emph{agenda} is to act like a page of a
7005 paper agenda, showing all the tasks for the current week or day.
7007 @table @kbd
7008 @cindex org-agenda, command
7009 @orgcmd{C-c a a,org-agenda-list}
7010 @vindex org-agenda-ndays
7011 Compile an agenda for the current week from a list of Org files.  The agenda
7012 shows the entries for each day.  With a numeric prefix@footnote{For backward
7013 compatibility, the universal prefix @kbd{C-u} causes all TODO entries to be
7014 listed before the agenda.  This feature is deprecated, use the dedicated TODO
7015 list, or a block agenda instead (@pxref{Block agenda}).}  (like @kbd{C-u 2 1
7016 C-c a a}) you may set the number of days to be displayed (see also the
7017 variable @code{org-agenda-ndays})
7018 @end table
7020 Remote editing from the agenda buffer means, for example, that you can
7021 change the dates of deadlines and appointments from the agenda buffer.
7022 The commands available in the Agenda buffer are listed in @ref{Agenda
7023 commands}.
7025 @subsubheading Calendar/Diary integration
7026 @cindex calendar integration
7027 @cindex diary integration
7029 Emacs contains the calendar and diary by Edward M. Reingold.  The
7030 calendar displays a three-month calendar with holidays from different
7031 countries and cultures.  The diary allows you to keep track of
7032 anniversaries, lunar phases, sunrise/set, recurrent appointments
7033 (weekly, monthly) and more.  In this way, it is quite complementary to
7034 Org.  It can be very useful to combine output from Org with
7035 the diary.
7037 In order to include entries from the Emacs diary into Org-mode's
7038 agenda, you only need to customize the variable
7040 @lisp
7041 (setq org-agenda-include-diary t)
7042 @end lisp
7044 @noindent After that, everything will happen automatically.  All diary
7045 entries including holidays, anniversaries, etc., will be included in the
7046 agenda buffer created by Org-mode.  @key{SPC}, @key{TAB}, and
7047 @key{RET} can be used from the agenda buffer to jump to the diary
7048 file in order to edit existing diary entries.  The @kbd{i} command to
7049 insert new entries for the current date works in the agenda buffer, as
7050 well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
7051 Sunrise/Sunset times, show lunar phases and to convert to other
7052 calendars, respectively.  @kbd{c} can be used to switch back and forth
7053 between calendar and agenda.
7055 If you are using the diary only for sexp entries and holidays, it is
7056 faster to not use the above setting, but instead to copy or even move
7057 the entries into an Org file. Org-mode evaluates diary-style sexp
7058 entries, and does it faster because there is no overhead for first
7059 creating the diary display.  Note that the sexp entries must start at
7060 the left margin, no whitespace is allowed before them.  For example,
7061 the following segment of an Org file will be processed and entries
7062 will be made in the agenda:
7064 @example
7065 * Birthdays and similar stuff
7066 #+CATEGORY: Holiday
7067 %%(org-calendar-holiday)   ; special function for holiday names
7068 #+CATEGORY: Ann
7069 %%(diary-anniversary  5 14 1956)@footnote{Note that the order of the arguments (month, day, year) depends on the setting of @code{calendar-date-style}.} Arthur Dent is %d years old
7070 %%(diary-anniversary 10  2 1869) Mahatma Gandhi would be %d years old
7071 @end example
7073 @subsubheading Anniversaries from BBDB
7074 @cindex BBDB, anniversaries
7075 @cindex anniversaries, from BBDB
7077 If you are using the Big Brothers Database to store your contacts, you will
7078 very likely prefer to store anniversaries in BBDB rather than in a
7079 separate Org or diary file.  Org supports this and will show BBDB
7080 anniversaries as part of the agenda.  All you need to do is to add the
7081 following to one your your agenda files:
7083 @example
7084 * Anniversaries
7085   :PROPERTIES:
7086   :CATEGORY: Anniv
7087   :END:
7088 %%(org-bbdb-anniversaries)
7089 @end example
7091 You can then go ahead and define anniversaries for a BBDB record.  Basically,
7092 you need to press @kbd{C-o anniversary @key{RET}} with the cursor in a BBDB
7093 record and then add the date in the format @code{YYYY-MM-DD}, followed by a
7094 space and the class of the anniversary (@samp{birthday} or @samp{wedding}, or
7095 a format string).  If you omit the class, it will default to @samp{birthday}.
7096 Here are a few examples, the header for the file @file{org-bbdb.el} contains
7097 more detailed information.
7099 @example
7100 1973-06-22
7101 1955-08-02 wedding
7102 2008-04-14 %s released version 6.01 of org-mode, %d years ago
7103 @end example
7105 After a change to BBDB, or for the first agenda display during an Emacs
7106 session, the agenda display will suffer a short delay as Org updates its
7107 hash with anniversaries.  However, from then on things will be very fast---much
7108 faster in fact than a long list of @samp{%%(diary-anniversary)} entries
7109 in an Org or Diary file.
7111 @subsubheading Appointment reminders
7112 @cindex @file{appt.el}
7113 @cindex appointment reminders
7115 Org can interact with Emacs appointments notification facility.  To add all
7116 the appointments of your agenda files, use the command
7117 @code{org-agenda-to-appt}.  This command also lets you filter through the
7118 list of your appointments and add only those belonging to a specific category
7119 or matching a regular expression. See the docstring for details.
7121 @node Global TODO list, Matching tags and properties, Weekly/daily agenda, Built-in agenda views
7122 @subsection The global TODO list
7123 @cindex global TODO list
7124 @cindex TODO list, global
7126 The global TODO list contains all unfinished TODO items formatted and
7127 collected into a single place.
7129 @table @kbd
7130 @orgcmd{C-c a t,org-todo-list}
7131 Show the global TODO list.  This collects the TODO items from all agenda
7132 files (@pxref{Agenda Views}) into a single buffer.  By default, this lists
7133 items with a state the is not a DONE state.  The buffer is in
7134 @code{agenda-mode}, so there are commands to examine and manipulate the TODO
7135 entries directly from that buffer (@pxref{Agenda commands}).
7136 @orgcmd{C-c a T,org-todo-list}
7137 @cindex TODO keyword matching
7138 @vindex org-todo-keywords
7139 Like the above, but allows selection of a specific TODO keyword.  You can
7140 also do this by specifying a prefix argument to @kbd{C-c a t}.  You are
7141 prompted for a keyword, and you may also specify several keywords by
7142 separating them with @samp{|} as the boolean OR operator.  With a numeric
7143 prefix, the nth keyword in @code{org-todo-keywords} is selected.
7144 @kindex r
7145 The @kbd{r} key in the agenda buffer regenerates it, and you can give
7146 a prefix argument to this command to change the selected TODO keyword,
7147 for example @kbd{3 r}.  If you often need a search for a specific
7148 keyword, define a custom command for it (@pxref{Agenda dispatcher}).@*
7149 Matching specific TODO keywords can also be done as part of a tags
7150 search (@pxref{Tag searches}).
7151 @end table
7153 Remote editing of TODO items means that you can change the state of a
7154 TODO entry with a single key press.  The commands available in the
7155 TODO list are described in @ref{Agenda commands}.
7157 @cindex sublevels, inclusion into TODO list
7158 Normally the global TODO list simply shows all headlines with TODO
7159 keywords.  This list can become very long.  There are two ways to keep
7160 it more compact:
7161 @itemize @minus
7162 @item
7163 @vindex org-agenda-todo-ignore-scheduled
7164 @vindex org-agenda-todo-ignore-deadlines
7165 @vindex org-agenda-todo-ignore-with-date
7166 Some people view a TODO item that has been @emph{scheduled} for execution or
7167 have a @emph{deadline} (@pxref{Timestamps}) as no longer @emph{open}.
7168 Configure the variables @code{org-agenda-todo-ignore-scheduled},
7169 @code{org-agenda-todo-ignore-deadlines}, and/or
7170 @code{org-agenda-todo-ignore-with-date} to exclude such items from the
7171 global TODO list.
7172 @item
7173 @vindex org-agenda-todo-list-sublevels
7174 TODO items may have sublevels to break up the task into subtasks.  In
7175 such cases it may be enough to list only the highest level TODO headline
7176 and omit the sublevels from the global list.  Configure the variable
7177 @code{org-agenda-todo-list-sublevels} to get this behavior.
7178 @end itemize
7180 @node Matching tags and properties, Timeline, Global TODO list, Built-in agenda views
7181 @subsection Matching tags and properties
7182 @cindex matching, of tags
7183 @cindex matching, of properties
7184 @cindex tags view
7185 @cindex match view
7187 If headlines in the agenda files are marked with @emph{tags} (@pxref{Tags}),
7188 or have properties (@pxref{Properties and Columns}), you can select headlines
7189 based on this metadata and collect them into an agenda buffer.  The match
7190 syntax described here also applies when creating sparse trees with @kbd{C-c /
7193 @table @kbd
7194 @orgcmd{C-c a m,org-tags-view}
7195 Produce a list of all headlines that match a given set of tags.  The
7196 command prompts for a selection criterion, which is a boolean logic
7197 expression with tags, like @samp{+work+urgent-withboss} or
7198 @samp{work|home} (@pxref{Tags}).  If you often need a specific search,
7199 define a custom command for it (@pxref{Agenda dispatcher}).
7200 @orgcmd{C-c a M,org-tags-view}
7201 @vindex org-tags-match-list-sublevels
7202 @vindex org-agenda-tags-todo-honor-ignore-options
7203 Like @kbd{C-c a m}, but only select headlines that are also TODO items in a
7204 not-DONE state and force checking subitems (see variable
7205 @code{org-tags-match-list-sublevels}).  To exclude scheduled/deadline items,
7206 see the variable @code{org-agenda-tags-todo-honor-ignore-options}.  Matching
7207 specific TODO keywords together with a tags match is also possible, see
7208 @ref{Tag searches}.
7209 @end table
7211 The commands available in the tags list are described in @ref{Agenda
7212 commands}.
7214 @subsubheading Match syntax
7216 @cindex Boolean logic, for tag/property searches
7217 A search string can use Boolean operators @samp{&} for AND and @samp{|} for
7218 OR.  @samp{&} binds more strongly than @samp{|}.  Parentheses are currently
7219 not implemented.  Each element in the search is either a tag, a regular
7220 expression matching tags, or an expression like @code{PROPERTY OPERATOR
7221 VALUE} with a comparison operator, accessing a property value.  Each element
7222 may be preceded by @samp{-}, to select against it, and @samp{+} is syntactic
7223 sugar for positive selection.  The AND operator @samp{&} is optional when
7224 @samp{+} or @samp{-} is present.  Here are some examples, using only tags.
7226 @table @samp
7227 @item +work-boss
7228 Select headlines tagged @samp{:work:}, but discard those also tagged
7229 @samp{:boss:}.
7230 @item work|laptop
7231 Selects lines tagged @samp{:work:} or @samp{:laptop:}.
7232 @item work|laptop+night
7233 Like before, but require the @samp{:laptop:} lines to be tagged also
7234 @samp{:night:}.
7235 @end table
7237 @cindex regular expressions, with tags search
7238 Instead of a tag, you may also specify a regular expression enclosed in curly
7239 braces.  For example,
7240 @samp{work+@{^boss.*@}} matches headlines that contain the tag
7241 @samp{:work:} and any tag @i{starting} with @samp{boss}.
7243 @cindex TODO keyword matching, with tags search
7244 @cindex level, require for tags/property match
7245 @cindex category, require for tags/property match
7246 @vindex org-odd-levels-only
7247 You may also test for properties (@pxref{Properties and Columns}) at the same
7248 time as matching tags.  The properties may be real properties, or special
7249 properties that represent other metadata (@pxref{Special properties}).  For
7250 example, the ``property'' @code{TODO} represents the TODO keyword of the
7251 entry.  Or, the ``property'' @code{LEVEL} represents the level of an entry.
7252 So a search @samp{+LEVEL=3+boss-TODO="DONE"} lists all level three headlines
7253 that have the tag @samp{boss} and are @emph{not} marked with the TODO keyword
7254 DONE.  In buffers with @code{org-odd-levels-only} set, @samp{LEVEL} does not
7255 count the number of stars, but @samp{LEVEL=2} will correspond to 3 stars etc.
7257 Here are more examples:
7258 @table @samp
7259 @item work+TODO="WAITING"
7260 Select @samp{:work:}-tagged TODO lines with the specific TODO
7261 keyword @samp{WAITING}.
7262 @item work+TODO="WAITING"|home+TODO="WAITING"
7263 Waiting tasks both at work and at home.
7264 @end table
7266 When matching properties, a number of different operators can be used to test
7267 the value of a property.  Here is a complex example:
7269 @example
7270 +work-boss+PRIORITY="A"+Coffee="unlimited"+Effort<2         \
7271          +With=@{Sarah\|Denny@}+SCHEDULED>="<2008-10-11>"
7272 @end example
7274 @noindent
7275 The type of comparison will depend on how the comparison value is written:
7276 @itemize @minus
7277 @item
7278 If the comparison value is a plain number, a numerical comparison is done,
7279 and the allowed operators are @samp{<}, @samp{=}, @samp{>}, @samp{<=},
7280 @samp{>=}, and @samp{<>}.
7281 @item
7282 If the comparison value is enclosed in double-quotes,
7283 a string comparison is done, and the same operators are allowed.
7284 @item
7285 If the comparison value is enclosed in double-quotes @emph{and} angular
7286 brackets (like @samp{DEADLINE<="<2008-12-24 18:30>"}), both values are
7287 assumed to be date/time specifications in the standard Org way, and the
7288 comparison will be done accordingly.  Special values that will be recognized
7289 are @code{"<now>"} for now (including time), and @code{"<today>"}, and
7290 @code{"<tomorrow>"} for these days at 0:00 hours, i.e. without a time
7291 specification.  Also strings like @code{"<+5d>"} or @code{"<-2m>"} with units
7292 @code{d}, @code{w}, @code{m}, and @code{y} for day, week, month, and year,
7293 respectively, can be used.
7294 @item
7295 If the comparison value is enclosed
7296 in curly braces, a regexp match is performed, with @samp{=} meaning that the
7297 regexp matches the property value, and @samp{<>} meaning that it does not
7298 match.
7299 @end itemize
7301 So the search string in the example finds entries tagged @samp{:work:} but
7302 not @samp{:boss:}, which also have a priority value @samp{A}, a
7303 @samp{:Coffee:} property with the value @samp{unlimited}, an @samp{Effort}
7304 property that is numerically smaller than 2, a @samp{:With:} property that is
7305 matched by the regular expression @samp{Sarah\|Denny}, and that are scheduled
7306 on or after October 11, 2008.
7308 Accessing TODO, LEVEL, and CATEGORY during a search is fast.  Accessing any
7309 other properties will slow down the search.  However, once you have paid the
7310 price by accessing one property, testing additional properties is cheap
7311 again.
7313 You can configure Org-mode to use property inheritance during a search, but
7314 beware that this can slow down searches considerably.  See @ref{Property
7315 inheritance}, for details.
7317 For backward compatibility, and also for typing speed, there is also a
7318 different way to test TODO states in a search.  For this, terminate the
7319 tags/property part of the search string (which may include several terms
7320 connected with @samp{|}) with a @samp{/} and then specify a Boolean
7321 expression just for TODO keywords.  The syntax is then similar to that for
7322 tags, but should be applied with care: for example, a positive selection on
7323 several TODO keywords cannot meaningfully be combined with boolean AND.
7324 However, @emph{negative selection} combined with AND can be meaningful.  To
7325 make sure that only lines are checked that actually have any TODO keyword
7326 (resulting in a speed-up), use @kbd{C-c a M}, or equivalently start the TODO
7327 part after the slash with @samp{!}.  Using @kbd{C-c a M} or @samp{/!} will
7328 not match TODO keywords in a DONE state.  Examples:
7330 @table @samp
7331 @item work/WAITING
7332 Same as @samp{work+TODO="WAITING"}
7333 @item work/!-WAITING-NEXT
7334 Select @samp{:work:}-tagged TODO lines that are neither @samp{WAITING}
7335 nor @samp{NEXT}
7336 @item work/!+WAITING|+NEXT
7337 Select @samp{:work:}-tagged TODO lines that are either @samp{WAITING} or
7338 @samp{NEXT}.
7339 @end table
7341 @node Timeline, Search view, Matching tags and properties, Built-in agenda views
7342 @subsection Timeline for a single file
7343 @cindex timeline, single file
7344 @cindex time-sorted view
7346 The timeline summarizes all time-stamped items from a single Org-mode
7347 file in a @emph{time-sorted view}.  The main purpose of this command is
7348 to give an overview over events in a project.
7350 @table @kbd
7351 @orgcmd{C-c a L,org-timeline}
7352 Show a time-sorted view of the Org file, with all time-stamped items.
7353 When called with a @kbd{C-u} prefix, all unfinished TODO entries
7354 (scheduled or not) are also listed under the current date.
7355 @end table
7357 @noindent
7358 The commands available in the timeline buffer are listed in
7359 @ref{Agenda commands}.
7361 @node Search view, Stuck projects, Timeline, Built-in agenda views
7362 @subsection Search view
7363 @cindex search view
7364 @cindex text search
7365 @cindex searching, for text
7367 This agenda view is a general text search facility for Org-mode entries.
7368 It is particularly useful to find notes.
7370 @table @kbd
7371 @orgcmd{C-c a s,org-search-view}
7372 This is a special search that lets you select entries by matching a substring
7373 or specific words using a boolean logic.
7374 @end table
7375 For example, the search string @samp{computer equipment} will find entries
7376 that contain @samp{computer equipment} as a substring.  If the two words are
7377 separated by more space or a line break, the search will still match.
7378 Search view can also search for specific keywords in the entry, using Boolean
7379 logic.  The search string @samp{+computer +wifi -ethernet -@{8\.11[bg]@}}
7380 will search for note entries that contain the keywords @code{computer}
7381 and @code{wifi}, but not the keyword @code{ethernet}, and which are also
7382 not matched by the regular expression @code{8\.11[bg]}, meaning to
7383 exclude both 8.11b and 8.11g.  The first @samp{+} is necessary to turn on
7384 word search, other @samp{+} characters are optional.  For more details, see
7385 the docstring of the command @code{org-search-view}.
7387 @vindex org-agenda-text-search-extra-files
7388 Note that in addition to the agenda files, this command will also search
7389 the files listed in @code{org-agenda-text-search-extra-files}.
7391 @node Stuck projects,  , Search view, Built-in agenda views
7392 @subsection Stuck projects
7394 If you are following a system like David Allen's GTD to organize your
7395 work, one of the ``duties'' you have is a regular review to make sure
7396 that all projects move along.  A @emph{stuck} project is a project that
7397 has no defined next actions, so it will never show up in the TODO lists
7398 Org-mode produces.  During the review, you need to identify such
7399 projects and define next actions for them.
7401 @table @kbd
7402 @orgcmd{C-c a #,org-agenda-list-stuck-projects}
7403 List projects that are stuck.
7404 @kindex C-c a !
7405 @item C-c a !
7406 @vindex org-stuck-projects
7407 Customize the variable @code{org-stuck-projects} to define what a stuck
7408 project is and how to find it.
7409 @end table
7411 You almost certainly will have to configure this view before it will
7412 work for you.  The built-in default assumes that all your projects are
7413 level-2 headlines, and that a project is not stuck if it has at least
7414 one entry marked with a TODO keyword TODO or NEXT or NEXTACTION.
7416 Let's assume that you, in your own way of using Org-mode, identify
7417 projects with a tag PROJECT, and that you use a TODO keyword MAYBE to
7418 indicate a project that should not be considered yet.  Let's further
7419 assume that the TODO keyword DONE marks finished projects, and that NEXT
7420 and TODO indicate next actions.  The tag @@SHOP indicates shopping and
7421 is a next action even without the NEXT tag.  Finally, if the project
7422 contains the special word IGNORE anywhere, it should not be listed
7423 either.  In this case you would start by identifying eligible projects
7424 with a tags/todo match@footnote{@xref{Tag searches}.}
7425 @samp{+PROJECT/-MAYBE-DONE}, and then check for TODO, NEXT, @@SHOP, and
7426 IGNORE in the subtree to identify projects that are not stuck.  The
7427 correct customization for this is
7429 @lisp
7430 (setq org-stuck-projects
7431       '("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@@SHOP")
7432                                "\\<IGNORE\\>"))
7433 @end lisp
7435 Note that if a project is identified as non-stuck, the subtree of this entry
7436 will still be searched for stuck projects.
7438 @node Presentation and sorting, Agenda commands, Built-in agenda views, Agenda Views
7439 @section Presentation and sorting
7440 @cindex presentation, of agenda items
7442 @vindex org-agenda-prefix-format
7443 Before displaying items in an agenda view, Org-mode visually prepares
7444 the items and sorts them.  Each item occupies a single line.  The line
7445 starts with a @emph{prefix} that contains the @emph{category}
7446 (@pxref{Categories}) of the item and other important information.  You can
7447 customize the prefix using the option @code{org-agenda-prefix-format}.
7448 The prefix is followed by a cleaned-up version of the outline headline
7449 associated with the item.
7451 @menu
7452 * Categories::                  Not all tasks are equal
7453 * Time-of-day specifications::  How the agenda knows the time
7454 * Sorting of agenda items::     The order of things
7455 @end menu
7457 @node Categories, Time-of-day specifications, Presentation and sorting, Presentation and sorting
7458 @subsection Categories
7460 @cindex category
7461 @cindex #+CATEGORY
7462 The category is a broad label assigned to each agenda item.  By default,
7463 the category is simply derived from the file name, but you can also
7464 specify it with a special line in the buffer, like this@footnote{For
7465 backward compatibility, the following also works: if there are several
7466 such lines in a file, each specifies the category for the text below it.
7467 The first category also applies to any text before the first CATEGORY
7468 line.  However, using this method is @emph{strongly} deprecated as it is
7469 incompatible with the outline structure of the document.  The correct
7470 method for setting multiple categories in a buffer is using a
7471 property.}:
7473 @example
7474 #+CATEGORY: Thesis
7475 @end example
7477 @noindent
7478 @cindex property, CATEGORY
7479 If you would like to have a special CATEGORY for a single entry or a
7480 (sub)tree, give the entry a @code{:CATEGORY:} property with the
7481 special category you want to apply as the value.
7483 @noindent
7484 The display in the agenda buffer looks best if the category is not
7485 longer than 10 characters.
7487 @noindent
7488 You can set up icons for category by customizing the
7489 @code{org-agenda-category-icon-alist} variable.
7491 @node Time-of-day specifications, Sorting of agenda items, Categories, Presentation and sorting
7492 @subsection Time-of-day specifications
7493 @cindex time-of-day specification
7495 Org-mode checks each agenda item for a time-of-day specification.  The
7496 time can be part of the timestamp that triggered inclusion into the
7497 agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}.  Time
7498 ranges can be specified with two timestamps, like
7500 @w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
7502 In the headline of the entry itself, a time(range) may also appear as
7503 plain text (like @samp{12:45} or a @samp{8:30-1pm}).  If the agenda
7504 integrates the Emacs diary (@pxref{Weekly/daily agenda}), time
7505 specifications in diary entries are recognized as well.
7507 For agenda display, Org-mode extracts the time and displays it in a
7508 standard 24 hour format as part of the prefix.  The example times in
7509 the previous paragraphs would end up in the agenda like this:
7511 @example
7512     8:30-13:00 Arthur Dent lies in front of the bulldozer
7513    12:45...... Ford Prefect arrives and takes Arthur to the pub
7514    19:00...... The Vogon reads his poem
7515    20:30-22:15 Marvin escorts the Hitchhikers to the bridge
7516 @end example
7518 @cindex time grid
7519 If the agenda is in single-day mode, or for the display of today, the
7520 timed entries are embedded in a time grid, like
7522 @example
7523     8:00...... ------------------
7524     8:30-13:00 Arthur Dent lies in front of the bulldozer
7525    10:00...... ------------------
7526    12:00...... ------------------
7527    12:45...... Ford Prefect arrives and takes Arthur to the pub
7528    14:00...... ------------------
7529    16:00...... ------------------
7530    18:00...... ------------------
7531    19:00...... The Vogon reads his poem
7532    20:00...... ------------------
7533    20:30-22:15 Marvin escorts the Hitchhikers to the bridge
7534 @end example
7536 @vindex org-agenda-use-time-grid
7537 @vindex org-agenda-time-grid
7538 The time grid can be turned on and off with the variable
7539 @code{org-agenda-use-time-grid}, and can be configured with
7540 @code{org-agenda-time-grid}.
7542 @node Sorting of agenda items,  , Time-of-day specifications, Presentation and sorting
7543 @subsection Sorting of agenda items
7544 @cindex sorting, of agenda items
7545 @cindex priorities, of agenda items
7546 Before being inserted into a view, the items are sorted.  How this is
7547 done depends on the type of view.
7548 @itemize @bullet
7549 @item
7550 @vindex org-agenda-files
7551 For the daily/weekly agenda, the items for each day are sorted.  The
7552 default order is to first collect all items containing an explicit
7553 time-of-day specification.  These entries will be shown at the beginning
7554 of the list, as a @emph{schedule} for the day.  After that, items remain
7555 grouped in categories, in the sequence given by @code{org-agenda-files}.
7556 Within each category, items are sorted by priority (@pxref{Priorities}),
7557 which is composed of the base priority (2000 for priority @samp{A}, 1000
7558 for @samp{B}, and 0 for @samp{C}), plus additional increments for
7559 overdue scheduled or deadline items.
7560 @item
7561 For the TODO list, items remain in the order of categories, but within
7562 each category, sorting takes place according to priority
7563 (@pxref{Priorities}).  The priority used for sorting derives from the
7564 priority cookie, with additions depending on how close an item is to its due
7565 or scheduled date.
7566 @item
7567 For tags matches, items are not sorted at all, but just appear in the
7568 sequence in which they are found in the agenda files.
7569 @end itemize
7571 @vindex org-agenda-sorting-strategy
7572 Sorting can be customized using the variable
7573 @code{org-agenda-sorting-strategy}, and may also include criteria based on
7574 the estimated effort of an entry (@pxref{Effort estimates}).
7576 @node Agenda commands, Custom agenda views, Presentation and sorting, Agenda Views
7577 @section Commands in the agenda buffer
7578 @cindex commands, in agenda buffer
7580 Entries in the agenda buffer are linked back to the Org file or diary
7581 file where they originate.  You are not allowed to edit the agenda
7582 buffer itself, but commands are provided to show and jump to the
7583 original entry location, and to edit the Org files ``remotely'' from
7584 the agenda buffer.  In this way, all information is stored only once,
7585 removing the risk that your agenda and note files may diverge.
7587 Some commands can be executed with mouse clicks on agenda lines.  For
7588 the other commands, the cursor needs to be in the desired line.
7590 @table @kbd
7591 @tsubheading{Motion}
7592 @cindex motion commands in agenda
7593 @orgcmd{n,org-agenda-next-line}
7594 Next line (same as @key{up} and @kbd{C-p}).
7595 @orgcmd{p,org-agenda-previous-line}
7596 Previous line (same as @key{down} and @kbd{C-n}).
7597 @tsubheading{View/Go to Org file}
7598 @orgcmdkkc{@key{SPC},mouse-3,org-agenda-show-and-scroll-up}
7599 Display the original location of the item in another window.
7600 With prefix arg, make sure that the entire entry is made visible in the
7601 outline, not only the heading.
7603 @orgcmd{L,org-agenda-recenter}
7604 Display original location and recenter that window.
7606 @orgcmdkkc{@key{TAB},mouse-2,org-agenda-goto}
7607 Go to the original location of the item in another window.
7609 @orgcmd{@key{RET},org-agenda-switch-to}
7610 Go to the original location of the item and delete other windows.
7612 @orgcmd{F,org-agenda-follow-mode}
7613 @vindex org-agenda-start-with-follow-mode
7614 Toggle Follow mode.  In Follow mode, as you move the cursor through
7615 the agenda buffer, the other window always shows the corresponding
7616 location in the Org file.  The initial setting for this mode in new
7617 agenda buffers can be set with the variable
7618 @code{org-agenda-start-with-follow-mode}.
7620 @orgcmd{C-c C-x b,org-agenda-tree-to-indirect-buffer}
7621 Display the entire subtree of the current item in an indirect buffer.  With a
7622 numeric prefix argument N, go up to level N and then take that tree.  If N is
7623 negative, go up that many levels.  With a @kbd{C-u} prefix, do not remove the
7624 previously used indirect buffer.
7626 @orgcmd{C-c C-o,org-agenda-open-link}
7627 Follow a link in the entry.  This will offer a selection of any links in the
7628 text belonging to the referenced Org node.  If there is only one link, it
7629 will be followed without a selection prompt.
7631 @tsubheading{Change display}
7632 @cindex display changing, in agenda
7633 @kindex o
7634 @item o
7635 Delete other windows.
7637 @c @kindex v d
7638 @c @kindex d
7639 @c @kindex v w
7640 @c @kindex w
7641 @c @kindex v m
7642 @c @kindex v y
7643 @c @item v d @ @r{or short} @ d
7644 @c @itemx v w @ @r{or short} @ w
7645 @c @itemx v m
7646 @c @itemx v y
7647 @orgcmdkskc{v d,d,org-aganda-day-view}
7648 @xorgcmdkskc{v w,w,org-aganda-day-view}
7649 @xorgcmd{v m,org-agenda-month-view}
7650 @xorgcmd{v y,org-agenda-month-year}
7651 Switch to day/week/month/year view.  When switching to day or week view,
7652 this setting becomes the default for subsequent agenda commands.  Since
7653 month and year views are slow to create, they do not become the default.
7654 A numeric prefix argument may be used to jump directly to a specific day
7655 of the year, ISO week, month, or year, respectively.  For example,
7656 @kbd{32 d} jumps to February 1st, @kbd{9 w} to ISO week number 9.  When
7657 setting day, week, or month view, a year may be encoded in the prefix
7658 argument as well.  For example, @kbd{200712 w} will jump to week 12 in
7659 2007.  If such a year specification has only one or two digits, it will
7660 be mapped to the interval 1938-2037.
7662 @orgcmd{f,org-agenda-later}
7663 @vindex org-agenda-ndays
7664 Go forward in time to display the following @code{org-agenda-ndays} days.
7665 For example, if the display covers a week, switch to the following week.
7666 With prefix arg, go forward that many times @code{org-agenda-ndays} days.
7668 @orgcmd{b,org-agenda-earlier}
7669 Go backward in time to display earlier dates.
7671 @orgcmd{.,org-agenda-goto-today}
7672 Go to today.
7674 @orgcmd{j,org-agenda-goto-date}
7675 Prompt for a date and go there.
7677 @orgcmd{J,org-agenda-clock-goto}
7678 Go to the currently clocked-in task @i{in the agenda buffer}.
7680 @orgcmd{D,org-agenda-toggle-diary}
7681 Toggle the inclusion of diary entries.  See @ref{Weekly/daily agenda}.
7683 @orgcmdkskc{v l,l,org-agenda-log-mode}
7684 @kindex v L
7685 @vindex org-log-done
7686 @vindex org-agenda-log-mode-items
7687 Toggle Logbook mode.  In Logbook mode, entries that were marked DONE while
7688 logging was on (variable @code{org-log-done}) are shown in the agenda, as are
7689 entries that have been clocked on that day.  You can configure the entry
7690 types that should be included in log mode using the variable
7691 @code{org-agenda-log-mode-items}.  When called with a @kbd{C-u} prefix, show
7692 all possible logbook entries, including state changes.  When called with two
7693 prefix args @kbd{C-u C-u}, show only logging information, nothing else.
7694 @kbd{v L} is equivalent to @kbd{C-u v l}.
7696 @orgcmdkskc{v [,[,org-agenda-manipulate-query-add}
7697 Include inactive timestamps into the current view.  Only for weekly/daily
7698 agenda and timeline views.
7700 @orgcmd{v a,org-agenda-archives-mode}
7701 @xorgcmd{v A,org-agenda-archives-mode 'files}
7702 Toggle Archives mode.  In Archives mode, trees that are marked
7703 @code{ARCHIVED} are also scanned when producing the agenda.  When you use the
7704 capital @kbd{A}, even all archive files are included.  To exit archives mode,
7705 press @kbd{v a} again.
7707 @orgcmdkskc{v R,R,org-agenda-clockreport-mode}
7708 @vindex org-agenda-start-with-clockreport-mode
7709 Toggle Clockreport mode.  In Clockreport mode, the daily/weekly agenda will
7710 always show a table with the clocked times for the timespan and file scope
7711 covered by the current agenda view.  The initial setting for this mode in new
7712 agenda buffers can be set with the variable
7713 @code{org-agenda-start-with-clockreport-mode}.  By using a prefix argument
7714 when toggling this mode (i.e. @kbd{C-u R}), the clock table will not show
7715 contributions from entries that are hidden by agenda filtering@footnote{Only
7716 tags filtering will be respected here, effort filtering is ignored.}.
7718 @orgcmdkskc{v E,E,org-agenda-entry-text-mode}
7719 @vindex org-agenda-start-with-entry-text-mode
7720 @vindex org-agenda-entry-text-maxlines
7721 Toggle entry text mode.  In entry text mode, a number of lines from the Org
7722 outline node referenced by an agenda line will be displayed below the line.
7723 The maximum number of lines is given by the variable
7724 @code{org-agenda-entry-text-maxlines}.  Calling this command with a numeric
7725 prefix argument will temporarily modify that number to the prefix value.
7727 @orgcmd{G,org-agenda-toggle-time-grid}
7728 @vindex org-agenda-use-time-grid
7729 @vindex org-agenda-time-grid
7730 Toggle the time grid on and off.  See also the variables
7731 @code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
7733 @orgcmd{r,org-agenda-rodo}
7734 Recreate the agenda buffer, for example to reflect the changes after
7735 modification of the timestamps of items with @kbd{S-@key{left}} and
7736 @kbd{S-@key{right}}.  When the buffer is the global TODO list, a prefix
7737 argument is interpreted to create a selective list for a specific TODO
7738 keyword.
7739 @orgcmd{g,org-agenda-rodo}
7740 Same as @kbd{r}.
7742 @orgcmdkskc{C-x C-s,s,org-save-all-org-buffers}
7743 Save all Org buffers in the current Emacs session, and also the locations of
7744 IDs.
7746 @orgcmd{C-c C-x C-c,org-agenda-columns}
7747 @vindex org-columns-default-format
7748 Invoke column view (@pxref{Column view}) in the agenda buffer.  The column
7749 view format is taken from the entry at point, or (if there is no entry at
7750 point), from the first entry in the agenda view.  So whatever the format for
7751 that entry would be in the original buffer (taken from a property, from a
7752 @code{#+COLUMNS} line, or from the default variable
7753 @code{org-columns-default-format}), will be used in the agenda.
7755 @orgcmd{C-c C-x >,org-agenda-remove-restriction-lock}
7756 Remove the restriction lock on the agenda, if it is currently restricted to a
7757 file or subtree (@pxref{Agenda files}).
7759 @tsubheading{Secondary filtering and query editing}
7760 @cindex filtering, by tag and effort, in agenda
7761 @cindex tag filtering, in agenda
7762 @cindex effort filtering, in agenda
7763 @cindex query editing, in agenda
7765 @orgcmd{/,org-agenda-filter-by-tag}
7766 @vindex org-agenda-filter-preset
7767 Filter the current agenda view with respect to a tag and/or effort estimates.
7768 The difference between this and a custom agenda command is that filtering is
7769 very fast, so that you can switch quickly between different filters without
7770 having to recreate the agenda@footnote{Custom commands can preset a filter by
7771 binding the variable @code{org-agenda-filter-preset} as an option.  This
7772 filter will then be applied to the view and persist as a basic filter through
7773 refreshes and more secondary filtering.  The filter is a global property of
7774 the entire agenda view - in a block agenda, you should only set this in the
7775 global options section, not in the section of an individual block.}
7777 You will be prompted for a tag selection letter, SPC will mean any tag at
7778 all.  Pressing @key{TAB} at that prompt will offer use completion to select a
7779 tag (including any tags that do not have a selection character).  The command
7780 then hides all entries that do not contain or inherit this tag.  When called
7781 with prefix arg, remove the entries that @emph{do} have the tag.  A second
7782 @kbd{/} at the prompt will turn off the filter and unhide any hidden entries.
7783 If the first key you press is either @kbd{+} or @kbd{-}, the previous filter
7784 will be narrowed by requiring or forbidding the selected additional tag.
7785 Instead of pressing @kbd{+} or @kbd{-} after @kbd{/}, you can also
7786 immediately use the @kbd{\} command.
7788 @vindex org-sort-agenda-noeffort-is-high
7789 In order to filter for effort estimates, you should set-up allowed
7790 efforts globally, for example
7791 @lisp
7792 (setq org-global-properties
7793     '(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00")))
7794 @end lisp
7795 You can then filter for an effort by first typing an operator, one of
7796 @kbd{<}, @kbd{>}, and @kbd{=}, and then the one-digit index of an effort
7797 estimate in your array of allowed values, where @kbd{0} means the 10th value.
7798 The filter will then restrict to entries with effort smaller-or-equal, equal,
7799 or larger-or-equal than the selected value.  If the digits 0-9 are not used
7800 as fast access keys to tags, you can also simply press the index digit
7801 directly without an operator.  In this case, @kbd{<} will be assumed.  For
7802 application of the operator, entries without a defined effort will be treated
7803 according to the value of @code{org-sort-agenda-noeffort-is-high}.  To filter
7804 for tasks without effort definition, press @kbd{?} as the operator.
7806 Org also supports automatic, context-aware tag filtering.  If the variable
7807 @code{org-agenda-auto-exclude-function} is set to a user-defined function,
7808 that function can decide which tags should be excluded from the agenda
7809 automatically.  Once this is set, the @kbd{/} command then accepts @kbd{RET}
7810 as a sub-option key and runs the auto exclusion logic.  For example, let's
7811 say you use a @code{Net} tag to identify tasks which need network access, an
7812 @code{Errand} tag for errands in town, and a @code{Call} tag for making phone
7813 calls.  You could auto-exclude these tags based on the availability of the
7814 Internet, and outside of business hours, with something like this:
7816 @lisp
7817 @group
7818 (defun org-my-auto-exclude-function (tag)
7819   (and (cond
7820         ((string= tag "Net")
7821          (/= 0 (call-process "/sbin/ping" nil nil nil
7822                              "-c1" "-q" "-t1" "mail.gnu.org")))
7823         ((or (string= tag "Errand") (string= tag "Call"))
7824          (let ((hour (nth 2 (decode-time))))
7825            (or (< hour 8) (> hour 21)))))
7826        (concat "-" tag)))
7828 (setq org-agenda-auto-exclude-function 'org-my-auto-exclude-function)
7829 @end group
7830 @end lisp
7832 @orgcmd{\,org-agenda-filter-by-tag-refine}
7833 Narrow the current agenda filter by an additional condition.  When called with
7834 prefix arg, remove the entries that @emph{do} have the tag, or that do match
7835 the effort criterion.  You can achieve the same effect by pressing @kbd{+} or
7836 @kbd{-} as the first key after the @kbd{/} command.
7839 @kindex [
7840 @kindex ]
7841 @kindex @{
7842 @kindex @}
7843 @item [ ] @{ @}
7844 @table @i
7845 @item @r{in} search view
7846 add new search words (@kbd{[} and @kbd{]}) or new regular expressions
7847 (@kbd{@{} and @kbd{@}}) to the query string.  The opening bracket/brace will
7848 add a positive search term prefixed by @samp{+}, indicating that this search
7849 term @i{must} occur/match in the entry.  The closing bracket/brace will add a
7850 negative search term which @i{must not} occur/match in the entry for it to be
7851 selected.
7852 @end table
7854 @tsubheading{Remote editing}
7855 @cindex remote editing, from agenda
7857 @item 0-9
7858 Digit argument.
7860 @cindex undoing remote-editing events
7861 @cindex remote editing, undo
7862 @orgcmd{C-_,org-agenda-undo}
7863 Undo a change due to a remote editing command.  The change is undone
7864 both in the agenda buffer and in the remote buffer.
7866 @orgcmd{t,org-agenda-todo}
7867 Change the TODO state of the item, both in the agenda and in the
7868 original org file.
7870 @orgcmd{C-S-@key{right},org-agenda-todo-nextset}
7871 @orgcmd{C-S-@key{left},org-agenda-todo-previousset}
7872 Switch to the next/previous set of TODO keywords.
7874 @orgcmd{C-k,org-agenda-kill}
7875 @vindex org-agenda-confirm-kill
7876 Delete the current agenda item along with the entire subtree belonging
7877 to it in the original Org file.  If the text to be deleted remotely
7878 is longer than one line, the kill needs to be confirmed by the user.  See
7879 variable @code{org-agenda-confirm-kill}.
7881 @orgcmd{C-c C-w,org-agenda-refile}
7882 Refile the entry at point.
7884 @orgcmdkskc{C-c C-x C-a,a,org-agenda-archive-default-with-confirmation}
7885 @vindex org-archive-default-command
7886 Archive the subtree corresponding to the entry at point using the default
7887 archiving command set in @code{org-archive-default-command}.  When using the
7888 @code{a} key, confirmation will be required.
7890 @orgcmd{C-c C-x a,org-agenda-toggle-archive-tag}
7891 Toggle the ARCHIVE tag for the current headline.
7893 @orgcmd{C-c C-x A,org-agenda-archive-to-archive-sibling}
7894 Move the subtree corresponding to the current entry to its @emph{archive
7895 sibling}.
7897 @orgcmdkskc{C-c C-x C-s,$,org-agenda-archive}
7898 Archive the subtree corresponding to the current headline.  This means the
7899 entry will be moved to the configured archive location, most likely a
7900 different file.
7902 @orgcmd{T,org-agenda-show-tags}
7903 @vindex org-agenda-show-inherited-tags
7904 Show all tags associated with the current item.  This is useful if you have
7905 turned off @code{org-agenda-show-inherited-tags}, but still want to see all
7906 tags of a headline occasionally.
7908 @orgcmd{:,org-agenda-set-tags}
7909 Set tags for the current headline.  If there is an active region in the
7910 agenda, change a tag for all headings in the region.
7912 @kindex ,
7913 @item ,
7914 Set the priority for the current item (@command{org-agenda-priority}).
7915 Org-mode prompts for the priority character. If you reply with @key{SPC}, the
7916 priority cookie is removed from the entry.
7918 @orgcmd{P,org-agenda-show-priority}
7919 Display weighted priority of current item.
7921 @orgcmdkkc{+,S-@key{up},org-agenda-priority-up}
7922 Increase the priority of the current item.  The priority is changed in
7923 the original buffer, but the agenda is not resorted.  Use the @kbd{r}
7924 key for this.
7926 @orgcmdkkc{-,S-@key{down},org-agenda-priority-down}
7927 Decrease the priority of the current item.
7929 @orgcmdkkc{z,C-c C-z,org-agenda-add-note}
7930 @vindex org-log-into-drawer
7931 Add a note to the entry.  This note will be recorded, and then files to the
7932 same location where state change notes are put.  Depending on
7933 @code{org-log-into-drawer}, this maybe inside a drawer.
7935 @orgcmd{C-c C-a,org-attach}
7936 Dispatcher for all command related to attachments.
7938 @orgcmd{C-c C-s,org-agenda-schedule}
7939 Schedule this item, with prefix arg remove the scheduling timestamp
7941 @orgcmd{C-c C-d,org-agenda-deadline}
7942 Set a deadline for this item, with prefix arg remove the deadline.
7944 @orgcmd{k,org-agenda-action}
7945 Agenda actions, to set dates for selected items to the cursor date.
7946 This command also works in the calendar!  The command prompts for an
7947 additional key:
7948 @example
7949 m   @r{Mark the entry at point for action.  You can also make entries}
7950     @r{in Org files with @kbd{C-c C-x C-k}.}
7951 d   @r{Set the deadline of the marked entry to the date at point.}
7952 s   @r{Schedule the marked entry at the date at point.}
7953 r   @r{Call @code{org-capture} with the cursor date as default date.}
7954 @end example
7955 @noindent
7956 Press @kbd{r} afterward to refresh the agenda and see the effect of the
7957 command.
7959 @orgcmd{S-@key{right},org-agenda-do-date-later}
7960 Change the timestamp associated with the current line by one day into the
7961 future.  With a numeric prefix argument, change it by that many days.  For
7962 example, @kbd{3 6 5 S-@key{right}} will change it by a year.  With a
7963 @kbd{C-u} prefix, change the time by one hour.  If you immediately repeat the
7964 command, it will continue to change hours even without the prefix arg.  With
7965 a double @kbd{C-u C-u} prefix, do the same for changing minutes.  The stamp
7966 is changed in the original Org file, but the change is not directly reflected
7967 in the agenda buffer.  Use @kbd{r} or @kbd{g} to update the buffer.
7969 @orgcmd{S-@key{left},org-agenda-do-date-earlier}
7970 Change the timestamp associated with the current line by one day
7971 into the past.
7973 @orgcmd{>,org-agenda-date-prompt}
7974 Change the timestamp associated with the current line.  The key @kbd{>} has
7975 been chosen, because it is the same as @kbd{S-.}  on my keyboard.
7977 @orgcmd{I,org-agenda-clock-in}
7978 Start the clock on the current item.  If a clock is running already, it
7979 is stopped first.
7981 @orgcmd{O,org-agenda-clock-out}
7982 Stop the previously started clock.
7984 @orgcmd{X,org-agenda-clock-cancel}
7985 Cancel the currently running clock.
7987 @orgcmd{J,org-agenda-clock-goto}
7988 Jump to the running clock in another window.
7990 @tsubheading{Bulk remote editing selected entries}
7991 @cindex remote editing, bulk, from agenda
7993 @orgcmd{m,org-agenda-bulk-mark}
7994 Mark the entry at point for bulk action.
7996 @orgcmd{u,org-agenda-bulk-unmark}
7997 Unmark entry for bulk action.
7999 @orgcmd{U,org-agenda-bulk-remove-all-marks}
8000 Unmark all marked entries for bulk action.
8002 @orgcmd{B,org-agenda-bulk-action}
8003 Bulk action: act on all marked entries in the agenda.  This will prompt for
8004 another key to select the action to be applied.  The prefix arg to @kbd{B}
8005 will be passed through to the @kbd{s} and @kbd{d} commands, to bulk-remove
8006 these special timestamps.
8007 @example
8008 r  @r{Prompt for a single refile target and move all entries.  The entries}
8009    @r{will no longer be in the agenda, refresh (@kbd{g}) to bring them back.}
8010 $  @r{Archive all selected entries.}
8011 A  @r{Archive entries by moving them to their respective archive siblings.}
8012 t  @r{Change TODO state.  This prompts for a single TODO keyword and}
8013    @r{changes the state of all selected entries, bypassing blocking and}
8014    @r{suppressing logging notes (but not time stamps).}
8015 +  @r{Add a tag to all selected entries.}
8016 -  @r{Remove a tag from all selected entries.}
8017 s  @r{Schedule all items to a new date.  To shift existing schedule dates}
8018    @r{by a fixed number of days, use something starting with double plus}
8019    @r{at the prompt, for example @samp{++8d} or @samp{++2w}.}
8020 d  @r{Set deadline to a specific date.}
8021 @end example
8024 @tsubheading{Calendar commands}
8025 @cindex calendar commands, from agenda
8027 @orgcmd{c,org-agenda-goto-calendar}
8028 Open the Emacs calendar and move to the date at the agenda cursor.
8030 @orgcmd{c,org-calendar-goto-agenda}
8031 When in the calendar, compute and show the Org-mode agenda for the
8032 date at the cursor.
8034 @cindex diary entries, creating from agenda
8035 @orgcmd{i,org-agenda-diary-entry}
8036 @vindex org-agenda-diary-file
8037 Insert a new entry into the diary, using the date at the cursor and (for
8038 block entries) the date at the mark.  This will add to the Emacs diary
8039 file@footnote{This file is parsed for the agenda when
8040 @code{org-agenda-include-diary} is set.}, in a way similar to the @kbd{i}
8041 command in the calendar.  The diary file will pop up in another window, where
8042 you can add the entry.
8044 If you configure @code{org-agenda-diary-file} to point to an Org-mode file,
8045 Org will create entries (in org-mode syntax) in that file instead.  Most
8046 entries will be stored in a date-based outline tree that will later make it
8047 easy to archive appointments from previous months/years.  The tree will be
8048 built under an entry with a @code{DATE_TREE} property, or else with years as
8049 top-level entries.  Emacs will prompt you for the entry text - if you specify
8050 it, the entry will be created in @code{org-agenda-diary-file} without further
8051 interaction.  If you directly press @key{RET} at the prompt without typing
8052 text, the target file will be shown in another window for you to finish the
8053 entry there.  See also the @kbd{k r} command.
8055 @orgcmd{M,org-agenda-phases-of-moon}
8056 Show the phases of the moon for the three months around current date.
8058 @orgcmd{S,org-agenda-sunrise-sunset}
8059 Show sunrise and sunset times.  The geographical location must be set
8060 with calendar variables, see the documentation for the Emacs calendar.
8062 @orgcmd{C,org-agenda-convert-date}
8063 Convert the date at cursor into many other cultural and historic
8064 calendars.
8066 @orgcmd{H,org-agenda-holidays}
8067 Show holidays for three months around the cursor date.
8069 @item M-x org-export-icalendar-combine-agenda-files
8070 Export a single iCalendar file containing entries from all agenda files.
8071 This is a globally available command, and also available in the agenda menu.
8073 @tsubheading{Exporting to a file}
8074 @orgcmd{C-x C-w,org-write-agenda}
8075 @cindex exporting agenda views
8076 @cindex agenda views, exporting
8077 @vindex org-agenda-exporter-settings
8078 Write the agenda view to a file.  Depending on the extension of the selected
8079 file name, the view will be exported as HTML (extension @file{.html} or
8080 @file{.htm}), Postscript (extension @file{.ps}), PDF (extension @file{.pdf}),
8081 and plain text (any other extension).  When called with a @kbd{C-u} prefix
8082 argument, immediately open the newly created file.  Use the variable
8083 @code{org-agenda-exporter-settings} to set options for @file{ps-print} and
8084 for @file{htmlize} to be used during export.
8086 @tsubheading{Quit and Exit}
8087 @orgcmd{q,org-agenda-quit}
8088 Quit agenda, remove the agenda buffer.
8090 @cindex agenda files, removing buffers
8091 @orgcmd{x,org-agenda-exit}
8092 Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
8093 for the compilation of the agenda.  Buffers created by the user to
8094 visit Org files will not be removed.
8095 @end table
8098 @node Custom agenda views, Exporting Agenda Views, Agenda commands, Agenda Views
8099 @section Custom agenda views
8100 @cindex custom agenda views
8101 @cindex agenda views, custom
8103 Custom agenda commands serve two purposes: to store and quickly access
8104 frequently used TODO and tags searches, and to create special composite
8105 agenda buffers.  Custom agenda commands will be accessible through the
8106 dispatcher (@pxref{Agenda dispatcher}), just like the default commands.
8108 @menu
8109 * Storing searches::            Type once, use often
8110 * Block agenda::                All the stuff you need in a single buffer
8111 * Setting Options::             Changing the rules
8112 @end menu
8114 @node Storing searches, Block agenda, Custom agenda views, Custom agenda views
8115 @subsection Storing searches
8117 The first application of custom searches is the definition of keyboard
8118 shortcuts for frequently used searches, either creating an agenda
8119 buffer, or a sparse tree (the latter covering of course only the current
8120 buffer).
8121 @kindex C-c a C
8122 @vindex org-agenda-custom-commands
8123 Custom commands are configured in the variable
8124 @code{org-agenda-custom-commands}.  You can customize this variable, for
8125 example by pressing @kbd{C-c a C}.  You can also directly set it with
8126 Emacs Lisp in @file{.emacs}.  The following example contains all valid
8127 search types:
8129 @lisp
8130 @group
8131 (setq org-agenda-custom-commands
8132       '(("w" todo "WAITING")
8133         ("W" todo-tree "WAITING")
8134         ("u" tags "+boss-urgent")
8135         ("v" tags-todo "+boss-urgent")
8136         ("U" tags-tree "+boss-urgent")
8137         ("f" occur-tree "\\<FIXME\\>")
8138         ("h" . "HOME+Name tags searches") ; description for "h" prefix
8139         ("hl" tags "+home+Lisa")
8140         ("hp" tags "+home+Peter")
8141         ("hk" tags "+home+Kim")))
8142 @end group
8143 @end lisp
8145 @noindent
8146 The initial string in each entry defines the keys you have to press
8147 after the dispatcher command @kbd{C-c a} in order to access the command.
8148 Usually this will be just a single character, but if you have many
8149 similar commands, you can also define two-letter combinations where the
8150 first character is the same in several combinations and serves as a
8151 prefix key@footnote{You can provide a description for a prefix key by
8152 inserting a cons cell with the prefix and the description.}.  The second
8153 parameter is the search type, followed by the string or regular
8154 expression to be used for the matching.  The example above will
8155 therefore define:
8157 @table @kbd
8158 @item C-c a w
8159 as a global search for TODO entries with @samp{WAITING} as the TODO
8160 keyword
8161 @item C-c a W
8162 as the same search, but only in the current buffer and displaying the
8163 results as a sparse tree
8164 @item C-c a u
8165 as a global tags search for headlines marked @samp{:boss:} but not
8166 @samp{:urgent:}
8167 @item C-c a v
8168 as the same search as @kbd{C-c a u}, but limiting the search to
8169 headlines that are also TODO items
8170 @item C-c a U
8171 as the same search as @kbd{C-c a u}, but only in the current buffer and
8172 displaying the result as a sparse tree
8173 @item C-c a f
8174 to create a sparse tree (again: current buffer only) with all entries
8175 containing the word @samp{FIXME}
8176 @item C-c a h
8177 as a prefix command for a HOME tags search where you have to press an
8178 additional key (@kbd{l}, @kbd{p} or @kbd{k}) to select a name (Lisa,
8179 Peter, or Kim) as additional tag to match.
8180 @end table
8182 @node Block agenda, Setting Options, Storing searches, Custom agenda views
8183 @subsection Block agenda
8184 @cindex block agenda
8185 @cindex agenda, with block views
8187 Another possibility is the construction of agenda views that comprise
8188 the results of @emph{several} commands, each of which creates a block in
8189 the agenda buffer.  The available commands include @code{agenda} for the
8190 daily or weekly agenda (as created with @kbd{C-c a a}), @code{alltodo}
8191 for the global TODO list (as constructed with @kbd{C-c a t}), and the
8192 matching commands discussed above: @code{todo}, @code{tags}, and
8193 @code{tags-todo}.  Here are two examples:
8195 @lisp
8196 @group
8197 (setq org-agenda-custom-commands
8198       '(("h" "Agenda and Home-related tasks"
8199          ((agenda "")
8200           (tags-todo "home")
8201           (tags "garden")))
8202         ("o" "Agenda and Office-related tasks"
8203          ((agenda "")
8204           (tags-todo "work")
8205           (tags "office")))))
8206 @end group
8207 @end lisp
8209 @noindent
8210 This will define @kbd{C-c a h} to create a multi-block view for stuff
8211 you need to attend to at home.  The resulting agenda buffer will contain
8212 your agenda for the current week, all TODO items that carry the tag
8213 @samp{home}, and also all lines tagged with @samp{garden}.  Finally the
8214 command @kbd{C-c a o} provides a similar view for office tasks.
8216 @node Setting Options,  , Block agenda, Custom agenda views
8217 @subsection Setting options for custom commands
8218 @cindex options, for custom agenda views
8220 @vindex org-agenda-custom-commands
8221 Org-mode contains a number of variables regulating agenda construction
8222 and display.  The global variables define the behavior for all agenda
8223 commands, including the custom commands.  However, if you want to change
8224 some settings just for a single custom view, you can do so.  Setting
8225 options requires inserting a list of variable names and values at the
8226 right spot in @code{org-agenda-custom-commands}.  For example:
8228 @lisp
8229 @group
8230 (setq org-agenda-custom-commands
8231       '(("w" todo "WAITING"
8232          ((org-agenda-sorting-strategy '(priority-down))
8233           (org-agenda-prefix-format "  Mixed: ")))
8234         ("U" tags-tree "+boss-urgent"
8235          ((org-show-following-heading nil)
8236           (org-show-hierarchy-above nil)))
8237         ("N" search ""
8238          ((org-agenda-files '("~org/notes.org"))
8239           (org-agenda-text-search-extra-files nil)))))
8240 @end group
8241 @end lisp
8243 @noindent
8244 Now the @kbd{C-c a w} command will sort the collected entries only by
8245 priority, and the prefix format is modified to just say @samp{  Mixed: }
8246 instead of giving the category of the entry.  The sparse tags tree of
8247 @kbd{C-c a U} will now turn out ultra-compact, because neither the
8248 headline hierarchy above the match, nor the headline following the match
8249 will be shown.  The command @kbd{C-c a N} will do a text search limited
8250 to only a single file.
8252 @vindex org-agenda-custom-commands
8253 For command sets creating a block agenda,
8254 @code{org-agenda-custom-commands} has two separate spots for setting
8255 options.  You can add options that should be valid for just a single
8256 command in the set, and options that should be valid for all commands in
8257 the set.  The former are just added to the command entry, the latter
8258 must come after the list of command entries.  Going back to the block
8259 agenda example (@pxref{Block agenda}), let's change the sorting strategy
8260 for the @kbd{C-c a h} commands to @code{priority-down}, but let's sort
8261 the results for GARDEN tags query in the opposite order,
8262 @code{priority-up}.  This would look like this:
8264 @lisp
8265 @group
8266 (setq org-agenda-custom-commands
8267       '(("h" "Agenda and Home-related tasks"
8268          ((agenda)
8269           (tags-todo "home")
8270           (tags "garden"
8271                 ((org-agenda-sorting-strategy '(priority-up)))))
8272          ((org-agenda-sorting-strategy '(priority-down))))
8273         ("o" "Agenda and Office-related tasks"
8274          ((agenda)
8275           (tags-todo "work")
8276           (tags "office")))))
8277 @end group
8278 @end lisp
8280 As you see, the values and parentheses setting is a little complex.
8281 When in doubt, use the customize interface to set this variable---it
8282 fully supports its structure.  Just one caveat: when setting options in
8283 this interface, the @emph{values} are just Lisp expressions.  So if the
8284 value is a string, you need to add the double-quotes around the value
8285 yourself.
8288 @node Exporting Agenda Views, Agenda column view, Custom agenda views, Agenda Views
8289 @section Exporting Agenda Views
8290 @cindex agenda views, exporting
8292 If you are away from your computer, it can be very useful to have a printed
8293 version of some agenda views to carry around.  Org-mode can export custom
8294 agenda views as plain text, HTML@footnote{You need to install Hrvoje Niksic's
8295 @file{htmlize.el}.}, Postscript, PDF@footnote{To create PDF output, the
8296 ghostscript @file{ps2pdf} utility must be installed on the system.  Selecting
8297 a PDF file with also create the postscript file.}, and iCalendar files.  If
8298 you want to do this only occasionally, use the command
8300 @table @kbd
8301 @orgcmd{C-x C-w,org-write-agenda}
8302 @cindex exporting agenda views
8303 @cindex agenda views, exporting
8304 @vindex org-agenda-exporter-settings
8305 Write the agenda view to a file.  Depending on the extension of the selected
8306 file name, the view will be exported as HTML (extension @file{.html} or
8307 @file{.htm}), Postscript (extension @file{.ps}), iCalendar (extension
8308 @file{.ics}), or plain text (any other extension).  Use the variable
8309 @code{org-agenda-exporter-settings} to set options for @file{ps-print} and
8310 for @file{htmlize} to be used during export, for example
8312 @vindex org-agenda-add-entry-text-maxlines
8313 @vindex htmlize-output-type
8314 @vindex ps-number-of-columns
8315 @vindex ps-landscape-mode
8316 @lisp
8317 (setq org-agenda-exporter-settings
8318       '((ps-number-of-columns 2)
8319         (ps-landscape-mode t)
8320         (org-agenda-add-entry-text-maxlines 5)
8321         (htmlize-output-type 'css)))
8322 @end lisp
8323 @end table
8325 If you need to export certain agenda views frequently, you can associate
8326 any custom agenda command with a list of output file names
8327 @footnote{If you want to store standard views like the weekly agenda
8328 or the global TODO list as well, you need to define custom commands for
8329 them in order to be able to specify file names.}.  Here is an example
8330 that first defines custom commands for the agenda and the global
8331 TODO list, together with a number of files to which to export them.
8332 Then we define two block agenda commands and specify file names for them
8333 as well.  File names can be relative to the current working directory,
8334 or absolute.
8336 @lisp
8337 @group
8338 (setq org-agenda-custom-commands
8339       '(("X" agenda "" nil ("agenda.html" "agenda.ps"))
8340         ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
8341         ("h" "Agenda and Home-related tasks"
8342          ((agenda "")
8343           (tags-todo "home")
8344           (tags "garden"))
8345          nil
8346          ("~/views/home.html"))
8347         ("o" "Agenda and Office-related tasks"
8348          ((agenda)
8349           (tags-todo "work")
8350           (tags "office"))
8351          nil
8352          ("~/views/office.ps" "~/calendars/office.ics"))))
8353 @end group
8354 @end lisp
8356 The extension of the file name determines the type of export.  If it is
8357 @file{.html}, Org-mode will use the @file{htmlize.el} package to convert
8358 the buffer to HTML and save it to this file name.  If the extension is
8359 @file{.ps}, @code{ps-print-buffer-with-faces} is used to produce
8360 Postscript output.  If the extension is @file{.ics}, iCalendar export is
8361 run export over all files that were used to construct the agenda, and
8362 limit the export to entries listed in the agenda.  Any other
8363 extension produces a plain ASCII file.
8365 The export files are @emph{not} created when you use one of those
8366 commands interactively because this might use too much overhead.
8367 Instead, there is a special command to produce @emph{all} specified
8368 files in one step:
8370 @table @kbd
8371 @orgcmd{C-c a e,org-store-agenda-views}
8372 Export all agenda views that have export file names associated with
8373 them.
8374 @end table
8376 You can use the options section of the custom agenda commands to also
8377 set options for the export commands.  For example:
8379 @lisp
8380 (setq org-agenda-custom-commands
8381       '(("X" agenda ""
8382          ((ps-number-of-columns 2)
8383           (ps-landscape-mode t)
8384           (org-agenda-prefix-format " [ ] ")
8385           (org-agenda-with-colors nil)
8386           (org-agenda-remove-tags t))
8387          ("theagenda.ps"))))
8388 @end lisp
8390 @noindent
8391 This command sets two options for the Postscript exporter, to make it
8392 print in two columns in landscape format---the resulting page can be cut
8393 in two and then used in a paper agenda.  The remaining settings modify
8394 the agenda prefix to omit category and scheduling information, and
8395 instead include a checkbox to check off items.  We also remove the tags
8396 to make the lines compact, and we don't want to use colors for the
8397 black-and-white printer.  Settings specified in
8398 @code{org-agenda-exporter-settings} will also apply, but the settings
8399 in @code{org-agenda-custom-commands} take precedence.
8401 @noindent
8402 From the command line you may also use
8403 @example
8404 emacs -f org-batch-store-agenda-views -kill
8405 @end example
8406 @noindent
8407 or, if you need to modify some parameters@footnote{Quoting depends on the
8408 system you use, please check the FAQ for examples.}
8409 @example
8410 emacs -eval '(org-batch-store-agenda-views                      \
8411               org-agenda-ndays 30                               \
8412               org-agenda-start-day "2007-11-01"                 \
8413               org-agenda-include-diary nil                      \
8414               org-agenda-files (quote ("~/org/project.org")))'  \
8415       -kill
8416 @end example
8417 @noindent
8418 which will create the agenda views restricted to the file
8419 @file{~/org/project.org}, without diary entries and with a 30-day
8420 extent.
8422 You can also extract agenda information in a way that allows further
8423 processing by other programs.  See @ref{Extracting agenda information}, for
8424 more information.
8427 @node Agenda column view,  , Exporting Agenda Views, Agenda Views
8428 @section Using column view in the agenda
8429 @cindex column view, in agenda
8430 @cindex agenda, column view
8432 Column view (@pxref{Column view}) is normally used to view and edit
8433 properties embedded in the hierarchical structure of an Org file.  It can be
8434 quite useful to use column view also from the agenda, where entries are
8435 collected by certain criteria.
8437 @table @kbd
8438 @orgcmd{C-c C-x C-c,org-agenda-columns}
8439 Turn on column view in the agenda.
8440 @end table
8442 To understand how to use this properly, it is important to realize that the
8443 entries in the agenda are no longer in their proper outline environment.
8444 This causes the following issues:
8446 @enumerate
8447 @item
8448 @vindex org-columns-default-format
8449 @vindex org-overriding-columns-format
8450 Org needs to make a decision which @code{COLUMNS} format to use.  Since the
8451 entries in the agenda are collected from different files, and different files
8452 may have different @code{COLUMNS} formats, this is a non-trivial problem.
8453 Org first checks if the variable @code{org-overriding-columns-format} is
8454 currently set, and if so, takes the format from there.  Otherwise it takes
8455 the format associated with the first item in the agenda, or, if that item
8456 does not have a specific format (defined in a property, or in its file), it
8457 uses @code{org-columns-default-format}.
8458 @item
8459 @cindex property, special, CLOCKSUM
8460 If any of the columns has a summary type defined (@pxref{Column attributes}),
8461 turning on column view in the agenda will visit all relevant agenda files and
8462 make sure that the computations of this property are up to date.  This is
8463 also true for the special @code{CLOCKSUM} property.  Org will then sum the
8464 values displayed in the agenda.  In the daily/weekly agenda, the sums will
8465 cover a single day, in all other views they cover the entire block.  It is
8466 vital to realize that the agenda may show the same entry @emph{twice} (for
8467 example as scheduled and as a deadline), and it may show two entries from the
8468 same hierarchy (for example a @emph{parent} and its @emph{child}).  In these
8469 cases, the summation in the agenda will lead to incorrect results because
8470 some values will count double.
8471 @item
8472 When the column view in the agenda shows the @code{CLOCKSUM}, that is always
8473 the entire clocked time for this item.  So even in the daily/weekly agenda,
8474 the clocksum listed in column view may originate from times outside the
8475 current view.  This has the advantage that you can compare these values with
8476 a column listing the planned total effort for a task---one of the major
8477 applications for column view in the agenda.  If you want information about
8478 clocked time in the displayed period use clock table mode (press @kbd{R} in
8479 the agenda).
8480 @end enumerate
8483 @node Markup, Exporting, Agenda Views, Top
8484 @chapter Markup for rich export
8486 When exporting Org-mode documents, the exporter tries to reflect the
8487 structure of the document as accurately as possible in the backend.  Since
8488 export targets like HTML, La@TeX{}, or DocBook allow much richer formatting,
8489 Org-mode has rules on how to prepare text for rich export.  This section
8490 summarizes the markup rules used in an Org-mode buffer.
8492 @menu
8493 * Structural markup elements::  The basic structure as seen by the exporter
8494 * Images and tables::           Tables and Images will be included
8495 * Literal examples::            Source code examples with special formatting
8496 * Include files::               Include additional files into a document
8497 * Index entries::               Making an index
8498 * Macro replacement::           Use macros to create complex output
8499 * Embedded LaTeX::              LaTeX can be freely used inside Org documents
8500 @end menu
8502 @node Structural markup elements, Images and tables, Markup, Markup
8503 @section Structural markup elements
8505 @menu
8506 * Document title::              Where the title is taken from
8507 * Headings and sections::       The document structure as seen by the exporter
8508 * Table of contents::           The if and where of the table of contents
8509 * Initial text::                Text before the first heading?
8510 * Lists::                       Lists
8511 * Paragraphs::                  Paragraphs
8512 * Footnote markup::             Footnotes
8513 * Emphasis and monospace::      Bold, italic, etc.
8514 * Horizontal rules::            Make a line
8515 * Comment lines::               What will *not* be exported
8516 @end menu
8518 @node Document title, Headings and sections, Structural markup elements, Structural markup elements
8519 @subheading Document title
8520 @cindex document title, markup rules
8522 @noindent
8523 The title of the exported document is taken from the special line
8525 @cindex #+TITLE
8526 @example
8527 #+TITLE: This is the title of the document
8528 @end example
8530 @noindent
8531 If this line does not exist, the title is derived from the first non-empty,
8532 non-comment line in the buffer.  If no such line exists, or if you have
8533 turned off exporting of the text before the first headline (see below), the
8534 title will be the file name without extension.
8536 @cindex property, EXPORT_TITLE
8537 If you are exporting only a subtree by marking is as the region, the heading
8538 of the subtree will become the title of the document.  If the subtree has a
8539 property @code{EXPORT_TITLE}, that will take precedence.
8541 @node Headings and sections, Table of contents, Document title, Structural markup elements
8542 @subheading Headings and sections
8543 @cindex headings and sections, markup rules
8545 @vindex org-export-headline-levels
8546 The outline structure of the document as described in @ref{Document
8547 Structure}, forms the basis for defining sections of the exported document.
8548 However, since the outline structure is also used for (for example) lists of
8549 tasks, only the first three outline levels will be used as headings.  Deeper
8550 levels will become itemized lists.  You can change the location of this
8551 switch globally by setting the variable @code{org-export-headline-levels}, or on a
8552 per-file basis with a line
8554 @cindex #+OPTIONS
8555 @example
8556 #+OPTIONS: H:4
8557 @end example
8559 @node Table of contents, Initial text, Headings and sections, Structural markup elements
8560 @subheading Table of contents
8561 @cindex table of contents, markup rules
8563 @vindex org-export-with-toc
8564 The table of contents is normally inserted directly before the first headline
8565 of the file.  If you would like to get it to a different location, insert the
8566 string @code{[TABLE-OF-CONTENTS]} on a line by itself at the desired
8567 location.  The depth of the table of contents is by default the same as the
8568 number of headline levels, but you can choose a smaller number, or turn off
8569 the table of contents entirely, by configuring the variable
8570 @code{org-export-with-toc}, or on a per-file basis with a line like
8572 @example
8573 #+OPTIONS: toc:2          (only to two levels in TOC)
8574 #+OPTIONS: toc:nil        (no TOC at all)
8575 @end example
8577 @node Initial text, Lists, Table of contents, Structural markup elements
8578 @subheading Text before the first headline
8579 @cindex text before first headline, markup rules
8580 @cindex #+TEXT
8582 Org-mode normally exports the text before the first headline, and even uses
8583 the first line as the document title.  The text will be fully marked up.  If
8584 you need to include literal HTML, La@TeX{}, or DocBook code, use the special
8585 constructs described below in the sections for the individual exporters.
8587 @vindex org-export-skip-text-before-1st-heading
8588 Some people like to use the space before the first headline for setup and
8589 internal links and therefore would like to control the exported text before
8590 the first headline in a different way.  You can do so by setting the variable
8591 @code{org-export-skip-text-before-1st-heading} to @code{t}.  On a per-file
8592 basis, you can get the same effect with @samp{#+OPTIONS: skip:t}.
8594 @noindent
8595 If you still want to have some text before the first headline, use the
8596 @code{#+TEXT} construct:
8598 @example
8599 #+OPTIONS: skip:t
8600 #+TEXT: This text will go before the *first* headline.
8601 #+TEXT: [TABLE-OF-CONTENTS]
8602 #+TEXT: This goes between the table of contents and the first headline
8603 @end example
8605 @node Lists, Paragraphs, Initial text, Structural markup elements
8606 @subheading Lists
8607 @cindex lists, markup rules
8609 Plain lists as described in @ref{Plain lists}, are translated to the backend's
8610 syntax for such lists.  Most backends support unordered, ordered, and
8611 description lists.
8613 @node Paragraphs, Footnote markup, Lists, Structural markup elements
8614 @subheading Paragraphs, line breaks, and quoting
8615 @cindex paragraphs, markup rules
8617 Paragraphs are separated by at least one empty line.  If you need to enforce
8618 a line break within a paragraph, use @samp{\\} at the end of a line.
8620 To keep the line breaks in a region, but otherwise use normal formatting, you
8621 can use this construct, which can also be used to format poetry.
8623 @cindex #+BEGIN_VERSE
8624 @example
8625 #+BEGIN_VERSE
8626  Great clouds overhead
8627  Tiny black birds rise and fall
8628  Snow covers Emacs
8630      -- AlexSchroeder
8631 #+END_VERSE
8632 @end example
8634 When quoting a passage from another document, it is customary to format this
8635 as a paragraph that is indented on both the left and the right margin.  You
8636 can include quotations in Org-mode documents like this:
8638 @cindex #+BEGIN_QUOTE
8639 @example
8640 #+BEGIN_QUOTE
8641 Everything should be made as simple as possible,
8642 but not any simpler -- Albert Einstein
8643 #+END_QUOTE
8644 @end example
8646 If you would like to center some text, do it like this:
8647 @cindex #+BEGIN_CENTER
8648 @example
8649 #+BEGIN_CENTER
8650 Everything should be made as simple as possible, \\
8651 but not any simpler
8652 #+END_CENTER
8653 @end example
8656 @node Footnote markup, Emphasis and monospace, Paragraphs, Structural markup elements
8657 @subheading Footnote markup
8658 @cindex footnotes, markup rules
8659 @cindex @file{footnote.el}
8661 Footnotes defined in the way described in @ref{Footnotes}, will be exported by
8662 all backends.  Org allows multiple references to the same note, and
8663 different backends support this to varying degrees.
8665 @node Emphasis and monospace, Horizontal rules, Footnote markup, Structural markup elements
8666 @subheading Emphasis and monospace
8668 @cindex underlined text, markup rules
8669 @cindex bold text, markup rules
8670 @cindex italic text, markup rules
8671 @cindex verbatim text, markup rules
8672 @cindex code text, markup rules
8673 @cindex strike-through text, markup rules
8674 You can make words @b{*bold*}, @i{/italic/}, _underlined_, @code{=code=}
8675 and @code{~verbatim~}, and, if you must, @samp{+strike-through+}.  Text
8676 in the code and verbatim string is not processed for Org-mode specific
8677 syntax, it is exported verbatim.
8679 @node Horizontal rules, Comment lines, Emphasis and monospace, Structural markup elements
8680 @subheading  Horizontal rules
8681 @cindex horizontal rules, markup rules
8682 A line consisting of only dashes, and at least 5 of them, will be
8683 exported as a horizontal line (@samp{<hr/>} in HTML).
8685 @node Comment lines,  , Horizontal rules, Structural markup elements
8686 @subheading Comment lines
8687 @cindex comment lines
8688 @cindex exporting, not
8689 @cindex #+BEGIN_COMMENT
8691 Lines starting with @samp{#} in column zero are treated as comments and will
8692 never be exported. If you want an indented line to be treated as a comment,
8693 start it with @samp{#+ }.  Also entire subtrees starting with the word
8694 @samp{COMMENT} will never be exported.  Finally, regions surrounded by
8695 @samp{#+BEGIN_COMMENT} ... @samp{#+END_COMMENT} will not be exported.
8697 @table @kbd
8698 @kindex C-c ;
8699 @item C-c ;
8700 Toggle the COMMENT keyword at the beginning of an entry.
8701 @end table
8704 @node Images and tables, Literal examples, Structural markup elements, Markup
8705 @section Images and Tables
8707 @cindex tables, markup rules
8708 @cindex #+CAPTION
8709 @cindex #+LABEL
8710 Both the native Org-mode tables (@pxref{Tables}) and tables formatted with
8711 the @file{table.el} package will be exported properly.  For Org-mode tables,
8712 the lines before the first horizontal separator line will become table header
8713 lines.  You can use the following lines somewhere before the table to assign
8714 a caption and a label for cross references, and in the text you can refer to
8715 the object with @code{\ref@{tab:basic-data@}}:
8717 @example
8718 #+CAPTION: This is the caption for the next table (or link)
8719 #+LABEL:   tbl:basic-data
8720    | ... | ...|
8721    |-----|----|
8722 @end example
8724 @cindex inlined images, markup rules
8725 Some backends (HTML, La@TeX{}, and DocBook) allow you to directly include
8726 images into the exported document.  Org does this, if a link to an image
8727 files does not have a description part, for example @code{[[./img/a.jpg]]}.
8728 If you wish to define a caption for the image and maybe a label for internal
8729 cross references, make sure that the link is on a line by itself and precede
8730 it with @code{#+CAPTION} and @code{#+LABEL} as follows:
8732 @example
8733 #+CAPTION: This is the caption for the next figure link (or table)
8734 #+LABEL:   fig:SED-HR4049
8735 [[./img/a.jpg]]
8736 @end example
8738 You may also define additional attributes for the figure.  As this is
8739 backend-specific, see the sections about the individual backends for more
8740 information.
8742 @xref{Handling links,the discussion of image links}.
8744 @node Literal examples, Include files, Images and tables, Markup
8745 @section Literal examples
8746 @cindex literal examples, markup rules
8747 @cindex code line references, markup rules
8749 You can include literal examples that should not be subjected to
8750 markup.  Such examples will be typeset in monospace, so this is well suited
8751 for source code and similar examples.
8752 @cindex #+BEGIN_EXAMPLE
8754 @example
8755 #+BEGIN_EXAMPLE
8756 Some example from a text file.
8757 #+END_EXAMPLE
8758 @end example
8760 Note that such blocks may be @i{indented} in order to align nicely with
8761 indented text and in particular with plain list structure (@pxref{Plain
8762 lists}).  For simplicity when using small examples, you can also start the
8763 example lines with a colon followed by a space.  There may also be additional
8764 whitespace before the colon:
8766 @example
8767 Here is an example
8768    : Some example from a text file.
8769 @end example
8771 @cindex formatting source code, markup rules
8772 If the example is source code from a programming language, or any other text
8773 that can be marked up by font-lock in Emacs, you can ask for the example to
8774 look like the fontified Emacs buffer@footnote{This works automatically for
8775 the HTML backend (it requires version 1.34 of the @file{htmlize.el} package,
8776 which is distributed with Org.)  Fontified code chunks in LaTeX can be
8777 achieved using either the listings or the
8778 @url{http://code.google.com/p/minted, minted,} package. To use listings, turn
8779 on the variable @code{org-export-latex-listings} and ensure that the listings
8780 package is included by the LaTeX header (e.g. by configuring
8781 @code{org-export-latex-packages-alist}). See the listings documentation for
8782 configuration options, including obtaining colored output.  For minted it is
8783 necessary to install the program @url{http://pygments.org, pygments}, in
8784 addition to setting @code{org-export-latex-minted}, ensuring that the minted
8785 package is included by the LaTeX header, and ensuring that the
8786 @code{-shell-escape} option is passed to @file{pdflatex} (see
8787 @code{org-latex-to-pdf-process}). See the documentation of the variables
8788 @code{org-export-latex-listings} and @code{org-export-latex-minted} for
8789 further details.}.  This is done with the @samp{src} block, where you also
8790 need to specify the name of the major mode that should be used to fontify the
8791 example:
8792 @cindex #+BEGIN_SRC
8794 @example
8795 #+BEGIN_SRC emacs-lisp
8796   (defun org-xor (a b)
8797      "Exclusive or."
8798      (if a (not b) b))
8799 #+END_SRC
8800 @end example
8802 Both in @code{example} and in @code{src} snippets, you can add a @code{-n}
8803 switch to the end of the @code{BEGIN} line, to get the lines of the example
8804 numbered.  If you use a @code{+n} switch, the numbering from the previous
8805 numbered snippet will be continued in the current one.  In literal examples,
8806 Org will interpret strings like @samp{(ref:name)} as labels, and use them as
8807 targets for special hyperlinks like @code{[[(name)]]} (i.e. the reference name
8808 enclosed in single parenthesis).  In HTML, hovering the mouse over such a
8809 link will remote-highlight the corresponding code line, which is kind of
8810 cool.
8812 You can also add a @code{-r} switch which @i{removes} the labels from the
8813 source code@footnote{Adding @code{-k} to @code{-n -r} will @i{keep} the
8814 labels in the source code while using line numbers for the links, which might
8815 be useful to explain those in an org-mode example code.}.  With the @code{-n}
8816 switch, links to these references will be labeled by the line numbers from
8817 the code listing, otherwise links will use the labels with no parentheses.
8818 Here is an example:
8820 @example
8821 #+BEGIN_SRC emacs-lisp -n -r
8822 (save-excursion                  (ref:sc)
8823    (goto-char (point-min))       (ref:jump)
8824 #+END_SRC
8825 In line [[(sc)]] we remember the current position.  [[(jump)][Line (jump)]]
8826 jumps to point-min.
8827 @end example
8829 @vindex org-coderef-label-format
8830 If the syntax for the label format conflicts with the language syntax, use a
8831 @code{-l} switch to change the format, for example @samp{#+BEGIN_SRC pascal
8832 -n -r -l "((%s))"}.  See also the variable @code{org-coderef-label-format}.
8834 HTML export also allows examples to be published as text areas, @xref{Text
8835 areas in HTML export}.
8837 @table @kbd
8838 @kindex C-c '
8839 @item C-c '
8840 Edit the source code example at point in its native mode.  This works by
8841 switching to a temporary buffer with the source code.  You need to exit by
8842 pressing @kbd{C-c '} again@footnote{Upon exit, lines starting with @samp{*}
8843 or @samp{#} will get a comma prepended, to keep them from being interpreted
8844 by Org as outline nodes or special comments.  These commas will be stripped
8845 for editing with @kbd{C-c '}, and also for export.}, the edited version will
8846 then replace the old version in the Org buffer.  Fixed-width regions
8847 (where each line starts with a colon followed by a space) will be edited
8848 using @code{artist-mode}@footnote{You may select a different-mode with the
8849 variable @code{org-edit-fixed-width-region-mode}.} to allow creating ASCII
8850 drawings easily.  Using this command in an empty line will create a new
8851 fixed-width region.
8852 @kindex C-c l
8853 @item C-c l
8854 Calling @code{org-store-link} while editing a source code example in a
8855 temporary buffer created with @kbd{C-c '} will prompt for a label, make sure
8856 that it is unique in the current buffer, and insert it with the proper
8857 formatting like @samp{(ref:label)} at the end of the current line.  Then the
8858 label is stored as a link @samp{(label)}, for retrieval with @kbd{C-c C-l}.
8859 @end table
8862 @node Include files, Index entries, Literal examples, Markup
8863 @section Include files
8864 @cindex include files, markup rules
8866 During export, you can include the content of another file.  For example, to
8867 include your @file{.emacs} file, you could use:
8868 @cindex #+INCLUDE
8870 @example
8871 #+INCLUDE: "~/.emacs" src emacs-lisp
8872 @end example
8873 @noindent
8874 The optional second and third parameter are the markup (e.g. @samp{quote},
8875 @samp{example}, or @samp{src}), and, if the markup is @samp{src}, the
8876 language for formatting the contents.  The markup is optional, if it is not
8877 given, the text will be assumed to be in Org-mode format and will be
8878 processed normally.  The include line will also allow additional keyword
8879 parameters @code{:prefix1} and @code{:prefix} to specify prefixes for the
8880 first line and for each following line, as well as any options accepted by
8881 the selected markup.  For example, to include a file as an item, use
8883 @example
8884 #+INCLUDE: "~/snippets/xx" :prefix1 "   + " :prefix "     "
8885 @end example
8887 @table @kbd
8888 @kindex C-c '
8889 @item C-c '
8890 Visit the include file at point.
8891 @end table
8893 @node Index entries, Macro replacement, Include files, Markup
8894 @section Index entries
8895 @cindex index entries, for publishing
8897 You can specify entries that will be used for generating an index during
8898 publishing.  This is done by lines starting with @code{#+INDEX}.  An entry
8899 the contains an exclamation mark will create a sub item.  See @ref{Generating
8900 an index} for more information.
8902 @example
8903 * Curriculum Vitae
8904 #+INDEX: CV
8905 #+INDEX: Application!CV
8906 @end example
8911 @node Macro replacement, Embedded LaTeX, Index entries, Markup
8912 @section Macro replacement
8913 @cindex macro replacement, during export
8914 @cindex #+MACRO
8916 You can define text snippets with
8918 @example
8919 #+MACRO: name   replacement text $1, $2 are arguments
8920 @end example
8922 @noindent which can be referenced anywhere in the document (even in
8923 code examples) with @code{@{@{@{name(arg1,arg2)@}@}@}}.  In addition to
8924 defined macros, @code{@{@{@{title@}@}@}}, @code{@{@{@{author@}@}@}}, etc.,
8925 will reference information set by the @code{#+TITLE:}, @code{#+AUTHOR:}, and
8926 similar lines.  Also, @code{@{@{@{date(@var{FORMAT})@}@}@}} and
8927 @code{@{@{@{modification-time(@var{FORMAT})@}@}@}} refer to current date time
8928 and to the modification time of the file being exported, respectively.
8929 @var{FORMAT} should be a format string understood by
8930 @code{format-time-string}.
8932 Macro expansion takes place during export, and some people use it to
8933 construct complex HTML code.
8936 @node Embedded LaTeX,  , Macro replacement, Markup
8937 @section Embedded La@TeX{}
8938 @cindex @TeX{} interpretation
8939 @cindex La@TeX{} interpretation
8941 Plain ASCII is normally sufficient for almost all note taking.  One
8942 exception, however, are scientific notes which need to be able to contain
8943 mathematical symbols and the occasional formula.  La@TeX{}@footnote{La@TeX{}
8944 is a macro system based on Donald E. Knuth's @TeX{} system.  Many of the
8945 features described here as ``La@TeX{}'' are really from @TeX{}, but for
8946 simplicity I am blurring this distinction.}  is widely used to typeset
8947 scientific documents. Org-mode supports embedding La@TeX{} code into its
8948 files, because many academics are used to writing and reading La@TeX{} source
8949 code, and because it can be readily processed to produce pretty output for a
8950 number of export backends.
8952 @menu
8953 * Special symbols::             Greek letters and other symbols
8954 * Subscripts and superscripts::  Simple syntax for raising/lowering text
8955 * LaTeX fragments::             Complex formulas made easy
8956 * Previewing LaTeX fragments::  What will this snippet look like?
8957 * CDLaTeX mode::                Speed up entering of formulas
8958 @end menu
8960 @node Special symbols, Subscripts and superscripts, Embedded LaTeX, Embedded LaTeX
8961 @subsection Special symbols
8962 @cindex math symbols
8963 @cindex special symbols
8964 @cindex @TeX{} macros
8965 @cindex La@TeX{} fragments, markup rules
8966 @cindex HTML entities
8967 @cindex La@TeX{} entities
8969 You can use La@TeX{} macros to insert special symbols like @samp{\alpha} to
8970 indicate the Greek letter, or @samp{\to} to indicate an arrow.  Completion
8971 for these macros is available, just type @samp{\} and maybe a few letters,
8972 and press @kbd{M-@key{TAB}} to see possible completions.  Unlike La@TeX{}
8973 code, Org-mode allows these macros to be present without surrounding math
8974 delimiters, for example:
8976 @example
8977 Angles are written as Greek letters \alpha, \beta and \gamma.
8978 @end example
8980 @vindex org-entities
8981 During export, these symbols will be transformed into the native format of
8982 the exporter backend.  Strings like @code{\alpha} will be exported as
8983 @code{&alpha;} in the HTML output, and as @code{$\alpha$} in the La@TeX{}
8984 output.  Similarly, @code{\nbsp} will become @code{&nbsp;} in HTML and
8985 @code{~} in La@TeX{}.  If you need such a symbol inside a word, terminate it
8986 like this: @samp{\Aacute@{@}stor}.
8988 A large number of entities is provided, with names taken from both HTML and
8989 La@TeX{}, see the variable @code{org-entities} for the complete list.
8990 @samp{\-} is treated as a shy hyphen, and @samp{--}, @samp{---}, and
8991 @samp{...} are all converted into special commands creating hyphens of
8992 different lengths or a compact set of dots.
8994 If you would like to see entities displayed as UTF8 characters, use the
8995 following command@footnote{You can turn this on by default by setting the
8996 variable @code{org-pretty-entities}, or on a per-file base with the
8997 @code{#+STARTUP} option @code{entitiespretty}.}:
8999 @table @kbd
9000 @kindex C-c C-x \
9001 @item C-c C-x \
9002 Toggle display of entities as UTF8 characters.  This does not change the
9003 buffer content which remains plain ASCII, but it overlays the UTF8 character
9004 for display purposes only.
9005 @end table
9007 @node Subscripts and superscripts, LaTeX fragments, Special symbols, Embedded LaTeX
9008 @subsection Subscripts and superscripts
9009 @cindex subscript
9010 @cindex superscript
9012 Just like in La@TeX{}, @samp{^} and @samp{_} are used to indicate super-
9013 and subscripts.  Again, these can be used without embedding them in
9014 math-mode delimiters.  To increase the readability of ASCII text, it is
9015 not necessary (but OK) to surround multi-character sub- and superscripts
9016 with curly braces.  For example
9018 @example
9019 The mass if the sun is M_sun = 1.989 x 10^30 kg.  The radius of
9020 the sun is R_@{sun@} = 6.96 x 10^8 m.
9021 @end example
9023 @vindex org-export-with-sub-superscripts
9024 To avoid interpretation as raised or lowered text, you can quote @samp{^} and
9025 @samp{_} with a backslash: @samp{\^} and @samp{\_}.  If you write a text
9026 where the underscore is often used in a different context, Org's convention
9027 to always interpret these as subscripts can get in your way.  Configure the
9028 variable @code{org-export-with-sub-superscripts} to globally change this
9029 convention, or use, on a per-file basis:
9031 @example
9032 #+OPTIONS: ^:@{@}
9033 @end example
9035 @noindent With this setting, @samp{a_b} will not be interpreted as a
9036 subscript, but @samp{a_@{b@}} will.
9038 @table @kbd
9039 @kindex C-c C-x \
9040 @item C-c C-x \
9041 In addition to showing entities as UTF8 characters, this command will also
9042 format sub- and superscripts in a WYSIWYM way.
9043 @end table
9045 @node LaTeX fragments, Previewing LaTeX fragments, Subscripts and superscripts, Embedded LaTeX
9046 @subsection La@TeX{} fragments
9047 @cindex La@TeX{} fragments
9049 @vindex org-format-latex-header
9050 Going beyond symbols and sub- and superscripts, a full formula language is
9051 needed.  Org-mode can contain La@TeX{} math fragments, and it supports ways
9052 to process these for several export backends.  When exporting to La@TeX{},
9053 the code is obviously left as it is.  When exporting to HTML, Org invokes the
9054 @uref{http://www.mathjax.org, MathJax library} (@pxref{Math formatting in
9055 HTML export}) to process and display the math@footnote{If you plan to use
9056 this regularly or on pages with significant page views, you should install
9057 @file{MathJax} on your own server in order to limit the load of our server.}.
9058 Finally, it can also process the mathematical expressions into
9059 images@footnote{For this to work you need to be on a system with a working
9060 La@TeX{} installation. You also need the @file{dvipng} program, available at
9061 @url{http://sourceforge.net/projects/dvipng/}.  The La@TeX{} header that will
9062 be used when processing a fragment can be configured with the variable
9063 @code{org-format-latex-header}.}  that can be displayed in a browser or in
9064 DocBook documents.
9066 La@TeX{} fragments don't need any special marking at all.  The following
9067 snippets will be identified as La@TeX{} source code:
9068 @itemize @bullet
9069 @item
9070 Environments of any kind@footnote{When @file{MathJax} is used, only the
9071 environment recognized by @file{MathJax} will be processed.  When dvipng is
9072 used to create images, any La@TeX{} environments will be handled.}.  The only
9073 requirement is that the @code{\begin} statement appears on a new line,
9074 preceded by only whitespace.
9075 @item
9076 Text within the usual La@TeX{} math delimiters.  To avoid conflicts with
9077 currency specifications, single @samp{$} characters are only recognized as
9078 math delimiters if the enclosed text contains at most two line breaks, is
9079 directly attached to the @samp{$} characters with no whitespace in between,
9080 and if the closing @samp{$} is followed by whitespace, punctuation or a dash.
9081 For the other delimiters, there is no such restriction, so when in doubt, use
9082 @samp{\(...\)} as inline math delimiters.
9083 @end itemize
9085 @noindent For example:
9087 @example
9088 \begin@{equation@}                          % arbitrary environments,
9089 x=\sqrt@{b@}                                % even tables, figures
9090 \end@{equation@}                            % etc
9092 If $a^2=b$ and \( b=2 \), then the solution must be
9093 either $$ a=+\sqrt@{2@} $$ or \[ a=-\sqrt@{2@} \].
9094 @end example
9096 @noindent
9097 @vindex org-format-latex-options
9098 If you need any of the delimiter ASCII sequences for other purposes, you
9099 can configure the option @code{org-format-latex-options} to deselect the
9100 ones you do not wish to have interpreted by the La@TeX{} converter.
9102 @vindex org-export-with-LaTeX-fragments
9103 LaTeX processing can be configured with the variable
9104 @code{org-export-with-LaTeX-fragments}.  The default setting is @code{t}
9105 which means @file{MathJax} for HTML, and no processing for DocBook, ASCII and
9106 LaTeX backends.  You can also set this variable on a per-file basis using one
9107 of these lines:
9109 @example
9110 #+OPTIONS: LaTeX:t          @r{Do the right thing automatically (MathJax)}
9111 #+OPTIONS: LaTeX:dvipng     @r{Force using dvipng images}
9112 #+OPTIONS: LaTeX:nil        @r{Do not process La@TeX{} fragments at all}
9113 #+OPTIONS: LaTeX:verbatim   @r{Verbatim export, for jsMath or so}
9114 @end example
9116 @node Previewing LaTeX fragments, CDLaTeX mode, LaTeX fragments, Embedded LaTeX
9117 @subsection Previewing LaTeX fragments
9118 @cindex LaTeX fragments, preview
9120 If you have @file{dvipng} installed, La@TeX{} fragments can be processed to
9121 produce preview images of the typeset expressions:
9123 @table @kbd
9124 @kindex C-c C-x C-l
9125 @item C-c C-x C-l
9126 Produce a preview image of the La@TeX{} fragment at point and overlay it
9127 over the source code.  If there is no fragment at point, process all
9128 fragments in the current entry (between two headlines).  When called
9129 with a prefix argument, process the entire subtree.  When called with
9130 two prefix arguments, or when the cursor is before the first headline,
9131 process the entire buffer.
9132 @kindex C-c C-c
9133 @item C-c C-c
9134 Remove the overlay preview images.
9135 @end table
9137 @vindex org-format-latex-options
9138 You can customize the variable @code{org-format-latex-options} to influence
9139 some aspects of the preview. In particular, the @code{:scale} (and for HTML
9140 export, @code{:html-scale}) property can be used to adjust the size of the
9141 preview images.
9143 @node CDLaTeX mode,  , Previewing LaTeX fragments, Embedded LaTeX
9144 @subsection Using CDLa@TeX{} to enter math
9145 @cindex CDLa@TeX{}
9147 CDLa@TeX{} mode is a minor mode that is normally used in combination with a
9148 major La@TeX{} mode like AUC@TeX{} in order to speed-up insertion of
9149 environments and math templates.  Inside Org-mode, you can make use of
9150 some of the features of CDLa@TeX{} mode.  You need to install
9151 @file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
9152 AUC@TeX{}) from @url{http://www.astro.uva.nl/~dominik/Tools/cdlatex}.
9153 Don't use CDLa@TeX{} mode itself under Org-mode, but use the light
9154 version @code{org-cdlatex-mode} that comes as part of Org-mode.  Turn it
9155 on for the current buffer with @code{M-x org-cdlatex-mode}, or for all
9156 Org files with
9158 @lisp
9159 (add-hook 'org-mode-hook 'turn-on-org-cdlatex)
9160 @end lisp
9162 When this mode is enabled, the following features are present (for more
9163 details see the documentation of CDLa@TeX{} mode):
9164 @itemize @bullet
9165 @kindex C-c @{
9166 @item
9167 Environment templates can be inserted with @kbd{C-c @{}.
9168 @item
9169 @kindex @key{TAB}
9170 The @key{TAB} key will do template expansion if the cursor is inside a
9171 La@TeX{} fragment@footnote{Org-mode has a method to test if the cursor is
9172 inside such a fragment, see the documentation of the function
9173 @code{org-inside-LaTeX-fragment-p}.}.  For example, @key{TAB} will
9174 expand @code{fr} to @code{\frac@{@}@{@}} and position the cursor
9175 correctly inside the first brace.  Another @key{TAB} will get you into
9176 the second brace.  Even outside fragments, @key{TAB} will expand
9177 environment abbreviations at the beginning of a line.  For example, if
9178 you write @samp{equ} at the beginning of a line and press @key{TAB},
9179 this abbreviation will be expanded to an @code{equation} environment.
9180 To get a list of all abbreviations, type @kbd{M-x cdlatex-command-help}.
9181 @item
9182 @kindex _
9183 @kindex ^
9184 @vindex cdlatex-simplify-sub-super-scripts
9185 Pressing @kbd{_} and @kbd{^} inside a La@TeX{} fragment will insert these
9186 characters together with a pair of braces.  If you use @key{TAB} to move
9187 out of the braces, and if the braces surround only a single character or
9188 macro, they are removed again (depending on the variable
9189 @code{cdlatex-simplify-sub-super-scripts}).
9190 @item
9191 @kindex `
9192 Pressing the backquote @kbd{`} followed by a character inserts math
9193 macros, also outside La@TeX{} fragments.  If you wait more than 1.5 seconds
9194 after the backquote, a help window will pop up.
9195 @item
9196 @kindex '
9197 Pressing the single-quote @kbd{'} followed by another character modifies
9198 the symbol before point with an accent or a font.  If you wait more than
9199 1.5 seconds after the backquote, a help window will pop up.  Character
9200 modification will work only inside La@TeX{} fragments, outside the quote
9201 is normal.
9202 @end itemize
9204 @node Exporting, Publishing, Markup, Top
9205 @chapter Exporting
9206 @cindex exporting
9208 Org-mode documents can be exported into a variety of other formats.  For
9209 printing and sharing of notes, ASCII export produces a readable and simple
9210 version of an Org file.  HTML export allows you to publish a notes file on
9211 the web, while the XOXO format provides a solid base for exchange with a
9212 broad range of other applications. La@TeX{} export lets you use Org-mode and
9213 its structured editing functions to easily create La@TeX{} files.  DocBook
9214 export makes it possible to convert Org files to many other formats using
9215 DocBook tools.  For project management you can create gantt and resource
9216 charts by using TaskJuggler export.  To incorporate entries with associated
9217 times like deadlines or appointments into a desktop calendar program like
9218 iCal, Org-mode can also produce extracts in the iCalendar format.  Currently
9219 Org-mode only supports export, not import of these different formats.
9221 Org supports export of selected regions when @code{transient-mark-mode} is
9222 enabled (default in Emacs 23).
9224 @menu
9225 * Selective export::            Using tags to select and exclude trees
9226 * Export options::              Per-file export settings
9227 * The export dispatcher::       How to access exporter commands
9228 * ASCII/Latin-1/UTF-8 export::  Exporting to flat files with encoding
9229 * HTML export::                 Exporting to HTML
9230 * LaTeX and PDF export::        Exporting to La@TeX{}, and processing to PDF
9231 * DocBook export::              Exporting to DocBook
9232 * TaskJuggler export::          Exporting to TaskJuggler
9233 * Freemind export::             Exporting to Freemind mind maps
9234 * XOXO export::                 Exporting to XOXO
9235 * iCalendar export::            Exporting in iCalendar format
9236 @end menu
9238 @node Selective export, Export options, Exporting, Exporting
9239 @section Selective export
9240 @cindex export, selective by tags
9242 @vindex org-export-select-tags
9243 @vindex org-export-exclude-tags
9244 You may use tags to select the parts of a document that should be exported,
9245 or to exclude parts from export.  This behavior is governed by two variables:
9246 @code{org-export-select-tags} and @code{org-export-exclude-tags}.
9248 Org first checks if any of the @emph{select} tags is present in the buffer.
9249 If yes, all trees that do not carry one of these tags will be excluded.  If a
9250 selected tree is a subtree, the heading hierarchy above it will also be
9251 selected for export, but not the text below those headings.
9253 @noindent
9254 If none of the select tags is found, the whole buffer will be selected for
9255 export.
9257 @noindent
9258 Finally, all subtrees that are marked by any of the @emph{exclude} tags will
9259 be removed from the export buffer.
9261 @node Export options, The export dispatcher, Selective export, Exporting
9262 @section Export options
9263 @cindex options, for export
9265 @cindex completion, of option keywords
9266 The exporter recognizes special lines in the buffer which provide
9267 additional information.  These lines may be put anywhere in the file.
9268 The whole set of lines can be inserted into the buffer with @kbd{C-c
9269 C-e t}.  For individual lines, a good way to make sure the keyword is
9270 correct is to type @samp{#+} and then use @kbd{M-@key{TAB}} completion
9271 (@pxref{Completion}).   For a summary of other in-buffer settings not
9272 specifically related to export, see @ref{In-buffer settings}.
9273 In particular, note that you can place commonly-used (export) options in
9274 a separate file which can be included using @code{#+SETUPFILE}.
9276 @table @kbd
9277 @orgcmd{C-c C-e t,org-insert-export-options-template}
9278 Insert template with export options, see example below.
9279 @end table
9281 @cindex #+TITLE
9282 @cindex #+AUTHOR
9283 @cindex #+DATE
9284 @cindex #+EMAIL
9285 @cindex #+DESCRIPTION
9286 @cindex #+KEYWORDS
9287 @cindex #+LANGUAGE
9288 @cindex #+TEXT
9289 @cindex #+OPTIONS
9290 @cindex #+BIND
9291 @cindex #+LINK_UP
9292 @cindex #+LINK_HOME
9293 @cindex #+EXPORT_SELECT_TAGS
9294 @cindex #+EXPORT_EXCLUDE_TAGS
9295 @cindex #+XSLT
9296 @cindex #+LATEX_HEADER
9297 @vindex user-full-name
9298 @vindex user-mail-address
9299 @vindex org-export-default-language
9300 @example
9301 #+TITLE:       the title to be shown (default is the buffer name)
9302 #+AUTHOR:      the author (default taken from @code{user-full-name})
9303 #+DATE:        a date, fixed, of a format string for @code{format-time-string}
9304 #+EMAIL:       his/her email address (default from @code{user-mail-address})
9305 #+DESCRIPTION: the page description, e.g. for the XHTML meta tag
9306 #+KEYWORDS:    the page keywords, e.g. for the XHTML meta tag
9307 #+LANGUAGE:    language for HTML, e.g. @samp{en} (@code{org-export-default-language})
9308 #+TEXT:        Some descriptive text to be inserted at the beginning.
9309 #+TEXT:        Several lines may be given.
9310 #+OPTIONS:     H:2 num:t toc:t \n:nil @@:t ::t |:t ^:t f:t TeX:t ...
9311 #+BIND:        lisp-var lisp-val, e.g.: org-export-latex-low-levels itemize
9312                @r{You need to confirm using these, or configure @code{org-export-allow-BIND}}
9313 #+LINK_UP:     the ``up'' link of an exported page
9314 #+LINK_HOME:   the ``home'' link of an exported page
9315 #+LATEX_HEADER: extra line(s) for the LaTeX header, like \usepackage@{xyz@}
9316 #+EXPORT_SELECT_TAGS:   Tags that select a tree for export
9317 #+EXPORT_EXCLUDE_TAGS:  Tags that exclude a tree from export
9318 #+XSLT:        the XSLT stylesheet used by DocBook exporter to generate FO file
9319 @end example
9321 @noindent
9322 The OPTIONS line is a compact@footnote{If you want to configure many options
9323 this way, you can use several OPTIONS lines.} form to specify export settings.  Here
9324 you can:
9325 @cindex headline levels
9326 @cindex section-numbers
9327 @cindex table of contents
9328 @cindex line-break preservation
9329 @cindex quoted HTML tags
9330 @cindex fixed-width sections
9331 @cindex tables
9332 @cindex @TeX{}-like syntax for sub- and superscripts
9333 @cindex footnotes
9334 @cindex special strings
9335 @cindex emphasized text
9336 @cindex @TeX{} macros
9337 @cindex La@TeX{} fragments
9338 @cindex author info, in export
9339 @cindex time info, in export
9340 @example
9341 H:         @r{set the number of headline levels for export}
9342 num:       @r{turn on/off section-numbers}
9343 toc:       @r{turn on/off table of contents, or set level limit (integer)}
9344 \n:        @r{turn on/off line-break-preservation (DOES NOT WORK)}
9345 @@:         @r{turn on/off quoted HTML tags}
9346 ::         @r{turn on/off fixed-width sections}
9347 |:         @r{turn on/off tables}
9348 ^:         @r{turn on/off @TeX{}-like syntax for sub- and superscripts.  If}
9349            @r{you write "^:@{@}", @code{a_@{b@}} will be interpreted, but}
9350            @r{the simple @code{a_b} will be left as it is.}
9351 -:         @r{turn on/off conversion of special strings.}
9352 f:         @r{turn on/off footnotes like this[1].}
9353 todo:      @r{turn on/off inclusion of TODO keywords into exported text}
9354 pri:       @r{turn on/off priority cookies}
9355 tags:      @r{turn on/off inclusion of tags, may also be @code{not-in-toc}}
9356 <:         @r{turn on/off inclusion of any time/date stamps like DEADLINES}
9357 *:         @r{turn on/off emphasized text (bold, italic, underlined)}
9358 TeX:       @r{turn on/off simple @TeX{} macros in plain text}
9359 LaTeX:     @r{configure export of La@TeX{} fragments.  Default @code{auto}}
9360 skip:      @r{turn on/off skipping the text before the first heading}
9361 author:    @r{turn on/off inclusion of author name/email into exported file}
9362 email:     @r{turn on/off inclusion of author email into exported file}
9363 creator:   @r{turn on/off inclusion of creator info into exported file}
9364 timestamp: @r{turn on/off inclusion creation time into exported file}
9365 d:         @r{turn on/off inclusion of drawers}
9366 @end example
9367 @noindent
9368 These options take effect in both the HTML and La@TeX{} export, except
9369 for @code{TeX} and @code{LaTeX}, which are respectively @code{t} and
9370 @code{nil} for the La@TeX{} export.
9372 When exporting only a single subtree by selecting it with @kbd{C-c @@} before
9373 calling an export command, the subtree can overrule some of the file's export
9374 settings with properties @code{EXPORT_FILE_NAME}, @code{EXPORT_TITLE},
9375 @code{EXPORT_TEXT}, @code{EXPORT_AUTHOR}, @code{EXPORT_DATE}, and
9376 @code{EXPORT_OPTIONS}.
9378 @node The export dispatcher, ASCII/Latin-1/UTF-8 export, Export options, Exporting
9379 @section The export dispatcher
9380 @cindex dispatcher, for export commands
9382 All export commands can be reached using the export dispatcher, which is a
9383 prefix key that prompts for an additional key specifying the command.
9384 Normally the entire file is exported, but if there is an active region that
9385 contains one outline tree, the first heading is used as document title and
9386 the subtrees are exported.
9388 @table @kbd
9389 @orgcmd{C-c C-e,org-export}
9390 @vindex org-export-run-in-background
9391 Dispatcher for export and publishing commands.  Displays a help-window
9392 listing the additional key(s) needed to launch an export or publishing
9393 command.  The prefix arg is passed through to the exporter.  A double prefix
9394 @kbd{C-u C-u} causes most commands to be executed in the background, in a
9395 separate Emacs process@footnote{To make this behavior the default, customize
9396 the variable @code{org-export-run-in-background}.}.
9397 @orgcmd{C-c C-e v,org-export-visible}
9398 Like @kbd{C-c C-e}, but only export the text that is currently visible
9399 (i.e. not hidden by outline visibility).
9400 @orgcmd{C-u C-u C-c C-e,org-export}
9401 @vindex org-export-run-in-background
9402 Call an the exporter, but reverse the setting of
9403 @code{org-export-run-in-background}, i.e. request background processing if
9404 not set, or force processing in the current Emacs process if set.
9405 @end table
9407 @node ASCII/Latin-1/UTF-8 export, HTML export, The export dispatcher, Exporting
9408 @section ASCII/Latin-1/UTF-8 export
9409 @cindex ASCII export
9410 @cindex Latin-1 export
9411 @cindex UTF-8 export
9413 ASCII export produces a simple and very readable version of an Org-mode
9414 file, containing only plain ASCII.  Latin-1 and UTF-8 export augment the file
9415 with special characters and symbols available in these encodings.
9417 @cindex region, active
9418 @cindex active region
9419 @cindex transient-mark-mode
9420 @table @kbd
9421 @orgcmd{C-c C-e a,org-export-as-ascii}
9422 @cindex property, EXPORT_FILE_NAME
9423 Export as ASCII file.  For an Org file, @file{myfile.org}, the ASCII file
9424 will be @file{myfile.txt}.  The file will be overwritten without
9425 warning.  If there is an active region@footnote{This requires
9426 @code{transient-mark-mode} be turned on.}, only the region will be
9427 exported. If the selected region is a single tree@footnote{To select the
9428 current subtree, use @kbd{C-c @@}.}, the tree head will
9429 become the document title.  If the tree head entry has or inherits an
9430 @code{EXPORT_FILE_NAME} property, that name will be used for the
9431 export.
9432 @orgcmd{C-c C-e A,org-export-as-ascii-to-buffer}
9433 Export to a temporary buffer, do not create a file.
9434 @orgcmd{C-c C-e n,org-export-as-latin1}
9435 @xorgcmd{C-c C-e N,org-export-as-latin1-to-buffer}
9436 Like the above commands, but use Latin-1 encoding.
9437 @orgcmd{C-c C-e u,org-export-as-utf8}
9438 @xorgcmd{C-c C-e U,org-export-as-utf8-to-buffer}
9439 Like the above commands, but use UTF-8 encoding.
9440 @item C-c C-e v a/n/u
9441 Export only the visible part of the document.
9442 @end table
9444 @cindex headline levels, for exporting
9445 In the exported version, the first 3 outline levels will become
9446 headlines, defining a general document structure.  Additional levels
9447 will be exported as itemized lists.  If you want that transition to occur
9448 at a different level, specify it with a prefix argument.  For example,
9450 @example
9451 @kbd{C-1 C-c C-e a}
9452 @end example
9454 @noindent
9455 creates only top level headlines and does the rest as items.  When
9456 headlines are converted to items, the indentation of the text following
9457 the headline is changed to fit nicely under the item.  This is done with
9458 the assumption that the first body line indicates the base indentation of
9459 the body text.  Any indentation larger than this is adjusted to preserve
9460 the layout relative to the first line.  Should there be lines with less
9461 indentation than the first, these are left alone.
9463 @vindex org-export-ascii-links-to-notes
9464 Links will be exported in a footnote-like style, with the descriptive part in
9465 the text and the link in a note before the next heading.  See the variable
9466 @code{org-export-ascii-links-to-notes} for details and other options.
9468 @node HTML export, LaTeX and PDF export, ASCII/Latin-1/UTF-8 export, Exporting
9469 @section HTML export
9470 @cindex HTML export
9472 Org-mode contains an HTML (XHTML 1.0 strict) exporter with extensive
9473 HTML formatting, in ways similar to John Gruber's @emph{markdown}
9474 language, but with additional support for tables.
9476 @menu
9477 * HTML Export commands::        How to invoke HTML export
9478 * Quoting HTML tags::           Using direct HTML in Org-mode
9479 * Links in HTML export::        How links will be interpreted and formatted
9480 * Tables in HTML export::       How to modify the formatting of tables
9481 * Images in HTML export::       How to insert figures into HTML output
9482 * Math formatting in HTML export::  Beautiful math also on the web
9483 * Text areas in HTML export::   An alternative way to show an example
9484 * CSS support::                 Changing the appearance of the output
9485 * JavaScript support::          Info and Folding in a web browser
9486 @end menu
9488 @node HTML Export commands, Quoting HTML tags, HTML export, HTML export
9489 @subsection HTML export commands
9491 @cindex region, active
9492 @cindex active region
9493 @cindex transient-mark-mode
9494 @table @kbd
9495 @orgcmd{C-c C-e h,org-export-as-html}
9496 @cindex property, EXPORT_FILE_NAME
9497 Export as HTML file @file{myfile.html}.  For an Org file @file{myfile.org},
9498 the ASCII file will be @file{myfile.html}.  The file will be overwritten
9499 without warning.  If there is an active region@footnote{This requires
9500 @code{transient-mark-mode} be turned on.}, only the region will be
9501 exported. If the selected region is a single tree@footnote{To select the
9502 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
9503 title.  If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
9504 property, that name will be used for the export.
9505 @orgcmd{C-c C-e b,org-export-as-html-and-open}
9506 Export as HTML file and immediately open it with a browser.
9507 @orgcmd{C-c C-e H,org-export-as-html-to-buffer}
9508 Export to a temporary buffer, do not create a file.
9509 @orgcmd{C-c C-e R,org-export-region-as-html}
9510 Export the active region to a temporary buffer.  With a prefix argument, do
9511 not produce the file header and footer, but just the plain HTML section for
9512 the region.  This is good for cut-and-paste operations.
9513 @item C-c C-e v h/b/H/R
9514 Export only the visible part of the document.
9515 @item M-x org-export-region-as-html
9516 Convert the region to HTML under the assumption that it was Org-mode
9517 syntax before.  This is a global command that can be invoked in any
9518 buffer.
9519 @item M-x org-replace-region-by-HTML
9520 Replace the active region (assumed to be in Org-mode syntax) by HTML
9521 code.
9522 @end table
9524 @cindex headline levels, for exporting
9525 In the exported version, the first 3 outline levels will become headlines,
9526 defining a general document structure.  Additional levels will be exported as
9527 itemized lists.  If you want that transition to occur at a different level,
9528 specify it with a numeric prefix argument.  For example,
9530 @example
9531 @kbd{C-2 C-c C-e b}
9532 @end example
9534 @noindent
9535 creates two levels of headings and does the rest as items.
9537 @node Quoting HTML tags, Links in HTML export, HTML Export commands, HTML export
9538 @subsection Quoting HTML tags
9540 Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
9541 @samp{&gt;} in HTML export.  If you want to include simple HTML tags
9542 which should be interpreted as such, mark them with @samp{@@} as in
9543 @samp{@@<b>bold text@@</b>}.  Note that this really works only for
9544 simple tags.  For more extensive HTML that should be copied verbatim to
9545 the exported file use either
9547 @cindex #+HTML
9548 @cindex #+BEGIN_HTML
9549 @example
9550 #+HTML: Literal HTML code for export
9551 @end example
9553 @noindent or
9554 @cindex #+BEGIN_HTML
9556 @example
9557 #+BEGIN_HTML
9558 All lines between these markers are exported literally
9559 #+END_HTML
9560 @end example
9563 @node Links in HTML export, Tables in HTML export, Quoting HTML tags, HTML export
9564 @subsection Links in HTML export
9566 @cindex links, in HTML export
9567 @cindex internal links, in HTML export
9568 @cindex external links, in HTML export
9569 Internal links (@pxref{Internal links}) will continue to work in HTML.  This
9570 includes automatic links created by radio targets (@pxref{Radio
9571 targets}).  Links to external files will still work if the target file is on
9572 the same @i{relative} path as the published Org file.  Links to other
9573 @file{.org} files will be translated into HTML links under the assumption
9574 that an HTML version also exists of the linked file, at the same relative
9575 path.  @samp{id:} links can then be used to jump to specific entries across
9576 files.  For information related to linking files while publishing them to a
9577 publishing directory see @ref{Publishing links}.
9579 If you want to specify attributes for links, you can do so using a special
9580 @code{#+ATTR_HTML} line to define attributes that will be added to the
9581 @code{<a>} or @code{<img>} tags.  Here is an example that sets @code{title}
9582 and @code{style} attributes for a link:
9584 @cindex #+ATTR_HTML
9585 @example
9586 #+ATTR_HTML: title="The Org-mode homepage" style="color:red;"
9587 [[http://orgmode.org]]
9588 @end example
9590 @node Tables in HTML export, Images in HTML export, Links in HTML export, HTML export
9591 @subsection Tables
9592 @cindex tables, in HTML
9593 @vindex org-export-html-table-tag
9595 Org-mode tables are exported to HTML using the table tag defined in
9596 @code{org-export-html-table-tag}.  The default setting makes tables without
9597 cell borders and frame.  If you would like to change this for individual
9598 tables, place something like the following before the table:
9600 @cindex #+CAPTION
9601 @cindex #+ATTR_HTML
9602 @example
9603 #+CAPTION: This is a table with lines around and between cells
9604 #+ATTR_HTML: border="2" rules="all" frame="all"
9605 @end example
9607 @node Images in HTML export, Math formatting in HTML export, Tables in HTML export, HTML export
9608 @subsection Images in HTML export
9610 @cindex images, inline in HTML
9611 @cindex inlining images in HTML
9612 @vindex org-export-html-inline-images
9613 HTML export can inline images given as links in the Org file, and
9614 it can make an image the clickable part of a link.  By
9615 default@footnote{But see the variable
9616 @code{org-export-html-inline-images}.}, images are inlined if a link does
9617 not have a description.  So @samp{[[file:myimg.jpg]]} will be inlined,
9618 while @samp{[[file:myimg.jpg][the image]]} will just produce a link
9619 @samp{the image} that points to the image.  If the description part
9620 itself is a @code{file:} link or a @code{http:} URL pointing to an
9621 image, this image will be inlined and activated so that clicking on the
9622 image will activate the link.  For example, to include a thumbnail that
9623 will link to a high resolution version of the image, you could use:
9625 @example
9626 [[file:highres.jpg][file:thumb.jpg]]
9627 @end example
9629 If you need to add attributes to an inlined image, use a @code{#+ATTR_HTML}.
9630 In the example below we specify the @code{alt} and @code{title} attributes to
9631 support text viewers and accessibility, and align it to the right.
9633 @cindex #+CAPTION
9634 @cindex #+ATTR_HTML
9635 @example
9636 #+CAPTION: A black cat stalking a spider
9637 #+ATTR_HTML: alt="cat/spider image" title="Action!" align="right"
9638 [[./img/a.jpg]]
9639 @end example
9641 @noindent
9642 and you could use @code{http} addresses just as well.
9644 @node Math formatting in HTML export, Text areas in HTML export, Images in HTML export, HTML export
9645 @subsection Math formatting in HTML export
9646 @cindex MathJax
9647 @cindex dvipng
9649 La@TeX{} math snippets (@pxref{LaTeX fragments}) can be displayed in two
9650 different ways on HTML pages.  The default is to use the
9651 @uref{http://www.mathjax.org, MathJax system} which should work out of the
9652 box with Org mode installation because @code{http://orgmode.org} serves
9653 @file{MathJax} for Org-mode users for small applications and for testing
9654 purposes.  @b{If you plan to use this regularly or on pages with significant
9655 page views, you should install MathJax on your own server in order to limit
9656 the load of our server.}  To configure @file{MathJax}, use the variable
9657 @code{org-export-html-mathjax-options} or insert something like the following
9658 into the buffer:
9660 @example
9661 #+MATHJAX: align:"left" mathml:t path:"/MathJax/MathJax.js"
9662 @end example
9664 @noindent See the docstring of the variable
9665 @code{org-export-html-mathjax-options} for the meaning of the parameters in
9666 this line.
9668 If you prefer, you can also request that La@TeX{} are processed into small
9669 images that will be inserted into the browser page.  Before the availability
9670 of MathJax, this was the default method for Org files.  This method requires
9671 that the @file{dvipng} program is available on your system.  You can still
9672 get this processing with
9674 @example
9675 #+OPTIONS: LaTeX:dvipng
9676 @end example
9678 @node Text areas in HTML export, CSS support, Math formatting in HTML export, HTML export
9679 @subsection Text areas in HTML export
9681 @cindex text areas, in HTML
9682 An alternative way to publish literal code examples in HTML is to use text
9683 areas, where the example can even be edited before pasting it into an
9684 application.  It is triggered by a @code{-t} switch at an @code{example} or
9685 @code{src} block.  Using this switch disables any options for syntax and
9686 label highlighting, and line numbering, which may be present.  You may also
9687 use @code{-h} and @code{-w} switches to specify the height and width of the
9688 text area, which default to the number of lines in the example, and 80,
9689 respectively.  For example
9691 @example
9692 #+BEGIN_EXAMPLE -t -w 40
9693   (defun org-xor (a b)
9694      "Exclusive or."
9695      (if a (not b) b))
9696 #+END_EXAMPLE
9697 @end example
9700 @node CSS support, JavaScript support, Text areas in HTML export, HTML export
9701 @subsection CSS support
9702 @cindex CSS, for HTML export
9703 @cindex HTML export, CSS
9705 @vindex org-export-html-todo-kwd-class-prefix
9706 @vindex org-export-html-tag-class-prefix
9707 You can also give style information for the exported file.  The HTML exporter
9708 assigns the following special CSS classes@footnote{If the classes on TODO
9709 keywords and tags lead to conflicts, use the variables
9710 @code{org-export-html-todo-kwd-class-prefix} and
9711 @code{org-export-html-tag-class-prefix} to make them unique.} to appropriate
9712 parts of the document---your style specifications may change these, in
9713 addition to any of the standard classes like for headlines, tables, etc.
9714 @example
9715 p.author            @r{author information, including email}
9716 p.date              @r{publishing date}
9717 p.creator           @r{creator info, about org-mode version}
9718 .title              @r{document title}
9719 .todo               @r{TODO keywords, all not-done states}
9720 .done               @r{the DONE keywords, all stated the count as done}
9721 .WAITING            @r{each TODO keyword also uses a class named after itself}
9722 .timestamp          @r{timestamp}
9723 .timestamp-kwd      @r{keyword associated with a timestamp, like SCHEDULED}
9724 .timestamp-wrapper  @r{span around keyword plus timestamp}
9725 .tag                @r{tag in a headline}
9726 ._HOME              @r{each tag uses itself as a class, "@@" replaced by "_"}
9727 .target             @r{target for links}
9728 .linenr             @r{the line number in a code example}
9729 .code-highlighted   @r{for highlighting referenced code lines}
9730 div.outline-N       @r{div for outline level N (headline plus text))}
9731 div.outline-text-N  @r{extra div for text at outline level N}
9732 .section-number-N   @r{section number in headlines, different for each level}
9733 div.figure          @r{how to format an inlined image}
9734 pre.src             @r{formatted source code}
9735 pre.example         @r{normal example}
9736 p.verse             @r{verse paragraph}
9737 div.footnotes       @r{footnote section headline}
9738 p.footnote          @r{footnote definition paragraph, containing a footnote}
9739 .footref            @r{a footnote reference number (always a <sup>)}
9740 .footnum            @r{footnote number in footnote definition (always <sup>)}
9741 @end example
9743 @vindex org-export-html-style-default
9744 @vindex org-export-html-style-include-default
9745 @vindex org-export-html-style
9746 @vindex org-export-html-extra
9747 @vindex org-export-html-style-default
9748 Each exported file contains a compact default style that defines these
9749 classes in a basic way@footnote{This style is defined in the constant
9750 @code{org-export-html-style-default}, which you should not modify.  To turn
9751 inclusion of these defaults off, customize
9752 @code{org-export-html-style-include-default}}.  You may overwrite these
9753 settings, or add to them by using the variables @code{org-export-html-style}
9754 (for Org-wide settings) and @code{org-export-html-style-extra} (for more
9755 granular settings, like file-local settings).  To set the latter variable
9756 individually for each file, you can use
9758 @cindex #+STYLE
9759 @example
9760 #+STYLE: <link rel="stylesheet" type="text/css" href="stylesheet.css" />
9761 @end example
9763 @noindent
9764 For longer style definitions, you can use several such lines.  You could also
9765 directly write a @code{<style>} @code{</style>} section in this way, without
9766 referring to an external file.
9768 In order to add styles to a subtree, use the @code{:HTML_CONTAINER_CLASS:}
9769 property to assign a class to the tree.  In order to specify CSS styles for a
9770 particular headline, you can use the id specified in a @code{:CUSTOM_ID:}
9771 property.
9773 @c FIXME: More about header and footer styles
9774 @c FIXME: Talk about links and targets.
9776 @node JavaScript support,  , CSS support, HTML export
9777 @subsection JavaScript supported display of web pages
9779 @cindex Rose, Sebastian
9780 Sebastian Rose has written a JavaScript program especially designed to
9781 enhance the web viewing experience of HTML files created with Org.  This
9782 program allows you to view large files in two different ways.  The first one
9783 is an @emph{Info}-like mode where each section is displayed separately and
9784 navigation can be done with the @kbd{n} and @kbd{p} keys (and some other keys
9785 as well, press @kbd{?} for an overview of the available keys).  The second
9786 view type is a @emph{folding} view much like Org provides inside Emacs.  The
9787 script is available at @url{http://orgmode.org/org-info.js} and you can find
9788 the documentation for it at @url{http://orgmode.org/worg/code/org-info-js/}.
9789 We host the script at our site, but if you use it a lot, you might
9790 not want to be dependent on @url{orgmode.org} and prefer to install a local
9791 copy on your own web server.
9793 To use the script, you need to make sure that the @file{org-jsinfo.el} module
9794 gets loaded.  It should be loaded by default, but you can try @kbd{M-x
9795 customize-variable @key{RET} org-modules @key{RET}} to convince yourself that
9796 this is indeed the case.  All it then takes to make use of the program is
9797 adding a single line to the Org file:
9799 @cindex #+INFOJS_OPT
9800 @example
9801 #+INFOJS_OPT: view:info toc:nil
9802 @end example
9804 @noindent
9805 If this line is found, the HTML header will automatically contain the code
9806 needed to invoke the script.  Using the line above, you can set the following
9807 viewing options:
9809 @example
9810 path:    @r{The path to the script.  The default is to grab the script from}
9811          @r{@url{http://orgmode.org/org-info.js}, but you might want to have}
9812          @r{a local copy and use a path like @samp{../scripts/org-info.js}.}
9813 view:    @r{Initial view when website is first shown.  Possible values are:}
9814          info      @r{Info-like interface with one section per page.}
9815          overview  @r{Folding interface, initially showing only top-level.}
9816          content   @r{Folding interface, starting with all headlines visible.}
9817          showall   @r{Folding interface, all headlines and text visible.}
9818 sdepth:  @r{Maximum headline level that will still become an independent}
9819          @r{section for info and folding modes.  The default is taken from}
9820          @r{@code{org-export-headline-levels} (= the @code{H} switch in @code{#+OPTIONS}).}
9821          @r{If this is smaller than in @code{org-export-headline-levels}, each}
9822          @r{info/folding section can still contain child headlines.}
9823 toc:     @r{Should the table of content @emph{initially} be visible?}
9824          @r{Even when @code{nil}, you can always get to the "toc" with @kbd{i}.}
9825 tdepth:  @r{The depth of the table of contents.  The defaults are taken from}
9826          @r{the variables @code{org-export-headline-levels} and @code{org-export-with-toc}.}
9827 ftoc:    @r{Does the css of the page specify a fixed position for the "toc"?}
9828          @r{If yes, the toc will never be displayed as a section.}
9829 ltoc:    @r{Should there be short contents (children) in each section?}
9830          @r{Make this @code{above} if the section should be above initial text.}
9831 mouse:   @r{Headings are highlighted when the mouse is over them.  Should be}
9832          @r{@samp{underline} (default) or a background color like @samp{#cccccc}.}
9833 buttons: @r{Should view-toggle buttons be everywhere?  When @code{nil} (the}
9834          @r{default), only one such button will be present.}
9835 @end example
9836 @noindent
9837 @vindex org-infojs-options
9838 @vindex org-export-html-use-infojs
9839 You can choose default values for these options by customizing the variable
9840 @code{org-infojs-options}.  If you always want to apply the script to your
9841 pages, configure the variable @code{org-export-html-use-infojs}.
9843 @node LaTeX and PDF export, DocBook export, HTML export, Exporting
9844 @section La@TeX{} and PDF export
9845 @cindex La@TeX{} export
9846 @cindex PDF export
9847 @cindex Guerry, Bastien
9849 Org-mode contains a La@TeX{} exporter written by Bastien Guerry.  With
9850 further processing@footnote{The default LaTeX output is designed for
9851 processing with pdftex or latex.  It includes packages that are not
9852 compatible with xetex and possibly luatex.  See the variables
9853 @code{org-export-latex-default-packages-alist} and
9854 @code{org-export-latex-packages-alist}.}, this backend is also used to
9855 produce PDF output.  Since the La@TeX{} output uses @file{hyperref} to
9856 implement links and cross references, the PDF output file will be fully
9857 linked.
9859 @menu
9860 * LaTeX/PDF export commands::   Which key invokes which commands
9861 * Header and sectioning::       Setting up the export file structure
9862 * Quoting LaTeX code::          Incorporating literal La@TeX{} code
9863 * Tables in LaTeX export::      Options for exporting tables to La@TeX{}
9864 * Images in LaTeX export::      How to insert figures into La@TeX{} output
9865 * Beamer class export::         Turning the file into a presentation
9866 @end menu
9868 @node LaTeX/PDF export commands, Header and sectioning, LaTeX and PDF export, LaTeX and PDF export
9869 @subsection La@TeX{} export commands
9871 @cindex region, active
9872 @cindex active region
9873 @cindex transient-mark-mode
9874 @table @kbd
9875 @orgcmd{C-c C-e l,org-export-as-latex}
9876 @cindex property EXPORT_FILE_NAME
9877 Export as La@TeX{} file @file{myfile.tex}.  For an Org file
9878 @file{myfile.org}, the ASCII file will be @file{myfile.tex}.  The file will
9879 be overwritten without warning.  If there is an active region@footnote{This
9880 requires @code{transient-mark-mode} be turned on.}, only the region will be
9881 exported. If the selected region is a single tree@footnote{To select the
9882 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
9883 title.  If the tree head entry has or inherits an @code{EXPORT_FILE_NAME}
9884 property, that name will be used for the export.
9885 @orgcmd{C-c C-e L,org-export-as-latex-to-buffer}
9886 Export to a temporary buffer, do not create a file.
9887 @item C-c C-e v l/L 
9888 Export only the visible part of the document.
9889 @item M-x org-export-region-as-latex
9890 Convert the region to La@TeX{} under the assumption that it was Org-mode
9891 syntax before.  This is a global command that can be invoked in any
9892 buffer.
9893 @item M-x org-replace-region-by-latex
9894 Replace the active region (assumed to be in Org-mode syntax) by La@TeX{}
9895 code.
9896 @orgcmd{C-c C-e p,org-export-as-pdf}
9897 Export as La@TeX{} and then process to PDF.
9898 @orgcmd{C-c C-e d,org-export-as-pdf-and-open}
9899 Export as La@TeX{} and then process to PDF, then open the resulting PDF file.
9900 @end table
9902 @cindex headline levels, for exporting
9903 @vindex org-latex-low-levels
9904 In the exported version, the first 3 outline levels will become
9905 headlines, defining a general document structure.  Additional levels
9906 will be exported as description lists.  The exporter can ignore them or
9907 convert them to a custom string depending on
9908 @code{org-latex-low-levels}.
9910 If you want that transition to occur at a different level, specify it
9911 with a numeric prefix argument. For example,
9913 @example
9914 @kbd{C-2 C-c C-e l}
9915 @end example
9917 @noindent
9918 creates two levels of headings and does the rest as items.
9920 @node Header and sectioning, Quoting LaTeX code, LaTeX/PDF export commands, LaTeX and PDF export
9921 @subsection Header and sectioning structure
9922 @cindex La@TeX{} class
9923 @cindex La@TeX{} sectioning structure
9924 @cindex La@TeX{} header
9925 @cindex header, for LaTeX files
9926 @cindex sectioning structure, for LaTeX export
9928 By default, the La@TeX{} output uses the class @code{article}.
9930 @vindex org-export-latex-default-class
9931 @vindex org-export-latex-classes
9932 @vindex org-export-latex-default-packages-alist
9933 @vindex org-export-latex-packages-alist
9934 @cindex #+LATEX_HEADER
9935 @cindex #+LATEX_CLASS
9936 @cindex #+LATEX_CLASS_OPTIONS
9937 @cindex property, LATEX_CLASS
9938 @cindex property, LATEX_CLASS_OPTIONS
9939 You can change this globally by setting a different value for
9940 @code{org-export-latex-default-class} or locally by adding an option like
9941 @code{#+LaTeX_CLASS: myclass} in your file, or with a @code{:LaTeX_CLASS:}
9942 property that applies when exporting a region containing only this (sub)tree.
9943 The class must be listed in @code{org-export-latex-classes}.  This variable
9944 defines a header template for each class@footnote{Into which the values of
9945 @code{org-export-latex-default-packages-alist} and
9946 @code{org-export-latex-packages-alist} are spliced.}, and allows you to
9947 define the sectioning structure for each class.  You can also define your own
9948 classes there.  @code{#+LaTeX_CLASS_OPTIONS} or a @code{LaTeX_CLASS_OPTIONS}
9949 property can specify the options for the @code{\documentclass} macro.  You
9950 can also use @code{#+LATEX_HEADER: \usepackage@{xyz@}} to add lines to the
9951 header.  See the docstring of @code{org-export-latex-classes} for more
9952 information.
9954 @node Quoting LaTeX code, Tables in LaTeX export, Header and sectioning, LaTeX and PDF export
9955 @subsection Quoting La@TeX{} code
9957 Embedded La@TeX{} as described in @ref{Embedded LaTeX}, will be correctly
9958 inserted into the La@TeX{} file.  This includes simple macros like
9959 @samp{\ref@{LABEL@}} to create a cross reference to a figure.  Furthermore,
9960 you can add special code that should only be present in La@TeX{} export with
9961 the following constructs:
9963 @cindex #+LaTeX
9964 @cindex #+BEGIN_LaTeX
9965 @example
9966 #+LaTeX: Literal LaTeX code for export
9967 @end example
9969 @noindent or
9970 @cindex #+BEGIN_LaTeX
9972 @example
9973 #+BEGIN_LaTeX
9974 All lines between these markers are exported literally
9975 #+END_LaTeX
9976 @end example
9979 @node Tables in LaTeX export, Images in LaTeX export, Quoting LaTeX code, LaTeX and PDF export
9980 @subsection Tables in La@TeX{} export
9981 @cindex tables, in La@TeX{} export
9983 For La@TeX{} export of a table, you can specify a label and a caption
9984 (@pxref{Images and tables}).  You can also use the @code{ATTR_LaTeX} line to
9985 request a @code{longtable} environment for the table, so that it may span
9986 several pages, or provide the @code{multicolumn} keyword that will make the
9987 table span the page in a multicolumn environment (@code{table*} environment).
9988 Finally, you can set the alignment string:
9990 @cindex #+CAPTION
9991 @cindex #+LABEL
9992 @cindex #+ATTR_LaTeX
9993 @example
9994 #+CAPTION: A long table
9995 #+LABEL: tbl:long
9996 #+ATTR_LaTeX: longtable align=l|lp@{3cm@}r|l
9997 | ..... | ..... |
9998 | ..... | ..... |
9999 @end example
10002 @node Images in LaTeX export, Beamer class export, Tables in LaTeX export, LaTeX and PDF export
10003 @subsection Images in La@TeX{} export
10004 @cindex images, inline in La@TeX{}
10005 @cindex inlining images in La@TeX{}
10007 Images that are linked to without a description part in the link, like
10008 @samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]} will be inserted into the PDF
10009 output file resulting from La@TeX{} processing.  Org will use an
10010 @code{\includegraphics} macro to insert the image.  If you have specified a
10011 caption and/or a label as described in @ref{Images and tables}, the figure
10012 will be wrapped into a @code{figure} environment and thus become a floating
10013 element.  You can use an @code{#+ATTR_LaTeX:} line to specify the various
10014 options that can be used in the optional argument of the
10015 @code{\includegraphics} macro.  To modify the placement option of the
10016 @code{figure} environment, add something like @samp{placement=[h!]} to the
10017 Attributes.
10019 If you would like to let text flow around the image, add the word @samp{wrap}
10020 to the @code{#+ATTR_LaTeX:} line, which will make the figure occupy the left
10021 half of the page.  To fine-tune, the @code{placement} field will be the set
10022 of additional arguments needed by the @code{wrapfigure} environment.  Note
10023 that if you change the size of the image, you need to use compatible settings
10024 for @code{\includegraphics} and @code{wrapfigure}.
10026 @cindex #+CAPTION
10027 @cindex #+LABEL
10028 @cindex #+ATTR_LaTeX
10029 @example
10030 #+CAPTION:    The black-body emission of the disk around HR 4049
10031 #+LABEL:      fig:SED-HR4049
10032 #+ATTR_LaTeX: width=5cm,angle=90
10033 [[./img/sed-hr4049.pdf]]
10035 #+ATTR_LaTeX: width=0.38\textwidth wrap placement=@{r@}@{0.4\textwidth@}
10036 [[./img/hst.png]]
10037 @end example
10039 If you need references to a label created in this way, write
10040 @samp{\ref@{fig:SED-HR4049@}} just like in La@TeX{}.
10042 @node Beamer class export,  , Images in LaTeX export, LaTeX and PDF export
10043 @subsection Beamer class export
10045 The LaTeX class @file{beamer} allows production of high quality presentations
10046 using LaTeX and pdf processing.  Org-mode has special support for turning an
10047 Org-mode file or tree into a @file{beamer} presentation.
10049 When the LaTeX class for the current buffer (as set with @code{#+LaTeX_CLASS:
10050 beamer}) or subtree (set with a @code{LaTeX_CLASS} property) is
10051 @code{beamer}, a special export mode will turn the file or tree into a beamer
10052 presentation.  Any tree with not-too-deep level nesting should in principle be
10053 exportable as a beamer presentation.  By default, the top-level entries (or
10054 the first level below the selected subtree heading) will be turned into
10055 frames, and the outline structure below this level will become itemize lists.
10056 You can also configure the variable @code{org-beamer-frame-level} to a
10057 different level - then the hierarchy above frames will produce the sectioning
10058 structure of the presentation.
10060 A template for useful in-buffer settings or properties can be inserted into
10061 the buffer with @kbd{M-x org-insert-beamer-options-template}.  Among other
10062 things, this will install a column view format which is very handy for
10063 editing special properties used by beamer.
10065 You can influence the structure of the presentation using the following
10066 properties:
10068 @table @code
10069 @item BEAMER_env
10070 The environment that should be used to format this entry.  Valid environments
10071 are defined in the constant @code{org-beamer-environments-default}, and you
10072 can define more in @code{org-beamer-environments-extra}.  If this property is
10073 set, the entry will also get a @code{:B_environment:} tag to make this
10074 visible.  This tag has no semantic meaning, it is only a visual aid.
10075 @item BEAMER_envargs
10076 The beamer-special arguments that should be used for the environment, like
10077 @code{[t]} or @code{[<+->]} of @code{<2-3>}.  If the @code{BEAMER_col}
10078 property is also set, something like @code{C[t]} can be added here as well to
10079 set an options argument for the implied @code{columns} environment.
10080 @code{c[t]} will set an option for the implied @code{column} environment.
10081 @item BEAMER_col
10082 The width of a column that should start with this entry.  If this property is
10083 set, the entry will also get a @code{:BMCOL:} property to make this visible.
10084 Also this tag is only a visual aid.  When this is a plain number, it will be
10085 interpreted as a fraction of @code{\textwidth}.  Otherwise it will be assumed
10086 that you have specified the units, like @samp{3cm}.  The first such property
10087 in a frame will start a @code{columns} environment to surround the columns.
10088 This environment is closed when an entry has a @code{BEAMER_col} property
10089 with value 0 or 1, or automatically at the end of the frame.
10090 @item BEAMER_extra
10091 Additional commands that should be inserted after the environment has been
10092 opened.  For example, when creating a frame, this can be used to specify
10093 transitions.
10094 @end table
10096 Frames will automatically receive a @code{fragile} option if they contain
10097 source code that uses the verbatim environment.  Special @file{beamer}
10098 specific code can be inserted using @code{#+BEAMER:} and
10099 @code{#+BEGIN_beamer...#+end_beamer} constructs, similar to other export
10100 backends, but with the difference that @code{#+LaTeX:} stuff will be included
10101 in the presentation as well.
10103 Outline nodes with @code{BEAMER_env} property value @samp{note} or
10104 @samp{noteNH} will be formatted as beamer notes, i,e, they will be wrapped
10105 into @code{\note@{...@}}.  The former will include the heading as part of the
10106 note text, the latter will ignore the heading of that node.  To simplify note
10107 generation, it is actually enough to mark the note with a @emph{tag} (either
10108 @code{:B_note:} or @code{:B_noteNH:}) instead of creating the
10109 @code{BEAMER_env} property.
10111 You can turn on a special minor mode @code{org-beamer-mode} for editing
10112 support with
10114 @example
10115 #+STARTUP: beamer
10116 @end example
10118 @table @kbd
10119 @orgcmd{C-c C-b,org-beamer-select-environment}
10120 In @code{org-beamer-mode}, this key offers fast selection of a beamer
10121 environment or the @code{BEAMER_col} property.
10122 @end table
10124 Column view provides a great way to set the environment of a node and other
10125 important parameters.  Make sure you are using a COLUMN format that is geared
10126 toward this special purpose.  The command @kbd{M-x
10127 org-insert-beamer-options-template} defines such a format.
10129 Here is a simple example Org document that is intended for beamer export.
10131 @smallexample
10132 #+LaTeX_CLASS: beamer
10133 #+TITLE: Example Presentation
10134 #+AUTHOR: Carsten Dominik
10135 #+LaTeX_CLASS_OPTIONS: [presentation]
10136 #+BEAMER_FRAME_LEVEL: 2
10137 #+BEAMER_HEADER_EXTRA: \usetheme@{Madrid@}\usecolortheme@{default@}
10138 #+COLUMNS: %35ITEM %10BEAMER_env(Env) %10BEAMER_envargs(Args) %4BEAMER_col(Col) %8BEAMER_extra(Ex)
10140 * This is the first structural section
10142 ** Frame 1 \\ with a subtitle
10143 *** Thanks to Eric Fraga                                      :BMCOL:B_block:
10144     :PROPERTIES:
10145     :BEAMER_env: block
10146     :BEAMER_envargs: C[t]
10147     :BEAMER_col: 0.5
10148     :END:
10149     for the first viable beamer setup in Org
10150 *** Thanks to everyone else                                   :BMCOL:B_block:
10151     :PROPERTIES:
10152     :BEAMER_col: 0.5
10153     :BEAMER_env: block
10154     :BEAMER_envargs: <2->
10155     :END:
10156     for contributing to the discussion
10157 **** This will be formatted as a beamer note                  :B_note:
10158 ** Frame 2 \\ where we will not use columns
10159 *** Request                                                   :B_block:
10160     Please test this stuff!
10161     :PROPERTIES:
10162     :BEAMER_env: block
10163     :END:
10164 @end smallexample
10166 For more information, see the documentation on Worg.
10168 @node DocBook export, TaskJuggler export, LaTeX and PDF export, Exporting
10169 @section DocBook export
10170 @cindex DocBook export
10171 @cindex PDF export
10172 @cindex Cui, Baoqiu
10174 Org contains a DocBook exporter written by Baoqiu Cui.  Once an Org file is
10175 exported to DocBook format, it can be further processed to produce other
10176 formats, including PDF, HTML, man pages, etc., using many available DocBook
10177 tools and stylesheets.
10179 Currently DocBook exporter only supports DocBook V5.0.
10181 @menu
10182 * DocBook export commands::     How to invoke DocBook export
10183 * Quoting DocBook code::        Incorporating DocBook code in Org files
10184 * Recursive sections::          Recursive sections in DocBook
10185 * Tables in DocBook export::    Tables are exported as HTML tables
10186 * Images in DocBook export::    How to insert figures into DocBook output
10187 * Special characters::          How to handle special characters
10188 @end menu
10190 @node DocBook export commands, Quoting DocBook code, DocBook export, DocBook export
10191 @subsection DocBook export commands
10193 @cindex region, active
10194 @cindex active region
10195 @cindex transient-mark-mode
10196 @table @kbd
10197 @orgcmd{C-c C-e D,org-export-as-docbook}
10198 @cindex property EXPORT_FILE_NAME
10199 Export as DocBook file.  For an Org file, @file{myfile.org}, the DocBook XML
10200 file will be @file{myfile.xml}.  The file will be overwritten without
10201 warning.  If there is an active region@footnote{This requires
10202 @code{transient-mark-mode} to be turned on}, only the region will be
10203 exported.  If the selected region is a single tree@footnote{To select the
10204 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
10205 title.  If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
10206 property, that name will be used for the export.
10207 @orgcmd{C-c C-e V,org-export-as-docbook-pdf-and-open}
10208 Export as DocBook file, process to PDF, then open the resulting PDF file.
10210 @vindex org-export-docbook-xslt-proc-command
10211 @vindex org-export-docbook-xsl-fo-proc-command
10212 Note that, in order to produce PDF output based on exported DocBook file, you
10213 need to have XSLT processor and XSL-FO processor software installed on your
10214 system.  Check variables @code{org-export-docbook-xslt-proc-command} and
10215 @code{org-export-docbook-xsl-fo-proc-command}.
10217 @vindex org-export-docbook-xslt-stylesheet
10218 The stylesheet argument @code{%s} in variable
10219 @code{org-export-docbook-xslt-proc-command} is replaced by the value of
10220 variable @code{org-export-docbook-xslt-stylesheet}, which needs to be set by
10221 the user.  You can also overrule this global setting on a per-file basis by
10222 adding an in-buffer setting @code{#+XSLT:} to the Org file.
10224 @orgkey{C-c C-e v D}
10225 Export only the visible part of the document.
10226 @end table
10228 @node Quoting DocBook code, Recursive sections, DocBook export commands, DocBook export
10229 @subsection Quoting DocBook code
10231 You can quote DocBook code in Org files and copy it verbatim into exported
10232 DocBook file with the following constructs:
10234 @cindex #+DOCBOOK
10235 @cindex #+BEGIN_DOCBOOK
10236 @example
10237 #+DOCBOOK: Literal DocBook code for export
10238 @end example
10240 @noindent or
10241 @cindex #+BEGIN_DOCBOOK
10243 @example
10244 #+BEGIN_DOCBOOK
10245 All lines between these markers are exported by DocBook exporter
10246 literally.
10247 #+END_DOCBOOK
10248 @end example
10250 For example, you can use the following lines to include a DocBook warning
10251 admonition.  As to what this warning says, you should pay attention to the
10252 document context when quoting DocBook code in Org files.  You may make
10253 exported DocBook XML files invalid by not quoting DocBook code correctly.
10255 @example
10256 #+BEGIN_DOCBOOK
10257 <warning>
10258   <para>You should know what you are doing when quoting DocBook XML code
10259   in your Org file.  Invalid DocBook XML file may be generated by
10260   DocBook exporter if you are not careful!</para>
10261 </warning>
10262 #+END_DOCBOOK
10263 @end example
10265 @node Recursive sections, Tables in DocBook export, Quoting DocBook code, DocBook export
10266 @subsection Recursive sections
10267 @cindex DocBook recursive sections
10269 DocBook exporter exports Org files as articles using the @code{article}
10270 element in DocBook.  Recursive sections, i.e. @code{section} elements, are
10271 used in exported articles.  Top level headlines in Org files are exported as
10272 top level sections, and lower level headlines are exported as nested
10273 sections.  The entire structure of Org files will be exported completely, no
10274 matter how many nested levels of headlines there are.
10276 Using recursive sections makes it easy to port and reuse exported DocBook
10277 code in other DocBook document types like @code{book} or @code{set}.
10279 @node Tables in DocBook export, Images in DocBook export, Recursive sections, DocBook export
10280 @subsection Tables in DocBook export
10281 @cindex tables, in DocBook export
10283 Tables in Org files are exported as HTML tables, which have been supported since
10284 DocBook V4.3.
10286 If a table does not have a caption, an informal table is generated using the
10287 @code{informaltable} element; otherwise, a formal table will be generated
10288 using the @code{table} element.
10290 @node Images in DocBook export, Special characters, Tables in DocBook export, DocBook export
10291 @subsection Images in DocBook export
10292 @cindex images, inline in DocBook
10293 @cindex inlining images in DocBook
10295 Images that are linked to without a description part in the link, like
10296 @samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]}, will be exported to DocBook
10297 using @code{mediaobject} elements.  Each @code{mediaobject} element contains
10298 an @code{imageobject} that wraps an @code{imagedata} element.  If you have
10299 specified a caption for an image as described in @ref{Images and tables}, a
10300 @code{caption} element will be added in @code{mediaobject}.  If a label is
10301 also specified, it will be exported as an @code{xml:id} attribute of the
10302 @code{mediaobject} element.
10304 @vindex org-export-docbook-default-image-attributes
10305 Image attributes supported by the @code{imagedata} element, like @code{align}
10306 or @code{width}, can be specified in two ways: you can either customize
10307 variable @code{org-export-docbook-default-image-attributes} or use the
10308 @code{#+ATTR_DOCBOOK:} line.  Attributes specified in variable
10309 @code{org-export-docbook-default-image-attributes} are applied to all inline
10310 images in the Org file to be exported (unless they are overridden by image
10311 attributes specified in @code{#+ATTR_DOCBOOK:} lines).
10313 The @code{#+ATTR_DOCBOOK:} line can be used to specify additional image
10314 attributes or override default image attributes for individual images.  If
10315 the same attribute appears in both the @code{#+ATTR_DOCBOOK:} line and
10316 variable @code{org-export-docbook-default-image-attributes}, the former
10317 takes precedence.  Here is an example about how image attributes can be
10318 set:
10320 @cindex #+CAPTION
10321 @cindex #+LABEL
10322 @cindex #+ATTR_DOCBOOK
10323 @example
10324 #+CAPTION:    The logo of Org-mode
10325 #+LABEL:      unicorn-svg
10326 #+ATTR_DOCBOOK: scalefit="1" width="100%" depth="100%"
10327 [[./img/org-mode-unicorn.svg]]
10328 @end example
10330 @vindex org-export-docbook-inline-image-extensions
10331 By default, DocBook exporter recognizes the following image file types:
10332 @file{jpeg}, @file{jpg}, @file{png}, @file{gif}, and @file{svg}.  You can
10333 customize variable @code{org-export-docbook-inline-image-extensions} to add
10334 more types to this list as long as DocBook supports them.
10336 @node Special characters,  , Images in DocBook export, DocBook export
10337 @subsection Special characters in DocBook export
10338 @cindex Special characters in DocBook export
10340 @vindex org-export-docbook-doctype
10341 @vindex org-entities
10342 Special characters that are written in @TeX{}-like syntax, such as @code{\alpha},
10343 @code{\Gamma}, and @code{\Zeta}, are supported by DocBook exporter.  These
10344 characters are rewritten to XML entities, like @code{&alpha;},
10345 @code{&Gamma;}, and @code{&Zeta;}, based on the list saved in variable
10346 @code{org-entities}.  As long as the generated DocBook file includes the
10347 corresponding entities, these special characters are recognized.
10349 You can customize variable @code{org-export-docbook-doctype} to include the
10350 entities you need.  For example, you can set variable
10351 @code{org-export-docbook-doctype} to the following value to recognize all
10352 special characters included in XHTML entities:
10354 @example
10355 "<!DOCTYPE article [
10356 <!ENTITY % xhtml1-symbol PUBLIC
10357 \"-//W3C//ENTITIES Symbol for HTML//EN//XML\"
10358 \"http://www.w3.org/2003/entities/2007/xhtml1-symbol.ent\"
10360 %xhtml1-symbol;
10363 @end example
10365 @node  TaskJuggler export, Freemind export, DocBook export, Exporting
10366 @section TaskJuggler export
10367 @cindex TaskJuggler export
10368 @cindex Project management
10370 @uref{http://www.taskjuggler.org/, TaskJuggler} is a project management tool.
10371 It provides an optimizing scheduler that computes your project time lines and
10372 resource assignments based on the project outline and the constraints that
10373 you have provided.
10375 The TaskJuggler exporter is a bit different from other exporters, such as the
10376 HTML and LaTeX exporters for example, in that it does not export all the
10377 nodes of a document or strictly follow the order of the nodes in the
10378 document.
10380 Instead the TaskJuggler exporter looks for a tree that defines the tasks and
10381 a optionally tree that defines the resources for this project. It then
10382 creates a TaskJuggler file based on these trees and the attributes defined in
10383 all the nodes.
10385 @subsection TaskJuggler export commands
10387 @table @kbd
10388 @orgcmd{C-c C-e j,org-export-as-taskjuggler}
10389 Export as TaskJuggler file.
10391 @orgcmd{C-c C-e J,org-export-as-taskjuggler-and-open}
10392 Export as TaskJuggler file and then open the file with TaskJugglerUI.
10393 @end table
10395 @subsection Tasks
10397 @vindex org-export-taskjuggler-project-tag
10398 Create your tasks as you usually do with Org-mode. Assign efforts to each
10399 task using properties (it's easiest to do this in the column view). You
10400 should end up with something similar to the example by Peter Jones in
10401 @url{http://www.contextualdevelopment.com/static/artifacts/articles/2008/project-planning/project-planning.org}.
10402 Now mark the top node of your tasks with a tag named
10403 @code{:taskjuggler_project:} (or whatever you customized
10404 @code{org-export-taskjuggler-project-tag} to). You are now ready to export
10405 the project plan with @kbd{C-c C-e J} which will export the project plan and
10406 open a gantt chart in TaskJugglerUI.
10408 @subsection Resources
10410 @vindex org-export-taskjuggler-resource-tag
10411 Next you can define resources and assign those to work on specific tasks. You
10412 can group your resources hierarchically. Tag the top node of the resources
10413 with @code{:taskjuggler_resource:} (or whatever you customized
10414 @code{org-export-taskjuggler-resource-tag} to). You can optionally assign an
10415 identifier (named @samp{resource_id}) to the resources (using the standard
10416 Org properties commands, @pxref{Property syntax}) or you can let the exporter
10417 generate identifiers automatically (the exporter picks the first word of the
10418 headline as the identifier as long as it is unique, see the documentation of
10419 @code{org-taskjuggler-get-unique-id}). Using that identifier you can then
10420 allocate resources to tasks. This is again done with the @samp{allocate}
10421 property on the tasks. Do this in column view or when on the task type
10422 @kbd{C-c C-x p allocate @key{RET} <resource_id> @key{RET}}.
10424 Once the allocations are done you can again export to TaskJuggler and check
10425 in the Resource Allocation Graph which person is working on what task at what
10426 time.
10428 @subsection Export of properties
10430 The exporter also takes TODO state information into consideration, i.e. if a
10431 task is marked as done it will have the corresponding attribute in
10432 TaskJuggler (@samp{complete 100}). Also it will export any property on a task
10433 resource or resource node which is known to TaskJuggler, such as
10434 @samp{limits}, @samp{vacation}, @samp{shift}, @samp{booking},
10435 @samp{efficiency}, @samp{journalentry}, @samp{rate} for resources or
10436 @samp{account}, @samp{start}, @samp{note}, @samp{duration}, @samp{end},
10437 @samp{journalentry}, @samp{milestone}, @samp{reference}, @samp{responsible},
10438 @samp{scheduling}, etc for tasks.
10440 @subsection Dependencies
10442 The exporter will handle dependencies that are defined in the tasks either
10443 with the @samp{ORDERED} attribute (@pxref{TODO dependencies}), with the
10444 @samp{BLOCKER} attribute (see org-depend.el) or alternatively with a
10445 @samp{depends} attribute. Both the @samp{BLOCKER} and the @samp{depends}
10446 attribute can be either @samp{previous-sibling} or a reference to an
10447 identifier (named @samp{task_id}) which is defined for another task in the
10448 project. @samp{BLOCKER} and the @samp{depends} attribute can define multiple
10449 dependencies separated by either space or comma. You can also specify
10450 optional attributes on the dependency by simply appending it. The following
10451 examples should illustrate this:
10453 @example
10454 * Preparation
10455   :PROPERTIES:
10456   :task_id:  preparation
10457   :ORDERED:  t
10458   :END:
10459 * Training material
10460   :PROPERTIES:
10461   :task_id:  training_material
10462   :ORDERED:  t
10463   :END:
10464 ** Markup Guidelines
10465    :PROPERTIES:
10466    :Effort:   2.0
10467    :END:
10468 ** Workflow Guidelines
10469    :PROPERTIES:
10470    :Effort:   2.0
10471    :END:
10472 * Presentation
10473   :PROPERTIES:
10474   :Effort:   2.0
10475   :BLOCKER:  training_material @{ gapduration 1d @} preparation
10476   :END:
10477 @end example
10479 @subsection Reports
10481 @vindex org-export-taskjuggler-default-reports
10482 TaskJuggler can produce many kinds of reports (e.g. gantt chart, resource
10483 allocation, etc). The user defines what kind of reports should be generated
10484 for a project in the TaskJuggler file. The exporter will automatically insert
10485 some default reports in the file. These defaults are defined in
10486 @code{org-export-taskjuggler-default-reports}. They can be modified using
10487 customize along with a number of other options. For a more complete list, see
10488 @kbd{M-x customize-group @key{RET} org-export-taskjuggler @key{RET}}.
10490 For more information and examples see the Org-taskjuggler tutorial at
10491 @uref{http://orgmode.org/worg/org-tutorials/org-taskjuggler.php}.
10493 @node Freemind export, XOXO export, TaskJuggler export, Exporting
10494 @section Freemind export
10495 @cindex Freemind export
10496 @cindex mind map
10498 The Freemind exporter was written by Lennart Borgman.
10500 @table @kbd
10501 @orgcmd{C-c C-e m,org-export-as-freemind}
10502 Export as Freemind mind map @file{myfile.mm}.
10503 @end table
10505 @node XOXO export, iCalendar export, Freemind export, Exporting
10506 @section XOXO export
10507 @cindex XOXO export
10509 Org-mode contains an exporter that produces XOXO-style output.
10510 Currently, this exporter only handles the general outline structure and
10511 does not interpret any additional Org-mode features.
10513 @table @kbd
10514 @orgcmd{C-c C-e x,org-export-as-xoxo}
10515 Export as XOXO file @file{myfile.html}.
10516 @orgkey{C-c C-e v x}
10517 Export only the visible part of the document.
10518 @end table
10520 @node iCalendar export,  , XOXO export, Exporting
10521 @section iCalendar export
10522 @cindex iCalendar export
10524 @vindex org-icalendar-include-todo
10525 @vindex org-icalendar-use-deadline
10526 @vindex org-icalendar-use-scheduled
10527 @vindex org-icalendar-categories
10528 @vindex org-icalendar-alarm-time
10529 Some people use Org-mode for keeping track of projects, but still prefer a
10530 standard calendar application for anniversaries and appointments.  In this
10531 case it can be useful to show deadlines and other time-stamped items in Org
10532 files in the calendar application.  Org-mode can export calendar information
10533 in the standard iCalendar format.  If you also want to have TODO entries
10534 included in the export, configure the variable
10535 @code{org-icalendar-include-todo}.  Plain timestamps are exported as VEVENT,
10536 and TODO items as VTODO.  It will also create events from deadlines that are
10537 in non-TODO items.  Deadlines and scheduling dates in TODO items will be used
10538 to set the start and due dates for the TODO entry@footnote{See the variables
10539 @code{org-icalendar-use-deadline} and @code{org-icalendar-use-scheduled}.}.
10540 As categories, it will use the tags locally defined in the heading, and the
10541 file/tree category@footnote{To add inherited tags or the TODO state,
10542 configure the variable @code{org-icalendar-categories}.}.  See the variable
10543 @code{org-icalendar-alarm-time} for a way to assign alarms to entries with a
10544 time.
10546 @vindex org-icalendar-store-UID
10547 @cindex property, ID
10548 The iCalendar standard requires each entry to have a globally unique
10549 identifier (UID).  Org creates these identifiers during export.  If you set
10550 the variable @code{org-icalendar-store-UID}, the UID will be stored in the
10551 @code{:ID:} property of the entry and re-used next time you report this
10552 entry.  Since a single entry can give rise to multiple iCalendar entries (as
10553 a timestamp, a deadline, a scheduled item, and as a TODO item), Org adds
10554 prefixes to the UID, depending on what triggered the inclusion of the entry.
10555 In this way the UID remains unique, but a synchronization program can still
10556 figure out from which entry all the different instances originate.
10558 @table @kbd
10559 @orgcmd{C-c C-e i,org-export-icalendar-this-file}
10560 Create iCalendar entries for the current file and store them in the same
10561 directory, using a file extension @file{.ics}.
10562 @orgcmd{C-c C-e I, org-export-icalendar-all-agenda-files}
10563 @vindex org-agenda-files
10564 Like @kbd{C-c C-e i}, but do this for all files in
10565 @code{org-agenda-files}.  For each of these files, a separate iCalendar
10566 file will be written.
10567 @orgcmd{C-c C-e c,org-export-icalendar-combine-agenda-files}
10568 @vindex org-combined-agenda-icalendar-file
10569 Create a single large iCalendar file from all files in
10570 @code{org-agenda-files} and write it to the file given by
10571 @code{org-combined-agenda-icalendar-file}.
10572 @end table
10574 @vindex org-use-property-inheritance
10575 @vindex org-icalendar-include-body
10576 @cindex property, SUMMARY
10577 @cindex property, DESCRIPTION
10578 @cindex property, LOCATION
10579 The export will honor SUMMARY, DESCRIPTION and LOCATION@footnote{The LOCATION
10580 property can be inherited from higher in the hierarchy if you configure
10581 @code{org-use-property-inheritance} accordingly.} properties if the selected
10582 entries have them.  If not, the summary will be derived from the headline,
10583 and the description from the body (limited to
10584 @code{org-icalendar-include-body} characters).
10586 How this calendar is best read and updated, depends on the application
10587 you are using.  The FAQ covers this issue.
10589 @node Publishing, Working With Source Code, Exporting, Top
10590 @chapter Publishing
10591 @cindex publishing
10593 Org includes a publishing management system that allows you to configure
10594 automatic HTML conversion of @emph{projects} composed of interlinked org
10595 files.  You can also configure Org to automatically upload your exported HTML
10596 pages and related attachments, such as images and source code files, to a web
10597 server.
10599 You can also use Org to convert files into PDF, or even combine HTML and PDF
10600 conversion so that files are available in both formats on the server.
10602 Publishing has been contributed to Org by David O'Toole.
10604 @menu
10605 * Configuration::               Defining projects
10606 * Uploading files::             How to get files up on the server
10607 * Sample configuration::        Example projects
10608 * Triggering publication::      Publication commands
10609 @end menu
10611 @node Configuration, Uploading files, Publishing, Publishing
10612 @section Configuration
10614 Publishing needs significant configuration to specify files, destination
10615 and many other properties of a project.
10617 @menu
10618 * Project alist::               The central configuration variable
10619 * Sources and destinations::    From here to there
10620 * Selecting files::             What files are part of the project?
10621 * Publishing action::           Setting the function doing the publishing
10622 * Publishing options::          Tweaking HTML export
10623 * Publishing links::            Which links keep working after publishing?
10624 * Sitemap::                     Generating a list of all pages
10625 * Generating an index::         An index that reaches across pages
10626 @end menu
10628 @node Project alist, Sources and destinations, Configuration, Configuration
10629 @subsection The variable @code{org-publish-project-alist}
10630 @cindex org-publish-project-alist
10631 @cindex projects, for publishing
10633 @vindex org-publish-project-alist
10634 Publishing is configured almost entirely through setting the value of one
10635 variable, called @code{org-publish-project-alist}.  Each element of the list
10636 configures one project, and may be in one of the two following forms:
10638 @lisp
10639    ("project-name" :property value :property value ...) 
10640      @r{i.e. a well-formed property list with alternating keys and values}
10641 @r{or}
10642    ("project-name" :components ("project-name" "project-name" ...))
10644 @end lisp
10646 In both cases, projects are configured by specifying property values.  A
10647 project defines the set of files that will be published, as well as the
10648 publishing configuration to use when publishing those files.  When a project
10649 takes the second form listed above, the individual members of the
10650 @code{:components} property are taken to be sub-projects, which group
10651 together files requiring different publishing options.  When you publish such
10652 a ``meta-project'', all the components will also be published, in the
10653 sequence given.
10655 @node Sources and destinations, Selecting files, Project alist, Configuration
10656 @subsection Sources and destinations for files
10657 @cindex directories, for publishing
10659 Most properties are optional, but some should always be set.  In
10660 particular, Org needs to know where to look for source files,
10661 and where to put published files.
10663 @multitable @columnfractions 0.3 0.7
10664 @item @code{:base-directory}
10665 @tab Directory containing publishing source files
10666 @item @code{:publishing-directory}
10667 @tab Directory where output files will be published.  You can directly
10668 publish to a webserver using a file name syntax appropriate for
10669 the Emacs @file{tramp} package.  Or you can publish to a local directory and
10670 use external tools to upload your website (@pxref{Uploading files}).
10671 @item @code{:preparation-function}
10672 @tab Function or list of functions to be called before starting the
10673 publishing process, for example, to run @code{make} for updating files to be
10674 published.  The project property list is scoped into this call as the
10675 variable @code{project-plist}.
10676 @item @code{:completion-function}
10677 @tab Function or list of functions called after finishing the publishing
10678 process, for example, to change permissions of the resulting files.  The
10679 project property list is scoped into this call as the variable
10680 @code{project-plist}.
10681 @end multitable
10682 @noindent
10684 @node Selecting files, Publishing action, Sources and destinations, Configuration
10685 @subsection Selecting files
10686 @cindex files, selecting for publishing
10688 By default, all files with extension @file{.org} in the base directory
10689 are considered part of the project.  This can be modified by setting the
10690 properties
10691 @multitable @columnfractions 0.25 0.75
10692 @item @code{:base-extension}
10693 @tab Extension (without the dot!) of source files.  This actually is a
10694 regular expression.  Set this to the symbol @code{any} if you want to get all
10695 files in @code{:base-directory}, even without extension.
10697 @item @code{:exclude}
10698 @tab Regular expression to match file names that should not be
10699 published, even though they have been selected on the basis of their
10700 extension.
10702 @item @code{:include}
10703 @tab List of files to be included regardless of @code{:base-extension}
10704 and @code{:exclude}.
10705 @end multitable
10707 @node Publishing action, Publishing options, Selecting files, Configuration
10708 @subsection Publishing action
10709 @cindex action, for publishing
10711 Publishing means that a file is copied to the destination directory and
10712 possibly transformed in the process.  The default transformation is to export
10713 Org files as HTML files, and this is done by the function
10714 @code{org-publish-org-to-html} which calls the HTML exporter (@pxref{HTML
10715 export}).  But you also can publish your content as PDF files using
10716 @code{org-publish-org-to-pdf}, or as @code{ascii}, @code{latin1} or
10717 @code{utf8} encoded files using the corresponding functions.  If you want to
10718 publish the Org file itself, but with @i{archived}, @i{commented}, and
10719 @i{tag-excluded} trees removed, use @code{org-publish-org-to-org} and set the
10720 parameters @code{:plain-source} and/or @code{:htmlized-source}.  This will
10721 produce @file{file.org} and @file{file.org.html} in the publishing
10722 directory@footnote{@file{file-source.org} and @file{file-source.org.html} if
10723 source and publishing directories are equal.  Note that with this kind of
10724 setup, you need to add @code{:exclude "-source\\.org"} to the project
10725 definition in @code{org-publish-project-alist} to avoid that the published
10726 source files will be considered as new org files the next time the project is
10727 published.}.  Other files like images only need to be copied to the
10728 publishing destination, for this you may use @code{org-publish-attachment}.
10729 For non-Org files, you always need to specify the publishing function:
10731 @multitable @columnfractions 0.3 0.7
10732 @item @code{:publishing-function}
10733 @tab Function executing the publication of a file.  This may also be a
10734 list of functions, which will all be called in turn.
10735 @item @code{:plain-source}
10736 @tab Non-nil means, publish plain source.
10737 @item @code{:htmlized-source}
10738 @tab Non-nil means, publish htmlized source.
10739 @end multitable
10741 The function must accept three arguments: a property list containing at least
10742 a @code{:publishing-directory} property, the name of the file to be
10743 published, and the path to the publishing directory of the output file.  It
10744 should take the specified file, make the necessary transformation (if any)
10745 and place the result into the destination folder.
10747 @node Publishing options, Publishing links, Publishing action, Configuration
10748 @subsection Options for the HTML/La@TeX{} exporters
10749 @cindex options, for publishing
10751 The property list can be used to set many export options for the HTML
10752 and La@TeX{} exporters.  In most cases, these properties correspond to user
10753 variables in Org.  The table below lists these properties along
10754 with the variable they belong to.  See the documentation string for the
10755 respective variable for details.
10757 @vindex org-export-html-link-up
10758 @vindex org-export-html-link-home
10759 @vindex org-export-default-language
10760 @vindex org-display-custom-times
10761 @vindex org-export-headline-levels
10762 @vindex org-export-with-section-numbers
10763 @vindex org-export-section-number-format
10764 @vindex org-export-with-toc
10765 @vindex org-export-preserve-breaks
10766 @vindex org-export-with-archived-trees
10767 @vindex org-export-with-emphasize
10768 @vindex org-export-with-sub-superscripts
10769 @vindex org-export-with-special-strings
10770 @vindex org-export-with-footnotes
10771 @vindex org-export-with-drawers
10772 @vindex org-export-with-tags
10773 @vindex org-export-with-todo-keywords
10774 @vindex org-export-with-priority
10775 @vindex org-export-with-TeX-macros
10776 @vindex org-export-with-LaTeX-fragments
10777 @vindex org-export-skip-text-before-1st-heading
10778 @vindex org-export-with-fixed-width
10779 @vindex org-export-with-timestamps
10780 @vindex org-export-author-info
10781 @vindex org-export-email
10782 @vindex org-export-creator-info
10783 @vindex org-export-with-tables
10784 @vindex org-export-highlight-first-table-line
10785 @vindex org-export-html-style-include-default
10786 @vindex org-export-html-style
10787 @vindex org-export-html-style-extra
10788 @vindex org-export-html-link-org-files-as-html
10789 @vindex org-export-html-inline-images
10790 @vindex org-export-html-extension
10791 @vindex org-export-html-table-tag
10792 @vindex org-export-html-expand
10793 @vindex org-export-html-with-timestamp
10794 @vindex org-export-publishing-directory
10795 @vindex org-export-html-preamble
10796 @vindex org-export-html-postamble
10797 @vindex org-export-html-auto-preamble
10798 @vindex org-export-html-auto-postamble
10799 @vindex user-full-name
10800 @vindex user-mail-address
10801 @vindex org-export-select-tags
10802 @vindex org-export-exclude-tags
10804 @multitable @columnfractions 0.32 0.68
10805 @item @code{:link-up}               @tab @code{org-export-html-link-up}
10806 @item @code{:link-home}             @tab @code{org-export-html-link-home}
10807 @item @code{:language}              @tab @code{org-export-default-language}
10808 @item @code{:customtime}            @tab @code{org-display-custom-times}
10809 @item @code{:headline-levels}       @tab @code{org-export-headline-levels}
10810 @item @code{:section-numbers}       @tab @code{org-export-with-section-numbers}
10811 @item @code{:section-number-format} @tab @code{org-export-section-number-format}
10812 @item @code{:table-of-contents}     @tab @code{org-export-with-toc}
10813 @item @code{:preserve-breaks}       @tab @code{org-export-preserve-breaks}
10814 @item @code{:archived-trees}        @tab @code{org-export-with-archived-trees}
10815 @item @code{:emphasize}             @tab @code{org-export-with-emphasize}
10816 @item @code{:sub-superscript}       @tab @code{org-export-with-sub-superscripts}
10817 @item @code{:special-strings}       @tab @code{org-export-with-special-strings}
10818 @item @code{:footnotes}             @tab @code{org-export-with-footnotes}
10819 @item @code{:drawers}               @tab @code{org-export-with-drawers}
10820 @item @code{:tags}                  @tab @code{org-export-with-tags}
10821 @item @code{:todo-keywords}         @tab @code{org-export-with-todo-keywords}
10822 @item @code{:priority}              @tab @code{org-export-with-priority}
10823 @item @code{:TeX-macros}            @tab @code{org-export-with-TeX-macros}
10824 @item @code{:LaTeX-fragments}       @tab @code{org-export-with-LaTeX-fragments}
10825 @item @code{:latex-listings}        @tab @code{org-export-latex-listings}
10826 @item @code{:skip-before-1st-heading} @tab @code{org-export-skip-text-before-1st-heading}
10827 @item @code{:fixed-width}           @tab @code{org-export-with-fixed-width}
10828 @item @code{:timestamps}            @tab @code{org-export-with-timestamps}
10829 @item @code{:author-info}           @tab @code{org-export-author-info}
10830 @item @code{:email-info}            @tab @code{org-export-email-info}
10831 @item @code{:creator-info}          @tab @code{org-export-creator-info}
10832 @item @code{:tables}                @tab @code{org-export-with-tables}
10833 @item @code{:table-auto-headline}   @tab @code{org-export-highlight-first-table-line}
10834 @item @code{:style-include-default} @tab @code{org-export-html-style-include-default}
10835 @item @code{:style}                 @tab @code{org-export-html-style}
10836 @item @code{:style-extra}           @tab @code{org-export-html-style-extra}
10837 @item @code{:convert-org-links}     @tab @code{org-export-html-link-org-files-as-html}
10838 @item @code{:inline-images}         @tab @code{org-export-html-inline-images}
10839 @item @code{:html-extension}        @tab @code{org-export-html-extension}
10840 @item @code{:xml-declaration}       @tab @code{org-export-html-xml-declaration}
10841 @item @code{:html-table-tag}        @tab @code{org-export-html-table-tag}
10842 @item @code{:expand-quoted-html}    @tab @code{org-export-html-expand}
10843 @item @code{:timestamp}             @tab @code{org-export-html-with-timestamp}
10844 @item @code{:publishing-directory}  @tab @code{org-export-publishing-directory}
10845 @item @code{:preamble}              @tab @code{org-export-html-preamble}
10846 @item @code{:postamble}             @tab @code{org-export-html-postamble}
10847 @item @code{:auto-preamble}         @tab @code{org-export-html-auto-preamble}
10848 @item @code{:auto-postamble}        @tab @code{org-export-html-auto-postamble}
10849 @item @code{:author}                @tab @code{user-full-name}
10850 @item @code{:email}                 @tab @code{user-mail-address} : @code{addr;addr;..}
10851 @item @code{:select-tags}           @tab @code{org-export-select-tags}
10852 @item @code{:exclude-tags}          @tab @code{org-export-exclude-tags}
10853 @item @code{:latex-image-options}   @tab @code{org-export-latex-image-default-option}
10854 @end multitable
10856 Most of the @code{org-export-with-*} variables have the same effect in
10857 both HTML and La@TeX{} exporters, except for @code{:TeX-macros} and
10858 @code{:LaTeX-fragments}, respectively @code{nil} and @code{t} in the
10859 La@TeX{} export.
10861 @vindex org-publish-project-alist
10862 When a property is given a value in @code{org-publish-project-alist},
10863 its setting overrides the value of the corresponding user variable (if
10864 any) during publishing.  Options set within a file (@pxref{Export
10865 options}), however, override everything.
10867 @node Publishing links, Sitemap, Publishing options, Configuration
10868 @subsection Links between published files
10869 @cindex links, publishing
10871 To create a link from one Org file to another, you would use
10872 something like @samp{[[file:foo.org][The foo]]} or simply
10873 @samp{file:foo.org.} (@pxref{Hyperlinks}).  When published, this link
10874 becomes a link to @file{foo.html}.  In this way, you can interlink the
10875 pages of your "org web" project and the links will work as expected when
10876 you publish them to HTML.  If you also publish the Org source file and want
10877 to link to that, use an @code{http:} link instead of a @code{file:} link,
10878 because @code{file:} links are converted to link to the corresponding
10879 @file{html} file.
10881 You may also link to related files, such as images. Provided you are careful
10882 with relative file names, and provided you have also configured Org to upload
10883 the related files, these links will work too. See @ref{Complex example}, for
10884 an example of this usage.
10886 Sometimes an Org file to be published may contain links that are
10887 only valid in your production environment, but not in the publishing
10888 location.  In this case, use the property
10890 @multitable @columnfractions 0.4 0.6
10891 @item @code{:link-validation-function}
10892 @tab Function to validate links
10893 @end multitable
10895 @noindent
10896 to define a function for checking link validity.  This function must
10897 accept two arguments, the file name and a directory relative to which
10898 the file name is interpreted in the production environment.  If this
10899 function returns @code{nil}, then the HTML generator will only insert a
10900 description into the HTML file, but no link.  One option for this
10901 function is @code{org-publish-validate-link} which checks if the given
10902 file is part of any project in @code{org-publish-project-alist}.
10904 @node Sitemap, Generating an index, Publishing links, Configuration
10905 @subsection Generating a sitemap
10906 @cindex sitemap, of published pages
10908 The following properties may be used to control publishing of
10909 a map of files for a given project.
10911 @multitable @columnfractions 0.35 0.65
10912 @item @code{:auto-sitemap}
10913 @tab When non-nil, publish a sitemap during @code{org-publish-current-project}
10914 or @code{org-publish-all}.
10916 @item @code{:sitemap-filename}
10917 @tab Filename for output of sitemap. Defaults to @file{sitemap.org} (which
10918 becomes @file{sitemap.html}).
10920 @item @code{:sitemap-title}
10921 @tab Title of sitemap page. Defaults to name of file.
10923 @item @code{:sitemap-function}
10924 @tab Plug-in function to use for generation of the sitemap.
10925 Defaults to @code{org-publish-org-sitemap}, which generates a plain list
10926 of links to all files in the project.
10928 @item @code{:sitemap-sort-folders}
10929 @tab Where folders should appear in the sitemap.  Set this to @code{first}
10930 (default) or @code{last} to display folders first or last,
10931 respectively.  Any other value will mix files and folders.
10933 @item @code{:sitemap-alphabetically}
10934 @tab The site map is normally sorted alphabetically.  Set this explicitly to
10935 @code{nil} to turn off sorting.
10937 @item @code{:sitemap-ignore-case}
10938 @tab Should sorting be case-sensitive?  Default @code{nil}.
10940 @end multitable
10942 @node Generating an index,  , Sitemap, Configuration
10943 @subsection Generating an index
10944 @cindex index, in a publishing project
10946 Org-mode can generate an index across the files of a publishing project.
10948 @multitable @columnfractions 0.25 0.75
10949 @item @code{:makeindex}
10950 @tab When non-nil, generate in index in the file @file{theindex.org} and
10951 publish it as @file{theindex.html}.
10952 @end multitable
10954 The file will be create when first publishing a project with the
10955 @code{:makeindex} set.  The file only contains a statement @code{#+include:
10956 "theindex.inc"}.  You can then built around this include statement by adding
10957 a title, style information etc.
10959 @node Uploading files, Sample configuration, Configuration, Publishing
10960 @section Uploading files
10961 @cindex rsync
10962 @cindex unison
10964 For those people already utilizing third party sync tools such as
10965 @command{rsync} or @command{unison}, it might be preferable not to use the built in
10966 @i{remote} publishing facilities of Org-mode which rely heavily on
10967 Tramp.  Tramp, while very useful and powerful, tends not to be
10968 so efficient for multiple file transfer and has been known to cause problems
10969 under heavy usage.
10971 Specialized synchronization utilities offer several advantages.  In addition
10972 to timestamp comparison, they also do content and permissions/attribute
10973 checks.  For this reason you might prefer to publish your web to a local
10974 directory (possibly even @i{in place} with your Org files) and then use
10975 @file{unison} or @file{rsync} to do the synchronization with the remote host.
10977 Since Unison (for example) can be configured as to which files to transfer to
10978 a certain remote destination, it can greatly simplify the project publishing
10979 definition.  Simply keep all files in the correct location, process your Org
10980 files with @code{org-publish} and let the synchronization tool do the rest.
10981 You do not need, in this scenario, to include attachments such as @file{jpg},
10982 @file{css} or @file{gif} files in the project definition since the 3rd party
10983 tool syncs them.
10985 Publishing to a local directory is also much faster than to a remote one, so
10986 that you can afford more easily to republish entire projects.  If you set
10987 @code{org-publish-use-timestamps-flag} to @code{nil}, you gain the main
10988 benefit of re-including any changed external files such as source example
10989 files you might include with @code{#+INCLUDE}.  The timestamp mechanism in
10990 Org is not smart enough to detect if included files have been modified.
10992 @node Sample configuration, Triggering publication, Uploading files, Publishing
10993 @section Sample configuration
10995 Below we provide two example configurations.  The first one is a simple
10996 project publishing only a set of Org files.  The second example is
10997 more complex, with a multi-component project.
10999 @menu
11000 * Simple example::              One-component publishing
11001 * Complex example::             A multi-component publishing example
11002 @end menu
11004 @node Simple example, Complex example, Sample configuration, Sample configuration
11005 @subsection Example: simple publishing configuration
11007 This example publishes a set of Org files to the @file{public_html}
11008 directory on the local machine.
11010 @lisp
11011 (setq org-publish-project-alist
11012       '(("org"
11013          :base-directory "~/org/"
11014          :publishing-directory "~/public_html"
11015          :section-numbers nil
11016          :table-of-contents nil
11017          :style "<link rel=\"stylesheet\"
11018                 href=\"../other/mystyle.css\"
11019                 type=\"text/css\"/>")))
11020 @end lisp
11022 @node Complex example,  , Simple example, Sample configuration
11023 @subsection Example: complex publishing configuration
11025 This more complicated example publishes an entire website, including
11026 Org files converted to HTML, image files, Emacs Lisp source code, and
11027 style sheets. The publishing directory is remote and private files are
11028 excluded.
11030 To ensure that links are preserved, care should be taken to replicate
11031 your directory structure on the web server, and to use relative file
11032 paths. For example, if your Org files are kept in @file{~/org} and your
11033 publishable images in @file{~/images}, you would link to an image with
11035 @example
11036 file:../images/myimage.png
11037 @end example
11039 On the web server, the relative path to the image should be the
11040 same. You can accomplish this by setting up an "images" folder in the
11041 right place on the web server, and publishing images to it.
11043 @lisp
11044 (setq org-publish-project-alist
11045       '(("orgfiles"
11046           :base-directory "~/org/"
11047           :base-extension "org"
11048           :publishing-directory "/ssh:user@@host:~/html/notebook/"
11049           :publishing-function org-publish-org-to-html
11050           :exclude "PrivatePage.org"   ;; regexp
11051           :headline-levels 3
11052           :section-numbers nil
11053           :table-of-contents nil
11054           :style "<link rel=\"stylesheet\"
11055                   href=\"../other/mystyle.css\" type=\"text/css\"/>"
11056           :auto-preamble t
11057           :auto-postamble nil)
11059          ("images"
11060           :base-directory "~/images/"
11061           :base-extension "jpg\\|gif\\|png"
11062           :publishing-directory "/ssh:user@@host:~/html/images/"
11063           :publishing-function org-publish-attachment)
11065          ("other"
11066           :base-directory "~/other/"
11067           :base-extension "css\\|el"
11068           :publishing-directory "/ssh:user@@host:~/html/other/"
11069           :publishing-function org-publish-attachment)
11070          ("website" :components ("orgfiles" "images" "other"))))
11071 @end lisp
11073 @node Triggering publication,  , Sample configuration, Publishing
11074 @section Triggering publication
11076 Once properly configured, Org can publish with the following commands:
11078 @table @kbd
11079 @orgcmd{C-c C-e X,org-publish}
11080 Prompt for a specific project and publish all files that belong to it.
11081 @orgcmd{C-c C-e P,org-publish-current-project}
11082 Publish the project containing the current file.
11083 @orgcmd{C-c C-e F,org-publish-current-file}
11084 Publish only the current file.
11085 @orgcmd{C-c C-e E,org-publish-all}
11086 Publish every project.
11087 @end table
11089 @vindex org-publish-use-timestamps-flag
11090 Org uses timestamps to track when a file has changed. The above functions
11091 normally only publish changed files. You can override this and force
11092 publishing of all files by giving a prefix argument to any of the commands
11093 above, or by customizing the variable @code{org-publish-use-timestamps-flag}.
11094 This may be necessary in particular if files include other files via
11095 @code{#+SETUPFILE:} or @code{#+INCLUDE:}.
11097 @comment  node-name,  next,  previous,  up
11098 @comment Working With Source Code, Miscellaneous, Publishing, Top
11100 @node Working With Source Code, Miscellaneous, Publishing, Top
11101 @chapter Working with source code
11102 @cindex Schulte, Eric
11103 @cindex Davison, Dan
11104 @cindex source code, working with
11106 Source code can be included in Org-mode documents using a @samp{src} block,
11107 e.g.
11109 @example
11110 #+BEGIN_SRC emacs-lisp
11111   (defun org-xor (a b)
11112      "Exclusive or."
11113      (if a (not b) b))
11114 #+END_SRC
11115 @end example
11117 Org-mode provides a number of features for working with live source code,
11118 including editing of code blocks in their native major-mode, evaluation of
11119 code blocks, tangling of code blocks, and exporting code blocks and their
11120 results in several formats.  This functionality was contributed by Eric
11121 Schulte and Dan Davison, and was originally named Org-babel.
11123 The following sections describe Org-mode's code block handling facilities.
11125 @menu
11126 * Structure of code blocks::    Code block syntax described
11127 * Editing source code::         Language major-mode editing
11128 * Exporting code blocks::       Export contents and/or results
11129 * Extracting source code::      Create pure source code files
11130 * Evaluating code blocks::      Place results of evaluation in the Org-mode buffer
11131 * Library of Babel::            Use and contribute to a library of useful code blocks
11132 * Languages::                   List of supported code block languages
11133 * Header arguments::            Configure code block functionality
11134 * Results of evaluation::       How evaluation results are handled
11135 * Noweb reference syntax::      Literate programming in Org-mode
11136 * Key bindings and useful functions::  Work quickly with code blocks
11137 * Batch execution::             Call functions from the command line
11138 @end menu
11140 @comment  node-name,  next,  previous,  up
11141 @comment  Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
11143 @node Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
11144 @section Structure of code blocks
11145 @cindex code block, structure
11146 @cindex source code, block structure
11148 The structure of code blocks is as follows:
11150 @example
11151 #+srcname: <name>
11152 #+begin_src <language> <switches> <header arguments>
11153   <body>
11154 #+end_src
11155 @end example
11157 code blocks can also be embedded in text as so called inline code blocks as
11159 @example
11160 src_<language>@{<body>@}
11161 @end example
11165 @example
11166 src_<language>[<header arguments>]@{<body>@}
11167 @end example
11169 @table @code
11170 @item <name>
11171 This name is associated with the code block.  This is similar to the
11172 @samp{#+tblname} lines that can be used to name tables in Org-mode files.
11173 Referencing the name of a code block makes it possible to evaluate the
11174 block from other places in the file, other files, or from Org-mode table
11175 formulas (see @ref{The spreadsheet}).
11176 @item <language>
11177 The language of the code in the block.
11178 @item <switches>
11179 Switches controlling exportation of the code block (see switches discussion in
11180 @ref{Literal examples})
11181 @item <header arguments>
11182 Optional header arguments control many aspects of evaluation, export and
11183 tangling of code blocks. See the @ref{Header arguments}
11184 section. Header arguments can also be set on a per-buffer or per-subtree
11185 basis using properties.
11186 @item <body>
11187 The source code.
11188 @end table
11190 @comment  node-name,  next,  previous,  up
11191 @comment  Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
11193 @node Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
11194 @section Editing source code
11195 @cindex code block, editing
11196 @cindex source code, editing
11198 @kindex C-c '
11199 Use @kbd{C-c '} to edit the current code block. This brings up
11200 a language major-mode edit buffer containing the body of the code
11201 block. Saving this buffer will write the new contents back to the Org
11202 buffer. Use @kbd{C-c '} again to exit.
11204 The @code{org-src-mode} minor mode will be active in the edit buffer. The
11205 following variables can be used to configure the behavior of the edit
11206 buffer. See also the customization group @code{org-edit-structure} for
11207 further configuration options.
11209 @table @code
11210 @item org-src-lang-modes
11211 If an Emacs major-mode named @code{<lang>-mode} exists, where
11212 @code{<lang>} is the language named in the header line of the code block,
11213 then the edit buffer will be placed in that major-mode. This variable
11214 can be used to map arbitrary language names to existing major modes.
11215 @item org-src-window-setup
11216 Controls the way Emacs windows are rearranged when the edit buffer is created.
11217 @item org-src-preserve-indentation
11218 This variable is especially useful for tangling languages such as
11219 python, in which whitespace indentation in the output is critical.
11220 @item org-src-ask-before-returning-to-edit-buffer
11221 By default, Org will ask before returning to an open edit buffer. Set
11222 this variable to nil to switch without asking.
11223 @end table
11225 @comment  node-name,  next,  previous,  up
11226 @comment  Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
11228 @node Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
11229 @section Exporting code blocks
11230 @cindex code block, exporting
11231 @cindex source code, exporting
11233 It is possible to export the @emph{contents} of code blocks, the
11234 @emph{results} of code block evaluation, @emph{neither}, or @emph{both}.  For
11235 most languages, the default exports the contents of code blocks. However, for
11236 some languages (e.g. @code{ditaa}) the default exports the results of code
11237 block evaluation.  For information on exporting code block bodies, see
11238 @ref{Literal examples}.
11240 The @code{:exports} header argument can be used to specify export
11241 behavior:
11243 @subsubheading Header arguments:
11244 @table @code
11245 @item :exports code
11246 The default in most languages. The body of the code block is exported, as
11247 described in @ref{Literal examples}.
11248 @item :exports results
11249 The code block will be evaluated and the results will be placed in the
11250 Org-mode buffer for export, either updating previous results of the code
11251 block located anywhere in the buffer or, if no previous results exist,
11252 placing the results immediately after the code block.  The body of the code
11253 block will not be exported.
11254 @item :exports both
11255 Both the code block and its results will be exported.
11256 @item :exports none
11257 Neither the code block nor its results will be exported.
11258 @end table
11260 It is possible to inhibit the evaluation of code blocks during export.
11261 Setting the the @code{org-export-babel-evaluate} variable to @code{nil} will
11262 ensure that no code blocks are evaluated as part of the export process.  This
11263 can be useful in situations where potentially untrusted Org-mode files are
11264 exported in an automated fashion, for example when Org-mode is used as the
11265 markup language for a wiki.
11267 @comment  node-name,  next,  previous,  up
11268 @comment  Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
11269 @node Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
11270 @section Extracting source code
11271 @cindex source code, extracting
11272 @cindex code block, extracting source code
11274 Creating pure source code files by extracting code from source blocks is
11275 referred to as ``tangling''---a term adopted from the literate programming
11276 community.  During ``tangling'' of code blocks their bodies are expanded
11277 using @code{org-babel-expand-src-block} which can expand both variable and
11278 ``noweb'' style references  (see @ref{Noweb reference syntax}).
11280 @subsubheading Header arguments
11281 @table @code
11282 @item :tangle no
11283 The default.  The code block is not included in the tangled output.
11284 @item :tangle yes
11285 Include the code block in the tangled output. The output file name is the
11286 name of the org file with the extension @samp{.org} replaced by the extension
11287 for the block language.
11288 @item :tangle filename
11289 Include the code block in the tangled output to file @samp{filename}.
11290 @end table
11292 @kindex  C-c C-v t
11293 @subsubheading Functions
11294 @table @code
11295 @item org-babel-tangle 
11296 Tangle the current file.  Bound to @kbd{C-c C-v t}.
11297 @item org-babel-tangle-file
11298 Choose a file to tangle.   Bound to @kbd{C-c C-v f}.
11299 @end table
11301 @subsubheading Hooks
11302 @table @code
11303 @item org-babel-post-tangle-hook
11304 This hook is run from within code files tangled by @code{org-babel-tangle}.
11305 Example applications could include post-processing, compilation or evaluation
11306 of tangled code files.
11307 @end table
11309 @node Evaluating code blocks, Library of Babel, Extracting source code, Working With Source Code
11310 @section Evaluating code blocks
11311 @cindex code block, evaluating
11312 @cindex source code, evaluating
11314 Code blocks can be evaluated@footnote{Whenever code is evaluated there is a
11315 potential for that code to do harm.  Org-mode provides a number of safeguards
11316 to ensure that it only evaluates code with explicit confirmation from the
11317 user.  For information on these safeguards (and on how to disable them) see
11318 @ref{Code evaluation security}.} and the results placed in the Org-mode
11319 buffer.  By default, evaluation is only turned on for @code{emacs-lisp} code
11320 blocks, however support exists for evaluating blocks in many languages.  See
11321 @ref{Languages} for a list of supported languages.  See @ref{Structure of
11322 code blocks} for information on the syntax used to define a code block.
11324 @kindex C-c C-c
11325 There are a number of ways to evaluate code blocks.  The simplest is to press
11326 @kbd{C-c C-c} or @kbd{C-c C-v e} with the point on a code block@footnote{The
11327 @code{org-babel-no-eval-on-ctrl-c-ctrl-c} variable can be used to remove code
11328 evaluation from the @kbd{C-c C-c} key binding.}.  This will call the
11329 @code{org-babel-execute-src-block} function to evaluate the block and insert
11330 its results into the Org-mode buffer.
11332 It is also possible to evaluate named code blocks from anywhere in an
11333 Org-mode buffer or an Org-mode table.  @code{#+call} (or synonymously
11334 @code{#+function} or @code{#+lob}) lines can be used to remotely execute code
11335 blocks located in the current Org-mode buffer or in the ``Library of Babel''
11336 (see @ref{Library of Babel}).  These lines use the following syntax.
11338 @example
11339 #+call: <name>(<arguments>) <header arguments>
11340 #+function: <name>(<arguments>) <header arguments>
11341 #+lob: <name>(<arguments>) <header arguments>
11342 @end example
11344 @table @code
11345 @item <name>
11346 The name of the code block to be evaluated.
11347 @item <arguments>
11348 Arguments specified in this section will be passed to the code block.
11349 @item <header arguments>
11350 Header arguments can be placed after the function invocation.  See
11351 @ref{Header arguments} for more information on header arguments.
11352 @end table
11355 @node Library of Babel, Languages, Evaluating code blocks, Working With Source Code
11356 @section Library of Babel
11357 @cindex babel, library of
11358 @cindex source code, library
11359 @cindex code block, library
11361 The ``Library of Babel'' is a library of code blocks
11362 that can be called from any Org-mode file.  The library is housed in an
11363 Org-mode file located in the @samp{contrib} directory of Org-mode.
11364 Org-mode users can deposit functions they believe to be generally
11365 useful in the library.
11367 Code blocks defined in the ``Library of Babel'' can be called remotely as if
11368 they were in the current Org-mode buffer (see @ref{Evaluating code blocks}
11369 for information on the syntax of remote code block evaluation).
11371 @kindex C-c C-v i
11372 Code blocks located in any Org-mode file can be loaded into the ``Library of
11373 Babel'' with the @code{org-babel-lob-ingest} function, bound to @kbd{C-c C-v
11376 @node Languages, Header arguments, Library of Babel, Working With Source Code
11377 @section Languages
11378 @cindex babel, languages
11379 @cindex source code, languages
11380 @cindex code block, languages
11382 Code blocks in the following languages are supported.
11384 @multitable @columnfractions 0.28 0.3 0.22 0.2
11385 @item @b{Language} @tab @b{Identifier} @tab @b{Language} @tab @b{Identifier}
11386 @item Asymptote @tab asymptote @tab C @tab C
11387 @item C++ @tab C++ @tab Clojure @tab clojure
11388 @item css @tab css @tab ditaa @tab ditaa
11389 @item Graphviz @tab dot @tab Emacs Lisp @tab emacs-lisp
11390 @item gnuplot @tab gnuplot @tab Haskell @tab haskell
11391 @item LaTeX @tab latex @tab Matlab @tab matlab
11392 @item Mscgen @tab mscgen @tab Objective Caml @tab ocaml
11393 @item Octave @tab octave @tab OZ @tab oz
11394 @item Perl @tab perl @tab Python @tab python
11395 @item R @tab R @tab Ruby @tab ruby
11396 @item Sass @tab sass @tab GNU Screen @tab screen
11397 @item shell @tab sh @tab SQL @tab sql
11398 @item Sqlite @tab sqlite
11399 @end multitable
11401 Language-specific documentation is available for some languages.  If
11402 available, it can be found at
11403 @uref{http://orgmode.org/worg/org-contrib/babel/languages}.
11405 The @code{org-babel-load-languages} controls which languages are enabled for
11406 evaluation (by default only @code{emacs-lisp} is enabled).  This variable can
11407 be set using the customization interface or by adding code like the following
11408 to your emacs configuration.
11410 @quotation
11411 The following disables @code{emacs-lisp} evaluation and enables evaluation of
11412 @code{R} code blocks.
11413 @end quotation
11415 @lisp
11416 (org-babel-do-load-languages
11417  'org-babel-load-languages
11418  '((emacs-lisp . nil)
11419    (R . t)))
11420 @end lisp
11422 It is also possible to enable support for a language by loading the related
11423 elisp file with @code{require}.
11425 @quotation
11426 The following adds support for evaluating @code{clojure} code blocks.
11427 @end quotation
11429 @lisp
11430 (require 'ob-clojure)
11431 @end lisp
11433 @node Header arguments, Results of evaluation, Languages, Working With Source Code
11434 @section Header arguments
11435 @cindex code block, header arguments
11436 @cindex source code, block header arguments
11438 Code block functionality can be configured with header arguments.  This
11439 section provides an overview of the use of header arguments, and then
11440 describes each header argument in detail.
11442 @menu
11443 * Using header arguments::      Different ways to set header arguments
11444 * Specific header arguments::   List of header arguments
11445 @end menu
11447 @node Using header arguments, Specific header arguments, Header arguments, Header arguments
11448 @subsection Using header arguments
11450 The values of header arguments can be set in six different ways, each more
11451 specific (and having higher priority) than the last.
11452 @menu
11453 * System-wide header arguments::  Set global default values
11454 * Language-specific header arguments::  Set default values by language
11455 * Buffer-wide header arguments::  Set default values for a specific buffer
11456 * Header arguments in Org-mode properties::  Set default values for a buffer or heading
11457 * Code block specific header arguments::  The most common way to set values
11458 * Header arguments in function calls::  The most specific level
11459 @end menu
11462 @node System-wide header arguments, Language-specific header arguments, Using header arguments, Using header arguments
11463 @subsubheading System-wide header arguments
11464 @vindex org-babel-default-header-args
11465 System-wide values of header arguments can be specified by customizing the
11466 @code{org-babel-default-header-args} variable:
11468 @example
11469 :session    => "none"
11470 :results    => "replace"
11471 :exports    => "code"
11472 :cache      => "no"
11473 :noweb      => "no"
11474 @end example
11476 @c @example
11477 @c   org-babel-default-header-args is a variable defined in `org-babel.el'.
11478 @c   Its value is
11479 @c   ((:session . "none")
11480 @c    (:results . "replace")
11481 @c    (:exports . "code")
11482 @c    (:cache . "no")
11483 @c    (:noweb . "no"))
11486 @c   Documentation:
11487 @c   Default arguments to use when evaluating a code block.
11488 @c @end example
11490 For example, the following example could be used to set the default value of
11491 @code{:noweb} header arguments to @code{yes}.  This would have the effect of
11492 expanding @code{:noweb} references by default when evaluating source code
11493 blocks.
11495 @lisp
11496 (setq org-babel-default-header-args
11497 (cons '(:noweb . "yes")
11498 (assq-delete-all :noweb org-babel-default-header-args)))
11499 @end lisp
11501 @node Language-specific header arguments, Buffer-wide header arguments, System-wide header arguments, Using header arguments
11502 @subsubheading Language-specific header arguments
11503 Each language can define its own set of default header arguments.  See the
11504 language-specific documentation available online at
11505 @uref{http://orgmode.org/worg/org-contrib/babel}.
11507 @node Buffer-wide header arguments, Header arguments in Org-mode properties, Language-specific header arguments, Using header arguments
11508 @subsubheading Buffer-wide header arguments
11509 Buffer-wide header arguments may be specified through the use of a special
11510 line placed anywhere in an Org-mode file.  The line consists of the
11511 @code{#+BABEL:} keyword followed by a series of header arguments which may be
11512 specified using the standard header argument syntax.
11514 For example the following would set @code{session} to @code{*R*}, and
11515 @code{results} to @code{silent} for every code block in the buffer, ensuring
11516 that all execution took place in the same session, and no results would be
11517 inserted into the buffer.
11519 @example
11520 #+BABEL: :session *R* :results silent
11521 @end example
11523 @node Header arguments in Org-mode properties, Code block specific header arguments, Buffer-wide header arguments, Using header arguments
11524 @subsubheading Header arguments in Org-mode properties
11526 Header arguments are also read from Org-mode properties (see @ref{Property
11527 syntax}), which can be set on a buffer-wide or per-heading basis. An example
11528 of setting a header argument for all code blocks in a buffer is
11530 @example
11531 #+property: tangle yes
11532 @end example
11534 When properties are used to set default header arguments, they are looked up
11535 with inheritance, so the value of the @code{:cache} header argument will default
11536 to @code{yes} in all code blocks in the subtree rooted at the following
11537 heading:
11539 @example
11540 * outline header
11541 :PROPERTIES:
11542 :cache:    yes
11543 :END:
11544 @end example
11546 @kindex C-c C-x p
11547 @vindex org-babel-default-header-args
11548 Properties defined in this way override the properties set in
11549 @code{org-babel-default-header-args}.  It is convenient to use the
11550 @code{org-set-property} function bound to @kbd{C-c C-x p} to set properties
11551 in Org-mode documents.
11553 @node Code block specific header arguments, Header arguments in function calls, Header arguments in Org-mode properties, Using header arguments
11554 @subsubheading Code block specific header arguments
11556 The most common way to assign values to header arguments is at the
11557 code block level.  This can be done by listing a sequence of header
11558 arguments and their values as part of the @code{#+begin_src} line.
11559 Properties set in this way override both the values of
11560 @code{org-babel-default-header-args} and header arguments specified as
11561 properties.  In the following example, the @code{:results} header argument
11562 is set to @code{silent}, meaning the results of execution will not be
11563 inserted in the buffer, and the @code{:exports} header argument is set to
11564 @code{code}, meaning only the body of the code block will be
11565 preserved on export to HTML or LaTeX.
11567 @example
11568 #+source: factorial
11569 #+begin_src haskell :results silent :exports code :var n=0
11570 fac 0 = 1
11571 fac n = n * fac (n-1)
11572 #+end_src
11573 @end example
11574 Similarly, it is possible to set header arguments for inline code blocks:
11576 @example
11577 src_haskell[:exports both]@{fac 5@}
11578 @end example
11580 @node Header arguments in function calls,  , Code block specific header arguments, Using header arguments
11581 @comment  node-name,  next,  previous,  up
11582 @subsubheading Header arguments in function calls
11584 At the most specific level, header arguments for ``Library of Babel'' or
11585 function call lines can be set as shown below:
11587 @example
11588 #+call: factorial(n=5) :exports results
11589 @end example
11591 @node Specific header arguments,  , Using header arguments, Header arguments
11592 @subsection Specific header arguments
11593 The following header arguments are defined:
11595 @menu
11596 * var::                         Pass arguments to code blocks
11597 * results::                     Specify the type of results and how they will
11598                                 be collected and handled
11599 * file::                        Specify a path for file output
11600 * dir::                         Specify the default (possibly remote)
11601                                 directory for code block execution
11602 * exports::                     Export code and/or results
11603 * tangle::                      Toggle tangling and specify file name
11604 * comments::                    Toggle insertion of comments in tangled
11605                                 code files
11606 * no-expand::                   Turn off variable assignment and noweb
11607                                 expansion during tangling
11608 * session::                     Preserve the state of code evaluation
11609 * noweb::                       Toggle expansion of noweb references
11610 * cache::                       Avoid re-evaluating unchanged code blocks
11611 * hlines::                      Handle horizontal lines in tables
11612 * colnames::                    Handle column names in tables
11613 * rownames::                    Handle row names in tables
11614 * shebang::                     Make tangled files executable
11615 * eval::                        Limit evaluation of specific code blocks
11616 @end menu
11618 @node var, results, Specific header arguments, Specific header arguments
11619 @subsubsection @code{:var}
11620 The @code{:var} header argument is used to pass arguments to code blocks.
11621 The specifics of how arguments are included in a code block vary by language;
11622 these are addressed in the language-specific documentation. However, the
11623 syntax used to specify arguments is the same across all languages.  The
11624 values passed to arguments can be literal values, values from org-mode tables
11625 and literal example blocks, or the results of other code blocks.
11627 These values can be indexed in a manner similar to arrays---see the
11628 ``indexable variable values'' heading below.
11630 The following syntax is used to pass arguments to code blocks using the
11631 @code{:var} header argument.
11633 @example
11634 :var name=assign
11635 @end example
11637 where @code{assign} can take one of the following forms
11639 @itemize @bullet
11640 @item literal value
11641 either a string @code{"string"} or a number @code{9}.
11642 @item reference
11643 a table name:
11645 @example
11646 #+tblname: example-table
11647 | 1 |
11648 | 2 |
11649 | 3 |
11650 | 4 |
11652 #+source: table-length
11653 #+begin_src emacs-lisp :var table=example-table
11654 (length table)
11655 #+end_src
11657 #+results: table-length
11658 : 4
11659 @end example
11661 a code block name, as assigned by @code{#+srcname:}, followed by
11662 parentheses:
11664 @example
11665 #+begin_src emacs-lisp :var length=table-length()
11666 (* 2 length)
11667 #+end_src
11669 #+results:
11670 : 8
11671 @end example
11673 In addition, an argument can be passed to the code block referenced
11674 by @code{:var}.  The argument is passed within the parentheses following the
11675 code block name:
11677 @example
11678 #+source: double
11679 #+begin_src emacs-lisp :var input=8
11680 (* 2 input)
11681 #+end_src
11683 #+results: double
11684 : 16
11686 #+source: squared
11687 #+begin_src emacs-lisp :var input=double(input=1)
11688 (* input input)
11689 #+end_src
11691 #+results: squared
11692 : 4
11693 @end example
11694 @end itemize
11696 @subsubheading Alternate argument syntax
11697 It is also possible to specify arguments in a potentially more natural way
11698 using the @code{#+source:} line of a code block.  As in the following
11699 example arguments can be packed inside of parenthesis, separated by commas,
11700 following the source name.
11702 @example
11703 #+source: double(input=0, x=2)
11704 #+begin_src emacs-lisp
11705 (* 2 (+ input x))
11706 #+end_src
11707 @end example
11709 @subsubheading Indexable variable values
11710 It is possible to reference portions of variable values by ``indexing'' into
11711 the variables.  Indexes are 0 based with negative values counting back from
11712 the end.  If an index is separated by @code{,}s then each subsequent section
11713 will index into the next deepest nesting or dimension of the value.  The
11714 following example assigns the last cell of the first row the table
11715 @code{example-table} to the variable @code{data}:
11717 @example
11718 #+results: example-table
11719 | 1 | a |
11720 | 2 | b |
11721 | 3 | c |
11722 | 4 | d |
11724 #+begin_src emacs-lisp :var data=example-table[0,-1]
11725   data
11726 #+end_src
11728 #+results:
11729 : a
11730 @end example
11732 Ranges of variable values can be referenced using two integers separated by a
11733 @code{:}, in which case the entire inclusive range is referenced.  For
11734 example the following assigns the middle three rows of @code{example-table}
11735 to @code{data}.
11737 @example
11738 #+results: example-table
11739 | 1 | a |
11740 | 2 | b |
11741 | 3 | c |
11742 | 4 | d |
11743 | 5 | 3 |
11745 #+begin_src emacs-lisp :var data=example-table[1:3]
11746   data
11747 #+end_src
11749 #+results:
11750 | 2 | b |
11751 | 3 | c |
11752 | 4 | d |
11753 @end example
11755 Additionally, an empty index, or the single character @code{*}, are both
11756 interpreted to mean the entire range and as such are equivalent to
11757 @code{0:-1}, as shown in the following example in which the entire first
11758 column is referenced.
11760 @example
11761 #+results: example-table
11762 | 1 | a |
11763 | 2 | b |
11764 | 3 | c |
11765 | 4 | d |
11767 #+begin_src emacs-lisp :var data=example-table[,0]
11768   data
11769 #+end_src
11771 #+results:
11772 | 1 | 2 | 3 | 4 |
11773 @end example
11775 It is possible to index into the results of code blocks as well as tables.
11776 Any number of dimensions can be indexed.  Dimensions are separated from one
11777 another by commas, as shown in the following example.
11779 @example
11780 #+source: 3D
11781 #+begin_src emacs-lisp
11782   '(((1  2  3)  (4  5  6)  (7  8  9))
11783     ((10 11 12) (13 14 15) (16 17 18))
11784     ((19 20 21) (22 23 24) (25 26 27)))
11785 #+end_src
11787 #+begin_src emacs-lisp :var data=3D[1,,1]
11788   data
11789 #+end_src
11791 #+results:
11792 | 11 | 14 | 17 |
11793 @end example
11795 @node results, file, var, Specific header arguments
11796 @subsubsection @code{:results}
11798 There are three classes of @code{:results} header argument.  Only one option of
11799 each type may be supplied per code block.
11801 @itemize @bullet
11802 @item
11803 @b{collection} header arguments specify how the results should be collected
11804 from the code block
11805 @item
11806 @b{type} header arguments specify what type of result the code block will
11807 return---which has implications for how they will be inserted into the
11808 Org-mode buffer
11809 @item
11810 @b{handling} header arguments specify how the results of evaluating the code
11811 block should be handled.
11812 @end itemize
11814 @subsubheading Collection
11815 The following options are mutually exclusive, and specify how the results
11816 should be collected from the code block.
11818 @itemize @bullet
11819 @item @code{value}
11820 This is the default.  The result is the value of the last statement in the
11821 code block.  This header argument places the evaluation in functional
11822 mode.  Note that in some languages, e.g., python, use of this result type
11823 requires that a @code{return} statement be included in the body of the source
11824 code block. E.g., @code{:results value}.
11825 @item @code{output}
11826 The result is the collection of everything printed to STDOUT during the
11827 execution of the code block.  This header argument places the
11828 evaluation in scripting mode.  E.g., @code{:results output}.
11829 @end itemize
11831 @subsubheading Type
11833 The following options are mutually exclusive and specify what type of results
11834 the code block will return.  By default, results are inserted as either a
11835 table or scalar depending on their value.
11837 @itemize @bullet
11838 @item @code{table}, @code{vector}
11839 The results should be interpreted as an Org-mode table.  If a single value is
11840 returned, it will be converted into a table with one row and one column.
11841 E.g., @code{:results value table}.
11842 @item @code{scalar}, @code{verbatim}
11843 The results should be interpreted literally---they will not be
11844 converted into a table.  The results will be inserted into the Org-mode
11845 buffer as quoted text.  E.g., @code{:results value verbatim}.
11846 @item @code{file}
11847 The results will be interpreted as the path to a file, and will be inserted
11848 into the Org-mode buffer as a file link.  E.g., @code{:results value file}.
11849 @item @code{raw}, @code{org}
11850 The results are interpreted as raw Org-mode code and are inserted directly
11851 into the buffer.  If the results look like a table they will be aligned as
11852 such by Org-mode.  E.g., @code{:results value raw}.
11853 @item @code{html}
11854 Results are assumed to be HTML and will be enclosed in a @code{begin_html}
11855 block.  E.g., @code{:results value html}.
11856 @item @code{latex}
11857 Results assumed to be LaTeX and are enclosed in a @code{begin_latex} block.
11858 E.g., @code{:results value latex}.
11859 @item @code{code}
11860 Result are assumed to be parseable code and are enclosed in a code block.
11861 E.g., @code{:results value code}.
11862 @item @code{pp}
11863 The result is converted to pretty-printed code and is enclosed in a code
11864 block.  This option currently supports Emacs Lisp, python, and ruby.  E.g.,
11865 @code{:results value pp}.
11866 @end itemize
11868 @subsubheading Handling
11869 The following results options indicate what happens with the
11870 results once they are collected.
11872 @itemize @bullet
11873 @item @code{silent}
11874 The results will be echoed in the minibuffer but will not be inserted into
11875 the Org-mode buffer.  E.g., @code{:results output silent}.
11876 @item @code{replace}
11877 The default value.  Any existing results will be removed, and the new results
11878 will be inserted into the Org-mode buffer in their place.  E.g.,
11879 @code{:results output replace}.
11880 @item @code{append}
11881 If there are pre-existing results of the code block then the new results will
11882 be appended to the existing results.  Otherwise the new results will be
11883 inserted as with @code{replace}.
11884 @item @code{prepend}
11885 If there are pre-existing results of the code block then the new results will
11886 be prepended to the existing results.  Otherwise the new results will be
11887 inserted as with @code{replace}.
11888 @end itemize
11890 @node file, dir, results, Specific header arguments
11891 @subsubsection @code{:file}
11893 The header argument @code{:file} is used to specify a path for file output.
11894 An Org-mode style @code{file:} link is inserted into the buffer as the result
11895 (see @ref{Link format}). Common examples are graphical output from R,
11896 gnuplot, ditaa and LaTeX code blocks.
11898 Note that for some languages, including R, gnuplot, LaTeX and ditaa,
11899 graphical output is sent to the specified file without the file being
11900 referenced explicitly in the code block. See the documentation for the
11901 individual languages for details. In contrast, general purpose languages such
11902 as python and ruby require that the code explicitly create output
11903 corresponding to the path indicated by @code{:file}.
11906 @node dir, exports, file, Specific header arguments
11907 @subsubsection @code{:dir} and remote execution
11909 While the @code{:file} header argument can be used to specify the path to the
11910 output file, @code{:dir} specifies the default directory during code block
11911 execution. If it is absent, then the directory associated with the current
11912 buffer is used. In other words, supplying @code{:dir path} temporarily has
11913 the same effect as changing the current directory with @kbd{M-x cd path}, and
11914 then not supplying @code{:dir}. Under the surface, @code{:dir} simply sets
11915 the value of the Emacs variable @code{default-directory}.
11917 When using @code{:dir}, you should supply a relative path for file output
11918 (e.g. @code{:file myfile.jpg} or @code{:file results/myfile.jpg}) in which
11919 case that path will be interpreted relative to the default directory.
11921 In other words, if you want your plot to go into a folder called Work in your
11922 home directory, you could use
11924 @example
11925 #+begin_src R :file myplot.png :dir ~/Work
11926 matplot(matrix(rnorm(100), 10), type="l")
11927 #+end_src
11928 @end example
11930 @subsubheading Remote execution
11931 A directory on a remote machine can be specified using tramp file syntax, in
11932 which case the code will be evaluated on the remote machine. An example is
11934 @example
11935 #+begin_src R :file plot.png :dir /dand@@yakuba.princeton.edu:
11936 plot(1:10, main=system("hostname", intern=TRUE))
11937 #+end_src
11938 @end example
11940 Text results will be returned to the local Org-mode buffer as usual, and file
11941 output will be created on the remote machine with relative paths interpreted
11942 relative to the remote directory. An Org-mode link to the remote file will be
11943 created.
11945 So, in the above example a plot will be created on the remote machine,
11946 and a link of the following form will be inserted in the org buffer:
11948 @example
11949 [[file:/scp:dand@@yakuba.princeton.edu:/home/dand/plot.png][plot.png]]
11950 @end example
11952 Most of this functionality follows immediately from the fact that @code{:dir}
11953 sets the value of the Emacs variable @code{default-directory}, thanks to
11954 tramp. Those using XEmacs, or GNU Emacs prior to version 23 may need to
11955 install tramp separately in order for the these features to work correctly.
11957 @subsubheading Further points
11959 @itemize @bullet
11960 @item
11961 If @code{:dir} is used in conjunction with @code{:session}, although it will
11962 determine the starting directory for a new session as expected, no attempt is
11963 currently made to alter the directory associated with an existing session.
11964 @item
11965 @code{:dir} should typically not be used to create files during export with
11966 @code{:exports results} or @code{:exports both}. The reason is that, in order
11967 to retain portability of exported material between machines, during export
11968 links inserted into the buffer will *not* be expanded against @code{default
11969 directory}. Therefore, if @code{default-directory} is altered using
11970 @code{:dir}, it is probable that the file will be created in a location to
11971 which the link does not point.
11972 @end itemize
11974 @node exports, tangle, dir, Specific header arguments
11975 @subsubsection @code{:exports}
11977 The @code{:exports} header argument specifies what should be included in HTML
11978 or LaTeX exports of the Org-mode file.
11980 @itemize @bullet
11981 @item @code{code}
11982 The default.  The body of code is included into the exported file.  E.g.,
11983 @code{:exports code}.
11984 @item @code{results}
11985 The result of evaluating the code is included in the exported file. E.g.,
11986 @code{:exports results}.
11987 @item @code{both}
11988 Both the code and results are included in the exported file. E.g.,
11989 @code{:exports both}.
11990 @item @code{none}
11991 Nothing is included in the exported file.  E.g., @code{:exports none}.
11992 @end itemize
11994 @node tangle, comments, exports, Specific header arguments
11995 @subsubsection @code{:tangle}
11997 The @code{:tangle} header argument specifies whether or not the code
11998 block should be included in tangled extraction of source code files.
12000 @itemize @bullet
12001 @item @code{yes}
12002 The code block is exported to a source code file named after the
12003 basename (name w/o extension) of the Org-mode file.  E.g., @code{:tangle
12004 yes}.
12005 @item @code{no}
12006 The default.  The code block is not exported to a source code file.
12007 E.g., @code{:tangle no}.
12008 @item other
12009 Any other string passed to the @code{:tangle} header argument is interpreted
12010 as a file basename to which the block will be exported.  E.g., @code{:tangle
12011 basename}.
12012 @end itemize
12014 @node comments, no-expand, tangle, Specific header arguments
12015 @subsubsection @code{:comments}
12016 By default code blocks are tangled to source-code files without any insertion
12017 of comments beyond those which may already exist in the body of the code
12018 block.  The @code{:comments} header argument can be set as follows to control
12019 the insertion of extra comments into the tangled code file.
12021 @itemize @bullet
12022 @item @code{no}
12023 The default.  No extra comments are inserted during tangling.
12024 @item @code{link}
12025 The code block is wrapped in comments which contain pointers back to the
12026 original Org file from which the code was tangled.
12027 @item @code{yes}
12028 A synonym for ``link'' to maintain backwards compatibility.
12029 @item @code{org}
12030 Include text from the org-mode file as a comment.
12032 The text is picked from the leading context of the tangled code and is
12033 limited by the nearest headline or source block as the case may be.
12034 @item @code{both}
12035 Turns on both the ``link'' and ``org'' comment options.
12036 @end itemize
12038 @node no-expand, session, comments, Specific header arguments
12039 @subsubsection @code{:no-expand}
12041 By default, code blocks are expanded with @code{org-babel-expand-src-block}
12042 during tangling.  This has the effect of assigning values to variables
12043 specified with @code{:var} (see @ref{var}), and of replacing ``noweb''
12044 references (see @ref{Noweb reference syntax}) with their targets.  The
12045 @code{:no-expand} header argument can be used to turn off this behavior.
12047 @node session, noweb, no-expand, Specific header arguments
12048 @subsubsection @code{:session}
12050 The @code{:session} header argument starts a session for an interpreted
12051 language where state is preserved.
12053 By default, a session is not started.
12055 A string passed to the @code{:session} header argument will give the session
12056 a name.  This makes it possible to run concurrent sessions for each
12057 interpreted language.
12059 @node noweb, cache, session, Specific header arguments
12060 @subsubsection @code{:noweb}
12062 The @code{:noweb} header argument controls expansion of ``noweb'' style (see
12063 @ref{Noweb reference syntax}) references in a code block.  This header
12064 argument can have one of three values: @code{yes} @code{no} or @code{tangle}.
12066 @itemize @bullet
12067 @item @code{yes}
12068 All ``noweb'' syntax references in the body of the code block will be
12069 expanded before the block is evaluated, tangled or exported.
12070 @item @code{no}
12071 The default.  No ``noweb'' syntax specific action is taken on evaluating
12072 code blocks, However, noweb references will still be expanded during
12073 tangling.
12074 @item @code{tangle}
12075 All ``noweb'' syntax references in the body of the code block will be
12076 expanded before the block is tangled, however ``noweb'' references will not
12077 be expanded when the block is evaluated or exported.
12078 @end itemize
12080 @subsubheading Noweb prefix lines
12081 Noweb insertions are now placed behind the line prefix of the
12082 @code{<<reference>>}.
12083 This behavior is illustrated in the following example.  Because the
12084 @code{<<example>>} noweb reference appears behind the SQL comment syntax,
12085 each line of the expanded noweb reference will be commented.
12087 This code block:
12089 @example
12090 -- <<example>>
12091 @end example
12094 expands to:
12096 @example
12097 -- this is the
12098 -- multi-line body of example
12099 @end example
12101 Note that noweb replacement text that does not contain any newlines will not
12102 be affected by this change, so it is still possible to use inline noweb
12103 references.
12105 @node cache, hlines, noweb, Specific header arguments
12106 @subsubsection @code{:cache}
12108 The @code{:cache} header argument controls the use of in-buffer caching of
12109 the results of evaluating code blocks.  It can be used to avoid re-evaluating
12110 unchanged code blocks.  This header argument can have one of two
12111 values: @code{yes} or @code{no}.
12113 @itemize @bullet
12114 @item @code{no}
12115 The default.  No caching takes place, and the code block will be evaluated
12116 every time it is called.
12117 @item @code{yes}
12118 Every time the code block is run a sha1 hash of the code and arguments
12119 passed to the block will be generated.  This hash is packed into the
12120 @code{#+results:} line and will be checked on subsequent
12121 executions of the code block.  If the code block has not
12122 changed since the last time it was evaluated, it will not be re-evaluated.
12123 @end itemize
12125 @node hlines, colnames, cache, Specific header arguments
12126 @subsubsection @code{:hlines}
12128 Tables are frequently represented with one or more horizontal lines, or
12129 hlines.  The @code{:hlines} argument to a code block accepts the
12130 values @code{yes} or @code{no}, with a default value of @code{no}.
12132 @itemize @bullet
12133 @item @code{no}
12134 Strips horizontal lines from the input table.  In most languages this is the
12135 desired effect because an @code{hline} symbol is interpreted as an unbound
12136 variable and raises an error.  Setting @code{:hlines no} or relying on the
12137 default value yields the following results.
12139 @example
12140 #+tblname: many-cols
12141 | a | b | c |
12142 |---+---+---|
12143 | d | e | f |
12144 |---+---+---|
12145 | g | h | i |
12147 #+source: echo-table
12148 #+begin_src python :var tab=many-cols
12149   return tab
12150 #+end_src
12152 #+results: echo-table
12153 | a | b | c |
12154 | d | e | f |
12155 | g | h | i |
12156 @end example
12158 @item @code{yes}
12159 Leaves hlines in the table. Setting @code{:hlines yes} has this effect.
12161 @example
12162 #+tblname: many-cols
12163 | a | b | c |
12164 |---+---+---|
12165 | d | e | f |
12166 |---+---+---|
12167 | g | h | i |
12169 #+source: echo-table
12170 #+begin_src python :var tab=many-cols :hlines yes
12171   return tab
12172 #+end_src
12174 #+results: echo-table
12175 | a | b | c |
12176 |---+---+---|
12177 | d | e | f |
12178 |---+---+---|
12179 | g | h | i |
12180 @end example
12181 @end itemize
12183 @node colnames, rownames, hlines, Specific header arguments
12184 @subsubsection @code{:colnames}
12186 The @code{:colnames} header argument accepts the values @code{yes},
12187 @code{no}, or @code{nil} for unassigned.  The default value is @code{nil}.
12189 @itemize @bullet
12190 @item @code{nil}
12191 If an input table looks like it has column names
12192 (because its second row is an hline), then the column
12193 names will be removed from the table before
12194 processing, then reapplied to the results.
12196 @example
12197 #+tblname: less-cols
12198 | a |
12199 |---|
12200 | b |
12201 | c |
12203 #+srcname: echo-table-again
12204 #+begin_src python :var tab=less-cols
12205   return [[val + '*' for val in row] for row in tab]
12206 #+end_src
12208 #+results: echo-table-again
12209 | a  |
12210 |----|
12211 | b* |
12212 | c* |
12213 @end example
12215 @item @code{no}
12216 No column name pre-processing takes place
12218 @item @code{yes}
12219 Column names are removed and reapplied as with @code{nil} even if the table
12220 does not ``look like'' it has column names (i.e. the second row is not an
12221 hline)
12222 @end itemize
12224 @node rownames, shebang, colnames, Specific header arguments
12225 @subsubsection @code{:rownames}
12227 The @code{:rownames} header argument can take on the values @code{yes}
12228 or @code{no}, with a default value of @code{no}.
12230 @itemize @bullet
12231 @item @code{no}
12232 No row name pre-processing will take place.
12234 @item @code{yes}
12235 The first column of the table is removed from the table before processing,
12236 and is then reapplied to the results.
12238 @example
12239 #+tblname: with-rownames
12240 | one | 1 | 2 | 3 | 4 |  5 |
12241 | two | 6 | 7 | 8 | 9 | 10 |
12243 #+srcname: echo-table-once-again
12244 #+begin_src python :var tab=with-rownames :rownames yes
12245   return [[val + 10 for val in row] for row in tab]
12246 #+end_src
12248 #+results: echo-table-once-again
12249 | one | 11 | 12 | 13 | 14 | 15 |
12250 | two | 16 | 17 | 18 | 19 | 20 |
12251 @end example
12252 @end itemize
12254 @node shebang, eval, rownames, Specific header arguments
12255 @subsubsection @code{:shebang}
12257 Setting the @code{:shebang} header argument to a string value
12258 (e.g. @code{:shebang "#!/bin/bash"}) causes the string to be inserted as the
12259 first line of any tangled file holding the code block, and the file
12260 permissions of the tangled file are set to make it executable.
12262 @node eval,  , shebang, Specific header arguments
12263 @subsubsection @code{:eval}
12264 The @code{:eval} header argument can be used to limit the evaluation of
12265 specific code blocks.  @code{:eval} accepts two arguments ``never'' and
12266 ``query''.  @code{:eval never} will ensure that a code block is never
12267 evaluated, this can be useful for protecting against the evaluation of
12268 dangerous code blocks.  @code{:eval query} will require a query for every
12269 execution of a code block regardless of the value of the
12270 @code{org-confirm-babel-evaluate} variable.
12272 @node Results of evaluation, Noweb reference syntax, Header arguments, Working With Source Code
12273 @section Results of evaluation
12274 @cindex code block, results of evaluation
12275 @cindex source code, results of evaluation
12277 The way in which results are handled depends on whether a session is invoked,
12278 as well as on whether @code{:results value} or @code{:results output} is
12279 used. The following table shows the possibilities:
12281 @multitable @columnfractions 0.26 0.33 0.41
12282 @item @tab @b{Non-session} @tab @b{Session}
12283 @item @code{:results value} @tab value of last expression @tab value of last expression
12284 @item @code{:results output} @tab contents of STDOUT @tab concatenation of interpreter output
12285 @end multitable
12287 Note: With @code{:results value}, the result in both @code{:session} and
12288 non-session is returned to Org-mode as a table (a one- or two-dimensional
12289 vector of strings or numbers) when appropriate.
12291 @subsection Non-session
12292 @subsubsection @code{:results value}
12293 This is the default. Internally, the value is obtained by wrapping the code
12294 in a function definition in the external language, and evaluating that
12295 function. Therefore, code should be written as if it were the body of such a
12296 function. In particular, note that python does not automatically return a
12297 value from a function unless a @code{return} statement is present, and so a
12298 @samp{return} statement will usually be required in python.
12300 This is the only one of the four evaluation contexts in which the code is
12301 automatically wrapped in a function definition.
12303 @subsubsection @code{:results output}
12304 The code is passed to the interpreter as an external process, and the
12305 contents of the standard output stream are returned as text. (In certain
12306 languages this also contains the error output stream; this is an area for
12307 future work.)
12309 @subsection @code{:session}
12310 @subsubsection @code{:results value}
12311 The code is passed to the interpreter running as an interactive Emacs
12312 inferior process. The result returned is the result of the last evaluation
12313 performed by the interpreter. (This is obtained in a language-specific
12314 manner: the value of the variable @code{_} in python and ruby, and the value
12315 of @code{.Last.value} in R).
12317 @subsubsection @code{:results output}
12318 The code is passed to the interpreter running as an interactive Emacs
12319 inferior process. The result returned is the concatenation of the sequence of
12320 (text) output from the interactive interpreter. Notice that this is not
12321 necessarily the same as what would be sent to @code{STDOUT} if the same code
12322 were passed to a non-interactive interpreter running as an external
12323 process. For example, compare the following two blocks:
12325 @example
12326 #+begin_src python :results output
12327  print "hello"
12329  print "bye"
12330 #+end_src
12332 #+resname:
12333 : hello
12334 : bye
12335 @end example
12337 In non-session mode, the '2' is not printed and does not appear.
12338 @example
12339 #+begin_src python :results output :session
12340  print "hello"
12342  print "bye"
12343 #+end_src
12345 #+resname:
12346 : hello
12347 : 2
12348 : bye
12349 @end example
12351 But in @code{:session} mode, the interactive interpreter receives input '2'
12352 and prints out its value, '2'. (Indeed, the other print statements are
12353 unnecessary here).
12355 @node Noweb reference syntax, Key bindings and useful functions, Results of evaluation, Working With Source Code
12356 @section Noweb reference syntax
12357 @cindex code block, noweb reference
12358 @cindex syntax, noweb
12359 @cindex source code, noweb reference
12361 The ``noweb'' (see @uref{http://www.cs.tufts.edu/~nr/noweb/}) Literate
12362 Programming system allows named blocks of code to be referenced by using the
12363 familiar Noweb syntax:
12365 @example
12366 <<code-block-name>>
12367 @end example
12369 When a code block is tangled or evaluated, whether or not ``noweb''
12370 references are expanded depends upon the value of the @code{:noweb} header
12371 argument.  If @code{:noweb yes}, then a Noweb reference is expanded before
12372 evaluation.  If @code{:noweb no}, the default, then the reference is not
12373 expanded before evaluation.
12375 Note: the default value, @code{:noweb no}, was chosen to ensure that
12376 correct code is not broken in a language, such as Ruby, where
12377 @code{<<arg>>} is a syntactically valid construct.  If @code{<<arg>>} is not
12378 syntactically valid in languages that you use, then please consider setting
12379 the default value.
12381 @node Key bindings and useful functions, Batch execution, Noweb reference syntax, Working With Source Code
12382 @section Key bindings and useful functions
12383 @cindex code block, key bindings
12385 Many common Org-mode key sequences are re-bound depending on
12386 the context.
12388 Within a code block, the following key bindings
12389 are active:
12391 @multitable @columnfractions 0.25 0.75
12392 @kindex C-c C-c
12393 @item @kbd{C-c C-c} @tab org-babel-execute-src-block
12394 @kindex C-c C-o
12395 @item @kbd{C-c C-o} @tab org-babel-open-src-block-result
12396 @kindex C-up
12397 @item @kbd{C-@key{up}}    @tab org-babel-load-in-session
12398 @kindex M-down
12399 @item @kbd{M-@key{down}}  @tab org-babel-pop-to-session
12400 @end multitable
12402 In an Org-mode buffer, the following key bindings are active:
12404 @multitable @columnfractions 0.45 0.55
12405 @kindex C-c C-v a
12406 @kindex C-c C-v C-a
12407 @item @kbd{C-c C-v a} @ @ @r{or} @ @ @kbd{C-c C-v C-a} @tab org-babel-sha1-hash
12408 @kindex C-c C-v b
12409 @kindex C-c C-v C-b
12410 @item @kbd{C-c C-v b} @ @ @r{or} @ @ @kbd{C-c C-v C-b} @tab org-babel-execute-buffer
12411 @kindex C-c C-v f
12412 @kindex C-c C-v C-f
12413 @item @kbd{C-c C-v f} @ @ @r{or} @ @ @kbd{C-c C-v C-f} @tab org-babel-tangle-file
12414 @kindex C-c C-v g
12415 @item @kbd{C-c C-v g} @tab org-babel-goto-named-source-block
12416 @kindex C-c C-v h
12417 @item @kbd{C-c C-v h} @tab org-babel-describe-bindings
12418 @kindex C-c C-v l
12419 @kindex C-c C-v C-l
12420 @item @kbd{C-c C-v l} @ @ @r{or} @ @ @kbd{C-c C-v C-l} @tab org-babel-lob-ingest
12421 @kindex C-c C-v p
12422 @kindex C-c C-v C-p
12423 @item @kbd{C-c C-v p} @ @ @r{or} @ @ @kbd{C-c C-v C-p} @tab org-babel-expand-src-block
12424 @kindex C-c C-v s
12425 @kindex C-c C-v C-s
12426 @item @kbd{C-c C-v s} @ @ @r{or} @ @ @kbd{C-c C-v C-s} @tab org-babel-execute-subtree
12427 @kindex C-c C-v t
12428 @kindex C-c C-v C-t
12429 @item @kbd{C-c C-v t} @ @ @r{or} @ @ @kbd{C-c C-v C-t} @tab org-babel-tangle
12430 @kindex C-c C-v z
12431 @kindex C-c C-v C-z
12432 @item @kbd{C-c C-v z} @ @ @r{or} @ @ @kbd{C-c C-v C-z} @tab org-babel-switch-to-session
12433 @end multitable
12435 @c When possible these keybindings were extended to work when the control key is
12436 @c kept pressed, resulting in the following additional keybindings.
12438 @c @multitable @columnfractions 0.25 0.75
12439 @c @item @kbd{C-c C-v C-a} @tab org-babel-sha1-hash
12440 @c @item @kbd{C-c C-v C-b} @tab org-babel-execute-buffer
12441 @c @item @kbd{C-c C-v C-f} @tab org-babel-tangle-file
12442 @c @item @kbd{C-c C-v C-l} @tab org-babel-lob-ingest
12443 @c @item @kbd{C-c C-v C-p} @tab org-babel-expand-src-block
12444 @c @item @kbd{C-c C-v C-s} @tab org-babel-execute-subtree
12445 @c @item @kbd{C-c C-v C-t} @tab org-babel-tangle
12446 @c @item @kbd{C-c C-v C-z} @tab org-babel-switch-to-session
12447 @c @end multitable
12449 @node Batch execution,  , Key bindings and useful functions, Working With Source Code
12450 @section Batch execution
12451 @cindex code block, batch execution
12452 @cindex source code, batch execution
12454 It is possible to call functions from the command line.  This shell
12455 script calls @code{org-babel-tangle} on every one of its arguments.
12457 Be sure to adjust the paths to fit your system.
12459 @example
12460 #!/bin/sh
12461 # -*- mode: shell-script -*-
12463 # tangle files with org-mode
12465 DIR=`pwd`
12466 FILES=""
12467 ORGINSTALL="~/src/org/lisp/org-install.el"
12469 # wrap each argument in the code required to call tangle on it
12470 for i in $@@; do
12471     FILES="$FILES \"$i\""
12472 done
12474 emacs -Q --batch -l $ORGINSTALL \
12475 --eval "(progn
12476 (add-to-list 'load-path (expand-file-name \"~/src/org/lisp/\"))
12477 (add-to-list 'load-path (expand-file-name \"~/src/org/contrib/lisp/\"))
12478 (require 'org)(require 'org-exp)(require 'ob)(require 'ob-tangle)
12479 (mapc (lambda (file)
12480        (find-file (expand-file-name file \"$DIR\"))
12481        (org-babel-tangle)
12482        (kill-buffer)) '($FILES)))" 2>&1 |grep tangled
12483 @end example
12485 @node Miscellaneous, Hacking, Working With Source Code, Top
12486 @chapter Miscellaneous
12488 @menu
12489 * Completion::                  M-TAB knows what you need
12490 * Easy Templates::              Quick insertion of structural elements
12491 * Speed keys::                  Electric commands at the beginning of a headline
12492 * Code evaluation security::    Org mode files evaluate inline code
12493 * Customization::               Adapting Org to your taste
12494 * In-buffer settings::          Overview of the #+KEYWORDS
12495 * The very busy C-c C-c key::   When in doubt, press C-c C-c
12496 * Clean view::                  Getting rid of leading stars in the outline
12497 * TTY keys::                    Using Org on a tty
12498 * Interaction::                 Other Emacs packages
12499 @end menu
12502 @node Completion, Easy Templates, Miscellaneous, Miscellaneous
12503 @section Completion
12504 @cindex completion, of @TeX{} symbols
12505 @cindex completion, of TODO keywords
12506 @cindex completion, of dictionary words
12507 @cindex completion, of option keywords
12508 @cindex completion, of tags
12509 @cindex completion, of property keys
12510 @cindex completion, of link abbreviations
12511 @cindex @TeX{} symbol completion
12512 @cindex TODO keywords completion
12513 @cindex dictionary word completion
12514 @cindex option keyword completion
12515 @cindex tag completion
12516 @cindex link abbreviations, completion of
12518 Emacs would not be Emacs without completion, and Org-mode uses it whenever it
12519 makes sense.  If you prefer an @i{iswitchb}- or @i{ido}-like interface for
12520 some of the completion prompts, you can specify your preference by setting at
12521 most one of the variables @code{org-completion-use-iswitchb}
12522 @code{org-completion-use-ido}.
12524 Org supports in-buffer completion.  This type of completion does
12525 not make use of the minibuffer.  You simply type a few letters into
12526 the buffer and use the key to complete text right there.
12528 @table @kbd
12529 @kindex M-@key{TAB}
12530 @item M-@key{TAB}
12531 Complete word at point
12532 @itemize @bullet
12533 @item
12534 At the beginning of a headline, complete TODO keywords.
12535 @item
12536 After @samp{\}, complete @TeX{} symbols supported by the exporter.
12537 @item
12538 After @samp{*}, complete headlines in the current buffer so that they
12539 can be used in search links like @samp{[[*find this headline]]}.
12540 @item
12541 After @samp{:} in a headline, complete tags.  The list of tags is taken
12542 from the variable @code{org-tag-alist} (possibly set through the
12543 @samp{#+TAGS} in-buffer option, @pxref{Setting tags}), or it is created
12544 dynamically from all tags used in the current buffer.
12545 @item
12546 After @samp{:} and not in a headline, complete property keys.  The list
12547 of keys is constructed dynamically from all keys used in the current
12548 buffer.
12549 @item
12550 After @samp{[}, complete link abbreviations (@pxref{Link abbreviations}).
12551 @item
12552 After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
12553 @samp{OPTIONS} which set file-specific options for Org-mode.  When the
12554 option keyword is already complete, pressing @kbd{M-@key{TAB}} again
12555 will insert example settings for this keyword.
12556 @item
12557 In the line after @samp{#+STARTUP: }, complete startup keywords,
12558 i.e. valid keys for this line.
12559 @item
12560 Elsewhere, complete dictionary words using Ispell.
12561 @end itemize
12562 @end table
12564 @node Easy Templates, Speed keys, Completion, Miscellaneous
12565 @section Easy Templates
12566 @cindex template insertion
12567 @cindex insertion, of templates
12569 Org-mode supports insertion of empty structural elements (like
12570 @code{#+BEGIN_SRC} and @code{#+END_SRC} pairs) with just a few key
12571 strokes.  This is achieved through a native template expansion mechanism.
12572 Note that Emacs has several other template mechanisms which could be used in
12573 a similar way, for example @file{yasnippet}.
12575 To insert a structural element, type a @samp{<}, followed by a template
12576 selector and @kbd{@key{TAB}}.  Completion takes effect only when the above
12577 keystrokes are typed on a line by itself.
12579 The following template selectors are currently supported.
12581 @multitable @columnfractions 0.1 0.9
12582 @item @kbd{s} @tab @code{#+begin_src     ... #+end_src}
12583 @item @kbd{e} @tab @code{#+begin_example ... #+end_example}
12584 @item @kbd{q} @tab @code{#+begin_quote   ... #+end_quote}
12585 @item @kbd{v} @tab @code{#+begin_verse   ... #+end_verse}
12586 @item @kbd{c} @tab @code{#+begin_center  ... #+end_center}
12587 @item @kbd{l} @tab @code{#+begin_latex   ... #+end_latex}
12588 @item @kbd{L} @tab @code{#+latex:}
12589 @item @kbd{h} @tab @code{#+begin_html    ... #+end_html}
12590 @item @kbd{H} @tab @code{#+html:}
12591 @item @kbd{a} @tab @code{#+begin_ascii   ... #+end_ascii}
12592 @item @kbd{A} @tab @code{#+ascii:}
12593 @item @kbd{i} @tab @code{#+include:} line
12594 @end multitable
12596 For example, on an empty line, typing "<e" and then pressing TAB, will expand
12597 into a complete EXAMPLE template.
12599 You can install additional templates by customizing the variable
12600 @code{org-structure-template-alist}. Refer docstring of the variable for
12601 additional details.
12603 @node Speed keys, Code evaluation security, Easy Templates, Miscellaneous
12604 @section Speed keys
12605 @cindex speed keys
12606 @vindex org-use-speed-commands
12607 @vindex org-speed-commands-user
12609 Single keys can be made to execute commands when the cursor is at the
12610 beginning of a headline, i.e. before the first star.  Configure the variable
12611 @code{org-use-speed-commands} to activate this feature.  There is a
12612 pre-defined list of commands, and you can add more such commands using the
12613 variable @code{org-speed-commands-user}.  Speed keys do not only speed up
12614 navigation and other commands, but they also provide an alternative way to
12615 execute commands bound to keys that are not or not easily available on a tty,
12616 or on a small mobile device with a limited keyboard.
12618 To see which commands are available, activate the feature and press @kbd{?}
12619 with the cursor at the beginning of a headline.
12621 @node Code evaluation security, Customization, Speed keys, Miscellaneous
12622 @section Code evaluation and security issues
12624 Org provides tools to work with the code snippets, including evaluating them.
12626 Running code on your machine always comes with a security risk.  Badly
12627 written or malicious code can be executed on purpose or by accident.  Org has
12628 default settings which will only evaluate such code if you give explicit
12629 permission to do so, and as a casual user of these features you should leave
12630 these precautions intact.
12632 For people who regularly work with such code, the confirmation prompts can
12633 become annoying, and you might want to turn them off.  This can be done, but
12634 you must be aware of the risks that are involved.
12636 Code evaluation can happen under the following circumstances:
12638 @table @i
12639 @item Source code blocks
12640 Source code blocks can be evaluated during export, or when pressing @kbd{C-c
12641 C-c} in the block.  The most important thing to realize here is that Org mode
12642 files which contain code snippets are, in a certain sense, like executable
12643 files.  So you should accept them and load them into Emacs only from trusted
12644 sources - just like you would do with a program you install on your computer.
12646 Make sure you know what you are doing before customizing the variables
12647 which take off the default security brakes.
12649 @defopt org-confirm-babel-evaluate
12650 When set to t user is queried before code block evaluation
12651 @end defopt
12653 @item Following @code{shell} and @code{elisp} links
12654 Org has two link types that can directly evaluate code (@pxref{External
12655 links}).  These links can be problematic because the code to be evaluated is
12656 not visible.
12658 @defopt org-confirm-shell-link-function
12659 Function to queries user about shell link execution.
12660 @end defopt
12661 @defopt org-confirm-elisp-link-function
12662 Functions to query user for Emacs Lisp link execution.
12663 @end defopt
12665 @item Formulas in tables
12666 Formulas in tables (@pxref{The spreadsheet}) are code that is evaluated
12667 either by the @i{calc} interpreter, or by the @i{Emacs Lisp} interpreter.
12668 @end table
12670 @node Customization, In-buffer settings, Code evaluation security, Miscellaneous
12671 @section Customization
12672 @cindex customization
12673 @cindex options, for customization
12674 @cindex variables, for customization
12676 There are more than 180 variables that can be used to customize
12677 Org.  For the sake of compactness of the manual, I am not
12678 describing the variables here.  A structured overview of customization
12679 variables is available with @kbd{M-x org-customize}.  Or select
12680 @code{Browse Org Group} from the @code{Org->Customization} menu.  Many
12681 settings can also be activated on a per-file basis, by putting special
12682 lines into the buffer (@pxref{In-buffer settings}).
12684 @node In-buffer settings, The very busy C-c C-c key, Customization, Miscellaneous
12685 @section Summary of in-buffer settings
12686 @cindex in-buffer settings
12687 @cindex special keywords
12689 Org-mode uses special lines in the buffer to define settings on a
12690 per-file basis.  These lines start with a @samp{#+} followed by a
12691 keyword, a colon, and then individual words defining a setting.  Several
12692 setting words can be in the same line, but you can also have multiple
12693 lines for the keyword.  While these settings are described throughout
12694 the manual, here is a summary.  After changing any of those lines in the
12695 buffer, press @kbd{C-c C-c} with the cursor still in the line to
12696 activate the changes immediately.  Otherwise they become effective only
12697 when the file is visited again in a new Emacs session.
12699 @vindex org-archive-location
12700 @table @kbd
12701 @item #+ARCHIVE: %s_done::
12702 This line sets the archive location for the agenda file.  It applies for
12703 all subsequent lines until the next @samp{#+ARCHIVE} line, or the end
12704 of the file.  The first such line also applies to any entries before it.
12705 The corresponding variable is @code{org-archive-location}.
12706 @item #+CATEGORY:
12707 This line sets the category for the agenda file.  The category applies
12708 for all subsequent lines until the next @samp{#+CATEGORY} line, or the
12709 end of the file.  The first such line also applies to any entries before it.
12710 @item #+COLUMNS: %25ITEM .....
12711 @cindex property, COLUMNS
12712 Set the default format for columns view.  This format applies when
12713 columns view is invoked in locations where no @code{COLUMNS} property
12714 applies.
12715 @item #+CONSTANTS: name1=value1 ...
12716 @vindex org-table-formula-constants
12717 @vindex org-table-formula
12718 Set file-local values for constants to be used in table formulas.  This
12719 line set the local variable @code{org-table-formula-constants-local}.
12720 The global version of this variable is
12721 @code{org-table-formula-constants}.
12722 @item #+FILETAGS: :tag1:tag2:tag3:
12723 Set tags that can be inherited by any entry in the file, including the
12724 top-level entries.
12725 @item #+DRAWERS: NAME1 .....
12726 @vindex org-drawers
12727 Set the file-local set of drawers.  The corresponding global variable is
12728 @code{org-drawers}.
12729 @item #+LINK:  linkword replace
12730 @vindex org-link-abbrev-alist
12731 These lines (several are allowed) specify link abbreviations.
12732 @xref{Link abbreviations}.  The corresponding variable is
12733 @code{org-link-abbrev-alist}.
12734 @item #+PRIORITIES: highest lowest default
12735 @vindex org-highest-priority
12736 @vindex org-lowest-priority
12737 @vindex org-default-priority
12738 This line sets the limits and the default for the priorities.  All three
12739 must be either letters A-Z or numbers 0-9.  The highest priority must
12740 have a lower ASCII number that the lowest priority.
12741 @item #+PROPERTY: Property_Name Value
12742 This line sets a default inheritance value for entries in the current
12743 buffer, most useful for specifying the allowed values of a property.
12744 @cindex #+SETUPFILE
12745 @item #+SETUPFILE: file
12746 This line defines a file that holds more in-buffer setup.  Normally this is
12747 entirely ignored.  Only when the buffer is parsed for option-setting lines
12748 (i.e. when starting Org-mode for a file, when pressing @kbd{C-c C-c} in a
12749 settings line, or when exporting), then the contents of this file are parsed
12750 as if they had been included in the buffer.  In particular, the file can be
12751 any other Org-mode file with internal setup.  You can visit the file the
12752 cursor is in the line with @kbd{C-c '}.
12753 @item #+STARTUP:
12754 @cindex #+STARTUP:
12755 This line sets options to be used at startup of Org-mode, when an
12756 Org file is being visited.
12758 The first set of options deals with the initial visibility of the outline
12759 tree.  The corresponding variable for global default settings is
12760 @code{org-startup-folded}, with a default value @code{t}, which means
12761 @code{overview}.
12762 @vindex org-startup-folded
12763 @cindex @code{overview}, STARTUP keyword
12764 @cindex @code{content}, STARTUP keyword
12765 @cindex @code{showall}, STARTUP keyword
12766 @cindex @code{showeverything}, STARTUP keyword
12767 @example
12768 overview         @r{top-level headlines only}
12769 content          @r{all headlines}
12770 showall          @r{no folding of any entries}
12771 showeverything   @r{show even drawer contents}
12772 @end example
12774 @vindex org-startup-indented
12775 @cindex @code{indent}, STARTUP keyword
12776 @cindex @code{noindent}, STARTUP keyword
12777 Dynamic virtual indentation is controlled by the variable
12778 @code{org-startup-indented}@footnote{Emacs 23 and Org-mode 6.29 are required}
12779 @example
12780 indent     @r{start with @code{org-indent-mode} turned on}
12781 noindent   @r{start with @code{org-indent-mode} turned off}
12782 @end example
12784 @vindex org-startup-align-all-tables
12785 Then there are options for aligning tables upon visiting a file.  This
12786 is useful in files containing narrowed table columns.  The corresponding
12787 variable is @code{org-startup-align-all-tables}, with a default value
12788 @code{nil}.
12789 @cindex @code{align}, STARTUP keyword
12790 @cindex @code{noalign}, STARTUP keyword
12791 @example
12792 align      @r{align all tables}
12793 noalign    @r{don't align tables on startup}
12794 @end example
12796 @vindex org-startup-with-inline-images
12797 When visiting a file, inline images can be automatically displayed.  The
12798 corresponding variable is @code{org-startup-with-inline-images}, with a
12799 default value @code{nil} to avoid delays when visiting a file.
12800 @cindex @code{inlineimages}, STARTUP keyword
12801 @cindex @code{noinlineimages}, STARTUP keyword
12802 @example
12803 inlineimages   @r{show inline images}
12804 noinlineimages @r{don't show inline images on startup}
12805 @end example
12807 @vindex org-log-done
12808 @vindex org-log-note-clock-out
12809 @vindex org-log-repeat
12810 Logging the closing and reopening of TODO items and clock intervals can be
12811 configured using these options (see variables @code{org-log-done},
12812 @code{org-log-note-clock-out} and @code{org-log-repeat})
12813 @cindex @code{logdone}, STARTUP keyword
12814 @cindex @code{lognotedone}, STARTUP keyword
12815 @cindex @code{nologdone}, STARTUP keyword
12816 @cindex @code{lognoteclock-out}, STARTUP keyword
12817 @cindex @code{nolognoteclock-out}, STARTUP keyword
12818 @cindex @code{logrepeat}, STARTUP keyword
12819 @cindex @code{lognoterepeat}, STARTUP keyword
12820 @cindex @code{nologrepeat}, STARTUP keyword
12821 @cindex @code{logreschedule}, STARTUP keyword
12822 @cindex @code{lognotereschedule}, STARTUP keyword
12823 @cindex @code{nologreschedule}, STARTUP keyword
12824 @cindex @code{logredeadline}, STARTUP keyword
12825 @cindex @code{lognoteredeadline}, STARTUP keyword
12826 @cindex @code{nologredeadline}, STARTUP keyword
12827 @cindex @code{logrefile}, STARTUP keyword
12828 @cindex @code{lognoterefile}, STARTUP keyword
12829 @cindex @code{nologrefile}, STARTUP keyword
12830 @example
12831 logdone            @r{record a timestamp when an item is marked DONE}
12832 lognotedone        @r{record timestamp and a note when DONE}
12833 nologdone          @r{don't record when items are marked DONE}
12834 logrepeat          @r{record a time when reinstating a repeating item}
12835 lognoterepeat      @r{record a note when reinstating a repeating item}
12836 nologrepeat        @r{do not record when reinstating repeating item}
12837 lognoteclock-out   @r{record a note when clocking out}
12838 nolognoteclock-out @r{don't record a note when clocking out}
12839 logreschedule      @r{record a timestamp when scheduling time changes}
12840 lognotereschedule  @r{record a note when scheduling time changes}
12841 nologreschedule    @r{do not record when a scheduling date changes}
12842 logredeadline      @r{record a timestamp when deadline changes}
12843 lognoteredeadline  @r{record a note when deadline changes}
12844 nologredeadline    @r{do not record when a deadline date changes}
12845 logrefile          @r{record a timestamp when refiling}
12846 lognoterefile      @r{record a note when refiling}
12847 nologrefile        @r{do not record when refiling}
12848 @end example
12849 @vindex org-hide-leading-stars
12850 @vindex org-odd-levels-only
12851 Here are the options for hiding leading stars in outline headings, and for
12852 indenting outlines.  The corresponding variables are
12853 @code{org-hide-leading-stars} and @code{org-odd-levels-only}, both with a
12854 default setting @code{nil} (meaning @code{showstars} and @code{oddeven}).
12855 @cindex @code{hidestars}, STARTUP keyword
12856 @cindex @code{showstars}, STARTUP keyword
12857 @cindex @code{odd}, STARTUP keyword
12858 @cindex @code{even}, STARTUP keyword
12859 @example
12860 hidestars  @r{make all but one of the stars starting a headline invisible.}
12861 showstars  @r{show all stars starting a headline}
12862 indent     @r{virtual indentation according to outline level}
12863 noindent   @r{no virtual indentation according to outline level}
12864 odd        @r{allow only odd outline levels (1,3,...)}
12865 oddeven    @r{allow all outline levels}
12866 @end example
12867 @vindex org-put-time-stamp-overlays
12868 @vindex org-time-stamp-overlay-formats
12869 To turn on custom format overlays over timestamps (variables
12870 @code{org-put-time-stamp-overlays} and
12871 @code{org-time-stamp-overlay-formats}), use
12872 @cindex @code{customtime}, STARTUP keyword
12873 @example
12874 customtime @r{overlay custom time format}
12875 @end example
12876 @vindex constants-unit-system
12877 The following options influence the table spreadsheet (variable
12878 @code{constants-unit-system}).
12879 @cindex @code{constcgs}, STARTUP keyword
12880 @cindex @code{constSI}, STARTUP keyword
12881 @example
12882 constcgs   @r{@file{constants.el} should use the c-g-s unit system}
12883 constSI    @r{@file{constants.el} should use the SI unit system}
12884 @end example
12885 @vindex org-footnote-define-inline
12886 @vindex org-footnote-auto-label
12887 @vindex org-footnote-auto-adjust
12888 To influence footnote settings, use the following keywords.  The
12889 corresponding variables are @code{org-footnote-define-inline},
12890 @code{org-footnote-auto-label}, and @code{org-footnote-auto-adjust}.
12891 @cindex @code{fninline}, STARTUP keyword
12892 @cindex @code{nofninline}, STARTUP keyword
12893 @cindex @code{fnlocal}, STARTUP keyword
12894 @cindex @code{fnprompt}, STARTUP keyword
12895 @cindex @code{fnauto}, STARTUP keyword
12896 @cindex @code{fnconfirm}, STARTUP keyword
12897 @cindex @code{fnplain}, STARTUP keyword
12898 @cindex @code{fnadjust}, STARTUP keyword
12899 @cindex @code{nofnadjust}, STARTUP keyword
12900 @example
12901 fninline    @r{define footnotes inline}
12902 fnnoinline  @r{define footnotes in separate section}
12903 fnlocal     @r{define footnotes near first reference, but not inline}
12904 fnprompt    @r{prompt for footnote labels}
12905 fnauto      @r{create [fn:1]-like labels automatically (default)}
12906 fnconfirm   @r{offer automatic label for editing or confirmation}
12907 fnplain     @r{create [1]-like labels automatically}
12908 fnadjust    @r{automatically renumber and sort footnotes}
12909 nofnadjust  @r{do not renumber and sort automatically}
12910 @end example
12911 @cindex org-hide-block-startup
12912 To hide blocks on startup, use these keywords. The corresponding variable is
12913 @code{org-hide-block-startup}.
12914 @cindex @code{hideblocks}, STARTUP keyword
12915 @cindex @code{nohideblocks}, STARTUP keyword
12916 @example
12917 hideblocks   @r{Hide all begin/end blocks on startup}
12918 nohideblocks @r{Do not hide blocks on startup}
12919 @end example
12920 @cindex org-pretty-entities
12921 The the display of entities as UTF8 characters is governed by the variable
12922 @code{org-pretty-entities} and the keywords
12923 @cindex @code{entitiespretty}, STARTUP keyword
12924 @cindex @code{entitiesplain}, STARTUP keyword
12925 @example
12926 entitiespretty  @r{Show entities as UTF8 characters where possible}
12927 entitiesplain   @r{Leave entities plain}
12928 @end example
12929 @item #+TAGS:  TAG1(c1) TAG2(c2)
12930 @vindex org-tag-alist
12931 These lines (several such lines are allowed) specify the valid tags in
12932 this file, and (potentially) the corresponding @emph{fast tag selection}
12933 keys.  The corresponding variable is @code{org-tag-alist}.
12934 @item #+TBLFM:
12935 This line contains the formulas for the table directly above the line.
12936 @item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+DATE:,
12937 @itemx #+OPTIONS:, #+BIND:, #+XSLT:,
12938 @itemx #+DESCRIPTION:, #+KEYWORDS:,
12939 @itemx #+LATEX_HEADER:, #+STYLE:, #+LINK_UP:, #+LINK_HOME:,
12940 @itemx #+EXPORT_SELECT_TAGS:, #+EXPORT_EXCLUDE_TAGS:
12941 These lines provide settings for exporting files.  For more details see
12942 @ref{Export options}.
12943 @item #+TODO:    #+SEQ_TODO:   #+TYP_TODO:
12944 @vindex org-todo-keywords
12945 These lines set the TODO keywords and their interpretation in the
12946 current file.  The corresponding variable is @code{org-todo-keywords}.
12947 @end table
12949 @node The very busy C-c C-c key, Clean view, In-buffer settings, Miscellaneous
12950 @section The very busy C-c C-c key
12951 @kindex C-c C-c
12952 @cindex C-c C-c, overview
12954 The key @kbd{C-c C-c} has many purposes in Org, which are all
12955 mentioned scattered throughout this manual.  One specific function of
12956 this key is to add @emph{tags} to a headline (@pxref{Tags}).  In many
12957 other circumstances it means something like @emph{``Hey Org, look
12958 here and update according to what you see here''}.  Here is a summary of
12959 what this means in different contexts.
12961 @itemize @minus
12962 @item
12963 If there are highlights in the buffer from the creation of a sparse
12964 tree, or from clock display, remove these highlights.
12965 @item
12966 If the cursor is in one of the special @code{#+KEYWORD} lines, this
12967 triggers scanning the buffer for these lines and updating the
12968 information.
12969 @item
12970 If the cursor is inside a table, realign the table.  This command
12971 works even if the automatic table editor has been turned off.
12972 @item
12973 If the cursor is on a @code{#+TBLFM} line, re-apply the formulas to
12974 the entire table.
12975 @item
12976 If the current buffer is a capture buffer, close the note and file it.
12977 With a prefix argument, file it, without further interaction, to the
12978 default location.
12979 @item
12980 If the cursor is on a @code{<<<target>>>}, update radio targets and
12981 corresponding links in this buffer.
12982 @item
12983 If the cursor is in a property line or at the start or end of a property
12984 drawer, offer property commands.
12985 @item
12986 If the cursor is at a footnote reference, go to the corresponding
12987 definition, and vice versa.
12988 @item
12989 If the cursor is on a statistics cookie, update it.
12990 @item
12991 If the cursor is in a plain list item with a checkbox, toggle the status
12992 of the checkbox.
12993 @item
12994 If the cursor is on a numbered item in a plain list, renumber the
12995 ordered list.
12996 @item
12997 If the cursor is on the @code{#+BEGIN} line of a dynamic block, the
12998 block is updated.
12999 @end itemize
13001 @node Clean view, TTY keys, The very busy C-c C-c key, Miscellaneous
13002 @section A cleaner outline view
13003 @cindex hiding leading stars
13004 @cindex dynamic indentation
13005 @cindex odd-levels-only outlines
13006 @cindex clean outline view
13008 Some people find it noisy and distracting that the Org headlines start with a
13009 potentially large number of stars, and that text below the headlines is not
13010 indented.  While this is no problem when writing a @emph{book-like} document
13011 where the outline headings are really section headings, in a more
13012 @emph{list-oriented} outline, indented structure is a lot cleaner:
13014 @example
13015 @group
13016 * Top level headline             |    * Top level headline
13017 ** Second level                  |      * Second level
13018 *** 3rd level                    |        * 3rd level
13019 some text                        |          some text
13020 *** 3rd level                    |        * 3rd level
13021 more text                        |          more text
13022 * Another top level headline     |    * Another top level headline
13023 @end group
13024 @end example
13026 @noindent
13028 If you are using at least Emacs 23.2@footnote{Emacs 23.1 can actually crash
13029 with @code{org-indent-mode}} and version 6.29 of Org, this kind of view can
13030 be achieved dynamically at display time using @code{org-indent-mode}.  In
13031 this minor mode, all lines are prefixed for display with the necessary amount
13032 of space@footnote{@code{org-indent-mode} also sets the @code{wrap-prefix}
13033 property, such that @code{visual-line-mode} (or purely setting
13034 @code{word-wrap}) wraps long lines (including headlines) correctly indented.
13035 }.  Also headlines are prefixed with additional stars, so that the amount of
13036 indentation shifts by two@footnote{See the variable
13037 @code{org-indent-indentation-per-level}.}  spaces per level.  All headline
13038 stars but the last one are made invisible using the @code{org-hide}
13039 face@footnote{Turning on @code{org-indent-mode} sets
13040 @code{org-hide-leading-stars} to @code{t} and @code{org-adapt-indentation} to
13041 @code{nil}.} - see below under @samp{2.} for more information on how this
13042 works.  You can turn on @code{org-indent-mode} for all files by customizing
13043 the variable @code{org-startup-indented}, or you can turn it on for
13044 individual files using
13046 @example
13047 #+STARTUP: indent
13048 @end example
13050 If you want a similar effect in earlier version of Emacs and/or Org, or if
13051 you want the indentation to be hard space characters so that the plain text
13052 file looks as similar as possible to the Emacs display, Org supports you in
13053 the following way:
13055 @enumerate
13056 @item
13057 @emph{Indentation of text below headlines}@*
13058 You may indent text below each headline to make the left boundary line up
13059 with the headline, like
13061 @example
13062 *** 3rd level
13063     more text, now indented
13064 @end example
13066 @vindex org-adapt-indentation
13067 Org supports this with paragraph filling, line wrapping, and structure
13068 editing@footnote{See also the variable @code{org-adapt-indentation}.},
13069 preserving or adapting the indentation as appropriate.
13071 @item
13072 @vindex org-hide-leading-stars
13073 @emph{Hiding leading stars}@* You can modify the display in such a way that
13074 all leading stars become invisible.  To do this in a global way, configure
13075 the variable @code{org-hide-leading-stars} or change this on a per-file basis
13076 with
13078 @example
13079 #+STARTUP: hidestars
13080 #+STARTUP: showstars
13081 @end example
13083 With hidden stars, the tree becomes:
13085 @example
13086 @group
13087 * Top level headline
13088  * Second level
13089   * 3rd level
13090   ...
13091 @end group
13092 @end example
13094 @noindent
13095 @vindex org-hide @r{(face)}
13096 The leading stars are not truly replaced by whitespace, they are only
13097 fontified with the face @code{org-hide} that uses the background color as
13098 font color.  If you are not using either white or black background, you may
13099 have to customize this face to get the wanted effect.  Another possibility is
13100 to set this font such that the extra stars are @i{almost} invisible, for
13101 example using the color @code{grey90} on a white background.
13103 @item
13104 @vindex org-odd-levels-only
13105 Things become cleaner still if you skip all the even levels and use only odd
13106 levels 1, 3, 5..., effectively adding two stars to go from one outline level
13107 to the next@footnote{When you need to specify a level for a property search
13108 or refile targets, @samp{LEVEL=2} will correspond to 3 stars, etc@.}.  In this
13109 way we get the outline view shown at the beginning of this section.  In order
13110 to make the structure editing and export commands handle this convention
13111 correctly, configure the variable @code{org-odd-levels-only}, or set this on
13112 a per-file basis with one of the following lines:
13114 @example
13115 #+STARTUP: odd
13116 #+STARTUP: oddeven
13117 @end example
13119 You can convert an Org file from single-star-per-level to the
13120 double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels
13121 RET} in that file.  The reverse operation is @kbd{M-x
13122 org-convert-to-oddeven-levels}.
13123 @end enumerate
13125 @node TTY keys, Interaction, Clean view, Miscellaneous
13126 @section Using Org on a tty
13127 @cindex tty key bindings
13129 Because Org contains a large number of commands, by default many of
13130 Org's core commands are bound to keys that are generally not
13131 accessible on a tty, such as the cursor keys (@key{left}, @key{right},
13132 @key{up}, @key{down}), @key{TAB} and @key{RET}, in particular when used
13133 together with modifiers like @key{Meta} and/or @key{Shift}.  To access
13134 these commands on a tty when special keys are unavailable, the following
13135 alternative bindings can be used.  The tty bindings below will likely be
13136 more cumbersome; you may find for some of the bindings below that a
13137 customized workaround suits you better.  For example, changing a timestamp
13138 is really only fun with @kbd{S-@key{cursor}} keys, whereas on a
13139 tty you would rather use @kbd{C-c .} to re-insert the timestamp.
13141 @multitable @columnfractions 0.15 0.2 0.1 0.2
13142 @item @b{Default} @tab @b{Alternative 1} @tab @b{Speed key} @tab @b{Alternative 2}
13143 @item @kbd{S-@key{TAB}}     @tab @kbd{C-u @key{TAB}}       @tab @kbd{C} @tab
13144 @item @kbd{M-@key{left}}    @tab @kbd{C-c C-x l}           @tab @kbd{l} @tab @kbd{@key{Esc} @key{left}}
13145 @item @kbd{M-S-@key{left}}  @tab @kbd{C-c C-x L}           @tab @kbd{L} @tab
13146 @item @kbd{M-@key{right}}   @tab @kbd{C-c C-x r}           @tab @kbd{r} @tab @kbd{@key{Esc} @key{right}}
13147 @item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R}           @tab @kbd{R} @tab
13148 @item @kbd{M-@key{up}}      @tab @kbd{C-c C-x u}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{up}}
13149 @item @kbd{M-S-@key{up}}    @tab @kbd{C-c C-x U}           @tab @kbd{U} @tab
13150 @item @kbd{M-@key{down}}    @tab @kbd{C-c C-x d}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{down}}
13151 @item @kbd{M-S-@key{down}}  @tab @kbd{C-c C-x D}           @tab @kbd{D} @tab
13152 @item @kbd{S-@key{RET}}     @tab @kbd{C-c C-x c}           @tab @kbd{ } @tab
13153 @item @kbd{M-@key{RET}}     @tab @kbd{C-c C-x m}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{RET}}
13154 @item @kbd{M-S-@key{RET}}   @tab @kbd{C-c C-x M}           @tab @kbd{ } @tab
13155 @item @kbd{S-@key{left}}    @tab @kbd{C-c @key{left}}      @tab @kbd{ } @tab
13156 @item @kbd{S-@key{right}}   @tab @kbd{C-c @key{right}}     @tab @kbd{ } @tab
13157 @item @kbd{S-@key{up}}      @tab @kbd{C-c @key{up}}        @tab @kbd{ } @tab
13158 @item @kbd{S-@key{down}}    @tab @kbd{C-c @key{down}}      @tab @kbd{ } @tab
13159 @item @kbd{C-S-@key{left}}  @tab @kbd{C-c C-x @key{left}}  @tab @kbd{ } @tab
13160 @item @kbd{C-S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab @kbd{ } @tab
13161 @end multitable
13164 @node Interaction,  , TTY keys, Miscellaneous
13165 @section Interaction with other packages
13166 @cindex packages, interaction with other
13167 Org lives in the world of GNU Emacs and interacts in various ways
13168 with other code out there.
13170 @menu
13171 * Cooperation::                 Packages Org cooperates with
13172 * Conflicts::                   Packages that lead to conflicts
13173 @end menu
13175 @node Cooperation, Conflicts, Interaction, Interaction
13176 @subsection Packages that Org cooperates with
13178 @table @asis
13179 @cindex @file{calc.el}
13180 @cindex Gillespie, Dave
13181 @item @file{calc.el} by Dave Gillespie
13182 Org uses the Calc package for implementing spreadsheet
13183 functionality in its tables (@pxref{The spreadsheet}).  Org
13184 checks for the availability of Calc by looking for the function
13185 @code{calc-eval} which will have been autoloaded during setup if Calc has
13186 been installed properly.  As of Emacs 22, Calc is part of the Emacs
13187 distribution.  Another possibility for interaction between the two
13188 packages is using Calc for embedded calculations. @xref{Embedded Mode,
13189 , Embedded Mode, Calc, GNU Emacs Calc Manual}.
13190 @item @file{constants.el} by Carsten Dominik
13191 @cindex @file{constants.el}
13192 @cindex Dominik, Carsten
13193 @vindex org-table-formula-constants
13194 In a table formula (@pxref{The spreadsheet}), it is possible to use
13195 names for natural constants or units.  Instead of defining your own
13196 constants in the variable @code{org-table-formula-constants}, install
13197 the @file{constants} package which defines a large number of constants
13198 and units, and lets you use unit prefixes like @samp{M} for
13199 @samp{Mega}, etc@.  You will need version 2.0 of this package, available
13200 at @url{http://www.astro.uva.nl/~dominik/Tools}. Org checks for
13201 the function @code{constants-get}, which has to be autoloaded in your
13202 setup.  See the installation instructions in the file
13203 @file{constants.el}.
13204 @item @file{cdlatex.el} by Carsten Dominik
13205 @cindex @file{cdlatex.el}
13206 @cindex Dominik, Carsten
13207 Org-mode can make use of the CDLa@TeX{} package to efficiently enter
13208 La@TeX{} fragments into Org files.  See @ref{CDLaTeX mode}.
13209 @item @file{imenu.el} by Ake Stenhoff and Lars Lindberg
13210 @cindex @file{imenu.el}
13211 Imenu allows menu access to an index of items in a file.  Org-mode
13212 supports Imenu---all you need to do to get the index is the following:
13213 @lisp
13214 (add-hook 'org-mode-hook
13215           (lambda () (imenu-add-to-menubar "Imenu")))
13216 @end lisp
13217 @vindex org-imenu-depth
13218 By default the index is two levels deep---you can modify the depth using
13219 the option @code{org-imenu-depth}.
13220 @item @file{remember.el} by John Wiegley
13221 @cindex @file{remember.el}
13222 @cindex Wiegley, John
13223 Org used to use this package for capture, but no longer does.
13224 @item @file{speedbar.el} by Eric M. Ludlam
13225 @cindex @file{speedbar.el}
13226 @cindex Ludlam, Eric M.
13227 Speedbar is a package that creates a special frame displaying files and
13228 index items in files.  Org-mode supports Speedbar and allows you to
13229 drill into Org files directly from the Speedbar.  It also allows you to
13230 restrict the scope of agenda commands to a file or a subtree by using
13231 the command @kbd{<} in the Speedbar frame.
13232 @cindex @file{table.el}
13233 @item @file{table.el} by Takaaki Ota
13234 @kindex C-c C-c
13235 @cindex table editor, @file{table.el}
13236 @cindex @file{table.el}
13237 @cindex Ota, Takaaki
13239 Complex ASCII tables with automatic line wrapping, column- and row-spanning,
13240 and alignment can be created using the Emacs table package by Takaaki Ota
13241 (@uref{http://sourceforge.net/projects/table}, and also part of Emacs 22).
13242 Org-mode will recognize these tables and export them properly.  Because of
13243 interference with other Org-mode functionality, you unfortunately cannot edit
13244 these tables directly in the buffer.  Instead, you need to use the command
13245 @kbd{C-c '} to edit them, similar to source code snippets.
13247 @table @kbd
13248 @orgcmd{C-c ',org-edit-special}
13249 Edit a @file{table.el} table.  Works when the cursor is in a table.el table.
13251 @orgcmd{C-c ~,org-table-create-with-table.el}
13252 Insert a @file{table.el} table.  If there is already a table at point, this
13253 command converts it between the @file{table.el} format and the Org-mode
13254 format.  See the documentation string of the command
13255 @code{org-convert-table} for the restrictions under which this is
13256 possible.
13257 @end table
13258 @file{table.el} is part of Emacs since Emacs 22.
13259 @item @file{footnote.el} by Steven L. Baur
13260 @cindex @file{footnote.el}
13261 @cindex Baur, Steven L.
13262 Org-mode recognizes numerical footnotes as provided by this package.
13263 However, Org-mode also has its own footnote support (@pxref{Footnotes}),
13264 which makes using @file{footnote.el} unnecessary.
13265 @end table
13267 @node Conflicts,  , Cooperation, Interaction
13268 @subsection Packages that lead to conflicts with Org-mode
13270 @table @asis
13272 @cindex @code{shift-selection-mode}
13273 @vindex org-support-shift-select
13274 In Emacs 23, @code{shift-selection-mode} is on by default, meaning that
13275 cursor motions combined with the shift key should start or enlarge regions.
13276 This conflicts with the use of @kbd{S-@key{cursor}} commands in Org to change
13277 timestamps, TODO keywords, priorities, and item bullet types if the cursor is
13278 at such a location.  By default, @kbd{S-@key{cursor}} commands outside
13279 special contexts don't do anything, but you can customize the variable
13280 @code{org-support-shift-select}.  Org-mode then tries to accommodate shift
13281 selection by (i) using it outside of the special contexts where special
13282 commands apply, and by (ii) extending an existing active region even if the
13283 cursor moves across a special context.
13285 @item @file{CUA.el} by Kim. F. Storm
13286 @cindex @file{CUA.el}
13287 @cindex Storm, Kim. F.
13288 @vindex org-replace-disputed-keys
13289 Key bindings in Org conflict with the @kbd{S-<cursor>} keys used by CUA mode
13290 (as well as @code{pc-select-mode} and @code{s-region-mode}) to select and extend the
13291 region.  In fact, Emacs 23 has this built-in in the form of
13292 @code{shift-selection-mode}, see previous paragraph.  If you are using Emacs
13293 23, you probably don't want to use another package for this purpose.  However,
13294 if you prefer to leave these keys to a different package while working in
13295 Org-mode, configure the variable @code{org-replace-disputed-keys}.  When set,
13296 Org will move the following key bindings in Org files, and in the agenda
13297 buffer (but not during date selection).
13299 @example
13300 S-UP      ->  M-p             S-DOWN     ->  M-n
13301 S-LEFT    ->  M--             S-RIGHT    ->  M-+
13302 C-S-LEFT  ->  M-S--           C-S-RIGHT  ->  M-S-+
13303 @end example
13305 @vindex org-disputed-keys
13306 Yes, these are unfortunately more difficult to remember.  If you want
13307 to have other replacement keys, look at the variable
13308 @code{org-disputed-keys}.
13310 @item @file{yasnippet.el}
13311 @cindex @file{yasnippet.el}
13312 The way Org-mode binds the TAB key (binding to @code{[tab]} instead of
13313 @code{"\t"}) overrules yasnippets' access to this key.  The following code
13314 fixed this problem:
13316 @lisp
13317 (add-hook 'org-mode-hook
13318           (lambda ()
13319             (org-set-local 'yas/trigger-key [tab])
13320             (define-key yas/keymap [tab] 'yas/next-field-group)))
13321 @end lisp
13323 @item @file{windmove.el} by Hovav Shacham
13324 @cindex @file{windmove.el}
13325 This package also uses the @kbd{S-<cursor>} keys, so everything written
13326 in the paragraph above about CUA mode also applies here.  If you want make
13327 the windmove function active in locations where Org-mode does not have
13328 special functionality on @kbd{S-@key{cursor}}, add this to your
13329 configuration:
13331 @lisp
13332 ;; Make windmove work in org-mode:
13333 (add-hook 'org-shiftup-final-hook 'windmove-up)
13334 (add-hook 'org-shiftleft-final-hook 'windmove-left)
13335 (add-hook 'org-shiftdown-final-hook 'windmove-down)
13336 (add-hook 'org-shiftright-final-hook 'windmove-right)
13337 @end lisp
13339 @item @file{viper.el} by Michael Kifer
13340 @cindex @file{viper.el}
13341 @kindex C-c /
13342 Viper uses @kbd{C-c /} and therefore makes this key not access the
13343 corresponding Org-mode command @code{org-sparse-tree}.  You need to find
13344 another key for this command, or override the key in
13345 @code{viper-vi-global-user-map} with
13347 @lisp
13348 (define-key viper-vi-global-user-map "C-c /" 'org-sparse-tree)
13349 @end lisp
13351 @end table
13354 @node Hacking, MobileOrg, Miscellaneous, Top
13355 @appendix Hacking
13356 @cindex hacking
13358 This appendix covers some aspects where users can extend the functionality of
13359 Org.
13361 @menu
13362 * Hooks::                       Who to reach into Org's internals
13363 * Add-on packages::             Available extensions
13364 * Adding hyperlink types::      New custom link types
13365 * Context-sensitive commands::  How to add functionality to such commands
13366 * Tables in arbitrary syntax::  Orgtbl for La@TeX{} and other programs
13367 * Dynamic blocks::              Automatically filled blocks
13368 * Special agenda views::        Customized views
13369 * Extracting agenda information::  Postprocessing of agenda information
13370 * Using the property API::      Writing programs that use entry properties
13371 * Using the mapping API::       Mapping over all or selected entries
13372 @end menu
13374 @node Hooks, Add-on packages, Hacking, Hacking
13375 @section Hooks
13376 @cindex hooks
13378 Org has a large number of hook variables that can be used to add
13379 functionality.  This appendix about hacking is going to illustrate the
13380 use of some of them.  A complete list of all hooks with documentation is
13381 maintained by the Worg project and can be found at
13382 @uref{http://orgmode.org/worg/org-configs/org-hooks.php}.
13384 @node Add-on packages, Adding hyperlink types, Hooks, Hacking
13385 @section Add-on packages
13386 @cindex add-on packages
13388 A large number of add-on packages have been written by various authors.
13389 These packages are not part of Emacs, but they are distributed as contributed
13390 packages with the separate release available at the Org-mode home page at
13391 @uref{http://orgmode.org}.  The list of contributed packages, along with
13392 documentation about each package, is maintained by the Worg project at
13393 @uref{http://orgmode.org/worg/org-contrib/}.
13397 @node Adding hyperlink types, Context-sensitive commands, Add-on packages, Hacking
13398 @section Adding hyperlink types
13399 @cindex hyperlinks, adding new types
13401 Org has a large number of hyperlink types built-in
13402 (@pxref{Hyperlinks}).  If you would like to add new link types, Org
13403 provides an interface for doing so.  Let's look at an example file,
13404 @file{org-man.el}, that will add support for creating links like
13405 @samp{[[man:printf][The printf manpage]]} to show Unix manual pages inside
13406 Emacs:
13408 @lisp
13409 ;;; org-man.el - Support for links to manpages in Org
13411 (require 'org)
13413 (org-add-link-type "man" 'org-man-open)
13414 (add-hook 'org-store-link-functions 'org-man-store-link)
13416 (defcustom org-man-command 'man
13417   "The Emacs command to be used to display a man page."
13418   :group 'org-link
13419   :type '(choice (const man) (const woman)))
13421 (defun org-man-open (path)
13422   "Visit the manpage on PATH.
13423 PATH should be a topic that can be thrown at the man command."
13424   (funcall org-man-command path))
13426 (defun org-man-store-link ()
13427   "Store a link to a manpage."
13428   (when (memq major-mode '(Man-mode woman-mode))
13429     ;; This is a man page, we do make this link
13430     (let* ((page (org-man-get-page-name))
13431            (link (concat "man:" page))
13432            (description (format "Manpage for %s" page)))
13433       (org-store-link-props
13434        :type "man"
13435        :link link
13436        :description description))))
13438 (defun org-man-get-page-name ()
13439   "Extract the page name from the buffer name."
13440   ;; This works for both `Man-mode' and `woman-mode'.
13441   (if (string-match " \\(\\S-+\\)\\*" (buffer-name))
13442       (match-string 1 (buffer-name))
13443     (error "Cannot create link to this man page")))
13445 (provide 'org-man)
13447 ;;; org-man.el ends here
13448 @end lisp
13450 @noindent
13451 You would activate this new link type in @file{.emacs} with
13453 @lisp
13454 (require 'org-man)
13455 @end lisp
13457 @noindent
13458 Let's go through the file and see what it does.
13459 @enumerate
13460 @item
13461 It does @code{(require 'org)} to make sure that @file{org.el} has been
13462 loaded.
13463 @item
13464 The next line calls @code{org-add-link-type} to define a new link type
13465 with prefix @samp{man}.  The call also contains the name of a function
13466 that will be called to follow such a link.
13467 @item
13468 @vindex org-store-link-functions
13469 The next line adds a function to @code{org-store-link-functions}, in
13470 order to allow the command @kbd{C-c l} to record a useful link in a
13471 buffer displaying a man page.
13472 @end enumerate
13474 The rest of the file defines the necessary variables and functions.
13475 First there is a customization variable that determines which Emacs
13476 command should be used to display man pages.  There are two options,
13477 @code{man} and @code{woman}.  Then the function to follow a link is
13478 defined.  It gets the link path as an argument---in this case the link
13479 path is just a topic for the manual command.  The function calls the
13480 value of @code{org-man-command} to display the man page.
13482 Finally the function @code{org-man-store-link} is defined.  When you try
13483 to store a link with @kbd{C-c l}, this function will be called to
13484 try to make a link.  The function must first decide if it is supposed to
13485 create the link for this buffer type; we do this by checking the value
13486 of the variable @code{major-mode}.  If not, the function must exit and
13487 return the value @code{nil}.  If yes, the link is created by getting the
13488 manual topic from the buffer name and prefixing it with the string
13489 @samp{man:}.  Then it must call the command @code{org-store-link-props}
13490 and set the @code{:type} and @code{:link} properties.  Optionally you
13491 can also set the @code{:description} property to provide a default for
13492 the link description when the link is later inserted into an Org
13493 buffer with @kbd{C-c C-l}.
13495 When is makes sense for your new link type, you may also define a function
13496 @code{org-PREFIX-complete-link} that implements special (e.g. completion)
13497 support for inserting such a link with @kbd{C-c C-l}.  Such a function should
13498 not accept any arguments, and return the full link with prefix.
13500 @node Context-sensitive commands, Tables in arbitrary syntax, Adding hyperlink types, Hacking
13501 @section Context-sensitive commands
13502 @cindex context-sensitive commands, hooks
13503 @cindex add-ons, context-sensitive commands
13504 @vindex org-ctrl-c-ctrl-c-hook
13506 Org has several commands that act differently depending on context.  The most
13507 important example it the @kbd{C-c C-c} (@pxref{The very busy C-c C-c key}).
13508 Also the @kbd{M-cursor} and @kbd{M-S-cursor} keys have this property.
13510 Add-ons can tap into this functionality by providing a function that detects
13511 special context for that add-on and executes functionality appropriate for
13512 the context.  Here is an example from Dan Davison's @file{org-R.el} which
13513 allows you to evaluate commands based on the @file{R} programming language
13514 @footnote{@file{org-R.el} has been replaced by the org-mode functionality
13515 described in @ref{Working With Source Code} and is now obsolete.}.  For this
13516 package, special contexts are lines that start with @code{#+R:} or
13517 @code{#+RR:}.
13519 @lisp
13520 (defun org-R-apply-maybe ()
13521   "Detect if this is context for org-R and execute R commands."
13522   (if (save-excursion
13523         (beginning-of-line 1)
13524         (looking-at "#\\+RR?:"))
13525       (progn (call-interactively 'org-R-apply)
13526              t) ;; to signal that we took action
13527     nil)) ;; to signal that we did not
13529 (add-hook 'org-ctrl-c-ctrl-c-hook 'org-R-apply-maybe)
13530 @end lisp
13532 The function first checks if the cursor is in such a line.  If that is the
13533 case, @code{org-R-apply} is called and the function returns @code{t} to
13534 signal that action was taken, and @kbd{C-c C-c} will stop looking for other
13535 contexts.  If the function finds it should do nothing locally, it returns @code{nil} so that other, similar functions can have a try.
13538 @node Tables in arbitrary syntax, Dynamic blocks, Context-sensitive commands, Hacking
13539 @section Tables and lists in arbitrary syntax
13540 @cindex tables, in other modes
13541 @cindex lists, in other modes
13542 @cindex Orgtbl mode
13544 Since Orgtbl mode can be used as a minor mode in arbitrary buffers, a
13545 frequent feature request has been to make it work with native tables in
13546 specific languages, for example La@TeX{}.  However, this is extremely
13547 hard to do in a general way, would lead to a customization nightmare,
13548 and would take away much of the simplicity of the Orgtbl-mode table
13549 editor.
13551 This appendix describes a different approach.  We keep the Orgtbl mode
13552 table in its native format (the @i{source table}), and use a custom
13553 function to @i{translate} the table to the correct syntax, and to
13554 @i{install} it in the right location (the @i{target table}).  This puts
13555 the burden of writing conversion functions on the user, but it allows
13556 for a very flexible system.
13558 Bastien added the ability to do the same with lists, in Orgstruct mode.  You
13559 can use Org's facilities to edit and structure lists by turning
13560 @code{orgstruct-mode} on, then locally exporting such lists in another format
13561 (HTML, La@TeX{} or Texinfo.)
13564 @menu
13565 * Radio tables::                Sending and receiving radio tables
13566 * A LaTeX example::             Step by step, almost a tutorial
13567 * Translator functions::        Copy and modify
13568 * Radio lists::                 Doing the same for lists
13569 @end menu
13571 @node Radio tables, A LaTeX example, Tables in arbitrary syntax, Tables in arbitrary syntax
13572 @subsection Radio tables
13573 @cindex radio tables
13575 To define the location of the target table, you first need to create two
13576 lines that are comments in the current mode, but contain magic words for
13577 Orgtbl mode to find.  Orgtbl mode will insert the translated table
13578 between these lines, replacing whatever was there before.  For example:
13580 @example
13581 /* BEGIN RECEIVE ORGTBL table_name */
13582 /* END RECEIVE ORGTBL table_name */
13583 @end example
13585 @noindent
13586 Just above the source table, we put a special line that tells
13587 Orgtbl mode how to translate this table and where to install it.  For
13588 example:
13589 @cindex #+ORGTBL
13590 @example
13591 #+ORGTBL: SEND table_name translation_function arguments....
13592 @end example
13594 @noindent
13595 @code{table_name} is the reference name for the table that is also used
13596 in the receiver lines. @code{translation_function} is the Lisp function
13597 that does the translation.  Furthermore, the line can contain a list of
13598 arguments (alternating key and value) at the end.  The arguments will be
13599 passed as a property list to the translation function for
13600 interpretation.  A few standard parameters are already recognized and
13601 acted upon before the translation function is called:
13603 @table @code
13604 @item :skip N
13605 Skip the first N lines of the table.  Hlines do count as separate lines for
13606 this parameter!
13608 @item :skipcols (n1 n2 ...)
13609 List of columns that should be skipped.  If the table has a column with
13610 calculation marks, that column is automatically discarded as well.
13611 Please note that the translator function sees the table @emph{after} the
13612 removal of these columns, the function never knows that there have been
13613 additional columns.
13614 @end table
13616 @noindent
13617 The one problem remaining is how to keep the source table in the buffer
13618 without disturbing the normal workings of the file, for example during
13619 compilation of a C file or processing of a La@TeX{} file.  There are a
13620 number of different solutions:
13622 @itemize @bullet
13623 @item
13624 The table could be placed in a block comment if that is supported by the
13625 language.  For example, in C mode you could wrap the table between
13626 @samp{/*} and @samp{*/} lines.
13627 @item
13628 Sometimes it is possible to put the table after some kind of @i{END}
13629 statement, for example @samp{\bye} in @TeX{} and @samp{\end@{document@}}
13630 in La@TeX{}.
13631 @item
13632 You can just comment the table line-by-line whenever you want to process
13633 the file, and uncomment it whenever you need to edit the table.  This
13634 only sounds tedious---the command @kbd{M-x orgtbl-toggle-comment}
13635 makes this comment-toggling very easy, in particular if you bind it to a
13636 key.
13637 @end itemize
13639 @node A LaTeX example, Translator functions, Radio tables, Tables in arbitrary syntax
13640 @subsection A La@TeX{} example of radio tables
13641 @cindex La@TeX{}, and Orgtbl mode
13643 The best way to wrap the source table in La@TeX{} is to use the
13644 @code{comment} environment provided by @file{comment.sty}.  It has to be
13645 activated by placing @code{\usepackage@{comment@}} into the document
13646 header.  Orgtbl mode can insert a radio table skeleton@footnote{By
13647 default this works only for La@TeX{}, HTML, and Texinfo.  Configure the
13648 variable @code{orgtbl-radio-tables} to install templates for other
13649 modes.}  with the command @kbd{M-x orgtbl-insert-radio-table}.  You will
13650 be prompted for a table name, let's say we use @samp{salesfigures}.  You
13651 will then get the following template:
13653 @cindex #+ORGTBL, SEND
13654 @example
13655 % BEGIN RECEIVE ORGTBL salesfigures
13656 % END RECEIVE ORGTBL salesfigures
13657 \begin@{comment@}
13658 #+ORGTBL: SEND salesfigures orgtbl-to-latex
13659 | | |
13660 \end@{comment@}
13661 @end example
13663 @noindent
13664 @vindex La@TeX{}-verbatim-environments
13665 The @code{#+ORGTBL: SEND} line tells Orgtbl mode to use the function
13666 @code{orgtbl-to-latex} to convert the table into La@TeX{} and to put it
13667 into the receiver location with name @code{salesfigures}.  You may now
13668 fill in the table, feel free to use the spreadsheet features@footnote{If
13669 the @samp{#+TBLFM} line contains an odd number of dollar characters,
13670 this may cause problems with font-lock in La@TeX{} mode.  As shown in the
13671 example you can fix this by adding an extra line inside the
13672 @code{comment} environment that is used to balance the dollar
13673 expressions.  If you are using AUC@TeX{} with the font-latex library, a
13674 much better solution is to add the @code{comment} environment to the
13675 variable @code{LaTeX-verbatim-environments}.}:
13677 @example
13678 % BEGIN RECEIVE ORGTBL salesfigures
13679 % END RECEIVE ORGTBL salesfigures
13680 \begin@{comment@}
13681 #+ORGTBL: SEND salesfigures orgtbl-to-latex
13682 | Month | Days | Nr sold | per day |
13683 |-------+------+---------+---------|
13684 | Jan   |   23 |      55 |     2.4 |
13685 | Feb   |   21 |      16 |     0.8 |
13686 | March |   22 |     278 |    12.6 |
13687 #+TBLFM: $4=$3/$2;%.1f
13688 % $ (optional extra dollar to keep font-lock happy, see footnote)
13689 \end@{comment@}
13690 @end example
13692 @noindent
13693 When you are done, press @kbd{C-c C-c} in the table to get the converted
13694 table inserted between the two marker lines.
13696 Now let's assume you want to make the table header by hand, because you
13697 want to control how columns are aligned, etc@.  In this case we make sure
13698 that the table translator skips the first 2 lines of the source
13699 table, and tell the command to work as a @i{splice}, i.e. to not produce
13700 header and footer commands of the target table:
13702 @example
13703 \begin@{tabular@}@{lrrr@}
13704 Month & \multicolumn@{1@}@{c@}@{Days@} & Nr.\ sold & per day\\
13705 % BEGIN RECEIVE ORGTBL salesfigures
13706 % END RECEIVE ORGTBL salesfigures
13707 \end@{tabular@}
13709 \begin@{comment@}
13710 #+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2
13711 | Month | Days | Nr sold | per day |
13712 |-------+------+---------+---------|
13713 | Jan   |   23 |      55 |     2.4 |
13714 | Feb   |   21 |      16 |     0.8 |
13715 | March |   22 |     278 |    12.6 |
13716 #+TBLFM: $4=$3/$2;%.1f
13717 \end@{comment@}
13718 @end example
13720 The La@TeX{} translator function @code{orgtbl-to-latex} is already part of
13721 Orgtbl mode.  It uses a @code{tabular} environment to typeset the table
13722 and marks horizontal lines with @code{\hline}.  Furthermore, it
13723 interprets the following parameters (see also @pxref{Translator functions}):
13725 @table @code
13726 @item :splice nil/t
13727 When set to t, return only table body lines, don't wrap them into a
13728 tabular environment.  Default is nil.
13730 @item :fmt fmt
13731 A format to be used to wrap each field, it should contain @code{%s} for the
13732 original field value.  For example, to wrap each field value in dollars,
13733 you could use @code{:fmt "$%s$"}.  This may also be a property list with
13734 column numbers and formats. for example @code{:fmt (2 "$%s$" 4 "%s\\%%")}.
13735 A function of one argument can be used in place of the strings; the
13736 function must return a formatted string.
13738 @item :efmt efmt
13739 Use this format to print numbers with exponentials.  The format should
13740 have @code{%s} twice for inserting mantissa and exponent, for example
13741 @code{"%s\\times10^@{%s@}"}.  The default is @code{"%s\\,(%s)"}.  This
13742 may also be a property list with column numbers and formats, for example
13743 @code{:efmt (2 "$%s\\times10^@{%s@}$" 4 "$%s\\cdot10^@{%s@}$")}.  After
13744 @code{efmt} has been applied to a value, @code{fmt} will also be
13745 applied.  Similar to @code{fmt}, functions of two arguments can be
13746 supplied instead of strings.
13747 @end table
13749 @node Translator functions, Radio lists, A LaTeX example, Tables in arbitrary syntax
13750 @subsection Translator functions
13751 @cindex HTML, and Orgtbl mode
13752 @cindex translator function
13754 Orgtbl mode has several translator functions built-in: @code{orgtbl-to-csv}
13755 (comma-separated values), @code{orgtbl-to-tsv} (TAB-separated values)
13756 @code{orgtbl-to-latex}, @code{orgtbl-to-html}, and @code{orgtbl-to-texinfo}.
13757 Except for @code{orgtbl-to-html}@footnote{The HTML translator uses the same
13758 code that produces tables during HTML export.}, these all use a generic
13759 translator, @code{orgtbl-to-generic}.  For example, @code{orgtbl-to-latex}
13760 itself is a very short function that computes the column definitions for the
13761 @code{tabular} environment, defines a few field and line separators and then
13762 hands processing over to the generic translator.  Here is the entire code:
13764 @lisp
13765 @group
13766 (defun orgtbl-to-latex (table params)
13767   "Convert the Orgtbl mode TABLE to LaTeX."
13768   (let* ((alignment (mapconcat (lambda (x) (if x "r" "l"))
13769                                org-table-last-alignment ""))
13770          (params2
13771           (list
13772            :tstart (concat "\\begin@{tabular@}@{" alignment "@}")
13773            :tend "\\end@{tabular@}"
13774            :lstart "" :lend " \\\\" :sep " & "
13775            :efmt "%s\\,(%s)" :hline "\\hline")))
13776     (orgtbl-to-generic table (org-combine-plists params2 params))))
13777 @end group
13778 @end lisp
13780 As you can see, the properties passed into the function (variable
13781 @var{PARAMS}) are combined with the ones newly defined in the function
13782 (variable @var{PARAMS2}).  The ones passed into the function (i.e. the
13783 ones set by the @samp{ORGTBL SEND} line) take precedence.  So if you
13784 would like to use the La@TeX{} translator, but wanted the line endings to
13785 be @samp{\\[2mm]} instead of the default @samp{\\}, you could just
13786 overrule the default with
13788 @example
13789 #+ORGTBL: SEND test orgtbl-to-latex :lend " \\\\[2mm]"
13790 @end example
13792 For a new language, you can either write your own converter function in
13793 analogy with the La@TeX{} translator, or you can use the generic function
13794 directly.  For example, if you have a language where a table is started
13795 with @samp{!BTBL!}, ended with @samp{!ETBL!}, and where table lines are
13796 started with @samp{!BL!}, ended with @samp{!EL!}, and where the field
13797 separator is a TAB, you could call the generic translator like this (on
13798 a single line!):
13800 @example
13801 #+ORGTBL: SEND test orgtbl-to-generic :tstart "!BTBL!" :tend "!ETBL!"
13802                               :lstart "!BL! " :lend " !EL!" :sep "\t"
13803 @end example
13805 @noindent
13806 Please check the documentation string of the function
13807 @code{orgtbl-to-generic} for a full list of parameters understood by
13808 that function, and remember that you can pass each of them into
13809 @code{orgtbl-to-latex}, @code{orgtbl-to-texinfo}, and any other function
13810 using the generic function.
13812 Of course you can also write a completely new function doing complicated
13813 things the generic translator cannot do.  A translator function takes
13814 two arguments.  The first argument is the table, a list of lines, each
13815 line either the symbol @code{hline} or a list of fields.  The second
13816 argument is the property list containing all parameters specified in the
13817 @samp{#+ORGTBL: SEND} line.  The function must return a single string
13818 containing the formatted table.  If you write a generally useful
13819 translator, please post it on @email{emacs-orgmode@@gnu.org} so that
13820 others can benefit from your work.
13822 @node Radio lists,  , Translator functions, Tables in arbitrary syntax
13823 @subsection Radio lists
13824 @cindex radio lists
13825 @cindex org-list-insert-radio-list
13827 Sending and receiving radio lists works exactly the same way than sending and
13828 receiving radio tables (@pxref{Radio tables}).  As for radio tables, you can
13829 insert radio lists templates in HTML, La@TeX{} and Texinfo modes by calling
13830 @code{org-list-insert-radio-list}.
13832 Here are the differences with radio tables:
13834 @itemize @minus
13835 @item
13836 Orgstruct mode must be active.
13837 @item
13838 Use the @code{ORGLST} keyword instead of @code{ORGTBL}.
13839 @item
13840 The available translation functions for radio lists don't take
13841 parameters.
13842 @item
13843 @kbd{C-c C-c} will work when pressed on the first item of the list.
13844 @end itemize
13846 Here is a La@TeX{} example.  Let's say that you have this in your
13847 La@TeX{} file:
13849 @cindex #+ORGLST
13850 @example
13851 % BEGIN RECEIVE ORGLST to-buy
13852 % END RECEIVE ORGLST to-buy
13853 \begin@{comment@}
13854 #+ORGLST: SEND to-buy org-list-to-latex
13855 - a new house
13856 - a new computer
13857   + a new keyboard
13858   + a new mouse
13859 - a new life
13860 \end@{comment@}
13861 @end example
13863 Pressing `C-c C-c' on @code{a new house} and will insert the converted
13864 La@TeX{} list between the two marker lines.
13866 @node Dynamic blocks, Special agenda views, Tables in arbitrary syntax, Hacking
13867 @section Dynamic blocks
13868 @cindex dynamic blocks
13870 Org documents can contain @emph{dynamic blocks}.  These are
13871 specially marked regions that are updated by some user-written function.
13872 A good example for such a block is the clock table inserted by the
13873 command @kbd{C-c C-x C-r} (@pxref{Clocking work time}).
13875 Dynamic block are enclosed by a BEGIN-END structure that assigns a name
13876 to the block and can also specify parameters for the function producing
13877 the content of the block.
13879 #+BEGIN:dynamic block
13880 @example
13881 #+BEGIN: myblock :parameter1 value1 :parameter2 value2 ...
13883 #+END:
13884 @end example
13886 Dynamic blocks are updated with the following commands
13888 @table @kbd
13889 @orgcmd{C-c C-x C-u,org-dblock-update}
13890 Update dynamic block at point.
13891 @orgkey{C-u C-c C-x C-u}
13892 Update all dynamic blocks in the current file.
13893 @end table
13895 Updating a dynamic block means to remove all the text between BEGIN and
13896 END, parse the BEGIN line for parameters and then call the specific
13897 writer function for this block to insert the new content.  If you want
13898 to use the original content in the writer function, you can use the
13899 extra parameter @code{:content}.
13901 For a block with name @code{myblock}, the writer function is
13902 @code{org-dblock-write:myblock} with as only parameter a property list
13903 with the parameters given in the begin line.  Here is a trivial example
13904 of a block that keeps track of when the block update function was last
13905 run:
13907 @example
13908 #+BEGIN: block-update-time :format "on %m/%d/%Y at %H:%M"
13910 #+END:
13911 @end example
13913 @noindent
13914 The corresponding block writer function could look like this:
13916 @lisp
13917 (defun org-dblock-write:block-update-time (params)
13918    (let ((fmt (or (plist-get params :format) "%d. %m. %Y")))
13919      (insert "Last block update at: "
13920              (format-time-string fmt (current-time)))))
13921 @end lisp
13923 If you want to make sure that all dynamic blocks are always up-to-date,
13924 you could add the function @code{org-update-all-dblocks} to a hook, for
13925 example @code{before-save-hook}.  @code{org-update-all-dblocks} is
13926 written in a way such that it does nothing in buffers that are not in
13927 @code{org-mode}.
13929 @node Special agenda views, Extracting agenda information, Dynamic blocks, Hacking
13930 @section Special agenda views
13931 @cindex agenda views, user-defined
13933 Org provides a special hook that can be used to narrow down the selection
13934 made by these agenda views: @code{todo}, @code{alltodo}, @code{tags}, @code{tags-todo}, 
13935 @code{tags-tree}.  You may specify a function that is used at each match to verify 
13936 if the match should indeed be part of the agenda view, and if not, how 
13937 much should be skipped.
13939 Let's say you want to produce a list of projects that contain a WAITING
13940 tag anywhere in the project tree.  Let's further assume that you have
13941 marked all tree headings that define a project with the TODO keyword
13942 PROJECT.  In this case you would run a TODO search for the keyword
13943 PROJECT, but skip the match unless there is a WAITING tag anywhere in
13944 the subtree belonging to the project line.
13946 To achieve this, you must write a function that searches the subtree for
13947 the tag.  If the tag is found, the function must return @code{nil} to
13948 indicate that this match should not be skipped.  If there is no such
13949 tag, return the location of the end of the subtree, to indicate that
13950 search should continue from there.
13952 @lisp
13953 (defun my-skip-unless-waiting ()
13954   "Skip trees that are not waiting"
13955   (let ((subtree-end (save-excursion (org-end-of-subtree t))))
13956     (if (re-search-forward ":waiting:" subtree-end t)
13957         nil          ; tag found, do not skip
13958       subtree-end))) ; tag not found, continue after end of subtree
13959 @end lisp
13961 Now you may use this function in an agenda custom command, for example
13962 like this:
13964 @lisp
13965 (org-add-agenda-custom-command
13966  '("b" todo "PROJECT"
13967    ((org-agenda-skip-function 'my-skip-unless-waiting)
13968     (org-agenda-overriding-header "Projects waiting for something: "))))
13969 @end lisp
13971 @vindex org-agenda-overriding-header
13972 Note that this also binds @code{org-agenda-overriding-header} to get a
13973 meaningful header in the agenda view.
13975 @vindex org-odd-levels-only
13976 @vindex org-agenda-skip-function
13977 A general way to create custom searches is to base them on a search for
13978 entries with a certain level limit.  If you want to study all entries with
13979 your custom search function, simply do a search for
13980 @samp{LEVEL>0}@footnote{Note that, when using @code{org-odd-levels-only}, a
13981 level number corresponds to order in the hierarchy, not to the number of
13982 stars.}, and then use @code{org-agenda-skip-function} to select the entries
13983 you really want to have.
13985 You may also put a Lisp form into @code{org-agenda-skip-function}.  In
13986 particular, you may use the functions @code{org-agenda-skip-entry-if}
13987 and @code{org-agenda-skip-subtree-if} in this form, for example:
13989 @table @code
13990 @item '(org-agenda-skip-entry-if 'scheduled)
13991 Skip current entry if it has been scheduled.
13992 @item '(org-agenda-skip-entry-if 'notscheduled)
13993 Skip current entry if it has not been scheduled.
13994 @item '(org-agenda-skip-entry-if 'deadline)
13995 Skip current entry if it has a deadline.
13996 @item '(org-agenda-skip-entry-if 'scheduled 'deadline)
13997 Skip current entry if it has a deadline, or if it is scheduled.
13998 @item '(org-agenda-skip-entry-if 'todo '("TODO" "WAITING"))
13999 Skip current entry if the TODO keyword is TODO or WAITING.
14000 @item '(org-agenda-skip-entry-if 'todo 'done)
14001 Skip current entry if the TODO keyword marks a DONE state.
14002 @item '(org-agenda-skip-entry-if 'timestamp)
14003 Skip current entry if it has any timestamp, may also be deadline or scheduled.
14004 @item '(org-agenda-skip-entry 'regexp "regular expression")
14005 Skip current entry if the regular expression matches in the entry.
14006 @item '(org-agenda-skip-entry 'notregexp "regular expression")
14007 Skip current entry unless the regular expression matches.
14008 @item '(org-agenda-skip-subtree-if 'regexp "regular expression")
14009 Same as above, but check and skip the entire subtree.
14010 @end table
14012 Therefore we could also have written the search for WAITING projects
14013 like this, even without defining a special function:
14015 @lisp
14016 (org-add-agenda-custom-command
14017  '("b" todo "PROJECT"
14018    ((org-agenda-skip-function '(org-agenda-skip-subtree-if
14019                                 'regexp ":waiting:"))
14020     (org-agenda-overriding-header "Projects waiting for something: "))))
14021 @end lisp
14023 @node Extracting agenda information, Using the property API, Special agenda views, Hacking
14024 @section Extracting agenda information
14025 @cindex agenda, pipe
14026 @cindex Scripts, for agenda processing
14028 @vindex org-agenda-custom-commands
14029 Org provides commands to access agenda information for the command
14030 line in Emacs batch mode.  This extracted information can be sent
14031 directly to a printer, or it can be read by a program that does further
14032 processing of the data.  The first of these commands is the function
14033 @code{org-batch-agenda}, that produces an agenda view and sends it as
14034 ASCII text to STDOUT.  The command takes a single string as parameter.
14035 If the string has length 1, it is used as a key to one of the commands
14036 you have configured in @code{org-agenda-custom-commands}, basically any
14037 key you can use after @kbd{C-c a}.  For example, to directly print the
14038 current TODO list, you could use
14040 @example
14041 emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
14042 @end example
14044 If the parameter is a string with 2 or more characters, it is used as a
14045 tags/TODO match string.  For example, to print your local shopping list
14046 (all items with the tag @samp{shop}, but excluding the tag
14047 @samp{NewYork}), you could use
14049 @example
14050 emacs -batch -l ~/.emacs                                      \
14051       -eval '(org-batch-agenda "+shop-NewYork")' | lpr
14052 @end example
14054 @noindent
14055 You may also modify parameters on the fly like this:
14057 @example
14058 emacs -batch -l ~/.emacs                                      \
14059    -eval '(org-batch-agenda "a"                               \
14060             org-agenda-ndays 30                               \
14061             org-agenda-include-diary nil                      \
14062             org-agenda-files (quote ("~/org/project.org")))'  \
14063    | lpr
14064 @end example
14066 @noindent
14067 which will produce a 30-day agenda, fully restricted to the Org file
14068 @file{~/org/projects.org}, not even including the diary.
14070 If you want to process the agenda data in more sophisticated ways, you
14071 can use the command @code{org-batch-agenda-csv} to get a comma-separated
14072 list of values for each agenda item.  Each line in the output will
14073 contain a number of fields separated by commas.  The fields in a line
14074 are:
14076 @example
14077 category     @r{The category of the item}
14078 head         @r{The headline, without TODO keyword, TAGS and PRIORITY}
14079 type         @r{The type of the agenda entry, can be}
14080                 todo               @r{selected in TODO match}
14081                 tagsmatch          @r{selected in tags match}
14082                 diary              @r{imported from diary}
14083                 deadline           @r{a deadline}
14084                 scheduled          @r{scheduled}
14085                 timestamp          @r{appointment, selected by timestamp}
14086                 closed             @r{entry was closed on date}
14087                 upcoming-deadline  @r{warning about nearing deadline}
14088                 past-scheduled     @r{forwarded scheduled item}
14089                 block              @r{entry has date block including date}
14090 todo         @r{The TODO keyword, if any}
14091 tags         @r{All tags including inherited ones, separated by colons}
14092 date         @r{The relevant date, like 2007-2-14}
14093 time         @r{The time, like 15:00-16:50}
14094 extra        @r{String with extra planning info}
14095 priority-l   @r{The priority letter if any was given}
14096 priority-n   @r{The computed numerical priority}
14097 @end example
14099 @noindent
14100 Time and date will only be given if a timestamp (or deadline/scheduled)
14101 led to the selection of the item.
14103 A CSV list like this is very easy to use in a post-processing script.
14104 For example, here is a Perl program that gets the TODO list from
14105 Emacs/Org and prints all the items, preceded by a checkbox:
14107 @example
14108 #!/usr/bin/perl
14110 # define the Emacs command to run
14111 $cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'";
14113 # run it and capture the output
14114 $agenda = qx@{$cmd 2>/dev/null@};
14116 # loop over all lines
14117 foreach $line (split(/\n/,$agenda)) @{
14118   # get the individual values
14119   ($category,$head,$type,$todo,$tags,$date,$time,$extra,
14120    $priority_l,$priority_n) = split(/,/,$line);
14121   # process and print
14122   print "[ ] $head\n";
14124 @end example
14126 @node Using the property API, Using the mapping API, Extracting agenda information, Hacking
14127 @section Using the property API
14128 @cindex API, for properties
14129 @cindex properties, API
14131 Here is a description of the functions that can be used to work with
14132 properties.
14134 @defun org-entry-properties &optional pom which
14135 Get all properties of the entry at point-or-marker POM.@*
14136 This includes the TODO keyword, the tags, time strings for deadline,
14137 scheduled, and clocking, and any additional properties defined in the
14138 entry.  The return value is an alist, keys may occur multiple times
14139 if the property key was used several times.@*
14140 POM may also be nil, in which case the current entry is used.
14141 If WHICH is nil or `all', get all properties.  If WHICH is
14142 `special' or `standard', only get that subclass.
14143 @end defun
14144 @vindex org-use-property-inheritance
14145 @defun org-entry-get pom property &optional inherit
14146 Get value of PROPERTY for entry at point-or-marker POM.  By default,
14147 this only looks at properties defined locally in the entry.  If INHERIT
14148 is non-nil and the entry does not have the property, then also check
14149 higher levels of the hierarchy.  If INHERIT is the symbol
14150 @code{selective}, use inheritance if and only if the setting of
14151 @code{org-use-property-inheritance} selects PROPERTY for inheritance.
14152 @end defun
14154 @defun org-entry-delete pom property
14155 Delete the property PROPERTY from entry at point-or-marker POM.
14156 @end defun
14158 @defun org-entry-put pom property value
14159 Set PROPERTY to VALUE for entry at point-or-marker POM.
14160 @end defun
14162 @defun org-buffer-property-keys &optional include-specials
14163 Get all property keys in the current buffer.
14164 @end defun
14166 @defun org-insert-property-drawer
14167 Insert a property drawer at point.
14168 @end defun
14170 @defun org-entry-put-multivalued-property pom property &rest values
14171 Set PROPERTY at point-or-marker POM to VALUES.  VALUES should be a list of
14172 strings.  They will be concatenated, with spaces as separators.
14173 @end defun
14175 @defun org-entry-get-multivalued-property pom property
14176 Treat the value of the property PROPERTY as a whitespace-separated list of
14177 values and return the values as a list of strings.
14178 @end defun
14180 @defun org-entry-add-to-multivalued-property pom property value
14181 Treat the value of the property PROPERTY as a whitespace-separated list of
14182 values and make sure that VALUE is in this list.
14183 @end defun
14185 @defun org-entry-remove-from-multivalued-property pom property value
14186 Treat the value of the property PROPERTY as a whitespace-separated list of
14187 values and make sure that VALUE is @emph{not} in this list.
14188 @end defun
14190 @defun org-entry-member-in-multivalued-property pom property value
14191 Treat the value of the property PROPERTY as a whitespace-separated list of
14192 values and check if VALUE is in this list.
14193 @end defun
14195 @defopt org-property-allowed-value-functions
14196 Hook for functions supplying allowed values for specific.
14197 The functions must take a single argument, the name of the property, and
14198 return a flat list of allowed values.  If @samp{:ETC} is one of
14199 the values, use the values as completion help, but allow also other values
14200 to be entered.  The functions must return @code{nil} if they are not
14201 responsible for this property.
14202 @end defopt
14204 @node Using the mapping API,  , Using the property API, Hacking
14205 @section Using the mapping API
14206 @cindex API, for mapping
14207 @cindex mapping entries, API
14209 Org has sophisticated mapping capabilities to find all entries satisfying
14210 certain criteria.  Internally, this functionality is used to produce agenda
14211 views, but there is also an API that can be used to execute arbitrary
14212 functions for each or selected entries.  The main entry point for this API
14215 @defun org-map-entries func &optional match scope &rest skip
14216 Call FUNC at each headline selected by MATCH in SCOPE.
14218 FUNC is a function or a Lisp form.  The function will be called without
14219 arguments, with the cursor positioned at the beginning of the headline.
14220 The return values of all calls to the function will be collected and
14221 returned as a list.
14223 The call to FUNC will be wrapped into a save-excursion form, so FUNC
14224 does not need to preserve point.  After evaluation, the cursor will be
14225 moved to the end of the line (presumably of the headline of the
14226 processed entry) and search continues from there.  Under some
14227 circumstances, this may not produce the wanted results.  For example,
14228 if you have removed (e.g. archived) the current (sub)tree it could
14229 mean that the next entry will be skipped entirely.  In such cases, you
14230 can specify the position from where search should continue by making
14231 FUNC set the variable `org-map-continue-from' to the desired buffer
14232 position.
14234 MATCH is a tags/property/todo match as it is used in the agenda match view.
14235 Only headlines that are matched by this query will be considered during
14236 the iteration.  When MATCH is nil or t, all headlines will be
14237 visited by the iteration.
14239 SCOPE determines the scope of this command.  It can be any of:
14241 @example
14242 nil     @r{the current buffer, respecting the restriction if any}
14243 tree    @r{the subtree started with the entry at point}
14244 file    @r{the current buffer, without restriction}
14245 file-with-archives
14246         @r{the current buffer, and any archives associated with it}
14247 agenda  @r{all agenda files}
14248 agenda-with-archives
14249         @r{all agenda files with any archive files associated with them}
14250 (file1 file2 ...)
14251         @r{if this is a list, all files in the list will be scanned}
14252 @end example
14253 @noindent
14254 The remaining args are treated as settings for the skipping facilities of
14255 the scanner.  The following items can be given here:
14257 @vindex org-agenda-skip-function
14258 @example
14259 archive   @r{skip trees with the archive tag}
14260 comment   @r{skip trees with the COMMENT keyword}
14261 function or Lisp form
14262           @r{will be used as value for @code{org-agenda-skip-function},}
14263           @r{so whenever the function returns t, FUNC}
14264           @r{will not be called for that entry and search will}
14265           @r{continue from the point where the function leaves it}
14266 @end example
14267 @end defun
14269 The function given to that mapping routine can really do anything you like.
14270 It can use the property API (@pxref{Using the property API}) to gather more
14271 information about the entry, or in order to change metadata in the entry.
14272 Here are a couple of functions that might be handy:
14274 @defun org-todo &optional arg
14275 Change the TODO state of the entry, see the docstring of the functions for
14276 the many possible values for the argument ARG.
14277 @end defun
14279 @defun org-priority &optional action
14280 Change the priority of the entry, see the docstring of this function for the
14281 possible values for ACTION.
14282 @end defun
14284 @defun org-toggle-tag tag &optional onoff
14285 Toggle the tag TAG in the current entry.  Setting ONOFF to either @code{on}
14286 or @code{off} will not toggle tag, but ensure that it is either on or off.
14287 @end defun
14289 @defun org-promote
14290 Promote the current entry.
14291 @end defun
14293 @defun org-demote
14294 Demote the current entry.
14295 @end defun
14297 Here is a simple example that will turn all entries in the current file with
14298 a tag @code{TOMORROW} into TODO entries with the keyword @code{UPCOMING}.
14299 Entries in comment trees and in archive trees will be ignored.
14301 @lisp
14302 (org-map-entries
14303    '(org-todo "UPCOMING")
14304    "+TOMORROW" 'file 'archive 'comment)
14305 @end lisp
14307 The following example counts the number of entries with TODO keyword
14308 @code{WAITING}, in all agenda files.
14310 @lisp
14311 (length (org-map-entries t "/+WAITING" 'agenda))
14312 @end lisp
14314 @node MobileOrg, History and Acknowledgments, Hacking, Top
14315 @appendix MobileOrg
14316 @cindex iPhone
14317 @cindex MobileOrg
14319 @uref{http://mobileorg.ncogni.to/, MobileOrg} is an application for the
14320 @i{iPhone/iPod Touch} series of devices, developed by Richard Moreland.
14321 @i{MobileOrg} offers offline viewing and capture support for an Org-mode
14322 system rooted on a ``real'' computer.  It does also allow you to record
14323 changes to existing entries.  Android users should check out
14324 @uref{http://wiki.github.com/matburt/mobileorg-android/, MobileOrg Android}
14325 by Matt Jones.
14327 This appendix describes the support Org has for creating agenda views in a
14328 format that can be displayed by @i{MobileOrg}, and for integrating notes
14329 captured and changes made by @i{MobileOrg} into the main system.
14331 For changing tags and TODO states in MobileOrg, you should have set up the
14332 customization variables @code{org-todo-keywords} and @code{org-tags-alist} to
14333 cover all important tags and TODO keywords, even if individual files use only
14334 part of these.  MobileOrg will also offer you states and tags set up with
14335 in-buffer settings, but it will understand the logistics of TODO state
14336 @i{sets} (@pxref{Per-file keywords}) and @i{mutually exclusive} tags
14337 (@pxref{Setting tags}) only for those set in these variables.
14339 @menu
14340 * Setting up the staging area::  Where to interact with the mobile device
14341 * Pushing to MobileOrg::        Uploading Org files and agendas
14342 * Pulling from MobileOrg::      Integrating captured and flagged items
14343 @end menu
14345 @node Setting up the staging area, Pushing to MobileOrg, MobileOrg, MobileOrg
14346 @section Setting up the staging area
14348 MobileOrg needs to interact with Emacs through directory on a server.  If you
14349 are using a public server, you should consider to encrypt the files that are
14350 uploaded to the server.  This can be done with Org-mode 7.02 and with
14351 @i{MobileOrg 1.5} (iPhone version), and you need an @file{openssl}
14352 installation on your system.  To turn on encryption, set a password in
14353 @i{MobileOrg} and, on the Emacs side, configure the variable
14354 @code{org-mobile-use-encryption}@footnote{If you can safely store the
14355 password in your Emacs setup, you might also want to configure
14356 @code{org-mobile-encryption-password}.  Please read the docstring of that
14357 variable.  Note that encryption will apply only to the contents of the
14358 @file{.org} files.  The file names themselves will remain visible.}.
14360 The easiest way to create that directory is to use a free
14361 @uref{http://dropbox.com,Dropbox.com} account@footnote{If you cannot use
14362 Dropbox, or if your version of MobileOrg does not support it, you can use a
14363 webdav server.  For more information, check out the the documentation of
14364 MobileOrg and also this
14365 @uref{http://orgmode.org/worg/org-faq.php#mobileorg_webdav, FAQ entry}.}.
14366 When MobileOrg first connects to your Dropbox, it will create a directory
14367 @i{MobileOrg} inside the Dropbox.  After the directory has been created, tell
14368 Emacs about it:
14370 @lisp
14371 (setq org-mobile-directory "~/Dropbox/MobileOrg")
14372 @end lisp
14374 Org-mode has commands to put files for @i{MobileOrg} into that directory,
14375 and to read captured notes from there.
14377 @node Pushing to MobileOrg, Pulling from MobileOrg, Setting up the staging area, MobileOrg
14378 @section Pushing to MobileOrg
14380 This operation copies all files currently listed in @code{org-mobile-files}
14381 to the directory @code{org-mobile-directory}.  By default this list contains
14382 all agenda files (as listed in @code{org-agenda-files}), but additional files
14383 can be included by customizing @code{org-mobiles-files}.  File names will be
14384 staged with path relative to @code{org-directory}, so all files should be
14385 inside this directory.  The push operation also creates a special Org file
14386 @file{agendas.org} with all custom agenda view defined by the
14387 user@footnote{While creating the agendas, Org-mode will force ID properties
14388 on all referenced entries, so that these entries can be uniquely identified
14389 if @i{MobileOrg} flags them for further action.  If you do not want to get
14390 these properties in so many entries, you can set the variable
14391 @code{org-mobile-force-id-on-agenda-items} to @code{nil}.  Org mode will then
14392 rely on outline paths, in the hope that these will be unique enough.}.
14393 Finally, Org writes the file @file{index.org}, containing links to all other
14394 files.  @i{MobileOrg} first reads this file from the server, and then
14395 downloads all agendas and Org files listed in it.  To speed up the download,
14396 MobileOrg will only read files whose checksums@footnote{stored automatically
14397 in the file @file{checksums.dat}} have changed.
14399 @node Pulling from MobileOrg,  , Pushing to MobileOrg, MobileOrg
14400 @section Pulling from MobileOrg
14402 When @i{MobileOrg} synchronizes with the server, it not only pulls the Org
14403 files for viewing.  It also appends captured entries and pointers to flagged
14404 and changed entries to the file @file{mobileorg.org} on the server.  Org has
14405 a @emph{pull} operation that integrates this information into an inbox file
14406 and operates on the pointers to flagged entries.  Here is how it works:
14408 @enumerate
14409 @item
14410 Org moves all entries found in
14411 @file{mobileorg.org}@footnote{@file{mobileorg.org} will be empty after this
14412 operation.} and appends them to the file pointed to by the variable
14413 @code{org-mobile-inbox-for-pull}.  Each captured entry and each editing event
14414 will be a top-level entry in the inbox file.
14415 @item
14416 After moving the entries, Org will attempt to implement the changes made in
14417 @i{MobileOrg}.  Some changes are applied directly and without user
14418 interaction.  Examples are all changes to tags, TODO state, headline and body
14419 text that can be cleanly applied.  Entries that have been flagged for further
14420 action will receive a tag @code{:FLAGGED:}, so that they can be easily found
14421 again.  When there is a problem finding an entry or applying the change, the
14422 pointer entry will remain in the inbox and will be marked with an error
14423 message.  You need to later resolve these issues by hand.
14424 @item
14425 Org will then generate an agenda view with all flagged entries.  The user
14426 should then go through these entries and do whatever actions are necessary.
14427 If a note has been stored while flagging an entry in @i{MobileOrg}, that note
14428 will be displayed in the echo area when the cursor is on the corresponding
14429 agenda line.
14430 @table @kbd
14431 @kindex ?
14432 @item ?
14433 Pressing @kbd{?} in that special agenda will display the full flagging note in
14434 another window and also push it onto the kill ring.  So you could use @kbd{?
14435 z C-y C-c C-c} to store that flagging note as a normal note in the entry.
14436 Pressing @kbd{?} twice in succession will offer to remove the
14437 @code{:FLAGGED:} tag along with the recorded flagging note (which is stored
14438 in a property).  In this way you indicate, that the intended processing for
14439 this flagged entry is finished.
14440 @end table
14441 @end enumerate
14443 @kindex C-c a ?
14444 If you are not able to process all flagged entries directly, you can always
14445 return to this agenda view@footnote{Note, however, that there is a subtle
14446 difference.  The view created automatically by @kbd{M-x org-mobile-pull
14447 @key{RET}} is guaranteed to search all files that have been addressed by the
14448 last pull.  This might include a file that is not currently in your list of
14449 agenda files.  If you later use @kbd{C-c a ?} to regenerate the view, only
14450 the current agenda files will be searched.} using @kbd{C-c a ?}.
14452 @node History and Acknowledgments, Main Index, MobileOrg, Top
14453 @appendix History and acknowledgments
14454 @cindex acknowledgments
14455 @cindex history
14456 @cindex thanks
14458 Org was born in 2003, out of frustration over the user interface of the Emacs
14459 Outline mode.  I was trying to organize my notes and projects, and using
14460 Emacs seemed to be the natural way to go.  However, having to remember eleven
14461 different commands with two or three keys per command, only to hide and show
14462 parts of the outline tree, that seemed entirely unacceptable to me.  Also,
14463 when using outlines to take notes, I constantly wanted to restructure the
14464 tree, organizing it parallel to my thoughts and plans.  @emph{Visibility
14465 cycling} and @emph{structure editing} were originally implemented in the
14466 package @file{outline-magic.el}, but quickly moved to the more general
14467 @file{org.el}.  As this environment became comfortable for project planning,
14468 the next step was adding @emph{TODO entries}, basic @emph{timestamps}, and
14469 @emph{table support}.  These areas highlighted the two main goals that Org
14470 still has today: to be a new, outline-based, plain text mode with innovative
14471 and intuitive editing features, and to incorporate project planning
14472 functionality directly into a notes file.
14474 Since the first release, literally thousands of emails to me or to
14475 @email{emacs-orgmode@@gnu.org} have provided a constant stream of bug
14476 reports, feedback, new ideas, and sometimes patches and add-on code.
14477 Many thanks to everyone who has helped to improve this package.  I am
14478 trying to keep here a list of the people who had significant influence
14479 in shaping one or more aspects of Org.  The list may not be
14480 complete, if I have forgotten someone, please accept my apologies and
14481 let me know.
14483 Before I get to this list, a few special mentions are in order:
14485 @table @i
14486 @item Bastien Guerry
14487 Bastien has written a large number of extensions to Org (most of them
14488 integrated into the core by now), including the LaTeX exporter and the plain
14489 list parser.  His support during the early days, when he basically acted as
14490 co-maintainer, was central to the success of this project.  Bastien also
14491 invented Worg, helped establishing the Web presence of Org, and sponsors
14492 hosting costs for the orgmode.org website.
14493 @item Eric Schulte and Dan Davison
14494 Eric and Dan are jointly responsible for the Org-babel system, which turns
14495 Org into a multi-language environment for evaluating code and doing literate
14496 programming and reproducible research.
14497 @item John Wiegley
14498 John has also contributed a number of great ideas and patches
14499 directly to Org, including the attachment system (@file{org-attach.el}),
14500 integration with Apple Mail (@file{org-mac-message.el}), hierarchical
14501 dependencies of TODO items, habit tracking (@file{org-habits.el}), and
14502 encryption (@file{org-crypt.el}).  Also, the capture system is really an
14503 extended copy of his great @file{remember.el}.
14504 @item Sebastian Rose
14505 Without Sebastian, the HTML/XHTML publishing of Org would be the pitiful work
14506 of an ignorant amateur.  Sebastian has pushed this part of Org onto a much
14507 higher level.  He also wrote @file{org-info.js}, a Java script for displaying
14508 webpages derived from Org using an Info-like or a folding interface with
14509 single-key navigation.
14510 @end table
14512 @noindent OK, now to the full list of contributions!  Again, please let me
14513 know what I am missing here!
14515 @itemize @bullet
14517 @item
14518 @i{Russel Adams} came up with the idea for drawers.
14519 @item
14520 @i{Thomas Baumann} wrote @file{org-bbdb.el} and @file{org-mhe.el}.
14521 @item
14522 @i{Christophe Bataillon} created the great unicorn logo that we use on the
14523 Org-mode website.
14524 @item
14525 @i{Alex Bochannek} provided a patch for rounding timestamps.
14526 @item
14527 @i{Jan Böcker} wrote @file{org-docview.el}.
14528 @item
14529 @i{Brad Bozarth} showed how to pull RSS feed data into Org-mode files.
14530 @item
14531 @i{Tom Breton} wrote @file{org-choose.el}.
14532 @item
14533 @i{Charles Cave}'s suggestion sparked the implementation of templates
14534 for Remember, which are now templates for capture.
14535 @item
14536 @i{Pavel Chalmoviansky} influenced the agenda treatment of items with
14537 specified time.
14538 @item
14539 @i{Gregory Chernov} patched support for Lisp forms into table
14540 calculations and improved XEmacs compatibility, in particular by porting
14541 @file{nouline.el} to XEmacs.
14542 @item
14543 @i{Sacha Chua} suggested copying some linking code from Planner.
14544 @item
14545 @i{Baoqiu Cui} contributed the DocBook exporter.
14546 @item
14547 @i{Eddward DeVilla} proposed and tested checkbox statistics.  He also
14548 came up with the idea of properties, and that there should be an API for
14549 them.
14550 @item
14551 @i{Nick Dokos} tracked down several nasty bugs.
14552 @item
14553 @i{Kees Dullemond} used to edit projects lists directly in HTML and so
14554 inspired some of the early development, including HTML export.  He also
14555 asked for a way to narrow wide table columns.
14556 @item
14557 @i{Thomas S. Dye} contributed documentation on Worg and helped integrating
14558 the Org-Babel documentation into the manual.
14559 @item
14560 @i{Christian Egli} converted the documentation into Texinfo format,
14561 patched CSS formatting into the HTML exporter, and inspired the agenda.
14562 @item
14563 @i{David Emery} provided a patch for custom CSS support in exported
14564 HTML agendas.
14565 @item
14566 @i{Nic Ferrier} contributed mailcap and XOXO support.
14567 @item
14568 @i{Miguel A. Figueroa-Villanueva} implemented hierarchical checkboxes.
14569 @item
14570 @i{John Foerch} figured out how to make incremental search show context
14571 around a match in a hidden outline tree.
14572 @item
14573 @i{Raimar Finken} wrote @file{org-git-line.el}.
14574 @item
14575 @i{Mikael Fornius} works as a mailing list moderator.
14576 @item
14577 @i{Austin Frank} works as a mailing list moderator.
14578 @item
14579 @i{Niels Giesen} had the idea to automatically archive DONE trees.
14580 @item
14581 @i{Nicolas Goaziou} rewrote much of the plain list code.
14582 @item
14583 @i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
14584 @item
14585 @i{Bernt Hansen} has driven much of the support for auto-repeating tasks,
14586 task state change logging, and the clocktable.  His clear explanations have
14587 been critical when we started to adopt the Git version control system.
14588 @item
14589 @i{Manuel Hermenegildo} has contributed various ideas, small fixes and
14590 patches.
14591 @item
14592 @i{Phil Jackson} wrote @file{org-irc.el}.
14593 @item
14594 @i{Scott Jaderholm} proposed footnotes, control over whitespace between
14595 folded entries, and column view for properties.
14596 @item
14597 @i{Matt Jones} wrote @i{MobileOrg Android}.
14598 @item
14599 @i{Tokuya Kameshima} wrote @file{org-wl.el} and @file{org-mew.el}.
14600 @item
14601 @i{Shidai Liu} ("Leo") asked for embedded La@TeX{} and tested it.  He also
14602 provided frequent feedback and some patches.
14603 @item
14604 @i{Matt Lundin} has proposed last-row references for table formulas and named
14605 invisible anchors.  He has also worked a lot on the FAQ.
14606 @item
14607 @i{David Maus} wrote @file{org-atom.el}, maintains the issues file for Org,
14608 and is a prolific contributor on the mailing list with competent replies,
14609 small fixes and patches.
14610 @item
14611 @i{Jason F. McBrayer} suggested agenda export to CSV format.
14612 @item
14613 @i{Max Mikhanosha} came up with the idea of refiling.
14614 @item
14615 @i{Dmitri Minaev} sent a patch to set priority limits on a per-file
14616 basis.
14617 @item
14618 @i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler
14619 happy.
14620 @item
14621 @i{Richard Moreland} wrote @i{MobileOrg} for the iPhone.
14622 @item
14623 @i{Rick Moynihan} proposed allowing multiple TODO sequences in a file
14624 and being able to quickly restrict the agenda to a subtree.
14625 @item
14626 @i{Todd Neal} provided patches for links to Info files and Elisp forms.
14627 @item
14628 @i{Greg Newman} refreshed the unicorn logo into its current form.
14629 @item
14630 @i{Tim O'Callaghan} suggested in-file links, search options for general
14631 file links, and TAGS.
14632 @item
14633 @i{Osamu Okano} wrote @file{orgcard2ref.pl}, a perl program to create a text
14634 version of the reference card.
14635 @item
14636 @i{Takeshi Okano} translated the manual and David O'Toole's tutorial
14637 into Japanese.
14638 @item
14639 @i{Oliver Oppitz} suggested multi-state TODO items.
14640 @item
14641 @i{Scott Otterson} sparked the introduction of descriptive text for
14642 links, among other things.
14643 @item
14644 @i{Pete Phillips} helped during the development of the TAGS feature, and
14645 provided frequent feedback.
14646 @item
14647 @i{Martin Pohlack} provided the code snippet to bundle character insertion
14648 into bundles of 20 for undo.
14649 @item
14650 @i{T.V. Raman} reported bugs and suggested improvements.
14651 @item
14652 @i{Matthias Rempe} (Oelde) provided ideas, Windows support, and quality
14653 control.
14654 @item
14655 @i{Paul Rivier} provided the basic implementation of named footnotes.  He
14656 also acted as mailing list moderator for some time.
14657 @item
14658 @i{Kevin Rogers} contributed code to access VM files on remote hosts.
14659 @item
14660 @i{Frank Ruell} solved the mystery of the @code{keymapp nil} bug, a
14661 conflict with @file{allout.el}.
14662 @item
14663 @i{Jason Riedy} generalized the send-receive mechanism for Orgtbl tables with
14664 extensive patches.
14665 @item
14666 @i{Philip Rooke} created the Org reference card, provided lots
14667 of feedback, developed and applied standards to the Org documentation.
14668 @item
14669 @i{Christian Schlauer} proposed angular brackets around links, among
14670 other things.
14671 @item
14672 @i{Paul Sexton} wrote @file{org-ctags.el}.
14673 @item
14674 Linking to VM/BBDB/Gnus was first inspired by @i{Tom Shannon}'s
14675 @file{organizer-mode.el}.
14676 @item
14677 @i{Ilya Shlyakhter} proposed the Archive Sibling, line numbering in literal
14678 examples, and remote highlighting for referenced code lines.
14679 @item
14680 @i{Stathis Sideris} wrote the @file{ditaa.jar} ASCII to PNG converter that is
14681 now packaged into Org's @file{contrib} directory.
14682 @item
14683 @i{Daniel Sinder} came up with the idea of internal archiving by locking
14684 subtrees.
14685 @item
14686 @i{Dale Smith} proposed link abbreviations.
14687 @item
14688 @i{James TD Smith} has contributed a large number of patches for useful
14689 tweaks and features.
14690 @item
14691 @i{Adam Spiers} asked for global linking commands, inspired the link
14692 extension system, added support for mairix, and proposed the mapping API.
14693 @item
14694 @i{Ulf Stegemann} created the table to translate special symbols to HTML,
14695 LaTeX, UTF-8, Latin-1 and ASCII.
14696 @item
14697 @i{Andy Stewart} contributed code to @file{org-w3m.el}, to copy HTML content
14698 with links transformation to Org syntax.
14699 @item
14700 @i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
14701 chapter about publishing.
14702 @item
14703 @i{Stefan Vollmar} organized a video-recorded talk at the
14704 Max-Planck-Institute for Neurology.  He also inspired the creation of a
14705 concept index for HTML export.
14706 @item
14707 @i{J@"urgen Vollmer} contributed code generating the table of contents
14708 in HTML output.
14709 @item
14710 @i{Samuel Wales} has provided important feedback and bug reports.
14711 @item
14712 @i{Chris Wallace} provided a patch implementing the @samp{QUOTE}
14713 keyword.
14714 @item
14715 @i{David Wainberg} suggested archiving, and improvements to the linking
14716 system.
14717 @item
14718 @i{Carsten Wimmer} suggested some changes and helped fix a bug in
14719 linking to Gnus.
14720 @item
14721 @i{Roland Winkler} requested additional key bindings to make Org
14722 work on a tty.
14723 @item
14724 @i{Piotr Zielinski} wrote @file{org-mouse.el}, proposed agenda blocks
14725 and contributed various ideas and code snippets.
14726 @end itemize
14729 @node Main Index, Key Index, History and Acknowledgments, Top
14730 @unnumbered Concept index
14732 @printindex cp
14734 @node Key Index, Command and Function Index, Main Index, Top
14735 @unnumbered Key index
14737 @printindex ky
14739 @node Command and Function Index, Variable Index, Key Index, Top
14740 @unnumbered Command and function index
14742 @printindex fn
14744 @node Variable Index,  , Command and Function Index, Top
14745 @unnumbered Variable index
14747 This is not a complete index of variables and faces, only the ones that are
14748 mentioned in the manual.  For a more complete list, use @kbd{M-x
14749 org-customize @key{RET}} and then click yourself through the tree.
14751 @printindex vr
14753 @bye
14755 @ignore
14756         arch-tag: 7893d1Fe-cc57-4d13-b5e5-f494a1CBC7ac
14757 @end ignore
14759 @c Local variables:
14760 @c fill-column: 77
14761 @c indent-tabs-mode: nil
14762 @c paragraph-start:    "\b\\|^@[a-zA-Z]*[ \n]\\|^@x?org\\(key\\|cmd\\)\\|\f\\|[  ]*$"
14763 @c paragraph-separate: "\b\\|^@[a-zA-Z]*[ \n]\\|^@x?org\\(key\\|cmd\\)\\|[       \f]*$"
14764 @c End:
14767 @c  LocalWords:  webdavhost pre