Spelling fixes
[emacs.git] / doc / misc / org.texi
blob44fcb94f972dd415d4f7512f44f8135cb8758e65
1 \input texinfo  @c -*- coding: utf-8 -*-
2 @c %**start of header
3 @setfilename ../../info/org.info
4 @settitle The Org Manual
5 @include docstyle.texi
7 @set VERSION 9.0.10
8 @set DATE 2017-08-27
10 @c Version and Contact Info
11 @set MAINTAINERSITE @uref{http://orgmode.org,maintainers web page}
12 @set AUTHOR Carsten Dominik
13 @set MAINTAINER Carsten Dominik
14 @set MAINTAINEREMAIL @email{carsten at orgmode dot org}
15 @set MAINTAINERCONTACT @uref{mailto:carsten at orgmode dot org,contact the maintainer}
16 @c %**end of header
17 @finalout
20 @c -----------------------------------------------------------------------------
22 @c Macro definitions for commands and keys
23 @c =======================================
25 @c The behavior of the key/command macros will depend on the flag cmdnames
26 @c When set, commands names are shown.  When clear, they are not shown.
28 @set cmdnames
30 @c Below we define the following macros for Org key tables:
32 @c orgkey{key}                        A key item
33 @c orgcmd{key,cmd}                    Key with command name
34 @c xorgcmd{key,cmd}                   Key with command name as @itemx
35 @c orgcmdnki{key,cmd}                 Like orgcmd, but do not index the key
36 @c orgcmdtkc{text,key,cmd}            Like orgcmd,special text instead of key
37 @c orgcmdkkc{key1,key2,cmd}           Two keys with one command name, use "or"
38 @c orgcmdkxkc{key1,key2,cmd}          Two keys with one command name, but
39 @c                                    different functions, so format as @itemx
40 @c orgcmdkskc{key1,key2,cmd}          Same as orgcmdkkc, but use "or short"
41 @c xorgcmdkskc{key1,key2,cmd}         Same as previous, but use @itemx
42 @c orgcmdkkcc{key1,key2,cmd1,cmd2}    Two keys and two commands
44 @c a key but no command
45 @c    Inserts:    @item key
46 @macro orgkey{key}
47 @kindex \key\
48 @item @kbd{\key\}
49 @end macro
51 @macro xorgkey{key}
52 @kindex \key\
53 @itemx @kbd{\key\}
54 @end macro
56 @c one key with a command
57 @c   Inserts:    @item KEY               COMMAND
58 @macro orgcmd{key,command}
59 @ifset cmdnames
60 @kindex \key\
61 @findex \command\
62 @iftex
63 @item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
64 @end iftex
65 @ifnottex
66 @item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
67 @end ifnottex
68 @end ifset
69 @ifclear cmdnames
70 @kindex \key\
71 @item @kbd{\key\}
72 @end ifclear
73 @end macro
75 @c One key with one command, formatted using @itemx
76 @c   Inserts:    @itemx KEY               COMMAND
77 @macro xorgcmd{key,command}
78 @ifset cmdnames
79 @kindex \key\
80 @findex \command\
81 @iftex
82 @itemx @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
83 @end iftex
84 @ifnottex
85 @itemx @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
86 @end ifnottex
87 @end ifset
88 @ifclear cmdnames
89 @kindex \key\
90 @itemx @kbd{\key\}
91 @end ifclear
92 @end macro
94 @c one key with a command, bit do not index the key
95 @c   Inserts:    @item KEY               COMMAND
96 @macro orgcmdnki{key,command}
97 @ifset cmdnames
98 @findex \command\
99 @iftex
100 @item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
101 @end iftex
102 @ifnottex
103 @item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
104 @end ifnottex
105 @end ifset
106 @ifclear cmdnames
107 @item @kbd{\key\}
108 @end ifclear
109 @end macro
111 @c one key with a command, and special text to replace key in item
112 @c   Inserts:    @item TEXT                    COMMAND
113 @macro orgcmdtkc{text,key,command}
114 @ifset cmdnames
115 @kindex \key\
116 @findex \command\
117 @iftex
118 @item @kbd{\text\} @hskip 0pt plus 1filll @code{\command\}
119 @end iftex
120 @ifnottex
121 @item @kbd{\text\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
122 @end ifnottex
123 @end ifset
124 @ifclear cmdnames
125 @kindex \key\
126 @item @kbd{\text\}
127 @end ifclear
128 @end macro
130 @c two keys with one command
131 @c   Inserts:    @item KEY1 or KEY2            COMMAND
132 @macro orgcmdkkc{key1,key2,command}
133 @ifset cmdnames
134 @kindex \key1\
135 @kindex \key2\
136 @findex \command\
137 @iftex
138 @item @kbd{\key1\} @ @r{or} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
139 @end iftex
140 @ifnottex
141 @item @kbd{\key1\} @ @r{or} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
142 @end ifnottex
143 @end ifset
144 @ifclear cmdnames
145 @kindex \key1\
146 @kindex \key2\
147 @item @kbd{\key1\} @ @r{or} @ @kbd{\key2\}
148 @end ifclear
149 @end macro
151 @c Two keys with one command name, but different functions, so format as
152 @c @itemx
153 @c   Inserts:    @item KEY1
154 @c               @itemx KEY2                COMMAND
155 @macro orgcmdkxkc{key1,key2,command}
156 @ifset cmdnames
157 @kindex \key1\
158 @kindex \key2\
159 @findex \command\
160 @iftex
161 @item @kbd{\key1\}
162 @itemx @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
163 @end iftex
164 @ifnottex
165 @item @kbd{\key1\}
166 @itemx @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
167 @end ifnottex
168 @end ifset
169 @ifclear cmdnames
170 @kindex \key1\
171 @kindex \key2\
172 @item @kbd{\key1\}
173 @itemx @kbd{\key2\}
174 @end ifclear
175 @end macro
177 @c Same as previous, but use "or short"
178 @c   Inserts:    @item KEY1 or short KEY2            COMMAND
179 @macro orgcmdkskc{key1,key2,command}
180 @ifset cmdnames
181 @kindex \key1\
182 @kindex \key2\
183 @findex \command\
184 @iftex
185 @item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
186 @end iftex
187 @ifnottex
188 @item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
189 @end ifnottex
190 @end ifset
191 @ifclear cmdnames
192 @kindex \key1\
193 @kindex \key2\
194 @item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\}
195 @end ifclear
196 @end macro
198 @c Same as previous, but use @itemx
199 @c   Inserts:    @itemx KEY1 or short KEY2            COMMAND
200 @macro xorgcmdkskc{key1,key2,command}
201 @ifset cmdnames
202 @kindex \key1\
203 @kindex \key2\
204 @findex \command\
205 @iftex
206 @itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
207 @end iftex
208 @ifnottex
209 @itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
210 @end ifnottex
211 @end ifset
212 @ifclear cmdnames
213 @kindex \key1\
214 @kindex \key2\
215 @itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\}
216 @end ifclear
217 @end macro
219 @c two keys with two commands
220 @c   Inserts:    @item KEY1                        COMMAND1
221 @c               @itemx KEY2                       COMMAND2
222 @macro orgcmdkkcc{key1,key2,command1,command2}
223 @ifset cmdnames
224 @kindex \key1\
225 @kindex \key2\
226 @findex \command1\
227 @findex \command2\
228 @iftex
229 @item @kbd{\key1\} @hskip 0pt plus 1filll @code{\command1\}
230 @itemx @kbd{\key2\} @hskip 0pt plus 1filll @code{\command2\}
231 @end iftex
232 @ifnottex
233 @item @kbd{\key1\} @tie{}@tie{}@tie{}@tie{}(@code{\command1\})
234 @itemx @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command2\})
235 @end ifnottex
236 @end ifset
237 @ifclear cmdnames
238 @kindex \key1\
239 @kindex \key2\
240 @item @kbd{\key1\}
241 @itemx @kbd{\key2\}
242 @end ifclear
243 @end macro
244 @c -----------------------------------------------------------------------------
246 @iftex
247 @c @hyphenation{time-stamp time-stamps time-stamp-ing time-stamp-ed}
248 @end iftex
250 @c Subheadings inside a table.
251 @macro tsubheading{text}
252 @ifinfo
253 @subsubheading \text\
254 @end ifinfo
255 @ifnotinfo
256 @item @b{\text\}
257 @end ifnotinfo
258 @end macro
260 @copying
261 This manual is for Org version @value{VERSION}.
263 Copyright @copyright{} 2004--2017 Free Software Foundation, Inc.
265 @quotation
266 Permission is granted to copy, distribute and/or modify this document
267 under the terms of the GNU Free Documentation License, Version 1.3 or
268 any later version published by the Free Software Foundation; with no
269 Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
270 and with the Back-Cover Texts as in (a) below.  A copy of the license
271 is included in the section entitled ``GNU Free Documentation License.''
273 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
274 modify this GNU manual.''
275 @end quotation
276 @end copying
278 @dircategory Emacs editing modes
279 @direntry
280 * Org Mode: (org).      Outline-based notes management and organizer
281 @end direntry
283 @titlepage
284 @title The Org Manual
286 @subtitle Release @value{VERSION}
287 @author by Carsten Dominik
288 with contributions by Bastien Guerry, Nicolas Goaziou, Eric Schulte,
289 Jambunathan K, Dan Davison, Thomas Dye, David O'Toole, and Philip Rooke.
291 @c The following two commands start the copyright page.
292 @page
293 @vskip 0pt plus 1filll
294 @insertcopying
295 @end titlepage
297 @c Output the short table of contents at the beginning.
298 @shortcontents
300 @c Output the table of contents at the beginning.
301 @contents
303 @ifnottex
305 @node Top, Introduction, (dir), (dir)
306 @top Org Mode Manual
308 @insertcopying
309 @end ifnottex
311 @menu
312 * Introduction::                Getting started
313 * Document structure::          A tree works like your brain
314 * Tables::                      Pure magic for quick formatting
315 * Hyperlinks::                  Notes in context
316 * TODO items::                  Every tree branch can be a TODO item
317 * Tags::                        Tagging headlines and matching sets of tags
318 * Properties and columns::      Storing information about an entry
319 * Dates and times::             Making items useful for planning
320 * Capture - Refile - Archive::  The ins and outs for projects
321 * Agenda views::                Collecting information into views
322 * Markup::                      Prepare text for rich export
323 * Exporting::                   Sharing and publishing notes
324 * Publishing::                  Create a web site of linked Org files
325 * Working with source code::    Export, evaluate, and tangle code blocks
326 * Miscellaneous::               All the rest which did not fit elsewhere
327 * Hacking::                     How to hack your way around
328 * MobileOrg::                   Viewing and capture on a mobile device
329 * History and acknowledgments::  How Org came into being
330 * GNU Free Documentation License::  The license for this documentation.
331 * Main Index::                  An index of Org's concepts and features
332 * Key Index::                   Key bindings and where they are described
333 * Command and Function Index::  Command names and some internal functions
334 * Variable Index::              Variables mentioned in the manual
336 @detailmenu
337  --- The Detailed Node Listing ---
339 Introduction
341 * Summary::                     Brief summary of what Org does
342 * Installation::                Installing Org
343 * Activation::                  How to activate Org for certain buffers
344 * Feedback::                    Bug reports, ideas, patches etc.
345 * Conventions::                 Typesetting conventions in the manual
347 Document structure
349 * Outlines::                    Org is based on Outline mode
350 * Headlines::                   How to typeset Org tree headlines
351 * Visibility cycling::          Show and hide, much simplified
352 * Motion::                      Jumping to other headlines
353 * Structure editing::           Changing sequence and level of headlines
354 * Sparse trees::                Matches embedded in context
355 * Plain lists::                 Additional structure within an entry
356 * Drawers::                     Tucking stuff away
357 * Blocks::                      Folding blocks
358 * Footnotes::                   How footnotes are defined in Org's syntax
359 * Orgstruct mode::              Structure editing outside Org
360 * Org syntax::                  Formal description of Org's syntax
362 Visibility cycling
364 * Global and local cycling::    Cycling through various visibility states
365 * Initial visibility::          Setting the initial visibility state
366 * Catching invisible edits::    Preventing mistakes when editing invisible parts
368 Tables
370 * Built-in table editor::       Simple tables
371 * Column width and alignment::  Overrule the automatic settings
372 * Column groups::               Grouping to trigger vertical lines
373 * Orgtbl mode::                 The table editor as minor mode
374 * The spreadsheet::             The table editor has spreadsheet capabilities
375 * Org-Plot::                    Plotting from org tables
377 The spreadsheet
379 * References::                  How to refer to another field or range
380 * Formula syntax for Calc::     Using Calc to compute stuff
381 * Formula syntax for Lisp::     Writing formulas in Emacs Lisp
382 * Durations and time values::   How to compute durations and time values
383 * Field and range formulas::    Formula for specific (ranges of) fields
384 * Column formulas::             Formulas valid for an entire column
385 * Lookup functions::            Lookup functions for searching tables
386 * Editing and debugging formulas::  Fixing formulas
387 * Updating the table::          Recomputing all dependent fields
388 * Advanced features::           Field and column names, parameters and automatic recalc
390 Hyperlinks
392 * Link format::                 How links in Org are formatted
393 * Internal links::              Links to other places in the current file
394 * External links::              URL-like links to the world
395 * Handling links::              Creating, inserting and following
396 * Using links outside Org::     Linking from my C source code?
397 * Link abbreviations::          Shortcuts for writing complex links
398 * Search options::              Linking to a specific location
399 * Custom searches::             When the default search is not enough
401 Internal links
403 * Radio targets::               Make targets trigger links in plain text
405 TODO items
407 * TODO basics::                 Marking and displaying TODO entries
408 * TODO extensions::             Workflow and assignments
409 * Progress logging::            Dates and notes for progress
410 * Priorities::                  Some things are more important than others
411 * Breaking down tasks::         Splitting a task into manageable pieces
412 * Checkboxes::                  Tick-off lists
414 Extended use of TODO keywords
416 * Workflow states::             From TODO to DONE in steps
417 * TODO types::                  I do this, Fred does the rest
418 * Multiple sets in one file::   Mixing it all, and still finding your way
419 * Fast access to TODO states::  Single letter selection of a state
420 * Per-file keywords::           Different files, different requirements
421 * Faces for TODO keywords::     Highlighting states
422 * TODO dependencies::           When one task needs to wait for others
424 Progress logging
426 * Closing items::               When was this entry marked DONE?
427 * Tracking TODO state changes::  When did the status change?
428 * Tracking your habits::        How consistent have you been?
430 Tags
432 * Tag inheritance::             Tags use the tree structure of the outline
433 * Setting tags::                How to assign tags to a headline
434 * Tag hierarchy::               Create a hierarchy of tags
435 * Tag searches::                Searching for combinations of tags
437 Properties and columns
439 * Property syntax::             How properties are spelled out
440 * Special properties::          Access to other Org mode features
441 * Property searches::           Matching property values
442 * Property inheritance::        Passing values down the tree
443 * Column view::                 Tabular viewing and editing
444 * Property API::                Properties for Lisp programmers
446 Column view
448 * Defining columns::            The COLUMNS format property
449 * Using column view::           How to create and use column view
450 * Capturing column view::       A dynamic block for column view
452 Defining columns
454 * Scope of column definitions::  Where defined, where valid?
455 * Column attributes::           Appearance and content of a column
457 Dates and times
459 * Timestamps::                  Assigning a time to a tree entry
460 * Creating timestamps::         Commands which insert timestamps
461 * Deadlines and scheduling::    Planning your work
462 * Clocking work time::          Tracking how long you spend on a task
463 * Effort estimates::            Planning work effort in advance
464 * Timers::                      Notes with a running timer
466 Creating timestamps
468 * The date/time prompt::        How Org mode helps you entering date and time
469 * Custom time format::          Making dates look different
471 Deadlines and scheduling
473 * Inserting deadline/schedule::  Planning items
474 * Repeated tasks::              Items that show up again and again
476 Clocking work time
478 * Clocking commands::           Starting and stopping a clock
479 * The clock table::             Detailed reports
480 * Resolving idle time::         Resolving time when you've been idle
482 Capture - Refile - Archive
484 * Capture::                     Capturing new stuff
485 * Attachments::                 Add files to tasks
486 * RSS feeds::                   Getting input from RSS feeds
487 * Protocols::                   External (e.g., Browser) access to Emacs and Org
488 * Refile and copy::             Moving/copying a tree from one place to another
489 * Archiving::                   What to do with finished projects
491 Capture
493 * Setting up capture::          Where notes will be stored
494 * Using capture::               Commands to invoke and terminate capture
495 * Capture templates::           Define the outline of different note types
497 Capture templates
499 * Template elements::           What is needed for a complete template entry
500 * Template expansion::          Filling in information about time and context
501 * Templates in contexts::       Only show a template in a specific context
503 Protocols for external access
505 * @code{store-link} protocol::  Store a link, push URL to kill-ring.
506 * @code{capture} protocol::     Fill a buffer with external information.
507 * @code{open-source} protocol::  Edit published contents.
509 Archiving
511 * Moving subtrees::             Moving a tree to an archive file
512 * Internal archiving::          Switch off a tree but keep it in the file
514 Agenda views
516 * Agenda files::                Files being searched for agenda information
517 * Agenda dispatcher::           Keyboard access to agenda views
518 * Built-in agenda views::       What is available out of the box?
519 * Presentation and sorting::    How agenda items are prepared for display
520 * Agenda commands::             Remote editing of Org trees
521 * Custom agenda views::         Defining special searches and views
522 * Exporting agenda views::      Writing a view to a file
523 * Agenda column view::          Using column view for collected entries
525 The built-in agenda views
527 * Weekly/daily agenda::         The calendar page with current tasks
528 * Global TODO list::            All unfinished action items
529 * Matching tags and properties::  Structured information with fine-tuned search
530 * Timeline::                    Time-sorted view for single file
531 * Search view::                 Find entries by searching for text
532 * Stuck projects::              Find projects you need to review
534 Presentation and sorting
536 * Categories::                  Not all tasks are equal
537 * Time-of-day specifications::  How the agenda knows the time
538 * Sorting agenda items::        The order of things
539 * Filtering/limiting agenda items::  Dynamically narrow the agenda
541 Custom agenda views
543 * Storing searches::            Type once, use often
544 * Block agenda::                All the stuff you need in a single buffer
545 * Setting options::             Changing the rules
547 Markup for rich export
549 * Paragraphs::                  The basic unit of text
550 * Emphasis and monospace::      Bold, italic, etc.
551 * Horizontal rules::            Make a line
552 * Images and tables::           Images, tables and caption mechanism
553 * Literal examples::            Source code examples with special formatting
554 * Special symbols::             Greek letters and other symbols
555 * Subscripts and superscripts::  Simple syntax for raising/lowering text
556 * Embedded @LaTeX{}::           LaTeX can be freely used inside Org documents
558 Embedded @LaTeX{}
560 * @LaTeX{} fragments::          Complex formulas made easy
561 * Previewing @LaTeX{} fragments::  What will this snippet look like?
562 * CDLaTeX mode::                Speed up entering of formulas
564 Exporting
566 * The export dispatcher::       The main interface
567 * Export settings::             Common export settings
568 * Table of contents::           The if and where of the table of contents
569 * Include files::               Include additional files into a document
570 * Macro replacement::           Use macros to create templates
571 * Comment lines::               What will not be exported
572 * ASCII/Latin-1/UTF-8 export::  Exporting to flat files with encoding
573 * Beamer export::               Exporting as a Beamer presentation
574 * HTML export::                 Exporting to HTML
575 * @LaTeX{} export::             Exporting to @LaTeX{}, and processing to PDF
576 * Markdown export::             Exporting to Markdown
577 * OpenDocument Text export::    Exporting to OpenDocument Text
578 * Org export::                  Exporting to Org
579 * Texinfo export::              Exporting to Texinfo
580 * iCalendar export::            Exporting to iCalendar
581 * Other built-in back-ends::    Exporting to a man page
582 * Advanced configuration::      Fine-tuning the export output
583 * Export in foreign buffers::   Author tables and lists in Org syntax
585 Beamer export
587 * Beamer export commands::      For creating Beamer documents.
588 * Beamer specific export settings::  For customizing Beamer export.
589 * Sectioning Frames and Blocks in Beamer::  For composing Beamer slides.
590 * Beamer specific syntax::      For using in Org documents.
591 * Editing support::             For using helper functions.
592 * A Beamer example::            A complete presentation.
594 HTML export
596 * HTML Export commands::        Invoking HTML export
597 * HTML Specific export settings::  Settings for HTML export
598 * HTML doctypes::               Exporting various (X)HTML flavors
599 * HTML preamble and postamble::  Inserting preamble and postamble
600 * Quoting HTML tags::           Using direct HTML in Org files
601 * Links in HTML export::        Interpreting and formatting links
602 * Tables in HTML export::       Formatting and modifying tables
603 * Images in HTML export::       Inserting figures with HTML output
604 * Math formatting in HTML export::  Handling math equations
605 * Text areas in HTML export::   Showing an alternate approach, an example
606 * CSS support::                 Styling HTML output
607 * JavaScript support::          Folding scripting in the web browser
609 @LaTeX{} export
611 * @LaTeX{} export commands::    For producing @LaTeX{} and PDF documents.
612 * @LaTeX{} specific export settings::  Unique to this @LaTeX{} back-end.
613 * @LaTeX{} header and sectioning::  For file structure.
614 * Quoting @LaTeX{} code::       Directly in the Org document.
615 * Tables in @LaTeX{} export::   Attributes specific to tables.
616 * Images in @LaTeX{} export::   Attributes specific to images.
617 * Plain lists in @LaTeX{} export::  Attributes specific to lists.
618 * Source blocks in @LaTeX{} export::  Attributes specific to source code blocks.
619 * Example blocks in @LaTeX{} export::  Attributes specific to example blocks.
620 * Special blocks in @LaTeX{} export::  Attributes specific to special blocks.
621 * Horizontal rules in @LaTeX{} export::  Attributes specific to horizontal rules.
623 OpenDocument Text export
625 * Pre-requisites for ODT export::  Required packages.
626 * ODT export commands::         Invoking export.
627 * ODT specific export settings::  Configuration options.
628 * Extending ODT export::        Producing @file{.doc}, @file{.pdf} files.
629 * Applying custom styles::      Styling the output.
630 * Links in ODT export::         Handling and formatting links.
631 * Tables in ODT export::        Org table conversions.
632 * Images in ODT export::        Inserting images.
633 * Math formatting in ODT export::  Formatting @LaTeX{} fragments.
634 * Labels and captions in ODT export::  Rendering objects.
635 * Literal examples in ODT export::  For source code and example blocks.
636 * Advanced topics in ODT export::  For power users.
638 Math formatting in ODT export
640 * Working with @LaTeX{} math snippets::  Embedding in @LaTeX{} format.
641 * Working with MathML or OpenDocument formula files::  Embedding in native format.
643 Advanced topics in ODT export
645 * Configuring a document converter::  Registering a document converter.
646 * Working with OpenDocument style files::  Exploring internals.
647 * Creating one-off styles::     Customizing styles, highlighting.
648 * Customizing tables in ODT export::  Defining table templates.
649 * Validating OpenDocument XML::  Debugging corrupted OpenDocument files.
651 Texinfo export
653 * Texinfo export commands::     Invoking commands.
654 * Texinfo specific export settings::  Setting the environment.
655 * Texinfo file header::         Generating the header.
656 * Texinfo title and copyright page::  Creating preamble pages.
657 * Info directory file::     Installing a manual in Info file hierarchy.
658 * Headings and sectioning structure::  Building document structure.
659 * Indices::                     Creating indices.
660 * Quoting Texinfo code::        Incorporating literal Texinfo code.
661 * Plain lists in Texinfo export::  List attributes.
662 * Tables in Texinfo export::    Table attributes.
663 * Images in Texinfo export::    Image attributes.
664 * Special blocks in Texinfo export::  Special block attributes.
665 * A Texinfo example::           Processing Org to Texinfo.
667 Publishing
669 * Configuration::               Defining projects
670 * Uploading files::             How to get files up on the server
671 * Sample configuration::        Example projects
672 * Triggering publication::      Publication commands
674 Configuration
676 * Project alist::               The central configuration variable
677 * Sources and destinations::    From here to there
678 * Selecting files::             What files are part of the project?
679 * Publishing action::           Setting the function doing the publishing
680 * Publishing options::          Tweaking HTML/@LaTeX{} export
681 * Publishing links::            Which links keep working after publishing?
682 * Sitemap::                     Generating a list of all pages
683 * Generating an index::         An index that reaches across pages
685 Sample configuration
687 * Simple example::              One-component publishing
688 * Complex example::             A multi-component publishing example
690 Working with source code
692 * Structure of code blocks::    Code block syntax described
693 * Editing source code::         Language major-mode editing
694 * Exporting code blocks::       Export contents and/or results
695 * Extracting source code::      Create pure source code files
696 * Evaluating code blocks::      Place results of evaluation in the Org mode buffer
697 * Library of Babel::            Use and contribute to a library of useful code blocks
698 * Languages::                   List of supported code block languages
699 * Header arguments::            Configure code block functionality
700 * Results of evaluation::       How evaluation results are handled
701 * Noweb reference syntax::      Literate programming in Org mode
702 * Key bindings and useful functions::  Work quickly with code blocks
703 * Batch execution::             Call functions from the command line
705 Header arguments
707 * Using header arguments::      Different ways to set header arguments
708 * Specific header arguments::   List of header arguments
710 Using header arguments
712 * System-wide header arguments::  Set globally, language-specific
713 * Language-specific header arguments::  Set in the Org file's headers
714 * Header arguments in Org mode properties::  Set in the Org file
715 * Language-specific mode properties::
716 * Code block specific header arguments::  The most commonly used method
717 * Arguments in function calls::  The most specific level, takes highest priority
719 Specific header arguments
721 * var::                         Pass arguments to @samp{src} code blocks
722 * results::                     Specify results type; how to collect
723 * file::                        Specify a path for output file
724 * file-desc::                   Specify a description for file results
725 * file-ext::                    Specify an extension for file output
726 * output-dir::                  Specify a directory for output file
727 * dir::                         Specify the default directory for code block execution
728 * exports::                     Specify exporting code, results, both, none
729 * tangle::                      Toggle tangling; or specify file name
730 * mkdirp::                      Toggle for parent directory creation for target files during tangling
731 * comments::                    Toggle insertion of comments in tangled code files
732 * padline::                     Control insertion of padding lines in tangled code files
733 * no-expand::                   Turn off variable assignment and noweb expansion during tangling
734 * session::                     Preserve the state of code evaluation
735 * noweb::                       Toggle expansion of noweb references
736 * noweb-ref::                   Specify block's noweb reference resolution target
737 * noweb-sep::                   String to separate noweb references
738 * cache::                       Avoid re-evaluating unchanged code blocks
739 * sep::                         Delimiter for writing tabular results outside Org
740 * hlines::                      Handle horizontal lines in tables
741 * colnames::                    Handle column names in tables
742 * rownames::                    Handle row names in tables
743 * shebang::                     Make tangled files executable
744 * tangle-mode::                 Set permission of tangled files
745 * eval::                        Limit evaluation of specific code blocks
746 * wrap::                        Mark source block evaluation results
747 * post::                        Post processing of results of code block evaluation
748 * prologue::                    Text to prepend to body of code block
749 * epilogue::                    Text to append to body of code block
751 Miscellaneous
753 * Completion::                  M-TAB guesses completions
754 * Easy templates::              Quick insertion of structural elements
755 * Speed keys::                  Electric commands at the beginning of a headline
756 * Code evaluation security::    Org mode files evaluate inline code
757 * Customization::               Adapting Org to changing tastes
758 * In-buffer settings::          Overview of the #+KEYWORDS
759 * The very busy C-c C-c key::   When in doubt, press C-c C-c
760 * Clean view::                  Getting rid of leading stars in the outline
761 * TTY keys::                    Using Org on a tty
762 * Interaction::                 With other Emacs packages
763 * org-crypt::                   Encrypting Org files
765 Interaction with other packages
767 * Cooperation::                 Packages Org cooperates with
768 * Conflicts::                   Packages that lead to conflicts
770 Hacking
772 * Hooks::                       How to reach into Org's internals
773 * Add-on packages::             Available extensions
774 * Adding hyperlink types::      New custom link types
775 * Adding export back-ends::     How to write new export back-ends
776 * Context-sensitive commands::  How to add functionality to such commands
777 * Tables in arbitrary syntax::  Orgtbl for @LaTeX{} and other programs
778 * Dynamic blocks::              Automatically filled blocks
779 * Special agenda views::        Customized views
780 * Speeding up your agendas::    Tips on how to speed up your agendas
781 * Extracting agenda information::  Post-processing of agenda information
782 * Using the property API::      Writing programs that use entry properties
783 * Using the mapping API::       Mapping over all or selected entries
785 Tables and lists in arbitrary syntax
787 * Radio tables::                Sending and receiving radio tables
788 * A @LaTeX{} example::          Step by step, almost a tutorial
789 * Translator functions::        Copy and modify
790 * Radio lists::                 Sending and receiving lists
792 MobileOrg
794 * Setting up the staging area::  For the mobile device
795 * Pushing to MobileOrg::        Uploading Org files and agendas
796 * Pulling from MobileOrg::      Integrating captured and flagged items
798 @end detailmenu
799 @end menu
801 @node Introduction
802 @chapter Introduction
803 @cindex introduction
805 @menu
806 * Summary::                     Brief summary of what Org does
807 * Installation::                Installing Org
808 * Activation::                  How to activate Org for certain buffers
809 * Feedback::                    Bug reports, ideas, patches etc.
810 * Conventions::                 Typesetting conventions in the manual
811 @end menu
813 @node Summary
814 @section Summary
815 @cindex summary
817 Org is a mode for keeping notes, maintaining TODO lists, and project planning
818 with a fast and effective plain-text system.  It also is an authoring system
819 with unique support for literate programming and reproducible research.
821 Org is implemented on top of Outline mode, which makes it possible to keep
822 the content of large files well structured.  Visibility cycling and structure
823 editing help to work with the tree.  Tables are easily created with a
824 built-in table editor.  Plain text URL-like links connect to websites,
825 emails, Usenet messages, BBDB entries, and any files related to the projects.
827 Org develops organizational tasks around notes files that contain lists or
828 information about projects as plain text.  Project planning and task
829 management makes use of metadata which is part of an outline node.  Based on
830 this data, specific entries can be extracted in queries and create dynamic
831 @i{agenda views} that also integrate the Emacs calendar and diary.  Org can
832 be used to implement many different project planning schemes, such as David
833 Allen's GTD system.
835 Org files can serve as a single source authoring system with export to many
836 different formats such as HTML, @LaTeX{}, Open Document, and Markdown.  New
837 export backends can be derived from existing ones, or defined from scratch.
839 Org files can include source code blocks, which makes Org uniquely suited for
840 authoring technical documents with code examples.  Org source code blocks are
841 fully functional; they can be evaluated in place and their results can be
842 captured in the file.  This makes it possible to create a single file
843 reproducible research compendium.
845 Org keeps simple things simple.  When first fired up, it should feel like a
846 straightforward, easy to use outliner.  Complexity is not imposed, but a
847 large amount of functionality is available when needed.  Org is a toolbox.
848 Many users actually run only a (very personal) fraction of Org's capabilities, and
849 know that there is more whenever they need it.
851 All of this is achieved with strictly plain text files, the most portable and
852 future-proof file format.  Org runs in Emacs.  Emacs is one of the most
853 widely ported programs, so that Org mode is available on every major
854 platform.
856 @cindex FAQ
857 There is a website for Org which provides links to the newest
858 version of Org, as well as additional information, frequently asked
859 questions (FAQ), links to tutorials, etc.  This page is located at
860 @uref{http://orgmode.org}.
861 @cindex print edition
863 An earlier version (7.3) of this manual is available as a
864 @uref{http://www.network-theory.co.uk/org/manual/, paperback book from
865 Network Theory Ltd.}
867 @page
869 @node Installation
870 @section Installation
871 @cindex installation
873 Org is part of recent distributions of GNU Emacs, so you normally don't need
874 to install it.  If, for one reason or another, you want to install Org on top
875 of this pre-packaged version, there are three ways to do it:
877 @itemize @bullet
878 @item By using Emacs package system.
879 @item By downloading Org as an archive.
880 @item By using Org's git repository.
881 @end itemize
883 We @b{strongly recommend} to stick to a single installation method.
885 @subsubheading Using Emacs packaging system
887 Recent Emacs distributions include a packaging system which lets you install
888 Elisp libraries.  You can install Org with @kbd{M-x package-install RET org}.
890 @noindent @b{Important}: you need to do this in a session where no @code{.org} file has
891 been visited, i.e., where no Org built-in function have been loaded.
892 Otherwise autoload Org functions will mess up the installation.
894 Then, to make sure your Org configuration is taken into account, initialize
895 the package system with @code{(package-initialize)} in your Emacs init file
896 before setting any Org option.  If you want to use Org's package repository,
897 check out the @uref{http://orgmode.org/elpa.html, Org ELPA page}.
899 @subsubheading Downloading Org as an archive
901 You can download Org latest release from @uref{http://orgmode.org/, Org's
902 website}.  In this case, make sure you set the load-path correctly in your
903 Emacs init file:
905 @lisp
906 (add-to-list 'load-path "~/path/to/orgdir/lisp")
907 @end lisp
909 The downloaded archive contains contributed libraries that are not included
910 in Emacs.  If you want to use them, add the @file{contrib} directory to your
911 load-path:
913 @lisp
914 (add-to-list 'load-path "~/path/to/orgdir/contrib/lisp" t)
915 @end lisp
917 Optionally, you can compile the files and/or install them in your system.
918 Run @code{make help} to list compilation and installation options.
920 @subsubheading Using Org's git repository
922 You can clone Org's repository and install Org like this:
924 @example
925 $ cd ~/src/
926 $ git clone git://orgmode.org/org-mode.git
927 $ make autoloads
928 @end example
930 Note that in this case, @code{make autoloads} is mandatory: it defines Org's
931 version in @file{org-version.el} and Org's autoloads in
932 @file{org-loaddefs.el}.
934 Remember to add the correct load-path as described in the method above.
936 You can also compile with @code{make}, generate the documentation with
937 @code{make doc}, create a local configuration with @code{make config} and
938 install Org with @code{make install}.  Please run @code{make help} to get
939 the list of compilation/installation options.
941 For more detailed explanations on Org's build system, please check the Org
942 Build System page on @uref{http://orgmode.org/worg/dev/org-build-system.html,
943 Worg}.
945 @node Activation
946 @section Activation
947 @cindex activation
948 @cindex autoload
949 @cindex ELPA
950 @cindex global key bindings
951 @cindex key bindings, global
952 @findex org-agenda
953 @findex org-capture
954 @findex org-store-link
955 @findex org-iswitchb
957 Org mode buffers need font-lock to be turned on: this is the default in
958 Emacs@footnote{If you don't use font-lock globally, turn it on in Org buffer
959 with @code{(add-hook 'org-mode-hook 'turn-on-font-lock)}}.
961 There are compatibility issues between Org mode and some other Elisp
962 packages, please take the time to check the list (@pxref{Conflicts}).
964 The four Org commands @command{org-store-link}, @command{org-capture},
965 @command{org-agenda}, and @command{org-iswitchb} should be accessible through
966 global keys (i.e., anywhere in Emacs, not just in Org buffers).  Here are
967 suggested bindings for these keys, please modify the keys to your own
968 liking.
969 @lisp
970 (global-set-key "\C-cl" 'org-store-link)
971 (global-set-key "\C-ca" 'org-agenda)
972 (global-set-key "\C-cc" 'org-capture)
973 (global-set-key "\C-cb" 'org-iswitchb)
974 @end lisp
976 @cindex Org mode, turning on
977 Files with the @file{.org} extension use Org mode by default.  To turn on Org
978 mode in a file that does not have the extension @file{.org}, make the first
979 line of a file look like this:
981 @example
982 MY PROJECTS    -*- mode: org; -*-
983 @end example
985 @vindex org-insert-mode-line-in-empty-file
986 @noindent which will select Org mode for this buffer no matter what
987 the file's name is.  See also the variable
988 @code{org-insert-mode-line-in-empty-file}.
990 Many commands in Org work on the region if the region is @i{active}.  To make
991 use of this, you need to have @code{transient-mark-mode} turned on, which is
992 the default.  If you do not like @code{transient-mark-mode}, you can create
993 an active region by using the mouse to select a region, or pressing
994 @kbd{C-@key{SPC}} twice before moving the cursor.
996 @node Feedback
997 @section Feedback
998 @cindex feedback
999 @cindex bug reports
1000 @cindex maintainer
1001 @cindex author
1003 If you find problems with Org, or if you have questions, remarks, or ideas
1004 about it, please mail to the Org mailing list @email{emacs-orgmode@@gnu.org}.
1005 You can subscribe to the list
1006 @uref{https://lists.gnu.org/mailman/listinfo/emacs-orgmode, on this web page}.
1007 If you are not a member of the mailing list, your mail will be passed to the
1008 list after a moderator has approved it@footnote{Please consider subscribing
1009 to the mailing list, in order to minimize the work the mailing list
1010 moderators have to do.}.
1012 For bug reports, please first try to reproduce the bug with the latest
1013 version of Org available---if you are running an outdated version, it is
1014 quite possible that the bug has been fixed already.  If the bug persists,
1015 prepare a report and provide as much information as possible, including the
1016 version information of Emacs (@kbd{M-x emacs-version @key{RET}}) and Org
1017 (@kbd{M-x org-version RET}), as well as the Org related setup in the Emacs
1018 init file.  The easiest way to do this is to use the command
1019 @example
1020 @kbd{M-x org-submit-bug-report RET}
1021 @end example
1022 @noindent which will put all this information into an Emacs mail buffer so
1023 that you only need to add your description.  If you are not sending the Email
1024 from within Emacs, please copy and paste the content into your Email program.
1026 Sometimes you might face a problem due to an error in your Emacs or Org mode
1027 setup.  Before reporting a bug, it is very helpful to start Emacs with minimal
1028 customizations and reproduce the problem.  Doing so often helps you determine
1029 if the problem is with your customization or with Org mode itself.  You can
1030 start a typical minimal session with a command like the example below.
1032 @example
1033 $ emacs -Q -l /path/to/minimal-org.el
1034 @end example
1036 However if you are using Org mode as distributed with Emacs, a minimal setup
1037 is not necessary.  In that case it is sufficient to start Emacs as
1038 @code{emacs -Q}.  The @code{minimal-org.el} setup file can have contents as
1039 shown below.
1041 @lisp
1042 ;;; Minimal setup to load latest 'org-mode'
1044 ;; activate debugging
1045 (setq debug-on-error t
1046       debug-on-signal nil
1047       debug-on-quit nil)
1049 ;; add latest org-mode to load path
1050 (add-to-list 'load-path "/path/to/org-mode/lisp")
1051 (add-to-list 'load-path "/path/to/org-mode/contrib/lisp" t)
1052 @end lisp
1054 If an error occurs, a backtrace can be very useful (see below on how to
1055 create one).  Often a small example file helps, along with clear information
1056 about:
1058 @enumerate
1059 @item What exactly did you do?
1060 @item What did you expect to happen?
1061 @item What happened instead?
1062 @end enumerate
1063 @noindent Thank you for helping to improve this program.
1065 @subsubheading How to create a useful backtrace
1067 @cindex backtrace of an error
1068 If working with Org produces an error with a message you don't
1069 understand, you may have hit a bug.  The best way to report this is by
1070 providing, in addition to what was mentioned above, a @emph{backtrace}.
1071 This is information from the built-in debugger about where and how the
1072 error occurred.  Here is how to produce a useful backtrace:
1074 @enumerate
1075 @item
1076 Reload uncompiled versions of all Org mode Lisp files.  The backtrace
1077 contains much more information if it is produced with uncompiled code.
1078 To do this, use
1079 @example
1080 @kbd{C-u M-x org-reload RET}
1081 @end example
1082 @noindent
1083 or select @code{Org -> Refresh/Reload -> Reload Org uncompiled} from the
1084 menu.
1085 @item
1086 Go to the @code{Options} menu and select @code{Enter Debugger on Error}.
1087 @item
1088 Do whatever you have to do to hit the error.  Don't forget to
1089 document the steps you take.
1090 @item
1091 When you hit the error, a @file{*Backtrace*} buffer will appear on the
1092 screen.  Save this buffer to a file (for example using @kbd{C-x C-w}) and
1093 attach it to your bug report.
1094 @end enumerate
1096 @node Conventions
1097 @section Typesetting conventions used in this manual
1099 @subsubheading TODO keywords, tags, properties, etc.
1101 Org mainly uses three types of keywords: TODO keywords, tags and property
1102 names.  In this manual we use the following conventions:
1104 @table @code
1105 @item TODO
1106 @itemx WAITING
1107 TODO keywords are written with all capitals, even if they are
1108 user-defined.
1109 @item boss
1110 @itemx ARCHIVE
1111 User-defined tags are written in lowercase; built-in tags with special
1112 meaning are written with all capitals.
1113 @item Release
1114 @itemx PRIORITY
1115 User-defined properties are capitalized; built-in properties with
1116 special meaning are written with all capitals.
1117 @end table
1119 Moreover, Org uses @i{option keywords} (like @code{#+TITLE} to set the title)
1120 and @i{environment keywords} (like @code{#+BEGIN_EXPORT html} to start
1121 a @code{HTML} environment).  They are written in uppercase in the manual to
1122 enhance its readability, but you can use lowercase in your Org file.
1124 @subsubheading Key bindings and commands
1125 @kindex C-c a
1126 @findex org-agenda
1127 @kindex C-c c
1128 @findex org-capture
1130 The manual suggests a few global key bindings, in particular @kbd{C-c a} for
1131 @code{org-agenda} and @kbd{C-c c} for @code{org-capture}.  These are only
1132 suggestions, but the rest of the manual assumes that these key bindings are in
1133 place in order to list commands by key access.
1135 Also, the manual lists both the keys and the corresponding commands for
1136 accessing a functionality.  Org mode often uses the same key for different
1137 functions, depending on context.  The command that is bound to such keys has
1138 a generic name, like @code{org-metaright}.  In the manual we will, wherever
1139 possible, give the function that is internally called by the generic command.
1140 For example, in the chapter on document structure, @kbd{M-@key{right}} will
1141 be listed to call @code{org-do-demote}, while in the chapter on tables, it
1142 will be listed to call @code{org-table-move-column-right}.  If you prefer,
1143 you can compile the manual without the command names by unsetting the flag
1144 @code{cmdnames} in @file{org.texi}.
1146 @node Document structure
1147 @chapter Document structure
1148 @cindex document structure
1149 @cindex structure of document
1151 Org is based on Outline mode and provides flexible commands to
1152 edit the structure of the document.
1154 @menu
1155 * Outlines::                    Org is based on Outline mode
1156 * Headlines::                   How to typeset Org tree headlines
1157 * Visibility cycling::          Show and hide, much simplified
1158 * Motion::                      Jumping to other headlines
1159 * Structure editing::           Changing sequence and level of headlines
1160 * Sparse trees::                Matches embedded in context
1161 * Plain lists::                 Additional structure within an entry
1162 * Drawers::                     Tucking stuff away
1163 * Blocks::                      Folding blocks
1164 * Footnotes::                   How footnotes are defined in Org's syntax
1165 * Orgstruct mode::              Structure editing outside Org
1166 * Org syntax::                  Formal description of Org's syntax
1167 @end menu
1169 @node Outlines
1170 @section Outlines
1171 @cindex outlines
1172 @cindex Outline mode
1174 Org is implemented on top of Outline mode.  Outlines allow a
1175 document to be organized in a hierarchical structure, which (at least
1176 for me) is the best representation of notes and thoughts.  An overview
1177 of this structure is achieved by folding (hiding) large parts of the
1178 document to show only the general document structure and the parts
1179 currently being worked on.  Org greatly simplifies the use of
1180 outlines by compressing the entire show/hide functionality into a single
1181 command, @command{org-cycle}, which is bound to the @key{TAB} key.
1183 @node Headlines
1184 @section Headlines
1185 @cindex headlines
1186 @cindex outline tree
1187 @vindex org-special-ctrl-a/e
1188 @vindex org-special-ctrl-k
1189 @vindex org-ctrl-k-protect-subtree
1191 Headlines define the structure of an outline tree.  The headlines in Org
1192 start with one or more stars, on the left margin@footnote{See the variables
1193 @code{org-special-ctrl-a/e}, @code{org-special-ctrl-k}, and
1194 @code{org-ctrl-k-protect-subtree} to configure special behavior of @kbd{C-a},
1195 @kbd{C-e}, and @kbd{C-k} in headlines.} @footnote{Clocking only works with
1196 headings indented less than 30 stars.}.  For example:
1198 @example
1199 * Top level headline
1200 ** Second level
1201 *** 3rd level
1202     some text
1203 *** 3rd level
1204     more text
1206 * Another top level headline
1207 @end example
1209 @vindex org-footnote-section
1210 @noindent Note that a headline named after @code{org-footnote-section},
1211 which defaults to @samp{Footnotes}, is considered as special.  A subtree with
1212 this headline will be silently ignored by exporting functions.
1214 Some people find the many stars too noisy and would prefer an
1215 outline that has whitespace followed by a single star as headline
1216 starters.  @ref{Clean view}, describes a setup to realize this.
1218 @vindex org-cycle-separator-lines
1219 An empty line after the end of a subtree is considered part of it and
1220 will be hidden when the subtree is folded.  However, if you leave at
1221 least two empty lines, one empty line will remain visible after folding
1222 the subtree, in order to structure the collapsed view.  See the
1223 variable @code{org-cycle-separator-lines} to modify this behavior.
1225 @node Visibility cycling
1226 @section Visibility cycling
1227 @cindex cycling, visibility
1228 @cindex visibility cycling
1229 @cindex trees, visibility
1230 @cindex show hidden text
1231 @cindex hide text
1233 @menu
1234 * Global and local cycling::    Cycling through various visibility states
1235 * Initial visibility::          Setting the initial visibility state
1236 * Catching invisible edits::    Preventing mistakes when editing invisible parts
1237 @end menu
1239 @node Global and local cycling
1240 @subsection Global and local cycling
1242 Outlines make it possible to hide parts of the text in the buffer.
1243 Org uses just two commands, bound to @key{TAB} and
1244 @kbd{S-@key{TAB}} to change the visibility in the buffer.
1246 @cindex subtree visibility states
1247 @cindex subtree cycling
1248 @cindex folded, subtree visibility state
1249 @cindex children, subtree visibility state
1250 @cindex subtree, subtree visibility state
1251 @table @asis
1252 @orgcmd{@key{TAB},org-cycle}
1253 @emph{Subtree cycling}: Rotate current subtree among the states
1255 @example
1256 ,-> FOLDED -> CHILDREN -> SUBTREE --.
1257 '-----------------------------------'
1258 @end example
1260 @vindex org-cycle-emulate-tab
1261 @vindex org-cycle-global-at-bob
1262 The cursor must be on a headline for this to work@footnote{see, however,
1263 the option @code{org-cycle-emulate-tab}.}.  When the cursor is at the
1264 beginning of the buffer and the first line is not a headline, then
1265 @key{TAB} actually runs global cycling (see below)@footnote{see the
1266 option @code{org-cycle-global-at-bob}.}.  Also when called with a prefix
1267 argument (@kbd{C-u @key{TAB}}), global cycling is invoked.
1269 @cindex global visibility states
1270 @cindex global cycling
1271 @cindex overview, global visibility state
1272 @cindex contents, global visibility state
1273 @cindex show all, global visibility state
1274 @orgcmd{S-@key{TAB},org-global-cycle}
1275 @itemx C-u @key{TAB}
1276 @emph{Global cycling}: Rotate the entire buffer among the states
1278 @example
1279 ,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
1280 '--------------------------------------'
1281 @end example
1283 When @kbd{S-@key{TAB}} is called with a numeric prefix argument N, the
1284 CONTENTS view up to headlines of level N will be shown.  Note that inside
1285 tables, @kbd{S-@key{TAB}} jumps to the previous field.
1287 @cindex set startup visibility, command
1288 @orgcmd{C-u C-u @key{TAB},org-set-startup-visibility}
1289 Switch back to the startup visibility of the buffer (@pxref{Initial visibility}).
1290 @cindex show all, command
1291 @orgcmd{C-u C-u C-u @key{TAB},outline-show-all}
1292 Show all, including drawers.
1293 @cindex revealing context
1294 @orgcmd{C-c C-r,org-reveal}
1295 Reveal context around point, showing the current entry, the following heading
1296 and the hierarchy above.  Useful for working near a location that has been
1297 exposed by a sparse tree command (@pxref{Sparse trees}) or an agenda command
1298 (@pxref{Agenda commands}).  With a prefix argument show, on each
1299 level, all sibling headings.  With a double prefix argument, also show the
1300 entire subtree of the parent.
1301 @cindex show branches, command
1302 @orgcmd{C-c C-k,outline-show-branches}
1303 Expose all the headings of the subtree, CONTENT view for just one subtree.
1304 @cindex show children, command
1305 @orgcmd{C-c @key{TAB},outline-show-children}
1306 Expose all direct children of the subtree.  With a numeric prefix argument N,
1307 expose all children down to level N@.
1308 @orgcmd{C-c C-x b,org-tree-to-indirect-buffer}
1309 Show the current subtree in an indirect buffer@footnote{The indirect buffer
1310 (@pxref{Indirect Buffers,,,emacs,GNU Emacs Manual}) will contain the entire
1311 buffer, but will be narrowed to the current tree.  Editing the indirect
1312 buffer will also change the original buffer, but without affecting visibility
1313 in that buffer.}.  With a numeric prefix argument N, go up to level N and
1314 then take that tree.  If N is negative then go up that many levels.  With a
1315 @kbd{C-u} prefix, do not remove the previously used indirect buffer.
1316 @orgcmd{C-c C-x v,org-copy-visible}
1317 Copy the @i{visible} text in the region into the kill ring.
1318 @end table
1320 @node Initial visibility
1321 @subsection Initial visibility
1323 @cindex visibility, initialize
1324 @vindex org-startup-folded
1325 @vindex org-agenda-inhibit-startup
1326 @cindex @code{overview}, STARTUP keyword
1327 @cindex @code{content}, STARTUP keyword
1328 @cindex @code{showall}, STARTUP keyword
1329 @cindex @code{showeverything}, STARTUP keyword
1331 When Emacs first visits an Org file, the global state is set to OVERVIEW,
1332 i.e., only the top level headlines are visible@footnote{When
1333 @code{org-agenda-inhibit-startup} is non-@code{nil}, Org will not honor the default
1334 visibility state when first opening a file for the agenda (@pxref{Speeding up
1335 your agendas}).}.  This can be configured through the variable
1336 @code{org-startup-folded}, or on a per-file basis by adding one of the
1337 following lines anywhere in the buffer:
1339 @example
1340 #+STARTUP: overview
1341 #+STARTUP: content
1342 #+STARTUP: showall
1343 #+STARTUP: showeverything
1344 @end example
1346 @cindex property, VISIBILITY
1347 @noindent
1348 Furthermore, any entries with a @samp{VISIBILITY} property (@pxref{Properties
1349 and columns}) will get their visibility adapted accordingly.  Allowed values
1350 for this property are @code{folded}, @code{children}, @code{content}, and
1351 @code{all}.
1353 @table @asis
1354 @orgcmd{C-u C-u @key{TAB},org-set-startup-visibility}
1355 Switch back to the startup visibility of the buffer, i.e., whatever is
1356 requested by startup options and @samp{VISIBILITY} properties in individual
1357 entries.
1358 @end table
1360 @node Catching invisible edits
1361 @subsection Catching invisible edits
1363 @vindex org-catch-invisible-edits
1364 @cindex edits, catching invisible
1365 Sometimes you may inadvertently edit an invisible part of the buffer and be
1366 confused on what has been edited and how to undo the mistake.  Setting
1367 @code{org-catch-invisible-edits} to non-@code{nil} will help prevent this.  See the
1368 docstring of this option on how Org should catch invisible edits and process
1369 them.
1371 @node Motion
1372 @section Motion
1373 @cindex motion, between headlines
1374 @cindex jumping, to headlines
1375 @cindex headline navigation
1376 The following commands jump to other headlines in the buffer.
1378 @table @asis
1379 @orgcmd{C-c C-n,org-next-visible-heading}
1380 Next heading.
1381 @orgcmd{C-c C-p,org-previous-visible-heading}
1382 Previous heading.
1383 @orgcmd{C-c C-f,org-forward-same-level}
1384 Next heading same level.
1385 @orgcmd{C-c C-b,org-backward-same-level}
1386 Previous heading same level.
1387 @orgcmd{C-c C-u,outline-up-heading}
1388 Backward to higher level heading.
1389 @orgcmd{C-c C-j,org-goto}
1390 Jump to a different place without changing the current outline
1391 visibility.  Shows the document structure in a temporary buffer, where
1392 you can use the following keys to find your destination:
1393 @vindex org-goto-auto-isearch
1394 @example
1395 @key{TAB}         @r{Cycle visibility.}
1396 @key{down} / @key{up}   @r{Next/previous visible headline.}
1397 @key{RET}         @r{Select this location.}
1398 @kbd{/}           @r{Do a Sparse-tree search}
1399 @r{The following keys work if you turn off @code{org-goto-auto-isearch}}
1400 n / p        @r{Next/previous visible headline.}
1401 f / b        @r{Next/previous headline same level.}
1402 u            @r{One level up.}
1403 0-9          @r{Digit argument.}
1404 q            @r{Quit}
1405 @end example
1406 @vindex org-goto-interface
1407 @noindent
1408 See also the option @code{org-goto-interface}.
1409 @end table
1411 @node Structure editing
1412 @section Structure editing
1413 @cindex structure editing
1414 @cindex headline, promotion and demotion
1415 @cindex promotion, of subtrees
1416 @cindex demotion, of subtrees
1417 @cindex subtree, cut and paste
1418 @cindex pasting, of subtrees
1419 @cindex cutting, of subtrees
1420 @cindex copying, of subtrees
1421 @cindex sorting, of subtrees
1422 @cindex subtrees, cut and paste
1424 @table @asis
1425 @orgcmd{M-@key{RET},org-insert-heading}
1426 @vindex org-M-RET-may-split-line
1427 Insert a new heading/item with the same level as the one at point.
1429 If the command is used at the @emph{beginning} of a line, and if there is
1430 a heading or a plain list item (@pxref{Plain lists}) at point, the new
1431 heading/item is created @emph{before} the current line.  When used at the
1432 beginning of a regular line of text, turn that line into a heading.
1434 When this command is used in the middle of a line, the line is split and the
1435 rest of the line becomes the new item or headline.  If you do not want the
1436 line to be split, customize @code{org-M-RET-may-split-line}.
1438 Calling the command with a @kbd{C-u} prefix unconditionally inserts a new
1439 heading at the end of the current subtree, thus preserving its contents.
1440 With a double @kbd{C-u C-u} prefix, the new heading is created at the end of
1441 the parent subtree instead.
1442 @orgcmd{C-@key{RET},org-insert-heading-respect-content}
1443 Insert a new heading at the end of the current subtree.
1444 @orgcmd{M-S-@key{RET},org-insert-todo-heading}
1445 @vindex org-treat-insert-todo-heading-as-state-change
1446 Insert new TODO entry with same level as current heading.  See also the
1447 variable @code{org-treat-insert-todo-heading-as-state-change}.
1448 @orgcmd{C-S-@key{RET},org-insert-todo-heading-respect-content}
1449 Insert new TODO entry with same level as current heading.  Like
1450 @kbd{C-@key{RET}}, the new headline will be inserted after the current
1451 subtree.
1452 @orgcmd{@key{TAB},org-cycle}
1453 In a new entry with no text yet, the first @key{TAB} demotes the entry to
1454 become a child of the previous one.  The next @key{TAB} makes it a parent,
1455 and so on, all the way to top level.  Yet another @key{TAB}, and you are back
1456 to the initial level.
1457 @orgcmd{M-@key{left},org-do-promote}
1458 Promote current heading by one level.
1459 @orgcmd{M-@key{right},org-do-demote}
1460 Demote current heading by one level.
1461 @orgcmd{M-S-@key{left},org-promote-subtree}
1462 Promote the current subtree by one level.
1463 @orgcmd{M-S-@key{right},org-demote-subtree}
1464 Demote the current subtree by one level.
1465 @orgcmd{M-S-@key{up},org-move-subtree-up}
1466 Move subtree up (swap with previous subtree of same
1467 level).
1468 @orgcmd{M-S-@key{down},org-move-subtree-down}
1469 Move subtree down (swap with next subtree of same level).
1470 @orgcmd{M-h,org-mark-element}
1471 Mark the element at point.  Hitting repeatedly will mark subsequent elements
1472 of the one just marked.  E.g., hitting @key{M-h} on a paragraph will mark it,
1473 hitting @key{M-h} immediately again will mark the next one.
1474 @orgcmd{C-c @@,org-mark-subtree}
1475 Mark the subtree at point.  Hitting repeatedly will mark subsequent subtrees
1476 of the same level than the marked subtree.
1477 @orgcmd{C-c C-x C-w,org-cut-subtree}
1478 Kill subtree, i.e., remove it from buffer but save in kill ring.
1479 With a numeric prefix argument N, kill N sequential subtrees.
1480 @orgcmd{C-c C-x M-w,org-copy-subtree}
1481 Copy subtree to kill ring.  With a numeric prefix argument N, copy the N
1482 sequential subtrees.
1483 @orgcmd{C-c C-x C-y,org-paste-subtree}
1484 Yank subtree from kill ring.  This does modify the level of the subtree to
1485 make sure the tree fits in nicely at the yank position.  The yank level can
1486 also be specified with a numeric prefix argument, or by yanking after a
1487 headline marker like @samp{****}.
1488 @orgcmd{C-y,org-yank}
1489 @vindex org-yank-adjusted-subtrees
1490 @vindex org-yank-folded-subtrees
1491 Depending on the options @code{org-yank-adjusted-subtrees} and
1492 @code{org-yank-folded-subtrees}, Org's internal @code{yank} command will
1493 paste subtrees folded and in a clever way, using the same command as @kbd{C-c
1494 C-x C-y}.  With the default settings, no level adjustment will take place,
1495 but the yanked tree will be folded unless doing so would swallow text
1496 previously visible.  Any prefix argument to this command will force a normal
1497 @code{yank} to be executed, with the prefix passed along.  A good way to
1498 force a normal yank is @kbd{C-u C-y}.  If you use @code{yank-pop} after a
1499 yank, it will yank previous kill items plainly, without adjustment and
1500 folding.
1501 @orgcmd{C-c C-x c,org-clone-subtree-with-time-shift}
1502 Clone a subtree by making a number of sibling copies of it.  You will be
1503 prompted for the number of copies to make, and you can also specify if any
1504 timestamps in the entry should be shifted.  This can be useful, for example,
1505 to create a number of tasks related to a series of lectures to prepare.  For
1506 more details, see the docstring of the command
1507 @code{org-clone-subtree-with-time-shift}.
1508 @orgcmd{C-c C-w,org-refile}
1509 Refile entry or region to a different location.  @xref{Refile and copy}.
1510 @orgcmd{C-c ^,org-sort}
1511 Sort same-level entries.  When there is an active region, all entries in the
1512 region will be sorted.  Otherwise the children of the current headline are
1513 sorted.  The command prompts for the sorting method, which can be
1514 alphabetically, numerically, by time (first timestamp with active preferred,
1515 creation time, scheduled time, deadline time), by priority, by TODO keyword
1516 (in the sequence the keywords have been defined in the setup) or by the value
1517 of a property.  Reverse sorting is possible as well.  You can also supply
1518 your own function to extract the sorting key.  With a @kbd{C-u} prefix,
1519 sorting will be case-sensitive.
1520 @orgcmd{C-x n s,org-narrow-to-subtree}
1521 Narrow buffer to current subtree.
1522 @orgcmd{C-x n b,org-narrow-to-block}
1523 Narrow buffer to current block.
1524 @orgcmd{C-x n w,widen}
1525 Widen buffer to remove narrowing.
1526 @orgcmd{C-c *,org-toggle-heading}
1527 Turn a normal line or plain list item into a headline (so that it becomes a
1528 subheading at its location).  Also turn a headline into a normal line by
1529 removing the stars.  If there is an active region, turn all lines in the
1530 region into headlines.  If the first line in the region was an item, turn
1531 only the item lines into headlines.  Finally, if the first line is a
1532 headline, remove the stars from all headlines in the region.
1533 @end table
1535 @cindex region, active
1536 @cindex active region
1537 @cindex transient mark mode
1538 When there is an active region (Transient Mark mode), promotion and
1539 demotion work on all headlines in the region.  To select a region of
1540 headlines, it is best to place both point and mark at the beginning of a
1541 line, mark at the beginning of the first headline, and point at the line
1542 just after the last headline to change.  Note that when the cursor is
1543 inside a table (@pxref{Tables}), the Meta-Cursor keys have different
1544 functionality.
1547 @node Sparse trees
1548 @section Sparse trees
1549 @cindex sparse trees
1550 @cindex trees, sparse
1551 @cindex folding, sparse trees
1552 @cindex occur, command
1554 @vindex org-show-context-detail
1555 An important feature of Org mode is the ability to construct @emph{sparse
1556 trees} for selected information in an outline tree, so that the entire
1557 document is folded as much as possible, but the selected information is made
1558 visible along with the headline structure above it@footnote{See also the
1559 variable @code{org-show-context-detail} to decide how much context is shown
1560 around each match.}.  Just try it out and you will see immediately how it
1561 works.
1563 Org mode contains several commands for creating such trees, all these
1564 commands can be accessed through a dispatcher:
1566 @table @asis
1567 @orgcmd{C-c /,org-sparse-tree}
1568 This prompts for an extra key to select a sparse-tree creating command.
1569 @orgcmdkkc{C-c / r,C-c / /,org-occur}
1570 @vindex org-remove-highlights-with-change
1571 Prompts for a regexp and shows a sparse tree with all matches.  If
1572 the match is in a headline, the headline is made visible.  If the match is in
1573 the body of an entry, headline and body are made visible.  In order to
1574 provide minimal context, also the full hierarchy of headlines above the match
1575 is shown, as well as the headline following the match.  Each match is also
1576 highlighted; the highlights disappear when the buffer is changed by an
1577 editing command@footnote{This depends on the option
1578 @code{org-remove-highlights-with-change}}, or by pressing @kbd{C-c C-c}.
1579 When called with a @kbd{C-u} prefix argument, previous highlights are kept,
1580 so several calls to this command can be stacked.
1581 @orgcmdkkc{M-g n,M-g M-n,next-error}
1582 Jump to the next sparse tree match in this buffer.
1583 @orgcmdkkc{M-g p,M-g M-p,previous-error}
1584 Jump to the previous sparse tree match in this buffer.
1585 @end table
1587 @noindent
1588 @vindex org-agenda-custom-commands
1589 For frequently used sparse trees of specific search strings, you can
1590 use the option @code{org-agenda-custom-commands} to define fast
1591 keyboard access to specific sparse trees.  These commands will then be
1592 accessible through the agenda dispatcher (@pxref{Agenda dispatcher}).
1593 For example:
1595 @lisp
1596 (setq org-agenda-custom-commands
1597       '(("f" occur-tree "FIXME")))
1598 @end lisp
1600 @noindent will define the key @kbd{C-c a f} as a shortcut for creating
1601 a sparse tree matching the string @samp{FIXME}.
1603 The other sparse tree commands select headings based on TODO keywords,
1604 tags, or properties and will be discussed later in this manual.
1606 @kindex C-c C-e C-v
1607 @cindex printing sparse trees
1608 @cindex visible text, printing
1609 To print a sparse tree, you can use the Emacs command
1610 @code{ps-print-buffer-with-faces} which does not print invisible parts of the
1611 document.  Or you can use @kbd{C-c C-e C-v} to export only the visible part
1612 of the document and print the resulting file.
1614 @node Plain lists
1615 @section Plain lists
1616 @cindex plain lists
1617 @cindex lists, plain
1618 @cindex lists, ordered
1619 @cindex ordered lists
1621 Within an entry of the outline tree, hand-formatted lists can provide
1622 additional structure.  They also provide a way to create lists of checkboxes
1623 (@pxref{Checkboxes}).  Org supports editing such lists, and every exporter
1624 (@pxref{Exporting}) can parse and format them.
1626 Org knows ordered lists, unordered lists, and description lists.
1627 @itemize @bullet
1628 @item
1629 @emph{Unordered} list items start with @samp{-}, @samp{+}, or
1630 @samp{*}@footnote{When using @samp{*} as a bullet, lines must be indented or
1631 they will be seen as top-level headlines.  Also, when you are hiding leading
1632 stars to get a clean outline view, plain list items starting with a star may
1633 be hard to distinguish from true headlines.  In short: even though @samp{*}
1634 is supported, it may be better to not use it for plain list items.}  as
1635 bullets.
1636 @item
1637 @vindex org-plain-list-ordered-item-terminator
1638 @vindex org-list-allow-alphabetical
1639 @emph{Ordered} list items start with a numeral followed by either a period or
1640 a right parenthesis@footnote{You can filter out any of them by configuring
1641 @code{org-plain-list-ordered-item-terminator}.}, such as @samp{1.} or
1642 @samp{1)}@footnote{You can also get @samp{a.}, @samp{A.}, @samp{a)} and
1643 @samp{A)} by configuring @code{org-list-allow-alphabetical}.  To minimize
1644 confusion with normal text, those are limited to one character only.  Beyond
1645 that limit, bullets will automatically fallback to numbers.}.  If you want a
1646 list to start with a different value (e.g., 20), start the text of the item
1647 with @code{[@@20]}@footnote{If there's a checkbox in the item, the cookie
1648 must be put @emph{before} the checkbox.  If you have activated alphabetical
1649 lists, you can also use counters like @code{[@@b]}.}.  Those constructs can
1650 be used in any item of the list in order to enforce a particular numbering.
1651 @item
1652 @emph{Description} list items are unordered list items, and contain the
1653 separator @samp{ :: } to distinguish the description @emph{term} from the
1654 description.
1655 @end itemize
1657 Items belonging to the same list must have the same indentation on the first
1658 line.  In particular, if an ordered list reaches number @samp{10.}, then the
1659 2--digit numbers must be written left-aligned with the other numbers in the
1660 list.  An item ends before the next line that is less or equally indented
1661 than its bullet/number.
1663 @vindex org-list-empty-line-terminates-plain-lists
1664 A list ends whenever every item has ended, which means before any line less
1665 or equally indented than items at top level.  It also ends before two blank
1666 lines@footnote{See also @code{org-list-empty-line-terminates-plain-lists}.}.
1667 In that case, all items are closed.  Here is an example:
1669 @example
1670 @group
1671 ** Lord of the Rings
1672    My favorite scenes are (in this order)
1673    1. The attack of the Rohirrim
1674    2. Eowyn's fight with the witch king
1675       + this was already my favorite scene in the book
1676       + I really like Miranda Otto.
1677    3. Peter Jackson being shot by Legolas
1678       - on DVD only
1679       He makes a really funny face when it happens.
1680    But in the end, no individual scenes matter but the film as a whole.
1681    Important actors in this film are:
1682    - @b{Elijah Wood} :: He plays Frodo
1683    - @b{Sean Astin} :: He plays Sam, Frodo's friend.  I still remember
1684      him very well from his role as Mikey Walsh in @i{The Goonies}.
1685 @end group
1686 @end example
1688 Org supports these lists by tuning filling and wrapping commands to deal with
1689 them correctly, and by exporting them properly (@pxref{Exporting}).  Since
1690 indentation is what governs the structure of these lists, many structural
1691 constructs like @code{#+BEGIN_...} blocks can be indented to signal that they
1692 belong to a particular item.
1694 @vindex org-list-demote-modify-bullet
1695 @vindex org-list-indent-offset
1696 If you find that using a different bullet for a sub-list (than that used for
1697 the current list-level) improves readability, customize the variable
1698 @code{org-list-demote-modify-bullet}.  To get a greater difference of
1699 indentation between items and their sub-items, customize
1700 @code{org-list-indent-offset}.
1702 @vindex org-list-automatic-rules
1703 The following commands act on items when the cursor is in the first line of
1704 an item (the line with the bullet or number).  Some of them imply the
1705 application of automatic rules to keep list structure intact.  If some of
1706 these actions get in your way, configure @code{org-list-automatic-rules}
1707 to disable them individually.
1709 @table @asis
1710 @orgcmd{@key{TAB},org-cycle}
1711 @cindex cycling, in plain lists
1712 @vindex org-cycle-include-plain-lists
1713 Items can be folded just like headline levels.  Normally this works only if
1714 the cursor is on a plain list item.  For more details, see the variable
1715 @code{org-cycle-include-plain-lists}.  If this variable is set to
1716 @code{integrate}, plain list items will be treated like low-level
1717 headlines.  The level of an item is then given by the indentation of the
1718 bullet/number.  Items are always subordinate to real headlines, however; the
1719 hierarchies remain completely separated.  In a new item with no text yet, the
1720 first @key{TAB} demotes the item to become a child of the previous
1721 one.  Subsequent @key{TAB}s move the item to meaningful levels in the list
1722 and eventually get it back to its initial position.
1723 @orgcmd{M-@key{RET},org-insert-heading}
1724 @vindex org-M-RET-may-split-line
1725 @vindex org-list-automatic-rules
1726 Insert new item at current level.  With a prefix argument, force a new
1727 heading (@pxref{Structure editing}).  If this command is used in the middle
1728 of an item, that item is @emph{split} in two, and the second part becomes the
1729 new item@footnote{If you do not want the item to be split, customize the
1730 variable @code{org-M-RET-may-split-line}.}.  If this command is executed
1731 @emph{before item's body}, the new item is created @emph{before} the current
1732 one.
1733 @end table
1735 @table @kbd
1736 @kindex M-S-@key{RET}
1737 @item M-S-@key{RET}
1738 Insert a new item with a checkbox (@pxref{Checkboxes}).
1739 @kindex S-@key{down}
1740 @item S-up
1741 @itemx S-down
1742 @cindex shift-selection-mode
1743 @vindex org-support-shift-select
1744 @vindex org-list-use-circular-motion
1745 Jump to the previous/next item in the current list@footnote{If you want to
1746 cycle around items that way, you may customize
1747 @code{org-list-use-circular-motion}.}, but only if
1748 @code{org-support-shift-select} is off.  If not, you can still use paragraph
1749 jumping commands like @kbd{C-@key{up}} and @kbd{C-@key{down}} to quite
1750 similar effect.
1751 @kindex M-@key{up}
1752 @kindex M-@key{down}
1753 @item M-up
1754 @itemx M-down
1755 Move the item including subitems up/down@footnote{See
1756 @code{org-list-use-circular-motion} for a cyclic behavior.} (swap with
1757 previous/next item of same indentation).  If the list is ordered, renumbering
1758 is automatic.
1759 @kindex M-@key{left}
1760 @kindex M-@key{right}
1761 @item M-left
1762 @itemx M-right
1763 Decrease/increase the indentation of an item, leaving children alone.
1764 @kindex M-S-@key{left}
1765 @kindex M-S-@key{right}
1766 @item M-S-@key{left}
1767 @itemx M-S-@key{right}
1768 Decrease/increase the indentation of the item, including subitems.
1769 Initially, the item tree is selected based on current indentation.  When
1770 these commands are executed several times in direct succession, the initially
1771 selected region is used, even if the new indentation would imply a different
1772 hierarchy.  To use the new hierarchy, break the command chain with a cursor
1773 motion or so.
1775 As a special case, using this command on the very first item of a list will
1776 move the whole list.  This behavior can be disabled by configuring
1777 @code{org-list-automatic-rules}.  The global indentation of a list has no
1778 influence on the text @emph{after} the list.
1779 @kindex C-c C-c
1780 @item C-c C-c
1781 If there is a checkbox (@pxref{Checkboxes}) in the item line, toggle the
1782 state of the checkbox.  In any case, verify bullets and indentation
1783 consistency in the whole list.
1784 @kindex C-c -
1785 @vindex org-plain-list-ordered-item-terminator
1786 @item C-c -
1787 Cycle the entire list level through the different itemize/enumerate bullets
1788 (@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}) or a subset of them,
1789 depending on @code{org-plain-list-ordered-item-terminator}, the type of list,
1790 and its indentation.  With a numeric prefix argument N, select the Nth bullet
1791 from this list.  If there is an active region when calling this, all selected
1792 lines are converted to list items.  With a prefix argument, selected text is
1793 changed into a single item.  If the first line already was a list item, any
1794 item marker will be removed from the list.  Finally, even without an active
1795 region, a normal line will be converted into a list item.
1796 @kindex C-c *
1797 @item C-c *
1798 Turn a plain list item into a headline (so that it becomes a subheading at
1799 its location).  @xref{Structure editing}, for a detailed explanation.
1800 @kindex C-c C-*
1801 @item C-c C-*
1802 Turn the whole plain list into a subtree of the current heading.  Checkboxes
1803 (@pxref{Checkboxes}) will become TODO (resp. DONE) keywords when unchecked
1804 (resp. checked).
1805 @kindex S-@key{left}
1806 @kindex S-@key{right}
1807 @item S-left/right
1808 @vindex org-support-shift-select
1809 This command also cycles bullet styles when the cursor in on the bullet or
1810 anywhere in an item line, details depending on
1811 @code{org-support-shift-select}.
1812 @kindex C-c ^
1813 @cindex sorting, of plain list
1814 @item C-c ^
1815 Sort the plain list.  You will be prompted for the sorting method:
1816 numerically, alphabetically, by time, by checked status for check lists,
1817 or by a custom function.
1818 @end table
1820 @node Drawers
1821 @section Drawers
1822 @cindex drawers
1823 @cindex visibility cycling, drawers
1825 @cindex org-insert-drawer
1826 @kindex C-c C-x d
1827 Sometimes you want to keep information associated with an entry, but you
1828 normally don't want to see it.  For this, Org mode has @emph{drawers}.  They
1829 can contain anything but a headline and another drawer.  Drawers look like
1830 this:
1832 @example
1833 ** This is a headline
1834    Still outside the drawer
1835    :DRAWERNAME:
1836    This is inside the drawer.
1837    :END:
1838    After the drawer.
1839 @end example
1841 You can interactively insert drawers at point by calling
1842 @code{org-insert-drawer}, which is bound to @key{C-c C-x d}.  With an active
1843 region, this command will put the region inside the drawer.  With a prefix
1844 argument, this command calls @code{org-insert-property-drawer} and add
1845 a property drawer right below the current headline.  Completion over drawer
1846 keywords is also possible using @kbd{M-@key{TAB}}@footnote{Many desktops
1847 intercept @kbd{M-@key{TAB}} to switch windows.  Use @kbd{C-M-i} or
1848 @kbd{@key{ESC} @key{TAB}} instead for completion (@pxref{Completion}).}.
1850 Visibility cycling (@pxref{Visibility cycling}) on the headline will hide and
1851 show the entry, but keep the drawer collapsed to a single line.  In order to
1852 look inside the drawer, you need to move the cursor to the drawer line and
1853 press @key{TAB} there.  Org mode uses the @code{PROPERTIES} drawer for
1854 storing properties (@pxref{Properties and columns}), and you can also arrange
1855 for state change notes (@pxref{Tracking TODO state changes}) and clock times
1856 (@pxref{Clocking work time}) to be stored in a drawer @code{LOGBOOK}.  If you
1857 want to store a quick note in the LOGBOOK drawer, in a similar way to state
1858 changes, use
1860 @table @kbd
1861 @kindex C-c C-z
1862 @item C-c C-z
1863 Add a time-stamped note to the LOGBOOK drawer.
1864 @end table
1866 @vindex org-export-with-drawers
1867 @vindex org-export-with-properties
1868 You can select the name of the drawers which should be exported with
1869 @code{org-export-with-drawers}.  In that case, drawer contents will appear in
1870 export output.  Property drawers are not affected by this variable: configure
1871 @code{org-export-with-properties} instead.
1873 @node Blocks
1874 @section Blocks
1876 @vindex org-hide-block-startup
1877 @cindex blocks, folding
1878 Org mode uses begin...end blocks for various purposes from including source
1879 code examples (@pxref{Literal examples}) to capturing time logging
1880 information (@pxref{Clocking work time}).  These blocks can be folded and
1881 unfolded by pressing TAB in the begin line.  You can also get all blocks
1882 folded at startup by configuring the option @code{org-hide-block-startup}
1883 or on a per-file basis by using
1885 @cindex @code{hideblocks}, STARTUP keyword
1886 @cindex @code{nohideblocks}, STARTUP keyword
1887 @example
1888 #+STARTUP: hideblocks
1889 #+STARTUP: nohideblocks
1890 @end example
1892 @node Footnotes
1893 @section Footnotes
1894 @cindex footnotes
1896 Org mode supports the creation of footnotes.
1898 A footnote is started by a footnote marker in square brackets in column 0, no
1899 indentation allowed.  It ends at the next footnote definition, headline, or
1900 after two consecutive empty lines.  The footnote reference is simply the
1901 marker in square brackets, inside text.  Markers always start with
1902 @code{fn:}.  For example:
1904 @example
1905 The Org homepage[fn:1] now looks a lot better than it used to.
1907 [fn:1] The link is: http://orgmode.org
1908 @end example
1910 Org mode extends the number-based syntax to @emph{named} footnotes and
1911 optional inline definition.  Here are the valid references:
1913 @table @code
1914 @item [fn:name]
1915 A named footnote reference, where @code{name} is a unique label word, or, for
1916 simplicity of automatic creation, a number.
1917 @item [fn::This is the inline definition of this footnote]
1918 A @LaTeX{}-like anonymous footnote where the definition is given directly at the
1919 reference point.
1920 @item [fn:name:a definition]
1921 An inline definition of a footnote, which also specifies a name for the note.
1922 Since Org allows multiple references to the same note, you can then use
1923 @code{[fn:name]} to create additional references.
1924 @end table
1926 @vindex org-footnote-auto-label
1927 Footnote labels can be created automatically, or you can create names yourself.
1928 This is handled by the variable @code{org-footnote-auto-label} and its
1929 corresponding @code{#+STARTUP} keywords.  See the docstring of that variable
1930 for details.
1932 @noindent The following command handles footnotes:
1934 @table @kbd
1935 @kindex C-c C-x f
1936 @item C-c C-x f
1937 The footnote action command.
1939 When the cursor is on a footnote reference, jump to the definition.  When it
1940 is at a definition, jump to the (first) reference.
1942 @vindex org-footnote-define-inline
1943 @vindex org-footnote-section
1944 @vindex org-footnote-auto-adjust
1945 Otherwise, create a new footnote.  Depending on the option
1946 @code{org-footnote-define-inline}@footnote{The corresponding in-buffer
1947 setting is: @code{#+STARTUP: fninline} or @code{#+STARTUP: nofninline}}, the
1948 definition will be placed right into the text as part of the reference, or
1949 separately into the location determined by the option
1950 @code{org-footnote-section}.
1952 When this command is called with a prefix argument, a menu of additional
1953 options is offered:
1954 @example
1955 s   @r{Sort the footnote definitions by reference sequence.  During editing,}
1956     @r{Org makes no effort to sort footnote definitions into a particular}
1957     @r{sequence.  If you want them sorted, use this command, which will}
1958     @r{also move entries according to @code{org-footnote-section}.  Automatic}
1959     @r{sorting after each insertion/deletion can be configured using the}
1960     @r{option @code{org-footnote-auto-adjust}.}
1961 r   @r{Renumber the simple @code{fn:N} footnotes.  Automatic renumbering}
1962     @r{after each insertion/deletion can be configured using the option}
1963     @r{@code{org-footnote-auto-adjust}.}
1964 S   @r{Short for first @code{r}, then @code{s} action.}
1965 n   @r{Normalize the footnotes by collecting all definitions (including}
1966     @r{inline definitions) into a special section, and then numbering them}
1967     @r{in sequence.  The references will then also be numbers.}
1968 d   @r{Delete the footnote at point, and all definitions of and references}
1969     @r{to it.}
1970 @end example
1971 Depending on the variable @code{org-footnote-auto-adjust}@footnote{the
1972 corresponding in-buffer options are @code{fnadjust} and @code{nofnadjust}.},
1973 renumbering and sorting footnotes can be automatic after each insertion or
1974 deletion.
1976 @kindex C-c C-c
1977 @item C-c C-c
1978 If the cursor is on a footnote reference, jump to the definition.  If it is a
1979 the definition, jump back to the reference.  When called at a footnote
1980 location with a prefix argument, offer the same menu as @kbd{C-c C-x f}.
1981 @kindex C-c C-o
1982 @kindex mouse-1
1983 @kindex mouse-2
1984 @item C-c C-o  @r{or} mouse-1/2
1985 Footnote labels are also links to the corresponding definition/reference, and
1986 you can use the usual commands to follow these links.
1988 @vindex org-edit-footnote-reference
1989 @kindex C-c '
1990 @item C-c '
1991 @item C-c '
1992 Edit the footnote definition corresponding to the reference at point in
1993 a separate window.  The window can be closed by pressing @kbd{C-c '}.
1995 @end table
1997 @node Orgstruct mode
1998 @section The Orgstruct minor mode
1999 @cindex Orgstruct mode
2000 @cindex minor mode for structure editing
2002 If you like the intuitive way the Org mode structure editing and list
2003 formatting works, you might want to use these commands in other modes like
2004 Text mode or Mail mode as well.  The minor mode @code{orgstruct-mode} makes
2005 this possible.   Toggle the mode with @kbd{M-x orgstruct-mode RET}, or
2006 turn it on by default, for example in Message mode, with one of:
2008 @lisp
2009 (add-hook 'message-mode-hook 'turn-on-orgstruct)
2010 (add-hook 'message-mode-hook 'turn-on-orgstruct++)
2011 @end lisp
2013 When this mode is active and the cursor is on a line that looks to Org like a
2014 headline or the first line of a list item, most structure editing commands
2015 will work, even if the same keys normally have different functionality in the
2016 major mode you are using.  If the cursor is not in one of those special
2017 lines, Orgstruct mode lurks silently in the shadows.
2019 When you use @code{orgstruct++-mode}, Org will also export indentation and
2020 autofill settings into that mode, and detect item context after the first
2021 line of an item.
2023 @vindex orgstruct-heading-prefix-regexp
2024 You can also use Org structure editing to fold and unfold headlines in
2025 @emph{any} file, provided you defined @code{orgstruct-heading-prefix-regexp}:
2026 the regular expression must match the local prefix to use before Org's
2027 headlines.  For example, if you set this variable to @code{";; "} in Emacs
2028 Lisp files, you will be able to fold and unfold headlines in Emacs Lisp
2029 commented lines.  Some commands like @code{org-demote} are disabled when the
2030 prefix is set, but folding/unfolding will work correctly.
2032 @node Org syntax
2033 @section Org syntax
2034 @cindex Org syntax
2036 A reference document providing a formal description of Org's syntax is
2037 available as @uref{http://orgmode.org/worg/dev/org-syntax.html, a draft on
2038 Worg}, written and maintained by Nicolas Goaziou.  It defines Org's core
2039 internal concepts such as @code{headlines}, @code{sections}, @code{affiliated
2040 keywords}, @code{(greater) elements} and @code{objects}.  Each part of an Org
2041 file falls into one of the categories above.
2043 To explore the abstract structure of an Org buffer, run this in a buffer:
2045 @lisp
2046 M-: (org-element-parse-buffer) RET
2047 @end lisp
2049 It will output a list containing the buffer's content represented as an
2050 abstract structure.  The export engine relies on the information stored in
2051 this list.  Most interactive commands (e.g., for structure editing) also
2052 rely on the syntactic meaning of the surrounding context.
2054 @cindex syntax checker
2055 @cindex linter
2056 You can check syntax in your documents using @code{org-lint} command.
2058 @node Tables
2059 @chapter Tables
2060 @cindex tables
2061 @cindex editing tables
2063 Org comes with a fast and intuitive table editor.  Spreadsheet-like
2064 calculations are supported using the Emacs @file{calc} package
2065 (@pxref{Top, Calc, , calc, Gnu Emacs Calculator Manual}).
2067 @menu
2068 * Built-in table editor::       Simple tables
2069 * Column width and alignment::  Overrule the automatic settings
2070 * Column groups::               Grouping to trigger vertical lines
2071 * Orgtbl mode::                 The table editor as minor mode
2072 * The spreadsheet::             The table editor has spreadsheet capabilities
2073 * Org-Plot::                    Plotting from org tables
2074 @end menu
2076 @node Built-in table editor
2077 @section The built-in table editor
2078 @cindex table editor, built-in
2080 Org makes it easy to format tables in plain ASCII@.  Any line with @samp{|} as
2081 the first non-whitespace character is considered part of a table.  @samp{|}
2082 is also the column separator@footnote{To insert a vertical bar into a table
2083 field, use @code{\vert} or, inside a word @code{abc\vert@{@}def}.}.  A table
2084 might look like this:
2086 @example
2087 | Name  | Phone | Age |
2088 |-------+-------+-----|
2089 | Peter |  1234 |  17 |
2090 | Anna  |  4321 |  25 |
2091 @end example
2093 A table is re-aligned automatically each time you press @key{TAB} or
2094 @key{RET} or @kbd{C-c C-c} inside the table.  @key{TAB} also moves to
2095 the next field (@key{RET} to the next row) and creates new table rows
2096 at the end of the table or before horizontal lines.  The indentation
2097 of the table is set by the first line.  Any line starting with
2098 @samp{|-} is considered as a horizontal separator line and will be
2099 expanded on the next re-align to span the whole table width.  So, to
2100 create the above table, you would only type
2102 @example
2103 |Name|Phone|Age|
2105 @end example
2107 @noindent and then press @key{TAB} to align the table and start filling in
2108 fields.  Even faster would be to type @code{|Name|Phone|Age} followed by
2109 @kbd{C-c @key{RET}}.
2111 @vindex org-enable-table-editor
2112 @vindex org-table-auto-blank-field
2113 When typing text into a field, Org treats @key{DEL},
2114 @key{Backspace}, and all character keys in a special way, so that
2115 inserting and deleting avoids shifting other fields.  Also, when
2116 typing @emph{immediately after the cursor was moved into a new field
2117 with @kbd{@key{TAB}}, @kbd{S-@key{TAB}} or @kbd{@key{RET}}}, the
2118 field is automatically made blank.  If this behavior is too
2119 unpredictable for you, configure the options
2120 @code{org-enable-table-editor} and @code{org-table-auto-blank-field}.
2122 @table @kbd
2123 @tsubheading{Creation and conversion}
2124 @orgcmd{C-c |,org-table-create-or-convert-from-region}
2125 Convert the active region to a table.  If every line contains at least one
2126 TAB character, the function assumes that the material is tab separated.
2127 If every line contains a comma, comma-separated values (CSV) are assumed.
2128 If not, lines are split at whitespace into fields.  You can use a prefix
2129 argument to force a specific separator: @kbd{C-u} forces CSV, @kbd{C-u
2130 C-u} forces TAB, @kbd{C-u C-u C-u} will prompt for a regular expression to
2131 match the separator, and a numeric argument N indicates that at least N
2132 consecutive spaces, or alternatively a TAB will be the separator.
2134 If there is no active region, this command creates an empty Org
2135 table.  But it is easier just to start typing, like
2136 @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
2138 @tsubheading{Re-aligning and field motion}
2139 @orgcmd{C-c C-c,org-table-align}
2140 Re-align the table and don't move to another field.
2142 @orgcmd{C-c SPC,org-table-blank-field}
2143 Blank the field at point.
2145 @orgcmd{TAB,org-table-next-field}
2146 Re-align the table, move to the next field.  Creates a new row if
2147 necessary.
2149 @orgcmd{S-@key{TAB},org-table-previous-field}
2150 Re-align, move to previous field.
2152 @orgcmd{@key{RET},org-table-next-row}
2153 Re-align the table and move down to next row.  Creates a new row if
2154 necessary.  At the beginning or end of a line, @key{RET} still does
2155 NEWLINE, so it can be used to split a table.
2157 @orgcmd{M-a,org-table-beginning-of-field}
2158 Move to beginning of the current table field, or on to the previous field.
2159 @orgcmd{M-e,org-table-end-of-field}
2160 Move to end of the current table field, or on to the next field.
2162 @tsubheading{Column and row editing}
2163 @orgcmdkkcc{M-@key{left},M-@key{right},org-table-move-column-left,org-table-move-column-right}
2164 Move the current column left/right.
2166 @orgcmd{M-S-@key{left},org-table-delete-column}
2167 Kill the current column.
2169 @orgcmd{M-S-@key{right},org-table-insert-column}
2170 Insert a new column to the left of the cursor position.
2172 @orgcmdkkcc{M-@key{up},M-@key{down},org-table-move-row-up,org-table-move-row-down}
2173 Move the current row up/down.
2175 @orgcmd{M-S-@key{up},org-table-kill-row}
2176 Kill the current row or horizontal line.
2178 @orgcmd{M-S-@key{down},org-table-insert-row}
2179 Insert a new row above the current row.  With a prefix argument, the line is
2180 created below the current one.
2182 @orgcmd{C-c -,org-table-insert-hline}
2183 Insert a horizontal line below current row.  With a prefix argument, the line
2184 is created above the current line.
2186 @orgcmd{C-c @key{RET},org-table-hline-and-move}
2187 Insert a horizontal line below current row, and move the cursor into the row
2188 below that line.
2190 @orgcmd{C-c ^,org-table-sort-lines}
2191 Sort the table lines in the region.  The position of point indicates the
2192 column to be used for sorting, and the range of lines is the range
2193 between the nearest horizontal separator lines, or the entire table.  If
2194 point is before the first column, you will be prompted for the sorting
2195 column.  If there is an active region, the mark specifies the first line
2196 and the sorting column, while point should be in the last line to be
2197 included into the sorting.  The command prompts for the sorting type
2198 (alphabetically, numerically, or by time).  You can sort in normal or
2199 reverse order.  You can also supply your own key extraction and comparison
2200 functions.  When called with a prefix argument, alphabetic sorting will be
2201 case-sensitive.
2203 @tsubheading{Regions}
2204 @orgcmd{C-c C-x M-w,org-table-copy-region}
2205 Copy a rectangular region from a table to a special clipboard.  Point and
2206 mark determine edge fields of the rectangle.  If there is no active region,
2207 copy just the current field.  The process ignores horizontal separator lines.
2209 @orgcmd{C-c C-x C-w,org-table-cut-region}
2210 Copy a rectangular region from a table to a special clipboard, and
2211 blank all fields in the rectangle.  So this is the ``cut'' operation.
2213 @orgcmd{C-c C-x C-y,org-table-paste-rectangle}
2214 Paste a rectangular region into a table.
2215 The upper left corner ends up in the current field.  All involved fields
2216 will be overwritten.  If the rectangle does not fit into the present table,
2217 the table is enlarged as needed.  The process ignores horizontal separator
2218 lines.
2220 @orgcmd{M-@key{RET},org-table-wrap-region}
2221 Split the current field at the cursor position and move the rest to the line
2222 below.  If there is an active region, and both point and mark are in the same
2223 column, the text in the column is wrapped to minimum width for the given
2224 number of lines.  A numeric prefix argument may be used to change the number
2225 of desired lines.  If there is no region, but you specify a prefix argument,
2226 the current field is made blank, and the content is appended to the field
2227 above.
2229 @tsubheading{Calculations}
2230 @cindex formula, in tables
2231 @cindex calculations, in tables
2232 @cindex region, active
2233 @cindex active region
2234 @cindex transient mark mode
2235 @orgcmd{C-c +,org-table-sum}
2236 Sum the numbers in the current column, or in the rectangle defined by
2237 the active region.  The result is shown in the echo area and can
2238 be inserted with @kbd{C-y}.
2240 @orgcmd{S-@key{RET},org-table-copy-down}
2241 @vindex org-table-copy-increment
2242 When current field is empty, copy from first non-empty field above.  When not
2243 empty, copy current field down to next row and move cursor along with it.
2244 Depending on the option @code{org-table-copy-increment}, integer field
2245 values will be incremented during copy.  Integers that are too large will not
2246 be incremented.  Also, a @code{0} prefix argument temporarily disables the
2247 increment.  This key is also used by shift-selection and related modes
2248 (@pxref{Conflicts}).
2250 @tsubheading{Miscellaneous}
2251 @orgcmd{C-c `,org-table-edit-field}
2252 Edit the current field in a separate window.  This is useful for fields that
2253 are not fully visible (@pxref{Column width and alignment}).  When called with
2254 a @kbd{C-u} prefix, just make the full field visible, so that it can be
2255 edited in place.  When called with two @kbd{C-u} prefixes, make the editor
2256 window follow the cursor through the table and always show the current
2257 field.  The follow mode exits automatically when the cursor leaves the table,
2258 or when you repeat this command with @kbd{C-u C-u C-c `}.
2260 @item M-x org-table-import RET
2261 Import a file as a table.  The table should be TAB or whitespace
2262 separated.  Use, for example, to import a spreadsheet table or data
2263 from a database, because these programs generally can write
2264 TAB-separated text files.  This command works by inserting the file into
2265 the buffer and then converting the region to a table.  Any prefix
2266 argument is passed on to the converter, which uses it to determine the
2267 separator.
2268 @orgcmd{C-c |,org-table-create-or-convert-from-region}
2269 Tables can also be imported by pasting tabular text into the Org
2270 buffer, selecting the pasted text with @kbd{C-x C-x} and then using the
2271 @kbd{C-c |} command (see above under @i{Creation and conversion}).
2273 @item M-x org-table-export RET
2274 @findex org-table-export
2275 @vindex org-table-export-default-format
2276 Export the table, by default as a TAB-separated file.  Use for data
2277 exchange with, for example, spreadsheet or database programs.  The format
2278 used to export the file can be configured in the option
2279 @code{org-table-export-default-format}.  You may also use properties
2280 @code{TABLE_EXPORT_FILE} and @code{TABLE_EXPORT_FORMAT} to specify the file
2281 name and the format for table export in a subtree.  Org supports quite
2282 general formats for exported tables.  The exporter format is the same as the
2283 format used by Orgtbl radio tables, see @ref{Translator functions}, for a
2284 detailed description.
2285 @end table
2287 If you don't like the automatic table editor because it gets in your
2288 way on lines which you would like to start with @samp{|}, you can turn
2289 it off with
2291 @lisp
2292 (setq org-enable-table-editor nil)
2293 @end lisp
2295 @noindent Then the only table command that still works is
2296 @kbd{C-c C-c} to do a manual re-align.
2298 @node Column width and alignment
2299 @section Column width and alignment
2300 @cindex narrow columns in tables
2301 @cindex alignment in tables
2303 The width of columns is automatically determined by the table editor.  And
2304 also the alignment of a column is determined automatically from the fraction
2305 of number-like versus non-number fields in the column.
2307 Sometimes a single field or a few fields need to carry more text, leading to
2308 inconveniently wide columns.  Or maybe you want to make a table with several
2309 columns having a fixed width, regardless of content.  To set the width of
2310 a column, one field anywhere in the column may contain just the string
2311 @samp{<N>} where @samp{N} is an integer specifying the width of the column in
2312 characters.  The next re-align will then set the width of this column to this
2313 value.
2315 @example
2316 @group
2317 |---+------------------------------|               |---+--------|
2318 |   |                              |               |   | <6>    |
2319 | 1 | one                          |               | 1 | one    |
2320 | 2 | two                          |     ----\     | 2 | two    |
2321 | 3 | This is a long chunk of text |     ----/     | 3 | This=> |
2322 | 4 | four                         |               | 4 | four   |
2323 |---+------------------------------|               |---+--------|
2324 @end group
2325 @end example
2327 @noindent
2328 Fields that are wider become clipped and end in the string @samp{=>}.
2329 Note that the full text is still in the buffer but is hidden.
2330 To see the full text, hold the mouse over the field---a tool-tip window
2331 will show the full content.  To edit such a field, use the command
2332 @kbd{C-c `} (that is @kbd{C-c} followed by the grave accent).  This will
2333 open a new window with the full field.  Edit it and finish with @kbd{C-c
2334 C-c}.
2336 @vindex org-startup-align-all-tables
2337 When visiting a file containing a table with narrowed columns, the
2338 necessary character hiding has not yet happened, and the table needs to
2339 be aligned before it looks nice.  Setting the option
2340 @code{org-startup-align-all-tables} will realign all tables in a file
2341 upon visiting, but also slow down startup.  You can also set this option
2342 on a per-file basis with:
2344 @example
2345 #+STARTUP: align
2346 #+STARTUP: noalign
2347 @end example
2349 If you would like to overrule the automatic alignment of number-rich columns
2350 to the right and of string-rich columns to the left, you can use @samp{<r>},
2351 @samp{<c>}@footnote{Centering does not work inside Emacs, but it does have an
2352 effect when exporting to HTML.} or @samp{<l>} in a similar fashion.  You may
2353 also combine alignment and field width like this: @samp{<r10>}.
2355 Lines which only contain these formatting cookies will be removed
2356 automatically when exporting the document.
2358 @node Column groups
2359 @section Column groups
2360 @cindex grouping columns in tables
2362 When Org exports tables, it does so by default without vertical lines because
2363 that is visually more satisfying in general.  Occasionally however, vertical
2364 lines can be useful to structure a table into groups of columns, much like
2365 horizontal lines can do for groups of rows.  In order to specify column
2366 groups, you can use a special row where the first field contains only
2367 @samp{/}.  The further fields can either contain @samp{<} to indicate that
2368 this column should start a group, @samp{>} to indicate the end of a group, or
2369 @samp{<>} (no space between @samp{<} and @samp{>}) to make a column a group
2370 of its own.  Boundaries between column groups will upon export be marked with
2371 vertical lines.  Here is an example:
2373 @example
2374 | N | N^2 | N^3 | N^4 | ~sqrt(n)~ | ~sqrt[4](N)~ |
2375 |---+-----+-----+-----+-----------+--------------|
2376 | / |   < |     |   > |         < |            > |
2377 | 1 |   1 |   1 |   1 |         1 |            1 |
2378 | 2 |   4 |   8 |  16 |    1.4142 |       1.1892 |
2379 | 3 |   9 |  27 |  81 |    1.7321 |       1.3161 |
2380 |---+-----+-----+-----+-----------+--------------|
2381 #+TBLFM: $2=$1^2::$3=$1^3::$4=$1^4::$5=sqrt($1)::$6=sqrt(sqrt(($1)))
2382 @end example
2384 It is also sufficient to just insert the column group starters after
2385 every vertical line you would like to have:
2387 @example
2388 |  N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
2389 |----+-----+-----+-----+---------+------------|
2390 | /  | <   |     |     | <       |            |
2391 @end example
2393 @node Orgtbl mode
2394 @section The Orgtbl minor mode
2395 @cindex Orgtbl mode
2396 @cindex minor mode for tables
2398 If you like the intuitive way the Org table editor works, you
2399 might also want to use it in other modes like Text mode or Mail mode.
2400 The minor mode Orgtbl mode makes this possible.  You can always toggle
2401 the mode with @kbd{M-x orgtbl-mode RET}.  To turn it on by default, for
2402 example in Message mode, use
2404 @lisp
2405 (add-hook 'message-mode-hook 'turn-on-orgtbl)
2406 @end lisp
2408 Furthermore, with some special setup, it is possible to maintain tables
2409 in arbitrary syntax with Orgtbl mode.  For example, it is possible to
2410 construct @LaTeX{} tables with the underlying ease and power of
2411 Orgtbl mode, including spreadsheet capabilities.  For details, see
2412 @ref{Tables in arbitrary syntax}.
2414 @node The spreadsheet
2415 @section The spreadsheet
2416 @cindex calculations, in tables
2417 @cindex spreadsheet capabilities
2418 @cindex @file{calc} package
2420 The table editor makes use of the Emacs @file{calc} package to implement
2421 spreadsheet-like capabilities.  It can also evaluate Emacs Lisp forms to
2422 derive fields from other fields.  While fully featured, Org's implementation
2423 is not identical to other spreadsheets.  For example, Org knows the concept
2424 of a @emph{column formula} that will be applied to all non-header fields in a
2425 column without having to copy the formula to each relevant field.  There is
2426 also a formula debugger, and a formula editor with features for highlighting
2427 fields in the table corresponding to the references at the point in the
2428 formula, moving these references by arrow keys
2430 @menu
2431 * References::                  How to refer to another field or range
2432 * Formula syntax for Calc::     Using Calc to compute stuff
2433 * Formula syntax for Lisp::     Writing formulas in Emacs Lisp
2434 * Durations and time values::   How to compute durations and time values
2435 * Field and range formulas::    Formula for specific (ranges of) fields
2436 * Column formulas::             Formulas valid for an entire column
2437 * Lookup functions::            Lookup functions for searching tables
2438 * Editing and debugging formulas::  Fixing formulas
2439 * Updating the table::          Recomputing all dependent fields
2440 * Advanced features::           Field and column names, parameters and automatic recalc
2441 @end menu
2443 @node References
2444 @subsection References
2445 @cindex references
2447 To compute fields in the table from other fields, formulas must
2448 reference other fields or ranges.  In Org, fields can be referenced
2449 by name, by absolute coordinates, and by relative coordinates.  To find
2450 out what the coordinates of a field are, press @kbd{C-c ?} in that
2451 field, or press @kbd{C-c @}} to toggle the display of a grid.
2453 @subsubheading Field references
2454 @cindex field references
2455 @cindex references, to fields
2457 Formulas can reference the value of another field in two ways.  Like in
2458 any other spreadsheet, you may reference fields with a letter/number
2459 combination like @code{B3}, meaning the 2nd field in the 3rd row.
2460 @vindex org-table-use-standard-references
2461 However, Org prefers@footnote{Org will understand references typed by the
2462 user as @samp{B4}, but it will not use this syntax when offering a formula
2463 for editing.  You can customize this behavior using the option
2464 @code{org-table-use-standard-references}.} to use another, more general
2465 representation that looks like this:
2466 @example
2467 @@@var{row}$@var{column}
2468 @end example
2470 Column specifications can be absolute like @code{$1},
2471 @code{$2},...@code{$@var{N}}, or relative to the current column (i.e., the
2472 column of the field which is being computed) like @code{$+1} or @code{$-2}.
2473 @code{$<} and @code{$>} are immutable references to the first and last
2474 column, respectively, and you can use @code{$>>>} to indicate the third
2475 column from the right.
2477 The row specification only counts data lines and ignores horizontal separator
2478 lines (hlines).  Like with columns, you can use absolute row numbers
2479 @code{@@1}, @code{@@2},...@code{@@@var{N}}, and row numbers relative to the
2480 current row like @code{@@+3} or @code{@@-1}.  @code{@@<} and @code{@@>} are
2481 immutable references the first and last@footnote{For backward compatibility
2482 you can also use special names like @code{$LR5} and @code{$LR12} to refer in
2483 a stable way to the 5th and 12th field in the last row of the table.
2484 However, this syntax is deprecated, it should not be used for new documents.
2485 Use @code{@@>$} instead.} row in the table, respectively.  You may also
2486 specify the row relative to one of the hlines: @code{@@I} refers to the first
2487 hline, @code{@@II} to the second, etc.  @code{@@-I} refers to the first such
2488 line above the current line, @code{@@+I} to the first such line below the
2489 current line.  You can also write @code{@@III+2} which is the second data line
2490 after the third hline in the table.
2492 @code{@@0} and @code{$0} refer to the current row and column, respectively,
2493 i.e., to the row/column for the field being computed.  Also, if you omit
2494 either the column or the row part of the reference, the current row/column is
2495 implied.
2497 Org's references with @emph{unsigned} numbers are fixed references
2498 in the sense that if you use the same reference in the formula for two
2499 different fields, the same field will be referenced each time.
2500 Org's references with @emph{signed} numbers are floating
2501 references because the same reference operator can reference different
2502 fields depending on the field being calculated by the formula.
2504 Here are a few examples:
2506 @example
2507 @@2$3      @r{2nd row, 3rd column (same as @code{C2})}
2508 $5        @r{column 5 in the current row (same as @code{E&})}
2509 @@2        @r{current column, row 2}
2510 @@-1$-3    @r{the field one row up, three columns to the left}
2511 @@-I$2     @r{field just under hline above current row, column 2}
2512 @@>$5      @r{field in the last row, in column 5}
2513 @end example
2515 @subsubheading Range references
2516 @cindex range references
2517 @cindex references, to ranges
2519 You may reference a rectangular range of fields by specifying two field
2520 references connected by two dots @samp{..}.  If both fields are in the
2521 current row, you may simply use @samp{$2..$7}, but if at least one field
2522 is in a different row, you need to use the general @code{@@row$column}
2523 format at least for the first field (i.e the reference must start with
2524 @samp{@@} in order to be interpreted correctly).  Examples:
2526 @example
2527 $1..$3        @r{first three fields in the current row}
2528 $P..$Q        @r{range, using column names (see under Advanced)}
2529 $<<<..$>>     @r{start in third column, continue to the last but one}
2530 @@2$1..@@4$3    @r{6 fields between these two fields (same as @code{A2..C4})}
2531 @@-1$-2..@@-1   @r{3 fields in the row above, starting from 2 columns on the left}
2532 @@I..II        @r{between first and second hline, short for @code{@@I..@@II}}
2533 @end example
2535 @noindent Range references return a vector of values that can be fed
2536 into Calc vector functions.  Empty fields in ranges are normally suppressed,
2537 so that the vector contains only the non-empty fields.  For other options
2538 with the mode switches @samp{E}, @samp{N} and examples @pxref{Formula syntax
2539 for Calc}.
2541 @subsubheading Field coordinates in formulas
2542 @cindex field coordinates
2543 @cindex coordinates, of field
2544 @cindex row, of field coordinates
2545 @cindex column, of field coordinates
2547 One of the very first actions during evaluation of Calc formulas and Lisp
2548 formulas is to substitute @code{@@#} and @code{$#} in the formula with the
2549 row or column number of the field where the current result will go to.  The
2550 traditional Lisp formula equivalents are @code{org-table-current-dline} and
2551 @code{org-table-current-column}.  Examples:
2553 @table @code
2554 @item if(@@# % 2, $#, string(""))
2555 Insert column number on odd rows, set field to empty on even rows.
2556 @item $2 = '(identity remote(FOO, @@@@#$1))
2557 Copy text or values of each row of column 1 of the table named @code{FOO}
2558 into column 2 of the current table.
2559 @item @@3 = 2 * remote(FOO, @@1$$#)
2560 Insert the doubled value of each column of row 1 of the table named
2561 @code{FOO} into row 3 of the current table.
2562 @end table
2564 @noindent For the second/third example, the table named @code{FOO} must have
2565 at least as many rows/columns as the current table.  Note that this is
2566 inefficient@footnote{The computation time scales as O(N^2) because the table
2567 named @code{FOO} is parsed for each field to be read.} for large number of
2568 rows/columns.
2570 @subsubheading Named references
2571 @cindex named references
2572 @cindex references, named
2573 @cindex name, of column or field
2574 @cindex constants, in calculations
2575 @cindex #+CONSTANTS
2577 @vindex org-table-formula-constants
2578 @samp{$name} is interpreted as the name of a column, parameter or
2579 constant.  Constants are defined globally through the option
2580 @code{org-table-formula-constants}, and locally (for the file) through a
2581 line like
2583 @example
2584 #+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6
2585 @end example
2587 @noindent
2588 @vindex constants-unit-system
2589 @pindex constants.el
2590 Also properties (@pxref{Properties and columns}) can be used as
2591 constants in table formulas: for a property @samp{:Xyz:} use the name
2592 @samp{$PROP_Xyz}, and the property will be searched in the current
2593 outline entry and in the hierarchy above it.  If you have the
2594 @file{constants.el} package, it will also be used to resolve constants,
2595 including natural constants like @samp{$h} for Planck's constant, and
2596 units like @samp{$km} for kilometers@footnote{@file{constants.el} can
2597 supply the values of constants in two different unit systems, @code{SI}
2598 and @code{cgs}.  Which one is used depends on the value of the variable
2599 @code{constants-unit-system}.  You can use the @code{#+STARTUP} options
2600 @code{constSI} and @code{constcgs} to set this value for the current
2601 buffer.}.  Column names and parameters can be specified in special table
2602 lines.  These are described below, see @ref{Advanced features}.  All
2603 names must start with a letter, and further consist of letters and
2604 numbers.
2606 @subsubheading Remote references
2607 @cindex remote references
2608 @cindex references, remote
2609 @cindex references, to a different table
2610 @cindex name, of column or field
2611 @cindex constants, in calculations
2612 @cindex #+NAME, for table
2614 You may also reference constants, fields and ranges from a different table,
2615 either in the current file or even in a different file.  The syntax is
2617 @example
2618 remote(NAME-OR-ID,REF)
2619 @end example
2621 @noindent
2622 where NAME can be the name of a table in the current file as set by a
2623 @code{#+NAME: Name} line before the table.  It can also be the ID of an
2624 entry, even in a different file, and the reference then refers to the first
2625 table in that entry.  REF is an absolute field or range reference as
2626 described above for example @code{@@3$3} or @code{$somename}, valid in the
2627 referenced table.
2629 Indirection of NAME-OR-ID: When NAME-OR-ID has the format @code{@@ROW$COLUMN}
2630 it will be substituted with the name or ID found in this field of the current
2631 table.  For example @code{remote($1, @@>$2)} => @code{remote(year_2013,
2632 @@>$1)}.  The format @code{B3} is not supported because it can not be
2633 distinguished from a plain table name or ID.
2635 @node Formula syntax for Calc
2636 @subsection Formula syntax for Calc
2637 @cindex formula syntax, Calc
2638 @cindex syntax, of formulas
2640 A formula can be any algebraic expression understood by the Emacs @file{Calc}
2641 package.  Note that @file{calc} has the non-standard convention that @samp{/}
2642 has lower precedence than @samp{*}, so that @samp{a/b*c} is interpreted as
2643 @samp{a/(b*c)}.  Before evaluation by @code{calc-eval} (@pxref{Calling Calc
2644 from Your Programs, calc-eval, Calling Calc from Your Lisp Programs, calc,
2645 GNU Emacs Calc Manual}), variable substitution takes place according to the
2646 rules described above.
2647 @cindex vectors, in table calculations
2648 The range vectors can be directly fed into the Calc vector functions
2649 like @samp{vmean} and @samp{vsum}.
2651 @cindex format specifier
2652 @cindex mode, for @file{calc}
2653 @vindex org-calc-default-modes
2654 A formula can contain an optional mode string after a semicolon.  This
2655 string consists of flags to influence Calc and other modes during
2656 execution.  By default, Org uses the standard Calc modes (precision
2657 12, angular units degrees, fraction and symbolic modes off).  The display
2658 format, however, has been changed to @code{(float 8)} to keep tables
2659 compact.  The default settings can be configured using the option
2660 @code{org-calc-default-modes}.
2662 @noindent List of modes:
2664 @table @asis
2665 @item @code{p20}
2666 Set the internal Calc calculation precision to 20 digits.
2667 @item @code{n3}, @code{s3}, @code{e2}, @code{f4}
2668 Normal, scientific, engineering or fixed format of the result of Calc passed
2669 back to Org.  Calc formatting is unlimited in precision as long as the Calc
2670 calculation precision is greater.
2671 @item @code{D}, @code{R}
2672 Degree and radian angle modes of Calc.
2673 @item @code{F}, @code{S}
2674 Fraction and symbolic modes of Calc.
2675 @item @code{T}, @code{t}
2676 Duration computations in Calc or Lisp, @pxref{Durations and time values}.
2677 @item @code{E}
2678 If and how to consider empty fields.  Without @samp{E} empty fields in range
2679 references are suppressed so that the Calc vector or Lisp list contains only
2680 the non-empty fields.  With @samp{E} the empty fields are kept.  For empty
2681 fields in ranges or empty field references the value @samp{nan} (not a
2682 number) is used in Calc formulas and the empty string is used for Lisp
2683 formulas.  Add @samp{N} to use 0 instead for both formula types.  For the
2684 value of a field the mode @samp{N} has higher precedence than @samp{E}.
2685 @item @code{N}
2686 Interpret all fields as numbers, use 0 for non-numbers.  See the next section
2687 to see how this is essential for computations with Lisp formulas.  In Calc
2688 formulas it is used only occasionally because there number strings are
2689 already interpreted as numbers without @samp{N}.
2690 @item @code{L}
2691 Literal, for Lisp formulas only.  See the next section.
2692 @end table
2694 @noindent
2695 Unless you use large integer numbers or high-precision-calculation and
2696 -display for floating point numbers you may alternatively provide a
2697 @samp{printf} format specifier to reformat the Calc result after it has been
2698 passed back to Org instead of letting Calc already do the
2699 formatting@footnote{The @samp{printf} reformatting is limited in precision
2700 because the value passed to it is converted into an @samp{integer} or
2701 @samp{double}.  The @samp{integer} is limited in size by truncating the
2702 signed value to 32 bits.  The @samp{double} is limited in precision to 64
2703 bits overall which leaves approximately 16 significant decimal digits.}.  A
2704 few examples:
2706 @example
2707 $1+$2                @r{Sum of first and second field}
2708 $1+$2;%.2f           @r{Same, format result to two decimals}
2709 exp($2)+exp($1)      @r{Math functions can be used}
2710 $0;%.1f              @r{Reformat current cell to 1 decimal}
2711 ($3-32)*5/9          @r{Degrees F -> C conversion}
2712 $c/$1/$cm            @r{Hz -> cm conversion, using @file{constants.el}}
2713 tan($1);Dp3s1        @r{Compute in degrees, precision 3, display SCI 1}
2714 sin($1);Dp3%.1e      @r{Same, but use printf specifier for display}
2715 taylor($3,x=7,2)     @r{Taylor series of $3, at x=7, second degree}
2716 @end example
2718 Calc also contains a complete set of logical operations, (@pxref{Logical
2719 Operations, , Logical Operations, calc, GNU Emacs Calc Manual}).  For example
2721 @table @code
2722 @item if($1 < 20, teen, string(""))
2723 "teen" if age $1 is less than 20, else the Org table result field is set to
2724 empty with the empty string.
2725 @item if("$1" == "nan" || "$2" == "nan", string(""), $1 + $2); E f-1
2726 Sum of the first two columns.  When at least one of the input fields is empty
2727 the Org table result field is set to empty.  @samp{E} is required to not
2728 convert empty fields to 0.  @samp{f-1} is an optional Calc format string
2729 similar to @samp{%.1f} but leaves empty results empty.
2730 @item if(typeof(vmean($1..$7)) == 12, string(""), vmean($1..$7); E
2731 Mean value of a range unless there is any empty field.  Every field in the
2732 range that is empty is replaced by @samp{nan} which lets @samp{vmean} result
2733 in @samp{nan}.  Then @samp{typeof == 12} detects the @samp{nan} from
2734 @samp{vmean} and the Org table result field is set to empty.  Use this when
2735 the sample set is expected to never have missing values.
2736 @item if("$1..$7" == "[]", string(""), vmean($1..$7))
2737 Mean value of a range with empty fields skipped.  Every field in the range
2738 that is empty is skipped.  When all fields in the range are empty the mean
2739 value is not defined and the Org table result field is set to empty.  Use
2740 this when the sample set can have a variable size.
2741 @item vmean($1..$7); EN
2742 To complete the example before: Mean value of a range with empty fields
2743 counting as samples with value 0.  Use this only when incomplete sample sets
2744 should be padded with 0 to the full size.
2745 @end table
2747 You can add your own Calc functions defined in Emacs Lisp with @code{defmath}
2748 and use them in formula syntax for Calc.
2750 @node Formula syntax for Lisp
2751 @subsection Emacs Lisp forms as formulas
2752 @cindex Lisp forms, as table formulas
2754 It is also possible to write a formula in Emacs Lisp.  This can be useful
2755 for string manipulation and control structures, if Calc's functionality is
2756 not enough.
2758 If a formula starts with an apostrophe followed by an opening parenthesis,
2759 then it is evaluated as a Lisp form.  The evaluation should return either a
2760 string or a number.  Just as with @file{calc} formulas, you can specify modes
2761 and a printf format after a semicolon.
2763 With Emacs Lisp forms, you need to be conscious about the way field
2764 references are interpolated into the form.  By default, a reference will be
2765 interpolated as a Lisp string (in double-quotes) containing the field.  If
2766 you provide the @samp{N} mode switch, all referenced elements will be numbers
2767 (non-number fields will be zero) and interpolated as Lisp numbers, without
2768 quotes.  If you provide the @samp{L} flag, all fields will be interpolated
2769 literally, without quotes.  I.e., if you want a reference to be interpreted
2770 as a string by the Lisp form, enclose the reference operator itself in
2771 double-quotes, like @code{"$3"}.  Ranges are inserted as space-separated
2772 fields, so you can embed them in list or vector syntax.
2774 Here are a few examples---note how the @samp{N} mode is used when we do
2775 computations in Lisp:
2777 @table @code
2778 @item '(concat (substring $1 1 2) (substring $1 0 1) (substring $1 2))
2779 Swap the first two characters of the content of column 1.
2780 @item '(+ $1 $2);N
2781 Add columns 1 and 2, equivalent to Calc's @code{$1+$2}.
2782 @item '(apply '+ '($1..$4));N
2783 Compute the sum of columns 1 to 4, like Calc's @code{vsum($1..$4)}.
2784 @end table
2786 @node Durations and time values
2787 @subsection Durations and time values
2788 @cindex Duration, computing
2789 @cindex Time, computing
2790 @vindex org-table-duration-custom-format
2792 If you want to compute time values use the @code{T} flag, either in Calc
2793 formulas or Elisp formulas:
2795 @example
2796 @group
2797   |  Task 1 |   Task 2 |    Total |
2798   |---------+----------+----------|
2799   |    2:12 |     1:47 | 03:59:00 |
2800   | 3:02:20 | -2:07:00 |     0.92 |
2801   #+TBLFM: @@2$3=$1+$2;T::@@3$3=$1+$2;t
2802 @end group
2803 @end example
2805 Input duration values must be of the form @code{HH:MM[:SS]}, where seconds
2806 are optional.  With the @code{T} flag, computed durations will be displayed
2807 as @code{HH:MM:SS} (see the first formula above).  With the @code{t} flag,
2808 computed durations will be displayed according to the value of the option
2809 @code{org-table-duration-custom-format}, which defaults to @code{'hours} and
2810 will display the result as a fraction of hours (see the second formula in the
2811 example above).
2813 Negative duration values can be manipulated as well, and integers will be
2814 considered as seconds in addition and subtraction.
2816 @node Field and range formulas
2817 @subsection Field and range formulas
2818 @cindex field formula
2819 @cindex range formula
2820 @cindex formula, for individual table field
2821 @cindex formula, for range of fields
2823 To assign a formula to a particular field, type it directly into the field,
2824 preceded by @samp{:=}, for example @samp{:=vsum(@@II..III)}.  When you press
2825 @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the field,
2826 the formula will be stored as the formula for this field, evaluated, and the
2827 current field will be replaced with the result.
2829 @cindex #+TBLFM
2830 Formulas are stored in a special line starting with @samp{#+TBLFM:} directly
2831 below the table.  If you type the equation in the 4th field of the 3rd data
2832 line in the table, the formula will look like @samp{@@3$4=$1+$2}.  When
2833 inserting/deleting/swapping columns and rows with the appropriate commands,
2834 @i{absolute references} (but not relative ones) in stored formulas are
2835 modified in order to still reference the same field.  To avoid this, in
2836 particular in range references, anchor ranges at the table borders (using
2837 @code{@@<}, @code{@@>}, @code{$<}, @code{$>}), or at hlines using the
2838 @code{@@I} notation.  Automatic adaptation of field references does of course
2839 not happen if you edit the table structure with normal editing
2840 commands---then you must fix the equations yourself.
2842 Instead of typing an equation into the field, you may also use the following
2843 command
2845 @table @kbd
2846 @orgcmd{C-u C-c =,org-table-eval-formula}
2847 Install a new formula for the current field.  The command prompts for a
2848 formula with default taken from the @samp{#+TBLFM:} line, applies
2849 it to the current field, and stores it.
2850 @end table
2852 The left-hand side of a formula can also be a special expression in order to
2853 assign the formula to a number of different fields.  There is no keyboard
2854 shortcut to enter such range formulas.  To add them, use the formula editor
2855 (@pxref{Editing and debugging formulas}) or edit the @code{#+TBLFM:} line
2856 directly.
2858 @table @code
2859 @item $2=
2860 Column formula, valid for the entire column.  This is so common that Org
2861 treats these formulas in a special way, see @ref{Column formulas}.
2862 @item @@3=
2863 Row formula, applies to all fields in the specified row.  @code{@@>=} means
2864 the last row.
2865 @item @@1$2..@@4$3=
2866 Range formula, applies to all fields in the given rectangular range.  This
2867 can also be used to assign a formula to some but not all fields in a row.
2868 @item $name=
2869 Named field, see @ref{Advanced features}.
2870 @end table
2872 @node Column formulas
2873 @subsection Column formulas
2874 @cindex column formula
2875 @cindex formula, for table column
2877 When you assign a formula to a simple column reference like @code{$3=}, the
2878 same formula will be used in all fields of that column, with the following
2879 very convenient exceptions: (i) If the table contains horizontal separator
2880 hlines with rows above and below, everything before the first such hline is
2881 considered part of the table @emph{header} and will not be modified by column
2882 formulas.  Therefore a header is mandatory when you use column formulas and
2883 want to add hlines to group rows, like for example to separate a total row at
2884 the bottom from the summand rows above.  (ii) Fields that already get a value
2885 from a field/range formula will be left alone by column formulas.  These
2886 conditions make column formulas very easy to use.
2888 To assign a formula to a column, type it directly into any field in the
2889 column, preceded by an equal sign, like @samp{=$1+$2}.  When you press
2890 @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the field,
2891 the formula will be stored as the formula for the current column, evaluated
2892 and the current field replaced with the result.  If the field contains only
2893 @samp{=}, the previously stored formula for this column is used.  For each
2894 column, Org will only remember the most recently used formula.  In the
2895 @samp{#+TBLFM:} line, column formulas will look like @samp{$4=$1+$2}.  The
2896 left-hand side of a column formula cannot be the name of column, it must be
2897 the numeric column reference or @code{$>}.
2899 Instead of typing an equation into the field, you may also use the
2900 following command:
2902 @table @kbd
2903 @orgcmd{C-c =,org-table-eval-formula}
2904 Install a new formula for the current column and replace current field with
2905 the result of the formula.  The command prompts for a formula, with default
2906 taken from the @samp{#+TBLFM} line, applies it to the current field and
2907 stores it.  With a numeric prefix argument(e.g., @kbd{C-5 C-c =}) the command
2908 will apply it to that many consecutive fields in the current column.
2909 @end table
2911 @node Lookup functions
2912 @subsection Lookup functions
2913 @cindex lookup functions in tables
2914 @cindex table lookup functions
2916 Org has three predefined Emacs Lisp functions for lookups in tables.
2917 @table @code
2918 @item (org-lookup-first VAL S-LIST R-LIST &optional PREDICATE)
2919 @findex org-lookup-first
2920 Searches for the first element @code{S} in list @code{S-LIST} for which
2921 @lisp
2922 (PREDICATE VAL S)
2923 @end lisp
2924 is @code{t}; returns the value from the corresponding position in list
2925 @code{R-LIST}.  The default @code{PREDICATE} is @code{equal}.  Note that the
2926 parameters @code{VAL} and @code{S} are passed to @code{PREDICATE} in the same
2927 order as the corresponding parameters are in the call to
2928 @code{org-lookup-first}, where @code{VAL} precedes @code{S-LIST}.  If
2929 @code{R-LIST} is @code{nil}, the matching element @code{S} of @code{S-LIST}
2930 is returned.
2931 @item (org-lookup-last VAL S-LIST R-LIST &optional PREDICATE)
2932 @findex org-lookup-last
2933 Similar to @code{org-lookup-first} above, but searches for the @i{last}
2934 element for which @code{PREDICATE} is @code{t}.
2935 @item (org-lookup-all VAL S-LIST R-LIST &optional PREDICATE)
2936 @findex org-lookup-all
2937 Similar to @code{org-lookup-first}, but searches for @i{all} elements for
2938 which @code{PREDICATE} is @code{t}, and returns @i{all} corresponding
2939 values.  This function can not be used by itself in a formula, because it
2940 returns a list of values.  However, powerful lookups can be built when this
2941 function is combined with other Emacs Lisp functions.
2942 @end table
2944 If the ranges used in these functions contain empty fields, the @code{E} mode
2945 for the formula should usually be specified: otherwise empty fields will not be
2946 included in @code{S-LIST} and/or @code{R-LIST} which can, for example, result
2947 in an incorrect mapping from an element of @code{S-LIST} to the corresponding
2948 element of @code{R-LIST}.
2950 These three functions can be used to implement associative arrays, count
2951 matching cells, rank results, group data etc.  For practical examples
2952 see @uref{http://orgmode.org/worg/org-tutorials/org-lookups.html, this
2953 tutorial on Worg}.
2955 @node Editing and debugging formulas
2956 @subsection Editing and debugging formulas
2957 @cindex formula editing
2958 @cindex editing, of table formulas
2960 @vindex org-table-use-standard-references
2961 You can edit individual formulas in the minibuffer or directly in the field.
2962 Org can also prepare a special buffer with all active formulas of a table.
2963 When offering a formula for editing, Org converts references to the standard
2964 format (like @code{B3} or @code{D&}) if possible.  If you prefer to only work
2965 with the internal format (like @code{@@3$2} or @code{$4}), configure the
2966 option @code{org-table-use-standard-references}.
2968 @table @kbd
2969 @orgcmdkkc{C-c =,C-u C-c =,org-table-eval-formula}
2970 Edit the formula associated with the current column/field in the
2971 minibuffer.  See @ref{Column formulas}, and @ref{Field and range formulas}.
2972 @orgcmd{C-u C-u C-c =,org-table-eval-formula}
2973 Re-insert the active formula (either a
2974 field formula, or a column formula) into the current field, so that you
2975 can edit it directly in the field.  The advantage over editing in the
2976 minibuffer is that you can use the command @kbd{C-c ?}.
2977 @orgcmd{C-c ?,org-table-field-info}
2978 While editing a formula in a table field, highlight the field(s)
2979 referenced by the reference at the cursor position in the formula.
2980 @kindex C-c @}
2981 @findex org-table-toggle-coordinate-overlays
2982 @item C-c @}
2983 Toggle the display of row and column numbers for a table, using overlays
2984 (@command{org-table-toggle-coordinate-overlays}).  These are updated each
2985 time the table is aligned; you can force it with @kbd{C-c C-c}.
2986 @kindex C-c @{
2987 @findex org-table-toggle-formula-debugger
2988 @item C-c @{
2989 Toggle the formula debugger on and off
2990 (@command{org-table-toggle-formula-debugger}).  See below.
2991 @orgcmd{C-c ',org-table-edit-formulas}
2992 Edit all formulas for the current table in a special buffer, where the
2993 formulas will be displayed one per line.  If the current field has an
2994 active formula, the cursor in the formula editor will mark it.
2995 While inside the special buffer, Org will automatically highlight
2996 any field or range reference at the cursor position.  You may edit,
2997 remove and add formulas, and use the following commands:
2999 @table @kbd
3000 @orgcmdkkc{C-c C-c,C-x C-s,org-table-fedit-finish}
3001 Exit the formula editor and store the modified formulas.  With @kbd{C-u}
3002 prefix, also apply the new formulas to the entire table.
3003 @orgcmd{C-c C-q,org-table-fedit-abort}
3004 Exit the formula editor without installing changes.
3005 @orgcmd{C-c C-r,org-table-fedit-toggle-ref-type}
3006 Toggle all references in the formula editor between standard (like
3007 @code{B3}) and internal (like @code{@@3$2}).
3008 @orgcmd{@key{TAB},org-table-fedit-lisp-indent}
3009 Pretty-print or indent Lisp formula at point.  When in a line containing
3010 a Lisp formula, format the formula according to Emacs Lisp rules.
3011 Another @key{TAB} collapses the formula back again.  In the open
3012 formula, @key{TAB} re-indents just like in Emacs Lisp mode.
3013 @orgcmd{M-@key{TAB},lisp-complete-symbol}
3014 Complete Lisp symbols, just like in Emacs Lisp mode.@footnote{Many desktops
3015 intercept @kbd{M-@key{TAB}} to switch windows.  Use @kbd{C-M-i} or
3016 @kbd{@key{ESC} @key{TAB}} instead for completion (@pxref{Completion}).}
3017 @kindex S-@key{up}
3018 @kindex S-@key{down}
3019 @kindex S-@key{left}
3020 @kindex S-@key{right}
3021 @findex org-table-fedit-ref-up
3022 @findex org-table-fedit-ref-down
3023 @findex org-table-fedit-ref-left
3024 @findex org-table-fedit-ref-right
3025 @item S-@key{up}/@key{down}/@key{left}/@key{right}
3026 Shift the reference at point.  For example, if the reference is
3027 @code{B3} and you press @kbd{S-@key{right}}, it will become @code{C3}.
3028 This also works for relative references and for hline references.
3029 @orgcmdkkcc{M-S-@key{up},M-S-@key{down},org-table-fedit-line-up,org-table-fedit-line-down}
3030 Move the test line for column formulas in the Org buffer up and
3031 down.
3032 @orgcmdkkcc{M-@key{up},M-@key{down},org-table-fedit-scroll-down,org-table-fedit-scroll-up}
3033 Scroll the window displaying the table.
3034 @kindex C-c @}
3035 @findex org-table-toggle-coordinate-overlays
3036 @item C-c @}
3037 Turn the coordinate grid in the table on and off.
3038 @end table
3039 @end table
3041 Making a table field blank does not remove the formula associated with
3042 the field, because that is stored in a different line (the @samp{#+TBLFM}
3043 line)---during the next recalculation the field will be filled again.
3044 To remove a formula from a field, you have to give an empty reply when
3045 prompted for the formula, or to edit the @samp{#+TBLFM} line.
3047 @kindex C-c C-c
3048 You may edit the @samp{#+TBLFM} directly and re-apply the changed
3049 equations with @kbd{C-c C-c} in that line or with the normal
3050 recalculation commands in the table.
3052 @anchor{Using multiple #+TBLFM lines}
3053 @subsubheading Using multiple #+TBLFM lines
3054 @cindex #+TBLFM line, multiple
3055 @cindex #+TBLFM
3056 @cindex #+TBLFM, switching
3057 @kindex C-c C-c
3059 You may apply the formula temporarily.  This is useful when you
3060 switch the formula.  Place multiple @samp{#+TBLFM} lines right
3061 after the table, and then press @kbd{C-c C-c} on the formula to
3062 apply.  Here is an example:
3064 @example
3065 | x | y |
3066 |---+---|
3067 | 1 |   |
3068 | 2 |   |
3069 #+TBLFM: $2=$1*1
3070 #+TBLFM: $2=$1*2
3071 @end example
3073 @noindent
3074 Pressing @kbd{C-c C-c} in the line of @samp{#+TBLFM: $2=$1*2} yields:
3076 @example
3077 | x | y |
3078 |---+---|
3079 | 1 | 2 |
3080 | 2 | 4 |
3081 #+TBLFM: $2=$1*1
3082 #+TBLFM: $2=$1*2
3083 @end example
3085 @noindent
3086 Note: If you recalculate this table (with @kbd{C-u C-c *}, for example), you
3087 will get the following result of applying only the first @samp{#+TBLFM} line.
3089 @example
3090 | x | y |
3091 |---+---|
3092 | 1 | 1 |
3093 | 2 | 2 |
3094 #+TBLFM: $2=$1*1
3095 #+TBLFM: $2=$1*2
3096 @end example
3098 @subsubheading Debugging formulas
3099 @cindex formula debugging
3100 @cindex debugging, of table formulas
3101 When the evaluation of a formula leads to an error, the field content
3102 becomes the string @samp{#ERROR}.  If you would like see what is going
3103 on during variable substitution and calculation in order to find a bug,
3104 turn on formula debugging in the @code{Tbl} menu and repeat the
3105 calculation, for example by pressing @kbd{C-u C-u C-c = @key{RET}} in a
3106 field.  Detailed information will be displayed.
3108 @node Updating the table
3109 @subsection Updating the table
3110 @cindex recomputing table fields
3111 @cindex updating, table
3113 Recalculation of a table is normally not automatic, but needs to be
3114 triggered by a command.  See @ref{Advanced features}, for a way to make
3115 recalculation at least semi-automatic.
3117 In order to recalculate a line of a table or the entire table, use the
3118 following commands:
3120 @table @kbd
3121 @orgcmd{C-c *,org-table-recalculate}
3122 Recalculate the current row by first applying the stored column formulas
3123 from left to right, and all field/range formulas in the current row.
3125 @kindex C-u C-c *
3126 @item C-u C-c *
3127 @kindex C-u C-c C-c
3128 @itemx C-u C-c C-c
3129 Recompute the entire table, line by line.  Any lines before the first
3130 hline are left alone, assuming that these are part of the table header.
3132 @orgcmdkkc{C-u C-u C-c *,C-u C-u C-c C-c,org-table-iterate}
3133 Iterate the table by recomputing it until no further changes occur.
3134 This may be necessary if some computed fields use the value of other
3135 fields that are computed @i{later} in the calculation sequence.
3136 @item M-x org-table-recalculate-buffer-tables RET
3137 @findex org-table-recalculate-buffer-tables
3138 Recompute all tables in the current buffer.
3139 @item M-x org-table-iterate-buffer-tables RET
3140 @findex org-table-iterate-buffer-tables
3141 Iterate all tables in the current buffer, in order to converge table-to-table
3142 dependencies.
3143 @end table
3145 @node Advanced features
3146 @subsection Advanced features
3148 If you want the recalculation of fields to happen automatically, or if you
3149 want to be able to assign @i{names}@footnote{Such names must start by an
3150 alphabetic character and use only alphanumeric/underscore characters.} to
3151 fields and columns, you need to reserve the first column of the table for
3152 special marking characters.
3154 @table @kbd
3155 @orgcmd{C-#,org-table-rotate-recalc-marks}
3156 Rotate the calculation mark in first column through the states @samp{ },
3157 @samp{#}, @samp{*}, @samp{!}, @samp{$}.  When there is an active region,
3158 change all marks in the region.
3159 @end table
3161 Here is an example of a table that collects exam results of students and
3162 makes use of these features:
3164 @example
3165 @group
3166 |---+---------+--------+--------+--------+-------+------|
3167 |   | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
3168 |---+---------+--------+--------+--------+-------+------|
3169 | ! |         |     P1 |     P2 |     P3 |   Tot |      |
3170 | # | Maximum |     10 |     15 |     25 |    50 | 10.0 |
3171 | ^ |         |     m1 |     m2 |     m3 |    mt |      |
3172 |---+---------+--------+--------+--------+-------+------|
3173 | # | Peter   |     10 |      8 |     23 |    41 |  8.2 |
3174 | # | Sam     |      2 |      4 |      3 |     9 |  1.8 |
3175 |---+---------+--------+--------+--------+-------+------|
3176 |   | Average |        |        |        |  25.0 |      |
3177 | ^ |         |        |        |        |    at |      |
3178 | $ | max=50  |        |        |        |       |      |
3179 |---+---------+--------+--------+--------+-------+------|
3180 #+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(@@-II..@@-I);%.1f
3181 @end group
3182 @end example
3184 @noindent @b{Important}: please note that for these special tables,
3185 recalculating the table with @kbd{C-u C-c *} will only affect rows that
3186 are marked @samp{#} or @samp{*}, and fields that have a formula assigned
3187 to the field itself.  The column formulas are not applied in rows with
3188 empty first field.
3190 @cindex marking characters, tables
3191 The marking characters have the following meaning:
3193 @table @samp
3194 @item !
3195 The fields in this line define names for the columns, so that you may
3196 refer to a column as @samp{$Tot} instead of @samp{$6}.
3197 @item ^
3198 This row defines names for the fields @emph{above} the row.  With such
3199 a definition, any formula in the table may use @samp{$m1} to refer to
3200 the value @samp{10}.  Also, if you assign a formula to a names field, it
3201 will be stored as @samp{$name=...}.
3202 @item _
3203 Similar to @samp{^}, but defines names for the fields in the row
3204 @emph{below}.
3205 @item $
3206 Fields in this row can define @emph{parameters} for formulas.  For
3207 example, if a field in a @samp{$} row contains @samp{max=50}, then
3208 formulas in this table can refer to the value 50 using @samp{$max}.
3209 Parameters work exactly like constants, only that they can be defined on
3210 a per-table basis.
3211 @item #
3212 Fields in this row are automatically recalculated when pressing
3213 @key{TAB} or @key{RET} or @kbd{S-@key{TAB}} in this row.  Also, this row
3214 is selected for a global recalculation with @kbd{C-u C-c *}.  Unmarked
3215 lines will be left alone by this command.
3216 @item *
3217 Selects this line for global recalculation with @kbd{C-u C-c *}, but
3218 not for automatic recalculation.  Use this when automatic
3219 recalculation slows down editing too much.
3220 @item @w{ }
3221 Unmarked lines are exempt from recalculation with @kbd{C-u C-c *}.
3222 All lines that should be recalculated should be marked with @samp{#}
3223 or @samp{*}.
3224 @item /
3225 Do not export this line.  Useful for lines that contain the narrowing
3226 @samp{<N>} markers or column group markers.
3227 @end table
3229 Finally, just to whet your appetite for what can be done with the
3230 fantastic @file{calc.el} package, here is a table that computes the Taylor
3231 series of degree @code{n} at location @code{x} for a couple of
3232 functions.
3234 @example
3235 @group
3236 |---+-------------+---+-----+--------------------------------------|
3237 |   | Func        | n | x   | Result                               |
3238 |---+-------------+---+-----+--------------------------------------|
3239 | # | exp(x)      | 1 | x   | 1 + x                                |
3240 | # | exp(x)      | 2 | x   | 1 + x + x^2 / 2                      |
3241 | # | exp(x)      | 3 | x   | 1 + x + x^2 / 2 + x^3 / 6            |
3242 | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
3243 | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2    |
3244 | * | tan(x)      | 3 | x   | 0.0175 x + 1.77e-6 x^3               |
3245 |---+-------------+---+-----+--------------------------------------|
3246 #+TBLFM: $5=taylor($2,$4,$3);n3
3247 @end group
3248 @end example
3250 @node Org-Plot
3251 @section Org-Plot
3252 @cindex graph, in tables
3253 @cindex plot tables using Gnuplot
3254 @cindex #+PLOT
3256 Org-Plot can produce graphs of information stored in org tables, either
3257 graphically or in ASCII-art.
3259 @subheading Graphical plots using @file{Gnuplot}
3261 Org-Plot produces 2D and 3D graphs using @file{Gnuplot}
3262 @uref{http://www.gnuplot.info/} and @file{gnuplot-mode}
3263 @uref{http://xafs.org/BruceRavel/GnuplotMode}.  To see this in action, ensure
3264 that you have both Gnuplot and Gnuplot mode installed on your system, then
3265 call @kbd{C-c " g} or @kbd{M-x org-plot/gnuplot @key{RET}} on the following
3266 table.
3268 @example
3269 @group
3270 #+PLOT: title:"Citas" ind:1 deps:(3) type:2d with:histograms set:"yrange [0:]"
3271 | Sede      | Max cites | H-index |
3272 |-----------+-----------+---------|
3273 | Chile     |    257.72 |   21.39 |
3274 | Leeds     |    165.77 |   19.68 |
3275 | Sao Paolo |     71.00 |   11.50 |
3276 | Stockholm |    134.19 |   14.33 |
3277 | Morelia   |    257.56 |   17.67 |
3278 @end group
3279 @end example
3281 Notice that Org Plot is smart enough to apply the table's headers as labels.
3282 Further control over the labels, type, content, and appearance of plots can
3283 be exercised through the @code{#+PLOT:} lines preceding a table.  See below
3284 for a complete list of Org-plot options.  The @code{#+PLOT:} lines are
3285 optional.  For more information and examples see the Org-plot tutorial at
3286 @uref{http://orgmode.org/worg/org-tutorials/org-plot.html}.
3288 @subsubheading Plot Options
3290 @table @code
3291 @item set
3292 Specify any @command{gnuplot} option to be set when graphing.
3294 @item title
3295 Specify the title of the plot.
3297 @item ind
3298 Specify which column of the table to use as the @code{x} axis.
3300 @item deps
3301 Specify the columns to graph as a Lisp style list, surrounded by parentheses
3302 and separated by spaces for example @code{dep:(3 4)} to graph the third and
3303 fourth columns (defaults to graphing all other columns aside from the @code{ind}
3304 column).
3306 @item type
3307 Specify whether the plot will be @code{2d}, @code{3d}, or @code{grid}.
3309 @item with
3310 Specify a @code{with} option to be inserted for every col being plotted
3311 (e.g., @code{lines}, @code{points}, @code{boxes}, @code{impulses}, etc...).
3312 Defaults to @code{lines}.
3314 @item file
3315 If you want to plot to a file, specify @code{"@var{path/to/desired/output-file}"}.
3317 @item labels
3318 List of labels to be used for the @code{deps} (defaults to the column headers
3319 if they exist).
3321 @item line
3322 Specify an entire line to be inserted in the Gnuplot script.
3324 @item map
3325 When plotting @code{3d} or @code{grid} types, set this to @code{t} to graph a
3326 flat mapping rather than a @code{3d} slope.
3328 @item timefmt
3329 Specify format of Org mode timestamps as they will be parsed by Gnuplot.
3330 Defaults to @samp{%Y-%m-%d-%H:%M:%S}.
3332 @item script
3333 If you want total control, you can specify a script file (place the file name
3334 between double-quotes) which will be used to plot.  Before plotting, every
3335 instance of @code{$datafile} in the specified script will be replaced with
3336 the path to the generated data file.  Note: even if you set this option, you
3337 may still want to specify the plot type, as that can impact the content of
3338 the data file.
3339 @end table
3341 @subheading ASCII bar plots
3343 While the cursor is on a column, typing @kbd{C-c " a} or
3344 @kbd{M-x orgtbl-ascii-plot @key{RET}} create a new column containing an
3345 ASCII-art bars plot.  The plot is implemented through a regular column
3346 formula.  When the source column changes, the bar plot may be updated by
3347 refreshing the table, for example typing @kbd{C-u C-c *}.
3349 @example
3350 @group
3351 | Sede          | Max cites |              |
3352 |---------------+-----------+--------------|
3353 | Chile         |    257.72 | WWWWWWWWWWWW |
3354 | Leeds         |    165.77 | WWWWWWWh     |
3355 | Sao Paolo     |     71.00 | WWW;         |
3356 | Stockholm     |    134.19 | WWWWWW:      |
3357 | Morelia       |    257.56 | WWWWWWWWWWWH |
3358 | Rochefourchat |      0.00 |              |
3359 #+TBLFM: $3='(orgtbl-ascii-draw $2 0.0 257.72 12)
3360 @end group
3361 @end example
3363 The formula is an elisp call:
3364 @lisp
3365 (orgtbl-ascii-draw COLUMN MIN MAX WIDTH)
3366 @end lisp
3368 @table @code
3369 @item COLUMN
3370   is a reference to the source column.
3372 @item MIN MAX
3373   are the minimal and maximal values displayed.  Sources values
3374   outside this range are displayed as @samp{too small}
3375   or @samp{too large}.
3377 @item WIDTH
3378   is the width in characters of the bar-plot.  It defaults to @samp{12}.
3380 @end table
3382 @node Hyperlinks
3383 @chapter Hyperlinks
3384 @cindex hyperlinks
3386 Like HTML, Org provides links inside a file, external links to
3387 other files, Usenet articles, emails, and much more.
3389 @menu
3390 * Link format::                 How links in Org are formatted
3391 * Internal links::              Links to other places in the current file
3392 * External links::              URL-like links to the world
3393 * Handling links::              Creating, inserting and following
3394 * Using links outside Org::     Linking from my C source code?
3395 * Link abbreviations::          Shortcuts for writing complex links
3396 * Search options::              Linking to a specific location
3397 * Custom searches::             When the default search is not enough
3398 @end menu
3400 @node Link format
3401 @section Link format
3402 @cindex link format
3403 @cindex format, of links
3405 Org will recognize plain URL-like links and activate them as
3406 clickable links.  The general link format, however, looks like this:
3408 @example
3409 [[link][description]]       @r{or alternatively}           [[link]]
3410 @end example
3412 @noindent
3413 Once a link in the buffer is complete (all brackets present), Org
3414 will change the display so that @samp{description} is displayed instead
3415 of @samp{[[link][description]]} and @samp{link} is displayed instead of
3416 @samp{[[link]]}.  Links will be highlighted in the face @code{org-link},
3417 which by default is an underlined face.  You can directly edit the
3418 visible part of a link.  Note that this can be either the @samp{link}
3419 part (if there is no description) or the @samp{description} part.  To
3420 edit also the invisible @samp{link} part, use @kbd{C-c C-l} with the
3421 cursor on the link.
3423 If you place the cursor at the beginning or just behind the end of the
3424 displayed text and press @key{BACKSPACE}, you will remove the
3425 (invisible) bracket at that location.  This makes the link incomplete
3426 and the internals are again displayed as plain text.  Inserting the
3427 missing bracket hides the link internals again.  To show the
3428 internal structure of all links, use the menu entry
3429 @code{Org->Hyperlinks->Literal links}.
3431 @node Internal links
3432 @section Internal links
3433 @cindex internal links
3434 @cindex links, internal
3435 @cindex targets, for links
3437 @cindex property, CUSTOM_ID
3438 If the link does not look like a URL, it is considered to be internal in the
3439 current file.  The most important case is a link like
3440 @samp{[[#my-custom-id]]} which will link to the entry with the
3441 @code{CUSTOM_ID} property @samp{my-custom-id}.  You are responsible yourself
3442 to make sure these custom IDs are unique in a file.
3444 Links such as @samp{[[My Target]]} or @samp{[[My Target][Find my target]]}
3445 lead to a text search in the current file.
3447 The link can be followed with @kbd{C-c C-o} when the cursor is on the link,
3448 or with a mouse click (@pxref{Handling links}).  Links to custom IDs will
3449 point to the corresponding headline.  The preferred match for a text link is
3450 a @i{dedicated target}: the same string in double angular brackets, like
3451 @samp{<<My Target>>}.
3453 @cindex #+NAME
3454 If no dedicated target exists, the link will then try to match the exact name
3455 of an element within the buffer.  Naming is done with the @code{#+NAME}
3456 keyword, which has to be put in the line before the element it refers to, as
3457 in the following example
3459 @example
3460 #+NAME: My Target
3461 | a  | table      |
3462 |----+------------|
3463 | of | four cells |
3464 @end example
3466 If none of the above succeeds, Org will search for a headline that is exactly
3467 the link text but may also include a TODO keyword and tags@footnote{To insert
3468 a link targeting a headline, in-buffer completion can be used.  Just type
3469 a star followed by a few optional letters into the buffer and press
3470 @kbd{M-@key{TAB}}.  All headlines in the current buffer will be offered as
3471 completions.}.
3473 During export, internal links will be used to mark objects and assign them
3474 a number.  Marked objects will then be referenced by links pointing to them.
3475 In particular, links without a description will appear as the number assigned
3476 to the marked object@footnote{When targeting a @code{#+NAME} keyword,
3477 @code{#+CAPTION} keyword is mandatory in order to get proper numbering
3478 (@pxref{Images and tables}).}.  In the following excerpt from an Org buffer
3480 @example
3481 - one item
3482 - <<target>>another item
3483 Here we refer to item [[target]].
3484 @end example
3486 @noindent
3487 The last sentence will appear as @samp{Here we refer to item 2} when
3488 exported.
3490 In non-Org files, the search will look for the words in the link text.  In
3491 the above example the search would be for @samp{my target}.
3493 Following a link pushes a mark onto Org's own mark ring.  You can
3494 return to the previous position with @kbd{C-c &}.  Using this command
3495 several times in direct succession goes back to positions recorded
3496 earlier.
3498 @menu
3499 * Radio targets::               Make targets trigger links in plain text
3500 @end menu
3502 @node Radio targets
3503 @subsection Radio targets
3504 @cindex radio targets
3505 @cindex targets, radio
3506 @cindex links, radio targets
3508 Org can automatically turn any occurrences of certain target names
3509 in normal text into a link.  So without explicitly creating a link, the
3510 text connects to the target radioing its position.  Radio targets are
3511 enclosed by triple angular brackets.  For example, a target @samp{<<<My
3512 Target>>>} causes each occurrence of @samp{my target} in normal text to
3513 become activated as a link.  The Org file is scanned automatically
3514 for radio targets only when the file is first loaded into Emacs.  To
3515 update the target list during editing, press @kbd{C-c C-c} with the
3516 cursor on or at a target.
3518 @node External links
3519 @section External links
3520 @cindex links, external
3521 @cindex external links
3522 @cindex Gnus links
3523 @cindex BBDB links
3524 @cindex IRC links
3525 @cindex URL links
3526 @cindex file links
3527 @cindex RMAIL links
3528 @cindex MH-E links
3529 @cindex USENET links
3530 @cindex SHELL links
3531 @cindex Info links
3532 @cindex Elisp links
3534 Org supports links to files, websites, Usenet and email messages, BBDB
3535 database entries and links to both IRC conversations and their logs.
3536 External links are URL-like locators.  They start with a short identifying
3537 string followed by a colon.  There can be no space after the colon.  The
3538 following list shows examples for each link type.
3540 @example
3541 http://www.astro.uva.nl/~dominik             @r{on the web}
3542 doi:10.1000/182                              @r{DOI for an electronic resource}
3543 file:/home/dominik/images/jupiter.jpg        @r{file, absolute path}
3544 /home/dominik/images/jupiter.jpg             @r{same as above}
3545 file:papers/last.pdf                         @r{file, relative path}
3546 ./papers/last.pdf                            @r{same as above}
3547 file:/ssh:myself@@some.where:papers/last.pdf  @r{file, path on remote machine}
3548 /ssh:myself@@some.where:papers/last.pdf       @r{same as above}
3549 file:sometextfile::NNN                       @r{file, jump to line number}
3550 file:projects.org                            @r{another Org file}
3551 file:projects.org::some words                @r{text search in Org file}@footnote{
3552 The actual behavior of the search will depend on the value of
3553 the option @code{org-link-search-must-match-exact-headline}.  If its value
3554 is @code{nil}, then a fuzzy text search will be done.  If it is @code{t}, then only
3555 the exact headline will be matched, ignoring spaces and cookies.  If the
3556 value is @code{query-to-create}, then an exact headline will be searched; if
3557 it is not found, then the user will be queried to create it.}
3558 file:projects.org::*task title               @r{heading search in Org file}@footnote{
3559 Headline searches always match the exact headline, ignoring
3560 spaces and cookies.  If the headline is not found and the value of the option
3561 @code{org-link-search-must-match-exact-headline} is @code{query-to-create},
3562 then the user will be queried to create it.}
3563 docview:papers/last.pdf::NNN                 @r{open in doc-view mode at page}
3564 id:B7423F4D-2E8A-471B-8810-C40F074717E9      @r{Link to heading by ID}
3565 news:comp.emacs                              @r{Usenet link}
3566 mailto:adent@@galaxy.net                      @r{Mail link}
3567 mhe:folder                                   @r{MH-E folder link}
3568 mhe:folder#id                                @r{MH-E message link}
3569 rmail:folder                                 @r{RMAIL folder link}
3570 rmail:folder#id                              @r{RMAIL message link}
3571 gnus:group                                   @r{Gnus group link}
3572 gnus:group#id                                @r{Gnus article link}
3573 bbdb:R.*Stallman                             @r{BBDB link (with regexp)}
3574 irc:/irc.com/#emacs/bob                      @r{IRC link}
3575 info:org#External links                      @r{Info node or index link}
3576 shell:ls *.org                               @r{A shell command}
3577 elisp:org-agenda                             @r{Interactive Elisp command}
3578 elisp:(find-file-other-frame "Elisp.org")    @r{Elisp form to evaluate}
3579 @end example
3581 @cindex VM links
3582 @cindex WANDERLUST links
3583 On top of these built-in link types, some are available through the
3584 @code{contrib/} directory (@pxref{Installation}).  For example, these links
3585 to VM or Wanderlust messages are available when you load the corresponding
3586 libraries from the @code{contrib/} directory:
3588 @example
3589 vm:folder                                    @r{VM folder link}
3590 vm:folder#id                                 @r{VM message link}
3591 vm://myself@@some.where.org/folder#id         @r{VM on remote machine}
3592 vm-imap:account:folder                       @r{VM IMAP folder link}
3593 vm-imap:account:folder#id                    @r{VM IMAP message link}
3594 wl:folder                                    @r{WANDERLUST folder link}
3595 wl:folder#id                                 @r{WANDERLUST message link}
3596 @end example
3598 For customizing Org to add new link types @ref{Adding hyperlink types}.
3600 A link should be enclosed in double brackets and may contain a descriptive
3601 text to be displayed instead of the URL (@pxref{Link format}), for example:
3603 @example
3604 [[http://www.gnu.org/software/emacs/][GNU Emacs]]
3605 @end example
3607 @noindent
3608 If the description is a file name or URL that points to an image, HTML
3609 export (@pxref{HTML export}) will inline the image as a clickable
3610 button.  If there is no description at all and the link points to an
3611 image,
3612 that image will be inlined into the exported HTML file.
3614 @cindex square brackets, around links
3615 @cindex plain text external links
3616 Org also finds external links in the normal text and activates them
3617 as links.  If spaces must be part of the link (for example in
3618 @samp{bbdb:Richard Stallman}), or if you need to remove ambiguities
3619 about the end of the link, enclose them in square brackets.
3621 @node Handling links
3622 @section Handling links
3623 @cindex links, handling
3625 Org provides methods to create a link in the correct syntax, to
3626 insert it into an Org file, and to follow the link.
3628 @table @kbd
3629 @orgcmd{C-c l,org-store-link}
3630 @cindex storing links
3631 Store a link to the current location.  This is a @emph{global} command (you
3632 must create the key binding yourself) which can be used in any buffer to
3633 create a link.  The link will be stored for later insertion into an Org
3634 buffer (see below).  What kind of link will be created depends on the current
3635 buffer:
3637 @b{Org mode buffers}@*
3638 For Org files, if there is a @samp{<<target>>} at the cursor, the link points
3639 to the target.  Otherwise it points to the current headline, which will also
3640 be the description@footnote{If the headline contains a timestamp, it will be
3641 removed from the link and result in a wrong link---you should avoid putting
3642 timestamp in the headline.}.
3644 @vindex org-id-link-to-org-use-id
3645 @cindex property, CUSTOM_ID
3646 @cindex property, ID
3647 If the headline has a @code{CUSTOM_ID} property, a link to this custom ID
3648 will be stored.  In addition or alternatively (depending on the value of
3649 @code{org-id-link-to-org-use-id}), a globally unique @code{ID} property will
3650 be created and/or used to construct a link@footnote{The library
3651 @file{org-id.el} must first be loaded, either through @code{org-customize} by
3652 enabling @code{org-id} in @code{org-modules}, or by adding @code{(require
3653 'org-id)} in your Emacs init file.}.  So using this command in Org buffers
3654 will potentially create two links: a human-readable from the custom ID, and
3655 one that is globally unique and works even if the entry is moved from file to
3656 file.  Later, when inserting the link, you need to decide which one to use.
3658 @b{Email/News clients: VM, Rmail, Wanderlust, MH-E, Gnus}@*
3659 Pretty much all Emacs mail clients are supported.  The link will point to the
3660 current article, or, in some GNUS buffers, to the group.  The description is
3661 constructed from the author and the subject.
3663 @b{Web browsers: Eww, W3 and W3M}@*
3664 Here the link will be the current URL, with the page title as description.
3666 @b{Contacts: BBDB}@*
3667 Links created in a BBDB buffer will point to the current entry.
3669 @b{Chat: IRC}@*
3670 @vindex org-irc-link-to-logs
3671 For IRC links, if you set the option @code{org-irc-link-to-logs} to @code{t},
3672 a @samp{file:/} style link to the relevant point in the logs for the current
3673 conversation is created.  Otherwise an @samp{irc:/} style link to the
3674 user/channel/server under the point will be stored.
3676 @b{Other files}@*
3677 For any other files, the link will point to the file, with a search string
3678 (@pxref{Search options}) pointing to the contents of the current line.  If
3679 there is an active region, the selected words will form the basis of the
3680 search string.  If the automatically created link is not working correctly or
3681 accurately enough, you can write custom functions to select the search string
3682 and to do the search for particular file types---see @ref{Custom searches}.
3683 The key binding @kbd{C-c l} is only a suggestion---see @ref{Installation}.
3685 @b{Agenda view}@*
3686 When the cursor is in an agenda view, the created link points to the
3687 entry referenced by the current line.
3690 @orgcmd{C-c C-l,org-insert-link}
3691 @cindex link completion
3692 @cindex completion, of links
3693 @cindex inserting links
3694 @vindex org-keep-stored-link-after-insertion
3695 @vindex org-link-parameters
3696 Insert a link@footnote{Note that you don't have to use this command to
3697 insert a link.  Links in Org are plain text, and you can type or paste them
3698 straight into the buffer.  By using this command, the links are automatically
3699 enclosed in double brackets, and you will be asked for the optional
3700 descriptive text.}.  This prompts for a link to be inserted into the buffer.
3701 You can just type a link, using text for an internal link, or one of the link
3702 type prefixes mentioned in the examples above.  The link will be inserted
3703 into the buffer@footnote{After insertion of a stored link, the link will be
3704 removed from the list of stored links.  To keep it in the list later use, use
3705 a triple @kbd{C-u} prefix argument to @kbd{C-c C-l}, or configure the option
3706 @code{org-keep-stored-link-after-insertion}.}, along with a descriptive text.
3707 If some text was selected when this command is called, the selected text
3708 becomes the default description.
3710 @b{Inserting stored links}@*
3711 All links stored during the
3712 current session are part of the history for this prompt, so you can access
3713 them with @key{up} and @key{down} (or @kbd{M-p/n}).
3715 @b{Completion support}@* Completion with @key{TAB} will help you to insert
3716 valid link prefixes like @samp{http:} or @samp{ftp:}, including the prefixes
3717 defined through link abbreviations (@pxref{Link abbreviations}).  If you
3718 press @key{RET} after inserting only the @var{prefix}, Org will offer
3719 specific completion support for some link types@footnote{This works if
3720 a completion function is defined in the @samp{:complete} property of a link
3721 in @code{org-link-parameters}.}  For example, if you type @kbd{file
3722 @key{RET}}, file name completion (alternative access: @kbd{C-u C-c C-l}, see
3723 below) will be offered, and after @kbd{bbdb @key{RET}} you can complete
3724 contact names.
3725 @orgkey C-u C-c C-l
3726 @cindex file name completion
3727 @cindex completion, of file names
3728 When @kbd{C-c C-l} is called with a @kbd{C-u} prefix argument, a link to
3729 a file will be inserted and you may use file name completion to select
3730 the name of the file.  The path to the file is inserted relative to the
3731 directory of the current Org file, if the linked file is in the current
3732 directory or in a sub-directory of it, or if the path is written relative
3733 to the current directory using @samp{../}.  Otherwise an absolute path
3734 is used, if possible with @samp{~/} for your home directory.  You can
3735 force an absolute path with two @kbd{C-u} prefixes.
3737 @item C-c C-l @ @r{(with cursor on existing link)}
3738 When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the
3739 link and description parts of the link.
3741 @cindex following links
3742 @orgcmd{C-c C-o,org-open-at-point}
3743 @vindex org-file-apps
3744 @vindex org-link-frame-setup
3745 Open link at point.  This will launch a web browser for URLs (using
3746 @command{browse-url-at-point}), run VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for
3747 the corresponding links, and execute the command in a shell link.  When the
3748 cursor is on an internal link, this command runs the corresponding search.
3749 When the cursor is on a TAG list in a headline, it creates the corresponding
3750 TAGS view.  If the cursor is on a timestamp, it compiles the agenda for that
3751 date.  Furthermore, it will visit text and remote files in @samp{file:} links
3752 with Emacs and select a suitable application for local non-text files.
3753 Classification of files is based on file extension only.  See option
3754 @code{org-file-apps}.  If you want to override the default application and
3755 visit the file with Emacs, use a @kbd{C-u} prefix.  If you want to avoid
3756 opening in Emacs, use a @kbd{C-u C-u} prefix.@*
3757 If the cursor is on a headline, but not on a link, offer all links in the
3758 headline and entry text.  If you want to setup the frame configuration for
3759 following links, customize @code{org-link-frame-setup}.
3761 @orgkey @key{RET}
3762 @vindex org-return-follows-link
3763 When @code{org-return-follows-link} is set, @kbd{@key{RET}} will also follow
3764 the link at point.
3766 @kindex mouse-2
3767 @kindex mouse-1
3768 @item mouse-2
3769 @itemx mouse-1
3770 On links, @kbd{mouse-1} and @kbd{mouse-2} will open the link just as @kbd{C-c
3771 C-o} would.
3773 @kindex mouse-3
3774 @item mouse-3
3775 @vindex org-display-internal-link-with-indirect-buffer
3776 Like @kbd{mouse-2}, but force file links to be opened with Emacs, and
3777 internal links to be displayed in another window@footnote{See the
3778 option @code{org-display-internal-link-with-indirect-buffer}}.
3780 @orgcmd{C-c C-x C-v,org-toggle-inline-images}
3781 @cindex inlining images
3782 @cindex images, inlining
3783 @vindex org-startup-with-inline-images
3784 @cindex @code{inlineimages}, STARTUP keyword
3785 @cindex @code{noinlineimages}, STARTUP keyword
3786 Toggle the inline display of linked images.  Normally this will only inline
3787 images that have no description part in the link, i.e., images that will also
3788 be inlined during export.  When called with a prefix argument, also display
3789 images that do have a link description.  You can ask for inline images to be
3790 displayed at startup by configuring the variable
3791 @code{org-startup-with-inline-images}@footnote{with corresponding
3792 @code{#+STARTUP} keywords @code{inlineimages} and @code{noinlineimages}}.
3793 @orgcmd{C-c %,org-mark-ring-push}
3794 @cindex mark ring
3795 Push the current position onto the mark ring, to be able to return
3796 easily.  Commands following an internal link do this automatically.
3798 @orgcmd{C-c &,org-mark-ring-goto}
3799 @cindex links, returning to
3800 Jump back to a recorded position.  A position is recorded by the
3801 commands following internal links, and by @kbd{C-c %}.  Using this
3802 command several times in direct succession moves through a ring of
3803 previously recorded positions.
3805 @orgcmdkkcc{C-c C-x C-n,C-c C-x C-p,org-next-link,org-previous-link}
3806 @cindex links, finding next/previous
3807 Move forward/backward to the next link in the buffer.  At the limit of
3808 the buffer, the search fails once, and then wraps around.  The key
3809 bindings for this are really too long; you might want to bind this also
3810 to @kbd{C-n} and @kbd{C-p}
3811 @lisp
3812 (add-hook 'org-load-hook
3813   (lambda ()
3814     (define-key org-mode-map "\C-n" 'org-next-link)
3815     (define-key org-mode-map "\C-p" 'org-previous-link)))
3816 @end lisp
3817 @end table
3819 @node Using links outside Org
3820 @section Using links outside Org
3822 You can insert and follow links that have Org syntax not only in
3823 Org, but in any Emacs buffer.  For this, you should create two
3824 global commands, like this (please select suitable global keys
3825 yourself):
3827 @lisp
3828 (global-set-key "\C-c L" 'org-insert-link-global)
3829 (global-set-key "\C-c o" 'org-open-at-point-global)
3830 @end lisp
3832 @node Link abbreviations
3833 @section Link abbreviations
3834 @cindex link abbreviations
3835 @cindex abbreviation, links
3837 Long URLs can be cumbersome to type, and often many similar links are
3838 needed in a document.  For this you can use link abbreviations.  An
3839 abbreviated link looks like this
3841 @example
3842 [[linkword:tag][description]]
3843 @end example
3845 @noindent
3846 @vindex org-link-abbrev-alist
3847 where the tag is optional.
3848 The @i{linkword} must be a word, starting with a letter, followed by
3849 letters, numbers, @samp{-}, and @samp{_}.  Abbreviations are resolved
3850 according to the information in the variable @code{org-link-abbrev-alist}
3851 that relates the linkwords to replacement text.  Here is an example:
3853 @smalllisp
3854 @group
3855 (setq org-link-abbrev-alist
3856   '(("bugzilla"  . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
3857     ("url-to-ja" . "http://translate.google.fr/translate?sl=en&tl=ja&u=%h")
3858     ("google"    . "http://www.google.com/search?q=")
3859     ("gmap"      . "http://maps.google.com/maps?q=%s")
3860     ("omap"      . "http://nominatim.openstreetmap.org/search?q=%s&polygon=1")
3861     ("ads"       . "http://adsabs.harvard.edu/cgi-bin/nph-abs_connect?author=%s&db_key=AST")))
3862 @end group
3863 @end smalllisp
3865 If the replacement text contains the string @samp{%s}, it will be
3866 replaced with the tag.  Using @samp{%h} instead of @samp{%s} will
3867 url-encode the tag (see the example above, where we need to encode
3868 the URL parameter.)  Using @samp{%(my-function)} will pass the tag
3869 to a custom function, and replace it by the resulting string.
3871 If the replacement text doesn't contain any specifier, the tag will simply be
3872 appended in order to create the link.
3874 Instead of a string, you may also specify a function that will be
3875 called with the tag as the only argument to create the link.
3877 With the above setting, you could link to a specific bug with
3878 @code{[[bugzilla:129]]}, search the web for @samp{OrgMode} with
3879 @code{[[google:OrgMode]]}, show the map location of the Free Software
3880 Foundation @code{[[gmap:51 Franklin Street, Boston]]} or of Carsten office
3881 @code{[[omap:Science Park 904, Amsterdam, The Netherlands]]} and find out
3882 what the Org author is doing besides Emacs hacking with
3883 @code{[[ads:Dominik,C]]}.
3885 If you need special abbreviations just for a single Org buffer, you
3886 can define them in the file with
3888 @cindex #+LINK
3889 @example
3890 #+LINK: bugzilla  http://10.1.2.9/bugzilla/show_bug.cgi?id=
3891 #+LINK: google    http://www.google.com/search?q=%s
3892 @end example
3894 @noindent
3895 In-buffer completion (@pxref{Completion}) can be used after @samp{[} to
3896 complete link abbreviations.  You may also define a function that implements
3897 special (e.g., completion) support for inserting such a link with @kbd{C-c
3898 C-l}.  Such a function should not accept any arguments, and return the full
3899 link with prefix.  You can add a completion function to a link like this:
3901 @lisp
3902 (org-link-set-parameters ``type'' :complete #'some-function)
3903 @end lisp
3906 @node Search options
3907 @section Search options in file links
3908 @cindex search option in file links
3909 @cindex file links, searching
3911 File links can contain additional information to make Emacs jump to a
3912 particular location in the file when following a link.  This can be a
3913 line number or a search option after a double@footnote{For backward
3914 compatibility, line numbers can also follow a single colon.} colon.  For
3915 example, when the command @kbd{C-c l} creates a link (@pxref{Handling
3916 links}) to a file, it encodes the words in the current line as a search
3917 string that can be used to find this line back later when following the
3918 link with @kbd{C-c C-o}.
3920 Here is the syntax of the different ways to attach a search to a file
3921 link, together with an explanation:
3923 @example
3924 [[file:~/code/main.c::255]]
3925 [[file:~/xx.org::My Target]]
3926 [[file:~/xx.org::*My Target]]
3927 [[file:~/xx.org::#my-custom-id]]
3928 [[file:~/xx.org::/regexp/]]
3929 @end example
3931 @table @code
3932 @item 255
3933 Jump to line 255.
3934 @item My Target
3935 Search for a link target @samp{<<My Target>>}, or do a text search for
3936 @samp{my target}, similar to the search in internal links, see
3937 @ref{Internal links}.  In HTML export (@pxref{HTML export}), such a file
3938 link will become an HTML reference to the corresponding named anchor in
3939 the linked file.
3940 @item *My Target
3941 In an Org file, restrict search to headlines.
3942 @item #my-custom-id
3943 Link to a heading with a @code{CUSTOM_ID} property
3944 @item /regexp/
3945 Do a regular expression search for @code{regexp}.  This uses the Emacs
3946 command @code{occur} to list all matches in a separate window.  If the
3947 target file is in Org mode, @code{org-occur} is used to create a
3948 sparse tree with the matches.
3949 @c If the target file is a directory,
3950 @c @code{grep} will be used to search all files in the directory.
3951 @end table
3953 As a degenerate case, a file link with an empty file name can be used
3954 to search the current file.  For example, @code{[[file:::find me]]} does
3955 a search for @samp{find me} in the current file, just as
3956 @samp{[[find me]]} would.
3958 @node Custom searches
3959 @section Custom Searches
3960 @cindex custom search strings
3961 @cindex search strings, custom
3963 The default mechanism for creating search strings and for doing the
3964 actual search related to a file link may not work correctly in all
3965 cases.  For example, Bib@TeX{} database files have many entries like
3966 @samp{year="1993"} which would not result in good search strings,
3967 because the only unique identification for a Bib@TeX{} entry is the
3968 citation key.
3970 @vindex org-create-file-search-functions
3971 @vindex org-execute-file-search-functions
3972 If you come across such a problem, you can write custom functions to set
3973 the right search string for a particular file type, and to do the search
3974 for the string in the file.  Using @code{add-hook}, these functions need
3975 to be added to the hook variables
3976 @code{org-create-file-search-functions} and
3977 @code{org-execute-file-search-functions}.  See the docstring for these
3978 variables for more information.  Org actually uses this mechanism
3979 for Bib@TeX{} database files, and you can use the corresponding code as
3980 an implementation example.  See the file @file{org-bibtex.el}.
3982 @node TODO items
3983 @chapter TODO items
3984 @cindex TODO items
3986 Org mode does not maintain TODO lists as separate documents@footnote{Of
3987 course, you can make a document that contains only long lists of TODO items,
3988 but this is not required.}.  Instead, TODO items are an integral part of the
3989 notes file, because TODO items usually come up while taking notes!  With Org
3990 mode, simply mark any entry in a tree as being a TODO item.  In this way,
3991 information is not duplicated, and the entire context from which the TODO
3992 item emerged is always present.
3994 Of course, this technique for managing TODO items scatters them
3995 throughout your notes file.  Org mode compensates for this by providing
3996 methods to give you an overview of all the things that you have to do.
3998 @menu
3999 * TODO basics::                 Marking and displaying TODO entries
4000 * TODO extensions::             Workflow and assignments
4001 * Progress logging::            Dates and notes for progress
4002 * Priorities::                  Some things are more important than others
4003 * Breaking down tasks::         Splitting a task into manageable pieces
4004 * Checkboxes::                  Tick-off lists
4005 @end menu
4007 @node TODO basics
4008 @section Basic TODO functionality
4010 Any headline becomes a TODO item when it starts with the word
4011 @samp{TODO}, for example:
4013 @example
4014 *** TODO Write letter to Sam Fortune
4015 @end example
4017 @noindent
4018 The most important commands to work with TODO entries are:
4020 @table @kbd
4021 @orgcmd{C-c C-t,org-todo}
4022 @cindex cycling, of TODO states
4023 @vindex org-use-fast-todo-selection
4025 Rotate the TODO state of the current item among
4027 @example
4028 ,-> (unmarked) -> TODO -> DONE --.
4029 '--------------------------------'
4030 @end example
4032 If TODO keywords have fast access keys (see @ref{Fast access to TODO
4033 states}), you will be prompted for a TODO keyword through the fast selection
4034 interface; this is the default behavior when
4035 @code{org-use-fast-todo-selection} is non-@code{nil}.
4037 The same rotation can also be done ``remotely'' from the timeline and agenda
4038 buffers with the @kbd{t} command key (@pxref{Agenda commands}).
4040 @orgkey{C-u C-c C-t}
4041 When TODO keywords have no selection keys, select a specific keyword using
4042 completion; otherwise force cycling through TODO states with no prompt.  When
4043 @code{org-use-fast-todo-selection} is set to @code{prefix}, use the fast
4044 selection interface.
4046 @kindex S-@key{right}
4047 @kindex S-@key{left}
4048 @item S-@key{right} @ @r{/} @ S-@key{left}
4049 @vindex org-treat-S-cursor-todo-selection-as-state-change
4050 Select the following/preceding TODO state, similar to cycling.  Useful
4051 mostly if more than two TODO states are possible (@pxref{TODO
4052 extensions}).  See also @ref{Conflicts}, for a discussion of the interaction
4053 with @code{shift-selection-mode}.  See also the variable
4054 @code{org-treat-S-cursor-todo-selection-as-state-change}.
4055 @orgcmd{C-c / t,org-show-todo-tree}
4056 @cindex sparse tree, for TODO
4057 @vindex org-todo-keywords
4058 View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}).  Folds the
4059 entire buffer, but shows all TODO items (with not-DONE state) and the
4060 headings hierarchy above them.  With a prefix argument (or by using @kbd{C-c
4061 / T}), search for a specific TODO@.  You will be prompted for the keyword,
4062 and you can also give a list of keywords like @code{KWD1|KWD2|...} to list
4063 entries that match any one of these keywords.  With a numeric prefix argument
4064 N, show the tree for the Nth keyword in the option @code{org-todo-keywords}.
4065 With two prefix arguments, find all TODO states, both un-done and done.
4066 @orgcmd{C-c a t,org-todo-list}
4067 Show the global TODO list.  Collects the TODO items (with not-DONE states)
4068 from all agenda files (@pxref{Agenda views}) into a single buffer.  The new
4069 buffer will be in @code{agenda-mode}, which provides commands to examine and
4070 manipulate the TODO entries from the new buffer (@pxref{Agenda commands}).
4071 @xref{Global TODO list}, for more information.
4072 @orgcmd{S-M-@key{RET},org-insert-todo-heading}
4073 Insert a new TODO entry below the current one.
4074 @end table
4076 @noindent
4077 @vindex org-todo-state-tags-triggers
4078 Changing a TODO state can also trigger tag changes.  See the docstring of the
4079 option @code{org-todo-state-tags-triggers} for details.
4081 @node TODO extensions
4082 @section Extended use of TODO keywords
4083 @cindex extended TODO keywords
4085 @vindex org-todo-keywords
4086 By default, marked TODO entries have one of only two states: TODO and
4087 DONE@.  Org mode allows you to classify TODO items in more complex ways
4088 with @emph{TODO keywords} (stored in @code{org-todo-keywords}).  With
4089 special setup, the TODO keyword system can work differently in different
4090 files.
4092 Note that @i{tags} are another way to classify headlines in general and
4093 TODO items in particular (@pxref{Tags}).
4095 @menu
4096 * Workflow states::             From TODO to DONE in steps
4097 * TODO types::                  I do this, Fred does the rest
4098 * Multiple sets in one file::   Mixing it all, and still finding your way
4099 * Fast access to TODO states::  Single letter selection of a state
4100 * Per-file keywords::           Different files, different requirements
4101 * Faces for TODO keywords::     Highlighting states
4102 * TODO dependencies::           When one task needs to wait for others
4103 @end menu
4105 @node Workflow states
4106 @subsection TODO keywords as workflow states
4107 @cindex TODO workflow
4108 @cindex workflow states as TODO keywords
4110 You can use TODO keywords to indicate different @emph{sequential} states
4111 in the process of working on an item, for example@footnote{Changing
4112 this variable only becomes effective after restarting Org mode in a
4113 buffer.}:
4115 @lisp
4116 (setq org-todo-keywords
4117   '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
4118 @end lisp
4120 The vertical bar separates the TODO keywords (states that @emph{need
4121 action}) from the DONE states (which need @emph{no further action}).  If
4122 you don't provide the separator bar, the last state is used as the DONE
4123 state.
4124 @cindex completion, of TODO keywords
4125 With this setup, the command @kbd{C-c C-t} will cycle an entry from TODO
4126 to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED@.  You may
4127 also use a numeric prefix argument to quickly select a specific state.  For
4128 example @kbd{C-3 C-c C-t} will change the state immediately to VERIFY@.
4129 Or you can use @kbd{S-@key{left}} to go backward through the sequence.  If you
4130 define many keywords, you can use in-buffer completion
4131 (@pxref{Completion}) or even a special one-key selection scheme
4132 (@pxref{Fast access to TODO states}) to insert these words into the
4133 buffer.  Changing a TODO state can be logged with a timestamp, see
4134 @ref{Tracking TODO state changes}, for more information.
4136 @node TODO types
4137 @subsection TODO keywords as types
4138 @cindex TODO types
4139 @cindex names as TODO keywords
4140 @cindex types as TODO keywords
4142 The second possibility is to use TODO keywords to indicate different
4143 @emph{types} of action items.  For example, you might want to indicate
4144 that items are for ``work'' or ``home''.  Or, when you work with several
4145 people on a single project, you might want to assign action items
4146 directly to persons, by using their names as TODO keywords.  This would
4147 be set up like this:
4149 @lisp
4150 (setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
4151 @end lisp
4153 In this case, different keywords do not indicate a sequence, but rather
4154 different types.  So the normal work flow would be to assign a task to a
4155 person, and later to mark it DONE@.  Org mode supports this style by adapting
4156 the workings of the command @kbd{C-c C-t}@footnote{This is also true for the
4157 @kbd{t} command in the timeline and agenda buffers.}.  When used several
4158 times in succession, it will still cycle through all names, in order to first
4159 select the right type for a task.  But when you return to the item after some
4160 time and execute @kbd{C-c C-t} again, it will switch from any name directly
4161 to DONE@.  Use prefix arguments or completion to quickly select a specific
4162 name.  You can also review the items of a specific TODO type in a sparse tree
4163 by using a numeric prefix to @kbd{C-c / t}.  For example, to see all things
4164 Lucy has to do, you would use @kbd{C-3 C-c / t}.  To collect Lucy's items
4165 from all agenda files into a single buffer, you would use the numeric prefix
4166 argument as well when creating the global TODO list: @kbd{C-3 C-c a t}.
4168 @node Multiple sets in one file
4169 @subsection Multiple keyword sets in one file
4170 @cindex TODO keyword sets
4172 Sometimes you may want to use different sets of TODO keywords in
4173 parallel.  For example, you may want to have the basic
4174 @code{TODO}/@code{DONE}, but also a workflow for bug fixing, and a
4175 separate state indicating that an item has been canceled (so it is not
4176 DONE, but also does not require action).  Your setup would then look
4177 like this:
4179 @lisp
4180 (setq org-todo-keywords
4181       '((sequence "TODO" "|" "DONE")
4182         (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
4183         (sequence "|" "CANCELED")))
4184 @end lisp
4186 The keywords should all be different, this helps Org mode to keep track
4187 of which subsequence should be used for a given entry.  In this setup,
4188 @kbd{C-c C-t} only operates within a subsequence, so it switches from
4189 @code{DONE} to (nothing) to @code{TODO}, and from @code{FIXED} to
4190 (nothing) to @code{REPORT}.  Therefore you need a mechanism to initially
4191 select the correct sequence.  Besides the obvious ways like typing a
4192 keyword or using completion, you may also apply the following commands:
4194 @table @kbd
4195 @kindex C-S-@key{right}
4196 @kindex C-S-@key{left}
4197 @kindex C-u C-u C-c C-t
4198 @item C-u C-u C-c C-t
4199 @itemx C-S-@key{right}
4200 @itemx C-S-@key{left}
4201 These keys jump from one TODO subset to the next.  In the above example,
4202 @kbd{C-u C-u C-c C-t} or @kbd{C-S-@key{right}} would jump from @code{TODO} or
4203 @code{DONE} to @code{REPORT}, and any of the words in the second row to
4204 @code{CANCELED}.  Note that the @kbd{C-S-} key binding conflict with
4205 @code{shift-selection-mode} (@pxref{Conflicts}).
4206 @kindex S-@key{right}
4207 @kindex S-@key{left}
4208 @item S-@key{right}
4209 @itemx S-@key{left}
4210 @kbd{S-@key{left}} and @kbd{S-@key{right}} and walk through @emph{all}
4211 keywords from all sets, so for example @kbd{S-@key{right}} would switch
4212 from @code{DONE} to @code{REPORT} in the example above.  See also
4213 @ref{Conflicts}, for a discussion of the interaction with
4214 @code{shift-selection-mode}.
4215 @end table
4217 @node Fast access to TODO states
4218 @subsection Fast access to TODO states
4220 If you would like to quickly change an entry to an arbitrary TODO state
4221 instead of cycling through the states, you can set up keys for single-letter
4222 access to the states.  This is done by adding the selection character after
4223 each keyword, in parentheses@footnote{All characters are allowed except
4224 @code{@@^!}, which have a special meaning here.}.  For example:
4226 @lisp
4227 (setq org-todo-keywords
4228       '((sequence "TODO(t)" "|" "DONE(d)")
4229         (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
4230         (sequence "|" "CANCELED(c)")))
4231 @end lisp
4233 @vindex org-fast-tag-selection-include-todo
4234 If you then press @kbd{C-c C-t} followed by the selection key, the entry
4235 will be switched to this state.  @kbd{SPC} can be used to remove any TODO
4236 keyword from an entry.@footnote{Check also the option
4237 @code{org-fast-tag-selection-include-todo}, it allows you to change the TODO
4238 state through the tags interface (@pxref{Setting tags}), in case you like to
4239 mingle the two concepts.  Note that this means you need to come up with
4240 unique keys across both sets of keywords.}
4242 @node Per-file keywords
4243 @subsection Setting up keywords for individual files
4244 @cindex keyword options
4245 @cindex per-file keywords
4246 @cindex #+TODO
4247 @cindex #+TYP_TODO
4248 @cindex #+SEQ_TODO
4250 It can be very useful to use different aspects of the TODO mechanism in
4251 different files.  For file-local settings, you need to add special lines to
4252 the file which set the keywords and interpretation for that file only.  For
4253 example, to set one of the two examples discussed above, you need one of the
4254 following lines anywhere in the file:
4256 @example
4257 #+TODO: TODO FEEDBACK VERIFY | DONE CANCELED
4258 @end example
4259 @noindent (you may also write @code{#+SEQ_TODO} to be explicit about the
4260 interpretation, but it means the same as @code{#+TODO}), or
4261 @example
4262 #+TYP_TODO: Fred Sara Lucy Mike | DONE
4263 @end example
4265 A setup for using several sets in parallel would be:
4267 @example
4268 #+TODO: TODO | DONE
4269 #+TODO: REPORT BUG KNOWNCAUSE | FIXED
4270 #+TODO: | CANCELED
4271 @end example
4273 @cindex completion, of option keywords
4274 @kindex M-@key{TAB}
4275 @noindent To make sure you are using the correct keyword, type
4276 @samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
4278 @cindex DONE, final TODO keyword
4279 Remember that the keywords after the vertical bar (or the last keyword
4280 if no bar is there) must always mean that the item is DONE (although you
4281 may use a different word).  After changing one of these lines, use
4282 @kbd{C-c C-c} with the cursor still in the line to make the changes
4283 known to Org mode@footnote{Org mode parses these lines only when
4284 Org mode is activated after visiting a file.  @kbd{C-c C-c} with the
4285 cursor in a line starting with @samp{#+} is simply restarting Org mode
4286 for the current buffer.}.
4288 @node Faces for TODO keywords
4289 @subsection Faces for TODO keywords
4290 @cindex faces, for TODO keywords
4292 @vindex org-todo @r{(face)}
4293 @vindex org-done @r{(face)}
4294 @vindex org-todo-keyword-faces
4295 Org mode highlights TODO keywords with special faces: @code{org-todo}
4296 for keywords indicating that an item still has to be acted upon, and
4297 @code{org-done} for keywords indicating that an item is finished.  If
4298 you are using more than 2 different states, you might want to use
4299 special faces for some of them.  This can be done using the option
4300 @code{org-todo-keyword-faces}.  For example:
4302 @lisp
4303 @group
4304 (setq org-todo-keyword-faces
4305       '(("TODO" . org-warning) ("STARTED" . "yellow")
4306         ("CANCELED" . (:foreground "blue" :weight bold))))
4307 @end group
4308 @end lisp
4310 While using a list with face properties as shown for CANCELED @emph{should}
4311 work, this does not always seem to be the case.  If necessary, define a
4312 special face and use that.  A string is interpreted as a color.  The option
4313 @code{org-faces-easy-properties} determines if that color is interpreted as a
4314 foreground or a background color.
4316 @node TODO dependencies
4317 @subsection TODO dependencies
4318 @cindex TODO dependencies
4319 @cindex dependencies, of TODO states
4320 @cindex TODO dependencies, NOBLOCKING
4322 @vindex org-enforce-todo-dependencies
4323 @cindex property, ORDERED
4324 The structure of Org files (hierarchy and lists) makes it easy to define TODO
4325 dependencies.  Usually, a parent TODO task should not be marked DONE until
4326 all subtasks (defined as children tasks) are marked as DONE@.  And sometimes
4327 there is a logical sequence to a number of (sub)tasks, so that one task
4328 cannot be acted upon before all siblings above it are done.  If you customize
4329 the option @code{org-enforce-todo-dependencies}, Org will block entries
4330 from changing state to DONE while they have children that are not DONE@.
4331 Furthermore, if an entry has a property @code{ORDERED}, each of its children
4332 will be blocked until all earlier siblings are marked DONE@.  Here is an
4333 example:
4335 @example
4336 * TODO Blocked until (two) is done
4337 ** DONE one
4338 ** TODO two
4340 * Parent
4341   :PROPERTIES:
4342   :ORDERED: t
4343   :END:
4344 ** TODO a
4345 ** TODO b, needs to wait for (a)
4346 ** TODO c, needs to wait for (a) and (b)
4347 @end example
4349 You can ensure an entry is never blocked by using the @code{NOBLOCKING}
4350 property:
4352 @example
4353 * This entry is never blocked
4354   :PROPERTIES:
4355   :NOBLOCKING: t
4356   :END:
4357 @end example
4359 @table @kbd
4360 @orgcmd{C-c C-x o,org-toggle-ordered-property}
4361 @vindex org-track-ordered-property-with-tag
4362 @cindex property, ORDERED
4363 Toggle the @code{ORDERED} property of the current entry.  A property is used
4364 for this behavior because this should be local to the current entry, not
4365 inherited like a tag.  However, if you would like to @i{track} the value of
4366 this property with a tag for better visibility, customize the option
4367 @code{org-track-ordered-property-with-tag}.
4368 @orgkey{C-u C-u C-u C-c C-t}
4369 Change TODO state, circumventing any state blocking.
4370 @end table
4372 @vindex org-agenda-dim-blocked-tasks
4373 If you set the option @code{org-agenda-dim-blocked-tasks}, TODO entries
4374 that cannot be closed because of such dependencies will be shown in a dimmed
4375 font or even made invisible in agenda views (@pxref{Agenda views}).
4377 @cindex checkboxes and TODO dependencies
4378 @vindex org-enforce-todo-dependencies
4379 You can also block changes of TODO states by looking at checkboxes
4380 (@pxref{Checkboxes}).  If you set the option
4381 @code{org-enforce-todo-checkbox-dependencies}, an entry that has unchecked
4382 checkboxes will be blocked from switching to DONE.
4384 If you need more complex dependency structures, for example dependencies
4385 between entries in different trees or files, check out the contributed
4386 module @file{org-depend.el}.
4388 @page
4389 @node Progress logging
4390 @section Progress logging
4391 @cindex progress logging
4392 @cindex logging, of progress
4394 Org mode can automatically record a timestamp and possibly a note when
4395 you mark a TODO item as DONE, or even each time you change the state of
4396 a TODO item.  This system is highly configurable; settings can be on a
4397 per-keyword basis and can be localized to a file or even a subtree.  For
4398 information on how to clock working time for a task, see @ref{Clocking
4399 work time}.
4401 @menu
4402 * Closing items::               When was this entry marked DONE?
4403 * Tracking TODO state changes::  When did the status change?
4404 * Tracking your habits::        How consistent have you been?
4405 @end menu
4407 @node Closing items
4408 @subsection Closing items
4410 The most basic logging is to keep track of @emph{when} a certain TODO
4411 item was finished.  This is achieved with@footnote{The corresponding
4412 in-buffer setting is: @code{#+STARTUP: logdone}}
4414 @lisp
4415 (setq org-log-done 'time)
4416 @end lisp
4418 @vindex org-closed-keep-when-no-todo
4419 @noindent
4420 Then each time you turn an entry from a TODO (not-done) state into any of the
4421 DONE states, a line @samp{CLOSED: [timestamp]} will be inserted just after
4422 the headline.  If you turn the entry back into a TODO item through further
4423 state cycling, that line will be removed again.  If you turn the entry back
4424 to a non-TODO state (by pressing @key{C-c C-t SPC} for example), that line
4425 will also be removed, unless you set @code{org-closed-keep-when-no-todo} to
4426 non-@code{nil}.  If you want to record a note along with the timestamp,
4427 use@footnote{The corresponding in-buffer setting is: @code{#+STARTUP:
4428 lognotedone}.}
4430 @lisp
4431 (setq org-log-done 'note)
4432 @end lisp
4434 @noindent
4435 You will then be prompted for a note, and that note will be stored below
4436 the entry with a @samp{Closing Note} heading.
4438 In the timeline (@pxref{Timeline}) and in the agenda
4439 (@pxref{Weekly/daily agenda}), you can then use the @kbd{l} key to
4440 display the TODO items with a @samp{CLOSED} timestamp on each day,
4441 giving you an overview of what has been done.
4443 @node Tracking TODO state changes
4444 @subsection Tracking TODO state changes
4445 @cindex drawer, for state change recording
4447 @vindex org-log-states-order-reversed
4448 @vindex org-log-into-drawer
4449 @cindex property, LOG_INTO_DRAWER
4450 When TODO keywords are used as workflow states (@pxref{Workflow states}), you
4451 might want to keep track of when a state change occurred and maybe take a
4452 note about this change.  You can either record just a timestamp, or a
4453 time-stamped note for a change.  These records will be inserted after the
4454 headline as an itemized list, newest first@footnote{See the option
4455 @code{org-log-states-order-reversed}}.  When taking a lot of notes, you might
4456 want to get the notes out of the way into a drawer (@pxref{Drawers}).
4457 Customize @code{org-log-into-drawer} to get this behavior---the recommended
4458 drawer for this is called @code{LOGBOOK}@footnote{Note that the
4459 @code{LOGBOOK} drawer is unfolded when pressing @key{SPC} in the agenda to
4460 show an entry---use @key{C-u SPC} to keep it folded here}.  You can also
4461 overrule the setting of this variable for a subtree by setting a
4462 @code{LOG_INTO_DRAWER} property.
4464 Since it is normally too much to record a note for every state, Org mode
4465 expects configuration on a per-keyword basis for this.  This is achieved by
4466 adding special markers @samp{!} (for a timestamp) or @samp{@@} (for a note
4467 with timestamp) in parentheses after each keyword.  For example, with the
4468 setting
4470 @lisp
4471 (setq org-todo-keywords
4472   '((sequence "TODO(t)" "WAIT(w@@/!)" "|" "DONE(d!)" "CANCELED(c@@)")))
4473 @end lisp
4475 To record a timestamp without a note for TODO keywords configured with
4476 @samp{@@}, just type @kbd{C-c C-c} to enter a blank note when prompted.
4478 @noindent
4479 @vindex org-log-done
4480 You not only define global TODO keywords and fast access keys, but also
4481 request that a time is recorded when the entry is set to
4482 DONE@footnote{It is possible that Org mode will record two timestamps
4483 when you are using both @code{org-log-done} and state change logging.
4484 However, it will never prompt for two notes---if you have configured
4485 both, the state change recording note will take precedence and cancel
4486 the @samp{Closing Note}.}, and that a note is recorded when switching to
4487 WAIT or CANCELED@.  The setting for WAIT is even more special: the
4488 @samp{!} after the slash means that in addition to the note taken when
4489 entering the state, a timestamp should be recorded when @i{leaving} the
4490 WAIT state, if and only if the @i{target} state does not configure
4491 logging for entering it.  So it has no effect when switching from WAIT
4492 to DONE, because DONE is configured to record a timestamp only.  But
4493 when switching from WAIT back to TODO, the @samp{/!} in the WAIT
4494 setting now triggers a timestamp even though TODO has no logging
4495 configured.
4497 You can use the exact same syntax for setting logging preferences local
4498 to a buffer:
4499 @example
4500 #+TODO: TODO(t) WAIT(w@@/!) | DONE(d!) CANCELED(c@@)
4501 @end example
4503 @cindex property, LOGGING
4504 In order to define logging settings that are local to a subtree or a
4505 single item, define a LOGGING property in this entry.  Any non-empty
4506 LOGGING property resets all logging settings to @code{nil}.  You may then turn
4507 on logging for this specific tree using STARTUP keywords like
4508 @code{lognotedone} or @code{logrepeat}, as well as adding state specific
4509 settings like @code{TODO(!)}.  For example
4511 @example
4512 * TODO Log each state with only a time
4513   :PROPERTIES:
4514   :LOGGING: TODO(!) WAIT(!) DONE(!) CANCELED(!)
4515   :END:
4516 * TODO Only log when switching to WAIT, and when repeating
4517   :PROPERTIES:
4518   :LOGGING: WAIT(@@) logrepeat
4519   :END:
4520 * TODO No logging at all
4521   :PROPERTIES:
4522   :LOGGING: nil
4523   :END:
4524 @end example
4526 @node Tracking your habits
4527 @subsection Tracking your habits
4528 @cindex habits
4530 Org has the ability to track the consistency of a special category of TODOs,
4531 called ``habits''.  A habit has the following properties:
4533 @enumerate
4534 @item
4535 You have enabled the @code{habits} module by customizing @code{org-modules}.
4536 @item
4537 The habit is a TODO item, with a TODO keyword representing an open state.
4538 @item
4539 The property @code{STYLE} is set to the value @code{habit}.
4540 @item
4541 The TODO has a scheduled date, usually with a @code{.+} style repeat
4542 interval.  A @code{++} style may be appropriate for habits with time
4543 constraints, e.g., must be done on weekends, or a @code{+} style for an
4544 unusual habit that can have a backlog, e.g., weekly reports.
4545 @item
4546 The TODO may also have minimum and maximum ranges specified by using the
4547 syntax @samp{.+2d/3d}, which says that you want to do the task at least every
4548 three days, but at most every two days.
4549 @item
4550 You must also have state logging for the @code{DONE} state enabled
4551 (@pxref{Tracking TODO state changes}), in order for historical data to be
4552 represented in the consistency graph.  If it is not enabled it is not an
4553 error, but the consistency graphs will be largely meaningless.
4554 @end enumerate
4556 To give you an idea of what the above rules look like in action, here's an
4557 actual habit with some history:
4559 @example
4560 ** TODO Shave
4561    SCHEDULED: <2009-10-17 Sat .+2d/4d>
4562    :PROPERTIES:
4563    :STYLE:    habit
4564    :LAST_REPEAT: [2009-10-19 Mon 00:36]
4565    :END:
4566    - State "DONE"       from "TODO"       [2009-10-15 Thu]
4567    - State "DONE"       from "TODO"       [2009-10-12 Mon]
4568    - State "DONE"       from "TODO"       [2009-10-10 Sat]
4569    - State "DONE"       from "TODO"       [2009-10-04 Sun]
4570    - State "DONE"       from "TODO"       [2009-10-02 Fri]
4571    - State "DONE"       from "TODO"       [2009-09-29 Tue]
4572    - State "DONE"       from "TODO"       [2009-09-25 Fri]
4573    - State "DONE"       from "TODO"       [2009-09-19 Sat]
4574    - State "DONE"       from "TODO"       [2009-09-16 Wed]
4575    - State "DONE"       from "TODO"       [2009-09-12 Sat]
4576 @end example
4578 What this habit says is: I want to shave at most every 2 days (given by the
4579 @code{SCHEDULED} date and repeat interval) and at least every 4 days.  If
4580 today is the 15th, then the habit first appears in the agenda on Oct 17,
4581 after the minimum of 2 days has elapsed, and will appear overdue on Oct 19,
4582 after four days have elapsed.
4584 What's really useful about habits is that they are displayed along with a
4585 consistency graph, to show how consistent you've been at getting that task
4586 done in the past.  This graph shows every day that the task was done over the
4587 past three weeks, with colors for each day.  The colors used are:
4589 @table @code
4590 @item Blue
4591 If the task wasn't to be done yet on that day.
4592 @item Green
4593 If the task could have been done on that day.
4594 @item Yellow
4595 If the task was going to be overdue the next day.
4596 @item Red
4597 If the task was overdue on that day.
4598 @end table
4600 In addition to coloring each day, the day is also marked with an asterisk if
4601 the task was actually done that day, and an exclamation mark to show where
4602 the current day falls in the graph.
4604 There are several configuration variables that can be used to change the way
4605 habits are displayed in the agenda.
4607 @table @code
4608 @item org-habit-graph-column
4609 The buffer column at which the consistency graph should be drawn.  This will
4610 overwrite any text in that column, so it is a good idea to keep your habits'
4611 titles brief and to the point.
4612 @item org-habit-preceding-days
4613 The amount of history, in days before today, to appear in consistency graphs.
4614 @item org-habit-following-days
4615 The number of days after today that will appear in consistency graphs.
4616 @item org-habit-show-habits-only-for-today
4617 If non-@code{nil}, only show habits in today's agenda view.  This is set to true by
4618 default.
4619 @end table
4621 Lastly, pressing @kbd{K} in the agenda buffer will cause habits to
4622 temporarily be disabled and they won't appear at all.  Press @kbd{K} again to
4623 bring them back.  They are also subject to tag filtering, if you have habits
4624 which should only be done in certain contexts, for example.
4626 @node Priorities
4627 @section Priorities
4628 @cindex priorities
4630 If you use Org mode extensively, you may end up with enough TODO items that
4631 it starts to make sense to prioritize them.  Prioritizing can be done by
4632 placing a @emph{priority cookie} into the headline of a TODO item, like this
4634 @example
4635 *** TODO [#A] Write letter to Sam Fortune
4636 @end example
4638 @noindent
4639 @vindex org-priority-faces
4640 By default, Org mode supports three priorities: @samp{A}, @samp{B}, and
4641 @samp{C}.  @samp{A} is the highest priority.  An entry without a cookie is
4642 treated just like priority @samp{B}.  Priorities make a difference only for
4643 sorting in the agenda (@pxref{Weekly/daily agenda}); outside the agenda, they
4644 have no inherent meaning to Org mode.  The cookies can be highlighted with
4645 special faces by customizing @code{org-priority-faces}.
4647 Priorities can be attached to any outline node; they do not need to be TODO
4648 items.
4650 @table @kbd
4651 @item @kbd{C-c ,}
4652 @kindex @kbd{C-c ,}
4653 @findex org-priority
4654 Set the priority of the current headline (@command{org-priority}).  The
4655 command prompts for a priority character @samp{A}, @samp{B} or @samp{C}.
4656 When you press @key{SPC} instead, the priority cookie is removed from the
4657 headline.  The priorities can also be changed ``remotely'' from the timeline
4658 and agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
4660 @orgcmdkkcc{S-@key{up},S-@key{down},org-priority-up,org-priority-down}
4661 @vindex org-priority-start-cycle-with-default
4662 Increase/decrease priority of current headline@footnote{See also the option
4663 @code{org-priority-start-cycle-with-default}.}.  Note that these keys are
4664 also used to modify timestamps (@pxref{Creating timestamps}).  See also
4665 @ref{Conflicts}, for a discussion of the interaction with
4666 @code{shift-selection-mode}.
4667 @end table
4669 @vindex org-highest-priority
4670 @vindex org-lowest-priority
4671 @vindex org-default-priority
4672 You can change the range of allowed priorities by setting the options
4673 @code{org-highest-priority}, @code{org-lowest-priority}, and
4674 @code{org-default-priority}.  For an individual buffer, you may set
4675 these values (highest, lowest, default) like this (please make sure that
4676 the highest priority is earlier in the alphabet than the lowest
4677 priority):
4679 @cindex #+PRIORITIES
4680 @example
4681 #+PRIORITIES: A C B
4682 @end example
4684 @node Breaking down tasks
4685 @section Breaking tasks down into subtasks
4686 @cindex tasks, breaking down
4687 @cindex statistics, for TODO items
4689 @vindex org-agenda-todo-list-sublevels
4690 It is often advisable to break down large tasks into smaller, manageable
4691 subtasks.  You can do this by creating an outline tree below a TODO item,
4692 with detailed subtasks on the tree@footnote{To keep subtasks out of the
4693 global TODO list, see the @code{org-agenda-todo-list-sublevels}.}.  To keep
4694 the overview over the fraction of subtasks that are already completed, insert
4695 either @samp{[/]} or @samp{[%]} anywhere in the headline.  These cookies will
4696 be updated each time the TODO status of a child changes, or when pressing
4697 @kbd{C-c C-c} on the cookie.  For example:
4699 @example
4700 * Organize Party [33%]
4701 ** TODO Call people [1/2]
4702 *** TODO Peter
4703 *** DONE Sarah
4704 ** TODO Buy food
4705 ** DONE Talk to neighbor
4706 @end example
4708 @cindex property, COOKIE_DATA
4709 If a heading has both checkboxes and TODO children below it, the meaning of
4710 the statistics cookie become ambiguous.  Set the property
4711 @code{COOKIE_DATA} to either @samp{checkbox} or @samp{todo} to resolve
4712 this issue.
4714 @vindex org-hierarchical-todo-statistics
4715 If you would like to have the statistics cookie count any TODO entries in the
4716 subtree (not just direct children), configure
4717 @code{org-hierarchical-todo-statistics}.  To do this for a single subtree,
4718 include the word @samp{recursive} into the value of the @code{COOKIE_DATA}
4719 property.
4721 @example
4722 * Parent capturing statistics [2/20]
4723   :PROPERTIES:
4724   :COOKIE_DATA: todo recursive
4725   :END:
4726 @end example
4728 If you would like a TODO entry to automatically change to DONE
4729 when all children are done, you can use the following setup:
4731 @example
4732 (defun org-summary-todo (n-done n-not-done)
4733   "Switch entry to DONE when all subentries are done, to TODO otherwise."
4734   (let (org-log-done org-log-states)   ; turn off logging
4735     (org-todo (if (= n-not-done 0) "DONE" "TODO"))))
4737 (add-hook 'org-after-todo-statistics-hook 'org-summary-todo)
4738 @end example
4741 Another possibility is the use of checkboxes to identify (a hierarchy of) a
4742 large number of subtasks (@pxref{Checkboxes}).
4745 @node Checkboxes
4746 @section Checkboxes
4747 @cindex checkboxes
4749 @vindex org-list-automatic-rules
4750 Every item in a plain list@footnote{With the exception of description
4751 lists.  But you can allow it by modifying @code{org-list-automatic-rules}
4752 accordingly.} (@pxref{Plain lists}) can be made into a checkbox by starting
4753 it with the string @samp{[ ]}.  This feature is similar to TODO items
4754 (@pxref{TODO items}), but is more lightweight.  Checkboxes are not included
4755 in the global TODO list, so they are often great to split a task into a
4756 number of simple steps.  Or you can use them in a shopping list.  To toggle a
4757 checkbox, use @kbd{C-c C-c}, or use the mouse (thanks to Piotr Zielinski's
4758 @file{org-mouse.el}).
4760 Here is an example of a checkbox list.
4762 @example
4763 * TODO Organize party [2/4]
4764   - [-] call people [1/3]
4765     - [ ] Peter
4766     - [X] Sarah
4767     - [ ] Sam
4768   - [X] order food
4769   - [ ] think about what music to play
4770   - [X] talk to the neighbors
4771 @end example
4773 Checkboxes work hierarchically, so if a checkbox item has children that
4774 are checkboxes, toggling one of the children checkboxes will make the
4775 parent checkbox reflect if none, some, or all of the children are
4776 checked.
4778 @cindex statistics, for checkboxes
4779 @cindex checkbox statistics
4780 @cindex property, COOKIE_DATA
4781 @vindex org-checkbox-hierarchical-statistics
4782 The @samp{[2/4]} and @samp{[1/3]} in the first and second line are cookies
4783 indicating how many checkboxes present in this entry have been checked off,
4784 and the total number of checkboxes present.  This can give you an idea on how
4785 many checkboxes remain, even without opening a folded entry.  The cookies can
4786 be placed into a headline or into (the first line of) a plain list item.
4787 Each cookie covers checkboxes of direct children structurally below the
4788 headline/item on which the cookie appears@footnote{Set the option
4789 @code{org-checkbox-hierarchical-statistics} if you want such cookies to
4790 count all checkboxes below the cookie, not just those belonging to direct
4791 children.}.  You have to insert the cookie yourself by typing either
4792 @samp{[/]} or @samp{[%]}.  With @samp{[/]} you get an @samp{n out of m}
4793 result, as in the examples above.  With @samp{[%]} you get information about
4794 the percentage of checkboxes checked (in the above example, this would be
4795 @samp{[50%]} and @samp{[33%]}, respectively).  In a headline, a cookie can
4796 count either checkboxes below the heading or TODO states of children, and it
4797 will display whatever was changed last.  Set the property @code{COOKIE_DATA}
4798 to either @samp{checkbox} or @samp{todo} to resolve this issue.
4800 @cindex blocking, of checkboxes
4801 @cindex checkbox blocking
4802 @cindex property, ORDERED
4803 If the current outline node has an @code{ORDERED} property, checkboxes must
4804 be checked off in sequence, and an error will be thrown if you try to check
4805 off a box while there are unchecked boxes above it.
4807 @noindent The following commands work with checkboxes:
4809 @table @kbd
4810 @orgcmd{C-c C-c,org-toggle-checkbox}
4811 Toggle checkbox status or (with prefix arg) checkbox presence at point.  With
4812 a single prefix argument, add an empty checkbox or remove the current
4813 one@footnote{@kbd{C-u C-c C-c} before the @emph{first} bullet in a list with
4814 no checkbox will add checkboxes to the rest of the list.}.  With a double
4815 prefix argument, set it to @samp{[-]}, which is considered to be an
4816 intermediate state.
4817 @orgcmd{C-c C-x C-b,org-toggle-checkbox}
4818 Toggle checkbox status or (with prefix arg) checkbox presence at point.  With
4819 double prefix argument, set it to @samp{[-]}, which is considered to be an
4820 intermediate state.
4821 @itemize @minus
4822 @item
4823 If there is an active region, toggle the first checkbox in the region
4824 and set all remaining boxes to the same status as the first.  With a prefix
4825 arg, add or remove the checkbox for all items in the region.
4826 @item
4827 If the cursor is in a headline, toggle the state of the first checkbox in the
4828 region between this headline and the next---so @emph{not} the entire
4829 subtree---and propagate this new state to all other checkboxes in the same
4830 area.
4831 @item
4832 If there is no active region, just toggle the checkbox at point.
4833 @end itemize
4834 @orgcmd{M-S-@key{RET},org-insert-todo-heading}
4835 Insert a new item with a checkbox.  This works only if the cursor is already
4836 in a plain list item (@pxref{Plain lists}).
4837 @orgcmd{C-c C-x o,org-toggle-ordered-property}
4838 @vindex org-track-ordered-property-with-tag
4839 @cindex property, ORDERED
4840 Toggle the @code{ORDERED} property of the entry, to toggle if checkboxes must
4841 be checked off in sequence.  A property is used for this behavior because
4842 this should be local to the current entry, not inherited like a tag.
4843 However, if you would like to @i{track} the value of this property with a tag
4844 for better visibility, customize @code{org-track-ordered-property-with-tag}.
4845 @orgcmd{C-c #,org-update-statistics-cookies}
4846 Update the statistics cookie in the current outline entry.  When called with
4847 a @kbd{C-u} prefix, update the entire file.  Checkbox statistic cookies are
4848 updated automatically if you toggle checkboxes with @kbd{C-c C-c} and make
4849 new ones with @kbd{M-S-@key{RET}}.  TODO statistics cookies update when
4850 changing TODO states.  If you delete boxes/entries or add/change them by
4851 hand, use this command to get things back into sync.
4852 @end table
4854 @node Tags
4855 @chapter Tags
4856 @cindex tags
4857 @cindex headline tagging
4858 @cindex matching, tags
4859 @cindex sparse tree, tag based
4861 An excellent way to implement labels and contexts for cross-correlating
4862 information is to assign @i{tags} to headlines.  Org mode has extensive
4863 support for tags.
4865 @vindex org-tag-faces
4866 Every headline can contain a list of tags; they occur at the end of the
4867 headline.  Tags are normal words containing letters, numbers, @samp{_}, and
4868 @samp{@@}.  Tags must be preceded and followed by a single colon, e.g.,
4869 @samp{:work:}.  Several tags can be specified, as in @samp{:work:urgent:}.
4870 Tags will by default be in bold face with the same color as the headline.
4871 You may specify special faces for specific tags using the option
4872 @code{org-tag-faces}, in much the same way as you can for TODO keywords
4873 (@pxref{Faces for TODO keywords}).
4875 @menu
4876 * Tag inheritance::             Tags use the tree structure of the outline
4877 * Setting tags::                How to assign tags to a headline
4878 * Tag hierarchy::               Create a hierarchy of tags
4879 * Tag searches::                Searching for combinations of tags
4880 @end menu
4882 @node Tag inheritance
4883 @section Tag inheritance
4884 @cindex tag inheritance
4885 @cindex inheritance, of tags
4886 @cindex sublevels, inclusion into tags match
4888 @i{Tags} make use of the hierarchical structure of outline trees.  If a
4889 heading has a certain tag, all subheadings will inherit the tag as
4890 well.  For example, in the list
4892 @example
4893 * Meeting with the French group      :work:
4894 ** Summary by Frank                  :boss:notes:
4895 *** TODO Prepare slides for him      :action:
4896 @end example
4898 @noindent
4899 the final heading will have the tags @samp{:work:}, @samp{:boss:},
4900 @samp{:notes:}, and @samp{:action:} even though the final heading is not
4901 explicitly marked with all those tags.  You can also set tags that all
4902 entries in a file should inherit just as if these tags were defined in
4903 a hypothetical level zero that surrounds the entire file.  Use a line like
4904 this@footnote{As with all these in-buffer settings, pressing @kbd{C-c C-c}
4905 activates any changes in the line.}:
4907 @cindex #+FILETAGS
4908 @example
4909 #+FILETAGS: :Peter:Boss:Secret:
4910 @end example
4912 @noindent
4913 @vindex org-use-tag-inheritance
4914 @vindex org-tags-exclude-from-inheritance
4915 To limit tag inheritance to specific tags, use @code{org-tags-exclude-from-inheritance}.
4916 To turn it off entirely, use @code{org-use-tag-inheritance}.
4918 @vindex org-tags-match-list-sublevels
4919 When a headline matches during a tags search while tag inheritance is turned
4920 on, all the sublevels in the same tree will (for a simple match form) match
4921 as well@footnote{This is only true if the search does not involve more
4922 complex tests including properties (@pxref{Property searches}).}.  The list
4923 of matches may then become very long.  If you only want to see the first tags
4924 match in a subtree, configure @code{org-tags-match-list-sublevels} (not
4925 recommended).
4927 @vindex org-agenda-use-tag-inheritance
4928 Tag inheritance is relevant when the agenda search tries to match a tag,
4929 either in the @code{tags} or @code{tags-todo} agenda types.  In other agenda
4930 types, @code{org-use-tag-inheritance} has no effect.  Still, you may want to
4931 have your tags correctly set in the agenda, so that tag filtering works fine,
4932 with inherited tags.  Set @code{org-agenda-use-tag-inheritance} to control
4933 this: the default value includes all agenda types, but setting this to @code{nil}
4934 can really speed up agenda generation.
4936 @node Setting tags
4937 @section Setting tags
4938 @cindex setting tags
4939 @cindex tags, setting
4941 @kindex M-@key{TAB}
4942 Tags can simply be typed into the buffer at the end of a headline.
4943 After a colon, @kbd{M-@key{TAB}} offers completion on tags.  There is
4944 also a special command for inserting tags:
4946 @table @kbd
4947 @orgcmd{C-c C-q,org-set-tags-command}
4948 @cindex completion, of tags
4949 @vindex org-tags-column
4950 Enter new tags for the current headline.  Org mode will either offer
4951 completion or a special single-key interface for setting tags, see
4952 below.  After pressing @key{RET}, the tags will be inserted and aligned
4953 to @code{org-tags-column}.  When called with a @kbd{C-u} prefix, all
4954 tags in the current buffer will be aligned to that column, just to make
4955 things look nice.  TAGS are automatically realigned after promotion,
4956 demotion, and TODO state changes (@pxref{TODO basics}).
4958 @orgcmd{C-c C-c,org-set-tags-command}
4959 When the cursor is in a headline, this does the same as @kbd{C-c C-q}.
4960 @end table
4962 @vindex org-tag-alist
4963 Org supports tag insertion based on a @emph{list of tags}.  By
4964 default this list is constructed dynamically, containing all tags
4965 currently used in the buffer.  You may also globally specify a hard list
4966 of tags with the variable @code{org-tag-alist}.  Finally you can set
4967 the default tags for a given file with lines like
4969 @cindex #+TAGS
4970 @example
4971 #+TAGS: @@work @@home @@tennisclub
4972 #+TAGS: laptop car pc sailboat
4973 @end example
4975 If you have globally defined your preferred set of tags using the
4976 variable @code{org-tag-alist}, but would like to use a dynamic tag list
4977 in a specific file, add an empty TAGS option line to that file:
4979 @example
4980 #+TAGS:
4981 @end example
4983 @vindex org-tag-persistent-alist
4984 If you have a preferred set of tags that you would like to use in every file,
4985 in addition to those defined on a per-file basis by TAGS option lines, then
4986 you may specify a list of tags with the variable
4987 @code{org-tag-persistent-alist}.  You may turn this off on a per-file basis
4988 by adding a STARTUP option line to that file:
4990 @example
4991 #+STARTUP: noptag
4992 @end example
4994 By default Org mode uses the standard minibuffer completion facilities for
4995 entering tags.  However, it also implements another, quicker, tag selection
4996 method called @emph{fast tag selection}.  This allows you to select and
4997 deselect tags with just a single key press.  For this to work well you should
4998 assign unique, case-sensitive, letters to most of your commonly used tags.
4999 You can do this globally by configuring the variable @code{org-tag-alist} in
5000 your Emacs init file.  For example, you may find the need to tag many items
5001 in different files with @samp{:@@home:}.  In this case you can set something
5002 like:
5004 @lisp
5005 (setq org-tag-alist '(("@@work" . ?w) ("@@home" . ?h) ("laptop" . ?l)))
5006 @end lisp
5008 @noindent If the tag is only relevant to the file you are working on, then you
5009 can instead set the TAGS option line as:
5011 @example
5012 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t)  laptop(l)  pc(p)
5013 @end example
5015 @noindent The tags interface will show the available tags in a splash
5016 window.  If you want to start a new line after a specific tag, insert
5017 @samp{\n} into the tag list
5019 @example
5020 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t) \n laptop(l)  pc(p)
5021 @end example
5023 @noindent or write them in two lines:
5025 @example
5026 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t)
5027 #+TAGS: laptop(l)  pc(p)
5028 @end example
5030 @noindent
5031 You can also group together tags that are mutually exclusive by using
5032 braces, as in:
5034 @example
5035 #+TAGS: @{ @@work(w)  @@home(h)  @@tennisclub(t) @}  laptop(l)  pc(p)
5036 @end example
5038 @noindent you indicate that at most one of @samp{@@work}, @samp{@@home},
5039 and @samp{@@tennisclub} should be selected.  Multiple such groups are allowed.
5041 @noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
5042 these lines to activate any changes.
5044 @noindent
5045 To set these mutually exclusive groups in the variable @code{org-tag-alist},
5046 you must use the dummy tags @code{:startgroup} and @code{:endgroup} instead
5047 of the braces.  Similarly, you can use @code{:newline} to indicate a line
5048 break.  The previous example would be set globally by the following
5049 configuration:
5051 @lisp
5052 (setq org-tag-alist '((:startgroup . nil)
5053                       ("@@work" . ?w) ("@@home" . ?h)
5054                       ("@@tennisclub" . ?t)
5055                       (:endgroup . nil)
5056                       ("laptop" . ?l) ("pc" . ?p)))
5057 @end lisp
5059 If at least one tag has a selection key then pressing @kbd{C-c C-c} will
5060 automatically present you with a special interface, listing inherited tags,
5061 the tags of the current headline, and a list of all valid tags with
5062 corresponding keys@footnote{Keys will automatically be assigned to tags which
5063 have no configured keys.}.
5065 Pressing keys assigned to tags will add or remove them from the list of tags
5066 in the current line.  Selecting a tag in a group of mutually exclusive tags
5067 will turn off any other tags from that group.
5069 In this interface, you can also use the following special keys:
5071 @table @kbd
5072 @kindex @key{TAB}
5073 @item @key{TAB}
5074 Enter a tag in the minibuffer, even if the tag is not in the predefined
5075 list.  You will be able to complete on all tags present in the buffer.
5076 You can also add several tags: just separate them with a comma.
5078 @kindex @key{SPC}
5079 @item @key{SPC}
5080 Clear all tags for this line.
5082 @kindex @key{RET}
5083 @item @key{RET}
5084 Accept the modified set.
5086 @item C-g
5087 Abort without installing changes.
5089 @item q
5090 If @kbd{q} is not assigned to a tag, it aborts like @kbd{C-g}.
5092 @item !
5093 Turn off groups of mutually exclusive tags.  Use this to (as an
5094 exception) assign several tags from such a group.
5096 @item C-c
5097 Toggle auto-exit after the next change (see below).
5098 If you are using expert mode, the first @kbd{C-c} will display the
5099 selection window.
5100 @end table
5102 @noindent
5103 This method lets you assign tags to a headline with very few keys.  With
5104 the above setup, you could clear the current tags and set @samp{@@home},
5105 @samp{laptop} and @samp{pc} tags with just the following keys: @kbd{C-c
5106 C-c @key{SPC} h l p @key{RET}}.  Switching from @samp{@@home} to
5107 @samp{@@work} would be done with @kbd{C-c C-c w @key{RET}} or
5108 alternatively with @kbd{C-c C-c C-c w}.  Adding the non-predefined tag
5109 @samp{Sarah} could be done with @kbd{C-c C-c @key{TAB} S a r a h
5110 @key{RET} @key{RET}}.
5112 @vindex org-fast-tag-selection-single-key
5113 If you find that most of the time you need only a single key press to
5114 modify your list of tags, set @code{org-fast-tag-selection-single-key}.
5115 Then you no longer have to press @key{RET} to exit fast tag selection---it
5116 will immediately exit after the first change.  If you then occasionally
5117 need more keys, press @kbd{C-c} to turn off auto-exit for the current tag
5118 selection process (in effect: start selection with @kbd{C-c C-c C-c}
5119 instead of @kbd{C-c C-c}).  If you set the variable to the value
5120 @code{expert}, the special window is not even shown for single-key tag
5121 selection, it comes up only when you press an extra @kbd{C-c}.
5123 @node Tag hierarchy
5124 @section Tag hierarchy
5126 @cindex group tags
5127 @cindex tags, groups
5128 @cindex tag hierarchy
5129 Tags can be defined in hierarchies.  A tag can be defined as a @emph{group
5130 tag} for a set of other tags.  The group tag can be seen as the ``broader
5131 term'' for its set of tags.  Defining multiple @emph{group tags} and nesting
5132 them creates a tag hierarchy.
5134 One use-case is to create a taxonomy of terms (tags) that can be used to
5135 classify nodes in a document or set of documents.
5137 When you search for a group tag, it will return matches for all members in
5138 the group and its subgroups.  In an agenda view, filtering by a group tag
5139 will display or hide headlines tagged with at least one of the members of the
5140 group or any of its subgroups.  This makes tag searches and filters even more
5141 flexible.
5143 You can set group tags by using brackets and inserting a colon between the
5144 group tag and its related tags---beware that all whitespaces are mandatory so
5145 that Org can parse this line correctly:
5147 @example
5148 #+TAGS: [ GTD : Control Persp ]
5149 @end example
5151 In this example, @samp{GTD} is the @emph{group tag} and it is related to two
5152 other tags: @samp{Control}, @samp{Persp}.  Defining @samp{Control} and
5153 @samp{Persp} as group tags creates an hierarchy of tags:
5155 @example
5156 #+TAGS: [ Control : Context Task ]
5157 #+TAGS: [ Persp : Vision Goal AOF Project ]
5158 @end example
5160 That can conceptually be seen as a hierarchy of tags:
5162 @example
5163 - GTD
5164   - Persp
5165     - Vision
5166     - Goal
5167     - AOF
5168     - Project
5169   - Control
5170     - Context
5171     - Task
5172 @end example
5174 You can use the @code{:startgrouptag}, @code{:grouptags} and
5175 @code{:endgrouptag} keyword directly when setting @code{org-tag-alist}
5176 directly:
5178 @lisp
5179 (setq org-tag-alist '((:startgrouptag)
5180                       ("GTD")
5181                       (:grouptags)
5182                       ("Control")
5183                       ("Persp")
5184                       (:endgrouptag)
5185                       (:startgrouptag)
5186                       ("Control")
5187                       (:grouptags)
5188                       ("Context")
5189                       ("Task")
5190                       (:endgrouptag)))
5191 @end lisp
5193 The tags in a group can be mutually exclusive if using the same group syntax
5194 as is used for grouping mutually exclusive tags together; using curly
5195 brackets.
5197 @example
5198 #+TAGS: @{ Context : @@Home @@Work @@Call @}
5199 @end example
5201 When setting @code{org-tag-alist} you can use @code{:startgroup} &
5202 @code{:endgroup} instead of @code{:startgrouptag} & @code{:endgrouptag} to
5203 make the tags mutually exclusive.
5205 Furthermore, the members of a @emph{group tag} can also be regular
5206 expressions, creating the possibility of a more dynamic and rule-based
5207 tag structure.  The regular expressions in the group must be specified
5208 within @{ @}.  Here is an expanded example:
5210 @example
5211 #+TAGS: [ Vision : @{V@@@.+@} ]
5212 #+TAGS: [ Goal : @{G@@@.+@} ]
5213 #+TAGS: [ AOF : @{AOF@@@.+@} ]
5214 #+TAGS: [ Project : @{P@@@.+@} ]
5215 @end example
5217 Searching for the tag @samp{Project} will now list all tags also including
5218 regular expression matches for @samp{P@@@.+}, and similarly for tag searches on
5219 @samp{Vision}, @samp{Goal} and @samp{AOF}.  For example, this would work well
5220 for a project tagged with a common project-identifier, e.g. @samp{P@@2014_OrgTags}.
5222 @kindex C-c C-x q
5223 @vindex org-group-tags
5224 If you want to ignore group tags temporarily, toggle group tags support
5225 with @command{org-toggle-tags-groups}, bound to @kbd{C-c C-x q}.  If you
5226 want to disable tag groups completely, set @code{org-group-tags} to @code{nil}.
5228 @node Tag searches
5229 @section Tag searches
5230 @cindex tag searches
5231 @cindex searching for tags
5233 Once a system of tags has been set up, it can be used to collect related
5234 information into special lists.
5236 @table @kbd
5237 @orgcmdkkc{C-c / m,C-c \\,org-match-sparse-tree}
5238 Create a sparse tree with all headlines matching a tags/property/TODO search.
5239 With a @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
5240 @xref{Matching tags and properties}.
5241 @orgcmd{C-c a m,org-tags-view}
5242 Create a global list of tag matches from all agenda files.  @xref{Matching
5243 tags and properties}.
5244 @orgcmd{C-c a M,org-tags-view}
5245 @vindex org-tags-match-list-sublevels
5246 Create a global list of tag matches from all agenda files, but check
5247 only TODO items and force checking subitems (see the option
5248 @code{org-tags-match-list-sublevels}).
5249 @end table
5251 These commands all prompt for a match string which allows basic Boolean logic
5252 like @samp{+boss+urgent-project1}, to find entries with tags @samp{boss} and
5253 @samp{urgent}, but not @samp{project1}, or @samp{Kathy|Sally} to find entries
5254 tagged as @samp{Kathy} or @samp{Sally}.  The full syntax of the search string
5255 is rich and allows also matching against TODO keywords, entry levels and
5256 properties.  For a complete description with many examples, see @ref{Matching
5257 tags and properties}.
5260 @node Properties and columns
5261 @chapter Properties and columns
5262 @cindex properties
5264 A property is a key-value pair associated with an entry.  Properties can be
5265 set so they are associated with a single entry, with every entry in a tree,
5266 or with every entry in an Org mode file.
5268 There are two main applications for properties in Org mode.  First,
5269 properties are like tags, but with a value.  Imagine maintaining a file where
5270 you document bugs and plan releases for a piece of software.  Instead of
5271 using tags like @code{:release_1:}, @code{:release_2:}, you can use a
5272 property, say @code{:Release:}, that in different subtrees has different
5273 values, such as @code{1.0} or @code{2.0}.  Second, you can use properties to
5274 implement (very basic) database capabilities in an Org buffer.  Imagine
5275 keeping track of your music CDs, where properties could be things such as the
5276 album, artist, date of release, number of tracks, and so on.
5278 Properties can be conveniently edited and viewed in column view
5279 (@pxref{Column view}).
5281 @menu
5282 * Property syntax::             How properties are spelled out
5283 * Special properties::          Access to other Org mode features
5284 * Property searches::           Matching property values
5285 * Property inheritance::        Passing values down the tree
5286 * Column view::                 Tabular viewing and editing
5287 * Property API::                Properties for Lisp programmers
5288 @end menu
5290 @node Property syntax
5291 @section Property syntax
5292 @cindex property syntax
5293 @cindex drawer, for properties
5295 Properties are key-value pairs.  When they are associated with a single entry
5296 or with a tree they need to be inserted into a special drawer
5297 (@pxref{Drawers}) with the name @code{PROPERTIES}, which has to be located
5298 right below a headline, and its planning line (@pxref{Deadlines and
5299 scheduling}) when applicable.  Each property is specified on a single line,
5300 with the key (surrounded by colons) first, and the value after it.  Keys are
5301 case-insensitive.  Here is an example:
5303 @example
5304 * CD collection
5305 ** Classic
5306 *** Goldberg Variations
5307     :PROPERTIES:
5308     :Title:     Goldberg Variations
5309     :Composer:  J.S. Bach
5310     :Artist:    Glen Gould
5311     :Publisher: Deutsche Grammophon
5312     :NDisks:    1
5313     :END:
5314 @end example
5316 Depending on the value of @code{org-use-property-inheritance}, a property set
5317 this way will either be associated with a single entry, or the subtree
5318 defined by the entry, see @ref{Property inheritance}.
5320 You may define the allowed values for a particular property @samp{:Xyz:}
5321 by setting a property @samp{:Xyz_ALL:}.  This special property is
5322 @emph{inherited}, so if you set it in a level 1 entry, it will apply to
5323 the entire tree.  When allowed values are defined, setting the
5324 corresponding property becomes easier and is less prone to typing
5325 errors.  For the example with the CD collection, we can predefine
5326 publishers and the number of disks in a box like this:
5328 @example
5329 * CD collection
5330   :PROPERTIES:
5331   :NDisks_ALL:  1 2 3 4
5332   :Publisher_ALL: "Deutsche Grammophon" Philips EMI
5333   :END:
5334 @end example
5336 If you want to set properties that can be inherited by any entry in a
5337 file, use a line like
5338 @cindex property, _ALL
5339 @cindex #+PROPERTY
5340 @example
5341 #+PROPERTY: NDisks_ALL 1 2 3 4
5342 @end example
5344 Contrary to properties set from a special drawer, you have to refresh the
5345 buffer with @kbd{C-c C-c} to activate this change.
5347 If you want to add to the value of an existing property, append a @code{+} to
5348 the property name.  The following results in the property @code{var} having
5349 the value ``foo=1 bar=2''.
5350 @cindex property, +
5351 @example
5352 #+PROPERTY: var  foo=1
5353 #+PROPERTY: var+ bar=2
5354 @end example
5356 It is also possible to add to the values of inherited properties.  The
5357 following results in the @code{genres} property having the value ``Classic
5358 Baroque'' under the @code{Goldberg Variations} subtree.
5359 @cindex property, +
5360 @example
5361 * CD collection
5362 ** Classic
5363     :PROPERTIES:
5364     :GENRES: Classic
5365     :END:
5366 *** Goldberg Variations
5367     :PROPERTIES:
5368     :Title:     Goldberg Variations
5369     :Composer:  J.S. Bach
5370     :Artist:    Glen Gould
5371     :Publisher: Deutsche Grammophon
5372     :NDisks:    1
5373     :GENRES+:   Baroque
5374     :END:
5375 @end example
5376 Note that a property can only have one entry per Drawer.
5378 @vindex org-global-properties
5379 Property values set with the global variable
5380 @code{org-global-properties} can be inherited by all entries in all
5381 Org files.
5383 @noindent
5384 The following commands help to work with properties:
5386 @table @kbd
5387 @orgcmd{M-@key{TAB},pcomplete}
5388 After an initial colon in a line, complete property keys.  All keys used
5389 in the current file will be offered as possible completions.
5390 @orgcmd{C-c C-x p,org-set-property}
5391 Set a property.  This prompts for a property name and a value.  If
5392 necessary, the property drawer is created as well.
5393 @item C-u M-x org-insert-drawer RET
5394 @cindex org-insert-drawer
5395 Insert a property drawer into the current entry.  The drawer will be
5396 inserted early in the entry, but after the lines with planning
5397 information like deadlines.
5398 @orgcmd{C-c C-c,org-property-action}
5399 With the cursor in a property drawer, this executes property commands.
5400 @orgcmd{C-c C-c s,org-set-property}
5401 Set a property in the current entry.  Both the property and the value
5402 can be inserted using completion.
5403 @orgcmdkkcc{S-@key{right},S-@key{left},org-property-next-allowed-value,org-property-previous-allowed-value}
5404 Switch property at point to the next/previous allowed value.
5405 @orgcmd{C-c C-c d,org-delete-property}
5406 Remove a property from the current entry.
5407 @orgcmd{C-c C-c D,org-delete-property-globally}
5408 Globally remove a property, from all entries in the current file.
5409 @orgcmd{C-c C-c c,org-compute-property-at-point}
5410 Compute the property at point, using the operator and scope from the
5411 nearest column format definition.
5412 @end table
5414 @node Special properties
5415 @section Special properties
5416 @cindex properties, special
5418 Special properties provide an alternative access method to Org mode features,
5419 like the TODO state or the priority of an entry, discussed in the previous
5420 chapters.  This interface exists so that you can include these states in
5421 a column view (@pxref{Column view}), or to use them in queries.  The
5422 following property names are special and should not be used as keys in the
5423 properties drawer:
5425 @cindex property, special, ALLTAGS
5426 @cindex property, special, BLOCKED
5427 @cindex property, special, CLOCKSUM
5428 @cindex property, special, CLOCKSUM_T
5429 @cindex property, special, CLOSED
5430 @cindex property, special, DEADLINE
5431 @cindex property, special, FILE
5432 @cindex property, special, ITEM
5433 @cindex property, special, PRIORITY
5434 @cindex property, special, SCHEDULED
5435 @cindex property, special, TAGS
5436 @cindex property, special, TIMESTAMP
5437 @cindex property, special, TIMESTAMP_IA
5438 @cindex property, special, TODO
5439 @example
5440 ALLTAGS      @r{All tags, including inherited ones.}
5441 BLOCKED      @r{"t" if task is currently blocked by children or siblings.}
5442 CLOCKSUM     @r{The sum of CLOCK intervals in the subtree.  @code{org-clock-sum}}
5443              @r{must be run first to compute the values in the current buffer.}
5444 CLOCKSUM_T   @r{The sum of CLOCK intervals in the subtree for today.}
5445              @r{@code{org-clock-sum-today} must be run first to compute the}
5446              @r{values in the current buffer.}
5447 CLOSED       @r{When was this entry closed?}
5448 DEADLINE     @r{The deadline time string, without the angular brackets.}
5449 FILE         @r{The filename the entry is located in.}
5450 ITEM         @r{The headline of the entry.}
5451 PRIORITY     @r{The priority of the entry, a string with a single letter.}
5452 SCHEDULED    @r{The scheduling timestamp, without the angular brackets.}
5453 TAGS         @r{The tags defined directly in the headline.}
5454 TIMESTAMP    @r{The first keyword-less timestamp in the entry.}
5455 TIMESTAMP_IA @r{The first inactive timestamp in the entry.}
5456 TODO         @r{The TODO keyword of the entry.}
5457 @end example
5459 @node Property searches
5460 @section Property searches
5461 @cindex properties, searching
5462 @cindex searching, of properties
5464 To create sparse trees and special lists with selection based on properties,
5465 the same commands are used as for tag searches (@pxref{Tag searches}).
5467 @table @kbd
5468 @orgcmdkkc{C-c / m,C-c \\,org-match-sparse-tree}
5469 Create a sparse tree with all matching entries.  With a
5470 @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
5471 @orgcmd{C-c a m,org-tags-view}
5472 Create a global list of tag/property  matches from all agenda files.
5473 @xref{Matching tags and properties}.
5474 @orgcmd{C-c a M,org-tags-view}
5475 @vindex org-tags-match-list-sublevels
5476 Create a global list of tag matches from all agenda files, but check
5477 only TODO items and force checking of subitems (see the option
5478 @code{org-tags-match-list-sublevels}).
5479 @end table
5481 The syntax for the search string is described in @ref{Matching tags and
5482 properties}.
5484 There is also a special command for creating sparse trees based on a
5485 single property:
5487 @table @kbd
5488 @orgkey{C-c / p}
5489 Create a sparse tree based on the value of a property.  This first
5490 prompts for the name of a property, and then for a value.  A sparse tree
5491 is created with all entries that define this property with the given
5492 value.  If you enclose the value in curly braces, it is interpreted as
5493 a regular expression and matched against the property values.
5494 @end table
5496 @node Property inheritance
5497 @section Property Inheritance
5498 @cindex properties, inheritance
5499 @cindex inheritance, of properties
5501 @vindex org-use-property-inheritance
5502 The outline structure of Org mode documents lends itself to an
5503 inheritance model of properties: if the parent in a tree has a certain
5504 property, the children can inherit this property.  Org mode does not
5505 turn this on by default, because it can slow down property searches
5506 significantly and is often not needed.  However, if you find inheritance
5507 useful, you can turn it on by setting the variable
5508 @code{org-use-property-inheritance}.  It may be set to @code{t} to make
5509 all properties inherited from the parent, to a list of properties
5510 that should be inherited, or to a regular expression that matches
5511 inherited properties.  If a property has the value @code{nil}, this is
5512 interpreted as an explicit undefine of the property, so that inheritance
5513 search will stop at this value and return @code{nil}.
5515 Org mode has a few properties for which inheritance is hard-coded, at
5516 least for the special applications for which they are used:
5518 @cindex property, COLUMNS
5519 @table @code
5520 @item COLUMNS
5521 The @code{:COLUMNS:} property defines the format of column view
5522 (@pxref{Column view}).  It is inherited in the sense that the level
5523 where a @code{:COLUMNS:} property is defined is used as the starting
5524 point for a column view table, independently of the location in the
5525 subtree from where columns view is turned on.
5526 @item CATEGORY
5527 @cindex property, CATEGORY
5528 For agenda view, a category set through a @code{:CATEGORY:} property
5529 applies to the entire subtree.
5530 @item ARCHIVE
5531 @cindex property, ARCHIVE
5532 For archiving, the @code{:ARCHIVE:} property may define the archive
5533 location for the entire subtree (@pxref{Moving subtrees}).
5534 @item LOGGING
5535 @cindex property, LOGGING
5536 The LOGGING property may define logging settings for an entry or a
5537 subtree (@pxref{Tracking TODO state changes}).
5538 @end table
5540 @node Column view
5541 @section Column view
5543 A great way to view and edit properties in an outline tree is
5544 @emph{column view}.  In column view, each outline node is turned into a
5545 table row.  Columns in this table provide access to properties of the
5546 entries.  Org mode implements columns by overlaying a tabular structure
5547 over the headline of each item.  While the headlines have been turned
5548 into a table row, you can still change the visibility of the outline
5549 tree.  For example, you get a compact table by switching to CONTENTS
5550 view (@kbd{S-@key{TAB} S-@key{TAB}}, or simply @kbd{c} while column view
5551 is active), but you can still open, read, and edit the entry below each
5552 headline.  Or, you can switch to column view after executing a sparse
5553 tree command and in this way get a table only for the selected items.
5554 Column view also works in agenda buffers (@pxref{Agenda views}) where
5555 queries have collected selected items, possibly from a number of files.
5557 @menu
5558 * Defining columns::            The COLUMNS format property
5559 * Using column view::           How to create and use column view
5560 * Capturing column view::       A dynamic block for column view
5561 @end menu
5563 @node Defining columns
5564 @subsection Defining columns
5565 @cindex column view, for properties
5566 @cindex properties, column view
5568 Setting up a column view first requires defining the columns.  This is
5569 done by defining a column format line.
5571 @menu
5572 * Scope of column definitions::  Where defined, where valid?
5573 * Column attributes::           Appearance and content of a column
5574 @end menu
5576 @node Scope of column definitions
5577 @subsubsection Scope of column definitions
5579 To define a column format for an entire file, use a line like
5581 @cindex #+COLUMNS
5582 @example
5583 #+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
5584 @end example
5586 To specify a format that only applies to a specific tree, add a
5587 @code{:COLUMNS:} property to the top node of that tree, for example:
5589 @example
5590 ** Top node for columns view
5591    :PROPERTIES:
5592    :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
5593    :END:
5594 @end example
5596 If a @code{:COLUMNS:} property is present in an entry, it defines columns
5597 for the entry itself, and for the entire subtree below it.  Since the
5598 column definition is part of the hierarchical structure of the document,
5599 you can define columns on level 1 that are general enough for all
5600 sublevels, and more specific columns further down, when you edit a
5601 deeper part of the tree.
5603 @node Column attributes
5604 @subsubsection Column attributes
5605 A column definition sets the attributes of a column.  The general
5606 definition looks like this:
5608 @example
5609  %[@var{width}]@var{property}[(@var{title})][@{@var{summary-type}@}]
5610 @end example
5612 @noindent
5613 Except for the percent sign and the property name, all items are
5614 optional.  The individual parts have the following meaning:
5616 @example
5617 @var{width}           @r{An integer specifying the width of the column in characters.}
5618                 @r{If omitted, the width will be determined automatically.}
5619 @var{property}        @r{The property that should be edited in this column.}
5620                 @r{Special properties representing meta data are allowed here}
5621                 @r{as well (@pxref{Special properties})}
5622 @var{title}           @r{The header text for the column.  If omitted, the property}
5623                 @r{name is used.}
5624 @{@var{summary-type}@}  @r{The summary type.  If specified, the column values for}
5625                 @r{parent nodes are computed from the children@footnote{If
5626                 more than one summary type apply to the property, the parent
5627                 values are computed according to the first of them.}.}
5628                 @r{Supported summary types are:}
5629                 @{+@}       @r{Sum numbers in this column.}
5630                 @{+;%.1f@}  @r{Like @samp{+}, but format result with @samp{%.1f}.}
5631                 @{$@}       @r{Currency, short for @samp{+;%.2f}.}
5632                 @{min@}     @r{Smallest number in column.}
5633                 @{max@}     @r{Largest number.}
5634                 @{mean@}    @r{Arithmetic mean of numbers.}
5635                 @{X@}       @r{Checkbox status, @samp{[X]} if all children are @samp{[X]}.}
5636                 @{X/@}      @r{Checkbox status, @samp{[n/m]}.}
5637                 @{X%@}      @r{Checkbox status, @samp{[n%]}.}
5638                 @{:@}       @r{Sum times, HH:MM, plain numbers are
5639                 hours@footnote{A time can also be a duration, using effort
5640                 modifiers defined in @code{org-effort-durations}, e.g.,
5641                 @samp{3d 1h}.  If any value in the column is as such, the
5642                 summary will also be an effort duration.}.}
5643                 @{:min@}    @r{Smallest time value in column.}
5644                 @{:max@}    @r{Largest time value.}
5645                 @{:mean@}   @r{Arithmetic mean of time values.}
5646                 @{@@min@}    @r{Minimum age@footnote{An age is defined as
5647                 a duration since a given time-stamp (@pxref{Timestamps}).  It
5648                 can  also be expressed as days, hours, minutes and seconds,
5649                 identified by @samp{d}, @samp{h}, @samp{m} and @samp{s}
5650                 suffixes, all mandatory, e.g., @samp{0d 13h 0m 10s}.} (in
5651                 days/hours/mins/seconds).}
5652                 @{@@max@}    @r{Maximum age (in days/hours/mins/seconds).}
5653                 @{@@mean@}   @r{Arithmetic mean of ages (in days/hours/mins/seconds).}
5654                 @{est+@}    @r{Add @samp{low-high} estimates.}
5655 @end example
5657 The @code{est+} summary type requires further explanation.  It is used for
5658 combining estimates, expressed as @samp{low-high} ranges or plain numbers.
5659 For example, instead of estimating a particular task will take 5 days, you
5660 might estimate it as 5--6 days if you're fairly confident you know how much
5661 work is required, or 1--10 days if you don't really know what needs to be
5662 done.  Both ranges average at 5.5 days, but the first represents a more
5663 predictable delivery.
5665 When combining a set of such estimates, simply adding the lows and highs
5666 produces an unrealistically wide result.  Instead, @code{est+} adds the
5667 statistical mean and variance of the sub-tasks, generating a final estimate
5668 from the sum.  For example, suppose you had ten tasks, each of which was
5669 estimated at 0.5 to 2 days of work.  Straight addition produces an estimate
5670 of 5 to 20 days, representing what to expect if everything goes either
5671 extremely well or extremely poorly.  In contrast, @code{est+} estimates the
5672 full job more realistically, at 10--15 days.
5674 Numbers are right-aligned when a format specifier with an explicit width like
5675 @code{%5d} or @code{%5.1f} is used.
5677 @vindex org-columns-summary-types
5678 You can also define custom summary types by setting
5679 @code{org-columns-summary-types}, which see.
5681 Here is an example for a complete columns definition, along with allowed
5682 values.
5684 @example
5685 :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.}
5686                    %10Time_Estimate@{:@} %CLOCKSUM %CLOCKSUM_T
5687 :Owner_ALL:    Tammy Mark Karl Lisa Don
5688 :Status_ALL:   "In progress" "Not started yet" "Finished" ""
5689 :Approved_ALL: "[ ]" "[X]"
5690 @end example
5692 @noindent
5693 The first column, @samp{%25ITEM}, means the first 25 characters of the
5694 item itself, i.e., of the headline.  You probably always should start the
5695 column definition with the @samp{ITEM} specifier.  The other specifiers
5696 create columns @samp{Owner} with a list of names as allowed values, for
5697 @samp{Status} with four different possible values, and for a checkbox
5698 field @samp{Approved}.  When no width is given after the @samp{%}
5699 character, the column will be exactly as wide as it needs to be in order
5700 to fully display all values.  The @samp{Approved} column does have a
5701 modified title (@samp{Approved?}, with a question mark).  Summaries will
5702 be created for the @samp{Time_Estimate} column by adding time duration
5703 expressions like HH:MM, and for the @samp{Approved} column, by providing
5704 an @samp{[X]} status if all children have been checked.  The
5705 @samp{CLOCKSUM} and @samp{CLOCKSUM_T} columns are special, they lists the
5706 sums of CLOCK intervals in the subtree, either for all clocks or just for
5707 today.
5709 @node Using column view
5710 @subsection Using column view
5712 @table @kbd
5713 @tsubheading{Turning column view on and off}
5714 @orgcmd{C-c C-x C-c,org-columns}
5715 @vindex org-columns-default-format
5716 Turn on column view.  If the cursor is before the first headline in the file,
5717 or the function called with the universal prefix argument, column view is
5718 turned on for the entire file, using the @code{#+COLUMNS} definition.  If the
5719 cursor is somewhere inside the outline, this command searches the hierarchy,
5720 up from point, for a @code{:COLUMNS:} property that defines a format.  When
5721 one is found, the column view table is established for the tree starting at
5722 the entry that contains the @code{:COLUMNS:} property.  If no such property
5723 is found, the format is taken from the @code{#+COLUMNS} line or from the
5724 variable @code{org-columns-default-format}, and column view is established
5725 for the current entry and its subtree.
5726 @orgcmd{r,org-columns-redo}
5727 Recreate the column view, to include recent changes made in the buffer.
5728 @orgcmd{g,org-columns-redo}
5729 Same as @kbd{r}.
5730 @orgcmd{q,org-columns-quit}
5731 Exit column view.
5732 @tsubheading{Editing values}
5733 @item @key{left} @key{right} @key{up} @key{down}
5734 Move through the column view from field to field.
5735 @kindex S-@key{left}
5736 @kindex S-@key{right}
5737 @item  S-@key{left}/@key{right}
5738 Switch to the next/previous allowed value of the field.  For this, you
5739 have to have specified allowed values for a property.
5740 @item 1..9,0
5741 Directly select the Nth allowed value, @kbd{0} selects the 10th value.
5742 @orgcmdkkcc{n,p,org-columns-next-allowed-value,org-columns-previous-allowed-value}
5743 Same as @kbd{S-@key{left}/@key{right}}
5744 @orgcmd{e,org-columns-edit-value}
5745 Edit the property at point.  For the special properties, this will
5746 invoke the same interface that you normally use to change that
5747 property.  For example, when editing a TAGS property, the tag completion
5748 or fast selection interface will pop up.
5749 @orgcmd{C-c C-c,org-columns-set-tags-or-toggle}
5750 When there is a checkbox at point, toggle it.
5751 @orgcmd{v,org-columns-show-value}
5752 View the full value of this property.  This is useful if the width of
5753 the column is smaller than that of the value.
5754 @orgcmd{a,org-columns-edit-allowed}
5755 Edit the list of allowed values for this property.  If the list is found
5756 in the hierarchy, the modified value is stored there.  If no list is
5757 found, the new value is stored in the first entry that is part of the
5758 current column view.
5759 @tsubheading{Modifying the table structure}
5760 @orgcmdkkcc{<,>,org-columns-narrow,org-columns-widen}
5761 Make the column narrower/wider by one character.
5762 @orgcmd{S-M-@key{right},org-columns-new}
5763 Insert a new column, to the left of the current column.
5764 @orgcmd{S-M-@key{left},org-columns-delete}
5765 Delete the current column.
5766 @end table
5768 @node Capturing column view
5769 @subsection Capturing column view
5771 Since column view is just an overlay over a buffer, it cannot be
5772 exported or printed directly.  If you want to capture a column view, use
5773 a @code{columnview} dynamic block (@pxref{Dynamic blocks}).  The frame
5774 of this block looks like this:
5776 @cindex #+BEGIN, columnview
5777 @example
5778 * The column view
5779 #+BEGIN: columnview :hlines 1 :id "label"
5781 #+END:
5782 @end example
5784 @noindent This dynamic block has the following parameters:
5786 @table @code
5787 @item :id
5788 This is the most important parameter.  Column view is a feature that is
5789 often localized to a certain (sub)tree, and the capture block might be
5790 at a different location in the file.  To identify the tree whose view to
5791 capture, you can use 4 values:
5792 @cindex property, ID
5793 @example
5794 local     @r{use the tree in which the capture block is located}
5795 global    @r{make a global view, including all headings in the file}
5796 "file:@var{path-to-file}"
5797           @r{run column view at the top of this file}
5798 "@var{ID}"      @r{call column view in the tree that has an @code{:ID:}}
5799           @r{property with the value @i{label}.  You can use}
5800           @r{@kbd{M-x org-id-copy RET} to create a globally unique ID for}
5801           @r{the current entry and copy it to the kill-ring.}
5802 @end example
5803 @item :hlines
5804 When @code{t}, insert an hline after every line.  When a number @var{N}, insert
5805 an hline before each headline with level @code{<= @var{N}}.
5806 @item :vlines
5807 When set to @code{t}, force column groups to get vertical lines.
5808 @item :maxlevel
5809 When set to a number, don't capture entries below this level.
5810 @item :skip-empty-rows
5811 When set to @code{t}, skip rows where the only non-empty specifier of the
5812 column view is @code{ITEM}.
5813 @item :indent
5814 When non-@code{nil}, indent each @code{ITEM} field according to its level.
5816 @end table
5818 @noindent
5819 The following commands insert or update the dynamic block:
5821 @table @kbd
5822 @orgcmd{C-c C-x i,org-insert-columns-dblock}
5823 Insert a dynamic block capturing a column view.  You will be prompted
5824 for the scope or ID of the view.
5825 @orgcmdkkc{C-c C-c,C-c C-x C-u,org-dblock-update}
5826 Update dynamic block at point.  The cursor needs to be in the
5827 @code{#+BEGIN} line of the dynamic block.
5828 @orgcmd{C-u C-c C-x C-u,org-update-all-dblocks}
5829 Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
5830 you have several clock table blocks, column-capturing blocks or other dynamic
5831 blocks in a buffer.
5832 @end table
5834 You can add formulas to the column view table and you may add plotting
5835 instructions in front of the table---these will survive an update of the
5836 block.  If there is a @code{#+TBLFM:} after the table, the table will
5837 actually be recalculated automatically after an update.
5839 An alternative way to capture and process property values into a table is
5840 provided by Eric Schulte's @file{org-collector.el} which is a contributed
5841 package@footnote{Contributed packages are not part of Emacs, but are
5842 distributed with the main distribution of Org (visit
5843 @uref{http://orgmode.org}).}.  It provides a general API to collect
5844 properties from entries in a certain scope, and arbitrary Lisp expressions to
5845 process these values before inserting them into a table or a dynamic block.
5847 @node Property API
5848 @section The Property API
5849 @cindex properties, API
5850 @cindex API, for properties
5852 There is a full API for accessing and changing properties.  This API can
5853 be used by Emacs Lisp programs to work with properties and to implement
5854 features based on them.  For more information see @ref{Using the
5855 property API}.
5857 @node Dates and times
5858 @chapter Dates and times
5859 @cindex dates
5860 @cindex times
5861 @cindex timestamp
5862 @cindex date stamp
5864 To assist project planning, TODO items can be labeled with a date and/or
5865 a time.  The specially formatted string carrying the date and time
5866 information is called a @emph{timestamp} in Org mode.  This may be a
5867 little confusing because timestamp is often used to indicate when
5868 something was created or last changed.  However, in Org mode this term
5869 is used in a much wider sense.
5871 @menu
5872 * Timestamps::                  Assigning a time to a tree entry
5873 * Creating timestamps::         Commands which insert timestamps
5874 * Deadlines and scheduling::    Planning your work
5875 * Clocking work time::          Tracking how long you spend on a task
5876 * Effort estimates::            Planning work effort in advance
5877 * Timers::                      Notes with a running timer
5878 @end menu
5881 @node Timestamps
5882 @section Timestamps, deadlines, and scheduling
5883 @cindex timestamps
5884 @cindex ranges, time
5885 @cindex date stamps
5886 @cindex deadlines
5887 @cindex scheduling
5889 A timestamp is a specification of a date (possibly with a time or a range of
5890 times) in a special format, either @samp{<2003-09-16 Tue>}@footnote{In this
5891 simplest form, the day name is optional when you type the date yourself.
5892 However, any dates inserted or modified by Org will add that day name, for
5893 reading convenience.} or @samp{<2003-09-16 Tue 09:39>} or @samp{<2003-09-16
5894 Tue 12:00-12:30>}@footnote{This is inspired by the standard ISO 8601
5895 date/time format.  To use an alternative format, see @ref{Custom time
5896 format}.}.  A timestamp can appear anywhere in the headline or body of an Org
5897 tree entry.  Its presence causes entries to be shown on specific dates in the
5898 agenda (@pxref{Weekly/daily agenda}).  We distinguish:
5900 @table @var
5901 @item Plain timestamp; Event; Appointment
5902 @cindex timestamp
5903 @cindex appointment
5904 A simple timestamp just assigns a date/time to an item.  This is just
5905 like writing down an appointment or event in a paper agenda.  In the
5906 timeline and agenda displays, the headline of an entry associated with a
5907 plain timestamp will be shown exactly on that date.
5909 @example
5910 * Meet Peter at the movies
5911   <2006-11-01 Wed 19:15>
5912 * Discussion on climate change
5913   <2006-11-02 Thu 20:00-22:00>
5914 @end example
5916 @item Timestamp with repeater interval
5917 @cindex timestamp, with repeater interval
5918 A timestamp may contain a @emph{repeater interval}, indicating that it
5919 applies not only on the given date, but again and again after a certain
5920 interval of N days (d), weeks (w), months (m), or years (y).  The
5921 following will show up in the agenda every Wednesday:
5923 @example
5924 * Pick up Sam at school
5925   <2007-05-16 Wed 12:30 +1w>
5926 @end example
5928 @item Diary-style sexp entries
5929 For more complex date specifications, Org mode supports using the special
5930 sexp diary entries implemented in the Emacs calendar/diary
5931 package@footnote{When working with the standard diary sexp functions, you
5932 need to be very careful with the order of the arguments.  That order depends
5933 evilly on the variable @code{calendar-date-style} (or, for older Emacs
5934 versions, @code{european-calendar-style}).  For example, to specify a date
5935 December 1, 2005, the call might look like @code{(diary-date 12 1 2005)} or
5936 @code{(diary-date 1 12 2005)} or @code{(diary-date 2005 12 1)}, depending on
5937 the settings.  This has been the source of much confusion.  Org mode users
5938 can resort to special versions of these functions like @code{org-date} or
5939 @code{org-anniversary}.  These work just like the corresponding @code{diary-}
5940 functions, but with stable ISO order of arguments (year, month, day) wherever
5941 applicable, independent of the value of @code{calendar-date-style}.}.  For
5942 example with optional time
5944 @example
5945 * 22:00-23:00 The nerd meeting on every 2nd Thursday of the month
5946   <%%(diary-float t 4 2)>
5947 @end example
5949 @item Time/Date range
5950 @cindex timerange
5951 @cindex date range
5952 Two timestamps connected by @samp{--} denote a range.  The headline
5953 will be shown on the first and last day of the range, and on any dates
5954 that are displayed and fall in the range.  Here is an example:
5956 @example
5957 ** Meeting in Amsterdam
5958    <2004-08-23 Mon>--<2004-08-26 Thu>
5959 @end example
5961 @item Inactive timestamp
5962 @cindex timestamp, inactive
5963 @cindex inactive timestamp
5964 Just like a plain timestamp, but with square brackets instead of
5965 angular ones.  These timestamps are inactive in the sense that they do
5966 @emph{not} trigger an entry to show up in the agenda.
5968 @example
5969 * Gillian comes late for the fifth time
5970   [2006-11-01 Wed]
5971 @end example
5973 @end table
5975 @node Creating timestamps
5976 @section Creating timestamps
5977 @cindex creating timestamps
5978 @cindex timestamps, creating
5980 For Org mode to recognize timestamps, they need to be in the specific
5981 format.  All commands listed below produce timestamps in the correct
5982 format.
5984 @table @kbd
5985 @orgcmd{C-c .,org-time-stamp}
5986 Prompt for a date and insert a corresponding timestamp.  When the cursor is
5987 at an existing timestamp in the buffer, the command is used to modify this
5988 timestamp instead of inserting a new one.  When this command is used twice in
5989 succession, a time range is inserted.
5991 @orgcmd{C-c !,org-time-stamp-inactive}
5992 Like @kbd{C-c .}, but insert an inactive timestamp that will not cause
5993 an agenda entry.
5995 @kindex C-u C-c .
5996 @kindex C-u C-c !
5997 @item C-u C-c .
5998 @itemx C-u C-c !
5999 @vindex org-time-stamp-rounding-minutes
6000 Like @kbd{C-c .} and @kbd{C-c !}, but use the alternative format which
6001 contains date and time.  The default time can be rounded to multiples of 5
6002 minutes, see the option @code{org-time-stamp-rounding-minutes}.
6004 @orgkey{C-c C-c}
6005 Normalize timestamp, insert/fix day name if missing or wrong.
6007 @orgcmd{C-c <,org-date-from-calendar}
6008 Insert a timestamp corresponding to the cursor date in the Calendar.
6010 @orgcmd{C-c >,org-goto-calendar}
6011 Access the Emacs calendar for the current date.  If there is a
6012 timestamp in the current line, go to the corresponding date
6013 instead.
6015 @orgcmd{C-c C-o,org-open-at-point}
6016 Access the agenda for the date given by the timestamp or -range at
6017 point (@pxref{Weekly/daily agenda}).
6019 @orgcmdkkcc{S-@key{left},S-@key{right},org-timestamp-down-day,org-timestamp-up-day}
6020 Change date at cursor by one day.  These key bindings conflict with
6021 shift-selection and related modes (@pxref{Conflicts}).
6023 @orgcmdkkcc{S-@key{up},S-@key{down},org-timestamp-up,org-timestamp-down-down}
6024 Change the item under the cursor in a timestamp.  The cursor can be on a
6025 year, month, day, hour or minute.  When the timestamp contains a time range
6026 like @samp{15:30-16:30}, modifying the first time will also shift the second,
6027 shifting the time block with constant length.  To change the length, modify
6028 the second time.  Note that if the cursor is in a headline and not at a
6029 timestamp, these same keys modify the priority of an item.
6030 (@pxref{Priorities}).  The key bindings also conflict with shift-selection and
6031 related modes (@pxref{Conflicts}).
6033 @orgcmd{C-c C-y,org-evaluate-time-range}
6034 @cindex evaluate time range
6035 Evaluate a time range by computing the difference between start and end.
6036 With a prefix argument, insert result after the time range (in a table: into
6037 the following column).
6038 @end table
6041 @menu
6042 * The date/time prompt::        How Org mode helps you entering date and time
6043 * Custom time format::          Making dates look different
6044 @end menu
6046 @node The date/time prompt
6047 @subsection The date/time prompt
6048 @cindex date, reading in minibuffer
6049 @cindex time, reading in minibuffer
6051 @vindex org-read-date-prefer-future
6052 When Org mode prompts for a date/time, the default is shown in default
6053 date/time format, and the prompt therefore seems to ask for a specific
6054 format.  But it will in fact accept date/time information in a variety of
6055 formats.  Generally, the information should start at the beginning of the
6056 string.  Org mode will find whatever information is in
6057 there and derive anything you have not specified from the @emph{default date
6058 and time}.  The default is usually the current date and time, but when
6059 modifying an existing timestamp, or when entering the second stamp of a
6060 range, it is taken from the stamp in the buffer.  When filling in
6061 information, Org mode assumes that most of the time you will want to enter a
6062 date in the future: if you omit the month/year and the given day/month is
6063 @i{before} today, it will assume that you mean a future date@footnote{See the
6064 variable @code{org-read-date-prefer-future}.  You may set that variable to
6065 the symbol @code{time} to even make a time before now shift the date to
6066 tomorrow.}.  If the date has been automatically shifted into the future, the
6067 time prompt will show this with @samp{(=>F).}
6069 For example, let's assume that today is @b{June 13, 2006}.  Here is how
6070 various inputs will be interpreted, the items filled in by Org mode are
6071 in @b{bold}.
6073 @example
6074 3-2-5         @result{} 2003-02-05
6075 2/5/3         @result{} 2003-02-05
6076 14            @result{} @b{2006}-@b{06}-14
6077 12            @result{} @b{2006}-@b{07}-12
6078 2/5           @result{} @b{2007}-02-05
6079 Fri           @result{} nearest Friday after the default date
6080 sep 15        @result{} @b{2006}-09-15
6081 feb 15        @result{} @b{2007}-02-15
6082 sep 12 9      @result{} 2009-09-12
6083 12:45         @result{} @b{2006}-@b{06}-@b{13} 12:45
6084 22 sept 0:34  @result{} @b{2006}-09-22 00:34
6085 w4            @result{} ISO week four of the current year @b{2006}
6086 2012 w4 fri   @result{} Friday of ISO week 4 in 2012
6087 2012-w04-5    @result{} Same as above
6088 @end example
6090 Furthermore you can specify a relative date by giving, as the @emph{first}
6091 thing in the input: a plus/minus sign, a number and a letter ([hdwmy]) to
6092 indicate change in hours, days, weeks, months, or years.  With a single plus
6093 or minus, the date is always relative to today.  With a double plus or minus,
6094 it is relative to the default date.  If instead of a single letter, you use
6095 the abbreviation of day name, the date will be the Nth such day, e.g.:
6097 @example
6098 +0            @result{} today
6099 .             @result{} today
6100 +4d           @result{} four days from today
6101 +4            @result{} same as above
6102 +2w           @result{} two weeks from today
6103 ++5           @result{} five days from default date
6104 +2tue         @result{} second Tuesday from now
6105 -wed          @result{} last Wednesday
6106 @end example
6108 @vindex parse-time-months
6109 @vindex parse-time-weekdays
6110 The function understands English month and weekday abbreviations.  If
6111 you want to use unabbreviated names and/or other languages, configure
6112 the variables @code{parse-time-months} and @code{parse-time-weekdays}.
6114 @vindex org-read-date-force-compatible-dates
6115 Not all dates can be represented in a given Emacs implementation.  By default
6116 Org mode forces dates into the compatibility range 1970--2037 which works on
6117 all Emacs implementations.  If you want to use dates outside of this range,
6118 read the docstring of the variable
6119 @code{org-read-date-force-compatible-dates}.
6121 You can specify a time range by giving start and end times or by giving a
6122 start time and a duration (in HH:MM format).  Use one or two dash(es) as the
6123 separator in the former case and use '+' as the separator in the latter
6124 case, e.g.:
6126 @example
6127 11am-1:15pm    @result{} 11:00-13:15
6128 11am--1:15pm   @result{} same as above
6129 11am+2:15      @result{} same as above
6130 @end example
6132 @cindex calendar, for selecting date
6133 @vindex org-popup-calendar-for-date-prompt
6134 Parallel to the minibuffer prompt, a calendar is popped up@footnote{If
6135 you don't need/want the calendar, configure the variable
6136 @code{org-popup-calendar-for-date-prompt}.}.  When you exit the date
6137 prompt, either by clicking on a date in the calendar, or by pressing
6138 @key{RET}, the date selected in the calendar will be combined with the
6139 information entered at the prompt.  You can control the calendar fully
6140 from the minibuffer:
6142 @kindex <
6143 @kindex >
6144 @kindex M-v
6145 @kindex C-v
6146 @kindex mouse-1
6147 @kindex S-@key{right}
6148 @kindex S-@key{left}
6149 @kindex S-@key{down}
6150 @kindex S-@key{up}
6151 @kindex M-S-@key{right}
6152 @kindex M-S-@key{left}
6153 @kindex @key{RET}
6154 @kindex M-S-@key{down}
6155 @kindex M-S-@key{up}
6157 @example
6158 @key{RET}              @r{Choose date at cursor in calendar.}
6159 mouse-1            @r{Select date by clicking on it.}
6160 S-@key{right}/@key{left}   @r{One day forward/backward.}
6161 S-@key{down}/@key{up}      @r{One week forward/backward.}
6162 M-S-@key{right}/@key{left} @r{One month forward/backward.}
6163 > / <              @r{Scroll calendar forward/backward by one month.}
6164 M-v / C-v          @r{Scroll calendar forward/backward by 3 months.}
6165 M-S-@key{down}/@key{up}    @r{Scroll calendar forward/backward by one year.}
6166 @end example
6168 @vindex org-read-date-display-live
6169 The actions of the date/time prompt may seem complex, but I assure you they
6170 will grow on you, and you will start getting annoyed by pretty much any other
6171 way of entering a date/time out there.  To help you understand what is going
6172 on, the current interpretation of your input will be displayed live in the
6173 minibuffer@footnote{If you find this distracting, turn the display off with
6174 @code{org-read-date-display-live}.}.
6176 @node Custom time format
6177 @subsection Custom time format
6178 @cindex custom date/time format
6179 @cindex time format, custom
6180 @cindex date format, custom
6182 @vindex org-display-custom-times
6183 @vindex org-time-stamp-custom-formats
6184 Org mode uses the standard ISO notation for dates and times as it is
6185 defined in ISO 8601.  If you cannot get used to this and require another
6186 representation of date and time to keep you happy, you can get it by
6187 customizing the options @code{org-display-custom-times} and
6188 @code{org-time-stamp-custom-formats}.
6190 @table @kbd
6191 @orgcmd{C-c C-x C-t,org-toggle-time-stamp-overlays}
6192 Toggle the display of custom formats for dates and times.
6193 @end table
6195 @noindent
6196 Org mode needs the default format for scanning, so the custom date/time
6197 format does not @emph{replace} the default format---instead it is put
6198 @emph{over} the default format using text properties.  This has the
6199 following consequences:
6200 @itemize @bullet
6201 @item
6202 You cannot place the cursor onto a timestamp anymore, only before or
6203 after.
6204 @item
6205 The @kbd{S-@key{up}/@key{down}} keys can no longer be used to adjust
6206 each component of a timestamp.  If the cursor is at the beginning of
6207 the stamp, @kbd{S-@key{up}/@key{down}} will change the stamp by one day,
6208 just like @kbd{S-@key{left}/@key{right}}.  At the end of the stamp, the
6209 time will be changed by one minute.
6210 @item
6211 If the timestamp contains a range of clock times or a repeater, these
6212 will not be overlaid, but remain in the buffer as they were.
6213 @item
6214 When you delete a timestamp character-by-character, it will only
6215 disappear from the buffer after @emph{all} (invisible) characters
6216 belonging to the ISO timestamp have been removed.
6217 @item
6218 If the custom timestamp format is longer than the default and you are
6219 using dates in tables, table alignment will be messed up.  If the custom
6220 format is shorter, things do work as expected.
6221 @end itemize
6224 @node Deadlines and scheduling
6225 @section Deadlines and scheduling
6227 A timestamp may be preceded by special keywords to facilitate planning.  Both
6228 the timestamp and the keyword have to be positioned immediately after the task
6229 they refer to.
6231 @table @var
6232 @item DEADLINE
6233 @cindex DEADLINE keyword
6235 Meaning: the task (most likely a TODO item, though not necessarily) is supposed
6236 to be finished on that date.
6238 @vindex org-deadline-warning-days
6239 @vindex org-agenda-skip-deadline-prewarning-if-scheduled
6240 On the deadline date, the task will be listed in the agenda.  In
6241 addition, the agenda for @emph{today} will carry a warning about the
6242 approaching or missed deadline, starting
6243 @code{org-deadline-warning-days} before the due date, and continuing
6244 until the entry is marked DONE@.  An example:
6246 @example
6247 *** TODO write article about the Earth for the Guide
6248     DEADLINE: <2004-02-29 Sun>
6249     The editor in charge is [[bbdb:Ford Prefect]]
6250 @end example
6252 You can specify a different lead time for warnings for a specific
6253 deadline using the following syntax.  Here is an example with a warning
6254 period of 5 days @code{DEADLINE: <2004-02-29 Sun -5d>}.  This warning is
6255 deactivated if the task gets scheduled and you set
6256 @code{org-agenda-skip-deadline-prewarning-if-scheduled} to @code{t}.
6258 @item SCHEDULED
6259 @cindex SCHEDULED keyword
6261 Meaning: you are planning to start working on that task on the given
6262 date.
6264 @vindex org-agenda-skip-scheduled-if-done
6265 The headline will be listed under the given date@footnote{It will still
6266 be listed on that date after it has been marked DONE@.  If you don't like
6267 this, set the variable @code{org-agenda-skip-scheduled-if-done}.}.  In
6268 addition, a reminder that the scheduled date has passed will be present
6269 in the compilation for @emph{today}, until the entry is marked DONE, i.e.,
6270 the task will automatically be forwarded until completed.
6272 @example
6273 *** TODO Call Trillian for a date on New Years Eve.
6274     SCHEDULED: <2004-12-25 Sat>
6275 @end example
6277 @vindex org-scheduled-delay-days
6278 @vindex org-agenda-skip-scheduled-delay-if-deadline
6279 If you want to @emph{delay} the display of this task in the agenda, use
6280 @code{SCHEDULED: <2004-12-25 Sat -2d>}: the task is still scheduled on the
6281 25th but will appear two days later.  In case the task contains a repeater,
6282 the delay is considered to affect all occurrences; if you want the delay to
6283 only affect the first scheduled occurrence of the task, use @code{--2d}
6284 instead.  See @code{org-scheduled-delay-days} and
6285 @code{org-agenda-skip-scheduled-delay-if-deadline} for details on how to
6286 control this globally or per agenda.
6288 @noindent
6289 @b{Important:} Scheduling an item in Org mode should @i{not} be
6290 understood in the same way that we understand @i{scheduling a meeting}.
6291 Setting a date for a meeting is just a simple appointment, you should
6292 mark this entry with a simple plain timestamp, to get this item shown
6293 on the date where it applies.  This is a frequent misunderstanding by
6294 Org users.  In Org mode, @i{scheduling} means setting a date when you
6295 want to start working on an action item.
6296 @end table
6298 You may use timestamps with repeaters in scheduling and deadline
6299 entries.  Org mode will issue early and late warnings based on the
6300 assumption that the timestamp represents the @i{nearest instance} of
6301 the repeater.  However, the use of diary sexp entries like
6303 @code{<%%(diary-float t 42)>}
6305 in scheduling and deadline timestamps is limited.  Org mode does not
6306 know enough about the internals of each sexp function to issue early and
6307 late warnings.  However, it will show the item on each day where the
6308 sexp entry matches.
6310 @menu
6311 * Inserting deadline/schedule::  Planning items
6312 * Repeated tasks::              Items that show up again and again
6313 @end menu
6315 @node Inserting deadline/schedule
6316 @subsection Inserting deadlines or schedules
6318 The following commands allow you to quickly insert a deadline or to schedule
6319 an item:
6321 @table @kbd
6323 @orgcmd{C-c C-d,org-deadline}
6324 Insert @samp{DEADLINE} keyword along with a stamp.  Any CLOSED timestamp will
6325 be removed.  When called with a prefix arg, an existing deadline will be
6326 removed from the entry.  Depending on the variable
6327 @code{org-log-redeadline}@footnote{with corresponding @code{#+STARTUP}
6328 keywords @code{logredeadline}, @code{lognoteredeadline}, and
6329 @code{nologredeadline}}, a note will be taken when changing an existing
6330 deadline.
6332 @orgcmd{C-c C-s,org-schedule}
6333 Insert @samp{SCHEDULED} keyword along with a stamp.  Any CLOSED timestamp
6334 will be removed.  When called with a prefix argument, remove the scheduling
6335 date from the entry.  Depending on the variable
6336 @code{org-log-reschedule}@footnote{with corresponding @code{#+STARTUP}
6337 keywords @code{logreschedule}, @code{lognotereschedule}, and
6338 @code{nologreschedule}}, a note will be taken when changing an existing
6339 scheduling time.
6341 @orgcmd{C-c / d,org-check-deadlines}
6342 @cindex sparse tree, for deadlines
6343 @vindex org-deadline-warning-days
6344 Create a sparse tree with all deadlines that are either past-due, or
6345 which will become due within @code{org-deadline-warning-days}.
6346 With @kbd{C-u} prefix, show all deadlines in the file.  With a numeric
6347 prefix, check that many days.  For example, @kbd{C-1 C-c / d} shows
6348 all deadlines due tomorrow.
6350 @orgcmd{C-c / b,org-check-before-date}
6351 Sparse tree for deadlines and scheduled items before a given date.
6353 @orgcmd{C-c / a,org-check-after-date}
6354 Sparse tree for deadlines and scheduled items after a given date.
6355 @end table
6357 Note that @code{org-schedule} and @code{org-deadline} supports
6358 setting the date by indicating a relative time: e.g., +1d will set
6359 the date to the next day after today, and --1w will set the date
6360 to the previous week before any current timestamp.
6362 @node Repeated tasks
6363 @subsection Repeated tasks
6364 @cindex tasks, repeated
6365 @cindex repeated tasks
6367 Some tasks need to be repeated again and again.  Org mode helps to
6368 organize such tasks using a so-called repeater in a DEADLINE, SCHEDULED,
6369 or plain timestamp.  In the following example
6370 @example
6371 ** TODO Pay the rent
6372    DEADLINE: <2005-10-01 Sat +1m>
6373 @end example
6374 @noindent
6375 the @code{+1m} is a repeater; the intended interpretation is that the task
6376 has a deadline on <2005-10-01> and repeats itself every (one) month starting
6377 from that time.  You can use yearly, monthly, weekly, daily and hourly repeat
6378 cookies by using the @code{y/w/m/d/h} letters.  If you need both a repeater
6379 and a special warning period in a deadline entry, the repeater should come
6380 first and the warning period last: @code{DEADLINE: <2005-10-01 Sat +1m -3d>}.
6382 @vindex org-todo-repeat-to-state
6383 Deadlines and scheduled items produce entries in the agenda when they are
6384 over-due, so it is important to be able to mark such an entry as completed
6385 once you have done so.  When you mark a DEADLINE or a SCHEDULE with the TODO
6386 keyword DONE, it will no longer produce entries in the agenda.  The problem
6387 with this is, however, that then also the @emph{next} instance of the
6388 repeated entry will not be active.  Org mode deals with this in the following
6389 way: When you try to mark such an entry DONE (using @kbd{C-c C-t}), it will
6390 shift the base date of the repeating timestamp by the repeater interval, and
6391 immediately set the entry state back to TODO@footnote{In fact, the target
6392 state is taken from, in this sequence, the @code{REPEAT_TO_STATE} property or
6393 the variable @code{org-todo-repeat-to-state}.  If neither of these is
6394 specified, the target state defaults to the first state of the TODO state
6395 sequence.}.  In the example above, setting the state to DONE would actually
6396 switch the date like this:
6398 @example
6399 ** TODO Pay the rent
6400    DEADLINE: <2005-11-01 Tue +1m>
6401 @end example
6403 To mark a task with a repeater as @code{DONE}, use @kbd{C-- 1 C-c C-t}
6404 (i.e., @code{org-todo} with a numeric prefix argument of -1.)
6406 @vindex org-log-repeat
6407 A timestamp@footnote{You can change this using the option
6408 @code{org-log-repeat}, or the @code{#+STARTUP} options @code{logrepeat},
6409 @code{lognoterepeat}, and @code{nologrepeat}.  With @code{lognoterepeat}, you
6410 will also be prompted for a note.} will be added under the deadline, to keep
6411 a record that you actually acted on the previous instance of this deadline.
6413 As a consequence of shifting the base date, this entry will no longer be
6414 visible in the agenda when checking past dates, but all future instances
6415 will be visible.
6417 With the @samp{+1m} cookie, the date shift will always be exactly one
6418 month.  So if you have not paid the rent for three months, marking this
6419 entry DONE will still keep it as an overdue deadline.  Depending on the
6420 task, this may not be the best way to handle it.  For example, if you
6421 forgot to call your father for 3 weeks, it does not make sense to call
6422 him 3 times in a single day to make up for it.  Finally, there are tasks
6423 like changing batteries which should always repeat a certain time
6424 @i{after} the last time you did it.  For these tasks, Org mode has
6425 special repeaters  @samp{++} and @samp{.+}.  For example:
6427 @example
6428 ** TODO Call Father
6429    DEADLINE: <2008-02-10 Sun ++1w>
6430    Marking this DONE will shift the date by at least one week,
6431    but also by as many weeks as it takes to get this date into
6432    the future.  However, it stays on a Sunday, even if you called
6433    and marked it done on Saturday.
6434 ** TODO Empty kitchen trash
6435    DEADLINE: <2008-02-08 Fri 20:00 ++1d>
6436    Marking this DONE will shift the date by at least one day, and
6437    also by as many days as it takes to get the timestamp into the
6438    future.  Since there is a time in the timestamp, the next
6439    deadline in the future will be on today's date if you
6440    complete the task before 20:00.
6441 ** TODO Check the batteries in the smoke detectors
6442    DEADLINE: <2005-11-01 Tue .+1m>
6443    Marking this DONE will shift the date to one month after
6444    today.
6445 @end example
6447 @vindex org-agenda-skip-scheduled-if-deadline-is-shown
6448 You may have both scheduling and deadline information for a specific task.
6449 If the repeater is set for the scheduling information only, you probably want
6450 the repeater to be ignored after the deadline.  If so, set the variable
6451 @code{org-agenda-skip-scheduled-if-deadline-is-shown} to
6452 @code{repeated-after-deadline}.  However, any scheduling information without
6453 a repeater is no longer relevant once the task is done, and thus, removed
6454 upon repeating the task.  If you want both scheduling and deadline
6455 information to repeat after the same interval, set the same repeater for both
6456 timestamps.
6458 An alternative to using a repeater is to create a number of copies of a task
6459 subtree, with dates shifted in each copy.  The command @kbd{C-c C-x c} was
6460 created for this purpose, it is described in @ref{Structure editing}.
6463 @node Clocking work time
6464 @section Clocking work time
6465 @cindex clocking time
6466 @cindex time clocking
6468 Org mode allows you to clock the time you spend on specific tasks in a
6469 project.  When you start working on an item, you can start the clock.  When
6470 you stop working on that task, or when you mark the task done, the clock is
6471 stopped and the corresponding time interval is recorded.  It also computes
6472 the total time spent on each subtree@footnote{Clocking only works if all
6473 headings are indented with less than 30 stars.  This is a hardcoded
6474 limitation of @code{lmax} in @code{org-clock-sum}.} of a project.
6475 And it remembers a history or tasks recently clocked, so that you can jump
6476 quickly between a number of tasks absorbing your time.
6478 To save the clock history across Emacs sessions, use
6479 @lisp
6480 (setq org-clock-persist 'history)
6481 (org-clock-persistence-insinuate)
6482 @end lisp
6483 When you clock into a new task after resuming Emacs, the incomplete
6484 clock@footnote{To resume the clock under the assumption that you have worked
6485 on this task while outside Emacs, use @code{(setq org-clock-persist t)}.}
6486 will be found (@pxref{Resolving idle time}) and you will be prompted about
6487 what to do with it.
6489 @menu
6490 * Clocking commands::           Starting and stopping a clock
6491 * The clock table::             Detailed reports
6492 * Resolving idle time::         Resolving time when you've been idle
6493 @end menu
6495 @node Clocking commands
6496 @subsection Clocking commands
6498 @table @kbd
6499 @orgcmd{C-c C-x C-i,org-clock-in}
6500 @vindex org-clock-into-drawer
6501 @vindex org-clock-continuously
6502 @cindex property, LOG_INTO_DRAWER
6503 Start the clock on the current item (clock-in).  This inserts the CLOCK
6504 keyword together with a timestamp.  If this is not the first clocking of
6505 this item, the multiple CLOCK lines will be wrapped into a
6506 @code{:LOGBOOK:} drawer (see also the variable
6507 @code{org-clock-into-drawer}).  You can also overrule
6508 the setting of this variable for a subtree by setting a
6509 @code{CLOCK_INTO_DRAWER} or @code{LOG_INTO_DRAWER} property.
6510 When called with a @kbd{C-u} prefix argument,
6511 select the task from a list of recently clocked tasks.  With two @kbd{C-u
6512 C-u} prefixes, clock into the task at point and mark it as the default task;
6513 the default task will then always be available with letter @kbd{d} when
6514 selecting a clocking task.  With three @kbd{C-u C-u C-u} prefixes, force
6515 continuous clocking by starting the clock when the last clock stopped.@*
6516 @cindex property: CLOCK_MODELINE_TOTAL
6517 @cindex property: LAST_REPEAT
6518 @vindex org-clock-modeline-total
6519 While the clock is running, the current clocking time is shown in the mode
6520 line, along with the title of the task.  The clock time shown will be all
6521 time ever clocked for this task and its children.  If the task has an effort
6522 estimate (@pxref{Effort estimates}), the mode line displays the current
6523 clocking time against it@footnote{To add an effort estimate ``on the fly'',
6524 hook a function doing this to @code{org-clock-in-prepare-hook}.}  If the task
6525 is a repeating one (@pxref{Repeated tasks}), only the time since the last
6526 reset of the task @footnote{as recorded by the @code{LAST_REPEAT} property}
6527 will be shown.  More control over what time is shown can be exercised with
6528 the @code{CLOCK_MODELINE_TOTAL} property.  It may have the values
6529 @code{current} to show only the current clocking instance, @code{today} to
6530 show all time clocked on this task today (see also the variable
6531 @code{org-extend-today-until}), @code{all} to include all time, or
6532 @code{auto} which is the default@footnote{See also the variable
6533 @code{org-clock-modeline-total}.}.@* Clicking with @kbd{mouse-1} onto the
6534 mode line entry will pop up a menu with clocking options.
6536 @orgcmd{C-c C-x C-o,org-clock-out}
6537 @vindex org-log-note-clock-out
6538 Stop the clock (clock-out).  This inserts another timestamp at the same
6539 location where the clock was last started.  It also directly computes
6540 the resulting time and inserts it after the time range as @samp{=>
6541 HH:MM}.  See the variable @code{org-log-note-clock-out} for the
6542 possibility to record an additional note together with the clock-out
6543 timestamp@footnote{The corresponding in-buffer setting is:
6544 @code{#+STARTUP: lognoteclock-out}}.
6545 @orgcmd{C-c C-x C-x,org-clock-in-last}
6546 @vindex org-clock-continuously
6547 Reclock the last clocked task.  With one @kbd{C-u} prefix argument,
6548 select the task from the clock history.  With two @kbd{C-u} prefixes,
6549 force continuous clocking by starting the clock when the last clock
6550 stopped.
6551 @orgcmd{C-c C-x C-e,org-clock-modify-effort-estimate}
6552 Update the effort estimate for the current clock task.
6553 @kindex C-c C-y
6554 @kindex C-c C-c
6555 @orgcmdkkc{C-c C-c,C-c C-y,org-evaluate-time-range}
6556 Recompute the time interval after changing one of the timestamps.  This
6557 is only necessary if you edit the timestamps directly.  If you change
6558 them with @kbd{S-@key{cursor}} keys, the update is automatic.
6559 @orgcmd{C-S-@key{up/down},org-clock-timestamps-up/down}
6560 On @code{CLOCK} log lines, increase/decrease both timestamps so that the
6561 clock duration keeps the same.
6562 @orgcmd{S-M-@key{up/down},org-timestamp-up/down}
6563 On @code{CLOCK} log lines, increase/decrease the timestamp at point and
6564 the one of the previous (or the next clock) timestamp by the same duration.
6565 For example, if you hit @kbd{S-M-@key{up}} to increase a clocked-out timestamp
6566 by five minutes, then the clocked-in timestamp of the next clock will be
6567 increased by five minutes.
6568 @orgcmd{C-c C-t,org-todo}
6569 Changing the TODO state of an item to DONE automatically stops the clock
6570 if it is running in this same item.
6571 @orgcmd{C-c C-x C-q,org-clock-cancel}
6572 Cancel the current clock.  This is useful if a clock was started by
6573 mistake, or if you ended up working on something else.
6574 @orgcmd{C-c C-x C-j,org-clock-goto}
6575 Jump to the headline of the currently clocked in task.  With a @kbd{C-u}
6576 prefix arg, select the target task from a list of recently clocked tasks.
6577 @orgcmd{C-c C-x C-d,org-clock-display}
6578 @vindex org-remove-highlights-with-change
6579 Display time summaries for each subtree in the current buffer.  This puts
6580 overlays at the end of each headline, showing the total time recorded under
6581 that heading, including the time of any subheadings.  You can use visibility
6582 cycling to study the tree, but the overlays disappear when you change the
6583 buffer (see variable @code{org-remove-highlights-with-change}) or press
6584 @kbd{C-c C-c}.
6585 @end table
6587 The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
6588 the agenda (@pxref{Weekly/daily agenda}) to show which tasks have been
6589 worked on or closed during a day.
6591 @strong{Important:} note that both @code{org-clock-out} and
6592 @code{org-clock-in-last} can have a global key binding and will not
6593 modify the window disposition.
6595 @node The clock table
6596 @subsection The clock table
6597 @cindex clocktable, dynamic block
6598 @cindex report, of clocked time
6600 Org mode can produce quite complex reports based on the time clocking
6601 information.  Such a report is called a @emph{clock table}, because it is
6602 formatted as one or several Org tables.
6604 @table @kbd
6605 @orgcmd{C-c C-x C-r,org-clock-report}
6606 Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
6607 report as an Org mode table into the current file.  When the cursor is
6608 at an existing clock table, just update it.  When called with a prefix
6609 argument, jump to the first clock report in the current document and
6610 update it.  The clock table always includes also trees with
6611 @code{:ARCHIVE:} tag.
6612 @orgcmdkkc{C-c C-c,C-c C-x C-u,org-dblock-update}
6613 Update dynamic block at point.  The cursor needs to be in the
6614 @code{#+BEGIN} line of the dynamic block.
6615 @orgkey{C-u C-c C-x C-u}
6616 Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
6617 you have several clock table blocks in a buffer.
6618 @orgcmdkxkc{S-@key{left},S-@key{right},org-clocktable-try-shift}
6619 Shift the current @code{:block} interval and update the table.  The cursor
6620 needs to be in the @code{#+BEGIN: clocktable} line for this command.  If
6621 @code{:block} is @code{today}, it will be shifted to @code{today-1} etc.
6622 @end table
6625 Here is an example of the frame for a clock table as it is inserted into the
6626 buffer with the @kbd{C-c C-x C-r} command:
6628 @cindex #+BEGIN, clocktable
6629 @example
6630 #+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
6631 #+END: clocktable
6632 @end example
6633 @noindent
6634 @vindex org-clocktable-defaults
6635 The @samp{BEGIN} line specifies a number of options to define the scope,
6636 structure, and formatting of the report.  Defaults for all these options can
6637 be configured in the variable @code{org-clocktable-defaults}.
6639 @noindent First there are options that determine which clock entries are to
6640 be selected:
6641 @example
6642 :maxlevel    @r{Maximum level depth to which times are listed in the table.}
6643              @r{Clocks at deeper levels will be summed into the upper level.}
6644 :scope       @r{The scope to consider.  This can be any of the following:}
6645              nil        @r{the current buffer or narrowed region}
6646              file       @r{the full current buffer}
6647              subtree    @r{the subtree where the clocktable is located}
6648              tree@var{N}      @r{the surrounding level @var{N} tree, for example @code{tree3}}
6649              tree       @r{the surrounding level 1 tree}
6650              agenda     @r{all agenda files}
6651              ("file"..) @r{scan these files}
6652              file-with-archives    @r{current file and its archives}
6653              agenda-with-archives  @r{all agenda files, including archives}
6654 :block       @r{The time block to consider.  This block is specified either}
6655              @r{absolutely, or relative to the current time and may be any of}
6656              @r{these formats:}
6657              2007-12-31    @r{New year eve 2007}
6658              2007-12       @r{December 2007}
6659              2007-W50      @r{ISO-week 50 in 2007}
6660              2007-Q2       @r{2nd quarter in 2007}
6661              2007          @r{the year 2007}
6662              today, yesterday, today-@var{N}          @r{a relative day}
6663              thisweek, lastweek, thisweek-@var{N}     @r{a relative week}
6664              thismonth, lastmonth, thismonth-@var{N}  @r{a relative month}
6665              thisyear, lastyear, thisyear-@var{N}     @r{a relative year}
6666              untilnow
6667              @r{Use @kbd{S-@key{left}/@key{right}} keys to shift the time interval.}
6668 :tstart      @r{A time string specifying when to start considering times.}
6669              @r{Relative times like @code{"<-2w>"} can also be used.  See}
6670              @r{@ref{Matching tags and properties} for relative time syntax.}
6671 :tend        @r{A time string specifying when to stop considering times.}
6672              @r{Relative times like @code{"<now>"} can also be used.  See}
6673              @r{@ref{Matching tags and properties} for relative time syntax.}
6674 :wstart      @r{The starting day of the week.  The default is 1 for monday.}
6675 :mstart      @r{The starting day of the month.  The default 1 is for the first}
6676              @r{day of the month.}
6677 :step        @r{@code{week} or @code{day}, to split the table into chunks.}
6678              @r{To use this, @code{:block} or @code{:tstart}, @code{:tend} are needed.}
6679 :stepskip0   @r{Do not show steps that have zero time.}
6680 :fileskip0   @r{Do not show table sections from files which did not contribute.}
6681 :tags        @r{A tags match to select entries that should contribute.  See}
6682              @r{@ref{Matching tags and properties} for the match syntax.}
6683 @end example
6685 Then there are options which determine the formatting of the table.  These
6686 options are interpreted by the function @code{org-clocktable-write-default},
6687 but you can specify your own function using the @code{:formatter} parameter.
6688 @example
6689 :emphasize   @r{When @code{t}, emphasize level one and level two items.}
6690 :lang        @r{Language@footnote{Language terms can be set through the variable @code{org-clock-clocktable-language-setup}.} to use for descriptive cells like "Task".}
6691 :link        @r{Link the item headlines in the table to their origins.}
6692 :narrow      @r{An integer to limit the width of the headline column in}
6693              @r{the org table.  If you write it like @samp{50!}, then the}
6694              @r{headline will also be shortened in export.}
6695 :indent      @r{Indent each headline field according to its level.}
6696 :tcolumns    @r{Number of columns to be used for times.  If this is smaller}
6697              @r{than @code{:maxlevel}, lower levels will be lumped into one column.}
6698 :level       @r{Should a level number column be included?}
6699 :sort        @r{A cons cell like containing the column to sort and a sorting type.}
6700              @r{E.g., @code{:sort (1 . ?a)} sorts the first column alphabetically.}
6701 :compact     @r{Abbreviation for @code{:level nil :indent t :narrow 40! :tcolumns 1}}
6702              @r{All are overwritten except if there is an explicit @code{:narrow}}
6703 :timestamp   @r{A timestamp for the entry, when available.  Look for SCHEDULED,}
6704              @r{DEADLINE, TIMESTAMP and TIMESTAMP_IA, in this order.}
6705 :properties  @r{List of properties that should be shown in the table.  Each}
6706              @r{property will get its own column.}
6707 :inherit-props @r{When this flag is @code{t}, the values for @code{:properties} will be inherited.}
6708 :formula     @r{Content of a @code{#+TBLFM} line to be added and evaluated.}
6709              @r{As a special case, @samp{:formula %} adds a column with % time.}
6710              @r{If you do not specify a formula here, any existing formula}
6711              @r{below the clock table will survive updates and be evaluated.}
6712 :formatter   @r{A function to format clock data and insert it into the buffer.}
6713 @end example
6714 To get a clock summary of the current level 1 tree, for the current
6715 day, you could write
6716 @example
6717 #+BEGIN: clocktable :maxlevel 2 :block today :scope tree1 :link t
6718 #+END: clocktable
6719 @end example
6720 @noindent
6721 and to use a specific time range you could write@footnote{Note that all
6722 parameters must be specified in a single line---the line is broken here
6723 only to fit it into the manual.}
6724 @example
6725 #+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>"
6726                     :tend "<2006-08-10 Thu 12:00>"
6727 #+END: clocktable
6728 @end example
6729 A range starting a week ago and ending right now could be written as
6730 @example
6731 #+BEGIN: clocktable :tstart "<-1w>" :tend "<now>"
6732 #+END: clocktable
6733 @end example
6734 A summary of the current subtree with % times would be
6735 @example
6736 #+BEGIN: clocktable :scope subtree :link t :formula %
6737 #+END: clocktable
6738 @end example
6739 A horizontally compact representation of everything clocked during last week
6740 would be
6741 @example
6742 #+BEGIN: clocktable :scope agenda :block lastweek :compact t
6743 #+END: clocktable
6744 @end example
6746 @node Resolving idle time
6747 @subsection Resolving idle time and continuous clocking
6749 @subsubheading Resolving idle time
6750 @cindex resolve idle time
6751 @vindex org-clock-x11idle-program-name
6753 @cindex idle, resolve, dangling
6754 If you clock in on a work item, and then walk away from your
6755 computer---perhaps to take a phone call---you often need to ``resolve'' the
6756 time you were away by either subtracting it from the current clock, or
6757 applying it to another one.
6759 @vindex org-clock-idle-time
6760 By customizing the variable @code{org-clock-idle-time} to some integer, such
6761 as 10 or 15, Emacs can alert you when you get back to your computer after
6762 being idle for that many minutes@footnote{On computers using Mac OS X,
6763 idleness is based on actual user idleness, not just Emacs' idle time.  For
6764 X11, you can install a utility program @file{x11idle.c}, available in the
6765 @code{contrib/scripts} directory of the Org git distribution, or install the
6766 @file{xprintidle} package and set it to the variable
6767 @code{org-clock-x11idle-program-name} if you are running Debian, to get the
6768 same general treatment of idleness.  On other systems, idle time refers to
6769 Emacs idle time only.}, and ask what you want to do with the idle time.
6770 There will be a question waiting for you when you get back, indicating how
6771 much idle time has passed (constantly updated with the current amount), as
6772 well as a set of choices to correct the discrepancy:
6774 @table @kbd
6775 @item k
6776 To keep some or all of the minutes and stay clocked in, press @kbd{k}.  Org
6777 will ask how many of the minutes to keep.  Press @key{RET} to keep them all,
6778 effectively changing nothing, or enter a number to keep that many minutes.
6779 @item K
6780 If you use the shift key and press @kbd{K}, it will keep however many minutes
6781 you request and then immediately clock out of that task.  If you keep all of
6782 the minutes, this is the same as just clocking out of the current task.
6783 @item s
6784 To keep none of the minutes, use @kbd{s} to subtract all the away time from
6785 the clock, and then check back in from the moment you returned.
6786 @item S
6787 To keep none of the minutes and just clock out at the start of the away time,
6788 use the shift key and press @kbd{S}.  Remember that using shift will always
6789 leave you clocked out, no matter which option you choose.
6790 @item C
6791 To cancel the clock altogether, use @kbd{C}.  Note that if instead of
6792 canceling you subtract the away time, and the resulting clock amount is less
6793 than a minute, the clock will still be canceled rather than clutter up the
6794 log with an empty entry.
6795 @end table
6797 What if you subtracted those away minutes from the current clock, and now
6798 want to apply them to a new clock?  Simply clock in to any task immediately
6799 after the subtraction.  Org will notice that you have subtracted time ``on
6800 the books'', so to speak, and will ask if you want to apply those minutes to
6801 the next task you clock in on.
6803 There is one other instance when this clock resolution magic occurs.  Say you
6804 were clocked in and hacking away, and suddenly your cat chased a mouse who
6805 scared a hamster that crashed into your UPS's power button!  You suddenly
6806 lose all your buffers, but thanks to auto-save you still have your recent Org
6807 mode changes, including your last clock in.
6809 If you restart Emacs and clock into any task, Org will notice that you have a
6810 dangling clock which was never clocked out from your last session.  Using
6811 that clock's starting time as the beginning of the unaccounted-for period,
6812 Org will ask how you want to resolve that time.  The logic and behavior is
6813 identical to dealing with away time due to idleness; it is just happening due
6814 to a recovery event rather than a set amount of idle time.
6816 You can also check all the files visited by your Org agenda for dangling
6817 clocks at any time using @kbd{M-x org-resolve-clocks RET} (or @kbd{C-c C-x C-z}).
6819 @subsubheading Continuous clocking
6820 @cindex continuous clocking
6821 @vindex org-clock-continuously
6823 You may want to start clocking from the time when you clocked out the
6824 previous task.  To enable this systematically, set @code{org-clock-continuously}
6825 to @code{t}.  Each time you clock in, Org retrieves the clock-out time of the
6826 last clocked entry for this session, and start the new clock from there.
6828 If you only want this from time to time, use three universal prefix arguments
6829 with @code{org-clock-in} and two @kbd{C-u C-u} with @code{org-clock-in-last}.
6831 @node Effort estimates
6832 @section Effort estimates
6833 @cindex effort estimates
6835 @cindex property, Effort
6836 If you want to plan your work in a very detailed way, or if you need to
6837 produce offers with quotations of the estimated work effort, you may want to
6838 assign effort estimates to entries.  If you are also clocking your work, you
6839 may later want to compare the planned effort with the actual working time,
6840 a great way to improve planning estimates.  Effort estimates are stored in
6841 a special property @code{EFFORT}.  You can set the effort for an entry with
6842 the following commands:
6844 @table @kbd
6845 @orgcmd{C-c C-x e,org-set-effort}
6846 Set the effort estimate for the current entry.  With a numeric prefix
6847 argument, set it to the Nth allowed value (see below).  This command is also
6848 accessible from the agenda with the @kbd{e} key.
6849 @orgcmd{C-c C-x C-e,org-clock-modify-effort-estimate}
6850 Modify the effort estimate of the item currently being clocked.
6851 @end table
6853 Clearly the best way to work with effort estimates is through column view
6854 (@pxref{Column view}).  You should start by setting up discrete values for
6855 effort estimates, and a @code{COLUMNS} format that displays these values
6856 together with clock sums (if you want to clock your time).  For a specific
6857 buffer you can use
6859 @example
6860 #+PROPERTY: Effort_ALL 0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00
6861 #+COLUMNS: %40ITEM(Task) %17Effort(Estimated Effort)@{:@} %CLOCKSUM
6862 @end example
6864 @noindent
6865 @vindex org-global-properties
6866 @vindex org-columns-default-format
6867 or, even better, you can set up these values globally by customizing the
6868 variables @code{org-global-properties} and @code{org-columns-default-format}.
6869 In particular if you want to use this setup also in the agenda, a global
6870 setup may be advised.
6872 The way to assign estimates to individual items is then to switch to column
6873 mode, and to use @kbd{S-@key{right}} and @kbd{S-@key{left}} to change the
6874 value.  The values you enter will immediately be summed up in the hierarchy.
6875 In the column next to it, any clocked time will be displayed.
6877 @vindex org-agenda-columns-add-appointments-to-effort-sum
6878 If you switch to column view in the daily/weekly agenda, the effort column
6879 will summarize the estimated work effort for each day@footnote{Please note
6880 the pitfalls of summing hierarchical data in a flat list (@pxref{Agenda
6881 column view}).}, and you can use this to find space in your schedule.  To get
6882 an overview of the entire part of the day that is committed, you can set the
6883 option @code{org-agenda-columns-add-appointments-to-effort-sum}.  The
6884 appointments on a day that take place over a specified time interval will
6885 then also be added to the load estimate of the day.
6887 Effort estimates can be used in secondary agenda filtering that is triggered
6888 with the @kbd{/} key in the agenda (@pxref{Agenda commands}).  If you have
6889 these estimates defined consistently, two or three key presses will narrow
6890 down the list to stuff that fits into an available time slot.
6892 @node Timers
6893 @section Taking notes with a timer
6894 @cindex relative timer
6895 @cindex countdown timer
6896 @kindex ;
6898 Org provides two types of timers.  There is a relative timer that counts up,
6899 which can be useful when taking notes during, for example, a meeting or
6900 a video viewing.  There is also a countdown timer.
6902 The relative and countdown are started with separate commands.
6904 @table @kbd
6905 @orgcmd{C-c C-x 0,org-timer-start}
6906 Start or reset the relative timer.  By default, the timer is set to 0.  When
6907 called with a @kbd{C-u} prefix, prompt the user for a starting offset.  If
6908 there is a timer string at point, this is taken as the default, providing a
6909 convenient way to restart taking notes after a break in the process.  When
6910 called with a double prefix argument @kbd{C-u C-u}, change all timer strings
6911 in the active region by a certain amount.  This can be used to fix timer
6912 strings if the timer was not started at exactly the right moment.
6913 @orgcmd{C-c C-x ;,org-timer-set-timer}
6914 Start a countdown timer.  The user is prompted for a duration.
6915 @code{org-timer-default-timer} sets the default countdown value.  Giving
6916 a numeric prefix argument overrides this default value.  This command is
6917 available as @kbd{;} in agenda buffers.
6918 @end table
6920 Once started, relative and countdown timers are controlled with the same
6921 commands.
6923 @table @kbd
6924 @orgcmd{C-c C-x .,org-timer}
6925 Insert the value of the current relative or countdown timer into the buffer.
6926 If no timer is running, the relative timer will be started.  When called with
6927 a prefix argument, the relative timer is restarted.
6928 @orgcmd{C-c C-x -,org-timer-item}
6929 Insert a description list item with the value of the current relative or
6930 countdown timer.  With a prefix argument, first reset the relative timer to
6932 @orgcmd{M-@key{RET},org-insert-heading}
6933 Once the timer list is started, you can also use @kbd{M-@key{RET}} to insert
6934 new timer items.
6935 @orgcmd{C-c C-x @comma{},org-timer-pause-or-continue}
6936 Pause the timer, or continue it if it is already paused.
6937 @orgcmd{C-c C-x _,org-timer-stop}
6938 Stop the timer.  After this, you can only start a new timer, not continue the
6939 old one.  This command also removes the timer from the mode line.
6940 @end table
6942 @node Capture - Refile - Archive
6943 @chapter Capture - Refile - Archive
6944 @cindex capture
6946 An important part of any organization system is the ability to quickly
6947 capture new ideas and tasks, and to associate reference material with them.
6948 Org does this using a process called @i{capture}.  It also can store files
6949 related to a task (@i{attachments}) in a special directory.  Once in the
6950 system, tasks and projects need to be moved around.  Moving completed project
6951 trees to an archive file keeps the system compact and fast.
6953 @menu
6954 * Capture::                     Capturing new stuff
6955 * Attachments::                 Add files to tasks
6956 * RSS feeds::                   Getting input from RSS feeds
6957 * Protocols::                   External (e.g., Browser) access to Emacs and Org
6958 * Refile and copy::             Moving/copying a tree from one place to another
6959 * Archiving::                   What to do with finished projects
6960 @end menu
6962 @node Capture
6963 @section Capture
6964 @cindex capture
6966 Capture lets you quickly store notes with little interruption of your work
6967 flow.  Org's method for capturing new items is heavily inspired by John
6968 Wiegley excellent @file{remember.el} package.  Up to version 6.36, Org
6969 used a special setup for @file{remember.el}, then replaced it with
6970 @file{org-remember.el}.  As of version 8.0, @file{org-remember.el} has
6971 been completely replaced by @file{org-capture.el}.
6973 If your configuration depends on @file{org-remember.el}, you need to update
6974 it and use the setup described below.  To convert your
6975 @code{org-remember-templates}, run the command
6976 @example
6977 @kbd{M-x org-capture-import-remember-templates RET}
6978 @end example
6979 @noindent and then customize the new variable with @kbd{M-x
6980 customize-variable org-capture-templates}, check the result, and save the
6981 customization.
6983 @menu
6984 * Setting up capture::          Where notes will be stored
6985 * Using capture::               Commands to invoke and terminate capture
6986 * Capture templates::           Define the outline of different note types
6987 @end menu
6989 @node Setting up capture
6990 @subsection Setting up capture
6992 The following customization sets a default target file for notes, and defines
6993 a global key@footnote{Please select your own key, @kbd{C-c c} is only a
6994 suggestion.}  for capturing new material.
6996 @vindex org-default-notes-file
6997 @smalllisp
6998 @group
6999 (setq org-default-notes-file (concat org-directory "/notes.org"))
7000 (define-key global-map "\C-cc" 'org-capture)
7001 @end group
7002 @end smalllisp
7004 @node Using capture
7005 @subsection Using capture
7007 @table @kbd
7008 @orgcmd{C-c c,org-capture}
7009 Call the command @code{org-capture}.  Note that this key binding is global and
7010 not active by default: you need to install it.  If you have templates
7011 @cindex date tree
7012 defined @pxref{Capture templates}, it will offer these templates for
7013 selection or use a new Org outline node as the default template.  It will
7014 insert the template into the target file and switch to an indirect buffer
7015 narrowed to this new node.  You may then insert the information you want.
7017 @orgcmd{C-c C-c,org-capture-finalize}
7018 Once you have finished entering information into the capture buffer, @kbd{C-c
7019 C-c} will return you to the window configuration before the capture process,
7020 so that you can resume your work without further distraction.  When called
7021 with a prefix arg, finalize and then jump to the captured item.
7023 @orgcmd{C-c C-w,org-capture-refile}
7024 Finalize the capture process by refiling (@pxref{Refile and copy}) the note to
7025 a different place.  Please realize that this is a normal refiling command
7026 that will be executed---so the cursor position at the moment you run this
7027 command is important.  If you have inserted a tree with a parent and
7028 children, first move the cursor back to the parent.  Any prefix argument
7029 given to this command will be passed on to the @code{org-refile} command.
7031 @orgcmd{C-c C-k,org-capture-kill}
7032 Abort the capture process and return to the previous state.
7034 @end table
7036 You can also call @code{org-capture} in a special way from the agenda, using
7037 the @kbd{k c} key combination.  With this access, any timestamps inserted by
7038 the selected capture template will default to the cursor date in the agenda,
7039 rather than to the current date.
7041 To find the locations of the last stored capture, use @code{org-capture} with
7042 prefix commands:
7044 @table @kbd
7045 @orgkey{C-u C-c c}
7046 Visit the target location of a capture template.  You get to select the
7047 template in the usual way.
7048 @orgkey{C-u C-u C-c c}
7049 Visit the last stored capture item in its buffer.
7050 @end table
7052 @vindex org-capture-bookmark
7053 @cindex org-capture-last-stored
7054 You can also jump to the bookmark @code{org-capture-last-stored}, which will
7055 automatically be created unless you set @code{org-capture-bookmark} to
7056 @code{nil}.
7058 To insert the capture at point in an Org buffer, call @code{org-capture} with
7059 a @code{C-0} prefix argument.
7061 @node Capture templates
7062 @subsection Capture templates
7063 @cindex templates, for Capture
7065 You can use templates for different types of capture items, and
7066 for different target locations.  The easiest way to create such templates is
7067 through the customize interface.
7069 @table @kbd
7070 @orgkey{C-c c C}
7071 Customize the variable @code{org-capture-templates}.
7072 @end table
7074 Before we give the formal description of template definitions, let's look at
7075 an example.  Say you would like to use one template to create general TODO
7076 entries, and you want to put these entries under the heading @samp{Tasks} in
7077 your file @file{~/org/gtd.org}.  Also, a date tree in the file
7078 @file{journal.org} should capture journal entries.  A possible configuration
7079 would look like:
7081 @smalllisp
7082 @group
7083 (setq org-capture-templates
7084  '(("t" "Todo" entry (file+headline "~/org/gtd.org" "Tasks")
7085         "* TODO %?\n  %i\n  %a")
7086    ("j" "Journal" entry (file+datetree "~/org/journal.org")
7087         "* %?\nEntered on %U\n  %i\n  %a")))
7088 @end group
7089 @end smalllisp
7091 @noindent If you then press @kbd{C-c c t}, Org will prepare the template
7092 for you like this:
7093 @example
7094 * TODO
7095   [[file:@var{link to where you initiated capture}]]
7096 @end example
7098 @noindent
7099 During expansion of the template, @code{%a} has been replaced by a link to
7100 the location from where you called the capture command.  This can be
7101 extremely useful for deriving tasks from emails, for example.  You fill in
7102 the task definition, press @kbd{C-c C-c} and Org returns you to the same
7103 place where you started the capture process.
7105 To define special keys to capture to a particular template without going
7106 through the interactive template selection, you can create your key binding
7107 like this:
7109 @lisp
7110 (define-key global-map "\C-cx"
7111    (lambda () (interactive) (org-capture nil "x")))
7112 @end lisp
7114 @menu
7115 * Template elements::           What is needed for a complete template entry
7116 * Template expansion::          Filling in information about time and context
7117 * Templates in contexts::       Only show a template in a specific context
7118 @end menu
7120 @node Template elements
7121 @subsubsection Template elements
7123 Now lets look at the elements of a template definition.  Each entry in
7124 @code{org-capture-templates} is a list with the following items:
7126 @table @var
7127 @item keys
7128 The keys that will select the template, as a string, characters
7129 only, for example @code{"a"} for a template to be selected with a
7130 single key, or @code{"bt"} for selection with two keys.  When using
7131 several keys, keys using the same prefix key must be sequential
7132 in the list and preceded by a 2-element entry explaining the
7133 prefix key, for example
7134 @smalllisp
7135          ("b" "Templates for marking stuff to buy")
7136 @end smalllisp
7137 @noindent If you do not define a template for the @kbd{C} key, this key will
7138 be used to open the customize buffer for this complex variable.
7140 @item description
7141 A short string describing the template, which will be shown during
7142 selection.
7144 @item type
7145 The type of entry, a symbol.  Valid values are:
7147 @table @code
7148 @item entry
7149 An Org mode node, with a headline.  Will be filed as the child of the target
7150 entry or as a top-level entry.  The target file should be an Org mode file.
7151 @item item
7152 A plain list item, placed in the first plain  list at the target
7153 location.  Again the target file should be an Org file.
7154 @item checkitem
7155 A checkbox item.  This only differs from the plain list item by the
7156 default template.
7157 @item table-line
7158 a new line in the first table at the target location.  Where exactly the
7159 line will be inserted depends on the properties @code{:prepend} and
7160 @code{:table-line-pos} (see below).
7161 @item plain
7162 Text to be inserted as it is.
7163 @end table
7165 @item target
7166 @vindex org-default-notes-file
7167 Specification of where the captured item should be placed.  In Org mode
7168 files, targets usually define a node.  Entries will become children of this
7169 node.  Other types will be added to the table or list in the body of this
7170 node.  Most target specifications contain a file name.  If that file name is
7171 the empty string, it defaults to @code{org-default-notes-file}.  A file can
7172 also be given as a variable or as a function called with no argument.  When
7173 an absolute path is not specified for a target, it is taken as relative to
7174 @code{org-directory}.
7176 Valid values are:
7178 @table @code
7179 @item (file "path/to/file")
7180 Text will be placed at the beginning or end of that file.
7182 @item (id "id of existing org entry")
7183 Filing as child of this entry, or in the body of the entry.
7185 @item (file+headline "path/to/file" "node headline")
7186 Fast configuration if the target heading is unique in the file.
7188 @item (file+olp "path/to/file" "Level 1 heading" "Level 2" ...)
7189 For non-unique headings, the full path is safer.
7191 @item (file+regexp  "path/to/file" "regexp to find location")
7192 Use a regular expression to position the cursor.
7194 @item (file+datetree "path/to/file")
7195 Will create a heading in a date tree for today's date@footnote{Datetree
7196 headlines for years accept tags, so if you use both @code{* 2013 :noexport:}
7197 and @code{* 2013} in your file, the capture will refile the note to the first
7198 one matched.}.
7200 @item (file+datetree+prompt "path/to/file")
7201 Will create a heading in a date tree, but will prompt for the date.
7203 @item (file+weektree "path/to/file")
7204 Will create a heading in a week tree for today's date.  Week trees are sorted
7205 by week and not by month unlike datetrees.
7207 @item (file+weektree+prompt "path/to/file")
7208 Will create a heading in a week tree, but will prompt for the date.
7210 @item (file+function "path/to/file" function-finding-location)
7211 A function to find the right location in the file.
7213 @item (clock)
7214 File to the entry that is currently being clocked.
7216 @item (function function-finding-location)
7217 Most general way: write your own function which both visits
7218 the file and moves point to the right location.
7219 @end table
7221 @item template
7222 The template for creating the capture item.  If you leave this empty, an
7223 appropriate default template will be used.  Otherwise this is a string with
7224 escape codes, which will be replaced depending on time and context of the
7225 capture call.  The string with escapes may be loaded from a template file,
7226 using the special syntax @code{(file "path/to/template")}.  See below for
7227 more details.
7229 @item properties
7230 The rest of the entry is a property list of additional options.
7231 Recognized properties are:
7233 @table @code
7234 @item :prepend
7235 Normally new captured information will be appended at
7236 the target location (last child, last table line, last list item...).
7237 Setting this property will change that.
7239 @item :immediate-finish
7240 When set, do not offer to edit the information, just
7241 file it away immediately.  This makes sense if the template only needs
7242 information that can be added automatically.
7244 @item :empty-lines
7245 Set this to the number of lines to insert
7246 before and after the new item.  Default 0, only common other value is 1.
7248 @item :clock-in
7249 Start the clock in this item.
7251 @item :clock-keep
7252 Keep the clock running when filing the captured entry.
7254 @item :clock-resume
7255 If starting the capture interrupted a clock, restart that clock when finished
7256 with the capture.  Note that @code{:clock-keep} has precedence over
7257 @code{:clock-resume}.  When setting both to @code{t}, the current clock will
7258 run and the previous one will not be resumed.
7260 @item :unnarrowed
7261 Do not narrow the target buffer, simply show the full buffer.  Default is to
7262 narrow it so that you only see the new material.
7264 @item :table-line-pos
7265 Specification of the location in the table where the new line should be
7266 inserted. It can be a string, a variable holding a string or a function
7267 returning a string. The string should look like @code{"II-3"} meaning that
7268 the new line should become the third line before the second horizontal
7269 separator line.
7271 @item :kill-buffer
7272 If the target file was not yet visited when capture was invoked, kill the
7273 buffer again after capture is completed.
7274 @end table
7275 @end table
7277 @node Template expansion
7278 @subsubsection Template expansion
7280 In the template itself, special @kbd{%}-escapes@footnote{If you need one of
7281 these sequences literally, escape the @kbd{%} with a backslash.} allow
7282 dynamic insertion of content.  The templates are expanded in the order given here:
7284 @smallexample
7285 %[@var{file}]     @r{Insert the contents of the file given by @var{file}.}
7286 %(@var{sexp})     @r{Evaluate Elisp @var{sexp} and replace with the result.}
7287                   @r{For convenience, %:keyword (see below) placeholders}
7288                   @r{within the expression will be expanded prior to this.}
7289                   @r{The sexp must return a string.}
7290 %<...>      @r{The result of format-time-string on the ... format specification.}
7291 %t          @r{Timestamp, date only.}
7292 %T          @r{Timestamp, with date and time.}
7293 %u, %U      @r{Like the above, but inactive timestamps.}
7294 %i          @r{Initial content, the region when capture is called while the}
7295             @r{region is active.}
7296             @r{The entire text will be indented like @code{%i} itself.}
7297 %a          @r{Annotation, normally the link created with @code{org-store-link}.}
7298 %A          @r{Like @code{%a}, but prompt for the description part.}
7299 %l          @r{Like %a, but only insert the literal link.}
7300 %c          @r{Current kill ring head.}
7301 %x          @r{Content of the X clipboard.}
7302 %k          @r{Title of the currently clocked task.}
7303 %K          @r{Link to the currently clocked task.}
7304 %n          @r{User name (taken from @code{user-full-name}).}
7305 %f          @r{File visited by current buffer when org-capture was called.}
7306 %F          @r{Full path of the file or directory visited by current buffer.}
7307 %:keyword   @r{Specific information for certain link types, see below.}
7308 %^g         @r{Prompt for tags, with completion on tags in target file.}
7309 %^G         @r{Prompt for tags, with completion all tags in all agenda files.}
7310 %^t         @r{Like @code{%t}, but prompt for date.  Similarly @code{%^T}, @code{%^u}, @code{%^U}.}
7311             @r{You may define a prompt like @code{%^@{Birthday@}t}.}
7312 %^C         @r{Interactive selection of which kill or clip to use.}
7313 %^L         @r{Like @code{%^C}, but insert as link.}
7314 %^@{@var{prop}@}p   @r{Prompt the user for a value for property @var{prop}.}
7315 %^@{@var{prompt}@}  @r{prompt the user for a string and replace this sequence with it.}
7316             @r{You may specify a default value and a completion table with}
7317             @r{%^@{prompt|default|completion2|completion3...@}.}
7318             @r{The arrow keys access a prompt-specific history.}
7319 %\1 @dots{} %\N @r{Insert the text entered at the Nth %^@{@var{prompt}@}, where @code{N} is}
7320             @r{a number, starting from 1.@footnote{As required in Emacs
7321                Lisp, it is necessary to escape any backslash character in
7322                a string with another backslash.  So, in order to use
7323                @samp{%\1} placeholder, you need to write @samp{%\\1} in
7324                the template.}}
7325 %?          @r{After completing the template, position cursor here.}
7326 @end smallexample
7328 @noindent
7329 For specific link types, the following keywords will be
7330 defined@footnote{If you define your own link types (@pxref{Adding
7331 hyperlink types}), any property you store with
7332 @code{org-store-link-props} can be accessed in capture templates in a
7333 similar way.}:
7335 @vindex org-from-is-user-regexp
7336 @smallexample
7337 Link type                        |  Available keywords
7338 ---------------------------------+----------------------------------------------
7339 bbdb                             |  %:name %:company
7340 irc                              |  %:server %:port %:nick
7341 vm, vm-imap, wl, mh, mew, rmail, |  %:type %:subject %:message-id
7342 gnus, notmuch                    |  %:from %:fromname %:fromaddress
7343                                  |  %:to   %:toname   %:toaddress
7344                                  |  %:date @r{(message date header field)}
7345                                  |  %:date-timestamp @r{(date as active timestamp)}
7346                                  |  %:date-timestamp-inactive @r{(date as inactive timestamp)}
7347                                  |  %: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}.}}
7348 gnus                             |  %:group, @r{for messages also all email fields}
7349 eww, w3, w3m                     |  %:url
7350 info                             |  %:file %:node
7351 calendar                         |  %:date
7352 @end smallexample
7354 @noindent
7355 To place the cursor after template expansion use:
7357 @smallexample
7358 %?          @r{After completing the template, position cursor here.}
7359 @end smallexample
7361 @node Templates in contexts
7362 @subsubsection Templates in contexts
7364 @vindex org-capture-templates-contexts
7365 To control whether a capture template should be accessible from a specific
7366 context, you can customize @code{org-capture-templates-contexts}.  Let's say
7367 for example that you have a capture template @code{"p"} for storing Gnus
7368 emails containing patches.  Then you would configure this option like this:
7370 @smalllisp
7371 (setq org-capture-templates-contexts
7372       '(("p" (in-mode . "message-mode"))))
7373 @end smalllisp
7375 You can also tell that the command key @code{"p"} should refer to another
7376 template.  In that case, add this command key like this:
7378 @smalllisp
7379 (setq org-capture-templates-contexts
7380       '(("p" "q" (in-mode . "message-mode"))))
7381 @end smalllisp
7383 See the docstring of the variable for more information.
7385 @node Attachments
7386 @section Attachments
7387 @cindex attachments
7389 @vindex org-attach-directory
7390 It is often useful to associate reference material with an outline node/task.
7391 Small chunks of plain text can simply be stored in the subtree of a project.
7392 Hyperlinks (@pxref{Hyperlinks}) can establish associations with
7393 files that live elsewhere on your computer or in the cloud, like emails or
7394 source code files belonging to a project.  Another method is @i{attachments},
7395 which are files located in a directory belonging to an outline node.  Org
7396 uses directories named by the unique ID of each entry.  These directories are
7397 located in the @file{data} directory which lives in the same directory where
7398 your Org file lives@footnote{If you move entries or Org files from one
7399 directory to another, you may want to configure @code{org-attach-directory}
7400 to contain an absolute path.}.  If you initialize this directory with
7401 @code{git init}, Org will automatically commit changes when it sees them.
7402 The attachment system has been contributed to Org by John Wiegley.
7404 In cases where it seems better to do so, you can also attach a directory of your
7405 choice to an entry.  You can also make children inherit the attachment
7406 directory from a parent, so that an entire subtree uses the same attached
7407 directory.
7409 @noindent The following commands deal with attachments:
7411 @table @kbd
7412 @orgcmd{C-c C-a,org-attach}
7413 The dispatcher for commands related to the attachment system.  After these
7414 keys, a list of commands is displayed and you must press an additional key
7415 to select a command:
7417 @table @kbd
7418 @orgcmdtkc{a,C-c C-a a,org-attach-attach}
7419 @vindex org-attach-method
7420 Select a file and move it into the task's attachment directory.  The file
7421 will be copied, moved, or linked, depending on @code{org-attach-method}.
7422 Note that hard links are not supported on all systems.
7424 @kindex C-c C-a c
7425 @kindex C-c C-a m
7426 @kindex C-c C-a l
7427 @item c/m/l
7428 Attach a file using the copy/move/link method.
7429 Note that hard links are not supported on all systems.
7431 @orgcmdtkc{n,C-c C-a n,org-attach-new}
7432 Create a new attachment as an Emacs buffer.
7434 @orgcmdtkc{z,C-c C-a z,org-attach-sync}
7435 Synchronize the current task with its attachment directory, in case you added
7436 attachments yourself.
7438 @orgcmdtkc{o,C-c C-a o,org-attach-open}
7439 @vindex org-file-apps
7440 Open current task's attachment.  If there is more than one, prompt for a
7441 file name first.  Opening will follow the rules set by @code{org-file-apps}.
7442 For more details, see the information on following hyperlinks
7443 (@pxref{Handling links}).
7445 @orgcmdtkc{O,C-c C-a O,org-attach-open-in-emacs}
7446 Also open the attachment, but force opening the file in Emacs.
7448 @orgcmdtkc{f,C-c C-a f,org-attach-reveal}
7449 Open the current task's attachment directory.
7451 @orgcmdtkc{F,C-c C-a F,org-attach-reveal-in-emacs}
7452 Also open the directory, but force using @command{dired} in Emacs.
7454 @orgcmdtkc{d,C-c C-a d,org-attach-delete-one}
7455 Select and delete a single attachment.
7457 @orgcmdtkc{D,C-c C-a D,org-attach-delete-all}
7458 Delete all of a task's attachments.  A safer way is to open the directory in
7459 @command{dired} and delete from there.
7461 @orgcmdtkc{s,C-c C-a s,org-attach-set-directory}
7462 @cindex property, ATTACH_DIR
7463 Set a specific directory as the entry's attachment directory.  This works by
7464 putting the directory path into the @code{ATTACH_DIR} property.
7466 @orgcmdtkc{i,C-c C-a i,org-attach-set-inherit}
7467 @cindex property, ATTACH_DIR_INHERIT
7468 Set the @code{ATTACH_DIR_INHERIT} property, so that children will use the
7469 same directory for attachments as the parent does.
7470 @end table
7471 @end table
7473 @node RSS feeds
7474 @section RSS feeds
7475 @cindex RSS feeds
7476 @cindex Atom feeds
7478 Org can add and change entries based on information found in RSS feeds and
7479 Atom feeds.  You could use this to make a task out of each new podcast in a
7480 podcast feed.  Or you could use a phone-based note-creating service on the
7481 web to import tasks into Org.  To access feeds, configure the variable
7482 @code{org-feed-alist}.  The docstring of this variable has detailed
7483 information.  Here is just an example:
7485 @smalllisp
7486 @group
7487 (setq org-feed-alist
7488      '(("Slashdot"
7489          "http://rss.slashdot.org/Slashdot/slashdot"
7490          "~/txt/org/feeds.org" "Slashdot Entries")))
7491 @end group
7492 @end smalllisp
7494 @noindent
7495 will configure that new items from the feed provided by
7496 @code{rss.slashdot.org} will result in new entries in the file
7497 @file{~/org/feeds.org} under the heading @samp{Slashdot Entries}, whenever
7498 the following command is used:
7500 @table @kbd
7501 @orgcmd{C-c C-x g,org-feed-update-all}
7502 @item C-c C-x g
7503 Collect items from the feeds configured in @code{org-feed-alist} and act upon
7504 them.
7505 @orgcmd{C-c C-x G,org-feed-goto-inbox}
7506 Prompt for a feed name and go to the inbox configured for this feed.
7507 @end table
7509 Under the same headline, Org will create a drawer @samp{FEEDSTATUS} in which
7510 it will store information about the status of items in the feed, to avoid
7511 adding the same item several times.
7513 For more information, including how to read atom feeds, see
7514 @file{org-feed.el} and the docstring of @code{org-feed-alist}.
7516 @node Protocols
7517 @section Protocols for external access
7518 @cindex protocols, for external access
7520 Org protocol is a mean to trigger custom actions in Emacs from external
7521 applications.  Any application that supports calling external programs with
7522 an URL as argument may be used with this functionality.  For example, you can
7523 configure bookmarks in your web browser to send a link to the current page to
7524 Org and create a note from it using capture (@pxref{Capture}).  You can also
7525 create a bookmark that tells Emacs to open the local source file of a remote
7526 website you are browsing.
7528 @cindex Org protocol, set-up
7529 @cindex Installing Org protocol
7530 In order to use Org protocol from an application, you need to register
7531 @samp{org-protocol://} as a valid scheme-handler.  External calls are passed
7532 to Emacs through the @code{emacsclient} command, so you also need to ensure
7533 an Emacs server is running.  More precisely, when the application calls
7535 @example
7536 emacsclient org-protocol://PROTOCOL?key1=val1&key2=val2
7537 @end example
7539 @noindent
7540 Emacs calls the handler associated to @samp{PROTOCOL} with argument
7541 @samp{(:key1 val1 :key2 val2)}.
7543 @cindex protocol, new protocol
7544 @cindex defining new protocols
7545 Org protocol comes with three predefined protocols, detailed in the following
7546 sections.  Configure @code{org-protocol-protocol-alist} to define your own.
7548 @menu
7549 * @code{store-link} protocol::  Store a link, push URL to kill-ring.
7550 * @code{capture} protocol::     Fill a buffer with external information.
7551 * @code{open-source} protocol::  Edit published contents.
7552 @end menu
7554 @node @code{store-link} protocol
7555 @subsection @code{store-link} protocol
7556 @cindex store-link protocol
7557 @cindex protocol, store-link
7559 Using @code{store-link} handler, you can copy links, insertable through
7560 @kbd{M-x org-insert-link} or yanking thereafter.  More precisely, the command
7562 @example
7563 emacsclient org-protocol://store-link?url=URL&title=TITLE
7564 @end example
7566 @noindent
7567 stores the following link:
7569 @example
7570 [[URL][TITLE]]
7571 @end example
7573 In addition, @samp{URL} is pushed on the kill-ring for yanking.  You need to
7574 encode @samp{URL} and @samp{TITLE} if they contain slashes, and probably
7575 quote those for the shell.
7577 To use this feature from a browser, add a bookmark with an arbitrary name,
7578 e.g., @samp{Org: store-link} and enter this as @emph{Location}:
7580 @example
7581 javascript:location.href='org-protocol://store-link?url='+
7582       encodeURIComponent(location.href);
7583 @end example
7585 @node @code{capture} protocol
7586 @subsection @code{capture} protocol
7587 @cindex capture protocol
7588 @cindex protocol, capture
7590 @cindex capture, %:url placeholder
7591 @cindex %:url template expansion in capture
7592 @cindex capture, %:title placeholder
7593 @cindex %:title template expansion in capture
7594 Activating @code{capture} handler pops up a @samp{Capture} buffer and fills
7595 the capture template associated to the @samp{X} key with them.  The template
7596 refers to the data through @code{%:url} and @code{%:title} placeholders.
7597 Moreover, any selected text in the browser is appended to the body of the
7598 entry.
7600 @example
7601 emacsclient org-protocol://capture?template=X?url=URL?title=TITLE?body=BODY
7602 @end example
7604 To use this feature, add a bookmark with an arbitrary name, e.g.
7605 @samp{Org: capture} and enter this as @samp{Location}:
7607 @example
7608 javascript:location.href='org-protocol://template=x'+
7609       '&url='+encodeURIComponent(window.location.href)+
7610       '&title='+encodeURIComponent(document.title)+
7611       '&body='+encodeURIComponent(window.getSelection());
7612 @end example
7614 @vindex org-protocol-default-template-key
7615 The result depends on the capture template used, which is set in the bookmark
7616 itself, as in the example above, or in
7617 @code{org-protocol-default-template-key}.
7619 @node @code{open-source} protocol
7620 @subsection @code{open-source} protocol
7621 @cindex open-source protocol
7622 @cindex protocol, open-source
7624 The @code{open-source} handler is designed to help with editing local sources
7625 when reading a document.  To that effect, you can use a bookmark with the
7626 following location:
7628 @example
7629 javascript:location.href='org-protocol://open-source?&url='+
7630       encodeURIComponent(location.href)
7631 @end example
7633 @cindex protocol, open-source, :base-url property
7634 @cindex :base-url property in open-source protocol
7635 @cindex protocol, open-source, :working-directory property
7636 @cindex :working-directory property in open-source protocol
7637 @cindex protocol, open-source, :online-suffix property
7638 @cindex :online-suffix property in open-source protocol
7639 @cindex protocol, open-source, :working-suffix property
7640 @cindex :working-suffix property in open-source protocol
7641 @vindex org-protocol-project-alist
7642 The variable @code{org-protocol-project-alist} maps URLs to local file names,
7643 by stripping URL parameters from the end and replacing the @code{:base-url}
7644 with @code{:working-directory} and @code{:online-suffix} with
7645 @code{:working-suffix}.  For example, assuming you own a local copy of
7646 @url{http://orgmode.org/worg/} contents at @file{/home/user/worg}, you can
7647 set @code{org-protocol-project-alist} to the following
7649 @lisp
7650 (setq org-protocol-project-alist
7651       '(("Worg"
7652          :base-url "http://orgmode.org/worg/"
7653          :working-directory "/home/user/worg/"
7654          :online-suffix ".html"
7655          :working-suffix ".org")))
7656 @end lisp
7658 @noindent
7659 If you are now browsing
7660 @url{http://orgmode.org/worg/org-contrib/org-protocol.html} and find a typo
7661 or have an idea about how to enhance the documentation, simply click the
7662 bookmark and start editing.
7664 @cindex handle rewritten URL in open-source protocol
7665 @cindex protocol, open-source rewritten URL
7666 However, such mapping may not yield the desired results.  Suppose you
7667 maintain an online store located at @url{http://example.com/}.  The local
7668 sources reside in @file{/home/user/example/}.  It is common practice to serve
7669 all products in such a store through one file and rewrite URLs that do not
7670 match an existing file on the server.  That way, a request to
7671 @url{http://example.com/print/posters.html} might be rewritten on the server
7672 to something like
7673 @url{http://example.com/shop/products.php/posters.html.php}.  The
7674 @code{open-source} handler probably cannot find a file named
7675 @file{/home/user/example/print/posters.html.php} and fails.
7677 @cindex protocol, open-source, :rewrites property
7678 @cindex :rewrites property in open-source protocol
7679 Such an entry in @code{org-protocol-project-alist} may hold an additional
7680 property @code{:rewrites}.  This property is a list of cons cells, each of
7681 which maps a regular expression to a path relative to the
7682 @code{:working-directory}.
7684 Now map the URL to the path @file{/home/user/example/products.php} by adding
7685 @code{:rewrites} rules like this:
7687 @lisp
7688 (setq org-protocol-project-alist
7689       '(("example.com"
7690          :base-url "http://example.com/"
7691          :working-directory "/home/user/example/"
7692          :online-suffix ".php"
7693          :working-suffix ".php"
7694          :rewrites (("example.com/print/" . "products.php")
7695                     ("example.com/$" . "index.php")))))
7696 @end lisp
7698 @noindent
7699 Since @samp{example.com/$} is used as a regular expression, it maps
7700 @url{http://example.com/}, @url{https://example.com},
7701 @url{http://www.example.com/} and similar to
7702 @file{/home/user/example/index.php}.
7704 The @code{:rewrites} rules are searched as a last resort if and only if no
7705 existing file name is matched.
7707 @cindex protocol, open-source, set-up mapping
7708 @cindex set-up mappings in open-source protocol
7709 @findex org-protocol-create
7710 @findex org-protocol-create-for-org
7711 Two functions can help you filling @code{org-protocol-project-alist} with
7712 valid contents: @code{org-protocol-create} and
7713 @code{org-protocol-create-for-org}.  The latter is of use if you're editing
7714 an Org file that is part of a publishing project.
7716 @node Refile and copy
7717 @section Refile and copy
7718 @cindex refiling notes
7719 @cindex copying notes
7721 When reviewing the captured data, you may want to refile or to copy some of
7722 the entries into a different list, for example into a project.  Cutting,
7723 finding the right location, and then pasting the note is cumbersome.  To
7724 simplify this process, you can use the following special command:
7726 @table @kbd
7727 @orgcmd{C-c M-w,org-copy}
7728 @findex org-copy
7729 Copying works like refiling, except that the original note is not deleted.
7730 @orgcmd{C-c C-w,org-refile}
7731 @findex org-refile
7732 @vindex org-reverse-note-order
7733 @vindex org-refile-targets
7734 @vindex org-refile-use-outline-path
7735 @vindex org-outline-path-complete-in-steps
7736 @vindex org-refile-allow-creating-parent-nodes
7737 @vindex org-log-refile
7738 @vindex org-refile-use-cache
7739 @vindex org-refile-keep
7740 Refile the entry or region at point.  This command offers possible locations
7741 for refiling the entry and lets you select one with completion.  The item (or
7742 all items in the region) is filed below the target heading as a subitem.
7743 Depending on @code{org-reverse-note-order}, it will be either the first or
7744 last subitem.@*
7745 By default, all level 1 headlines in the current buffer are considered to be
7746 targets, but you can have more complex definitions across a number of files.
7747 See the variable @code{org-refile-targets} for details.  If you would like to
7748 select a location via a file-path-like completion along the outline path, see
7749 the variables @code{org-refile-use-outline-path} and
7750 @code{org-outline-path-complete-in-steps}.  If you would like to be able to
7751 create new nodes as new parents for refiling on the fly, check the
7752 variable @code{org-refile-allow-creating-parent-nodes}.
7753 When the variable @code{org-log-refile}@footnote{with corresponding
7754 @code{#+STARTUP} keywords @code{logrefile}, @code{lognoterefile},
7755 and @code{nologrefile}} is set, a timestamp or a note will be
7756 recorded when an entry has been refiled.
7757 @orgkey{C-u C-c C-w}
7758 Use the refile interface to jump to a heading.
7759 @orgcmd{C-u C-u C-c C-w,org-refile-goto-last-stored}
7760 Jump to the location where @code{org-refile} last moved a tree to.
7761 @item C-2 C-c C-w
7762 Refile as the child of the item currently being clocked.
7763 @item C-3 C-c C-w
7764 Refile and keep the entry in place.  Also see @code{org-refile-keep} to make
7765 this the default behavior, and beware that this may result in duplicated
7766 @code{ID} properties.
7767 @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}
7768 Clear the target cache.  Caching of refile targets can be turned on by
7769 setting @code{org-refile-use-cache}.  To make the command see new possible
7770 targets, you have to clear the cache with this command.
7771 @end table
7773 @node Archiving
7774 @section Archiving
7775 @cindex archiving
7777 When a project represented by a (sub)tree is finished, you may want
7778 to move the tree out of the way and to stop it from contributing to the
7779 agenda.  Archiving is important to keep your working files compact and global
7780 searches like the construction of agenda views fast.
7782 @table @kbd
7783 @orgcmd{C-c C-x C-a,org-archive-subtree-default}
7784 @vindex org-archive-default-command
7785 Archive the current entry using the command specified in the variable
7786 @code{org-archive-default-command}.
7787 @end table
7789 @menu
7790 * Moving subtrees::             Moving a tree to an archive file
7791 * Internal archiving::          Switch off a tree but keep it in the file
7792 @end menu
7794 @node Moving subtrees
7795 @subsection Moving a tree to the archive file
7796 @cindex external archiving
7798 The most common archiving action is to move a project tree to another file,
7799 the archive file.
7801 @table @kbd
7802 @orgcmdkskc{C-c C-x C-s,C-c $,org-archive-subtree}
7803 @vindex org-archive-location
7804 Archive the subtree starting at the cursor position to the location
7805 given by @code{org-archive-location}.
7806 @orgkey{C-u C-c C-x C-s}
7807 Check if any direct children of the current headline could be moved to
7808 the archive.  To do this, each subtree is checked for open TODO entries.
7809 If none are found, the command offers to move it to the archive
7810 location.  If the cursor is @emph{not} on a headline when this command
7811 is invoked, the level 1 trees will be checked.
7812 @orgkey{C-u C-u C-c C-x C-s}
7813 As above, but check subtree for timestamps instead of TODO entries.  The
7814 command will offer to archive the subtree if it @emph{does} contain a
7815 timestamp, and that timestamp is in the past.
7816 @end table
7818 @cindex archive locations
7819 The default archive location is a file in the same directory as the
7820 current file, with the name derived by appending @file{_archive} to the
7821 current file name.  You can also choose what heading to file archived
7822 items under, with the possibility to add them to a datetree in a file.
7823 For information and examples on how to specify the file and the heading,
7824 see the documentation string of the variable
7825 @code{org-archive-location}.
7827 There is also an in-buffer option for setting this variable, for example:
7829 @cindex #+ARCHIVE
7830 @example
7831 #+ARCHIVE: %s_done::
7832 @end example
7834 @cindex property, ARCHIVE
7835 @noindent
7836 If you would like to have a special ARCHIVE location for a single entry
7837 or a (sub)tree, give the entry an @code{:ARCHIVE:} property with the
7838 location as the value (@pxref{Properties and columns}).
7840 @vindex org-archive-save-context-info
7841 When a subtree is moved, it receives a number of special properties that
7842 record context information like the file from where the entry came, its
7843 outline path the archiving time etc.  Configure the variable
7844 @code{org-archive-save-context-info} to adjust the amount of information
7845 added.
7848 @node Internal archiving
7849 @subsection Internal archiving
7851 @cindex archive tag
7852 If you want to just switch off---for agenda views---certain subtrees without
7853 moving them to a different file, you can use the archive tag.
7855 A headline that is marked with the @samp{:ARCHIVE:} tag (@pxref{Tags}) stays
7856 at its location in the outline tree, but behaves in the following way:
7857 @itemize @minus
7858 @item
7859 @vindex org-cycle-open-archived-trees
7860 It does not open when you attempt to do so with a visibility cycling
7861 command (@pxref{Visibility cycling}).  You can force cycling archived
7862 subtrees with @kbd{C-@key{TAB}}, or by setting the option
7863 @code{org-cycle-open-archived-trees}.  Also normal outline commands like
7864 @code{show-all} will open archived subtrees.
7865 @item
7866 @vindex org-sparse-tree-open-archived-trees
7867 During sparse tree construction (@pxref{Sparse trees}), matches in
7868 archived subtrees are not exposed, unless you configure the option
7869 @code{org-sparse-tree-open-archived-trees}.
7870 @item
7871 @vindex org-agenda-skip-archived-trees
7872 During agenda view construction (@pxref{Agenda views}), the content of
7873 archived trees is ignored unless you configure the option
7874 @code{org-agenda-skip-archived-trees}, in which case these trees will always
7875 be included.  In the agenda you can press @kbd{v a} to get archives
7876 temporarily included.
7877 @item
7878 @vindex org-export-with-archived-trees
7879 Archived trees are not exported (@pxref{Exporting}), only the headline
7880 is.  Configure the details using the variable
7881 @code{org-export-with-archived-trees}.
7882 @item
7883 @vindex org-columns-skip-archived-trees
7884 Archived trees are excluded from column view unless the variable
7885 @code{org-columns-skip-archived-trees} is configured to @code{nil}.
7886 @end itemize
7888 The following commands help manage the ARCHIVE tag:
7890 @table @kbd
7891 @orgcmd{C-c C-x a,org-toggle-archive-tag}
7892 Toggle the ARCHIVE tag for the current headline.  When the tag is set,
7893 the headline changes to a shadowed face, and the subtree below it is
7894 hidden.
7895 @orgkey{C-u C-c C-x a}
7896 Check if any direct children of the current headline should be archived.
7897 To do this, each subtree is checked for open TODO entries.  If none are
7898 found, the command offers to set the ARCHIVE tag for the child.  If the
7899 cursor is @emph{not} on a headline when this command is invoked, the
7900 level 1 trees will be checked.
7901 @orgcmd{C-@kbd{TAB},org-force-cycle-archived}
7902 Cycle a tree even if it is tagged with ARCHIVE.
7903 @orgcmd{C-c C-x A,org-archive-to-archive-sibling}
7904 Move the current entry to the @emph{Archive Sibling}.  This is a sibling of
7905 the entry with the heading @samp{Archive} and the tag @samp{ARCHIVE}.  The
7906 entry becomes a child of that sibling and in this way retains a lot of its
7907 original context, including inherited tags and approximate position in the
7908 outline.
7909 @end table
7912 @node Agenda views
7913 @chapter Agenda views
7914 @cindex agenda views
7916 Due to the way Org works, TODO items, time-stamped items, and
7917 tagged headlines can be scattered throughout a file or even a number of
7918 files.  To get an overview of open action items, or of events that are
7919 important for a particular date, this information must be collected,
7920 sorted and displayed in an organized way.
7922 Org can select items based on various criteria and display them
7923 in a separate buffer.  Seven different view types are provided:
7925 @itemize @bullet
7926 @item
7927 an @emph{agenda} that is like a calendar and shows information
7928 for specific dates,
7929 @item
7930 a @emph{TODO list} that covers all unfinished
7931 action items,
7932 @item
7933 a @emph{match view}, showings headlines based on the tags, properties, and
7934 TODO state associated with them,
7935 @item
7936 a @emph{timeline view} that shows all events in a single Org file,
7937 in time-sorted view,
7938 @item
7939 a @emph{text search view} that shows all entries from multiple files
7940 that contain specified keywords,
7941 @item
7942 a @emph{stuck projects view} showing projects that currently don't move
7943 along, and
7944 @item
7945 @emph{custom views} that are special searches and combinations of different
7946 views.
7947 @end itemize
7949 @noindent
7950 The extracted information is displayed in a special @emph{agenda
7951 buffer}.  This buffer is read-only, but provides commands to visit the
7952 corresponding locations in the original Org files, and even to
7953 edit these files remotely.
7955 @vindex org-agenda-skip-comment-trees
7956 @vindex org-agenda-skip-archived-trees
7957 @cindex commented entries, in agenda views
7958 @cindex archived entries, in agenda views
7959 By default, the report ignores commented (@pxref{Comment lines}) and archived
7960 (@pxref{Internal archiving}) entries.  You can override this by setting
7961 @code{org-agenda-skip-comment-trees} and
7962 @code{org-agenda-skip-archived-trees} to @code{nil}.
7964 @vindex org-agenda-window-setup
7965 @vindex org-agenda-restore-windows-after-quit
7966 Two variables control how the agenda buffer is displayed and whether the
7967 window configuration is restored when the agenda exits:
7968 @code{org-agenda-window-setup} and
7969 @code{org-agenda-restore-windows-after-quit}.
7971 @menu
7972 * Agenda files::                Files being searched for agenda information
7973 * Agenda dispatcher::           Keyboard access to agenda views
7974 * Built-in agenda views::       What is available out of the box?
7975 * Presentation and sorting::    How agenda items are prepared for display
7976 * Agenda commands::             Remote editing of Org trees
7977 * Custom agenda views::         Defining special searches and views
7978 * Exporting agenda views::      Writing a view to a file
7979 * Agenda column view::          Using column view for collected entries
7980 @end menu
7982 @node Agenda files
7983 @section Agenda files
7984 @cindex agenda files
7985 @cindex files for agenda
7987 @vindex org-agenda-files
7988 The information to be shown is normally collected from all @emph{agenda
7989 files}, the files listed in the variable
7990 @code{org-agenda-files}@footnote{If the value of that variable is not a
7991 list, but a single file name, then the list of agenda files will be
7992 maintained in that external file.}.  If a directory is part of this list,
7993 all files with the extension @file{.org} in this directory will be part
7994 of the list.
7996 Thus, even if you only work with a single Org file, that file should
7997 be put into the list@footnote{When using the dispatcher, pressing
7998 @kbd{<} before selecting a command will actually limit the command to
7999 the current file, and ignore @code{org-agenda-files} until the next
8000 dispatcher command.}.  You can customize @code{org-agenda-files}, but
8001 the easiest way to maintain it is through the following commands
8003 @cindex files, adding to agenda list
8004 @table @kbd
8005 @orgcmd{C-c [,org-agenda-file-to-front}
8006 Add current file to the list of agenda files.  The file is added to
8007 the front of the list.  If it was already in the list, it is moved to
8008 the front.  With a prefix argument, file is added/moved to the end.
8009 @orgcmd{C-c ],org-remove-file}
8010 Remove current file from the list of agenda files.
8011 @kindex C-,
8012 @cindex cycling, of agenda files
8013 @orgcmd{C-',org-cycle-agenda-files}
8014 @itemx C-,
8015 Cycle through agenda file list, visiting one file after the other.
8016 @kindex M-x org-iswitchb
8017 @item M-x org-iswitchb RET
8018 Command to use an @code{iswitchb}-like interface to switch to and between Org
8019 buffers.
8020 @end table
8022 @noindent
8023 The Org menu contains the current list of files and can be used
8024 to visit any of them.
8026 If you would like to focus the agenda temporarily on a file not in
8027 this list, or on just one file in the list, or even on only a subtree in a
8028 file, then this can be done in different ways.  For a single agenda command,
8029 you may press @kbd{<} once or several times in the dispatcher
8030 (@pxref{Agenda dispatcher}).  To restrict the agenda scope for an
8031 extended period, use the following commands:
8033 @table @kbd
8034 @orgcmd{C-c C-x <,org-agenda-set-restriction-lock}
8035 Permanently restrict the agenda to the current subtree.  When with a
8036 prefix argument, or with the cursor before the first headline in a file,
8037 the agenda scope is set to the entire file.  This restriction remains in
8038 effect until removed with @kbd{C-c C-x >}, or by typing either @kbd{<}
8039 or @kbd{>} in the agenda dispatcher.  If there is a window displaying an
8040 agenda view, the new restriction takes effect immediately.
8041 @orgcmd{C-c C-x >,org-agenda-remove-restriction-lock}
8042 Remove the permanent restriction created by @kbd{C-c C-x <}.
8043 @end table
8045 @noindent
8046 When working with @file{speedbar.el}, you can use the following commands in
8047 the Speedbar frame:
8049 @table @kbd
8050 @orgcmdtkc{< @r{in the speedbar frame},<,org-speedbar-set-agenda-restriction}
8051 Permanently restrict the agenda to the item---either an Org file or a subtree
8052 in such a file---at the cursor in the Speedbar frame.
8053 If there is a window displaying an agenda view, the new restriction takes
8054 effect immediately.
8055 @orgcmdtkc{> @r{in the speedbar frame},>,org-agenda-remove-restriction-lock}
8056 Lift the restriction.
8057 @end table
8059 @node Agenda dispatcher
8060 @section The agenda dispatcher
8061 @cindex agenda dispatcher
8062 @cindex dispatching agenda commands
8063 The views are created through a dispatcher, which should be bound to a
8064 global key---for example @kbd{C-c a} (@pxref{Activation}).  In the
8065 following we will assume that @kbd{C-c a} is indeed how the dispatcher
8066 is accessed and list keyboard access to commands accordingly.  After
8067 pressing @kbd{C-c a}, an additional letter is required to execute a
8068 command.  The dispatcher offers the following default commands:
8070 @table @kbd
8071 @item a
8072 Create the calendar-like agenda (@pxref{Weekly/daily agenda}).
8073 @item t @r{/} T
8074 Create a list of all TODO items (@pxref{Global TODO list}).
8075 @item m @r{/} M
8076 Create a list of headlines matching a TAGS expression (@pxref{Matching
8077 tags and properties}).
8078 @item L
8079 Create the timeline view for the current buffer (@pxref{Timeline}).
8080 @item s
8081 Create a list of entries selected by a boolean expression of keywords
8082 and/or regular expressions that must or must not occur in the entry.
8083 @item /
8084 @vindex org-agenda-text-search-extra-files
8085 Search for a regular expression in all agenda files and additionally in
8086 the files listed in @code{org-agenda-text-search-extra-files}.  This
8087 uses the Emacs command @code{multi-occur}.  A prefix argument can be
8088 used to specify the number of context lines for each match, default is
8090 @item # @r{/} !
8091 Create a list of stuck projects (@pxref{Stuck projects}).
8092 @item <
8093 Restrict an agenda command to the current buffer@footnote{For backward
8094 compatibility, you can also press @kbd{1} to restrict to the current
8095 buffer.}.  After pressing @kbd{<}, you still need to press the character
8096 selecting the command.
8097 @item < <
8098 If there is an active region, restrict the following agenda command to
8099 the region.  Otherwise, restrict it to the current subtree@footnote{For
8100 backward compatibility, you can also press @kbd{0} to restrict to the
8101 current region/subtree.}.  After pressing @kbd{< <}, you still need to press the
8102 character selecting the command.
8104 @item *
8105 @cindex agenda, sticky
8106 @vindex org-agenda-sticky
8107 Toggle sticky agenda views.  By default, Org maintains only a single agenda
8108 buffer and rebuilds it each time you change the view, to make sure everything
8109 is always up to date.  If you often switch between agenda views and the build
8110 time bothers you, you can turn on sticky agenda buffers or make this the
8111 default by customizing the variable @code{org-agenda-sticky}.  With sticky
8112 agendas, the agenda dispatcher will not recreate agenda views from scratch,
8113 it will only switch to the selected one, and you need to update the agenda by
8114 hand with @kbd{r} or @kbd{g} when needed.  You can toggle sticky agenda view
8115 any time with @code{org-toggle-sticky-agenda}.
8116 @end table
8118 You can also define custom commands that will be accessible through the
8119 dispatcher, just like the default commands.  This includes the
8120 possibility to create extended agenda buffers that contain several
8121 blocks together, for example the weekly agenda, the global TODO list and
8122 a number of special tags matches.  @xref{Custom agenda views}.
8124 @node Built-in agenda views
8125 @section The built-in agenda views
8127 In this section we describe the built-in views.
8129 @menu
8130 * Weekly/daily agenda::         The calendar page with current tasks
8131 * Global TODO list::            All unfinished action items
8132 * Matching tags and properties::  Structured information with fine-tuned search
8133 * Timeline::                    Time-sorted view for single file
8134 * Search view::                 Find entries by searching for text
8135 * Stuck projects::              Find projects you need to review
8136 @end menu
8138 @node Weekly/daily agenda
8139 @subsection The weekly/daily agenda
8140 @cindex agenda
8141 @cindex weekly agenda
8142 @cindex daily agenda
8144 The purpose of the weekly/daily @emph{agenda} is to act like a page of a
8145 paper agenda, showing all the tasks for the current week or day.
8147 @table @kbd
8148 @cindex org-agenda, command
8149 @orgcmd{C-c a a,org-agenda-list}
8150 Compile an agenda for the current week from a list of Org files.  The agenda
8151 shows the entries for each day.  With a numeric prefix@footnote{For backward
8152 compatibility, the universal prefix @kbd{C-u} causes all TODO entries to be
8153 listed before the agenda.  This feature is deprecated, use the dedicated TODO
8154 list, or a block agenda instead (@pxref{Block agenda}).}  (like @kbd{C-u 2 1
8155 C-c a a}) you may set the number of days to be displayed.
8156 @end table
8158 @vindex org-agenda-span
8159 @vindex org-agenda-ndays
8160 @vindex org-agenda-start-day
8161 @vindex org-agenda-start-on-weekday
8162 The default number of days displayed in the agenda is set by the variable
8163 @code{org-agenda-span} (or the obsolete @code{org-agenda-ndays}).  This
8164 variable can be set to any number of days you want to see by default in the
8165 agenda, or to a span name, such as @code{day}, @code{week}, @code{month} or
8166 @code{year}.  For weekly agendas, the default is to start on the previous
8167 monday (see @code{org-agenda-start-on-weekday}).  You can also set the start
8168 date using a date shift: @code{(setq org-agenda-start-day "+10d")} will
8169 start the agenda ten days from today in the future.
8171 Remote editing from the agenda buffer means, for example, that you can
8172 change the dates of deadlines and appointments from the agenda buffer.
8173 The commands available in the Agenda buffer are listed in @ref{Agenda
8174 commands}.
8176 @subsubheading Calendar/Diary integration
8177 @cindex calendar integration
8178 @cindex diary integration
8180 Emacs contains the calendar and diary by Edward M. Reingold.  The
8181 calendar displays a three-month calendar with holidays from different
8182 countries and cultures.  The diary allows you to keep track of
8183 anniversaries, lunar phases, sunrise/set, recurrent appointments
8184 (weekly, monthly) and more.  In this way, it is quite complementary to
8185 Org.  It can be very useful to combine output from Org with
8186 the diary.
8188 In order to include entries from the Emacs diary into Org mode's
8189 agenda, you only need to customize the variable
8191 @lisp
8192 (setq org-agenda-include-diary t)
8193 @end lisp
8195 @noindent After that, everything will happen automatically.  All diary
8196 entries including holidays, anniversaries, etc., will be included in the
8197 agenda buffer created by Org mode.  @key{SPC}, @key{TAB}, and
8198 @key{RET} can be used from the agenda buffer to jump to the diary
8199 file in order to edit existing diary entries.  The @kbd{i} command to
8200 insert new entries for the current date works in the agenda buffer, as
8201 well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
8202 Sunrise/Sunset times, show lunar phases and to convert to other
8203 calendars, respectively.  @kbd{c} can be used to switch back and forth
8204 between calendar and agenda.
8206 If you are using the diary only for sexp entries and holidays, it is
8207 faster to not use the above setting, but instead to copy or even move
8208 the entries into an Org file.  Org mode evaluates diary-style sexp
8209 entries, and does it faster because there is no overhead for first
8210 creating the diary display.  Note that the sexp entries must start at
8211 the left margin, no whitespace is allowed before them.  For example,
8212 the following segment of an Org file will be processed and entries
8213 will be made in the agenda:
8215 @example
8216 * Holidays
8217   :PROPERTIES:
8218   :CATEGORY: Holiday
8219   :END:
8220 %%(org-calendar-holiday)   ; special function for holiday names
8222 * Birthdays
8223   :PROPERTIES:
8224   :CATEGORY: Ann
8225   :END:
8226 %%(org-anniversary 1956  5 14)@footnote{@code{org-anniversary} is just like @code{diary-anniversary}, but the argument order is always according to ISO and therefore independent of the value of @code{calendar-date-style}.} Arthur Dent is %d years old
8227 %%(org-anniversary 1869 10  2) Mahatma Gandhi would be %d years old
8228 @end example
8230 @subsubheading Anniversaries from BBDB
8231 @cindex BBDB, anniversaries
8232 @cindex anniversaries, from BBDB
8234 If you are using the Big Brothers Database to store your contacts, you will
8235 very likely prefer to store anniversaries in BBDB rather than in a
8236 separate Org or diary file.  Org supports this and will show BBDB
8237 anniversaries as part of the agenda.  All you need to do is to add the
8238 following to one of your agenda files:
8240 @example
8241 * Anniversaries
8242   :PROPERTIES:
8243   :CATEGORY: Anniv
8244   :END:
8245 %%(org-bbdb-anniversaries)
8246 @end example
8248 You can then go ahead and define anniversaries for a BBDB record.  Basically,
8249 you need to press @kbd{C-o anniversary @key{RET}} with the cursor in a BBDB
8250 record and then add the date in the format @code{YYYY-MM-DD} or @code{MM-DD},
8251 followed by a space and the class of the anniversary (@samp{birthday} or
8252 @samp{wedding}, or a format string).  If you omit the class, it will default to
8253 @samp{birthday}.  Here are a few examples, the header for the file
8254 @file{org-bbdb.el} contains more detailed information.
8256 @example
8257 1973-06-22
8258 06-22
8259 1955-08-02 wedding
8260 2008-04-14 %s released version 6.01 of org mode, %d years ago
8261 @end example
8263 After a change to BBDB, or for the first agenda display during an Emacs
8264 session, the agenda display will suffer a short delay as Org updates its
8265 hash with anniversaries.  However, from then on things will be very fast---much
8266 faster in fact than a long list of @samp{%%(diary-anniversary)} entries
8267 in an Org or Diary file.
8269 If you would like to see upcoming anniversaries with a bit of forewarning,
8270 you can use the following instead:
8272 @example
8273 * Anniversaries
8274   :PROPERTIES:
8275   :CATEGORY: Anniv
8276   :END:
8277 %%(org-bbdb-anniversaries-future 3)
8278 @end example
8280 That will give you three days' warning: on the anniversary date itself and the
8281 two days prior.  The argument is optional: if omitted, it defaults to 7.
8283 @subsubheading Appointment reminders
8284 @cindex @file{appt.el}
8285 @cindex appointment reminders
8286 @cindex appointment
8287 @cindex reminders
8289 Org can interact with Emacs appointments notification facility.  To add the
8290 appointments of your agenda files, use the command @code{org-agenda-to-appt}.
8291 This command lets you filter through the list of your appointments and add
8292 only those belonging to a specific category or matching a regular expression.
8293 It also reads a @code{APPT_WARNTIME} property which will then override the
8294 value of @code{appt-message-warning-time} for this appointment.  See the
8295 docstring for details.
8297 @node Global TODO list
8298 @subsection The global TODO list
8299 @cindex global TODO list
8300 @cindex TODO list, global
8302 The global TODO list contains all unfinished TODO items formatted and
8303 collected into a single place.
8305 @table @kbd
8306 @orgcmd{C-c a t,org-todo-list}
8307 Show the global TODO list.  This collects the TODO items from all agenda
8308 files (@pxref{Agenda views}) into a single buffer.  By default, this lists
8309 items with a state the is not a DONE state.  The buffer is in
8310 @code{agenda-mode}, so there are commands to examine and manipulate the TODO
8311 entries directly from that buffer (@pxref{Agenda commands}).
8312 @orgcmd{C-c a T,org-todo-list}
8313 @cindex TODO keyword matching
8314 @vindex org-todo-keywords
8315 Like the above, but allows selection of a specific TODO keyword.  You can
8316 also do this by specifying a prefix argument to @kbd{C-c a t}.  You are
8317 prompted for a keyword, and you may also specify several keywords by
8318 separating them with @samp{|} as the boolean OR operator.  With a numeric
8319 prefix, the Nth keyword in @code{org-todo-keywords} is selected.
8320 @kindex r
8321 The @kbd{r} key in the agenda buffer regenerates it, and you can give
8322 a prefix argument to this command to change the selected TODO keyword,
8323 for example @kbd{3 r}.  If you often need a search for a specific
8324 keyword, define a custom command for it (@pxref{Agenda dispatcher}).@*
8325 Matching specific TODO keywords can also be done as part of a tags
8326 search (@pxref{Tag searches}).
8327 @end table
8329 Remote editing of TODO items means that you can change the state of a
8330 TODO entry with a single key press.  The commands available in the
8331 TODO list are described in @ref{Agenda commands}.
8333 @cindex sublevels, inclusion into TODO list
8334 Normally the global TODO list simply shows all headlines with TODO
8335 keywords.  This list can become very long.  There are two ways to keep
8336 it more compact:
8337 @itemize @minus
8338 @item
8339 @vindex org-agenda-todo-ignore-scheduled
8340 @vindex org-agenda-todo-ignore-deadlines
8341 @vindex org-agenda-todo-ignore-timestamp
8342 @vindex org-agenda-todo-ignore-with-date
8343 Some people view a TODO item that has been @emph{scheduled} for execution or
8344 have a @emph{deadline} (@pxref{Timestamps}) as no longer @emph{open}.
8345 Configure the variables @code{org-agenda-todo-ignore-scheduled},
8346 @code{org-agenda-todo-ignore-deadlines},
8347 @code{org-agenda-todo-ignore-timestamp} and/or
8348 @code{org-agenda-todo-ignore-with-date} to exclude such items from the global
8349 TODO list.
8350 @item
8351 @vindex org-agenda-todo-list-sublevels
8352 TODO items may have sublevels to break up the task into subtasks.  In
8353 such cases it may be enough to list only the highest level TODO headline
8354 and omit the sublevels from the global list.  Configure the variable
8355 @code{org-agenda-todo-list-sublevels} to get this behavior.
8356 @end itemize
8358 @node Matching tags and properties
8359 @subsection Matching tags and properties
8360 @cindex matching, of tags
8361 @cindex matching, of properties
8362 @cindex tags view
8363 @cindex match view
8365 If headlines in the agenda files are marked with @emph{tags} (@pxref{Tags}),
8366 or have properties (@pxref{Properties and columns}), you can select headlines
8367 based on this metadata and collect them into an agenda buffer.  The match
8368 syntax described here also applies when creating sparse trees with @kbd{C-c /
8371 @table @kbd
8372 @orgcmd{C-c a m,org-tags-view}
8373 Produce a list of all headlines that match a given set of tags.  The
8374 command prompts for a selection criterion, which is a boolean logic
8375 expression with tags, like @samp{+work+urgent-withboss} or
8376 @samp{work|home} (@pxref{Tags}).  If you often need a specific search,
8377 define a custom command for it (@pxref{Agenda dispatcher}).
8378 @orgcmd{C-c a M,org-tags-view}
8379 @vindex org-tags-match-list-sublevels
8380 @vindex org-agenda-tags-todo-honor-ignore-options
8381 Like @kbd{C-c a m}, but only select headlines that are also TODO items in a
8382 not-DONE state and force checking subitems (see variable
8383 @code{org-tags-match-list-sublevels}).  To exclude scheduled/deadline items,
8384 see the variable @code{org-agenda-tags-todo-honor-ignore-options}.  Matching
8385 specific TODO keywords together with a tags match is also possible, see
8386 @ref{Tag searches}.
8387 @end table
8389 The commands available in the tags list are described in @ref{Agenda
8390 commands}.
8392 @subsubheading Match syntax
8394 @cindex Boolean logic, for tag/property searches
8395 A search string can use Boolean operators @samp{&} for @code{AND} and
8396 @samp{|} for @code{OR}@.  @samp{&} binds more strongly than @samp{|}.
8397 Parentheses are not implemented.  Each element in the search is either a
8398 tag, a regular expression matching tags, or an expression like
8399 @code{PROPERTY OPERATOR VALUE} with a comparison operator, accessing a
8400 property value.  Each element may be preceded by @samp{-}, to select
8401 against it, and @samp{+} is syntactic sugar for positive selection.  The
8402 @code{AND} operator @samp{&} is optional when @samp{+} or @samp{-} is
8403 present.  Here are some examples, using only tags.
8405 @table @samp
8406 @item work
8407 Select headlines tagged @samp{:work:}.
8408 @item work&boss
8409 Select headlines tagged @samp{:work:} and @samp{:boss:}.
8410 @item +work-boss
8411 Select headlines tagged @samp{:work:}, but discard those also tagged
8412 @samp{:boss:}.
8413 @item work|laptop
8414 Selects lines tagged @samp{:work:} or @samp{:laptop:}.
8415 @item work|laptop+night
8416 Like before, but require the @samp{:laptop:} lines to be tagged also
8417 @samp{:night:}.
8418 @end table
8420 @cindex regular expressions, with tags search
8421 Instead of a tag, you may also specify a regular expression enclosed in curly
8422 braces.  For example,
8423 @samp{work+@{^boss.*@}} matches headlines that contain the tag
8424 @samp{:work:} and any tag @i{starting} with @samp{boss}.
8426 @cindex group tags, as regular expressions
8427 Group tags (@pxref{Tag hierarchy}) are expanded as regular expressions.  E.g.,
8428 if @samp{:work:} is a group tag for the group @samp{:work:lab:conf:}, then
8429 searching for @samp{work} will search for @samp{@{\(?:work\|lab\|conf\)@}}
8430 and searching for @samp{-work} will search for all headlines but those with
8431 one of the tags in the group (i.e., @samp{-@{\(?:work\|lab\|conf\)@}}).
8433 @cindex TODO keyword matching, with tags search
8434 @cindex level, require for tags/property match
8435 @cindex category, require for tags/property match
8436 @vindex org-odd-levels-only
8437 You may also test for properties (@pxref{Properties and columns}) at the same
8438 time as matching tags.  The properties may be real properties, or special
8439 properties that represent other metadata (@pxref{Special properties}).  For
8440 example, the ``property'' @code{TODO} represents the TODO keyword of the
8441 entry and the ``property'' @code{PRIORITY} represents the PRIORITY keyword of
8442 the entry.
8444 In addition to the properties mentioned above, @code{LEVEL} represents the
8445 level of an entry.  So a search @samp{+LEVEL=3+boss-TODO="DONE"} lists all
8446 level three headlines that have the tag @samp{boss} and are @emph{not} marked
8447 with the TODO keyword DONE@.  In buffers with @code{org-odd-levels-only} set,
8448 @samp{LEVEL} does not count the number of stars, but @samp{LEVEL=2} will
8449 correspond to 3 stars etc.
8451 Here are more examples:
8453 @table @samp
8454 @item work+TODO="WAITING"
8455 Select @samp{:work:}-tagged TODO lines with the specific TODO
8456 keyword @samp{WAITING}.
8457 @item work+TODO="WAITING"|home+TODO="WAITING"
8458 Waiting tasks both at work and at home.
8459 @end table
8461 When matching properties, a number of different operators can be used to test
8462 the value of a property.  Here is a complex example:
8464 @example
8465 +work-boss+PRIORITY="A"+Coffee="unlimited"+Effort<2         \
8466          +With=@{Sarah\|Denny@}+SCHEDULED>="<2008-10-11>"
8467 @end example
8469 @noindent
8470 The type of comparison will depend on how the comparison value is written:
8471 @itemize @minus
8472 @item
8473 If the comparison value is a plain number, a numerical comparison is done,
8474 and the allowed operators are @samp{<}, @samp{=}, @samp{>}, @samp{<=},
8475 @samp{>=}, and @samp{<>}.
8476 @item
8477 If the comparison value is enclosed in double-quotes,
8478 a string comparison is done, and the same operators are allowed.
8479 @item
8480 If the comparison value is enclosed in double-quotes @emph{and} angular
8481 brackets (like @samp{DEADLINE<="<2008-12-24 18:30>"}), both values are
8482 assumed to be date/time specifications in the standard Org way, and the
8483 comparison will be done accordingly.  Special values that will be recognized
8484 are @code{"<now>"} for now (including time), and @code{"<today>"}, and
8485 @code{"<tomorrow>"} for these days at 00:00 hours, i.e., without a time
8486 specification.  Also strings like @code{"<+5d>"} or @code{"<-2m>"} with units
8487 @code{d}, @code{w}, @code{m}, and @code{y} for day, week, month, and year,
8488 respectively, can be used.
8489 @item
8490 If the comparison value is enclosed
8491 in curly braces, a regexp match is performed, with @samp{=} meaning that the
8492 regexp matches the property value, and @samp{<>} meaning that it does not
8493 match.
8494 @end itemize
8496 So the search string in the example finds entries tagged @samp{:work:} but
8497 not @samp{:boss:}, which also have a priority value @samp{A}, a
8498 @samp{:Coffee:} property with the value @samp{unlimited}, an @samp{Effort}
8499 property that is numerically smaller than 2, a @samp{:With:} property that is
8500 matched by the regular expression @samp{Sarah\|Denny}, and that are scheduled
8501 on or after October 11, 2008.
8503 You can configure Org mode to use property inheritance during a search, but
8504 beware that this can slow down searches considerably.  See @ref{Property
8505 inheritance}, for details.
8507 For backward compatibility, and also for typing speed, there is also a
8508 different way to test TODO states in a search.  For this, terminate the
8509 tags/property part of the search string (which may include several terms
8510 connected with @samp{|}) with a @samp{/} and then specify a Boolean
8511 expression just for TODO keywords.  The syntax is then similar to that for
8512 tags, but should be applied with care: for example, a positive selection on
8513 several TODO keywords cannot meaningfully be combined with boolean AND@.
8514 However, @emph{negative selection} combined with AND can be meaningful.  To
8515 make sure that only lines are checked that actually have any TODO keyword
8516 (resulting in a speed-up), use @kbd{C-c a M}, or equivalently start the TODO
8517 part after the slash with @samp{!}.  Using @kbd{C-c a M} or @samp{/!} will
8518 not match TODO keywords in a DONE state.  Examples:
8520 @table @samp
8521 @item work/WAITING
8522 Same as @samp{work+TODO="WAITING"}
8523 @item work/!-WAITING-NEXT
8524 Select @samp{:work:}-tagged TODO lines that are neither @samp{WAITING}
8525 nor @samp{NEXT}
8526 @item work/!+WAITING|+NEXT
8527 Select @samp{:work:}-tagged TODO lines that are either @samp{WAITING} or
8528 @samp{NEXT}.
8529 @end table
8531 @node Timeline
8532 @subsection Timeline for a single file
8533 @cindex timeline, single file
8534 @cindex time-sorted view
8536 The timeline summarizes all time-stamped items from a single Org mode
8537 file in a @emph{time-sorted view}.  The main purpose of this command is
8538 to give an overview over events in a project.
8540 @table @kbd
8541 @orgcmd{C-c a L,org-timeline}
8542 Show a time-sorted view of the Org file, with all time-stamped items.
8543 When called with a @kbd{C-u} prefix, all unfinished TODO entries
8544 (scheduled or not) are also listed under the current date.
8545 @end table
8547 @noindent
8548 The commands available in the timeline buffer are listed in
8549 @ref{Agenda commands}.
8551 @node Search view
8552 @subsection Search view
8553 @cindex search view
8554 @cindex text search
8555 @cindex searching, for text
8557 This agenda view is a general text search facility for Org mode entries.
8558 It is particularly useful to find notes.
8560 @table @kbd
8561 @orgcmd{C-c a s,org-search-view}
8562 This is a special search that lets you select entries by matching a substring
8563 or specific words using a boolean logic.
8564 @end table
8565 For example, the search string @samp{computer equipment} will find entries
8566 that contain @samp{computer equipment} as a substring.  If the two words are
8567 separated by more space or a line break, the search will still match.
8568 Search view can also search for specific keywords in the entry, using Boolean
8569 logic.  The search string @samp{+computer +wifi -ethernet -@{8\.11[bg]@}}
8570 will search for note entries that contain the keywords @code{computer}
8571 and @code{wifi}, but not the keyword @code{ethernet}, and which are also
8572 not matched by the regular expression @code{8\.11[bg]}, meaning to
8573 exclude both 8.11b and 8.11g.  The first @samp{+} is necessary to turn on
8574 word search, other @samp{+} characters are optional.  For more details, see
8575 the docstring of the command @code{org-search-view}.
8577 @vindex org-agenda-text-search-extra-files
8578 Note that in addition to the agenda files, this command will also search
8579 the files listed in @code{org-agenda-text-search-extra-files}.
8581 @node Stuck projects
8582 @subsection Stuck projects
8583 @pindex GTD, Getting Things Done
8585 If you are following a system like David Allen's GTD to organize your
8586 work, one of the ``duties'' you have is a regular review to make sure
8587 that all projects move along.  A @emph{stuck} project is a project that
8588 has no defined next actions, so it will never show up in the TODO lists
8589 Org mode produces.  During the review, you need to identify such
8590 projects and define next actions for them.
8592 @table @kbd
8593 @orgcmd{C-c a #,org-agenda-list-stuck-projects}
8594 List projects that are stuck.
8595 @kindex C-c a !
8596 @item C-c a !
8597 @vindex org-stuck-projects
8598 Customize the variable @code{org-stuck-projects} to define what a stuck
8599 project is and how to find it.
8600 @end table
8602 You almost certainly will have to configure this view before it will
8603 work for you.  The built-in default assumes that all your projects are
8604 level-2 headlines, and that a project is not stuck if it has at least
8605 one entry marked with a TODO keyword TODO or NEXT or NEXTACTION.
8607 Let's assume that you, in your own way of using Org mode, identify
8608 projects with a tag PROJECT, and that you use a TODO keyword MAYBE to
8609 indicate a project that should not be considered yet.  Let's further
8610 assume that the TODO keyword DONE marks finished projects, and that NEXT
8611 and TODO indicate next actions.  The tag @@SHOP indicates shopping and
8612 is a next action even without the NEXT tag.  Finally, if the project
8613 contains the special word IGNORE anywhere, it should not be listed
8614 either.  In this case you would start by identifying eligible projects
8615 with a tags/todo match@footnote{@xref{Tag searches}.}
8616 @samp{+PROJECT/-MAYBE-DONE}, and then check for TODO, NEXT, @@SHOP, and
8617 IGNORE in the subtree to identify projects that are not stuck.  The
8618 correct customization for this is
8620 @lisp
8621 (setq org-stuck-projects
8622       '("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@@SHOP")
8623                                "\\<IGNORE\\>"))
8624 @end lisp
8626 Note that if a project is identified as non-stuck, the subtree of this entry
8627 will still be searched for stuck projects.
8629 @node Presentation and sorting
8630 @section Presentation and sorting
8631 @cindex presentation, of agenda items
8633 @vindex org-agenda-prefix-format
8634 @vindex org-agenda-tags-column
8635 Before displaying items in an agenda view, Org mode visually prepares the
8636 items and sorts them.  Each item occupies a single line.  The line starts
8637 with a @emph{prefix} that contains the @emph{category} (@pxref{Categories})
8638 of the item and other important information.  You can customize in which
8639 column tags will be displayed through @code{org-agenda-tags-column}.  You can
8640 also customize the prefix using the option @code{org-agenda-prefix-format}.
8641 This prefix is followed by a cleaned-up version of the outline headline
8642 associated with the item.
8644 @menu
8645 * Categories::                  Not all tasks are equal
8646 * Time-of-day specifications::  How the agenda knows the time
8647 * Sorting agenda items::        The order of things
8648 * Filtering/limiting agenda items::  Dynamically narrow the agenda
8649 @end menu
8651 @node Categories
8652 @subsection Categories
8654 @cindex category
8655 @cindex #+CATEGORY
8656 The category is a broad label assigned to each agenda item.  By default, the
8657 category is simply derived from the file name, but you can also specify it
8658 with a special line in the buffer, like this:
8660 @example
8661 #+CATEGORY: Thesis
8662 @end example
8664 @noindent
8665 @cindex property, CATEGORY
8666 If you would like to have a special CATEGORY for a single entry or a
8667 (sub)tree, give the entry a @code{:CATEGORY:} property with the
8668 special category you want to apply as the value.
8670 @noindent
8671 The display in the agenda buffer looks best if the category is not
8672 longer than 10 characters.
8674 @noindent
8675 You can set up icons for category by customizing the
8676 @code{org-agenda-category-icon-alist} variable.
8678 @node Time-of-day specifications
8679 @subsection Time-of-day specifications
8680 @cindex time-of-day specification
8682 Org mode checks each agenda item for a time-of-day specification.  The
8683 time can be part of the timestamp that triggered inclusion into the
8684 agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}.  Time
8685 ranges can be specified with two timestamps, like
8687 @w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
8689 In the headline of the entry itself, a time(range) may also appear as
8690 plain text (like @samp{12:45} or a @samp{8:30-1pm}).  If the agenda
8691 integrates the Emacs diary (@pxref{Weekly/daily agenda}), time
8692 specifications in diary entries are recognized as well.
8694 For agenda display, Org mode extracts the time and displays it in a
8695 standard 24 hour format as part of the prefix.  The example times in
8696 the previous paragraphs would end up in the agenda like this:
8698 @example
8699     8:30-13:00 Arthur Dent lies in front of the bulldozer
8700    12:45...... Ford Prefect arrives and takes Arthur to the pub
8701    19:00...... The Vogon reads his poem
8702    20:30-22:15 Marvin escorts the Hitchhikers to the bridge
8703 @end example
8705 @cindex time grid
8706 If the agenda is in single-day mode, or for the display of today, the
8707 timed entries are embedded in a time grid, like
8709 @example
8710     8:00...... ------------------
8711     8:30-13:00 Arthur Dent lies in front of the bulldozer
8712    10:00...... ------------------
8713    12:00...... ------------------
8714    12:45...... Ford Prefect arrives and takes Arthur to the pub
8715    14:00...... ------------------
8716    16:00...... ------------------
8717    18:00...... ------------------
8718    19:00...... The Vogon reads his poem
8719    20:00...... ------------------
8720    20:30-22:15 Marvin escorts the Hitchhikers to the bridge
8721 @end example
8723 @vindex org-agenda-use-time-grid
8724 @vindex org-agenda-time-grid
8725 The time grid can be turned on and off with the variable
8726 @code{org-agenda-use-time-grid}, and can be configured with
8727 @code{org-agenda-time-grid}.
8729 @node Sorting agenda items
8730 @subsection Sorting agenda items
8731 @cindex sorting, of agenda items
8732 @cindex priorities, of agenda items
8733 Before being inserted into a view, the items are sorted.  How this is
8734 done depends on the type of view.
8735 @itemize @bullet
8736 @item
8737 @vindex org-agenda-files
8738 For the daily/weekly agenda, the items for each day are sorted.  The
8739 default order is to first collect all items containing an explicit
8740 time-of-day specification.  These entries will be shown at the beginning
8741 of the list, as a @emph{schedule} for the day.  After that, items remain
8742 grouped in categories, in the sequence given by @code{org-agenda-files}.
8743 Within each category, items are sorted by priority (@pxref{Priorities}),
8744 which is composed of the base priority (2000 for priority @samp{A}, 1000
8745 for @samp{B}, and 0 for @samp{C}), plus additional increments for
8746 overdue scheduled or deadline items.
8747 @item
8748 For the TODO list, items remain in the order of categories, but within
8749 each category, sorting takes place according to priority
8750 (@pxref{Priorities}).  The priority used for sorting derives from the
8751 priority cookie, with additions depending on how close an item is to its due
8752 or scheduled date.
8753 @item
8754 For tags matches, items are not sorted at all, but just appear in the
8755 sequence in which they are found in the agenda files.
8756 @end itemize
8758 @vindex org-agenda-sorting-strategy
8759 Sorting can be customized using the variable
8760 @code{org-agenda-sorting-strategy}, and may also include criteria based on
8761 the estimated effort of an entry (@pxref{Effort estimates}).
8763 @node Filtering/limiting agenda items
8764 @subsection Filtering/limiting agenda items
8766 Agenda built-in or customized commands are statically defined.  Agenda
8767 filters and limits provide two ways of dynamically narrowing down the list of
8768 agenda entries: @emph{filters} and @emph{limits}.  Filters only act on the
8769 display of the items, while limits take effect before the list of agenda
8770 entries is built.  Filters are more often used interactively, while limits are
8771 mostly useful when defined as local variables within custom agenda commands.
8773 @subsubheading Filtering in the agenda
8774 @cindex filtering, by tag, category, top headline and effort, in agenda
8775 @cindex tag filtering, in agenda
8776 @cindex category filtering, in agenda
8777 @cindex top headline filtering, in agenda
8778 @cindex effort filtering, in agenda
8779 @cindex query editing, in agenda
8781 @table @kbd
8782 @orgcmd{/,org-agenda-filter-by-tag}
8783 @vindex org-agenda-tag-filter-preset
8784 Filter the agenda view with respect to a tag and/or effort estimates.  The
8785 difference between this and a custom agenda command is that filtering is very
8786 fast, so that you can switch quickly between different filters without having
8787 to recreate the agenda.@footnote{Custom commands can preset a filter by
8788 binding the variable @code{org-agenda-tag-filter-preset} as an option.  This
8789 filter will then be applied to the view and persist as a basic filter through
8790 refreshes and more secondary filtering.  The filter is a global property of
8791 the entire agenda view---in a block agenda, you should only set this in the
8792 global options section, not in the section of an individual block.}
8794 You will be prompted for a tag selection letter; @key{SPC} will mean any tag
8795 at all.  Pressing @key{TAB} at that prompt will offer use completion to
8796 select a tag (including any tags that do not have a selection character).
8797 The command then hides all entries that do not contain or inherit this tag.
8798 When called with prefix arg, remove the entries that @emph{do} have the tag.
8799 A second @kbd{/} at the prompt will turn off the filter and unhide any hidden
8800 entries.  Pressing @kbd{+} or @kbd{-} switches between filtering and
8801 excluding the next tag.
8803 Org also supports automatic, context-aware tag filtering.  If the variable
8804 @code{org-agenda-auto-exclude-function} is set to a user-defined function,
8805 that function can decide which tags should be excluded from the agenda
8806 automatically.  Once this is set, the @kbd{/} command then accepts @kbd{RET}
8807 as a sub-option key and runs the auto exclusion logic.  For example, let's
8808 say you use a @code{Net} tag to identify tasks which need network access, an
8809 @code{Errand} tag for errands in town, and a @code{Call} tag for making phone
8810 calls.  You could auto-exclude these tags based on the availability of the
8811 Internet, and outside of business hours, with something like this:
8813 @smalllisp
8814 @group
8815 (defun org-my-auto-exclude-function (tag)
8816   (and (cond
8817         ((string= tag "Net")
8818          (/= 0 (call-process "/sbin/ping" nil nil nil
8819                              "-c1" "-q" "-t1" "mail.gnu.org")))
8820         ((or (string= tag "Errand") (string= tag "Call"))
8821          (let ((hour (nth 2 (decode-time))))
8822            (or (< hour 8) (> hour 21)))))
8823        (concat "-" tag)))
8825 (setq org-agenda-auto-exclude-function 'org-my-auto-exclude-function)
8826 @end group
8827 @end smalllisp
8830 @kindex [
8831 @kindex ]
8832 @kindex @{
8833 @kindex @}
8834 @item [ ] @{ @}
8835 @table @i
8836 @item @r{in} search view
8837 add new search words (@kbd{[} and @kbd{]}) or new regular expressions
8838 (@kbd{@{} and @kbd{@}}) to the query string.  The opening bracket/brace will
8839 add a positive search term prefixed by @samp{+}, indicating that this search
8840 term @i{must} occur/match in the entry.  The closing bracket/brace will add a
8841 negative search term which @i{must not} occur/match in the entry for it to be
8842 selected.
8843 @end table
8845 @orgcmd{<,org-agenda-filter-by-category}
8846 @vindex org-agenda-category-filter-preset
8848 Filter the current agenda view with respect to the category of the item at
8849 point.  Pressing @code{<} another time will remove this filter.  When called
8850 with a prefix argument exclude the category of the item at point from the
8851 agenda.
8853 You can add a filter preset in custom agenda commands through the option
8854 @code{org-agenda-category-filter-preset}.  @xref{Setting options}.
8856 @orgcmd{^,org-agenda-filter-by-top-headline}
8857 Filter the current agenda view and only display the siblings and the parent
8858 headline of the one at point.
8860 @orgcmd{=,org-agenda-filter-by-regexp}
8861 @vindex org-agenda-regexp-filter-preset
8863 Filter the agenda view by a regular expression: only show agenda entries
8864 matching the regular expression the user entered.  When called with a prefix
8865 argument, it will filter @emph{out} entries matching the regexp.  With two
8866 universal prefix arguments, it will remove all the regexp filters, which can
8867 be accumulated.
8869 You can add a filter preset in custom agenda commands through the option
8870 @code{org-agenda-regexp-filter-preset}.  @xref{Setting options}.
8872 @orgcmd{_,org-agenda-filter-by-effort}
8873 @vindex org-agenda-effort-filter-preset
8874 @vindex org-sort-agenda-noeffort-is-high
8875 Filter the agenda view with respect to effort estimates.
8876 You first need to set up allowed efforts globally, for example
8877 @lisp
8878 (setq org-global-properties
8879     '(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00")))
8880 @end lisp
8881 You can then filter for an effort by first typing an operator, one of
8882 @kbd{<}, @kbd{>}, and @kbd{=}, and then the one-digit index of an effort
8883 estimate in your array of allowed values, where @kbd{0} means the 10th value.
8884 The filter will then restrict to entries with effort smaller-or-equal, equal,
8885 or larger-or-equal than the selected value.  For application of the operator,
8886 entries without a defined effort will be treated according to the value of
8887 @code{org-sort-agenda-noeffort-is-high}.
8889 When called with a prefix argument, it will remove entries matching the
8890 condition.  With two universal prefix arguments, it will clear effort
8891 filters, which can be accumulated.
8893 You can add a filter preset in custom agenda commands through the option
8894 @code{org-agenda-effort-filter-preset}.  @xref{Setting options}.
8896 @orgcmd{|,org-agenda-filter-remove-all}
8897 Remove all filters in the current agenda view.
8898 @end table
8900 @subsubheading Setting limits for the agenda
8901 @cindex limits, in agenda
8902 @vindex org-agenda-max-entries
8903 @vindex org-agenda-max-effort
8904 @vindex org-agenda-max-todos
8905 @vindex org-agenda-max-tags
8907 Here is a list of options that you can set, either globally, or locally in
8908 your custom agenda views (@pxref{Custom agenda views}).
8910 @table @code
8911 @item org-agenda-max-entries
8912 Limit the number of entries.
8913 @item org-agenda-max-effort
8914 Limit the duration of accumulated efforts (as minutes).
8915 @item org-agenda-max-todos
8916 Limit the number of entries with TODO keywords.
8917 @item org-agenda-max-tags
8918 Limit the number of tagged entries.
8919 @end table
8921 When set to a positive integer, each option will exclude entries from other
8922 categories: for example, @code{(setq org-agenda-max-effort 100)} will limit
8923 the agenda to 100 minutes of effort and exclude any entry that has no effort
8924 property.  If you want to include entries with no effort property, use a
8925 negative value for @code{org-agenda-max-effort}.
8927 One useful setup is to use @code{org-agenda-max-entries} locally in a custom
8928 command.  For example, this custom command will display the next five entries
8929 with a @code{NEXT} TODO keyword.
8931 @smalllisp
8932 (setq org-agenda-custom-commands
8933       '(("n" todo "NEXT"
8934          ((org-agenda-max-entries 5)))))
8935 @end smalllisp
8937 Once you mark one of these five entry as @code{DONE}, rebuilding the agenda
8938 will again the next five entries again, including the first entry that was
8939 excluded so far.
8941 You can also dynamically set temporary limits, which will be lost when
8942 rebuilding the agenda:
8944 @table @kbd
8945 @orgcmd{~,org-agenda-limit-interactively}
8946 This prompts for the type of limit to apply and its value.
8947 @end table
8949 @node Agenda commands
8950 @section Commands in the agenda buffer
8951 @cindex commands, in agenda buffer
8953 Entries in the agenda buffer are linked back to the Org file or diary
8954 file where they originate.  You are not allowed to edit the agenda
8955 buffer itself, but commands are provided to show and jump to the
8956 original entry location, and to edit the Org files ``remotely'' from
8957 the agenda buffer.  In this way, all information is stored only once,
8958 removing the risk that your agenda and note files may diverge.
8960 Some commands can be executed with mouse clicks on agenda lines.  For
8961 the other commands, the cursor needs to be in the desired line.
8963 @table @kbd
8964 @tsubheading{Motion}
8965 @cindex motion commands in agenda
8966 @orgcmd{n,org-agenda-next-line}
8967 Next line (same as @key{down} and @kbd{C-n}).
8968 @orgcmd{p,org-agenda-previous-line}
8969 Previous line (same as @key{up} and @kbd{C-p}).
8970 @orgcmd{N,org-agenda-next-item}
8971 Next item: same as next line, but only consider items.
8972 @orgcmd{P,org-agenda-previous-item}
8973 Previous item: same as previous line, but only consider items.
8974 @tsubheading{View/Go to Org file}
8975 @orgcmdkkc{@key{SPC},mouse-3,org-agenda-show-and-scroll-up}
8976 Display the original location of the item in another window.  With prefix
8977 arg, make sure that drawers stay folded.
8979 @orgcmd{L,org-agenda-recenter}
8980 Display original location and recenter that window.
8982 @orgcmdkkc{@key{TAB},mouse-2,org-agenda-goto}
8983 Go to the original location of the item in another window.
8985 @orgcmd{@key{RET},org-agenda-switch-to}
8986 Go to the original location of the item and delete other windows.
8988 @orgcmd{F,org-agenda-follow-mode}
8989 @vindex org-agenda-start-with-follow-mode
8990 Toggle Follow mode.  In Follow mode, as you move the cursor through
8991 the agenda buffer, the other window always shows the corresponding
8992 location in the Org file.  The initial setting for this mode in new
8993 agenda buffers can be set with the variable
8994 @code{org-agenda-start-with-follow-mode}.
8996 @orgcmd{C-c C-x b,org-agenda-tree-to-indirect-buffer}
8997 Display the entire subtree of the current item in an indirect buffer.  With a
8998 numeric prefix argument N, go up to level N and then take that tree.  If N is
8999 negative, go up that many levels.  With a @kbd{C-u} prefix, do not remove the
9000 previously used indirect buffer.
9002 @orgcmd{C-c C-o,org-agenda-open-link}
9003 Follow a link in the entry.  This will offer a selection of any links in the
9004 text belonging to the referenced Org node.  If there is only one link, it
9005 will be followed without a selection prompt.
9007 @tsubheading{Change display}
9008 @cindex display changing, in agenda
9009 @kindex A
9010 @item A
9011 Interactively select another agenda view and append it to the current view.
9013 @kindex o
9014 @item o
9015 Delete other windows.
9017 @orgcmdkskc{v d,d,org-agenda-day-view}
9018 @xorgcmdkskc{v w,w,org-agenda-week-view}
9019 @xorgcmd{v t,org-agenda-fortnight-view}
9020 @xorgcmd{v m,org-agenda-month-view}
9021 @xorgcmd{v y,org-agenda-year-view}
9022 @xorgcmd{v SPC,org-agenda-reset-view}
9023 @vindex org-agenda-span
9024 Switch to day/week/month/year view.  When switching to day or week view, this
9025 setting becomes the default for subsequent agenda refreshes.  Since month and
9026 year views are slow to create, they do not become the default.  A numeric
9027 prefix argument may be used to jump directly to a specific day of the year,
9028 ISO week, month, or year, respectively.  For example, @kbd{32 d} jumps to
9029 February 1st, @kbd{9 w} to ISO week number 9.  When setting day, week, or
9030 month view, a year may be encoded in the prefix argument as well.  For
9031 example, @kbd{200712 w} will jump to week 12 in 2007.  If such a year
9032 specification has only one or two digits, it will be mapped to the interval
9033 1938--2037.  @kbd{v @key{SPC}} will reset to what is set in
9034 @code{org-agenda-span}.
9036 @orgcmd{f,org-agenda-later}
9037 Go forward in time to display the following @code{org-agenda-current-span} days.
9038 For example, if the display covers a week, switch to the following week.
9039 With prefix arg, go forward that many times @code{org-agenda-current-span} days.
9041 @orgcmd{b,org-agenda-earlier}
9042 Go backward in time to display earlier dates.
9044 @orgcmd{.,org-agenda-goto-today}
9045 Go to today.
9047 @orgcmd{j,org-agenda-goto-date}
9048 Prompt for a date and go there.
9050 @orgcmd{J,org-agenda-clock-goto}
9051 Go to the currently clocked-in task @i{in the agenda buffer}.
9053 @orgcmd{D,org-agenda-toggle-diary}
9054 Toggle the inclusion of diary entries.  See @ref{Weekly/daily agenda}.
9056 @orgcmdkskc{v l,l,org-agenda-log-mode}
9057 @kindex v L
9058 @vindex org-log-done
9059 @vindex org-agenda-log-mode-items
9060 Toggle Logbook mode.  In Logbook mode, entries that were marked DONE while
9061 logging was on (variable @code{org-log-done}) are shown in the agenda, as are
9062 entries that have been clocked on that day.  You can configure the entry
9063 types that should be included in log mode using the variable
9064 @code{org-agenda-log-mode-items}.  When called with a @kbd{C-u} prefix, show
9065 all possible logbook entries, including state changes.  When called with two
9066 prefix arguments @kbd{C-u C-u}, show only logging information, nothing else.
9067 @kbd{v L} is equivalent to @kbd{C-u v l}.
9069 @orgcmdkskc{v [,[,org-agenda-manipulate-query-add}
9070 Include inactive timestamps into the current view.  Only for weekly/daily
9071 agenda and timeline views.
9073 @orgcmd{v a,org-agenda-archives-mode}
9074 @xorgcmd{v A,org-agenda-archives-mode 'files}
9075 @cindex Archives mode
9076 Toggle Archives mode.  In Archives mode, trees that are marked
9077 @code{ARCHIVED} are also scanned when producing the agenda.  When you use the
9078 capital @kbd{A}, even all archive files are included.  To exit archives mode,
9079 press @kbd{v a} again.
9081 @orgcmdkskc{v R,R,org-agenda-clockreport-mode}
9082 @vindex org-agenda-start-with-clockreport-mode
9083 @vindex org-clock-report-include-clocking-task
9084 Toggle Clockreport mode.  In Clockreport mode, the daily/weekly agenda will
9085 always show a table with the clocked times for the time span and file scope
9086 covered by the current agenda view.  The initial setting for this mode in new
9087 agenda buffers can be set with the variable
9088 @code{org-agenda-start-with-clockreport-mode}.  By using a prefix argument
9089 when toggling this mode (i.e., @kbd{C-u R}), the clock table will not show
9090 contributions from entries that are hidden by agenda filtering@footnote{Only
9091 tags filtering will be respected here, effort filtering is ignored.}.  See
9092 also the variable @code{org-clock-report-include-clocking-task}.
9094 @orgkey{v c}
9095 @vindex org-agenda-clock-consistency-checks
9096 Show overlapping clock entries, clocking gaps, and other clocking problems in
9097 the current agenda range.  You can then visit clocking lines and fix them
9098 manually.  See the variable @code{org-agenda-clock-consistency-checks} for
9099 information on how to customize the definition of what constituted a clocking
9100 problem.  To return to normal agenda display, press @kbd{l} to exit Logbook
9101 mode.
9103 @orgcmdkskc{v E,E,org-agenda-entry-text-mode}
9104 @vindex org-agenda-start-with-entry-text-mode
9105 @vindex org-agenda-entry-text-maxlines
9106 Toggle entry text mode.  In entry text mode, a number of lines from the Org
9107 outline node referenced by an agenda line will be displayed below the line.
9108 The maximum number of lines is given by the variable
9109 @code{org-agenda-entry-text-maxlines}.  Calling this command with a numeric
9110 prefix argument will temporarily modify that number to the prefix value.
9112 @orgcmd{G,org-agenda-toggle-time-grid}
9113 @vindex org-agenda-use-time-grid
9114 @vindex org-agenda-time-grid
9115 Toggle the time grid on and off.  See also the variables
9116 @code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
9118 @orgcmd{r,org-agenda-redo}
9119 Recreate the agenda buffer, for example to reflect the changes after
9120 modification of the timestamps of items with @kbd{S-@key{left}} and
9121 @kbd{S-@key{right}}.  When the buffer is the global TODO list, a prefix
9122 argument is interpreted to create a selective list for a specific TODO
9123 keyword.
9124 @orgcmd{g,org-agenda-redo}
9125 Same as @kbd{r}.
9127 @orgcmdkskc{C-x C-s,s,org-save-all-org-buffers}
9128 Save all Org buffers in the current Emacs session, and also the locations of
9129 IDs.
9131 @orgcmd{C-c C-x C-c,org-agenda-columns}
9132 @vindex org-columns-default-format
9133 Invoke column view (@pxref{Column view}) in the agenda buffer.  The column
9134 view format is taken from the entry at point, or (if there is no entry at
9135 point), from the first entry in the agenda view.  So whatever the format for
9136 that entry would be in the original buffer (taken from a property, from a
9137 @code{#+COLUMNS} line, or from the default variable
9138 @code{org-columns-default-format}), will be used in the agenda.
9140 @orgcmd{C-c C-x >,org-agenda-remove-restriction-lock}
9141 Remove the restriction lock on the agenda, if it is currently restricted to a
9142 file or subtree (@pxref{Agenda files}).
9144 @tsubheading{Secondary filtering and query editing}
9146 For a detailed description of these commands, @pxref{Filtering/limiting
9147 agenda items}.
9149 @orgcmd{/,org-agenda-filter-by-tag}
9150 Filter the agenda view with respect to a tag and/or effort estimates.
9152 @orgcmd{<,org-agenda-filter-by-category}
9153 Filter the current agenda view with respect to the category of the item at
9154 point.
9156 @orgcmd{^,org-agenda-filter-by-top-headline}
9157 Filter the current agenda view and only display the siblings and the parent
9158 headline of the one at point.
9160 @orgcmd{=,org-agenda-filter-by-regexp}
9161 Filter the agenda view by a regular expression.
9163 @orgcmd{_,org-agenda-filter-by-effort}
9164 Filter the agenda view with respect to effort estimates.
9166 @orgcmd{|,org-agenda-filter-remove-all}
9167 Remove all filters in the current agenda view.
9169 @tsubheading{Remote editing}
9170 @cindex remote editing, from agenda
9172 @item 0--9
9173 Digit argument.
9175 @cindex undoing remote-editing events
9176 @cindex remote editing, undo
9177 @orgcmd{C-_,org-agenda-undo}
9178 Undo a change due to a remote editing command.  The change is undone
9179 both in the agenda buffer and in the remote buffer.
9181 @orgcmd{t,org-agenda-todo}
9182 Change the TODO state of the item, both in the agenda and in the
9183 original org file.
9185 @orgcmd{C-S-@key{right},org-agenda-todo-nextset}
9186 @orgcmd{C-S-@key{left},org-agenda-todo-previousset}
9187 Switch to the next/previous set of TODO keywords.
9189 @orgcmd{C-k,org-agenda-kill}
9190 @vindex org-agenda-confirm-kill
9191 Delete the current agenda item along with the entire subtree belonging
9192 to it in the original Org file.  If the text to be deleted remotely
9193 is longer than one line, the kill needs to be confirmed by the user.  See
9194 variable @code{org-agenda-confirm-kill}.
9196 @orgcmd{C-c C-w,org-agenda-refile}
9197 Refile the entry at point.
9199 @orgcmdkskc{C-c C-x C-a,a,org-agenda-archive-default-with-confirmation}
9200 @vindex org-archive-default-command
9201 Archive the subtree corresponding to the entry at point using the default
9202 archiving command set in @code{org-archive-default-command}.  When using the
9203 @code{a} key, confirmation will be required.
9205 @orgcmd{C-c C-x a,org-agenda-toggle-archive-tag}
9206 Toggle the ARCHIVE tag for the current headline.
9208 @orgcmd{C-c C-x A,org-agenda-archive-to-archive-sibling}
9209 Move the subtree corresponding to the current entry to its @emph{archive
9210 sibling}.
9212 @orgcmdkskc{C-c C-x C-s,$,org-agenda-archive}
9213 Archive the subtree corresponding to the current headline.  This means the
9214 entry will be moved to the configured archive location, most likely a
9215 different file.
9217 @orgcmd{T,org-agenda-show-tags}
9218 @vindex org-agenda-show-inherited-tags
9219 Show all tags associated with the current item.  This is useful if you have
9220 turned off @code{org-agenda-show-inherited-tags}, but still want to see all
9221 tags of a headline occasionally.
9223 @orgcmd{:,org-agenda-set-tags}
9224 Set tags for the current headline.  If there is an active region in the
9225 agenda, change a tag for all headings in the region.
9227 @kindex ,
9228 @item ,
9229 Set the priority for the current item (@command{org-agenda-priority}).
9230 Org mode prompts for the priority character.  If you reply with @key{SPC},
9231 the priority cookie is removed from the entry.
9233 @orgcmd{P,org-agenda-show-priority}
9234 Display weighted priority of current item.
9236 @orgcmdkkc{+,S-@key{up},org-agenda-priority-up}
9237 Increase the priority of the current item.  The priority is changed in
9238 the original buffer, but the agenda is not resorted.  Use the @kbd{r}
9239 key for this.
9241 @orgcmdkkc{-,S-@key{down},org-agenda-priority-down}
9242 Decrease the priority of the current item.
9244 @orgcmdkkc{z,C-c C-z,org-agenda-add-note}
9245 @vindex org-log-into-drawer
9246 Add a note to the entry.  This note will be recorded, and then filed to the
9247 same location where state change notes are put.  Depending on
9248 @code{org-log-into-drawer}, this may be inside a drawer.
9250 @orgcmd{C-c C-a,org-attach}
9251 Dispatcher for all command related to attachments.
9253 @orgcmd{C-c C-s,org-agenda-schedule}
9254 Schedule this item.  With prefix arg remove the scheduling timestamp
9256 @orgcmd{C-c C-d,org-agenda-deadline}
9257 Set a deadline for this item.  With prefix arg remove the deadline.
9259 @orgcmd{S-@key{right},org-agenda-do-date-later}
9260 Change the timestamp associated with the current line by one day into the
9261 future.  If the date is in the past, the first call to this command will move
9262 it to today.@*
9263 With a numeric prefix argument, change it by that many days.  For example,
9264 @kbd{3 6 5 S-@key{right}} will change it by a year.  With a @kbd{C-u} prefix,
9265 change the time by one hour.  If you immediately repeat the command, it will
9266 continue to change hours even without the prefix arg.  With a double @kbd{C-u
9267 C-u} prefix, do the same for changing minutes.@*
9268 The stamp is changed in the original Org file, but the change is not directly
9269 reflected in the agenda buffer.  Use @kbd{r} or @kbd{g} to update the buffer.
9271 @orgcmd{S-@key{left},org-agenda-do-date-earlier}
9272 Change the timestamp associated with the current line by one day
9273 into the past.
9275 @orgcmd{>,org-agenda-date-prompt}
9276 Change the timestamp associated with the current line.  The key @kbd{>} has
9277 been chosen, because it is the same as @kbd{S-.}  on my keyboard.
9279 @orgcmd{I,org-agenda-clock-in}
9280 Start the clock on the current item.  If a clock is running already, it
9281 is stopped first.
9283 @orgcmd{O,org-agenda-clock-out}
9284 Stop the previously started clock.
9286 @orgcmd{X,org-agenda-clock-cancel}
9287 Cancel the currently running clock.
9289 @orgcmd{J,org-agenda-clock-goto}
9290 Jump to the running clock in another window.
9292 @orgcmd{k,org-agenda-capture}
9293 Like @code{org-capture}, but use the date at point as the default date for
9294 the capture template.  See @code{org-capture-use-agenda-date} to make this
9295 the default behavior of @code{org-capture}.
9296 @cindex capturing, from agenda
9297 @vindex org-capture-use-agenda-date
9299 @tsubheading{Dragging agenda lines forward/backward}
9300 @cindex dragging, agenda lines
9302 @orgcmd{M-<up>,org-agenda-drag-line-backward}
9303 Drag the line at point backward one line@footnote{Moving agenda lines does
9304 not persist after an agenda refresh and does not modify the contributing
9305 @file{.org} files}.  With a numeric prefix argument, drag backward by that
9306 many lines.
9308 @orgcmd{M-<down>,org-agenda-drag-line-forward}
9309 Drag the line at point forward one line.  With a numeric prefix argument,
9310 drag forward by that many lines.
9312 @tsubheading{Bulk remote editing selected entries}
9313 @cindex remote editing, bulk, from agenda
9314 @vindex org-agenda-bulk-custom-functions
9316 @orgcmd{m,org-agenda-bulk-mark}
9317 Mark the entry at point for bulk action.  With numeric prefix argument, mark
9318 that many successive entries.
9320 @orgcmd{*,org-agenda-bulk-mark-all}
9321 Mark all visible agenda entries for bulk action.
9323 @orgcmd{u,org-agenda-bulk-unmark}
9324 Unmark entry at point for bulk action.
9326 @orgcmd{U,org-agenda-bulk-remove-all-marks}
9327 Unmark all marked entries for bulk action.
9329 @orgcmd{M-m,org-agenda-bulk-toggle}
9330 Toggle mark of the entry at point for bulk action.
9332 @orgcmd{M-*,org-agenda-bulk-toggle-all}
9333 Toggle marks of all visible entries for bulk action.
9335 @orgcmd{%,org-agenda-bulk-mark-regexp}
9336 Mark entries matching a regular expression for bulk action.
9338 @orgcmd{B,org-agenda-bulk-action}
9339 Bulk action: act on all marked entries in the agenda.  This will prompt for
9340 another key to select the action to be applied.  The prefix arg to @kbd{B}
9341 will be passed through to the @kbd{s} and @kbd{d} commands, to bulk-remove
9342 these special timestamps.  By default, marks are removed after the bulk.  If
9343 you want them to persist, set @code{org-agenda-persistent-marks} to @code{t}
9344 or hit @kbd{p} at the prompt.
9346 @table @kbd
9347 @item *
9348 Toggle persistent marks.
9349 @item $
9350 Archive all selected entries.
9351 @item A
9352 Archive entries by moving them to their respective archive siblings.
9353 @item t
9354 Change TODO state.  This prompts for a single TODO keyword and changes the
9355 state of all selected entries, bypassing blocking and suppressing logging
9356 notes (but not timestamps).
9357 @item +
9358 Add a tag to all selected entries.
9359 @item -
9360 Remove a tag from all selected entries.
9361 @item s
9362 Schedule all items to a new date.  To shift existing schedule dates by a
9363 fixed number of days, use something starting with double plus at the prompt,
9364 for example @samp{++8d} or @samp{++2w}.
9365 @item d
9366 Set deadline to a specific date.
9367 @item r
9368 Prompt for a single refile target and move all entries.  The entries will no
9369 longer be in the agenda; refresh (@kbd{g}) to bring them back.
9370 @item S
9371 Reschedule randomly into the coming N days.  N will be prompted for.  With
9372 prefix arg (@kbd{C-u B S}), scatter only across weekdays.
9373 @item f
9374 Apply a function@footnote{You can also create persistent custom functions
9375 through @code{org-agenda-bulk-custom-functions}.} to marked entries.  For
9376 example, the function below sets the CATEGORY property of the entries to web.
9378 @lisp
9379 @group
9380 (defun set-category ()
9381   (interactive "P")
9382   (let* ((marker (or (org-get-at-bol 'org-hd-marker)
9383                      (org-agenda-error)))
9384          (buffer (marker-buffer marker)))
9385     (with-current-buffer buffer
9386       (save-excursion
9387         (save-restriction
9388           (widen)
9389           (goto-char marker)
9390           (org-back-to-heading t)
9391           (org-set-property "CATEGORY" "web"))))))
9392 @end group
9393 @end lisp
9394 @end table
9396 @tsubheading{Calendar commands}
9397 @cindex calendar commands, from agenda
9399 @orgcmd{c,org-agenda-goto-calendar}
9400 Open the Emacs calendar and move to the date at the agenda cursor.
9402 @orgcmd{c,org-calendar-goto-agenda}
9403 When in the calendar, compute and show the Org mode agenda for the
9404 date at the cursor.
9406 @cindex diary entries, creating from agenda
9407 @orgcmd{i,org-agenda-diary-entry}
9408 @vindex org-agenda-diary-file
9409 Insert a new entry into the diary, using the date at the cursor and (for
9410 block entries) the date at the mark.  This will add to the Emacs diary
9411 file@footnote{This file is parsed for the agenda when
9412 @code{org-agenda-include-diary} is set.}, in a way similar to the @kbd{i}
9413 command in the calendar.  The diary file will pop up in another window, where
9414 you can add the entry.
9416 If you configure @code{org-agenda-diary-file} to point to an Org mode file,
9417 Org will create entries (in Org mode syntax) in that file instead.  Most
9418 entries will be stored in a date-based outline tree that will later make it
9419 easy to archive appointments from previous months/years.  The tree will be
9420 built under an entry with a @code{DATE_TREE} property, or else with years as
9421 top-level entries.  Emacs will prompt you for the entry text---if you specify
9422 it, the entry will be created in @code{org-agenda-diary-file} without further
9423 interaction.  If you directly press @key{RET} at the prompt without typing
9424 text, the target file will be shown in another window for you to finish the
9425 entry there.  See also the @kbd{k r} command.
9427 @orgcmd{M,org-agenda-phases-of-moon}
9428 Show the phases of the moon for the three months around current date.
9430 @orgcmd{S,org-agenda-sunrise-sunset}
9431 Show sunrise and sunset times.  The geographical location must be set
9432 with calendar variables, see the documentation for the Emacs calendar.
9434 @orgcmd{C,org-agenda-convert-date}
9435 Convert the date at cursor into many other cultural and historic
9436 calendars.
9438 @orgcmd{H,org-agenda-holidays}
9439 Show holidays for three months around the cursor date.
9441 @item M-x org-icalendar-combine-agenda-files RET
9442 Export a single iCalendar file containing entries from all agenda files.
9443 This is a globally available command, and also available in the agenda menu.
9445 @tsubheading{Exporting to a file}
9446 @orgcmd{C-x C-w,org-agenda-write}
9447 @cindex exporting agenda views
9448 @cindex agenda views, exporting
9449 @vindex org-agenda-exporter-settings
9450 Write the agenda view to a file.  Depending on the extension of the selected
9451 file name, the view will be exported as HTML (@file{.html} or @file{.htm}),
9452 Postscript (@file{.ps}), PDF (@file{.pdf}), Org (@file{.org}) and plain text
9453 (any other extension).  When exporting to Org, only the body of original
9454 headlines are exported, not subtrees or inherited tags.  When called with a
9455 @kbd{C-u} prefix argument, immediately open the newly created file.  Use the
9456 variable @code{org-agenda-exporter-settings} to set options for
9457 @file{ps-print} and for @file{htmlize} to be used during export.
9459 @tsubheading{Quit and Exit}
9460 @orgcmd{q,org-agenda-quit}
9461 Quit agenda, remove the agenda buffer.
9463 @cindex agenda files, removing buffers
9464 @orgcmd{x,org-agenda-exit}
9465 Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
9466 for the compilation of the agenda.  Buffers created by the user to
9467 visit Org files will not be removed.
9468 @end table
9471 @node Custom agenda views
9472 @section Custom agenda views
9473 @cindex custom agenda views
9474 @cindex agenda views, custom
9476 Custom agenda commands serve two purposes: to store and quickly access
9477 frequently used TODO and tags searches, and to create special composite
9478 agenda buffers.  Custom agenda commands will be accessible through the
9479 dispatcher (@pxref{Agenda dispatcher}), just like the default commands.
9481 @menu
9482 * Storing searches::            Type once, use often
9483 * Block agenda::                All the stuff you need in a single buffer
9484 * Setting options::             Changing the rules
9485 @end menu
9487 @node Storing searches
9488 @subsection Storing searches
9490 The first application of custom searches is the definition of keyboard
9491 shortcuts for frequently used searches, either creating an agenda
9492 buffer, or a sparse tree (the latter covering of course only the current
9493 buffer).
9494 @kindex C-c a C
9495 @vindex org-agenda-custom-commands
9496 @cindex agenda views, main example
9497 @cindex agenda, as an agenda views
9498 @cindex agenda*, as an agenda views
9499 @cindex tags, as an agenda view
9500 @cindex todo, as an agenda view
9501 @cindex tags-todo
9502 @cindex todo-tree
9503 @cindex occur-tree
9504 @cindex tags-tree
9506 Custom commands are configured in the variable
9507 @code{org-agenda-custom-commands}.  You can customize this variable, for
9508 example by pressing @kbd{C-c a C}.  You can also directly set it with Emacs
9509 Lisp in the Emacs init file.  The following example contains all valid agenda
9510 views:
9512 @lisp
9513 @group
9514 (setq org-agenda-custom-commands
9515       '(("x" agenda)
9516         ("y" agenda*)
9517         ("w" todo "WAITING")
9518         ("W" todo-tree "WAITING")
9519         ("u" tags "+boss-urgent")
9520         ("v" tags-todo "+boss-urgent")
9521         ("U" tags-tree "+boss-urgent")
9522         ("f" occur-tree "\\<FIXME\\>")
9523         ("h" . "HOME+Name tags searches") ; description for "h" prefix
9524         ("hl" tags "+home+Lisa")
9525         ("hp" tags "+home+Peter")
9526         ("hk" tags "+home+Kim")))
9527 @end group
9528 @end lisp
9530 @noindent
9531 The initial string in each entry defines the keys you have to press
9532 after the dispatcher command @kbd{C-c a} in order to access the command.
9533 Usually this will be just a single character, but if you have many
9534 similar commands, you can also define two-letter combinations where the
9535 first character is the same in several combinations and serves as a
9536 prefix key@footnote{You can provide a description for a prefix key by
9537 inserting a cons cell with the prefix and the description.}.  The second
9538 parameter is the search type, followed by the string or regular
9539 expression to be used for the matching.  The example above will
9540 therefore define:
9542 @table @kbd
9543 @item C-c a x
9544 as a global search for agenda entries planned@footnote{@emph{Planned} means
9545 here that these entries have some planning information attached to them, like
9546 a time-stamp, a scheduled or a deadline string.  See
9547 @code{org-agenda-entry-types} on how to set what planning information will be
9548 taken into account.} this week/day.
9549 @item C-c a y
9550 as a global search for agenda entries planned this week/day, but only those
9551 with an hour specification like @code{[h]h:mm}---think of them as appointments.
9552 @item C-c a w
9553 as a global search for TODO entries with @samp{WAITING} as the TODO
9554 keyword
9555 @item C-c a W
9556 as the same search, but only in the current buffer and displaying the
9557 results as a sparse tree
9558 @item C-c a u
9559 as a global tags search for headlines marked @samp{:boss:} but not
9560 @samp{:urgent:}
9561 @item C-c a v
9562 as the same search as @kbd{C-c a u}, but limiting the search to
9563 headlines that are also TODO items
9564 @item C-c a U
9565 as the same search as @kbd{C-c a u}, but only in the current buffer and
9566 displaying the result as a sparse tree
9567 @item C-c a f
9568 to create a sparse tree (again: current buffer only) with all entries
9569 containing the word @samp{FIXME}
9570 @item C-c a h
9571 as a prefix command for a HOME tags search where you have to press an
9572 additional key (@kbd{l}, @kbd{p} or @kbd{k}) to select a name (Lisa,
9573 Peter, or Kim) as additional tag to match.
9574 @end table
9576 Note that the @code{*-tree} agenda views need to be called from an
9577 Org buffer as they operate on the current buffer only.
9579 @node Block agenda
9580 @subsection Block agenda
9581 @cindex block agenda
9582 @cindex agenda, with block views
9584 Another possibility is the construction of agenda views that comprise
9585 the results of @emph{several} commands, each of which creates a block in
9586 the agenda buffer.  The available commands include @code{agenda} for the
9587 daily or weekly agenda (as created with @kbd{C-c a a}), @code{alltodo}
9588 for the global TODO list (as constructed with @kbd{C-c a t}), and the
9589 matching commands discussed above: @code{todo}, @code{tags}, and
9590 @code{tags-todo}.  Here are two examples:
9592 @lisp
9593 @group
9594 (setq org-agenda-custom-commands
9595       '(("h" "Agenda and Home-related tasks"
9596          ((agenda "")
9597           (tags-todo "home")
9598           (tags "garden")))
9599         ("o" "Agenda and Office-related tasks"
9600          ((agenda "")
9601           (tags-todo "work")
9602           (tags "office")))))
9603 @end group
9604 @end lisp
9606 @noindent
9607 This will define @kbd{C-c a h} to create a multi-block view for stuff
9608 you need to attend to at home.  The resulting agenda buffer will contain
9609 your agenda for the current week, all TODO items that carry the tag
9610 @samp{home}, and also all lines tagged with @samp{garden}.  Finally the
9611 command @kbd{C-c a o} provides a similar view for office tasks.
9613 @node Setting options
9614 @subsection Setting options for custom commands
9615 @cindex options, for custom agenda views
9617 @vindex org-agenda-custom-commands
9618 Org mode contains a number of variables regulating agenda construction
9619 and display.  The global variables define the behavior for all agenda
9620 commands, including the custom commands.  However, if you want to change
9621 some settings just for a single custom view, you can do so.  Setting
9622 options requires inserting a list of variable names and values at the
9623 right spot in @code{org-agenda-custom-commands}.  For example:
9625 @lisp
9626 @group
9627 (setq org-agenda-custom-commands
9628       '(("w" todo "WAITING"
9629          ((org-agenda-sorting-strategy '(priority-down))
9630           (org-agenda-prefix-format "  Mixed: ")))
9631         ("U" tags-tree "+boss-urgent"
9632          ((org-show-context-detail 'minimal)))
9633         ("N" search ""
9634          ((org-agenda-files '("~org/notes.org"))
9635           (org-agenda-text-search-extra-files nil)))))
9636 @end group
9637 @end lisp
9639 @noindent
9640 Now the @kbd{C-c a w} command will sort the collected entries only by
9641 priority, and the prefix format is modified to just say @samp{  Mixed: }
9642 instead of giving the category of the entry.  The sparse tags tree of
9643 @kbd{C-c a U} will now turn out ultra-compact, because neither the
9644 headline hierarchy above the match, nor the headline following the match
9645 will be shown.  The command @kbd{C-c a N} will do a text search limited
9646 to only a single file.
9648 @vindex org-agenda-custom-commands
9649 For command sets creating a block agenda,
9650 @code{org-agenda-custom-commands} has two separate spots for setting
9651 options.  You can add options that should be valid for just a single
9652 command in the set, and options that should be valid for all commands in
9653 the set.  The former are just added to the command entry; the latter
9654 must come after the list of command entries.  Going back to the block
9655 agenda example (@pxref{Block agenda}), let's change the sorting strategy
9656 for the @kbd{C-c a h} commands to @code{priority-down}, but let's sort
9657 the results for GARDEN tags query in the opposite order,
9658 @code{priority-up}.  This would look like this:
9660 @lisp
9661 @group
9662 (setq org-agenda-custom-commands
9663       '(("h" "Agenda and Home-related tasks"
9664          ((agenda)
9665           (tags-todo "home")
9666           (tags "garden"
9667                 ((org-agenda-sorting-strategy '(priority-up)))))
9668          ((org-agenda-sorting-strategy '(priority-down))))
9669         ("o" "Agenda and Office-related tasks"
9670          ((agenda)
9671           (tags-todo "work")
9672           (tags "office")))))
9673 @end group
9674 @end lisp
9676 As you see, the values and parentheses setting is a little complex.
9677 When in doubt, use the customize interface to set this variable---it
9678 fully supports its structure.  Just one caveat: when setting options in
9679 this interface, the @emph{values} are just Lisp expressions.  So if the
9680 value is a string, you need to add the double-quotes around the value
9681 yourself.
9683 @vindex org-agenda-custom-commands-contexts
9684 To control whether an agenda command should be accessible from a specific
9685 context, you can customize @code{org-agenda-custom-commands-contexts}.  Let's
9686 say for example that you have an agenda command @code{"o"} displaying a view
9687 that you only need when reading emails.  Then you would configure this option
9688 like this:
9690 @lisp
9691 (setq org-agenda-custom-commands-contexts
9692       '(("o" (in-mode . "message-mode"))))
9693 @end lisp
9695 You can also tell that the command key @code{"o"} should refer to another
9696 command key @code{"r"}.  In that case, add this command key like this:
9698 @lisp
9699 (setq org-agenda-custom-commands-contexts
9700       '(("o" "r" (in-mode . "message-mode"))))
9701 @end lisp
9703 See the docstring of the variable for more information.
9705 @node Exporting agenda views
9706 @section Exporting agenda views
9707 @cindex agenda views, exporting
9709 If you are away from your computer, it can be very useful to have a printed
9710 version of some agenda views to carry around.  Org mode can export custom
9711 agenda views as plain text, HTML@footnote{You need to install Hrvoje Niksic's
9712 @file{htmlize.el}.}, Postscript, PDF@footnote{To create PDF output, the
9713 ghostscript @file{ps2pdf} utility must be installed on the system.  Selecting
9714 a PDF file will also create the postscript file.}, and iCalendar files.  If
9715 you want to do this only occasionally, use the command
9717 @table @kbd
9718 @orgcmd{C-x C-w,org-agenda-write}
9719 @cindex exporting agenda views
9720 @cindex agenda views, exporting
9721 @vindex org-agenda-exporter-settings
9722 Write the agenda view to a file.  Depending on the extension of the selected
9723 file name, the view will be exported as HTML (extension @file{.html} or
9724 @file{.htm}), Postscript (extension @file{.ps}), iCalendar (extension
9725 @file{.ics}), or plain text (any other extension).  Use the variable
9726 @code{org-agenda-exporter-settings} to set options for @file{ps-print} and
9727 for @file{htmlize} to be used during export, for example
9729 @vindex org-agenda-add-entry-text-maxlines
9730 @vindex htmlize-output-type
9731 @vindex ps-number-of-columns
9732 @vindex ps-landscape-mode
9733 @lisp
9734 (setq org-agenda-exporter-settings
9735       '((ps-number-of-columns 2)
9736         (ps-landscape-mode t)
9737         (org-agenda-add-entry-text-maxlines 5)
9738         (htmlize-output-type 'css)))
9739 @end lisp
9740 @end table
9742 If you need to export certain agenda views frequently, you can associate
9743 any custom agenda command with a list of output file names
9744 @footnote{If you want to store standard views like the weekly agenda
9745 or the global TODO list as well, you need to define custom commands for
9746 them in order to be able to specify file names.}.  Here is an example
9747 that first defines custom commands for the agenda and the global
9748 TODO list, together with a number of files to which to export them.
9749 Then we define two block agenda commands and specify file names for them
9750 as well.  File names can be relative to the current working directory,
9751 or absolute.
9753 @lisp
9754 @group
9755 (setq org-agenda-custom-commands
9756       '(("X" agenda "" nil ("agenda.html" "agenda.ps"))
9757         ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
9758         ("h" "Agenda and Home-related tasks"
9759          ((agenda "")
9760           (tags-todo "home")
9761           (tags "garden"))
9762          nil
9763          ("~/views/home.html"))
9764         ("o" "Agenda and Office-related tasks"
9765          ((agenda)
9766           (tags-todo "work")
9767           (tags "office"))
9768          nil
9769          ("~/views/office.ps" "~/calendars/office.ics"))))
9770 @end group
9771 @end lisp
9773 The extension of the file name determines the type of export.  If it is
9774 @file{.html}, Org mode will use the @file{htmlize.el} package to convert
9775 the buffer to HTML and save it to this file name.  If the extension is
9776 @file{.ps}, @code{ps-print-buffer-with-faces} is used to produce
9777 Postscript output.  If the extension is @file{.ics}, iCalendar export is
9778 run export over all files that were used to construct the agenda, and
9779 limit the export to entries listed in the agenda.  Any other
9780 extension produces a plain ASCII file.
9782 The export files are @emph{not} created when you use one of those
9783 commands interactively because this might use too much overhead.
9784 Instead, there is a special command to produce @emph{all} specified
9785 files in one step:
9787 @table @kbd
9788 @orgcmd{C-c a e,org-store-agenda-views}
9789 Export all agenda views that have export file names associated with
9790 them.
9791 @end table
9793 You can use the options section of the custom agenda commands to also
9794 set options for the export commands.  For example:
9796 @lisp
9797 (setq org-agenda-custom-commands
9798       '(("X" agenda ""
9799          ((ps-number-of-columns 2)
9800           (ps-landscape-mode t)
9801           (org-agenda-prefix-format " [ ] ")
9802           (org-agenda-with-colors nil)
9803           (org-agenda-remove-tags t))
9804          ("theagenda.ps"))))
9805 @end lisp
9807 @noindent
9808 This command sets two options for the Postscript exporter, to make it
9809 print in two columns in landscape format---the resulting page can be cut
9810 in two and then used in a paper agenda.  The remaining settings modify
9811 the agenda prefix to omit category and scheduling information, and
9812 instead include a checkbox to check off items.  We also remove the tags
9813 to make the lines compact, and we don't want to use colors for the
9814 black-and-white printer.  Settings specified in
9815 @code{org-agenda-exporter-settings} will also apply, but the settings
9816 in @code{org-agenda-custom-commands} take precedence.
9818 @noindent
9819 From the command line you may also use
9820 @example
9821 emacs -eval (org-batch-store-agenda-views) -kill
9822 @end example
9823 @noindent
9824 or, if you need to modify some parameters@footnote{Quoting depends on the
9825 system you use, please check the FAQ for examples.}
9826 @example
9827 emacs -eval '(org-batch-store-agenda-views                      \
9828               org-agenda-span (quote month)                     \
9829               org-agenda-start-day "2007-11-01"                 \
9830               org-agenda-include-diary nil                      \
9831               org-agenda-files (quote ("~/org/project.org")))'  \
9832       -kill
9833 @end example
9834 @noindent
9835 which will create the agenda views restricted to the file
9836 @file{~/org/project.org}, without diary entries and with a 30-day
9837 extent.
9839 You can also extract agenda information in a way that allows further
9840 processing by other programs.  See @ref{Extracting agenda information}, for
9841 more information.
9844 @node Agenda column view
9845 @section Using column view in the agenda
9846 @cindex column view, in agenda
9847 @cindex agenda, column view
9849 Column view (@pxref{Column view}) is normally used to view and edit
9850 properties embedded in the hierarchical structure of an Org file.  It can be
9851 quite useful to use column view also from the agenda, where entries are
9852 collected by certain criteria.
9854 @table @kbd
9855 @orgcmd{C-c C-x C-c,org-agenda-columns}
9856 Turn on column view in the agenda.
9857 @end table
9859 To understand how to use this properly, it is important to realize that the
9860 entries in the agenda are no longer in their proper outline environment.
9861 This causes the following issues:
9863 @enumerate
9864 @item
9865 @vindex org-columns-default-format
9866 @vindex org-overriding-columns-format
9867 Org needs to make a decision which @code{COLUMNS} format to use.  Since the
9868 entries in the agenda are collected from different files, and different files
9869 may have different @code{COLUMNS} formats, this is a non-trivial problem.
9870 Org first checks if the variable @code{org-agenda-overriding-columns-format}
9871 is currently set, and if so, takes the format from there.  Otherwise it takes
9872 the format associated with the first item in the agenda, or, if that item
9873 does not have a specific format---defined in a property, or in its file---it
9874 uses @code{org-columns-default-format}.
9876 @item
9877 @cindex property, special, CLOCKSUM
9878 If any of the columns has a summary type defined (@pxref{Column attributes}),
9879 turning on column view in the agenda will visit all relevant agenda files and
9880 make sure that the computations of this property are up to date.  This is
9881 also true for the special @code{CLOCKSUM} property.  Org will then sum the
9882 values displayed in the agenda.  In the daily/weekly agenda, the sums will
9883 cover a single day; in all other views they cover the entire block.  It is
9884 vital to realize that the agenda may show the same entry @emph{twice}---for
9885 example as scheduled and as a deadline---and it may show two entries from the
9886 same hierarchy---for example a @emph{parent} and its @emph{child}.  In these
9887 cases, the summation in the agenda will lead to incorrect results because
9888 some values will count double.
9890 @item
9891 When the column view in the agenda shows the @code{CLOCKSUM}, that is always
9892 the entire clocked time for this item.  So even in the daily/weekly agenda,
9893 the clocksum listed in column view may originate from times outside the
9894 current view.  This has the advantage that you can compare these values with
9895 a column listing the planned total effort for a task---one of the major
9896 applications for column view in the agenda.  If you want information about
9897 clocked time in the displayed period use clock table mode (press @kbd{R} in
9898 the agenda).
9900 @item
9901 @cindex property, special, CLOCKSUM_T
9902 When the column view in the agenda shows the @code{CLOCKSUM_T}, that is
9903 always today's clocked time for this item.  So even in the weekly agenda, the
9904 clocksum listed in column view only originates from today.  This lets you
9905 compare the time you spent on a task for today, with the time already
9906 spent ---via @code{CLOCKSUM}---and with the planned total effort for it.
9907 @end enumerate
9910 @node Markup
9911 @chapter Markup for rich export
9913 When exporting Org mode documents, the exporter tries to reflect the
9914 structure of the document as accurately as possible in the back-end.  Since
9915 export targets like HTML and @LaTeX{} allow much richer formatting, Org mode has
9916 rules on how to prepare text for rich export.  This section summarizes the
9917 markup rules used in an Org mode buffer.
9919 @menu
9920 * Paragraphs::                  The basic unit of text
9921 * Emphasis and monospace::      Bold, italic, etc.
9922 * Horizontal rules::            Make a line
9923 * Images and tables::           Images, tables and caption mechanism
9924 * Literal examples::            Source code examples with special formatting
9925 * Special symbols::             Greek letters and other symbols
9926 * Subscripts and superscripts::  Simple syntax for raising/lowering text
9927 * Embedded @LaTeX{}::           LaTeX can be freely used inside Org documents
9928 @end menu
9930 @node Paragraphs
9931 @section Paragraphs, line breaks, and quoting
9932 @cindex paragraphs, markup rules
9934 Paragraphs are separated by at least one empty line.  If you need to enforce
9935 a line break within a paragraph, use @samp{\\} at the end of a line.
9937 To preserve the line breaks, indentation and blank lines in a region, but
9938 otherwise use normal formatting, you can use this construct, which can also
9939 be used to format poetry.
9941 @cindex #+BEGIN_VERSE
9942 @cindex verse blocks
9943 @example
9944 #+BEGIN_VERSE
9945  Great clouds overhead
9946  Tiny black birds rise and fall
9947  Snow covers Emacs
9949      -- AlexSchroeder
9950 #+END_VERSE
9951 @end example
9953 When quoting a passage from another document, it is customary to format this
9954 as a paragraph that is indented on both the left and the right margin.  You
9955 can include quotations in Org mode documents like this:
9957 @cindex #+BEGIN_QUOTE
9958 @cindex quote blocks
9959 @example
9960 #+BEGIN_QUOTE
9961 Everything should be made as simple as possible,
9962 but not any simpler -- Albert Einstein
9963 #+END_QUOTE
9964 @end example
9966 If you would like to center some text, do it like this:
9967 @cindex #+BEGIN_CENTER
9968 @cindex center blocks
9969 @example
9970 #+BEGIN_CENTER
9971 Everything should be made as simple as possible, \\
9972 but not any simpler
9973 #+END_CENTER
9974 @end example
9976 @node Emphasis and monospace
9977 @section Emphasis and monospace
9979 @cindex underlined text, markup rules
9980 @cindex bold text, markup rules
9981 @cindex italic text, markup rules
9982 @cindex verbatim text, markup rules
9983 @cindex code text, markup rules
9984 @cindex strike-through text, markup rules
9985 @vindex org-fontify-emphasized-text
9986 @vindex org-emphasis-regexp-components
9987 @vindex org-emphasis-alist
9988 You can make words @b{*bold*}, @i{/italic/}, _underlined_, @code{=verbatim=}
9989 and @code{~code~}, and, if you must, @samp{+strike-through+}.  Text
9990 in the code and verbatim string is not processed for Org mode specific
9991 syntax, it is exported verbatim.
9993 To turn off fontification for marked up text, you can set
9994 @code{org-fontify-emphasized-text} to @code{nil}.  To narrow down the list of
9995 available markup syntax, you can customize @code{org-emphasis-alist}.  To fine
9996 tune what characters are allowed before and after the markup characters, you
9997 can tweak @code{org-emphasis-regexp-components}.  Beware that changing one of
9998 the above variables will no take effect until you reload Org, for which you
9999 may need to restart Emacs.
10001 @node Horizontal rules
10002 @section Horizontal rules
10003 @cindex horizontal rules, markup rules
10004 A line consisting of only dashes, and at least 5 of them, will be exported as
10005 a horizontal line.
10007 @node Images and tables
10008 @section Images and Tables
10010 @cindex tables, markup rules
10011 @cindex #+CAPTION
10012 @cindex #+NAME
10013 Both the native Org mode tables (@pxref{Tables}) and tables formatted with
10014 the @file{table.el} package will be exported properly.  For Org mode tables,
10015 the lines before the first horizontal separator line will become table header
10016 lines.  You can use the following lines somewhere before the table to assign
10017 a caption and a label for cross references, and in the text you can refer to
10018 the object with @code{[[tab:basic-data]]} (@pxref{Internal links}):
10020 @example
10021 #+CAPTION: This is the caption for the next table (or link)
10022 #+NAME:   tab:basic-data
10023    | ... | ...|
10024    |-----|----|
10025 @end example
10027 Optionally, the caption can take the form:
10028 @example
10029 #+CAPTION[Caption for list of tables]: Caption for table.
10030 @end example
10032 @cindex inlined images, markup rules
10033 Some back-ends allow you to directly include images into the exported
10034 document.  Org does this, if a link to an image files does not have
10035 a description part, for example @code{[[./img/a.jpg]]}.  If you wish to
10036 define a caption for the image and maybe a label for internal cross
10037 references, make sure that the link is on a line by itself and precede it
10038 with @code{#+CAPTION} and @code{#+NAME} as follows:
10040 @example
10041 #+CAPTION: This is the caption for the next figure link (or table)
10042 #+NAME:   fig:SED-HR4049
10043 [[./img/a.jpg]]
10044 @end example
10046 @noindent
10047 Such images can be displayed within the buffer.  @xref{Handling links,the
10048 discussion of image links}.
10050 Even though images and tables are prominent examples of captioned structures,
10051 the same caption mechanism can apply to many others (e.g., @LaTeX{}
10052 equations, source code blocks).  Depending on the export back-end, those may
10053 or may not be handled.
10055 @node Literal examples
10056 @section Literal examples
10057 @cindex literal examples, markup rules
10058 @cindex code line references, markup rules
10060 You can include literal examples that should not be subjected to
10061 markup.  Such examples will be typeset in monospace, so this is well suited
10062 for source code and similar examples.
10063 @cindex #+BEGIN_EXAMPLE
10065 @example
10066 #+BEGIN_EXAMPLE
10067 Some example from a text file.
10068 #+END_EXAMPLE
10069 @end example
10071 Note that such blocks may be @i{indented} in order to align nicely with
10072 indented text and in particular with plain list structure (@pxref{Plain
10073 lists}).  For simplicity when using small examples, you can also start the
10074 example lines with a colon followed by a space.  There may also be additional
10075 whitespace before the colon:
10077 @example
10078 Here is an example
10079    : Some example from a text file.
10080 @end example
10082 @cindex formatting source code, markup rules
10083 @vindex org-latex-listings
10084 If the example is source code from a programming language, or any other text
10085 that can be marked up by font-lock in Emacs, you can ask for the example to
10086 look like the fontified Emacs buffer@footnote{This works automatically for
10087 the HTML back-end (it requires version 1.34 of the @file{htmlize.el} package,
10088 which is distributed with Org).  Fontified code chunks in @LaTeX{} can be
10089 achieved using either the
10090 @url{https://www.ctan.org/tex-archive/macros/latex/contrib/listings/?lang=en, listings,}
10091 or the
10092 @url{https://github.com/gpoore/minted, minted,} package.
10093 If you use minted or listing, you must load the packages manually, for
10094 example by adding the desired package to
10095 @code{org-latex-packages-alist}.  Refer to @code{org-latex-listings}
10096 for details.}.  This is done with the @samp{src} block, where you also need
10097 to specify the name of the major mode that should be used to fontify the
10098 example@footnote{Code in @samp{src} blocks may also be evaluated either
10099 interactively or on export.  @xref{Working with source code}, for more
10100 information on evaluating code blocks.}, see @ref{Easy templates} for
10101 shortcuts to easily insert code blocks.
10102 @cindex #+BEGIN_SRC
10104 @example
10105 #+BEGIN_SRC emacs-lisp
10106   (defun org-xor (a b)
10107      "Exclusive or."
10108      (if a (not b) b))
10109 #+END_SRC
10110 @end example
10112 Both in @code{example} and in @code{src} snippets, you can add a @code{-n}
10113 switch to the end of the @code{BEGIN} line, to get the lines of the example
10114 numbered.  The @code{-n} takes an optional numeric argument specifying the
10115 starting line number of the block.  If you use a @code{+n} switch, the
10116 numbering from the previous numbered snippet will be continued in the current
10117 one.  The @code{+n} can also take a numeric argument.  The value of the
10118 argument will be added to the last line of the previous block to determine
10119 the starting line number.
10121 @example
10122 #+BEGIN_SRC emacs-lisp -n 20
10123  ;; this will export with line number 20
10124  (message "This is line 21")
10125 #+END_SRC
10126 #+BEGIN_SRC emacs-lisp +n 10
10127  ;; This will be listed as line 31
10128  (message "This is line 32")
10129 #+END_SRC
10130 @end example
10132 In literal examples, Org will interpret strings like @samp{(ref:name)} as
10133 labels, and use them as targets for special hyperlinks like @code{[[(name)]]}
10134 (i.e., the reference name enclosed in single parenthesis).  In HTML, hovering
10135 the mouse over such a link will remote-highlight the corresponding code line,
10136 which is kind of cool.
10138 You can also add a @code{-r} switch which @i{removes} the labels from the
10139 source code@footnote{Adding @code{-k} to @code{-n -r} will @i{keep} the
10140 labels in the source code while using line numbers for the links, which might
10141 be useful to explain those in an Org mode example code.}.  With the @code{-n}
10142 switch, links to these references will be labeled by the line numbers from
10143 the code listing, otherwise links will use the labels with no parentheses.
10144 Here is an example:
10146 @example
10147 #+BEGIN_SRC emacs-lisp -n -r
10148 (save-excursion                  (ref:sc)
10149    (goto-char (point-min)))      (ref:jump)
10150 #+END_SRC
10151 In line [[(sc)]] we remember the current position.  [[(jump)][Line (jump)]]
10152 jumps to point-min.
10153 @end example
10155 @cindex indentation, in source blocks
10156 Finally, you can use @code{-i} to preserve the indentation of a specific code
10157 block (@pxref{Editing source code}).
10159 @vindex org-coderef-label-format
10160 If the syntax for the label format conflicts with the language syntax, use a
10161 @code{-l} switch to change the format, for example @samp{#+BEGIN_SRC pascal
10162 -n -r -l "((%s))"}.  See also the variable @code{org-coderef-label-format}.
10164 HTML export also allows examples to be published as text areas (@pxref{Text
10165 areas in HTML export}).
10167 Because the @code{#+BEGIN_...} and @code{#+END_...} patterns need to be added
10168 so often, shortcuts are provided using the Easy templates facility
10169 (@pxref{Easy templates}).
10171 @table @kbd
10172 @kindex C-c '
10173 @item C-c '
10174 Edit the source code example at point in its native mode.  This works by
10175 switching to a temporary buffer with the source code.  You need to exit by
10176 pressing @kbd{C-c '} again@footnote{Upon exit, lines starting with @samp{*},
10177 @samp{,*}, @samp{#+} and @samp{,#+} will get a comma prepended, to keep them
10178 from being interpreted by Org as outline nodes or special syntax.  These
10179 commas will be stripped for editing with @kbd{C-c '}, and also for export.}.
10180 The edited version will then replace the old version in the Org buffer.
10181 Fixed-width regions (where each line starts with a colon followed by a space)
10182 will be edited using @code{artist-mode}@footnote{You may select
10183 a different-mode with the variable @code{org-edit-fixed-width-region-mode}.}
10184 to allow creating ASCII drawings easily.  Using this command in an empty line
10185 will create a new fixed-width region.
10186 @kindex C-c l
10187 @item C-c l
10188 Calling @code{org-store-link} while editing a source code example in a
10189 temporary buffer created with @kbd{C-c '} will prompt for a label.  Make sure
10190 that it is unique in the current buffer, and insert it with the proper
10191 formatting like @samp{(ref:label)} at the end of the current line.  Then the
10192 label is stored as a link @samp{(label)}, for retrieval with @kbd{C-c C-l}.
10193 @end table
10195 @node Special symbols
10196 @section Special symbols
10197 @cindex Org entities
10198 @cindex math symbols
10199 @cindex special symbols
10200 @cindex HTML entities
10201 @cindex @LaTeX{} entities
10203 You can use @LaTeX{}-like syntax to insert special symbols---named
10204 entities---like @samp{\alpha} to indicate the Greek letter, or @samp{\to} to
10205 indicate an arrow.  Completion for these symbols is available, just type
10206 @samp{\} and maybe a few letters, and press @kbd{M-@key{TAB}} to see possible
10207 completions.  If you need such a symbol inside a word, terminate it with
10208 a pair of curly brackets.  For example
10210 @example
10211 Pro tip: Given a circle \Gamma of diameter d, the length of its circumference
10212 is \pi@{@}d.
10213 @end example
10215 @findex org-entities-help
10216 @vindex org-entities-user
10217 A large number of entities is provided, with names taken from both HTML and
10218 @LaTeX{}; you can comfortably browse the complete list from a dedicated
10219 buffer using the command @code{org-entities-help}.  It is also possible to
10220 provide your own special symbols in the variable @code{org-entities-user}.
10222 During export, these symbols are transformed into the native format of the
10223 exporter back-end.  Strings like @code{\alpha} are exported as @code{&alpha;}
10224 in the HTML output, and as @code{\(\alpha\)} in the @LaTeX{} output.
10225 Similarly, @code{\nbsp} becomes @code{&nbsp;} in HTML and @code{~} in
10226 @LaTeX{}.
10228 @cindex escaping characters
10229 Entities may also be used as a may to escape markup in an Org document, e.g.,
10230 @samp{\under@{@}not underlined\under} exports as @samp{_not underlined_}.
10232 @cindex special symbols, in-buffer display
10233 If you would like to see entities displayed as UTF-8 characters, use the
10234 following command@footnote{You can turn this on by default by setting the
10235 variable @code{org-pretty-entities}, or on a per-file base with the
10236 @code{#+STARTUP} option @code{entitiespretty}.}:
10238 @table @kbd
10239 @cindex @code{entitiespretty}, STARTUP keyword
10240 @kindex C-c C-x \
10241 @item C-c C-x \
10242 Toggle display of entities as UTF-8 characters.  This does not change the
10243 buffer content which remains plain ASCII, but it overlays the UTF-8 character
10244 for display purposes only.
10245 @end table
10247 @cindex shy hyphen, special symbol
10248 @cindex dash, special symbol
10249 @cindex ellipsis, special symbol
10250 In addition to regular entities defined above, Org exports in a special
10251 way@footnote{This behaviour can be disabled with @code{-} export setting
10252 (@pxref{Export settings}).} the following commonly used character
10253 combinations: @samp{\-} is treated as a shy hyphen, @samp{--} and @samp{---}
10254 are converted into dashes, and @samp{...} becomes a compact set of dots.
10256 @node Subscripts and superscripts
10257 @section Subscripts and superscripts
10258 @cindex subscript
10259 @cindex superscript
10261 @samp{^} and @samp{_} are used to indicate super- and subscripts.  To
10262 increase the readability of ASCII text, it is not necessary---but OK---to
10263 surround multi-character sub- and superscripts with curly braces.  Those are,
10264 however, mandatory, when more than one word is involved.  For example
10266 @example
10267 The radius of the sun is R_sun = 6.96 x 10^8 m.  On the other hand, the
10268 radius of Alpha Centauri is R_@{Alpha Centauri@} = 1.28 x R_@{sun@}.
10269 @end example
10271 @vindex org-use-sub-superscripts
10272 If you write a text where the underscore is often used in a different
10273 context, Org's convention to always interpret these as subscripts can get in
10274 your way.  Configure the variable @code{org-use-sub-superscripts} to change
10275 this convention.  For example, when setting this variable to @code{@{@}},
10276 @samp{a_b} will not be interpreted as a subscript, but @samp{a_@{b@}} will.
10278 @table @kbd
10279 @kindex C-c C-x \
10280 @item C-c C-x \
10281 In addition to showing entities as UTF-8 characters, this command will also
10282 format sub- and superscripts in a WYSIWYM way.
10283 @end table
10285 @node Embedded @LaTeX{}
10286 @section Embedded @LaTeX{}
10287 @cindex @TeX{} interpretation
10288 @cindex @LaTeX{} interpretation
10290 Plain ASCII is normally sufficient for almost all note taking.  Exceptions
10291 include scientific notes, which often require mathematical symbols and the
10292 occasional formula.  @LaTeX{}@footnote{@LaTeX{} is a macro system based on
10293 Donald E. Knuth's @TeX{} system.  Many of the features described here as
10294 ``@LaTeX{}'' are really from @TeX{}, but for simplicity I am blurring this
10295 distinction.}  is widely used to typeset scientific documents.  Org mode
10296 supports embedding @LaTeX{} code into its files, because many academics are
10297 used to writing and reading @LaTeX{} source code, and because it can be
10298 readily processed to produce pretty output for a number of export back-ends.
10300 @menu
10301 * @LaTeX{} fragments::          Complex formulas made easy
10302 * Previewing @LaTeX{} fragments::  What will this snippet look like?
10303 * CDLaTeX mode::                Speed up entering of formulas
10304 @end menu
10306 @node @LaTeX{} fragments
10307 @subsection @LaTeX{} fragments
10308 @cindex @LaTeX{} fragments
10310 @vindex org-format-latex-header
10311 Org mode can contain @LaTeX{} math fragments, and it supports ways to process
10312 these for several export back-ends.  When exporting to @LaTeX{}, the code is
10313 left as it is.  When exporting to HTML, Org can use either
10314 @uref{http://www.mathjax.org, MathJax} (@pxref{Math formatting in HTML
10315 export}) or transcode the math into images (see @pxref{Previewing @LaTeX{}
10316 fragments}).
10318 @LaTeX{} fragments don't need any special marking at all.  The following
10319 snippets will be identified as @LaTeX{} source code:
10320 @itemize @bullet
10321 @item
10322 Environments of any kind@footnote{When MathJax is used, only the
10323 environments recognized by MathJax will be processed.  When
10324 @file{dvipng} program, @file{dvisvgm} program or @file{imagemagick} suite is
10325 used to create images, any @LaTeX{} environment will be handled.}.  The only
10326 requirement is that the @code{\begin} statement appears on a new line, at the
10327 beginning of the line or after whitespaces only.
10328 @item
10329 Text within the usual @LaTeX{} math delimiters.  To avoid conflicts with
10330 currency specifications, single @samp{$} characters are only recognized as
10331 math delimiters if the enclosed text contains at most two line breaks, is
10332 directly attached to the @samp{$} characters with no whitespace in between,
10333 and if the closing @samp{$} is followed by whitespace or punctuation
10334 (parentheses and quotes are considered to be punctuation in this
10335 context).  For the other delimiters, there is no such restriction, so when in
10336 doubt, use @samp{\(...\)} as inline math delimiters.
10337 @end itemize
10339 @noindent For example:
10341 @example
10342 \begin@{equation@}
10343 x=\sqrt@{b@}
10344 \end@{equation@}
10346 If $a^2=b$ and \( b=2 \), then the solution must be
10347 either $$ a=+\sqrt@{2@} $$ or \[ a=-\sqrt@{2@} \].
10348 @end example
10350 @c FIXME
10351 @c @noindent
10352 @c @vindex org-format-latex-options
10353 @c If you need any of the delimiter ASCII sequences for other purposes, you
10354 @c can configure the option @code{org-format-latex-options} to deselect the
10355 @c ones you do not wish to have interpreted by the @LaTeX{} converter.
10357 @vindex org-export-with-latex
10358 @LaTeX{} processing can be configured with the variable
10359 @code{org-export-with-latex}.  The default setting is @code{t} which means
10360 MathJax for HTML, and no processing for ASCII and @LaTeX{} back-ends.
10361 You can also set this variable on a per-file basis using one of these
10362 lines:
10364 @example
10365 #+OPTIONS: tex:t          @r{Do the right thing automatically (MathJax)}
10366 #+OPTIONS: tex:nil        @r{Do not process @LaTeX{} fragments at all}
10367 #+OPTIONS: tex:verbatim   @r{Verbatim export, for jsMath or so}
10368 @end example
10370 @node Previewing @LaTeX{} fragments
10371 @subsection Previewing @LaTeX{} fragments
10372 @cindex @LaTeX{} fragments, preview
10374 @vindex org-preview-latex-default-process
10375 If you have a working @LaTeX{} installation and @file{dvipng}, @file{dvisvgm}
10376 or @file{convert} installed@footnote{These are respectively available at
10377 @url{http://sourceforge.net/projects/dvipng/}, @url{http://dvisvgm.bplaced.net/}
10378 and from the @file{imagemagick} suite.  Choose the converter by setting the
10379 variable @code{org-preview-latex-default-process} accordingly.}, @LaTeX{}
10380 fragments can be processed to produce images of the typeset expressions to be
10381 used for inclusion while exporting to HTML (see @pxref{@LaTeX{} fragments}),
10382 or for inline previewing within Org mode.
10384 @vindex org-format-latex-options
10385 @vindex org-format-latex-header
10386 You can customize the variables @code{org-format-latex-options} and
10387 @code{org-format-latex-header} to influence some aspects of the preview.  In
10388 particular, the @code{:scale} (and for HTML export, @code{:html-scale})
10389 property of the former can be used to adjust the size of the preview images.
10391 @table @kbd
10392 @kindex C-c C-x C-l
10393 @item C-c C-x C-l
10394 Produce a preview image of the @LaTeX{} fragment at point and overlay it
10395 over the source code.  If there is no fragment at point, process all
10396 fragments in the current entry (between two headlines).  When called
10397 with a prefix argument, process the entire subtree.  When called with
10398 two prefix arguments, or when the cursor is before the first headline,
10399 process the entire buffer.
10400 @kindex C-c C-c
10401 @item C-c C-c
10402 Remove the overlay preview images.
10403 @end table
10405 @vindex org-startup-with-latex-preview
10406 You can turn on the previewing of all @LaTeX{} fragments in a file with
10408 @example
10409 #+STARTUP: latexpreview
10410 @end example
10412 To disable it, simply use
10414 @example
10415 #+STARTUP: nolatexpreview
10416 @end example
10418 @node CDLaTeX mode
10419 @subsection Using CD@LaTeX{} to enter math
10420 @cindex CD@LaTeX{}
10422 CD@LaTeX{} mode is a minor mode that is normally used in combination with a
10423 major @LaTeX{} mode like AUC@TeX{} in order to speed-up insertion of
10424 environments and math templates.  Inside Org mode, you can make use of
10425 some of the features of CD@LaTeX{} mode.  You need to install
10426 @file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
10427 AUC@TeX{}) from @url{http://www.astro.uva.nl/~dominik/Tools/cdlatex}.
10428 Don't use CD@LaTeX{} mode itself under Org mode, but use the light
10429 version @code{org-cdlatex-mode} that comes as part of Org mode.  Turn it
10430 on for the current buffer with @kbd{M-x org-cdlatex-mode RET}, or for all
10431 Org files with
10433 @lisp
10434 (add-hook 'org-mode-hook 'turn-on-org-cdlatex)
10435 @end lisp
10437 When this mode is enabled, the following features are present (for more
10438 details see the documentation of CD@LaTeX{} mode):
10439 @itemize @bullet
10440 @kindex C-c @{
10441 @item
10442 Environment templates can be inserted with @kbd{C-c @{}.
10443 @item
10444 @kindex @key{TAB}
10445 The @key{TAB} key will do template expansion if the cursor is inside a
10446 @LaTeX{} fragment@footnote{Org mode has a method to test if the cursor is
10447 inside such a fragment, see the documentation of the function
10448 @code{org-inside-LaTeX-fragment-p}.}.  For example, @key{TAB} will
10449 expand @code{fr} to @code{\frac@{@}@{@}} and position the cursor
10450 correctly inside the first brace.  Another @key{TAB} will get you into
10451 the second brace.  Even outside fragments, @key{TAB} will expand
10452 environment abbreviations at the beginning of a line.  For example, if
10453 you write @samp{equ} at the beginning of a line and press @key{TAB},
10454 this abbreviation will be expanded to an @code{equation} environment.
10455 To get a list of all abbreviations, type @kbd{M-x cdlatex-command-help RET}.
10456 @item
10457 @kindex _
10458 @kindex ^
10459 @vindex cdlatex-simplify-sub-super-scripts
10460 Pressing @kbd{_} and @kbd{^} inside a @LaTeX{} fragment will insert these
10461 characters together with a pair of braces.  If you use @key{TAB} to move
10462 out of the braces, and if the braces surround only a single character or
10463 macro, they are removed again (depending on the variable
10464 @code{cdlatex-simplify-sub-super-scripts}).
10465 @item
10466 @kindex `
10467 Pressing the grave accent @kbd{`} followed by a character inserts math
10468 macros, also outside @LaTeX{} fragments.  If you wait more than 1.5 seconds
10469 after the grave accent, a help window will pop up.
10470 @item
10471 @kindex '
10472 Pressing the apostrophe @kbd{'} followed by another character modifies
10473 the symbol before point with an accent or a font.  If you wait more than
10474 1.5 seconds after the apostrophe, a help window will pop up.  Character
10475 modification will work only inside @LaTeX{} fragments; outside the quote
10476 is normal.
10477 @end itemize
10479 @node Exporting
10480 @chapter Exporting
10481 @cindex exporting
10483 Sometimes, you may want to pretty print your notes, publish them on the web
10484 or even share them with people not using Org.  In these cases, the Org export
10485 facilities can be used to convert your documents to a variety of other
10486 formats, while retaining as much structure (@pxref{Document structure}) and
10487 markup (@pxref{Markup}) as possible.
10489 @cindex export back-end
10490 Libraries responsible for such translation are called back-ends.  Org ships
10491 with the following ones
10493 @itemize
10494 @item ascii (ASCII format)
10495 @item beamer (@LaTeX{} Beamer format)
10496 @item html (HTML format)
10497 @item icalendar (iCalendar format)
10498 @item latex (@LaTeX{} format)
10499 @item md (Markdown format)
10500 @item odt (OpenDocument Text format)
10501 @item org (Org format)
10502 @item texinfo (Texinfo format)
10503 @item man (Man page format)
10504 @end itemize
10506 @noindent Org also uses additional libraries located in @code{contrib/}
10507 directory (@pxref{Installation}).  Users can install additional export
10508 libraries for additional formats from the Emacs packaging system.  For easy
10509 discovery, these packages have a common naming scheme: @file{ox-NAME}, where
10510 NAME is one of the formats.  For example, @file{ox-koma-letter} for
10511 @code{koma-letter} back-end.
10513 @vindex org-export-backends
10514 Org loads back-ends for the following formats by default: @code{ascii},
10515 @code{html}, @code{icalendar}, @code{latex} and @code{odt}.
10517 Org can load additional back-ends either of two ways: through the
10518 @code{org-export-backends} variable configuration; or, by requiring the
10519 library in the Emacs init file like this:
10521 @lisp
10522 (require 'ox-md)
10523 @end lisp
10525 @menu
10526 * The export dispatcher::       The main interface
10527 * Export settings::             Common export settings
10528 * Table of contents::           The if and where of the table of contents
10529 * Include files::               Include additional files into a document
10530 * Macro replacement::           Use macros to create templates
10531 * Comment lines::               What will not be exported
10532 * ASCII/Latin-1/UTF-8 export::  Exporting to flat files with encoding
10533 * Beamer export::               Exporting as a Beamer presentation
10534 * HTML export::                 Exporting to HTML
10535 * @LaTeX{} export::             Exporting to @LaTeX{}, and processing to PDF
10536 * Markdown export::             Exporting to Markdown
10537 * OpenDocument Text export::    Exporting to OpenDocument Text
10538 * Org export::                  Exporting to Org
10539 * Texinfo export::              Exporting to Texinfo
10540 * iCalendar export::            Exporting to iCalendar
10541 * Other built-in back-ends::    Exporting to a man page
10542 * Advanced configuration::      Fine-tuning the export output
10543 * Export in foreign buffers::   Author tables and lists in Org syntax
10544 @end menu
10546 @node The export dispatcher
10547 @section The export dispatcher
10548 @vindex org-export-dispatch-use-expert-ui
10549 @cindex Export, dispatcher
10551 The export dispatcher is the main interface for Org's exports.  A
10552 hierarchical menu presents the currently configured export formats.  Options
10553 are shown as easy toggle switches on the same screen.
10555 Org also has a minimal prompt interface for the export dispatcher.  When the
10556 variable @code{org-export-dispatch-use-expert-ui} is set to a non-@code{nil}
10557 value, Org prompts in the minibuffer.  To switch back to the hierarchical
10558 menu, press @key{?}.
10560 @table @asis
10561 @orgcmd{C-c C-e,org-export-dispatch}
10563 Invokes the export dispatcher interface.  The options show default settings.
10564 The @kbd{C-u} prefix argument preserves options from the previous export,
10565 including any sub-tree selections.
10567 @end table
10569 Org exports the entire buffer by default.  If the Org buffer has an active
10570 region, then Org exports just that region.
10572 These are the export options, the key combinations that toggle them
10573 (@pxref{Export settings}):
10575 @table @kbd
10576 @item C-a
10577 @vindex org-export-async-init-file
10578 Toggles asynchronous export.  Asynchronous export uses an external Emacs
10579 process with a specially configured initialization file to complete the
10580 exporting process in the background thereby releasing the current interface.
10581 This is particularly useful when exporting long documents.
10583 Output from an asynchronous export is saved on the ``the export stack''.  To
10584 view this stack, call the export dispatcher with a double @kbd{C-u} prefix
10585 argument.  If already in the export dispatcher menu, @kbd{&} displays the
10586 stack.
10588 @vindex org-export-in-background
10589 To make the background export process the default, customize the variable,
10590 @code{org-export-in-background}.
10592 @item C-b
10593 Toggle body-only export.  Useful for excluding headers and footers in the
10594 export.  Affects only those back-end formats that have such sections---like
10595 @code{<head>...</head>} in HTML.
10597 @item C-s
10598 @vindex org-export-initial-scope
10599 Toggle sub-tree export.  When turned on, Org exports only the sub-tree starting
10600 from the cursor position at the time the export dispatcher was invoked.  Org
10601 uses the top heading of this sub-tree as the document's title.  If the cursor
10602 is not on a heading, Org uses the nearest enclosing header.  If the cursor is
10603 in the document preamble, Org signals an error and aborts export.
10605 To make the sub-tree export the default, customize the variable,
10606 @code{org-export-initial-scope}.
10608 @item C-v
10609 Toggle visible-only export.  Useful for exporting only visible parts of an
10610 Org document by adjusting outline visibility settings.
10611 @end table
10613 @node Export settings
10614 @section Export settings
10615 @cindex Export, settings
10617 @cindex #+OPTIONS
10618 Export options can be set: globally with variables; for an individual file by
10619 making variables buffer-local with in-buffer settings (@pxref{In-buffer
10620 settings}), by setting individual keywords, or by specifying them in a
10621 compact form with the @code{#+OPTIONS} keyword; or for a tree by setting
10622 properties (@pxref{Properties and columns}).  Options set at a specific level
10623 override options set at a more general level.
10625 @cindex #+SETUPFILE
10626 In-buffer settings may appear anywhere in the file, either directly or
10627 indirectly through a file included using @samp{#+SETUPFILE: filename} syntax.
10628 Option keyword sets tailored to a particular back-end can be inserted from
10629 the export dispatcher (@pxref{The export dispatcher}) using the @code{Insert
10630 template} command by pressing @key{#}.  To insert keywords individually,
10631 a good way to make sure the keyword is correct is to type @code{#+} and then
10632 to use @kbd{M-@key{TAB}}@footnote{Many desktops intercept @kbd{M-TAB} to
10633 switch windows.  Use @kbd{C-M-i} or @kbd{@key{ESC} @key{TAB}} instead.} for
10634 completion.
10636 The export keywords available for every back-end, and their equivalent global
10637 variables, include:
10639 @table @samp
10640 @item AUTHOR
10641 @cindex #+AUTHOR
10642 @vindex user-full-name
10643 The document author (@code{user-full-name}).
10645 @item CREATOR
10646 @cindex #+CREATOR
10647 @vindex org-export-creator-string
10648 Entity responsible for output generation (@code{org-export-creator-string}).
10650 @item DATE
10651 @cindex #+DATE
10652 @vindex org-export-date-timestamp-format
10653 A date or a time-stamp@footnote{The variable
10654 @code{org-export-date-timestamp-format} defines how this time-stamp will be
10655 exported.}.
10657 @item EMAIL
10658 @cindex #+EMAIL
10659 @vindex user-mail-address
10660 The email address (@code{user-mail-address}).
10662 @item LANGUAGE
10663 @cindex #+LANGUAGE
10664 @vindex org-export-default-language
10665 Language to use for translating certain strings
10666 (@code{org-export-default-language}).  With @samp{#+LANGUAGE: fr}, for
10667 example, Org translates @emph{Table of contents} to the French @emph{Table
10668 des matières}.
10670 @item SELECT_TAGS
10671 @cindex #+SELECT_TAGS
10672 @vindex org-export-select-tags
10673 The default value is @code{:export:}.  When a tree is tagged with
10674 @code{:export:} (@code{org-export-select-tags}), Org selects that tree and
10675 its sub-trees for export.  Org excludes trees with @code{:noexport:} tags,
10676 see below.  When selectively exporting files with @code{:export:} tags set,
10677 Org does not export any text that appears before the first headline.
10679 @item EXCLUDE_TAGS
10680 @cindex #+EXCLUDE_TAGS
10681 @vindex org-export-exclude-tags
10682 The default value is @code{:noexport:}.  When a tree is tagged with
10683 @code{:noexport:} (@code{org-export-exclude-tags}), Org excludes that tree
10684 and its sub-trees from export.  Entries tagged with @code{:noexport:} will be
10685 unconditionally excluded from the export, even if they have an
10686 @code{:export:} tag.  Even if a sub-tree is not exported, Org will execute any
10687 code blocks contained in them.
10689 @item TITLE
10690 @cindex #+TITLE
10691 @cindex document title
10692 Org displays this title.  For long titles, use multiple @code{#+TITLE} lines.
10693 @end table
10695 The @code{#+OPTIONS} keyword is a compact form.  To configure multiple
10696 options, use several @code{#+OPTIONS} lines.  @code{#+OPTIONS} recognizes the
10697 following arguments.
10699 @table @code
10700 @item ':
10701 @vindex org-export-with-smart-quotes
10702 Toggle smart quotes (@code{org-export-with-smart-quotes}).  Depending on the
10703 language used, when activated, Org treats pairs of double quotes as primary
10704 quotes, pairs of single quotes as secondary quotes, and single quote marks as
10705 apostrophes.
10707 @item *:
10708 Toggle emphasized text (@code{org-export-with-emphasize}).
10710 @item -:
10711 @vindex org-export-with-special-strings
10712 Toggle conversion of special strings
10713 (@code{org-export-with-special-strings}).
10715 @item ::
10716 @vindex org-export-with-fixed-width
10717 Toggle fixed-width sections
10718 (@code{org-export-with-fixed-width}).
10720 @item <:
10721 @vindex org-export-with-timestamps
10722 Toggle inclusion of time/date active/inactive stamps
10723 (@code{org-export-with-timestamps}).
10725 @item \n:
10726 @vindex org-export-preserve-breaks
10727 Toggles whether to preserve line breaks (@code{org-export-preserve-breaks}).
10729 @item ^:
10730 @vindex org-export-with-sub-superscripts
10731 Toggle @TeX{}-like syntax for sub- and superscripts.  If you write "^:@{@}",
10732 @samp{a_@{b@}} will be interpreted, but the simple @samp{a_b} will be left as
10733 it is (@code{org-export-with-sub-superscripts}).
10735 @item arch:
10736 @vindex org-export-with-archived-trees
10737 Configure how archived trees are exported.  When set to @code{headline}, the
10738 export process skips the contents and processes only the headlines
10739 (@code{org-export-with-archived-trees}).
10741 @item author:
10742 @vindex org-export-with-author
10743 Toggle inclusion of author name into exported file
10744 (@code{org-export-with-author}).
10746 @item broken-links:
10747 @vindex org-export-with-broken-links
10748 Toggles if Org should continue exporting upon finding a broken internal link.
10749 When set to @code{mark}, Org clearly marks the problem link in the output
10750 (@code{org-export-with-broken-links}).
10752 @item c:
10753 @vindex org-export-with-clocks
10754 Toggle inclusion of CLOCK keywords (@code{org-export-with-clocks}).
10756 @item creator:
10757 @vindex org-export-with-creator
10758 Toggle inclusion of creator information in the exported file
10759 (@code{org-export-with-creator}).
10761 @item d:
10762 @vindex org-export-with-drawers
10763 Toggles inclusion of drawers, or list of drawers to include, or list of
10764 drawers to exclude (@code{org-export-with-drawers}).
10766 @item date:
10767 @vindex org-export-with-date
10768 Toggle inclusion of a date into exported file (@code{org-export-with-date}).
10770 @item e:
10771 @vindex org-export-with-entities
10772 Toggle inclusion of entities (@code{org-export-with-entities}).
10774 @item email:
10775 @vindex org-export-with-email
10776 Toggle inclusion of the author's e-mail into exported file
10777 (@code{org-export-with-email}).
10779 @item f:
10780 @vindex org-export-with-footnotes
10781 Toggle the inclusion of footnotes (@code{org-export-with-footnotes}).
10783 @item H:
10784 @vindex org-export-headline-levels
10785 Set the number of headline levels for export
10786 (@code{org-export-headline-levels}).  Below that level, headlines are treated
10787 differently.  In most back-ends, they become list items.
10789 @item inline:
10790 @vindex org-export-with-inlinetasks
10791 Toggle inclusion of inlinetasks (@code{org-export-with-inlinetasks}).
10793 @item num:
10794 @vindex org-export-with-section-numbers
10795 @cindex property, UNNUMBERED
10796 Toggle section-numbers (@code{org-export-with-section-numbers}).  When set to
10797 number @samp{n}, Org numbers only those headlines at level @samp{n} or above.
10798 Set @code{UNNUMBERED} property to non-@code{nil} to disable numbering of
10799 heading and subheadings entirely.
10801 @item p:
10802 @vindex org-export-with-planning
10803 Toggle export of planning information (@code{org-export-with-planning}).
10804 ``Planning information'' comes from lines located right after the headline
10805 and contain any combination of these cookies: @code{SCHEDULED:},
10806 @code{DEADLINE:}, or @code{CLOSED:}.
10808 @item pri:
10809 @vindex org-export-with-priority
10810 Toggle inclusion of priority cookies (@code{org-export-with-priority}).
10812 @item prop:
10813 @vindex org-export-with-properties
10814 Toggle inclusion of property drawers, or list the properties to include
10815 (@code{org-export-with-properties}).
10817 @item stat:
10818 @vindex org-export-with-statistics-cookies
10819 Toggle inclusion of statistics cookies
10820 (@code{org-export-with-statistics-cookies}).
10822 @item tags:
10823 @vindex org-export-with-tags
10824 Toggle inclusion of tags, may also be @code{not-in-toc}
10825 (@code{org-export-with-tags}).
10827 @item tasks:
10828 @vindex org-export-with-tasks
10829 Toggle inclusion of tasks (TODO items); or @code{nil} to remove all tasks; or
10830 @code{todo} to remove DONE tasks; or list the keywords to keep
10831 (@code{org-export-with-tasks}).
10833 @item tex:
10834 @vindex org-export-with-latex
10835 @code{nil} does not export; @code{t} exports; @code{verbatim} keeps
10836 everything in verbatim (@code{org-export-with-latex}).
10838 @item timestamp:
10839 @vindex org-export-time-stamp-file
10840 Toggle inclusion of the creation time in the exported file
10841 (@code{org-export-time-stamp-file}).
10843 @item title:
10844 @vindex org-export-with-title
10845 Toggle inclusion of title (@code{org-export-with-title}).
10847 @item toc:
10848 @vindex org-export-with-toc
10849 Toggle inclusion of the table of contents, or set the level limit
10850 (@code{org-export-with-toc}).
10852 @item todo:
10853 @vindex org-export-with-todo-keywords
10854 Toggle inclusion of TODO keywords into exported text
10855 (@code{org-export-with-todo-keywords}).
10857 @item |:
10858 @vindex org-export-with-tables
10859 Toggle inclusion of tables (@code{org-export-with-tables}).
10861 @end table
10863 When exporting sub-trees, special node properties in them can override the
10864 above keywords.  They are special because they have an @samp{EXPORT_} prefix.
10865 For example, @samp{DATE} and @samp{OPTIONS} keywords become, respectively,
10866 @samp{EXPORT_DATE} and @samp{EXPORT_OPTIONS}.  Except for @samp{SETUPFILE},
10867 all other keywords listed above have an @samp{EXPORT_} equivalent.
10869 @cindex #+BIND
10870 @vindex org-export-allow-bind-keywords
10871 If @code{org-export-allow-bind-keywords} is non-@code{nil}, Emacs variables
10872 can become buffer-local during export by using the BIND keyword.  Its syntax
10873 is @samp{#+BIND: variable value}.  This is particularly useful for in-buffer
10874 settings that cannot be changed using keywords.
10876 @cindex property, EXPORT_FILE_NAME
10877 Normally Org generates the file name based on the buffer name and the
10878 extension based on the back-end format.  For sub-trees, Org can export to a
10879 file name as specified in the @code{EXPORT_FILE_NAME} property.
10881 @node Table of contents
10882 @section Table of contents
10883 @cindex table of contents
10884 @cindex list of tables
10885 @cindex list of listings
10887 @cindex #+TOC
10888 @vindex org-export-with-toc
10889 Org normally inserts the table of contents directly before the first headline
10890 of the file.  Org sets the TOC depth the same as the headline levels in the
10891 file.  Use a lower number for lower TOC depth.  To turn off TOC entirely, use
10892 @code{nil}.  This is configured in the @code{org-export-with-toc} variable or
10893 as keywords in an Org file as:
10895 @example
10896 #+OPTIONS: toc:2          @r{only include two levels in TOC}
10897 #+OPTIONS: toc:nil        @r{no default TOC at all}
10898 @end example
10900 To move the table of contents to a different location, first turn off the
10901 default with @code{org-export-with-toc} variable or with @code{#+OPTIONS:
10902 toc:nil}.  Then insert @code{#+TOC: headlines N} at the desired location(s).
10904 @example
10905 #+OPTIONS: toc:nil        @r{no default TOC}
10907 #+TOC: headlines 2        @r{insert TOC here, with two headline levels}
10908 @end example
10910 To adjust the TOC depth for a specific section of the Org document, append an
10911 additional @samp{local} parameter.  This parameter becomes a relative depth
10912 for the current level.
10914 Note that for this feature to work properly in @LaTeX{} export, the Org file
10915 requires the inclusion of the @code{titletoc} package.  Because of
10916 compatibility issues, @code{titletoc} has to be loaded @emph{before}
10917 @code{hyperref}.  Customize the @code{org-latex-default-packages-alist}
10918 variable.
10920 @example
10921 * Section #+TOC: headlines 1 local @r{insert local TOC, with direct children
10922 only}
10923 @end example
10925 Use the @code{TOC} keyword to generate list of tables (resp.@: all listings)
10926 with captions.
10928 @example
10929 #+TOC: listings           @r{build a list of listings}
10930 #+TOC: tables             @r{build a list of tables}
10931 @end example
10933 @cindex property, ALT_TITLE
10934 Normally Org uses the headline for its entry in the table of contents.  But
10935 with @code{ALT_TITLE} property, a different entry can be specified for the
10936 table of contents.
10938 @node Include files
10939 @section Include files
10940 @cindex include files, during export
10941 Include other files during export.  For example, to include your @file{.emacs}
10942 file, you could use:
10943 @cindex #+INCLUDE
10945 @example
10946 #+INCLUDE: "~/.emacs" src emacs-lisp
10947 @end example
10949 @noindent
10950 The first parameter is the file name to include.  The optional second
10951 parameter specifies the block type: @samp{example}, @samp{export} or
10952 @samp{src}.  The optional third parameter specifies the source code language
10953 to use for formatting the contents.  This is relevant to both @samp{export}
10954 and @samp{src} block types.
10956 If an include file is specified as having a markup language, Org neither
10957 checks for valid syntax nor changes the contents in any way.  For
10958 @samp{example} and @samp{src} blocks, Org code-escapes the contents before
10959 inclusion.
10961 If an include file is not specified as having any markup language, Org
10962 assumes it be in Org format and proceeds as usual with a few exceptions.  Org
10963 makes the footnote labels (@pxref{Footnotes}) in the included file local to
10964 that file.  The contents of the included file will belong to the same
10965 structure---headline, item---containing the @code{INCLUDE} keyword.  In
10966 particular, headlines within the file will become children of the current
10967 section.  That behavior can be changed by providing an additional keyword
10968 parameter, @code{:minlevel}.  It shifts the headlines in the included file to
10969 become the lowest level.  For example, this syntax makes the included file
10970 a sibling of the current top-level headline:
10972 @example
10973 #+INCLUDE: "~/my-book/chapter2.org" :minlevel 1
10974 @end example
10976 Inclusion of only portions of files are specified using ranges parameter with
10977 @code{:lines} keyword.  The line at the upper end of the range will not be
10978 included.  The start and/or the end of the range may be omitted to use the
10979 obvious defaults.
10981 @example
10982 #+INCLUDE: "~/.emacs" :lines "5-10"   @r{Include lines 5 to 10, 10 excluded}
10983 #+INCLUDE: "~/.emacs" :lines "-10"    @r{Include lines 1 to 10, 10 excluded}
10984 #+INCLUDE: "~/.emacs" :lines "10-"    @r{Include lines from 10 to EOF}
10985 @end example
10987 Inclusions may specify a file-link to extract an object matched by
10988 @code{org-link-search}@footnote{Note that
10989 @code{org-link-search-must-match-exact-headline} is locally bound to
10990 non-@code{nil}.  Therefore, @code{org-link-search} only matches headlines and
10991 named elements.}  (@pxref{Search options}).
10993 To extract only the contents of the matched object, set @code{:only-contents}
10994 property to non-@code{nil}.  This will omit any planning lines or property
10995 drawers.  The ranges for @code{:lines} keyword are relative to the requested
10996 element.  Some examples:
10998 @example
10999 #+INCLUDE: "./paper.org::#theory" :only-contents t
11000    @r{Include the body of the heading with the custom id @samp{theory}}
11001 #+INCLUDE: "./paper.org::mytable"  @r{Include named element.}
11002 #+INCLUDE: "./paper.org::*conclusion" :lines 1-20
11003    @r{Include the first 20 lines of the headline named @samp{conclusion}.}
11004 @end example
11006 @table @kbd
11007 @kindex C-c '
11008 @item C-c '
11009 Visit the include file at point.
11010 @end table
11012 @node Macro replacement
11013 @section Macro replacement
11014 @cindex macro replacement, during export
11015 @cindex #+MACRO
11017 Macros replace text snippets during export.  This is a macro definition in
11018 Org:
11020 @example
11021 #+MACRO: name   replacement text $1, $2 are arguments
11022 @end example
11024 @noindent which can be referenced using
11025 @code{@{@{@{name(arg1, arg2)@}@}@}}@footnote{Since commas separate the
11026 arguments, commas within arguments have to be escaped with the backslash
11027 character.  So only those backslash characters before a comma need escaping
11028 with another backslash character.}.
11030 Org recognizes macro references in following Org markup areas: paragraphs,
11031 headlines, verse blocks, tables cells and lists.  Org also recognizes macro
11032 references in keywords, such as @code{#+CAPTION}, @code{#+TITLE},
11033 @code{#+AUTHOR}, @code{#+DATE}, and for some back-end specific export
11034 options.
11036 Org comes with following pre-defined macros:
11038 @table @code
11039 @item @{@{@{title@}@}@}
11040 @itemx @{@{@{author@}@}@}
11041 @itemx @{@{@{email@}@}@}
11042 @cindex title, macro
11043 @cindex author, macro
11044 @cindex email, macro
11045 Org replaces these macro references with available information at the time of
11046 export.
11048 @item @{@{@{date@}@}@}
11049 @itemx @{@{@{date(@var{FORMAT})@}@}@}
11050 @cindex date, macro
11051 This macro refers to the @code{#+DATE} keyword.  @var{FORMAT} is an optional
11052 argument to the @code{@{@{@{date@}@}@}} macro that will be used only if
11053 @code{#+DATE} is a single timestamp.  @var{FORMAT} should be a format string
11054 understood by @code{format-time-string}.
11056 @item @{@{@{time(@var{FORMAT})@}@}@}
11057 @itemx @{@{@{modification-time(@var{FORMAT}, @var{VC})@}@}@}
11058 @cindex time, macro
11059 @cindex modification time, macro
11060 These macros refer to the document's date and time of export and date and
11061 time of modification.  @var{FORMAT} is a string understood by
11062 @code{format-time-string}.  If the second argument to the
11063 @code{modification-time} macro is non-@code{nil}, Org uses @file{vc.el} to
11064 retrieve the document's modification time from the version control
11065 system.  Otherwise Org reads the file attributes.
11067 @item @{@{@{input-file@}@}@}
11068 @cindex input file, macro
11069 This macro refers to the filename of the exported file.
11071 @item @{@{@{property(@var{PROPERTY-NAME})@}@}@}
11072 @itemx @{@{@{property(@var{PROPERTY-NAME},@var{SEARCH-OPTION})@}@}@}
11073 @cindex property, macro
11074 This macro returns the value of property @var{PROPERTY-NAME} in the current
11075 entry.  If @var{SEARCH-OPTION} (@pxref{Search options}) refers to a remote
11076 entry, that will be used instead.
11077 @end table
11079 The surrounding brackets can be made invisible by setting
11080 @code{org-hide-macro-markers} non-@code{nil}.
11082 Org expands macros at the very beginning of the export process.
11084 @node Comment lines
11085 @section Comment lines
11086 @cindex exporting, not
11088 @cindex comment lines
11089 Lines starting with zero or more whitespace characters followed by one
11090 @samp{#} and a whitespace are treated as comments and, as such, are not
11091 exported.
11093 @cindex #+BEGIN_COMMENT
11094 Likewise, regions surrounded by @samp{#+BEGIN_COMMENT}
11095 ... @samp{#+END_COMMENT} are not exported.
11097 @cindex comment trees
11098 Finally, a @samp{COMMENT} keyword at the beginning of an entry, but after any
11099 other keyword or priority cookie, comments out the entire subtree.  In this
11100 case, the subtree is not exported and no code block within it is executed
11101 either@footnote{For a less drastic behavior, consider using a select tag
11102 (@pxref{Export settings}) instead.}.  The command below helps changing the
11103 comment status of a headline.
11105 @table @kbd
11106 @kindex C-c ;
11107 @item C-c ;
11108 Toggle the @samp{COMMENT} keyword at the beginning of an entry.
11109 @end table
11111 @node ASCII/Latin-1/UTF-8 export
11112 @section ASCII/Latin-1/UTF-8 export
11113 @cindex ASCII export
11114 @cindex Latin-1 export
11115 @cindex UTF-8 export
11117 ASCII export produces an output file containing only plain ASCII characters.
11118 This is the most simplest and direct text output.  It does not contain any
11119 Org markup either.  Latin-1 and UTF-8 export use additional characters and
11120 symbols available in these encoding standards.  All three of these export
11121 formats offer the most basic of text output for maximum portability.
11123 @vindex org-ascii-text-width
11124 On export, Org fills and justifies text according to the text width set in
11125 @code{org-ascii-text-width}.
11127 @vindex org-ascii-links-to-notes
11128 Org exports links using a footnote-like style where the descriptive part is
11129 in the text and the link is in a note before the next heading.  See the
11130 variable @code{org-ascii-links-to-notes} for details.
11132 @subheading ASCII export commands
11134 @table @kbd
11135 @orgcmd{C-c C-e t a/l/u,org-ascii-export-to-ascii}
11136 Export as an ASCII file with a @file{.txt} extension.  For @file{myfile.org},
11137 Org exports to @file{myfile.txt}, overwriting without warning.  For
11138 @file{myfile.txt}, Org exports to @file{myfile.txt.txt} in order to prevent
11139 data loss.
11140 @orgcmd{C-c C-e t A/L/U,org-ascii-export-as-ascii}
11141 Export to a temporary buffer.  Does not create a file.
11142 @end table
11144 @subheading ASCII specific export settings
11145 The ASCII export back-end has one extra keyword for customizing ASCII output.
11146 Setting this keyword works similar to the general options (@pxref{Export
11147 settings}).
11149 @table @samp
11150 @item SUBTITLE
11151 @cindex #+SUBTITLE (ASCII)
11152 The document subtitle.  For long subtitles, use multiple @code{#+SUBTITLE}
11153 lines in the Org file.  Org prints them on one continuous line, wrapping into
11154 multiple lines if necessary.
11155 @end table
11157 @subheading Header and sectioning structure
11159 Org converts the first three outline levels into headlines for ASCII export.
11160 The remaining levels are turned into lists.  To change this cut-off point
11161 where levels become lists, @pxref{Export settings}.
11163 @subheading Quoting ASCII text
11165 To insert text within the Org file by the ASCII back-end, use one the
11166 following constructs, inline, keyword, or export block:
11168 @cindex #+ASCII
11169 @cindex #+BEGIN_EXPORT ascii
11170 @example
11171 Inline text @@@@ascii:and additional text@@@@ within a paragraph.
11173 #+ASCII: Some text
11175 #+BEGIN_EXPORT ascii
11176 Org exports text in this block only when using ASCII back-end.
11177 #+END_EXPORT
11178 @end example
11180 @subheading ASCII specific attributes
11181 @cindex #+ATTR_ASCII
11182 @cindex horizontal rules, in ASCII export
11184 ASCII back-end recognizes only one attribute, @code{:width}, which specifies
11185 the width of an horizontal rule in number of characters.  The keyword and
11186 syntax for specifying widths is:
11188 @example
11189 #+ATTR_ASCII: :width 10
11190 -----
11191 @end example
11193 @subheading ASCII special blocks
11194 @cindex special blocks, in ASCII export
11195 @cindex #+BEGIN_JUSTIFYLEFT
11196 @cindex #+BEGIN_JUSTIFYRIGHT
11198 Besides @code{#+BEGIN_CENTER} blocks (@pxref{Paragraphs}), ASCII back-end has
11199 these two left and right justification blocks:
11201 @example
11202 #+BEGIN_JUSTIFYLEFT
11203 It's just a jump to the left...
11204 #+END_JUSTIFYLEFT
11206 #+BEGIN_JUSTIFYRIGHT
11207 ...and then a step to the right.
11208 #+END_JUSTIFYRIGHT
11209 @end example
11211 @node Beamer export
11212 @section Beamer export
11213 @cindex Beamer export
11215 Org uses @emph{Beamer} export to convert an Org file tree structure into a
11216 high-quality interactive slides for presentations.  @emph{Beamer} is a
11217 @LaTeX{} document class for creating presentations in PDF, HTML, and other
11218 popular display formats.
11220 @menu
11221 * Beamer export commands::      For creating Beamer documents.
11222 * Beamer specific export settings::  For customizing Beamer export.
11223 * Sectioning Frames and Blocks in Beamer::  For composing Beamer slides.
11224 * Beamer specific syntax::      For using in Org documents.
11225 * Editing support::             For using helper functions.
11226 * A Beamer example::            A complete presentation.
11227 @end menu
11229 @node Beamer export commands
11230 @subsection Beamer export commands
11232 @table @kbd
11233 @orgcmd{C-c C-e l b,org-beamer-export-to-latex}
11234 Export as @LaTeX{} file with a @file{.tex} extension.  For @file{myfile.org},
11235 Org exports to @file{myfile.tex}, overwriting without warning.
11236 @orgcmd{C-c C-e l B,org-beamer-export-as-latex}
11237 Export to a temporary buffer.  Does not create a file.
11238 @orgcmd{C-c C-e l P,org-beamer-export-to-pdf}
11239 Export as @LaTeX{} file and then convert it to PDF format.
11240 @item C-c C-e l O
11241 Export as @LaTeX{} file, convert it to PDF format, and then open the PDF
11242 file.
11243 @end table
11245 @node Beamer specific export settings
11246 @subsection Beamer specific export settings
11248 Beamer export back-end has several additional keywords for customizing Beamer
11249 output.  These keywords work similar to the general options settings
11250 (@pxref{Export settings}).
11252 @table @samp
11253 @item BEAMER_THEME
11254 @cindex #+BEAMER_THEME
11255 @vindex org-beamer-theme
11256 The Beamer layout theme (@code{org-beamer-theme}).  Use square brackets for
11257 options.  For example:
11258 @smallexample
11259 #+BEAMER_THEME: Rochester [height=20pt]
11260 @end smallexample
11262 @item BEAMER_FONT_THEME
11263 @cindex #+BEAMER_FONT_THEME
11264 The Beamer font theme.
11266 @item BEAMER_INNER_THEME
11267 @cindex #+BEAMER_INNER_THEME
11268 The Beamer inner theme.
11270 @item BEAMER_OUTER_THEME
11271 @cindex #+BEAMER_OUTER_THEME
11272 The Beamer outer theme.
11274 @item BEAMER_HEADER
11275 @cindex #+BEAMER_HEADER
11276 Arbitrary lines inserted in the preamble, just before the @samp{hyperref}
11277 settings.
11279 @item DESCRIPTION
11280 @cindex #+DESCRIPTION (Beamer)
11281 The document description.  For long descriptions, use multiple
11282 @code{#+DESCRIPTION} keywords.  By default, @samp{hyperref} inserts
11283 @code{#+DESCRIPTION} as metadata.  Use @code{org-latex-hyperref-template} to
11284 configure document metadata.  Use @code{org-latex-title-command} to configure
11285 typesetting of description as part of front matter.
11287 @item KEYWORDS
11288 @cindex #+KEYWORDS (Beamer)
11289 The keywords for defining the contents of the document.  Use multiple
11290 @code{#+KEYWORDS} lines if necessary.  By default, @samp{hyperref} inserts
11291 @code{#+KEYWORDS} as metadata.  Use @code{org-latex-hyperref-template} to
11292 configure document metadata.  Use @code{org-latex-title-command} to configure
11293 typesetting of keywords as part of front matter.
11295 @item SUBTITLE
11296 @cindex #+SUBTITLE (Beamer)
11297 @vindex org-beamer-subtitle-format
11298 Document's subtitle.  For typesetting, use @code{org-beamer-subtitle-format}
11299 string.  Use @code{org-latex-hyperref-template} to configure document
11300 metadata.  Use @code{org-latex-title-command} to configure typesetting of
11301 subtitle as part of front matter.
11302 @end table
11304 @node Sectioning Frames and Blocks in Beamer
11305 @subsection Sectioning, Frames and Blocks in Beamer
11307 Org transforms heading levels into Beamer's sectioning elements, frames and
11308 blocks.  Any Org tree with a not-too-deep-level nesting should in principle
11309 be exportable as a Beamer presentation.
11311 @itemize @minus
11312 @item
11313 @vindex org-beamer-frame-level
11314 Org headlines become Beamer frames when the heading level in Org is equal to
11315 @code{org-beamer-frame-level} or @code{H} value in an @code{OPTIONS} line
11316 (@pxref{Export settings}).
11318 @cindex property, BEAMER_ENV
11319 Org overrides headlines to frames conversion for the current tree of an Org
11320 file if it encounters the @code{BEAMER_ENV} property set to @code{frame} or
11321 @code{fullframe}.  Org ignores whatever @code{org-beamer-frame-level} happens
11322 to be for that headline level in the Org tree.  In Beamer terminology, a
11323 @code{fullframe} is a frame without its title.
11325 @item
11326 @vindex org-beamer-environments-default
11327 @vindex org-beamer-environments-extra
11328 Org exports a Beamer frame's objects as @code{block} environments.  Org can
11329 enforce wrapping in special block types when @code{BEAMER_ENV} property is
11330 set@footnote{If @code{BEAMER_ENV} is set, Org export adds
11331 @code{:B_environment:} tag to make it visible.  The tag serves as a visual
11332 aid and has no semantic relevance.}.  For valid values see
11333 @code{org-beamer-environments-default}.  To add more values, see
11334 @code{org-beamer-environments-extra}.
11336 @item
11337 @cindex property, BEAMER_REF
11338 If @code{BEAMER_ENV} is set to @code{appendix}, Org exports the entry as an
11339 appendix.  When set to @code{note}, Org exports the entry as a note within
11340 the frame or between frames, depending on the entry's heading level.  When
11341 set to @code{noteNH}, Org exports the entry as a note without its title.
11342 When set to @code{againframe}, Org exports the entry with @code{\againframe}
11343 command, which makes setting the @code{BEAMER_REF} property mandatory because
11344 @code{\againframe} needs frame to resume.
11346 When @code{ignoreheading} is set, Org export ignores the entry's headline but
11347 not its content.  This is useful for inserting content between frames.  It is
11348 also useful for properly closing a @code{column} environment.
11349 @end itemize
11351 @cindex property, BEAMER_ACT
11352 @cindex property, BEAMER_OPT
11353 When @code{BEAMER_ACT} is set for a headline, Org export translates that
11354 headline as an overlay or action specification.  When enclosed in square
11355 brackets, Org export makes the overlay specification a default.  Use
11356 @code{BEAMER_OPT} to set any options applicable to the current Beamer frame
11357 or block.  The Beamer export back-end wraps with appropriate angular or
11358 square brackets.  It also adds the @code{fragile} option for any code that may
11359 require a verbatim block.
11361 @cindex property, BEAMER_COL
11362 To create a column on the Beamer slide, use the @code{BEAMER_COL} property
11363 for its headline in the Org file.  Set the value of @code{BEAMER_COL} to a
11364 decimal number representing the fraction of the total text width.  Beamer
11365 export uses this value to set the column's width and fills the column with
11366 the contents of the Org entry.  If the Org entry has no specific environment
11367 defined, Beamer export ignores the heading.  If the Org entry has a defined
11368 environment, Beamer export uses the heading as title.  Behind the scenes,
11369 Beamer export automatically handles @LaTeX{} column separations for
11370 contiguous headlines.  To manually adjust them for any unique configurations
11371 needs, use the @code{BEAMER_ENV} property.
11373 @node Beamer specific syntax
11374 @subsection Beamer specific syntax
11375 Since Org's Beamer export back-end is an extension of the @LaTeX{} back-end,
11376 it recognizes other @LaTeX{} specific syntax---for example, @samp{#+LATEX:}
11377 or @samp{#+ATTR_LATEX:}.  @xref{@LaTeX{} export}, for details.
11379 Beamer export wraps the table of contents generated with @code{toc:t}
11380 @code{OPTION} keyword in a @code{frame} environment.  Beamer export does not
11381 wrap the table of contents generated with @code{TOC} keyword (@pxref{Table of
11382 contents}).  Use square brackets for specifying options.
11384 @example
11385 #+TOC: headlines [currentsection]
11386 @end example
11388 Insert Beamer-specific code using the following constructs:
11390 @cindex #+BEAMER
11391 @cindex #+BEGIN_EXPORT beamer
11392 @example
11393 #+BEAMER: \pause
11395 #+BEGIN_EXPORT beamer
11396 Only Beamer export back-end will export this line.
11397 #+END_BEAMER
11399 Text @@@@beamer:some code@@@@ within a paragraph.
11400 @end example
11402 Inline constructs, such as the last one above, are useful for adding overlay
11403 specifications to objects with @code{bold}, @code{item}, @code{link},
11404 @code{radio-target} and @code{target} types.  Enclose the value in angular
11405 brackets and place the specification at the beginning the object as shown in
11406 this example:
11408 @example
11409 A *@@@@beamer:<2->@@@@useful* feature
11410 @end example
11412 @cindex #+ATTR_BEAMER
11413 Beamer export recognizes the @code{ATTR_BEAMER} keyword with the following
11414 attributes from Beamer configurations: @code{:environment} for changing local
11415 Beamer environment, @code{:overlay} for specifying Beamer overlays in angular
11416 or square brackets, and @code{:options} for inserting optional arguments.
11418 @example
11419 #+ATTR_BEAMER: :environment nonindentlist
11420 - item 1, not indented
11421 - item 2, not indented
11422 - item 3, not indented
11423 @end example
11425 @example
11426 #+ATTR_BEAMER: :overlay <+->
11427 - item 1
11428 - item 2
11429 @end example
11431 @example
11432 #+ATTR_BEAMER: :options [Lagrange]
11433 Let $G$ be a finite group, and let $H$ be
11434 a subgroup of $G$.  Then the order of $H$ divides the order of $G$.
11435 @end example
11437 @node Editing support
11438 @subsection Editing support
11441 The @code{org-beamer-mode} is a special minor mode for faster editing of
11442 Beamer documents.
11444 @example
11445 #+STARTUP: beamer
11446 @end example
11448 @table @kbd
11449 @orgcmd{C-c C-b,org-beamer-select-environment}
11450 The @code{org-beamer-mode} provides this key for quicker selections in Beamer
11451 normal environments, and for selecting the @code{BEAMER_COL} property.
11452 @end table
11454 @node A Beamer example
11455 @subsection A Beamer example
11457 Here is an example of an Org document ready for Beamer export.
11459 @example
11460 #+TITLE: Example Presentation
11461 #+AUTHOR: Carsten Dominik
11462 #+OPTIONS: H:2 toc:t num:t
11463 #+LATEX_CLASS: beamer
11464 #+LATEX_CLASS_OPTIONS: [presentation]
11465 #+BEAMER_THEME: Madrid
11466 #+COLUMNS: %45ITEM %10BEAMER_ENV(Env) %10BEAMER_ACT(Act) %4BEAMER_COL(Col) %8BEAMER_OPT(Opt)
11468 * This is the first structural section
11470 ** Frame 1
11471 *** Thanks to Eric Fraga                                           :B_block:
11472     :PROPERTIES:
11473     :BEAMER_COL: 0.48
11474     :BEAMER_ENV: block
11475     :END:
11476     for the first viable Beamer setup in Org
11477 *** Thanks to everyone else                                        :B_block:
11478     :PROPERTIES:
11479     :BEAMER_COL: 0.48
11480     :BEAMER_ACT: <2->
11481     :BEAMER_ENV: block
11482     :END:
11483     for contributing to the discussion
11484 **** This will be formatted as a beamer note                       :B_note:
11485      :PROPERTIES:
11486      :BEAMER_env: note
11487      :END:
11488 ** Frame 2 (where we will not use columns)
11489 *** Request
11490     Please test this stuff!
11491 @end example
11493 @node HTML export
11494 @section HTML export
11495 @cindex HTML export
11497 Org mode contains an HTML exporter with extensive HTML formatting compatible
11498 with XHTML 1.0 strict standard.
11500 @menu
11501 * HTML Export commands::        Invoking HTML export
11502 * HTML Specific export settings::  Settings for HTML export
11503 * HTML doctypes::               Exporting various (X)HTML flavors
11504 * HTML preamble and postamble::  Inserting preamble and postamble
11505 * Quoting HTML tags::           Using direct HTML in Org files
11506 * Links in HTML export::        Interpreting and formatting links
11507 * Tables in HTML export::       Formatting and modifying tables
11508 * Images in HTML export::       Inserting figures with HTML output
11509 * Math formatting in HTML export::  Handling math equations
11510 * Text areas in HTML export::   Showing an alternate approach, an example
11511 * CSS support::                 Styling HTML output
11512 * JavaScript support::          Folding scripting in the web browser
11513 @end menu
11516 @node HTML Export commands
11517 @subsection HTML export commands
11519 @table @kbd
11520 @orgcmd{C-c C-e h h,org-html-export-to-html}
11521 Export as HTML file with a @file{.html} extension.  For @file{myfile.org},
11522 Org exports to @file{myfile.html}, overwriting without warning.  @kbd{C-c C-e
11523 h o} Exports to HTML and opens it in a web browser.
11525 @orgcmd{C-c C-e h H,org-html-export-as-html}
11526 Exports to a temporary buffer.  Does not create a file.
11527 @end table
11529 @node HTML Specific export settings
11530 @subsection HTML Specific export settings
11531 HTML export has a number of keywords, similar to the general options settings
11532 described in @ref{Export settings}.
11534 @table @samp
11535 @item DESCRIPTION
11536 @cindex #+DESCRIPTION (HTML)
11537 This is the document's description, which the HTML exporter inserts it as a
11538 HTML meta tag in the HTML file.  For long descriptions, use multiple
11539 @code{#+DESCRIPTION} lines.  The exporter takes care of wrapping the lines
11540 properly.
11542 @item HTML_DOCTYPE
11543 @cindex #+HTML_DOCTYPE
11544 @vindex org-html-doctype
11545 Specify the document type, for example: HTML5 (@code{org-html-doctype}).
11547 @item HTML_CONTAINER
11548 @cindex #+HTML_CONTAINER
11549 @vindex org-html-container-element
11550 Specify the HTML container, such as @samp{div}, for wrapping sections and
11551 elements (@code{org-html-container-element}).
11553 @item HTML_LINK_HOME
11554 @cindex #+HTML_LINK_HOME
11555 @vindex org-html-link-home
11556 The URL for home link (@code{org-html-link-home}).
11558 @item HTML_LINK_UP
11559 @cindex #+HTML_LINK_UP
11560 @vindex org-html-link-up
11561 The URL for the up link of exported HTML pages (@code{org-html-link-up}).
11563 @item HTML_MATHJAX
11564 @cindex #+HTML_MATHJAX
11565 @vindex org-html-mathjax-options
11566 Options for MathJax (@code{org-html-mathjax-options}).  MathJax is used to
11567 typeset @LaTeX{} math in HTML documents.  @xref{Math formatting in HTML
11568 export}, for an example.
11570 @item HTML_HEAD
11571 @cindex #+HTML_HEAD
11572 @vindex org-html-head
11573 Arbitrary lines for appending to the HTML document's head
11574 (@code{org-html-head}).
11576 @item HTML_HEAD_EXTRA
11577 @cindex #+HTML_HEAD_EXTRA
11578 @vindex org-html-head-extra
11579 More arbitrary lines for appending to the HTML document's head
11580 (@code{org-html-head-extra}).
11582 @item KEYWORDS
11583 @cindex #+KEYWORDS (HTML)
11584 Keywords to describe the document's content.  HTML exporter inserts these
11585 keywords as HTML meta tags.  For long keywords, use multiple
11586 @code{#+KEYWORDS} lines.
11588 @item LATEX_HEADER
11589 @cindex #+LATEX_HEADER (HTML)
11590 Arbitrary lines for appending to the preamble; HTML exporter appends when
11591 transcoding @LaTeX{} fragments to images (@pxref{Math formatting in HTML
11592 export}).
11594 @item SUBTITLE
11595 @cindex #+SUBTITLE (HTML)
11596 The document's subtitle.  HTML exporter formats subtitle if document type is
11597 @samp{HTML5} and the CSS has a @samp{subtitle} class.
11598 @end table
11600 Some of these keywords are explained in more detail in the following sections
11601 of the manual.
11603 @node HTML doctypes
11604 @subsection HTML doctypes
11606 Org can export to various (X)HTML flavors.
11608 @vindex org-html-doctype
11609 @vindex org-html-doctype-alist
11610 Set the @code{org-html-doctype} variable for different (X)HTML variants.
11611 Depending on the variant, the HTML exporter adjusts the syntax of HTML
11612 conversion accordingly.  Org includes the following ready-made variants:
11614 @itemize
11615 @item
11616 ``html4-strict''
11617 @item
11618 ``html4-transitional''
11619 @item
11620 ``html4-frameset''
11621 @item
11622 ``xhtml-strict''
11623 @item
11624 ``xhtml-transitional''
11625 @item
11626 ``xhtml-frameset''
11627 @item
11628 ``xhtml-11''
11629 @item
11630 ``html5''
11631 @item
11632 ``xhtml5''
11633 @end itemize
11635 @noindent See the variable @code{org-html-doctype-alist} for details.
11636 The default is ``xhtml-strict''.
11638 @vindex org-html-html5-fancy
11639 @cindex HTML5, export new elements
11640 Org's HTML exporter does not by default enable new block elements introduced
11641 with the HTML5 standard.  To enable them, set @code{org-html-html5-fancy} to
11642 non-@code{nil}.  Or use an @code{OPTIONS} line in the file to set
11643 @code{html5-fancy}.  HTML5 documents can now have arbitrary @code{#+BEGIN}
11644 and @code{#+END} blocks.  For example:
11646 @example
11647 #+BEGIN_aside
11648 Lorem ipsum
11649 #+END_aside
11650 @end example
11652 Will export to:
11654 @example
11655 <aside>
11656   <p>Lorem ipsum</p>
11657 </aside>
11658 @end example
11660 While this:
11662 @example
11663 #+ATTR_HTML: :controls controls :width 350
11664 #+BEGIN_video
11665 #+HTML: <source src="movie.mp4" type="video/mp4">
11666 #+HTML: <source src="movie.ogg" type="video/ogg">
11667 Your browser does not support the video tag.
11668 #+END_video
11669 @end example
11671 Exports to:
11673 @example
11674 <video controls="controls" width="350">
11675   <source src="movie.mp4" type="video/mp4">
11676   <source src="movie.ogg" type="video/ogg">
11677   <p>Your browser does not support the video tag.</p>
11678 </video>
11679 @end example
11681 @vindex org-html-html5-elements
11682 When special blocks do not have a corresponding HTML5 element, the HTML
11683 exporter reverts to standard translation (see
11684 @code{org-html-html5-elements}).  For example, @code{#+BEGIN_lederhosen}
11685 exports to @samp{<div class="lederhosen">}.
11687 Special blocks cannot have headlines.  For the HTML exporter to wrap the
11688 headline and its contents in @samp{<section>} or @samp{<article>} tags, set
11689 the @code{HTML_CONTAINER} property for the headline.
11691 @node HTML preamble and postamble
11692 @subsection HTML preamble and postamble
11693 @vindex org-html-preamble
11694 @vindex org-html-postamble
11695 @vindex org-html-preamble-format
11696 @vindex org-html-postamble-format
11697 @vindex org-html-validation-link
11698 @vindex org-export-creator-string
11699 @vindex org-export-time-stamp-file
11701 The HTML exporter has delineations for preamble and postamble.  The default
11702 value for @code{org-html-preamble} is @code{t}, which makes the HTML exporter
11703 insert the preamble.  See the variable @code{org-html-preamble-format} for
11704 the format string.
11706 Set @code{org-html-preamble} to a string to override the default format
11707 string.  If the string is a function, the HTML exporter expects the function
11708 to return a string upon execution.  The HTML exporter inserts this string in
11709 the preamble.  The HTML exporter will not insert a preamble if
11710 @code{org-html-preamble} is set @code{nil}.
11712 The default value for @code{org-html-postamble} is @code{auto}, which makes
11713 the HTML exporter build a postamble from looking up author's name, email
11714 address, creator's name, and date.  Set @code{org-html-postamble} to @code{t}
11715 to insert the postamble in the format specified in the
11716 @code{org-html-postamble-format} variable.  The HTML exporter will not insert
11717 a postamble if @code{org-html-postamble} is set to @code{nil}.
11719 @node Quoting HTML tags
11720 @subsection Quoting HTML tags
11722 The HTML export back-end transforms @samp{<} and @samp{>} to @samp{&lt;} and
11723 @samp{&gt;}.  To include raw HTML code in the Org file so the HTML export
11724 back-end can insert that HTML code in the output, use this inline syntax:
11725 @samp{@@@@html:}.  For example: @samp{@@@@html:<b>@@@@bold
11726 text@@@@html:</b>@@@@}.  For larger raw HTML code blocks, use these HTML
11727 export code blocks:
11729 @cindex #+HTML
11730 @cindex #+BEGIN_EXPORT html
11731 @example
11732 #+HTML: Literal HTML code for export
11733 @end example
11735 @noindent or
11736 @cindex #+BEGIN_EXPORT html
11738 @example
11739 #+BEGIN_EXPORT html
11740 All lines between these markers are exported literally
11741 #+END_EXPORT
11742 @end example
11745 @node Links in HTML export
11746 @subsection Links in HTML export
11748 @cindex links, in HTML export
11749 @cindex internal links, in HTML export
11750 @cindex external links, in HTML export
11751 @vindex org-html-link-org-files-as-html
11752 The HTML export back-end transforms Org's internal links (@pxref{Internal
11753 links}) to equivalent HTML links in the output.  The back-end similarly
11754 handles Org's automatic links created by radio targets (@pxref{Radio
11755 targets}) similarly.  For Org links to external files, the back-end
11756 transforms the links to @emph{relative} paths.
11758 For Org links to other @file{.org} files, the back-end automatically changes
11759 the file extension to @file{.html} and makes file paths relative.  If the
11760 @file{.org} files have an equivalent @file{.html} version at the same
11761 location, then the converted links should work without any further manual
11762 intervention.  However, to disable this automatic path translation, set
11763 @code{org-html-link-org-files-as-html} to @code{nil}.  When disabled, the
11764 HTML export back-end substitutes the @samp{id:}-based links in the HTML
11765 output.  For more about linking files when publishing to a directory,
11766 @pxref{Publishing links}.
11768 Org files can also have special directives to the HTML export back-end.  For
11769 example, by using @code{#+ATTR_HTML} lines to specify new format attributes
11770 to @code{<a>} or @code{<img>} tags.  This example shows changing the link's
11771 @code{title} and @code{style}:
11773 @cindex #+ATTR_HTML
11774 @example
11775 #+ATTR_HTML: :title The Org mode homepage :style color:red;
11776 [[http://orgmode.org]]
11777 @end example
11779 @node Tables in HTML export
11780 @subsection Tables in HTML export
11781 @cindex tables, in HTML
11782 @vindex org-html-table-default-attributes
11784 The HTML export back-end uses @code{org-html-table-default-attributes} when
11785 exporting Org tables to HTML.  By default, the exporter does not draw frames
11786 and cell borders.  To change for this for a table, use the following lines
11787 before the table in the Org file:
11789 @cindex #+CAPTION
11790 @cindex #+ATTR_HTML
11791 @example
11792 #+CAPTION: This is a table with lines around and between cells
11793 #+ATTR_HTML: :border 2 :rules all :frame border
11794 @end example
11796 The HTML export back-end preserves column groupings in Org tables
11797 (@pxref{Column groups}) when exporting to HTML.
11799 Additional options for customizing tables for  HTML export.
11801 @table @code
11802 @vindex org-html-table-align-individual-fields
11803 @item org-html-table-align-individual-fields
11804 Non-@code{nil} attaches style attributes for alignment to each table field.
11806 @vindex org-html-table-caption-above
11807 @item org-html-table-caption-above
11808 Non-@code{nil} places caption string at the beginning of the table.
11810 @vindex org-html-table-data-tags
11811 @item org-html-table-data-tags
11812 Opening and ending tags for table data fields.
11814 @vindex org-html-table-default-attributes
11815 @item org-html-table-default-attributes
11816 Default attributes and values for table tags.
11818 @vindex org-html-table-header-tags
11819 @item org-html-table-header-tags
11820 Opening and ending tags for table's header fields.
11822 @vindex org-html-table-row-tags
11823 @item org-html-table-row-tags
11824 Opening and ending tags for table rows.
11826 @vindex org-html-table-use-header-tags-for-first-column
11827 @item org-html-table-use-header-tags-for-first-column
11828 Non-@code{nil} formats column one in tables with header tags.
11829 @end table
11831 @node Images in HTML export
11832 @subsection Images in HTML export
11834 @cindex images, inline in HTML
11835 @cindex inlining images in HTML
11836 @vindex org-html-inline-images
11838 The HTML export back-end has features to convert Org image links to HTML
11839 inline images and HTML clickable image links.
11841 When the link in the Org file has no description, the HTML export back-end by
11842 default in-lines that image.  For example: @samp{[[file:myimg.jpg]]} is
11843 in-lined, while @samp{[[file:myimg.jpg][the image]]} links to the text,
11844 @samp{the image}.
11846 For more details, see the variable @code{org-html-inline-images}.
11848 On the other hand, if the description part of the Org link is itself another
11849 link, such as @code{file:} or @code{http:} URL pointing to an image, the HTML
11850 export back-end in-lines this image and links to the main image.  This Org
11851 syntax enables the back-end to link low-resolution thumbnail to the
11852 high-resolution version of the image, as shown in this example:
11854 @example
11855 [[file:highres.jpg][file:thumb.jpg]]
11856 @end example
11858 To change attributes of in-lined images, use @code{#+ATTR_HTML} lines in the
11859 Org file.  This example shows realignment to right, and adds @code{alt} and
11860 @code{title} attributes in support of text viewers and modern web accessibility
11861 standards.
11863 @cindex #+CAPTION
11864 @cindex #+ATTR_HTML
11865 @example
11866 #+CAPTION: A black cat stalking a spider
11867 #+ATTR_HTML: :alt cat/spider image :title Action! :align right
11868 [[./img/a.jpg]]
11869 @end example
11871 @noindent
11872 The HTML export back-end copies the @code{http} links from the Org file as
11875 @node Math formatting in HTML export
11876 @subsection Math formatting in HTML export
11877 @cindex MathJax
11878 @cindex dvipng
11879 @cindex dvisvgm
11880 @cindex imagemagick
11882 @LaTeX{} math snippets (@pxref{@LaTeX{} fragments}) can be displayed in two
11883 different ways on HTML pages.  The default is to use
11884 @uref{http://www.mathjax.org, MathJax} which should work out of the box with
11885 Org@footnote{By default Org loads MathJax from @uref{https://cdnjs.com, cdnjs.com} as
11886 recommended by @uref{http://www.mathjax.org, MathJax}.}.  Some MathJax display
11887 options can be configured via @code{org-html-mathjax-options}, or in the
11888 buffer.  For example, with the following settings,
11889 @smallexample
11890 #+HTML_MATHJAX: align: left indent: 5em tagside: left font: Neo-Euler
11891 @end smallexample
11892 equation labels will be displayed on the left margin and equations will be
11893 five ems from the left margin.
11895 @noindent See the docstring of
11896 @code{org-html-mathjax-options} for all supported variables.  The MathJax
11897 template can be configure via @code{org-html-mathjax-template}.
11899 If you prefer, you can also request that @LaTeX{} fragments are processed
11900 into small images that will be inserted into the browser page.  Before the
11901 availability of MathJax, this was the default method for Org files.  This
11902 method requires that the @file{dvipng} program, @file{dvisvgm} or
11903 @file{imagemagick} suite is available on your system.  You can still get
11904 this processing with
11906 @example
11907 #+OPTIONS: tex:dvipng
11908 @end example
11910 @example
11911 #+OPTIONS: tex:dvisvgm
11912 @end example
11916 @example
11917 #+OPTIONS: tex:imagemagick
11918 @end example
11920 @node Text areas in HTML export
11921 @subsection Text areas in HTML export
11923 @cindex text areas, in HTML
11924 Before Org mode's Babel, one popular approach to publishing code in HTML was
11925 by using @code{:textarea}.  The advantage of this approach was that copying
11926 and pasting was built into browsers with simple JavaScript commands.  Even
11927 editing before pasting was made simple.
11929 The HTML export back-end can create such text areas.  It requires an
11930 @code{#+ATTR_HTML:} line as shown in the example below with the
11931 @code{:textarea} option.  This must be followed by either an
11932 @code{example} or a @code{src} code block.  Other Org block types will not
11933 honor the @code{:textarea} option.
11935 By default, the HTML export back-end creates a text area 80 characters wide
11936 and height just enough to fit the content.  Override these defaults with
11937 @code{:width} and @code{:height} options on the @code{#+ATTR_HTML:} line.
11939 @example
11940 #+ATTR_HTML: :textarea t :width 40
11941 #+BEGIN_EXAMPLE
11942   (defun org-xor (a b)
11943      "Exclusive or."
11944      (if a (not b) b))
11945 #+END_EXAMPLE
11946 @end example
11949 @node CSS support
11950 @subsection CSS support
11951 @cindex CSS, for HTML export
11952 @cindex HTML export, CSS
11954 @vindex org-html-todo-kwd-class-prefix
11955 @vindex org-html-tag-class-prefix
11956 You can modify the CSS style definitions for the exported file.  The HTML
11957 exporter assigns the following special CSS classes@footnote{If the classes on
11958 TODO keywords and tags lead to conflicts, use the variables
11959 @code{org-html-todo-kwd-class-prefix} and @code{org-html-tag-class-prefix} to
11960 make them unique.} to appropriate parts of the document---your style
11961 specifications may change these, in addition to any of the standard classes
11962 like for headlines, tables, etc.
11963 @example
11964 p.author            @r{author information, including email}
11965 p.date              @r{publishing date}
11966 p.creator           @r{creator info, about org mode version}
11967 .title              @r{document title}
11968 .subtitle           @r{document subtitle}
11969 .todo               @r{TODO keywords, all not-done states}
11970 .done               @r{the DONE keywords, all states that count as done}
11971 .WAITING            @r{each TODO keyword also uses a class named after itself}
11972 .timestamp          @r{timestamp}
11973 .timestamp-kwd      @r{keyword associated with a timestamp, like SCHEDULED}
11974 .timestamp-wrapper  @r{span around keyword plus timestamp}
11975 .tag                @r{tag in a headline}
11976 ._HOME              @r{each tag uses itself as a class, "@@" replaced by "_"}
11977 .target             @r{target for links}
11978 .linenr             @r{the line number in a code example}
11979 .code-highlighted   @r{for highlighting referenced code lines}
11980 div.outline-N       @r{div for outline level N (headline plus text))}
11981 div.outline-text-N  @r{extra div for text at outline level N}
11982 .section-number-N   @r{section number in headlines, different for each level}
11983 .figure-number      @r{label like "Figure 1:"}
11984 .table-number       @r{label like "Table 1:"}
11985 .listing-number     @r{label like "Listing 1:"}
11986 div.figure          @r{how to format an in-lined image}
11987 pre.src             @r{formatted source code}
11988 pre.example         @r{normal example}
11989 p.verse             @r{verse paragraph}
11990 div.footnotes       @r{footnote section headline}
11991 p.footnote          @r{footnote definition paragraph, containing a footnote}
11992 .footref            @r{a footnote reference number (always a <sup>)}
11993 .footnum            @r{footnote number in footnote definition (always <sup>)}
11994 .org-svg            @r{default class for a linked @file{.svg} image}
11995 @end example
11997 @vindex org-html-style-default
11998 @vindex org-html-head-include-default-style
11999 @vindex org-html-head
12000 @vindex org-html-head-extra
12001 @cindex #+HTML_INCLUDE_STYLE
12002 The HTML export back-end includes a compact default style in each exported
12003 HTML file.  To override the default style with another style, use these
12004 keywords in the Org file.  They will replace the global defaults the HTML
12005 exporter uses.
12007 @cindex #+HTML_HEAD
12008 @cindex #+HTML_HEAD_EXTRA
12009 @example
12010 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="style1.css" />
12011 #+HTML_HEAD_EXTRA: <link rel="alternate stylesheet" type="text/css" href="style2.css" />
12012 @end example
12014 To just turn off the default style, customize
12015 @code{org-html-head-include-default-style} variable, or use this option line in
12016 the Org file.
12018 @example
12019 #+OPTIONS: html-style:nil
12020 @end example
12022 @noindent
12023 For longer style definitions, either use several @code{#+HTML_HEAD} and
12024 @code{#+HTML_HEAD_EXTRA} lines, or use @code{<style>} @code{</style>} blocks
12025 around them.  Both of these approaches can avoid referring to an external
12026 file.
12028 In order to add styles to a sub-tree, use the @code{:HTML_CONTAINER_CLASS:}
12029 property to assign a class to the tree.  In order to specify CSS styles for a
12030 particular headline, you can use the id specified in a @code{:CUSTOM_ID:}
12031 property.
12033 Never change the @code{org-html-style-default} constant.  Instead use other
12034 simpler ways of customizing as described above.
12037 @c FIXME: More about header and footer styles
12038 @c FIXME: Talk about links and targets.
12040 @node JavaScript support
12041 @subsection JavaScript supported display of web pages
12043 @cindex Rose, Sebastian
12044 Sebastian Rose has written a JavaScript program especially designed to
12045 enhance the web viewing experience of HTML files created with Org.  This
12046 program enhances large files in two different ways of viewing.  One is an
12047 @emph{Info}-like mode where each section is displayed separately and
12048 navigation can be done with the @kbd{n} and @kbd{p} keys (and some other keys
12049 as well, press @kbd{?} for an overview of the available keys).  The second
12050 one has a @emph{folding} view, much like Org provides inside Emacs.  The
12051 script is available at @url{http://orgmode.org/org-info.js} and the
12052 documentation at @url{http://orgmode.org/worg/code/org-info-js/}.  The script
12053 is hosted on @url{http://orgmode.org}, but for reliability, prefer installing
12054 it on your own web server.
12056 To use this program, just add this line to the Org file:
12058 @cindex #+INFOJS_OPT
12059 @example
12060 #+INFOJS_OPT: view:info toc:nil
12061 @end example
12063 @noindent
12064 The HTML header now has the code needed to automatically invoke the script.
12065 For setting options, use the syntax from the above line for options described
12066 below:
12068 @example
12069 path:    @r{The path to the script.  The default grabs the script from}
12070          @r{@url{http://orgmode.org/org-info.js}, but you might want to have}
12071          @r{a local copy and use a path like @samp{../scripts/org-info.js}.}
12072 view:    @r{Initial view when the website is first shown.  Possible values are:}
12073          info      @r{Info-like interface with one section per page.}
12074          overview  @r{Folding interface, initially showing only top-level.}
12075          content   @r{Folding interface, starting with all headlines visible.}
12076          showall   @r{Folding interface, all headlines and text visible.}
12077 sdepth:  @r{Maximum headline level that will still become an independent}
12078          @r{section for info and folding modes.  The default is taken from}
12079          @r{@code{org-export-headline-levels} (= the @code{H} switch in @code{#+OPTIONS}).}
12080          @r{If this is smaller than in @code{org-export-headline-levels}, each}
12081          @r{info/folding section can still contain child headlines.}
12082 toc:     @r{Should the table of contents @emph{initially} be visible?}
12083          @r{Even when @code{nil}, you can always get to the "toc" with @kbd{i}.}
12084 tdepth:  @r{The depth of the table of contents.  The defaults are taken from}
12085          @r{the variables @code{org-export-headline-levels} and @code{org-export-with-toc}.}
12086 ftoc:    @r{Does the CSS of the page specify a fixed position for the "toc"?}
12087          @r{If yes, the toc will never be displayed as a section.}
12088 ltoc:    @r{Should there be short contents (children) in each section?}
12089          @r{Make this @code{above} if the section should be above initial text.}
12090 mouse:   @r{Headings are highlighted when the mouse is over them.  Should be}
12091          @r{@samp{underline} (default) or a background color like @samp{#cccccc}.}
12092 buttons: @r{Should view-toggle buttons be everywhere?  When @code{nil} (the}
12093          @r{default), only one such button will be present.}
12094 @end example
12095 @noindent
12096 @vindex org-html-infojs-options
12097 @vindex org-html-use-infojs
12098 You can choose default values for these options by customizing the variable
12099 @code{org-html-infojs-options}.  If you want the script to always apply to
12100 your pages, configure the variable @code{org-html-use-infojs}.
12102 @node @LaTeX{} export
12103 @section @LaTeX{} export
12104 @cindex @LaTeX{} export
12105 @cindex PDF export
12107 The @LaTeX{} export back-end can handle complex documents, incorporate
12108 standard or custom @LaTeX{} document classes, generate documents using
12109 alternate @LaTeX{} engines, and produce fully linked PDF files with indexes,
12110 bibliographies, and tables of contents, destined for interactive online
12111 viewing or high-quality print publication.
12113 While the details are covered in-depth in this section, here are some quick
12114 references to variables for the impatient: for engines, see
12115 @code{org-latex-compiler}; for build sequences, see
12116 @code{org-latex-pdf-process}; for packages, see
12117 @code{org-latex-default-packages-alist} and @code{org-latex-packages-alist}.
12119 An important note about the @LaTeX{} export back-end: it is sensitive to
12120 blank lines in the Org document.  That's because @LaTeX{} itself depends on
12121 blank lines to tell apart syntactical elements, such as paragraphs.
12123 @menu
12124 * @LaTeX{} export commands::    For producing @LaTeX{} and PDF documents.
12125 * @LaTeX{} specific export settings::  Unique to this @LaTeX{} back-end.
12126 * @LaTeX{} header and sectioning::  For file structure.
12127 * Quoting @LaTeX{} code::       Directly in the Org document.
12128 * Tables in @LaTeX{} export::   Attributes specific to tables.
12129 * Images in @LaTeX{} export::   Attributes specific to images.
12130 * Plain lists in @LaTeX{} export::  Attributes specific to lists.
12131 * Source blocks in @LaTeX{} export::  Attributes specific to source code blocks.
12132 * Example blocks in @LaTeX{} export::  Attributes specific to example blocks.
12133 * Special blocks in @LaTeX{} export::  Attributes specific to special blocks.
12134 * Horizontal rules in @LaTeX{} export::  Attributes specific to horizontal rules.
12135 @end menu
12137 @node @LaTeX{} export commands
12138 @subsection @LaTeX{} export commands
12140 @table @kbd
12141 @orgcmd{C-c C-e l l,org-latex-export-to-latex}
12142 Export as @LaTeX{} file with a @file{.tex} extension.  For @file{myfile.org},
12143 Org exports to @file{myfile.tex}, overwriting without warning.  @kbd{C-c C-e
12144 l l} Exports to @LaTeX{} file.
12146 @orgcmd{C-c C-e l L,org-latex-export-as-latex}
12147 Export to a temporary buffer.  Do not create a file.
12148 @orgcmd{C-c C-e l p,org-latex-export-to-pdf}
12149 Export as @LaTeX{} file and convert it to PDF file.
12150 @item C-c C-e l o
12151 Export as @LaTeX{} file and convert it to PDF, then open the PDF using the default viewer.
12152 @end table
12154 @vindex org-latex-compiler
12155 @vindex org-latex-bibtex-compiler
12156 @vindex org-latex-default-packages-alist
12157 The @LaTeX{} export back-end can use any of these @LaTeX{} engines:
12158 @samp{pdflatex}, @samp{xelatex}, and @samp{lualatex}.  These engines compile
12159 @LaTeX{} files with different compilers, packages, and output options.  The
12160 @LaTeX{} export back-end finds the compiler version to use from
12161 @code{org-latex-compiler} variable or the @code{#+LATEX_COMPILER} keyword in
12162 the Org file.  See the docstring for the
12163 @code{org-latex-default-packages-alist} for loading packages with certain
12164 compilers.  Also see @code{org-latex-bibtex-compiler} to set the bibliography
12165 compiler@footnote{This does not allow setting different bibliography
12166 compilers for different files.  However, ``smart'' @LaTeX{} compilation
12167 systems, such as @samp{latexmk}, can select the correct bibliography
12168 compiler.}.
12170 @node @LaTeX{} specific export settings
12171 @subsection @LaTeX{} specific export settings
12173 The @LaTeX{} export back-end has several additional keywords for customizing
12174 @LaTeX{} output.  Setting these keywords works similar to the general options
12175 (@pxref{Export settings}).
12177 @table @samp
12178 @item DESCRIPTION
12179 @cindex #+DESCRIPTION (@LaTeX{})
12180 The document's description.  The description along with author name,
12181 keywords, and related file metadata are inserted in the output file by the
12182 @samp{hyperref} package.  See @code{org-latex-hyperref-template} for
12183 customizing metadata items.  See @code{org-latex-title-command} for
12184 typesetting description into the document's front matter.  Use multiple
12185 @code{#+DESCRIPTION} lines for long descriptions.
12187 @item LATEX_CLASS
12188 @cindex #+LATEX_CLASS
12189 @vindex org-latex-default-class
12190 @vindex org-latex-classes
12191 This is @LaTeX{} document class, such as @code{article}, @code{report},
12192 @code{book}, and so on, which contain predefined preamble and headline level
12193 mapping that the @LaTeX{} export back-end needs.  The back-end reads the
12194 default class name from the @code{org-latex-default-class} variable.  Org has
12195 @code{article} as the default class.  A valid default class must be an
12196 element of @code{org-latex-classes}.
12198 @item LATEX_CLASS_OPTIONS
12199 @cindex #+LATEX_CLASS_OPTIONS
12200 Options the @LaTeX{} export back-end uses when calling the @LaTeX{} document
12201 class.
12203 @item LATEX_COMPILER
12204 @cindex #+LATEX_COMPILER
12205 @vindex org-latex-compiler
12206 The compiler, such as @samp{pdflatex}, @samp{xelatex}, @samp{lualatex}, for
12207 producing the PDF (@code{org-latex-compiler}).
12209 @item LATEX_HEADER
12210 @cindex #+LATEX_HEADER
12211 @vindex org-latex-classes
12212 Arbitrary lines to add to the document's preamble, before the @samp{hyperref}
12213 settings.  See @code{org-latex-classes} for adjusting the structure and order
12214 of the @LaTeX{} headers.
12216 @item LATEX_HEADER_EXTRA
12217 @cindex #+LATEX_HEADER_EXTRA
12218 @vindex org-latex-classes
12219 Arbitrary lines to add to the document's preamble, before the @samp{hyperref}
12220 settings.  See @code{org-latex-classes} for adjusting the structure and order
12221 of the @LaTeX{} headers.
12223 @item KEYWORDS
12224 @cindex #+KEYWORDS (@LaTeX{})
12225 The keywords for the document.  The description along with author name,
12226 keywords, and related file metadata are inserted in the output file by the
12227 @samp{hyperref} package.  See @code{org-latex-hyperref-template} for
12228 customizing metadata items.  See @code{org-latex-title-command} for
12229 typesetting description into the document's front matter.  Use multiple
12230 @code{#+KEYWORDS} lines if necessary.
12232 @item SUBTITLE
12233 @cindex #+SUBTITLE (@LaTeX{})
12234 @vindex org-latex-subtitle-separate
12235 @vindex org-latex-subtitle-format
12236 The document's subtitle.  It is typeset as per
12237 @code{org-latex-subtitle-format}.  If @code{org-latex-subtitle-separate} is
12238 non-@code{nil}, it is typed as part of the @samp{\title}-macro.  See
12239 @code{org-latex-hyperref-template} for customizing metadata items.  See
12240 @code{org-latex-title-command} for typesetting description into the
12241 document's front matter.
12242 @end table
12244 The following sections have further details.
12246 @node @LaTeX{} header and sectioning
12247 @subsection @LaTeX{} header and sectioning structure
12248 @cindex @LaTeX{} class
12249 @cindex @LaTeX{} sectioning structure
12250 @cindex @LaTeX{} header
12251 @cindex header, for @LaTeX{} files
12252 @cindex sectioning structure, for @LaTeX{} export
12254 The @LaTeX{} export back-end converts the first three of Org's outline levels
12255 into @LaTeX{} headlines.  The remaining Org levels are exported as
12256 @code{itemize} or @code{enumerate} lists.  To change this globally for the
12257 cut-off point between levels and lists, (@pxref{Export settings}).
12259 By default, the @LaTeX{} export back-end uses the @code{article} class.
12261 @vindex org-latex-default-class
12262 @vindex org-latex-classes
12263 @vindex org-latex-default-packages-alist
12264 @vindex org-latex-packages-alist
12265 To change the default class globally, edit @code{org-latex-default-class}.
12266 To change the default class locally in an Org file, add option lines
12267 @code{#+LATEX_CLASS: myclass}.  To change the default class for just a part
12268 of the Org file, set a sub-tree property, @code{EXPORT_LATEX_CLASS}.  The
12269 class name entered here must be valid member of @code{org-latex-classes}.
12270 This variable defines a header template for each class into which the
12271 exporter splices the values of @code{org-latex-default-packages-alist} and
12272 @code{org-latex-packages-alist}.  Use the same three variables to define
12273 custom sectioning or custom classes.
12275 @cindex #+LATEX_CLASS
12276 @cindex #+LATEX_CLASS_OPTIONS
12277 @cindex property, EXPORT_LATEX_CLASS
12278 @cindex property, EXPORT_LATEX_CLASS_OPTIONS
12279 The @LaTeX{} export back-end sends the @code{LATEX_CLASS_OPTIONS} keyword and
12280 @code{EXPORT_LATEX_CLASS_OPTIONS} property as options to the @LaTeX{}
12281 @code{\documentclass} macro.  The options and the syntax for specifying them,
12282 including enclosing them in square brackets, follow @LaTeX{} conventions.
12284 @example
12285 #+LATEX_CLASS_OPTIONS: [a4paper,11pt,twoside,twocolumn]
12286 @end example
12288 @cindex #+LATEX_HEADER
12289 @cindex #+LATEX_HEADER_EXTRA
12290 The @LaTeX{} export back-end appends values from @code{LATEX_HEADER} and
12291 @code{LATEX_HEADER_EXTRA} keywords to the @LaTeX{} header.  The docstring for
12292 @code{org-latex-classes} explains in more detail.  Also note that @LaTeX{}
12293 export back-end does not append @code{LATEX_HEADER_EXTRA} to the header when
12294 previewing @LaTeX{} snippets (@pxref{Previewing @LaTeX{} fragments}).
12296 A sample Org file with the above headers:
12298 @example
12299 #+LATEX_CLASS: article
12300 #+LATEX_CLASS_OPTIONS: [a4paper]
12301 #+LATEX_HEADER: \usepackage@{xyz@}
12303 * Headline 1
12304   some text
12305 * Headline 2
12306   some more text
12307 @end example
12309 @node Quoting @LaTeX{} code
12310 @subsection Quoting @LaTeX{} code
12312 The @LaTeX{} export back-end can insert any arbitrary @LaTeX{} code,
12313 @pxref{Embedded @LaTeX{}}.  There are three ways to embed such code in the
12314 Org file and they all use different quoting syntax.
12316 Inserting in-line quoted with @ symbols:
12317 @cindex inline, in @LaTeX{} export
12318 @example
12319 Code embedded in-line @@@@latex:any arbitrary LaTeX code@@@@ in a paragraph.
12320 @end example
12322 Inserting as one or more keyword lines in the Org file:
12323 @cindex #+LATEX
12324 @example
12325 #+LATEX: any arbitrary LaTeX code
12326 @end example
12328 Inserting as an export block in the Org file, where the back-end exports any
12329 code between begin and end markers:
12330 @cindex #+BEGIN_EXPORT latex
12331 @example
12332 #+BEGIN_EXPORT latex
12333 any arbitrary LaTeX code
12334 #+END_EXPORT
12335 @end example
12337 @node Tables in @LaTeX{} export
12338 @subsection Tables in @LaTeX{} export
12339 @cindex tables, in @LaTeX{} export
12340 @cindex #+ATTR_LATEX, in tables
12342 The @LaTeX{} export back-end can pass several @LaTeX{} attributes for table
12343 contents and layout.  Besides specifying label and caption (@pxref{Images and
12344 tables}), the other valid @LaTeX{} attributes include:
12346 @table @code
12347 @item :mode
12348 @vindex org-latex-default-table-mode
12349 The @LaTeX{} export back-end wraps the table differently depending on the
12350 mode for accurate rendering of math symbols.  Mode is either @code{table},
12351 @code{math}, @code{inline-math} or @code{verbatim}.  For @code{math} or
12352 @code{inline-math} mode, @LaTeX{} export back-end wraps the table in a math
12353 environment, but every cell in it is exported as-is.  The @LaTeX{} export
12354 back-end determines the default mode from
12355 @code{org-latex-default-table-mode}.  For , The @LaTeX{} export back-end
12356 merges contiguous tables in the same mode into a single environment.
12357 @item :environment
12358 @vindex org-latex-default-table-environment
12359 Set the default @LaTeX{} table environment for the @LaTeX{} export back-end
12360 to use when exporting Org tables.  Common @LaTeX{} table environments are
12361 provided by these packages: @code{tabularx}, @code{longtable}, @code{array},
12362 @code{tabu}, and @code{bmatrix}.  For packages, such as @code{tabularx} and
12363 @code{tabu}, or any newer replacements, include them in the
12364 @code{org-latex-packages-alist} variable so the @LaTeX{} export back-end can
12365 insert the appropriate load package headers in the converted @LaTeX{} file.
12366 Look in the docstring for the @code{org-latex-packages-alist} variable for
12367 configuring these packages for @LaTeX{} snippet previews, if any.
12368 @item :caption
12369 Use @code{#+CAPTION} keyword to set a simple caption for a table
12370 (@pxref{Images and tables}).  For custom captions, use @code{:caption}
12371 attribute, which accepts raw @LaTeX{} code.  @code{:caption} value overrides
12372 @code{#+CAPTION} value.
12373 @item :float
12374 @itemx :placement
12375 The table environments by default are not floats in @LaTeX{}.  To make them
12376 floating objects use @code{:float} with one of the following options:
12377 @code{sideways}, @code{multicolumn}, @code{t}, and @code{nil}.  Note that
12378 @code{sidewaystable} has been deprecated since Org 8.3.  @LaTeX{} floats can
12379 also have additional layout @code{:placement} attributes.  These are the
12380 usual @code{[h t b p ! H]} permissions specified in square brackets.  Note
12381 that for @code{:float sideways} tables, the @LaTeX{} export back-end ignores
12382 @code{:placement} attributes.
12383 @item :align
12384 @itemx :font
12385 @itemx :width
12386 The @LaTeX{} export back-end uses these attributes for regular tables to set
12387 their alignments, fonts, and widths.
12388 @item :spread
12389 When @code{:spread} is non-@code{nil}, the @LaTeX{} export back-end spreads
12390 or shrinks the table by the @code{:width} for @code{tabu} and @code{longtabu}
12391 environments.  @code{:spread} has no effect if @code{:width} is not set.
12392 @item :booktabs
12393 @itemx :center
12394 @itemx :rmlines
12395 @vindex org-latex-tables-booktabs
12396 @vindex org-latex-tables-centered
12397 All three commands are toggles.  @code{:booktabs} brings in modern
12398 typesetting enhancements to regular tables.  The @code{booktabs} package has
12399 to be loaded through @code{org-latex-packages-alist}.  @code{:center} is for
12400 centering the table.  @code{:rmlines} removes all but the very first
12401 horizontal line made of ASCII characters from "table.el" tables only.
12402 @item :math-prefix
12403 @itemx :math-suffix
12404 @itemx :math-arguments
12405 The @LaTeX{} export back-end inserts @code{:math-prefix} string value in a
12406 math environment before the table.  The @LaTeX{} export back-end inserts
12407 @code{:math-suffix} string value in a math environment after the table.  The
12408 @LaTeX{} export back-end inserts @code{:math-arguments} string value between
12409 the macro name and the table's contents.  @code{:math-arguments} comes in use
12410 for matrix macros that require more than one argument, such as
12411 @code{qbordermatrix}.
12412 @end table
12414 @LaTeX{} table attributes help formatting tables for a wide range of
12415 situations, such as matrix product or spanning multiple pages:
12417 @example
12418 #+ATTR_LATEX: :environment longtable :align l|lp@{3cm@}r|l
12419 | ..... | ..... |
12420 | ..... | ..... |
12422 #+ATTR_LATEX: :mode math :environment bmatrix :math-suffix \times
12423 | a | b |
12424 | c | d |
12425 #+ATTR_LATEX: :mode math :environment bmatrix
12426 | 1 | 2 |
12427 | 3 | 4 |
12428 @end example
12430 Set the caption with the @LaTeX{} command
12431 @code{\bicaption@{HeadingA@}@{HeadingB@}}:
12433 @example
12434 #+ATTR_LATEX: :caption \bicaption@{HeadingA@}@{HeadingB@}
12435 | ..... | ..... |
12436 | ..... | ..... |
12437 @end example
12440 @node Images in @LaTeX{} export
12441 @subsection Images in @LaTeX{} export
12442 @cindex images, inline in @LaTeX{}
12443 @cindex inlining images in @LaTeX{}
12444 @cindex #+ATTR_LATEX, in images
12446 The @LaTeX{} export back-end processes image links in Org files that do not
12447 have descriptions, such as these links @samp{[[file:img.jpg]]} or
12448 @samp{[[./img.jpg]]}, as direct image insertions in the final PDF output.  In
12449 the PDF, they are no longer links but actual images embedded on the page.
12450 The @LaTeX{} export back-end uses @code{\includegraphics} macro to insert the
12451 image.  But for TikZ@footnote{@url{http://sourceforge.net/projects/pgf/}}
12452 images, the back-end uses an @code{\input} macro wrapped within
12453 a @code{tikzpicture} environment.
12455 For specifying image @code{:width}, @code{:height}, and other
12456 @code{:options}, use this syntax:
12458 @example
12459 #+ATTR_LATEX: :width 5cm :options angle=90
12460 [[./img/sed-hr4049.pdf]]
12461 @end example
12463 For custom commands for captions, use the @code{:caption} attribute.  It will
12464 override the default @code{#+CAPTION} value:
12466 @example
12467 #+ATTR_LATEX: :caption \bicaption@{HeadingA@}@{HeadingB@}
12468 [[./img/sed-hr4049.pdf]]
12469 @end example
12471 When captions follow the method as described in @ref{Images and tables}, the
12472 @LaTeX{} export back-end wraps the picture in a floating @code{figure}
12473 environment.  To float an image without specifying a caption, set the
12474 @code{:float} attribute to one of the following:
12475 @itemize @minus
12476 @item
12477 @code{t}: for a standard @samp{figure} environment; used by default whenever
12478 an image has a caption.
12479 @item
12480 @code{multicolumn}: to span the image across multiple columns of a page; the
12481 back-end wraps the image in a @code{figure*} environment.
12482 @item
12483 @code{wrap}: for text to flow around the image on the right; the figure
12484 occupies the left half of the page.
12485 @item
12486 @code{sideways}: for a new page with the image sideways, rotated ninety
12487 degrees, in a @code{sidewaysfigure} environment; overrides @code{:placement}
12488 setting.
12489 @item
12490 @code{nil}: to avoid a @code{:float} even if using a caption.
12491 @end itemize
12492 @noindent
12493 Use the @code{placement} attribute to modify a floating environment's placement.
12495 @example
12496 #+ATTR_LATEX: :float wrap :width 0.38\textwidth :placement
12497 @{r@}@{0.4\textwidth@} [[./img/hst.png]]
12498 @end example
12500 @vindex org-latex-images-centered
12501 @cindex center image (@LaTeX{} export)
12502 @cindex image, centering (@LaTeX{} export)
12504 The @LaTeX{} export back-end centers all images by default.  Setting
12505 @code{:center} attribute to @code{nil} disables centering.  To disable
12506 centering globally, set @code{org-latex-images-centered} to @code{t}.
12508 Set the @code{:comment-include} attribute to non-@code{nil} value for the
12509 @LaTeX{} export back-end to comment out the @code{\includegraphics} macro.
12511 @node Plain lists in @LaTeX{} export
12512 @subsection Plain lists in @LaTeX{} export
12513 @cindex plain lists, in @LaTeX{} export
12514 @cindex #+ATTR_LATEX, in plain lists
12516 The @LaTeX{} export back-end accepts the @code{:environment} and
12517 @code{:options} attributes for plain lists.  Both attributes work together
12518 for customizing lists, as shown in the examples:
12520 @example
12521 #+LATEX_HEADER: \usepackage[inline]@{enumitem@}
12522 Some ways to say "Hello":
12523 #+ATTR_LATEX: :environment itemize*
12524 #+ATTR_LATEX: :options [label=@{@}, itemjoin=@{,@}, itemjoin*=@{, and@}]
12525 - Hola
12526 - Bonjour
12527 - Guten Tag.
12528 @end example
12530 Since @LaTeX{} supports only four levels of nesting for lists, use an
12531 external package, such as @samp{enumitem} in @LaTeX{}, for levels deeper than
12532 four:
12534 @example
12535 #+LATEX_HEADER: \usepackage@{enumitem@}
12536 #+LATEX_HEADER: \renewlist@{itemize@}@{itemize@}@{9@}
12537 #+LATEX_HEADER: \setlist[itemize]@{label=$\circ$@}
12538 - One
12539   - Two
12540     - Three
12541       - Four
12542         - Five
12543 @end example
12545 @node Source blocks in @LaTeX{} export
12546 @subsection Source blocks in @LaTeX{} export
12547 @cindex source blocks, in @LaTeX{} export
12548 @cindex #+ATTR_LATEX, in source blocks
12550 The @LaTeX{} export back-end can make source code blocks into floating
12551 objects through the attributes @code{:float} and @code{:options}.  For
12552 @code{:float}:
12554 @itemize @minus
12555 @item
12556 @code{t}: makes a source block float; by default floats any source block with
12557 a caption.
12558 @item
12559 @code{multicolumn}: spans the source block across multiple columns of a page.
12560 @item
12561 @code{nil}: avoids a @code{:float} even if using a caption; useful for
12562 source code blocks that may not fit on a page.
12563 @end itemize
12565 @example
12566 #+ATTR_LATEX: :float nil
12567 #+BEGIN_SRC emacs-lisp
12568 Lisp code that may not fit in a single page.
12569 #+END_SRC
12570 @end example
12572 @vindex org-latex-listings-options
12573 @vindex org-latex-minted-options
12574 The @LaTeX{} export back-end passes string values in @code{:options} to
12575 @LaTeX{} packages for customization of that specific source block.  In the
12576 example below, the @code{:options} are set for Minted.  Minted is a source
12577 code highlighting @LaTeX{}package with many configurable options.
12579 @example
12580 #+ATTR_LATEX: :options commentstyle=\bfseries
12581 #+BEGIN_SRC emacs-lisp
12582   (defun Fib (n)
12583     (if (< n 2) n (+ (Fib (- n 1)) (Fib (- n 2)))))
12584 #+END_SRC
12585 @end example
12587 To apply similar configuration options for all source blocks in a file, use
12588 the @code{org-latex-listings-options} and @code{org-latex-minted-options}
12589 variables.
12591 @node Example blocks in @LaTeX{} export
12592 @subsection Example blocks in @LaTeX{} export
12593 @cindex example blocks, in @LaTeX{} export
12594 @cindex verbatim blocks, in @LaTeX{} export
12595 @cindex #+ATTR_LATEX, in example blocks
12597 The @LaTeX{} export back-end wraps the contents of example blocks in a
12598 @samp{verbatim} environment.  To change this behavior to use another
12599 environment globally, specify an appropriate export filter (@pxref{Advanced
12600 configuration}).  To change this behavior to use another environment for each
12601 block, use the @code{:environment} parameter to specify a custom environment.
12603 @example
12604 #+ATTR_LATEX: :environment myverbatim
12605 #+BEGIN_EXAMPLE
12606 This sentence is false.
12607 #+END_EXAMPLE
12608 @end example
12610 @node Special blocks in @LaTeX{} export
12611 @subsection Special blocks in @LaTeX{} export
12612 @cindex special blocks, in @LaTeX{} export
12613 @cindex abstract, in @LaTeX{} export
12614 @cindex proof, in @LaTeX{} export
12615 @cindex #+ATTR_LATEX, in special blocks
12618 For other special blocks in the Org file, the @LaTeX{} export back-end makes
12619 a special environment of the same name.  The back-end also takes
12620 @code{:options}, if any, and appends as-is to that environment's opening
12621 string.  For example:
12623 @example
12624 #+BEGIN_abstract
12625 We demonstrate how to solve the Syracuse problem.
12626 #+END_abstract
12628 #+ATTR_LATEX: :options [Proof of important theorem]
12629 #+BEGIN_proof
12631 Therefore, any even number greater than 2 is the sum of two primes.
12632 #+END_proof
12633 @end example
12635 @noindent
12636 exports to
12638 @example
12639 \begin@{abstract@}
12640 We demonstrate how to solve the Syracuse problem.
12641 \end@{abstract@}
12643 \begin@{proof@}[Proof of important theorem]
12645 Therefore, any even number greater than 2 is the sum of two primes.
12646 \end@{proof@}
12647 @end example
12649 If you need to insert a specific caption command, use @code{:caption}
12650 attribute.  It will override standard @code{#+CAPTION} value, if any.  For
12651 example:
12653 @example
12654 #+ATTR_LATEX: :caption \MyCaption@{HeadingA@}
12655 #+BEGIN_proof
12657 #+END_proof
12658 @end example
12660 @node Horizontal rules in @LaTeX{} export
12661 @subsection Horizontal rules in @LaTeX{} export
12662 @cindex horizontal rules, in @LaTeX{} export
12663 @cindex #+ATTR_LATEX, in horizontal rules
12665 The @LaTeX{} export back-end converts horizontal rules by the specified
12666 @code{:width} and @code{:thickness} attributes.  For example:
12668 @example
12669 #+ATTR_LATEX: :width .6\textwidth :thickness 0.8pt
12670 -----
12671 @end example
12673 @node Markdown export
12674 @section Markdown export
12675 @cindex Markdown export
12677 The Markdown export back-end, @code{md}, converts an Org file to a Markdown
12678 format, as defined at @url{http://daringfireball.net/projects/markdown/}.
12680 Since @code{md} is built on top of the HTML back-end, any Org constructs not
12681 supported by Markdown, such as tables, the underlying @code{html} back-end
12682 (@pxref{HTML export}) converts them.
12684 @subheading Markdown export commands
12686 @table @kbd
12687 @orgcmd{C-c C-e m m,org-md-export-to-markdown}
12688 Export to a text file with Markdown syntax.  For @file{myfile.org}, Org
12689 exports to @file{myfile.md}, overwritten without warning.
12690 @orgcmd{C-c C-e m M,org-md-export-as-markdown}
12691 Export to a temporary buffer.  Does not create a file.
12692 @item C-c C-e m o
12693 Export as a text file with Markdown syntax, then open it.
12694 @end table
12696 @subheading Header and sectioning structure
12698 @vindex org-md-headline-style
12699 Based on @code{org-md-headline-style}, markdown export can generate headlines
12700 of both @code{atx} and @code{setext} types.  @code{atx} limits headline
12701 levels to two.  @code{setext} limits headline levels to six.  Beyond these
12702 limits, the export back-end converts headlines to lists.  To set a limit to a
12703 level before the absolute limit (@pxref{Export settings}).
12705 @c begin opendocument
12707 @node OpenDocument Text export
12708 @section OpenDocument Text export
12709 @cindex ODT
12710 @cindex OpenDocument
12711 @cindex export, OpenDocument
12712 @cindex LibreOffice
12714 The ODT export back-end handles creating of OpenDocument Text (ODT) format
12715 files.  The format complies with @cite{OpenDocument-v1.2
12716 specification}@footnote{@url{http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html,
12717 Open Document Format for Office Applications (OpenDocument) Version 1.2}} and
12718 is compatible with LibreOffice 3.4.
12720 @menu
12721 * Pre-requisites for ODT export::  Required packages.
12722 * ODT export commands::         Invoking export.
12723 * ODT specific export settings::  Configuration options.
12724 * Extending ODT export::        Producing @file{.doc}, @file{.pdf} files.
12725 * Applying custom styles::      Styling the output.
12726 * Links in ODT export::         Handling and formatting links.
12727 * Tables in ODT export::        Org table conversions.
12728 * Images in ODT export::        Inserting images.
12729 * Math formatting in ODT export::  Formatting @LaTeX{} fragments.
12730 * Labels and captions in ODT export::  Rendering objects.
12731 * Literal examples in ODT export::  For source code and example blocks.
12732 * Advanced topics in ODT export::  For power users.
12733 @end menu
12735 @node Pre-requisites for ODT export
12736 @subsection Pre-requisites for ODT export
12737 @cindex zip
12738 The ODT export back-end relies on the @file{zip} program to create the final
12739 compressed ODT output.  Check if @file{zip} is locally available and
12740 executable.  Without @file{zip}, export cannot finish.
12742 @node ODT export commands
12743 @subsection ODT export commands
12744 @anchor{x-export-to-odt}
12745 @cindex region, active
12746 @cindex active region
12747 @cindex transient-mark-mode
12748 @table @kbd
12749 @orgcmd{C-c C-e o o,org-odt-export-to-odt}
12750 @cindex property EXPORT_FILE_NAME
12752 Export as OpenDocument Text file.
12754 @vindex org-odt-preferred-output-format
12755 If @code{org-odt-preferred-output-format} is specified, the ODT export
12756 back-end automatically converts the exported file to that format.
12757 @xref{x-export-to-other-formats, , Automatically exporting to other formats}.
12759 For @file{myfile.org}, Org exports to @file{myfile.odt}, overwriting without
12760 warning.  The ODT export back-end exports a region only if a region was
12761 active.  Note for exporting active regions, the @code{transient-mark-mode}
12762 has to be turned on.
12764 If the selected region is a single tree, the ODT export back-end makes the
12765 tree head the document title.  Incidentally, @kbd{C-c @@} selects the current
12766 sub-tree.  If the tree head entry has, or inherits, an
12767 @code{EXPORT_FILE_NAME} property, the ODT export back-end uses that for file
12768 name.
12770 @kbd{C-c C-e o O}
12771 Export to an OpenDocument Text file format and open it.
12773 @vindex org-odt-preferred-output-format
12774 When @code{org-odt-preferred-output-format} is specified, open the converted
12775 file instead.  @xref{x-export-to-other-formats, , Automatically exporting to
12776 other formats}.
12777 @end table
12779 @node ODT specific export settings
12780 @subsection ODT specific export settings
12781 The ODT export back-end has several additional keywords for customizing ODT
12782 output.  Setting these keywords works similar to the general options
12783 (@pxref{Export settings}).
12785 @table @samp
12786 @item DESCRIPTION
12787 @cindex #+DESCRIPTION (ODT)
12788 This is the document's description, which the ODT export back-end inserts as
12789 document metadata.  For long descriptions, use multiple @code{#+DESCRIPTION}
12790 lines.
12792 @item KEYWORDS
12793 @cindex #+KEYWORDS (ODT)
12794 The keywords for the document.  The ODT export back-end inserts the
12795 description along with author name, keywords, and related file metadata as
12796 metadata in the output file.  Use multiple @code{#+KEYWORDS} lines if
12797 necessary.
12799 @item ODT_STYLES_FILE
12800 @cindex ODT_STYLES_FILE
12801 @vindex org-odt-styles-file
12802 The ODT export back-end uses the @code{org-odt-styles-file} by default.  See
12803 @ref{Applying custom styles} for details.
12805 @item SUBTITLE
12806 @cindex SUBTITLE (ODT)
12807 The document subtitle.
12808 @end table
12810 @node Extending ODT export
12811 @subsection Extending ODT export
12813 The ODT export back-end can produce documents in other formats besides ODT
12814 using a specialized ODT converter process.  Its common interface works with
12815 popular converters to produce formats such as @samp{doc}, or convert a
12816 document from one format, say @samp{csv}, to another format, say @samp{xls}.
12818 @cindex @file{unoconv}
12819 @cindex LibreOffice
12821 Customize @code{org-odt-convert-process} variable to point to @code{unoconv},
12822 which is the ODT's preferred converter.  Working installations of LibreOffice
12823 would already have @code{unoconv} installed.  Alternatively, other converters
12824 may be substituted here.  @xref{Configuring a document converter}.
12826 @subsubheading Automatically exporting to other formats
12827 @anchor{x-export-to-other-formats}
12829 @vindex org-odt-preferred-output-format
12830 If ODT format is just an intermediate step to get to other formats, such as
12831 @samp{doc}, @samp{docx}, @samp{rtf}, or @samp{pdf}, etc., then extend the ODT
12832 export back-end to directly produce that format.  Specify the final format in
12833 the @code{org-odt-preferred-output-format} variable.  This is one way to
12834 extend (@pxref{x-export-to-odt,,Exporting to ODT}).
12836 @subsubheading Converting between document formats
12837 @anchor{x-convert-to-other-formats}
12839 The Org export back-end is made to be inter-operable with a wide range of text
12840 document format converters.  Newer generation converters, such as LibreOffice
12841 and Pandoc, can handle hundreds of formats at once.  Org provides a
12842 consistent interaction with whatever converter is installed.  Here are some
12843 generic commands:
12845 @vindex org-odt-convert
12846 @table @kbd
12848 @item M-x org-odt-convert RET
12849 Convert an existing document from one format to another.  With a prefix
12850 argument, opens the newly produced file.
12851 @end table
12853 @node Applying custom styles
12854 @subsection Applying custom styles
12855 @cindex styles, custom
12856 @cindex template, custom
12858 The ODT export back-end comes with many OpenDocument styles (@pxref{Working
12859 with OpenDocument style files}).  To expand or further customize these
12860 built-in style sheets, either edit the style sheets directly or generate them
12861 using an application such as LibreOffice.  The example here shows creating a
12862 style using LibreOffice.
12864 @subsubheading Applying custom styles: the easy way
12866 @enumerate
12867 @item
12868 Create a sample @file{example.org} file with settings as shown below, and
12869 export it to ODT format.
12871 @example
12872 #+OPTIONS: H:10 num:t
12873 @end example
12875 @item
12876 Open the above @file{example.odt} using LibreOffice.  Use the @file{Stylist}
12877 to locate the target styles, which typically have the @samp{Org} prefix.
12878 Open one, modify, and save as either OpenDocument Text (@file{.odt}) or
12879 OpenDocument Template (@file{.ott}) file.
12881 @item
12882 @cindex #+ODT_STYLES_FILE
12883 @vindex org-odt-styles-file
12884 Customize the variable @code{org-odt-styles-file} and point it to the
12885 newly created file.  For additional configuration options
12886 @pxref{x-overriding-factory-styles,,Overriding factory styles}.
12888 To apply and ODT style to a particular file, use the @code{#+ODT_STYLES_FILE}
12889 option as shown in the example below:
12891 @example
12892 #+ODT_STYLES_FILE: "/path/to/example.ott"
12893 @end example
12897 @example
12898 #+ODT_STYLES_FILE: ("/path/to/file.ott" ("styles.xml" "image/hdr.png"))
12899 @end example
12901 @end enumerate
12903 @subsubheading Using third-party styles and templates
12905 The ODT export back-end relies on many templates and style names.  Using
12906 third-party styles and templates can lead to mismatches.  Templates derived
12907 from built in ODT templates and styles seem to have fewer problems.
12909 @node Links in ODT export
12910 @subsection Links in ODT export
12911 @cindex links, in ODT export
12913 ODT export back-end creates native cross-references for internal links and
12914 Internet-style links for all other link types.
12916 A link with no description and pointing to a regular---un-itemized---outline
12917 heading is replaced with a cross-reference and section number of the heading.
12919 A @samp{\ref@{label@}}-style reference to an image, table etc.@: is replaced
12920 with a cross-reference and sequence number of the labeled entity.
12921 @xref{Labels and captions in ODT export}.
12923 @node Tables in ODT export
12924 @subsection Tables in ODT export
12925 @cindex tables, in ODT export
12927 The ODT export back-end handles native Org mode tables (@pxref{Tables}) and
12928 simple @file{table.el} tables.  Complex @file{table.el} tables having column
12929 or row spans are not supported.  Such tables are stripped from the exported
12930 document.
12932 By default, the ODT export back-end exports a table with top and bottom
12933 frames and with ruled lines separating row and column groups (@pxref{Column
12934 groups}).  All tables are typeset to occupy the same width.  The ODT export
12935 back-end honors any table alignments and relative widths for columns
12936 (@pxref{Column width and alignment}).
12938 Note that the ODT export back-end interprets column widths as weighted
12939 ratios, the default weight being 1.
12941 @cindex #+ATTR_ODT
12943 Specifying @code{:rel-width} property on an @code{#+ATTR_ODT} line controls
12944 the width of the table.  For example:
12946 @example
12947 #+ATTR_ODT: :rel-width 50
12948 | Area/Month    |   Jan |   Feb |   Mar |   Sum |
12949 |---------------+-------+-------+-------+-------|
12950 | /             |     < |       |       |     < |
12951 | <l13>         |  <r5> |  <r5> |  <r5> |  <r6> |
12952 | North America |     1 |    21 |   926 |   948 |
12953 | Middle East   |     6 |    75 |   844 |   925 |
12954 | Asia Pacific  |     9 |    27 |   790 |   826 |
12955 |---------------+-------+-------+-------+-------|
12956 | Sum           |    16 |   123 |  2560 |  2699 |
12957 @end example
12959 On export, the above table takes 50% of text width area.  The exporter sizes
12960 the columns in the ratio: 13:5:5:5:6.  The first column is left-aligned and
12961 rest of the columns, right-aligned.  Vertical rules separate the header and
12962 the last column.  Horizontal rules separate the header and the last row.
12964 For even more customization, create custom table styles and associate them
12965 with a table using the @code{#+ATTR_ODT} line.  @xref{Customizing tables in
12966 ODT export}.
12968 @node Images in ODT export
12969 @subsection Images in ODT export
12970 @cindex images, embedding in ODT
12971 @cindex embedding images in ODT
12973 @subsubheading Embedding images
12974 The ODT export back-end processes image links in Org files that do not have
12975 descriptions, such as these links @samp{[[file:img.jpg]]} or
12976 @samp{[[./img.jpg]]}, as direct image insertions in the final output.  Either
12977 of these examples works:
12979 @example
12980 [[file:img.png]]
12981 @end example
12983 @example
12984 [[./img.png]]
12985 @end example
12987 @subsubheading Embedding clickable images
12988 For clickable images, provide a link whose description is another link to an
12989 image file.  For example, to embed a image @file{org-mode-unicorn.png} which
12990 when clicked jumps to @uref{http://Orgmode.org} website, do the following
12992 @example
12993 [[http://orgmode.org][./org-mode-unicorn.png]]
12994 @end example
12996 @subsubheading Sizing and scaling of embedded images
12998 @cindex #+ATTR_ODT
12999 Control the size and scale of the embedded images with the @code{#+ATTR_ODT}
13000 attribute.
13002 @cindex identify, ImageMagick
13003 @vindex org-odt-pixels-per-inch
13004 The ODT export back-end starts with establishing the size of the image in the
13005 final document.  The dimensions of this size is measured in centimeters.  The
13006 back-end then queries the image file for its dimensions measured in pixels.
13007 For this measurement, the back-end relies on ImageMagick's @file{identify}
13008 program or Emacs @code{create-image} and @code{image-size} API.  ImageMagick
13009 is the preferred choice for large file sizes or frequent batch operations.
13010 The back-end then converts the pixel dimensions using
13011 @code{org-odt-pixels-per-inch} into the familiar 72 dpi or 96 dpi.  The
13012 default value for this is in @code{display-pixels-per-inch}, which can be
13013 tweaked for better results based on the capabilities of the output device.
13014 Here are some common image scaling operations:
13016 @table @asis
13017 @item Explicitly size the image
13018 To embed @file{img.png} as a 10 cm x 10 cm image, do the following:
13020 @example
13021 #+ATTR_ODT: :width 10 :height 10
13022 [[./img.png]]
13023 @end example
13025 @item Scale the image
13026 To embed @file{img.png} at half its size, do the following:
13028 @example
13029 #+ATTR_ODT: :scale 0.5
13030 [[./img.png]]
13031 @end example
13033 @item Scale the image to a specific width
13034 To embed @file{img.png} with a width of 10 cm while retaining the original
13035 height:width ratio, do the following:
13037 @example
13038 #+ATTR_ODT: :width 10
13039 [[./img.png]]
13040 @end example
13042 @item Scale the image to a specific height
13043 To embed @file{img.png} with a height of 10 cm while retaining the original
13044 height:width ratio, do the following
13046 @example
13047 #+ATTR_ODT: :height 10
13048 [[./img.png]]
13049 @end example
13050 @end table
13052 @subsubheading Anchoring of images
13054 @cindex #+ATTR_ODT
13055 The ODT export back-end can anchor images to @samp{"as-char"},
13056 @samp{"paragraph"}, or @samp{"page"}.  Set the preferred anchor using the
13057 @code{:anchor} property of the @code{#+ATTR_ODT} line.
13059 To create an image that is anchored to a page:
13060 @example
13061 #+ATTR_ODT: :anchor "page"
13062 [[./img.png]]
13063 @end example
13065 @node Math formatting in ODT export
13066 @subsection Math formatting in ODT export
13068 The ODT export back-end has special support built-in for handling math.
13070 @menu
13071 * Working with @LaTeX{} math snippets::  Embedding in @LaTeX{} format.
13072 * Working with MathML or OpenDocument formula files::  Embedding in native format.
13073 @end menu
13075 @node Working with @LaTeX{} math snippets
13076 @subsubheading Working with @LaTeX{} math snippets
13078 @LaTeX{} math snippets (@pxref{@LaTeX{} fragments}) can be embedded in an ODT
13079 document in one of the following ways:
13081 @cindex MathML
13082 @enumerate
13083 @item MathML
13085 Add this line to the Org file.  This option is activated on a per-file basis.
13087 @example
13088 #+OPTIONS: LaTeX:t
13089 @end example
13091 With this option, @LaTeX{} fragments are first converted into MathML
13092 fragments using an external @LaTeX{}-to-MathML converter program.  The
13093 resulting MathML fragments are then embedded as an OpenDocument Formula in
13094 the exported document.
13096 @vindex org-latex-to-mathml-convert-command
13097 @vindex org-latex-to-mathml-jar-file
13099 To specify the @LaTeX{}-to-MathML converter, customize the variables
13100 @code{org-latex-to-mathml-convert-command} and
13101 @code{org-latex-to-mathml-jar-file}.
13103 To use MathToWeb@footnote{See
13104 @uref{http://www.mathtoweb.com/cgi-bin/mathtoweb_home.pl, MathToWeb}.} as the
13105 preferred converter, configure the above variables as
13107 @lisp
13108 (setq org-latex-to-mathml-convert-command
13109       "java -jar %j -unicode -force -df %o %I"
13110       org-latex-to-mathml-jar-file
13111       "/path/to/mathtoweb.jar")
13112 @end lisp
13113 To use @LaTeX{}ML@footnote{See @uref{http://dlmf.nist.gov/LaTeXML/}.} use
13114 @lisp
13115 (setq org-latex-to-mathml-convert-command
13116       "latexmlmath \"%i\" --presentationmathml=%o")
13117 @end lisp
13119 To quickly verify the reliability of the @LaTeX{}-to-MathML converter, use
13120 the following commands:
13122 @table @kbd
13123 @item M-x org-odt-export-as-odf RET
13124 Convert a @LaTeX{} math snippet to an OpenDocument formula (@file{.odf}) file.
13126 @item M-x org-odt-export-as-odf-and-open RET
13127 Convert a @LaTeX{} math snippet to an OpenDocument formula (@file{.odf}) file
13128 and open the formula file with the system-registered application.
13129 @end table
13131 @cindex dvipng
13132 @cindex dvisvgm
13133 @cindex imagemagick
13134 @item PNG images
13136 Add this line to the Org file.  This option is activated on a per-file basis.
13138 @example
13139 #+OPTIONS: tex:dvipng
13140 @end example
13142 @example
13143 #+OPTIONS: tex:dvisvgm
13144 @end example
13148 @example
13149 #+OPTIONS: tex:imagemagick
13150 @end example
13152 Under this option, @LaTeX{} fragments are processed into PNG or SVG images
13153 and the resulting images are embedded in the exported document.  This method
13154 requires @file{dvipng} program, @file{dvisvgm} or @file{imagemagick}
13155 programs.
13156 @end enumerate
13158 @node Working with MathML or OpenDocument formula files
13159 @subsubheading Working with MathML or OpenDocument formula files
13161 When embedding @LaTeX{} math snippets in ODT documents is not reliable, there
13162 is one more option to try.  Embed an equation by linking to its MathML
13163 (@file{.mml}) source or its OpenDocument formula (@file{.odf}) file as shown
13164 below:
13166 @example
13167 [[./equation.mml]]
13168 @end example
13172 @example
13173 [[./equation.odf]]
13174 @end example
13176 @node Labels and captions in ODT export
13177 @subsection Labels and captions in ODT export
13179 ODT format handles labeling and captioning of objects based on their
13180 types.  Inline images, tables, @LaTeX{} fragments, and Math formulas are
13181 numbered and captioned separately.  Each object also gets a unique sequence
13182 number based on its order of first appearance in the Org file.  Each category
13183 has its own sequence.  A caption is just a label applied to these objects.
13185 @example
13186 #+CAPTION: Bell curve
13187 #+LABEL:   fig:SED-HR4049
13188 [[./img/a.png]]
13189 @end example
13191 When rendered, it may show as follows in the exported document:
13193 @example
13194 Figure 2: Bell curve
13195 @end example
13197 @vindex org-odt-category-map-alist
13198 To modify the category component of the caption, customize the option
13199 @code{org-odt-category-map-alist}.  For example, to tag embedded images with
13200 the string @samp{Illustration} instead of the default string @samp{Figure},
13201 use the following setting:
13203 @lisp
13204 (setq org-odt-category-map-alist
13205       '(("__Figure__" "Illustration" "value" "Figure" org-odt--enumerable-image-p)))
13206 @end lisp
13208 With the above modification, the previous example changes to:
13210 @example
13211 Illustration 2: Bell curve
13212 @end example
13214 @node Literal examples in ODT export
13215 @subsection Literal examples in ODT export
13217 The ODT export back-end supports literal examples (@pxref{Literal examples})
13218 with full fontification.  Internally, the ODT export back-end relies on
13219 @file{htmlfontify.el} to generate the style definitions needed for fancy
13220 listings.  The auto-generated styles get @samp{OrgSrc} prefix and inherit
13221 colors from the faces used by Emacs @code{font-lock} library for that source
13222 language.
13224 @vindex org-odt-fontify-srcblocks
13225 For custom fontification styles, customize the
13226 @code{org-odt-create-custom-styles-for-srcblocks} option.
13228 @vindex org-odt-create-custom-styles-for-srcblocks
13229 To turn off fontification of literal examples, customize the
13230 @code{org-odt-fontify-srcblocks} option.
13232 @node Advanced topics in ODT export
13233 @subsection Advanced topics in ODT export
13235 The ODT export back-end has extensive features useful for power users and
13236 frequent uses of ODT formats.
13238 @menu
13239 * Configuring a document converter::  Registering a document converter.
13240 * Working with OpenDocument style files::  Exploring internals.
13241 * Creating one-off styles::     Customizing styles, highlighting.
13242 * Customizing tables in ODT export::  Defining table templates.
13243 * Validating OpenDocument XML::  Debugging corrupted OpenDocument files.
13244 @end menu
13246 @node Configuring a document converter
13247 @subsubheading Configuring a document converter
13248 @cindex convert
13249 @cindex doc, docx, rtf
13250 @cindex converter
13252 The ODT export back-end works with popular converters with little or no extra
13253 configuration.  @xref{Extending ODT export}.  The following is for unsupported
13254 converters or tweaking existing defaults.
13256 @enumerate
13257 @item Register the converter
13259 @vindex org-odt-convert-processes
13260 Add the name of the converter to the @code{org-odt-convert-processes}
13261 variable.  Note that it also requires how the converter is invoked on the
13262 command line.  See the variable's docstring for details.
13264 @item Configure its capabilities
13266 @vindex org-odt-convert-capabilities
13267 @anchor{x-odt-converter-capabilities} Specify which formats the converter can
13268 handle by customizing the variable @code{org-odt-convert-capabilities}.  Use
13269 the entry for the default values in this variable for configuring the new
13270 converter.  Also see its docstring for details.
13272 @item Choose the converter
13274 @vindex org-odt-convert-process
13275 Select the newly added converter as the preferred one by customizing the
13276 option @code{org-odt-convert-process}.
13277 @end enumerate
13279 @node Working with OpenDocument style files
13280 @subsubheading Working with OpenDocument style files
13281 @cindex styles, custom
13282 @cindex template, custom
13284 This section explores the internals of the ODT exporter; the means by which
13285 it produces styled documents; the use of automatic and custom OpenDocument
13286 styles.
13288 @anchor{x-factory-styles}
13289 @subsubheading a) Factory styles
13291 The ODT exporter relies on two files for generating its output.
13292 These files are bundled with the distribution under the directory pointed to
13293 by the variable @code{org-odt-styles-dir}.  The two files are:
13295 @itemize
13296 @anchor{x-orgodtstyles-xml}
13297 @item
13298 @file{OrgOdtStyles.xml}
13300 This file contributes to the @file{styles.xml} file of the final @samp{ODT}
13301 document.  This file gets modified for the following purposes:
13302 @enumerate
13304 @item
13305 To control outline numbering based on user settings.
13307 @item
13308 To add styles generated by @file{htmlfontify.el} for fontification of code
13309 blocks.
13310 @end enumerate
13312 @anchor{x-orgodtcontenttemplate-xml}
13313 @item
13314 @file{OrgOdtContentTemplate.xml}
13316 This file contributes to the @file{content.xml} file of the final @samp{ODT}
13317 document.  The contents of the Org outline are inserted between the
13318 @samp{<office:text>}@dots{}@samp{</office:text>} elements of this file.
13320 Apart from serving as a template file for the final @file{content.xml}, the
13321 file serves the following purposes:
13322 @enumerate
13324 @item
13325 It contains automatic styles for formatting of tables which are referenced by
13326 the exporter.
13328 @item
13329 It contains @samp{<text:sequence-decl>}@dots{}@samp{</text:sequence-decl>}
13330 elements that control numbering of tables, images, equations, and similar
13331 entities.
13332 @end enumerate
13333 @end itemize
13335 @anchor{x-overriding-factory-styles}
13336 @subsubheading b) Overriding factory styles
13337 The following two variables control the location from where the ODT exporter
13338 picks up the custom styles and content template files.  Customize these
13339 variables to override the factory styles used by the exporter.
13341 @itemize
13342 @anchor{x-org-odt-styles-file}
13343 @item
13344 @code{org-odt-styles-file}
13346 The ODT export back-end uses the file pointed to by this variable, such as
13347 @file{styles.xml}, for the final output.  It can take one of the following
13348 values:
13350 @enumerate
13351 @item A @file{styles.xml} file
13353 Use this file instead of the default @file{styles.xml}
13355 @item A @file{.odt} or @file{.ott} file
13357 Use the @file{styles.xml} contained in the specified OpenDocument Text or
13358 Template file
13360 @item A @file{.odt} or @file{.ott} file and a subset of files contained within them
13362 Use the @file{styles.xml} contained in the specified OpenDocument Text or
13363 Template file.  Additionally extract the specified member files and embed
13364 those within the final @samp{ODT} document.
13366 Use this option if the @file{styles.xml} file references additional files
13367 like header and footer images.
13369 @item @code{nil}
13371 Use the default @file{styles.xml}
13372 @end enumerate
13374 @anchor{x-org-odt-content-template-file}
13375 @item
13376 @code{org-odt-content-template-file}
13378 Use this variable to specify the blank @file{content.xml} that will be used
13379 in the final output.
13380 @end itemize
13382 @node Creating one-off styles
13383 @subsubheading Creating one-off styles
13385 The ODT export back-end can read embedded raw OpenDocument XML from the Org
13386 file.  Such direct formatting are useful for one-off instances.
13388 @enumerate
13389 @item Embedding ODT tags as part of regular text
13391 Enclose OpenDocument syntax in @samp{@@@@odt:...@@@@} for inline markup.  For
13392 example, to highlight a region of text do the following:
13394 @example
13395 @@@@odt:<text:span text:style-name="Highlight">This is highlighted
13396 text</text:span>@@@@.  But this is regular text.
13397 @end example
13399 @strong{Hint:} To see the above example in action, edit the @file{styles.xml}
13400 (@pxref{x-orgodtstyles-xml,,Factory styles}) and add a custom
13401 @samp{Highlight} style as shown below:
13403 @example
13404 <style:style style:name="Highlight" style:family="text">
13405   <style:text-properties fo:background-color="#ff0000"/>
13406 </style:style>
13407 @end example
13409 @item Embedding a one-line OpenDocument XML
13411 The ODT export back-end can read one-liner options with @code{#+ODT:}
13412 in the Org file.  For example, to force a page break:
13414 @example
13415 #+ODT: <text:p text:style-name="PageBreak"/>
13416 @end example
13418 @strong{Hint:} To see the above example in action, edit your
13419 @file{styles.xml} (@pxref{x-orgodtstyles-xml,,Factory styles}) and add a
13420 custom @samp{PageBreak} style as shown below.
13422 @example
13423 <style:style style:name="PageBreak" style:family="paragraph"
13424              style:parent-style-name="Text_20_body">
13425   <style:paragraph-properties fo:break-before="page"/>
13426 </style:style>
13427 @end example
13429 @item Embedding a block of OpenDocument XML
13431 The ODT export back-end can also read ODT export blocks for OpenDocument XML.
13432 Such blocks use the @code{#+BEGIN_EXPORT odt}@dots{}@code{#+END_EXPORT}
13433 constructs.
13435 For example, to create a one-off paragraph that uses bold text, do the
13436 following:
13438 @example
13439 #+BEGIN_EXPORT odt
13440 <text:p text:style-name="Text_20_body_20_bold">
13441 This paragraph is specially formatted and uses bold text.
13442 </text:p>
13443 #+END_EXPORT
13444 @end example
13446 @end enumerate
13448 @node Customizing tables in ODT export
13449 @subsubheading Customizing tables in ODT export
13450 @cindex tables, in ODT export
13452 @cindex #+ATTR_ODT
13453 Override the default table format by specifying a custom table style with the
13454 @code{#+ATTR_ODT} line.  For a discussion on default formatting of tables
13455 @pxref{Tables in ODT export}.
13457 This feature closely mimics the way table templates are defined in the
13458 OpenDocument-v1.2
13459 specification.@footnote{@url{http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html,
13460 OpenDocument-v1.2 Specification}}
13462 @vindex org-odt-table-styles
13463 For quick preview of this feature, install the settings below and export the
13464 table that follows:
13466 @lisp
13467 (setq org-odt-table-styles
13468       (append org-odt-table-styles
13469             '(("TableWithHeaderRowAndColumn" "Custom"
13470                 ((use-first-row-styles . t)
13471                  (use-first-column-styles . t)))
13472                 ("TableWithFirstRowandLastRow" "Custom"
13473                  ((use-first-row-styles . t)
13474                  (use-last-row-styles . t))))))
13475 @end lisp
13477 @example
13478 #+ATTR_ODT: :style TableWithHeaderRowAndColumn
13479 | Name  | Phone | Age |
13480 | Peter |  1234 |  17 |
13481 | Anna  |  4321 |  25 |
13482 @end example
13484 The example above used @samp{Custom} template and installed two table styles
13485 @samp{TableWithHeaderRowAndColumn} and @samp{TableWithFirstRowandLastRow}.
13486 @strong{Important:} The OpenDocument styles needed for producing the above
13487 template were pre-defined.  They are available in the section marked
13488 @samp{Custom Table Template} in @file{OrgOdtContentTemplate.xml}
13489 (@pxref{x-orgodtcontenttemplate-xml,,Factory styles}.  For adding new
13490 templates, define new styles here.
13492 To use this feature proceed as follows:
13494 @enumerate
13495 @item
13496 Create a table template@footnote{See the @code{<table:table-template>}
13497 element of the OpenDocument-v1.2 specification}
13499 A table template is set of @samp{table-cell} and @samp{paragraph} styles for
13500 each of the following table cell categories:
13502 @itemize @minus
13503 @item Body
13504 @item First column
13505 @item Last column
13506 @item First row
13507 @item Last row
13508 @item Even row
13509 @item Odd row
13510 @item Even column
13511 @item Odd Column
13512 @end itemize
13514 The names for the above styles must be chosen based on the name of the table
13515 template using a well-defined convention.
13517 The naming convention is better illustrated with an example.  For a table
13518 template with the name @samp{Custom}, the needed style names are listed in
13519 the following table.
13521 @multitable  {Table cell type} {CustomEvenColumnTableCell} {CustomEvenColumnTableParagraph}
13522 @headitem Table cell type
13523 @tab @code{table-cell} style
13524 @tab @code{paragraph} style
13525 @item
13526 @tab
13527 @tab
13528 @item Body
13529 @tab @samp{CustomTableCell}
13530 @tab @samp{CustomTableParagraph}
13531 @item First column
13532 @tab @samp{CustomFirstColumnTableCell}
13533 @tab @samp{CustomFirstColumnTableParagraph}
13534 @item Last column
13535 @tab @samp{CustomLastColumnTableCell}
13536 @tab @samp{CustomLastColumnTableParagraph}
13537 @item First row
13538 @tab @samp{CustomFirstRowTableCell}
13539 @tab @samp{CustomFirstRowTableParagraph}
13540 @item Last row
13541 @tab @samp{CustomLastRowTableCell}
13542 @tab @samp{CustomLastRowTableParagraph}
13543 @item Even row
13544 @tab @samp{CustomEvenRowTableCell}
13545 @tab @samp{CustomEvenRowTableParagraph}
13546 @item Odd row
13547 @tab @samp{CustomOddRowTableCell}
13548 @tab @samp{CustomOddRowTableParagraph}
13549 @item Even column
13550 @tab @samp{CustomEvenColumnTableCell}
13551 @tab @samp{CustomEvenColumnTableParagraph}
13552 @item Odd column
13553 @tab @samp{CustomOddColumnTableCell}
13554 @tab @samp{CustomOddColumnTableParagraph}
13555 @end multitable
13557 To create a table template with the name @samp{Custom}, define the above
13558 styles in the
13559 @code{<office:automatic-styles>}...@code{</office:automatic-styles>} element
13560 of the content template file (@pxref{x-orgodtcontenttemplate-xml,,Factory
13561 styles}).
13563 @item
13564 Define a table style@footnote{See the attributes @code{table:template-name},
13565 @code{table:use-first-row-styles}, @code{table:use-last-row-styles},
13566 @code{table:use-first-column-styles}, @code{table:use-last-column-styles},
13567 @code{table:use-banding-rows-styles}, and
13568 @code{table:use-banding-column-styles} of the @code{<table:table>} element in
13569 the OpenDocument-v1.2 specification}
13571 @vindex org-odt-table-styles
13572 To define a table style, create an entry for the style in the variable
13573 @code{org-odt-table-styles} and specify the following:
13575 @itemize @minus
13576 @item the name of the table template created in step (1)
13577 @item the set of cell styles in that template that are to be activated
13578 @end itemize
13580 For example, the entry below defines two different table styles
13581 @samp{TableWithHeaderRowAndColumn} and @samp{TableWithFirstRowandLastRow}
13582 based on the same template @samp{Custom}.  The styles achieve their intended
13583 effect by selectively activating the individual cell styles in that template.
13585 @lisp
13586 (setq org-odt-table-styles
13587       (append org-odt-table-styles
13588               '(("TableWithHeaderRowAndColumn" "Custom"
13589                  ((use-first-row-styles . t)
13590                   (use-first-column-styles . t)))
13591                 ("TableWithFirstRowandLastRow" "Custom"
13592                  ((use-first-row-styles . t)
13593                   (use-last-row-styles . t))))))
13594 @end lisp
13596 @item
13597 Associate a table with the table style
13599 To do this, specify the table style created in step (2) as part of
13600 the @code{ATTR_ODT} line as shown below.
13602 @example
13603 #+ATTR_ODT: :style "TableWithHeaderRowAndColumn"
13604 | Name  | Phone | Age |
13605 | Peter |  1234 |  17 |
13606 | Anna  |  4321 |  25 |
13607 @end example
13608 @end enumerate
13610 @node Validating OpenDocument XML
13611 @subsubheading Validating OpenDocument XML
13613 Sometimes ODT format files may not open due to @file{.odt} file corruption.
13614 To verify if the @file{.odt} file is corrupt, validate it against the
13615 OpenDocument RELAX NG Compact Syntax---RNC---schema.  But first the
13616 @file{.odt} files have to be decompressed using @samp{zip}.  Note that
13617 @file{.odt} files are @samp{zip} archives: @inforef{File Archives,,emacs}.
13618 The contents of @file{.odt} files are in @file{.xml}.  For general help with
13619 validation---and schema-sensitive editing---of XML files:
13620 @inforef{Introduction,,nxml-mode}.
13622 @vindex org-odt-schema-dir
13623 Customize @code{org-odt-schema-dir} to point to a directory with OpenDocument
13624 @file{.rnc} files and the needed schema-locating rules.  The ODT export
13625 back-end takes care of updating the @code{rng-schema-locating-files}.
13627 @c end opendocument
13629 @node Org export
13630 @section Org export
13631 @cindex Org export
13633 @code{org} export back-end creates a normalized version of the Org document
13634 in current buffer.  The exporter evaluates Babel code (@pxref{Evaluating code
13635 blocks}) and removes content specific to other back-ends.
13637 @subheading Org export commands
13639 @table @kbd
13640 @orgcmd{C-c C-e O o,org-org-export-to-org}
13641 Export as an Org file with a @file{.org} extension.  For @file{myfile.org},
13642 Org exports to @file{myfile.org.org}, overwriting without warning.
13644 @orgcmd{C-c C-e O O,org-org-export-as-org}
13645 Export to a temporary buffer.  Does not create a file.
13646 @item C-c C-e O v
13647 Export to an Org file, then open it.
13648 @end table
13650 @node Texinfo export
13651 @section Texinfo export
13652 @cindex Texinfo export
13654 The @samp{texinfo} export back-end generates documents with Texinfo code that
13655 can compile to Info format.
13657 @menu
13658 * Texinfo export commands::     Invoking commands.
13659 * Texinfo specific export settings::  Setting the environment.
13660 * Texinfo file header::         Generating the header.
13661 * Texinfo title and copyright page::  Creating preamble pages.
13662 * Info directory file::     Installing a manual in Info file hierarchy.
13663 * Headings and sectioning structure::  Building document structure.
13664 * Indices::                     Creating indices.
13665 * Quoting Texinfo code::        Incorporating literal Texinfo code.
13666 * Plain lists in Texinfo export::  List attributes.
13667 * Tables in Texinfo export::    Table attributes.
13668 * Images in Texinfo export::    Image attributes.
13669 * Special blocks in Texinfo export::  Special block attributes.
13670 * A Texinfo example::           Processing Org to Texinfo.
13671 @end menu
13673 @node Texinfo export commands
13674 @subsection Texinfo export commands
13676 @vindex org-texinfo-info-process
13677 @table @kbd
13678 @orgcmd{C-c C-e i t,org-texinfo-export-to-texinfo}
13679 Export as a Texinfo file with @file{.texi} extension.  For @file{myfile.org},
13680 Org exports to @file{myfile.texi}, overwriting without warning.
13681 @orgcmd{C-c C-e i i,org-texinfo-export-to-info}
13682 Export to Texinfo format first and then process it to make an Info file.  To
13683 generate other formats, such as DocBook, customize the
13684 @code{org-texinfo-info-process} variable.
13685 @end table
13687 @node Texinfo specific export settings
13688 @subsection Texinfo specific export settings
13689 The Texinfo export back-end has several additional keywords for customizing
13690 Texinfo output.  Setting these keywords works similar to the general options
13691 (@pxref{Export settings}).
13693 @table @samp
13695 @item SUBTITLE
13696 @cindex #+SUBTITLE (Texinfo)
13697 The document subtitle.
13699 @item SUBAUTHOR
13700 @cindex #+SUBAUTHOR
13701 The document subauthor.
13703 @item TEXINFO_FILENAME
13704 @cindex #+TEXINFO_FILENAME
13705 The Texinfo filename.
13707 @item TEXINFO_CLASS
13708 @cindex #+TEXINFO_CLASS
13709 @vindex org-texinfo-default-class
13710 The default document class (@code{org-texinfo-default-class}), which must be
13711 a member of @code{org-texinfo-classes}.
13713 @item TEXINFO_HEADER
13714 @cindex #+TEXINFO_HEADER
13715 Arbitrary lines inserted at the end of the header.
13717 @item TEXINFO_POST_HEADER
13718 @cindex #+TEXINFO_POST_HEADER
13719 Arbitrary lines inserted after the end of the header.
13721 @item TEXINFO_DIR_CATEGORY
13722 @cindex #+TEXINFO_DIR_CATEGORY
13723 The directory category of the document.
13725 @item TEXINFO_DIR_TITLE
13726 @cindex #+TEXINFO_DIR_TITLE
13727 The directory title of the document.
13729 @item TEXINFO_DIR_DESC
13730 @cindex #+TEXINFO_DIR_DESC
13731 The directory description of the document.
13733 @item TEXINFO_PRINTED_TITLE
13734 @cindex #+TEXINFO_PRINTED_TITLE
13735 The printed title of the document.
13736 @end table
13738 @node Texinfo file header
13739 @subsection Texinfo file header
13741 @cindex #+TEXINFO_FILENAME
13742 After creating the header for a Texinfo file, the Texinfo back-end
13743 automatically generates a name and destination path for the Info file.  To
13744 override this default with a more sensible path and name, specify the
13745 @code{#+TEXINFO_FILENAME} keyword.
13747 @vindex org-texinfo-coding-system
13748 @vindex org-texinfo-classes
13749 @cindex #+TEXINFO_HEADER
13750 @cindex #+TEXINFO_CLASS
13751 Along with the output's file name, the Texinfo header also contains language
13752 details (@pxref{Export settings}) and encoding system as set in the
13753 @code{org-texinfo-coding-system} variable.  Insert @code{#+TEXINFO_HEADER}
13754 keywords for each additional command in the header, for example:
13755 @@code@{@@synindex@}.
13757 Instead of repeatedly installing the same set of commands, define a class in
13758 @code{org-texinfo-classes} once, and then activate it in the document by
13759 setting the @code{#+TEXINFO_CLASS} keyword to that class.
13761 @node Texinfo title and copyright page
13762 @subsection Texinfo title and copyright page
13764 @cindex #+TEXINFO_PRINTED_TITLE
13765 The default template for hard copy output has a title page with
13766 @code{#+TITLE} and @code{#+AUTHOR} (@pxref{Export settings}).  To replace the
13767 regular @code{#+TITLE} with something different for the printed version, use
13768 the @code{#+TEXINFO_PRINTED_TITLE} and @code{#+SUBTITLE} keywords.  Both
13769 expect raw Texinfo code for setting their values.
13771 @cindex #+SUBAUTHOR
13772 If one @code{#+AUTHOR} is not sufficient, add multiple @code{#+SUBAUTHOR}
13773 keywords.  They have to be set in raw Texinfo code.
13775 @example
13776 #+AUTHOR: Jane Smith
13777 #+SUBAUTHOR: John Doe
13778 #+TEXINFO_PRINTED_TITLE: This Long Title@@inlinefmt@{tex,@@*@} Is Broken in @@TeX@{@}
13779 @end example
13781 @cindex property, COPYING
13782 Copying material is defined in a dedicated headline with a non-@code{nil}
13783 @code{:COPYING:} property.  The back-end inserts the contents within a
13784 @code{@@copying} command at the beginning of the document.  The heading
13785 itself does not appear in the structure of the document.
13787 Copyright information is printed on the back of the title page.
13789 @example
13790 * Legalese
13791   :PROPERTIES:
13792   :COPYING: t
13793   :END:
13795   This is a short example of a complete Texinfo file, version 1.0.
13797   Copyright \copy 2016 Free Software Foundation, Inc.
13798 @end example
13800 @node Info directory file
13801 @subsection Info directory file
13802 @cindex @samp{dir} file, in Texinfo export
13803 @cindex Texinfo export, @samp{dir} file
13804 @cindex Info directory file, in Texinfo export
13805 @cindex Texinfo export, Info directory file
13806 @cindex @code{install-info} parameters, in Texinfo export
13807 @cindex Texinfo export, @code{install-info} parameters
13809 @cindex #+TEXINFO_DIR_CATEGORY
13810 @cindex #+TEXINFO_DIR_TITLE
13811 @cindex #+TEXINFO_DIR_DESC
13812 The end result of the Texinfo export process is the creation of an Info file.
13813 This Info file's metadata has variables for category, title, and description:
13814 @code{#+TEXINFO_DIR_CATEGORY}, @code{#+TEXINFO_DIR_TITLE}, and
13815 @code{#+TEXINFO_DIR_DESC} that establish where in the Info hierarchy the file
13816 fits.
13818 Here is an example that writes to the Info directory file:
13820 @example
13821 #+TEXINFO_DIR_CATEGORY: Emacs
13822 #+TEXINFO_DIR_TITLE: Org Mode: (org)
13823 #+TEXINFO_DIR_DESC: Outline-based notes management and organizer
13824 @end example
13826 @node Headings and sectioning structure
13827 @subsection Headings and sectioning structure
13829 @vindex org-texinfo-classes
13830 @vindex org-texinfo-default-class
13831 @cindex #+TEXINFO_CLASS
13832 The Texinfo export back-end uses a pre-defined scheme to convert Org
13833 headlines to an equivalent Texinfo structuring commands.  A scheme like this
13834 maps top-level headlines to numbered chapters tagged as @code{@@chapter} and
13835 lower-level headlines to unnumbered chapters tagged as @code{@@unnumbered}.
13836 To override such mappings to introduce @code{@@part} or other Texinfo
13837 structuring commands, define a new class in @code{org-texinfo-classes}.
13838 Activate the new class with the @code{#+TEXINFO_CLASS} keyword.  When no new
13839 class is defined and activated, the Texinfo export back-end defaults to the
13840 @code{org-texinfo-default-class}.
13842 If an Org headline's level has no associated Texinfo structuring command, or
13843 is below a certain threshold (@pxref{Export settings}), then the Texinfo
13844 export back-end makes it into a list item.
13846 @cindex property, APPENDIX
13847 The Texinfo export back-end makes any headline with a non-@code{nil}
13848 @code{:APPENDIX:} property into an appendix.  This happens independent of the
13849 Org headline level or the @code{#+TEXINFO_CLASS}.
13851 @cindex property, DESCRIPTION
13852 The Texinfo export back-end creates a menu entry after the Org headline for
13853 each regular sectioning structure.  To override this with a shorter menu
13854 entry, use the @code{:ALT_TITLE:} property (@pxref{Table of contents}).
13855 Texinfo menu entries also have an option for a longer @code{:DESCRIPTION:}
13856 property.  Here's an example that uses both to override the default menu
13857 entry:
13859 @example
13860 * Controlling Screen Display
13861   :PROPERTIES:
13862   :ALT_TITLE: Display
13863   :DESCRIPTION: Controlling Screen Display
13864   :END:
13865 @end example
13867 @cindex The Top node, in Texinfo export
13868 @cindex Texinfo export, Top node
13869 The text before the first headline belongs to the @samp{Top} node, i.e., the
13870 node in which a reader enters an Info manual.  As such, it is expected not to
13871 appear in printed output generated from the @file{.texi} file.  @inforef{The
13872 Top Node,,texinfo}, for more information.
13874 @node Indices
13875 @subsection Indices
13877 @cindex #+CINDEX
13878 @cindex concept index, in Texinfo export
13879 @cindex Texinfo export, index, concept
13880 @cindex #+FINDEX
13881 @cindex function index, in Texinfo export
13882 @cindex Texinfo export, index, function
13883 @cindex #+KINDEX
13884 @cindex keystroke index, in Texinfo export
13885 @cindex Texinfo export, keystroke index
13886 @cindex #+PINDEX
13887 @cindex program index, in Texinfo export
13888 @cindex Texinfo export, program index
13889 @cindex #+TINDEX
13890 @cindex data type index, in Texinfo export
13891 @cindex Texinfo export, data type index
13892 @cindex #+VINDEX
13893 @cindex variable index, in Texinfo export
13894 @cindex Texinfo export, variable index
13895 The Texinfo export back-end recognizes these indexing keywords if used in the
13896 Org file: @code{#+CINDEX}, @code{#+FINDEX}, @code{#+KINDEX}, @code{#+PINDEX},
13897 @code{#+TINDEX}, and @code{#+VINDEX}.  Write their value as verbatim Texinfo
13898 code; in particular, @samp{@{}, @samp{@}} and @samp{@@} characters need to be
13899 escaped with @samp{@@} if they not belong to a Texinfo command.
13901 @example
13902 #+CINDEX: Defining indexing entries
13903 @end example
13905 @cindex property, INDEX
13906 For the back-end to generate an index entry for a headline, set the
13907 @code{:INDEX:} property to @samp{cp} or @samp{vr}.  These abbreviations come
13908 from Texinfo that stand for concept index and variable index.  The Texinfo
13909 manual has abbreviations for all other kinds of indexes.  The back-end
13910 exports the headline as an unnumbered chapter or section command, and then
13911 inserts the index after its contents.
13913 @example
13914 * Concept Index
13915   :PROPERTIES:
13916   :INDEX: cp
13917   :END:
13918 @end example
13920 @node Quoting Texinfo code
13921 @subsection Quoting Texinfo code
13923 Use any of the following three methods to insert or escape raw Texinfo code:
13925 @cindex #+TEXINFO
13926 @cindex #+BEGIN_EXPORT texinfo
13927 @example
13928 Richard @@@@texinfo:@@sc@{@@@@Stallman@@@@texinfo:@}@@@@ commence' GNU.
13930 #+TEXINFO: @@need800
13931 This paragraph is preceded by...
13933 #+BEGIN_EXPORT texinfo
13934 @@auindex Johnson, Mark
13935 @@auindex Lakoff, George
13936 #+END_EXPORT
13937 @end example
13939 @node Plain lists in Texinfo export
13940 @subsection Plain lists in Texinfo export
13941 @cindex #+ATTR_TEXINFO, in plain lists
13942 The Texinfo export back-end by default converts description lists in the Org
13943 file using the default command @code{@@table}, which results in a table with
13944 two columns.  To change this behavior, specify @code{:table-type} with
13945 @code{@@ftable} or @code{@@vtable} attributes.  For more information,
13946 @inforef{Two-column Tables,,texinfo}.
13948 @vindex org-texinfo-def-table-markup
13949 The Texinfo export back-end by default also applies a text highlight based on
13950 the defaults stored in @code{org-texinfo-def-table-markup}.  To override the
13951 default highlight command, specify another one with the @code{:indic}
13952 attribute as shown in this example:
13954 @example
13955 #+ATTR_TEXINFO: :indic @@asis
13956 - foo :: This is the text for /foo/, with no highlighting.
13957 @end example
13959 @node Tables in Texinfo export
13960 @subsection Tables in Texinfo export
13961 @cindex #+ATTR_TEXINFO, in tables
13963 When exporting tables, the Texinfo export back-end uses the widest cell width
13964 in each column.  To override this and instead specify as fractions of line
13965 length, use the @code{:columns} attribute.  See example below.
13967 @example
13968 #+ATTR_TEXINFO: :columns .5 .5
13969 | a cell | another cell |
13970 @end example
13972 @node Images in Texinfo export
13973 @subsection Images in Texinfo export
13974 @cindex #+ATTR_TEXINFO, in images
13976 Insert a file link to the image in the Org file, and the Texinfo export
13977 back-end inserts the image.  These links must have the usual supported image
13978 extensions and no descriptions.  To scale the image, use @code{:width} and
13979 @code{:height} attributes.  For alternate text, use @code{:alt} and specify
13980 the text using Texinfo code, as shown in the example:
13982 @example
13983 #+ATTR_TEXINFO: :width 1in :alt Alternate @@i@{text@}
13984 [[ridt.pdf]]
13985 @end example
13987 @node Special blocks in Texinfo export
13988 @subsection Special blocks
13989 @cindex #+ATTR_TEXINFO, in special blocks
13991 The Texinfo export back-end converts special blocks to commands with the same
13992 name.  It also adds any @code{:options} attributes to the end of the command,
13993 as shown in this example:
13995 @example
13996 #+ATTR_TEXINFO: :options org-org-export-to-org ...
13997 #+begin_defun
13998 A somewhat obsessive function.
13999 #+end_defun
14000 @end example
14002 @noindent
14003 becomes
14005 @example
14006 @@defun org-org-export-to-org ...
14007 A somewhat obsessive function.
14008 @@end defun
14009 @end example
14011 @node A Texinfo example
14012 @subsection A Texinfo example
14014 Here is a more detailed example Org file.  @inforef{GNU Sample
14015 Texts,,texinfo} for an equivalent example using Texinfo code.
14017 @example
14018 #+TITLE: GNU Sample @{@{@{version@}@}@}
14019 #+SUBTITLE: for version @{@{@{version@}@}@}, @{@{@{updated@}@}@}
14020 #+AUTHOR: A.U. Thor
14021 #+EMAIL: bug-sample@@gnu.org
14023 #+OPTIONS: ':t toc:t author:t email:t
14024 #+LANGUAGE: en
14026 #+MACRO: version 2.0
14027 #+MACRO: updated last updated 4 March 2014
14029 #+TEXINFO_FILENAME: sample.info
14030 #+TEXINFO_HEADER: @@syncodeindex pg cp
14032 #+TEXINFO_DIR_CATEGORY: Texinfo documentation system
14033 #+TEXINFO_DIR_TITLE: sample: (sample)
14034 #+TEXINFO_DIR_DESC: Invoking sample
14036 #+TEXINFO_PRINTED_TITLE: GNU Sample
14038 This manual is for GNU Sample (version @{@{@{version@}@}@},
14039 @{@{@{updated@}@}@}).
14041 * Copying
14042   :PROPERTIES:
14043   :COPYING:  t
14044   :END:
14046   This manual is for GNU Sample (version @{@{@{version@}@}@},
14047   @{@{@{updated@}@}@}), which is an example in the Texinfo documentation.
14049   Copyright \copy 2016 Free Software Foundation, Inc.
14051   #+BEGIN_QUOTE
14052   Permission is granted to copy, distribute and/or modify this
14053   document under the terms of the GNU Free Documentation License,
14054   Version 1.3 or any later version published by the Free Software
14055   Foundation; with no Invariant Sections, with no Front-Cover Texts,
14056   and with no Back-Cover Texts.  A copy of the license is included in
14057   the section entitled "GNU Free Documentation License".
14058   #+END_QUOTE
14060 * Invoking sample
14062   #+PINDEX: sample
14063   #+CINDEX: invoking @@command@{sample@}
14065   This is a sample manual.  There is no sample program to invoke, but
14066   if there were, you could see its basic usage and command line
14067   options here.
14069 * GNU Free Documentation License
14070   :PROPERTIES:
14071   :APPENDIX: t
14072   :END:
14074   #+TEXINFO: @@include fdl.texi
14076 * Index
14077   :PROPERTIES:
14078   :INDEX:    cp
14079   :END:
14080 @end example
14082 @node iCalendar export
14083 @section iCalendar export
14084 @cindex iCalendar export
14086 @vindex org-icalendar-include-todo
14087 @vindex org-icalendar-use-deadline
14088 @vindex org-icalendar-use-scheduled
14089 @vindex org-icalendar-categories
14090 @vindex org-icalendar-alarm-time
14091 A large part of Org mode's inter-operability success is its ability to easily
14092 export to or import from external applications.  The iCalendar export
14093 back-end takes calendar data from Org files and exports to the standard
14094 iCalendar format.
14096 The iCalendar export back-end can also incorporate TODO entries based on the
14097 configuration of the @code{org-icalendar-include-todo} variable.  The
14098 back-end exports plain timestamps as VEVENT, TODO items as VTODO, and also
14099 create events from deadlines that are in non-TODO items.  The back-end uses
14100 the deadlines and scheduling dates in Org TODO items for setting the start
14101 and due dates for the iCalendar TODO entry.  Consult the
14102 @code{org-icalendar-use-deadline} and @code{org-icalendar-use-scheduled}
14103 variables for more details.
14105 For tags on the headline, the iCalendar export back-end makes them into
14106 iCalendar categories.  To tweak the inheritance of tags and TODO states,
14107 configure the variable @code{org-icalendar-categories}.  To assign clock
14108 alarms based on time, configure the @code{org-icalendar-alarm-time} variable.
14110 @vindex org-icalendar-store-UID
14111 @cindex property, ID
14112 The iCalendar format standard requires globally unique identifier---UID---for
14113 each entry.  The iCalendar export back-end creates UIDs during export.  To
14114 save a copy of the UID in the Org file set the variable
14115 @code{org-icalendar-store-UID}.  The back-end looks for the @code{:ID:}
14116 property of the entry for re-using the same UID for subsequent exports.
14118 Since a single Org entry can result in multiple iCalendar entries---as
14119 timestamp, deadline, scheduled item, or TODO item---Org adds prefixes to the
14120 UID, depending on which part of the Org entry triggered the creation of the
14121 iCalendar entry.  Prefixing ensures UIDs remains unique, yet enable
14122 synchronization programs trace the connections.
14124 @table @kbd
14125 @orgcmd{C-c C-e c f,org-icalendar-export-to-ics}
14126 Create iCalendar entries from the current Org buffer and store them in the
14127 same directory, using a file extension @file{.ics}.
14128 @orgcmd{C-c C-e c a, org-icalendar-export-agenda-files}
14129 @vindex org-agenda-files
14130 Create iCalendar entries from Org files in @code{org-agenda-files} and store
14131 in a separate iCalendar file for each Org file.
14132 @orgcmd{C-c C-e c c,org-icalendar-combine-agenda-files}
14133 @vindex org-icalendar-combined-agenda-file
14134 Create a combined iCalendar file from Org files in @code{org-agenda-files}
14135 and write it to @code{org-icalendar-combined-agenda-file} file name.
14136 @end table
14138 @vindex org-use-property-inheritance
14139 @vindex org-icalendar-include-body
14140 @cindex property, SUMMARY
14141 @cindex property, DESCRIPTION
14142 @cindex property, LOCATION
14143 The iCalendar export back-end includes SUMMARY, DESCRIPTION and LOCATION
14144 properties from the Org entries when exporting.  To force the back-end to
14145 inherit the LOCATION property, configure the
14146 @code{org-use-property-inheritance} variable.
14148 When Org entries do not have SUMMARY, DESCRIPTION and LOCATION properties,
14149 the iCalendar export back-end derives the summary from the headline, and
14150 derives the description from the body of the Org item.  The
14151 @code{org-icalendar-include-body} variable limits the maximum number of
14152 characters of the content are turned into its description.
14154 Exporting to iCalendar format depends in large part on the capabilities of
14155 the destination application.  Some are more lenient than others.  Consult the
14156 Org mode FAQ for advice on specific applications.
14158 @node Other built-in back-ends
14159 @section Other built-in back-ends
14160 @cindex export back-ends, built-in
14161 @vindex org-export-backends
14163 Other export back-ends included with Org are:
14165 @itemize
14166 @item @file{ox-man.el}: export to a man page.
14167 @end itemize
14169 To activate such back-ends, either customize @code{org-export-backends} or
14170 load directly with @code{(require 'ox-man)}.  On successful load, the
14171 back-end adds new keys in the export dispatcher (@pxref{The export
14172 dispatcher}).
14174 Follow the comment section of such files, for example, @file{ox-man.el}, for
14175 usage and configuration details.
14177 @node Advanced configuration
14178 @section Advanced configuration
14180 @subheading Hooks
14182 @vindex org-export-before-processing-hook
14183 @vindex org-export-before-parsing-hook
14184 The export process executes two hooks before the actual exporting begins.
14185 The first hook, @code{org-export-before-processing-hook}, runs before any
14186 expansions of macros, Babel code, and include keywords in the buffer.  The
14187 second hook, @code{org-export-before-parsing-hook}, runs before the buffer is
14188 parsed.  Both hooks are specified as functions, see example below.  Their main
14189 use is for heavy duty structural modifications of the Org content.  For
14190 example, removing every headline in the buffer during export:
14192 @lisp
14193 @group
14194 (defun my-headline-removal (backend)
14195   "Remove all headlines in the current buffer.
14196 BACKEND is the export back-end being used, as a symbol."
14197   (org-map-entries
14198    (lambda () (delete-region (point) (progn (forward-line) (point))))))
14200 (add-hook 'org-export-before-parsing-hook 'my-headline-removal)
14201 @end group
14202 @end lisp
14204 Note that the hook function must have a mandatory argument that is a symbol
14205 for the back-end.
14207 @subheading Filters
14209 @cindex Filters, exporting
14210 The Org export process relies on filters to process specific parts of
14211 conversion process.  Filters are just lists of functions to be applied to
14212 certain parts for a given back-end.  The output from the first function in
14213 the filter is passed on to the next function in the filter.  The final output
14214 is the output from the final function in the filter.
14216 The Org export process has many filter sets applicable to different types of
14217 objects, plain text, parse trees, export options, and final output formats.
14218 The filters are named after the element type or object type:
14219 @code{org-export-filter-TYPE-functions}, where @code{TYPE} is the type
14220 targeted by the filter.  Valid types are:
14222 @multitable @columnfractions .33 .33 .33
14223 @item body
14224 @tab bold
14225 @tab babel-call
14226 @item center-block
14227 @tab clock
14228 @tab code
14229 @item diary-sexp
14230 @tab drawer
14231 @tab dynamic-block
14232 @item entity
14233 @tab example-block
14234 @tab export-block
14235 @item export-snippet
14236 @tab final-output
14237 @tab fixed-width
14238 @item footnote-definition
14239 @tab footnote-reference
14240 @tab headline
14241 @item horizontal-rule
14242 @tab inline-babel-call
14243 @tab inline-src-block
14244 @item inlinetask
14245 @tab italic
14246 @tab item
14247 @item keyword
14248 @tab latex-environment
14249 @tab latex-fragment
14250 @item line-break
14251 @tab link
14252 @tab node-property
14253 @item options
14254 @tab paragraph
14255 @tab parse-tree
14256 @item plain-list
14257 @tab plain-text
14258 @tab planning
14259 @item property-drawer
14260 @tab quote-block
14261 @tab radio-target
14262 @item section
14263 @tab special-block
14264 @tab src-block
14265 @item statistics-cookie
14266 @tab strike-through
14267 @tab subscript
14268 @item superscript
14269 @tab table
14270 @tab table-cell
14271 @item table-row
14272 @tab target
14273 @tab timestamp
14274 @item underline
14275 @tab verbatim
14276 @tab verse-block
14277 @end multitable
14279 Here is an example filter that replaces non-breaking spaces @code{~} in the
14280 Org buffer with @code{_} for the @LaTeX{} back-end.
14282 @lisp
14283 @group
14284 (defun my-latex-filter-nobreaks (text backend info)
14285   "Ensure \"_\" are properly handled in LaTeX export."
14286   (when (org-export-derived-backend-p backend 'latex)
14287         (replace-regexp-in-string "_" "~" text)))
14289 (add-to-list 'org-export-filter-plain-text-functions
14290              'my-latex-filter-nobreaks)
14291 @end group
14292 @end lisp
14294 A filter requires three arguments: the code to be transformed, the name of
14295 the back-end, and some optional information about the export process.  The
14296 third argument can be safely ignored.  Note the use of
14297 @code{org-export-derived-backend-p} predicate that tests for @code{latex}
14298 back-end or any other back-end, such as @code{beamer}, derived from
14299 @code{latex}.
14301 @subheading Defining filters for individual files
14303 The Org export can filter not just for back-ends, but also for specific files
14304 through the @code{#+BIND} keyword.  Here is an example with two filters; one
14305 removes brackets from time stamps, and the other removes strike-through text.
14306 The filter functions are defined in a @samp{src} code block in the same Org
14307 file, which is a handy location for debugging.
14309 @example
14310 #+BIND: org-export-filter-timestamp-functions (tmp-f-timestamp)
14311 #+BIND: org-export-filter-strike-through-functions (tmp-f-strike-through)
14312 #+begin_src emacs-lisp :exports results :results none
14313   (defun tmp-f-timestamp (s backend info)
14314     (replace-regexp-in-string "&[lg]t;\\|[][]" "" s))
14315   (defun tmp-f-strike-through (s backend info) "")
14316 #+end_src
14317 @end example
14319 @subheading Extending an existing back-end
14321 Some parts of the conversion process can be extended for certain elements so
14322 as to introduce a new or revised translation.  That is how the HTML export
14323 back-end was extended to handle Markdown format.  The extensions work
14324 seamlessly so any aspect of filtering not done by the extended back-end is
14325 handled by the original back-end.  Of all the export customization in Org,
14326 extending is very powerful as it operates at the parser level.
14328 For this example, make the @code{ascii} back-end display the language used in
14329 a source code block.  Also make it display only when some attribute is
14330 non-@code{nil}, like the following:
14332 @example
14333 #+ATTR_ASCII: :language t
14334 @end example
14336 Then extend @code{ascii} back-end with a custom @code{my-ascii} back-end.
14338 @lisp
14339 @group
14340 (defun my-ascii-src-block (src-block contents info)
14341   "Transcode a SRC-BLOCK element from Org to ASCII.
14342 CONTENTS is nil.  INFO is a plist used as a communication
14343 channel."
14344   (if (not (org-export-read-attribute :attr_ascii src-block :language))
14345     (org-export-with-backend 'ascii src-block contents info)
14346   (concat
14347    (format ",--[ %s ]--\n%s`----"
14348            (org-element-property :language src-block)
14349            (replace-regexp-in-string
14350             "^" "| "
14351             (org-element-normalize-string
14352              (org-export-format-code-default src-block info)))))))
14354 (org-export-define-derived-backend 'my-ascii 'ascii
14355   :translate-alist '((src-block . my-ascii-src-block)))
14356 @end group
14357 @end lisp
14359 The @code{my-ascii-src-block} function looks at the attribute above the
14360 current element.  If not true, hands over to @code{ascii} back-end.  If true,
14361 which it is in this example, it creates a box around the code and leaves room
14362 for the inserting a string for language.  The last form creates the new
14363 back-end that springs to action only when translating @code{src-block} type
14364 elements.
14366 To use the newly defined back-end, call the following from an Org buffer:
14368 @smalllisp
14369 (org-export-to-buffer 'my-ascii "*Org MY-ASCII Export*")
14370 @end smalllisp
14372 Further steps to consider would be an interactive function, self-installing
14373 an item in the export dispatcher menu, and other user-friendly improvements.
14375 @node Export in foreign buffers
14376 @section Export in foreign buffers
14378 The export back-ends in Org often include commands to convert selected
14379 regions.  A convenient feature of this in-place conversion is that the
14380 exported output replaces the original source.  Here are such functions:
14382 @table @code
14383 @item org-html-convert-region-to-html
14384 Convert the selected region into HTML.
14385 @item org-latex-convert-region-to-latex
14386 Convert the selected region into @LaTeX{}.
14387 @item org-texinfo-convert-region-to-texinfo
14388 Convert the selected region into @code{Texinfo}.
14389 @item org-md-convert-region-to-md
14390 Convert the selected region into @code{MarkDown}.
14391 @end table
14393 In-place conversions are particularly handy for quick conversion of tables
14394 and lists in foreign buffers.  For example, turn on the minor mode @code{M-x
14395 orgstruct-mode} in an HTML buffer, then use the convenient Org keyboard
14396 commands to create a list, select it, and covert it to HTML with @code{M-x
14397 org-html-convert-region-to-html RET}.
14400 @node Publishing
14401 @chapter Publishing
14402 @cindex publishing
14404 Org includes a publishing management system that allows you to configure
14405 automatic HTML conversion of @emph{projects} composed of interlinked org
14406 files.  You can also configure Org to automatically upload your exported HTML
14407 pages and related attachments, such as images and source code files, to a web
14408 server.
14410 You can also use Org to convert files into PDF, or even combine HTML and PDF
14411 conversion so that files are available in both formats on the server.
14413 Publishing has been contributed to Org by David O'Toole.
14415 @menu
14416 * Configuration::               Defining projects
14417 * Uploading files::             How to get files up on the server
14418 * Sample configuration::        Example projects
14419 * Triggering publication::      Publication commands
14420 @end menu
14422 @node Configuration
14423 @section Configuration
14425 Publishing needs significant configuration to specify files, destination
14426 and many other properties of a project.
14428 @menu
14429 * Project alist::               The central configuration variable
14430 * Sources and destinations::    From here to there
14431 * Selecting files::             What files are part of the project?
14432 * Publishing action::           Setting the function doing the publishing
14433 * Publishing options::          Tweaking HTML/@LaTeX{} export
14434 * Publishing links::            Which links keep working after publishing?
14435 * Sitemap::                     Generating a list of all pages
14436 * Generating an index::         An index that reaches across pages
14437 @end menu
14439 @node Project alist
14440 @subsection The variable @code{org-publish-project-alist}
14441 @cindex org-publish-project-alist
14442 @cindex projects, for publishing
14444 @vindex org-publish-project-alist
14445 Publishing is configured almost entirely through setting the value of one
14446 variable, called @code{org-publish-project-alist}.  Each element of the list
14447 configures one project, and may be in one of the two following forms:
14449 @lisp
14450    ("project-name" :property value :property value ...)
14451      @r{i.e., a well-formed property list with alternating keys and values}
14452 @r{or}
14453    ("project-name" :components ("project-name" "project-name" ...))
14455 @end lisp
14457 In both cases, projects are configured by specifying property values.  A
14458 project defines the set of files that will be published, as well as the
14459 publishing configuration to use when publishing those files.  When a project
14460 takes the second form listed above, the individual members of the
14461 @code{:components} property are taken to be sub-projects, which group
14462 together files requiring different publishing options.  When you publish such
14463 a ``meta-project'', all the components will also be published, in the
14464 sequence given.
14466 @node Sources and destinations
14467 @subsection Sources and destinations for files
14468 @cindex directories, for publishing
14470 Most properties are optional, but some should always be set.  In
14471 particular, Org needs to know where to look for source files,
14472 and where to put published files.
14474 @multitable @columnfractions 0.3 0.7
14475 @item @code{:base-directory}
14476 @tab Directory containing publishing source files
14477 @item @code{:publishing-directory}
14478 @tab Directory where output files will be published.  You can directly
14479 publish to a web server using a file name syntax appropriate for
14480 the Emacs @file{tramp} package.  Or you can publish to a local directory and
14481 use external tools to upload your website (@pxref{Uploading files}).
14482 @item @code{:preparation-function}
14483 @tab Function or list of functions to be called before starting the
14484 publishing process, for example, to run @code{make} for updating files to be
14485 published.  Each preparation function is called with a single argument, the
14486 project property list.
14487 @item @code{:completion-function}
14488 @tab Function or list of functions called after finishing the publishing
14489 process, for example, to change permissions of the resulting files.  Each
14490 completion function is called with a single argument, the project property
14491 list.
14492 @end multitable
14493 @noindent
14495 @node Selecting files
14496 @subsection Selecting files
14497 @cindex files, selecting for publishing
14499 By default, all files with extension @file{.org} in the base directory
14500 are considered part of the project.  This can be modified by setting the
14501 properties
14502 @multitable @columnfractions 0.25 0.75
14503 @item @code{:base-extension}
14504 @tab Extension (without the dot!) of source files.  This actually is a
14505 regular expression.  Set this to the symbol @code{any} if you want to get all
14506 files in @code{:base-directory}, even without extension.
14508 @item @code{:exclude}
14509 @tab Regular expression to match file names that should not be
14510 published, even though they have been selected on the basis of their
14511 extension.
14513 @item @code{:include}
14514 @tab List of files to be included regardless of @code{:base-extension}
14515 and @code{:exclude}.
14517 @item @code{:recursive}
14518 @tab non-@code{nil} means, check base-directory recursively for files to publish.
14519 @end multitable
14521 @node Publishing action
14522 @subsection Publishing action
14523 @cindex action, for publishing
14525 Publishing means that a file is copied to the destination directory and
14526 possibly transformed in the process.  The default transformation is to export
14527 Org files as HTML files, and this is done by the function
14528 @code{org-html-publish-to-html}, which calls the HTML exporter (@pxref{HTML
14529 export}).  But you also can publish your content as PDF files using
14530 @code{org-latex-publish-to-pdf} or as @code{ascii}, @code{Texinfo}, etc.,
14531 using the corresponding functions.
14533 If you want to publish the Org file as an @code{.org} file but with the
14534 @i{archived}, @i{commented} and @i{tag-excluded} trees removed, use the
14535 function @code{org-org-publish-to-org}.  This will produce @file{file.org}
14536 and put it in the publishing directory.  If you want a htmlized version of
14537 this file, set the parameter @code{:htmlized-source} to @code{t}, it will
14538 produce @file{file.org.html} in the publishing directory@footnote{If the
14539 publishing directory is the same than the source directory, @file{file.org}
14540 will be exported as @file{file.org.org}, so probably don't want to do this.}.
14542 Other files like images only need to be copied to the publishing destination.
14543 For this you can use @code{org-publish-attachment}.  For non-org files, you
14544 always need to specify the publishing function:
14546 @multitable @columnfractions 0.3 0.7
14547 @item @code{:publishing-function}
14548 @tab Function executing the publication of a file.  This may also be a
14549 list of functions, which will all be called in turn.
14550 @item @code{:htmlized-source}
14551 @tab non-@code{nil} means, publish htmlized source.
14552 @end multitable
14554 The function must accept three arguments: a property list containing at least
14555 a @code{:publishing-directory} property, the name of the file to be published
14556 and the path to the publishing directory of the output file.  It should take
14557 the specified file, make the necessary transformation (if any) and place the
14558 result into the destination folder.
14560 @node Publishing options
14561 @subsection Options for the exporters
14562 @cindex options, for publishing
14564 The property list can be used to set export options during the publishing
14565 process.  In most cases, these properties correspond to user variables in
14566 Org.  While some properties are available for all export back-ends, most of
14567 them are back-end specific.  The following sections list properties along
14568 with the variable they belong to.  See the documentation string of these
14569 options for details.
14571 @vindex org-publish-project-alist
14572 When a property is given a value in @code{org-publish-project-alist}, its
14573 setting overrides the value of the corresponding user variable (if any)
14574 during publishing.  Options set within a file (@pxref{Export settings}),
14575 however, override everything.
14577 @subsubheading Generic properties
14579 @multitable {@code{:with-sub-superscript}}  {@code{org-export-with-sub-superscripts}}
14580 @item @code{:archived-trees}        @tab @code{org-export-with-archived-trees}
14581 @item @code{:exclude-tags}          @tab @code{org-export-exclude-tags}
14582 @item @code{:headline-levels}       @tab @code{org-export-headline-levels}
14583 @item @code{:language}              @tab @code{org-export-default-language}
14584 @item @code{:preserve-breaks}       @tab @code{org-export-preserve-breaks}
14585 @item @code{:section-numbers}       @tab @code{org-export-with-section-numbers}
14586 @item @code{:select-tags}           @tab @code{org-export-select-tags}
14587 @item @code{:with-author}           @tab @code{org-export-with-author}
14588 @item @code{:with-broken-links}     @tab @code{org-export-with-broken-links}
14589 @item @code{:with-clocks}           @tab @code{org-export-with-clocks}
14590 @item @code{:with-creator}          @tab @code{org-export-with-creator}
14591 @item @code{:with-date}             @tab @code{org-export-with-date}
14592 @item @code{:with-drawers}          @tab @code{org-export-with-drawers}
14593 @item @code{:with-email}            @tab @code{org-export-with-email}
14594 @item @code{:with-emphasize}        @tab @code{org-export-with-emphasize}
14595 @item @code{:with-fixed-width}      @tab @code{org-export-with-fixed-width}
14596 @item @code{:with-footnotes}        @tab @code{org-export-with-footnotes}
14597 @item @code{:with-latex}            @tab @code{org-export-with-latex}
14598 @item @code{:with-planning}         @tab @code{org-export-with-planning}
14599 @item @code{:with-priority}         @tab @code{org-export-with-priority}
14600 @item @code{:with-properties}       @tab @code{org-export-with-properties}
14601 @item @code{:with-special-strings}  @tab @code{org-export-with-special-strings}
14602 @item @code{:with-sub-superscript}  @tab @code{org-export-with-sub-superscripts}
14603 @item @code{:with-tables}           @tab @code{org-export-with-tables}
14604 @item @code{:with-tags}             @tab @code{org-export-with-tags}
14605 @item @code{:with-tasks}            @tab @code{org-export-with-tasks}
14606 @item @code{:with-timestamps}       @tab @code{org-export-with-timestamps}
14607 @item @code{:with-title}            @tab @code{org-export-with-title}
14608 @item @code{:with-toc}              @tab @code{org-export-with-toc}
14609 @item @code{:with-todo-keywords}    @tab @code{org-export-with-todo-keywords}
14610 @end multitable
14612 @subsubheading ASCII specific properties
14614 @multitable {@code{:ascii-table-keep-all-vertical-lines}} {@code{org-ascii-table-keep-all-vertical-lines}}
14615 @item @code{:ascii-bullets}                       @tab @code{org-ascii-bullets}
14616 @item @code{:ascii-caption-above}                 @tab @code{org-ascii-caption-above}
14617 @item @code{:ascii-charset}                       @tab @code{org-ascii-charset}
14618 @item @code{:ascii-global-margin}                 @tab @code{org-ascii-global-margin}
14619 @item @code{:ascii-format-drawer-function}        @tab @code{org-ascii-format-drawer-function}
14620 @item @code{:ascii-format-inlinetask-function}    @tab @code{org-ascii-format-inlinetask-function}
14621 @item @code{:ascii-headline-spacing}              @tab @code{org-ascii-headline-spacing}
14622 @item @code{:ascii-indented-line-width}           @tab @code{org-ascii-indented-line-width}
14623 @item @code{:ascii-inlinetask-width}              @tab @code{org-ascii-inlinetask-width}
14624 @item @code{:ascii-inner-margin}                  @tab @code{org-ascii-inner-margin}
14625 @item @code{:ascii-links-to-notes}                @tab @code{org-ascii-links-to-notes}
14626 @item @code{:ascii-list-margin}                   @tab @code{org-ascii-list-margin}
14627 @item @code{:ascii-paragraph-spacing}             @tab @code{org-ascii-paragraph-spacing}
14628 @item @code{:ascii-quote-margin}                  @tab @code{org-ascii-quote-margin}
14629 @item @code{:ascii-table-keep-all-vertical-lines} @tab @code{org-ascii-table-keep-all-vertical-lines}
14630 @item @code{:ascii-table-use-ascii-art}           @tab @code{org-ascii-table-use-ascii-art}
14631 @item @code{:ascii-table-widen-columns}           @tab @code{org-ascii-table-widen-columns}
14632 @item @code{:ascii-text-width}                    @tab @code{org-ascii-text-width}
14633 @item @code{:ascii-underline}                     @tab @code{org-ascii-underline}
14634 @item @code{:ascii-verbatim-format}               @tab @code{org-ascii-verbatim-format}
14635 @end multitable
14637 @subsubheading Beamer specific properties
14639 @multitable {@code{:beamer-frame-default-options}} {@code{org-beamer-frame-default-options}}
14640 @item @code{:beamer-theme}                 @tab @code{org-beamer-theme}
14641 @item @code{:beamer-column-view-format}    @tab @code{org-beamer-column-view-format}
14642 @item @code{:beamer-environments-extra}    @tab @code{org-beamer-environments-extra}
14643 @item @code{:beamer-frame-default-options} @tab @code{org-beamer-frame-default-options}
14644 @item @code{:beamer-outline-frame-options} @tab @code{org-beamer-outline-frame-options}
14645 @item @code{:beamer-outline-frame-title}   @tab @code{org-beamer-outline-frame-title}
14646 @item @code{:beamer-subtitle-format}       @tab @code{org-beamer-subtitle-format}
14647 @end multitable
14649 @subsubheading HTML specific properties
14651 @multitable {@code{:html-table-use-header-tags-for-first-column}} {@code{org-html-table-use-header-tags-for-first-column}}
14652 @item @code{:html-allow-name-attribute-in-anchors} @tab @code{org-html-allow-name-attribute-in-anchors}
14653 @item @code{:html-checkbox-type}              @tab @code{org-html-checkbox-type}
14654 @item @code{:html-container}                  @tab @code{org-html-container-element}
14655 @item @code{:html-divs}                       @tab @code{org-html-divs}
14656 @item @code{:html-doctype}                    @tab @code{org-html-doctype}
14657 @item @code{:html-extension}                  @tab @code{org-html-extension}
14658 @item @code{:html-footnote-format}            @tab @code{org-html-footnote-format}
14659 @item @code{:html-footnote-separator}         @tab @code{org-html-footnote-separator}
14660 @item @code{:html-footnotes-section}          @tab @code{org-html-footnotes-section}
14661 @item @code{:html-format-drawer-function}     @tab @code{org-html-format-drawer-function}
14662 @item @code{:html-format-headline-function}   @tab @code{org-html-format-headline-function}
14663 @item @code{:html-format-inlinetask-function} @tab @code{org-html-format-inlinetask-function}
14664 @item @code{:html-head-extra}                 @tab @code{org-html-head-extra}
14665 @item @code{:html-head-include-default-style} @tab @code{org-html-head-include-default-style}
14666 @item @code{:html-head-include-scripts}       @tab @code{org-html-head-include-scripts}
14667 @item @code{:html-head}                       @tab @code{org-html-head}
14668 @item @code{:html-home/up-format}             @tab @code{org-html-home/up-format}
14669 @item @code{:html-html5-fancy}                @tab @code{org-html-html5-fancy}
14670 @item @code{:html-indent}                     @tab @code{org-html-indent}
14671 @item @code{:html-infojs-options}             @tab @code{org-html-infojs-options}
14672 @item @code{:html-infojs-template}            @tab @code{org-html-infojs-template}
14673 @item @code{:html-inline-image-rules}         @tab @code{org-html-inline-image-rules}
14674 @item @code{:html-inline-images}              @tab @code{org-html-inline-images}
14675 @item @code{:html-link-home}                  @tab @code{org-html-link-home}
14676 @item @code{:html-link-org-files-as-html}     @tab @code{org-html-link-org-files-as-html}
14677 @item @code{:html-link-up}                    @tab @code{org-html-link-up}
14678 @item @code{:html-link-use-abs-url}           @tab @code{org-html-link-use-abs-url}
14679 @item @code{:html-mathjax-options}            @tab @code{org-html-mathjax-options}
14680 @item @code{:html-mathjax-template}           @tab @code{org-html-mathjax-template}
14681 @item @code{:html-metadata-timestamp-format}  @tab @code{org-html-metadata-timestamp-format}
14682 @item @code{:html-postamble-format}           @tab @code{org-html-postamble-format}
14683 @item @code{:html-postamble}                  @tab @code{org-html-postamble}
14684 @item @code{:html-preamble-format}            @tab @code{org-html-preamble-format}
14685 @item @code{:html-preamble}                   @tab @code{org-html-preamble}
14686 @item @code{:html-table-align-individual-fields} @tab @code{org-html-table-align-individual-fields}
14687 @item @code{:html-table-attributes}           @tab @code{org-html-table-default-attributes}
14688 @item @code{:html-table-caption-above}        @tab @code{org-html-table-caption-above}
14689 @item @code{:html-table-data-tags}            @tab @code{org-html-table-data-tags}
14690 @item @code{:html-table-header-tags}          @tab @code{org-html-table-header-tags}
14691 @item @code{:html-table-row-tags}             @tab @code{org-html-table-row-tags}
14692 @item @code{:html-table-use-header-tags-for-first-column} @tab @code{org-html-table-use-header-tags-for-first-column}
14693 @item @code{:html-tag-class-prefix}           @tab @code{org-html-tag-class-prefix}
14694 @item @code{:html-text-markup-alist}          @tab @code{org-html-text-markup-alist}
14695 @item @code{:html-todo-kwd-class-prefix}      @tab @code{org-html-todo-kwd-class-prefix}
14696 @item @code{:html-toplevel-hlevel}            @tab @code{org-html-toplevel-hlevel}
14697 @item @code{:html-use-infojs}                 @tab @code{org-html-use-infojs}
14698 @item @code{:html-validation-link}            @tab @code{org-html-validation-link}
14699 @item @code{:html-viewport}                   @tab @code{org-html-viewport}
14700 @item @code{:html-xml-declaration}            @tab @code{org-html-xml-declaration}
14701 @end multitable
14703 @subsubheading @LaTeX{} specific properties
14705 @multitable {@code{:latex-link-with-unknown-path-format}} {@code{org-latex-link-with-unknown-path-format}}
14706 @item @code{:latex-active-timestamp-format}    @tab @code{org-latex-active-timestamp-format}
14707 @item @code{:latex-caption-above}              @tab @code{org-latex-caption-above}
14708 @item @code{:latex-classes}                    @tab @code{org-latex-classes}
14709 @item @code{:latex-class}                      @tab @code{org-latex-default-class}
14710 @item @code{:latex-compiler}                   @tab @code{org-latex-compiler}
14711 @item @code{:latex-default-figure-position}    @tab @code{org-latex-default-figure-position}
14712 @item @code{:latex-default-table-environment}  @tab @code{org-latex-default-table-environment}
14713 @item @code{:latex-default-table-mode}         @tab @code{org-latex-default-table-mode}
14714 @item @code{:latex-diary-timestamp-format}     @tab @code{org-latex-diary-timestamp-format}
14715 @item @code{:latex-footnote-defined-format}    @tab @code{org-latex-footnote-defined-format}
14716 @item @code{:latex-footnote-separator}         @tab @code{org-latex-footnote-separator}
14717 @item @code{:latex-format-drawer-function}     @tab @code{org-latex-format-drawer-function}
14718 @item @code{:latex-format-headline-function}   @tab @code{org-latex-format-headline-function}
14719 @item @code{:latex-format-inlinetask-function} @tab @code{org-latex-format-inlinetask-function}
14720 @item @code{:latex-hyperref-template}          @tab @code{org-latex-hyperref-template}
14721 @item @code{:latex-image-default-height}       @tab @code{org-latex-image-default-height}
14722 @item @code{:latex-image-default-option}       @tab @code{org-latex-image-default-option}
14723 @item @code{:latex-image-default-width}        @tab @code{org-latex-image-default-width}
14724 @item @code{:latex-images-centered}            @tab @code{org-latex-images-centered}
14725 @item @code{:latex-inactive-timestamp-format}  @tab @code{org-latex-inactive-timestamp-format}
14726 @item @code{:latex-inline-image-rules}         @tab @code{org-latex-inline-image-rules}
14727 @item @code{:latex-link-with-unknown-path-format} @tab @code{org-latex-link-with-unknown-path-format}
14728 @item @code{:latex-listings-langs}             @tab @code{org-latex-listings-langs}
14729 @item @code{:latex-listings-options}           @tab @code{org-latex-listings-options}
14730 @item @code{:latex-listings}                   @tab @code{org-latex-listings}
14731 @item @code{:latex-minted-langs}               @tab @code{org-latex-minted-langs}
14732 @item @code{:latex-minted-options}             @tab @code{org-latex-minted-options}
14733 @item @code{:latex-prefer-user-labels}         @tab @code{org-latex-prefer-user-labels}
14734 @item @code{:latex-subtitle-format}            @tab @code{org-latex-subtitle-format}
14735 @item @code{:latex-subtitle-separate}          @tab @code{org-latex-subtitle-separate}
14736 @item @code{:latex-table-scientific-notation}  @tab @code{org-latex-table-scientific-notation}
14737 @item @code{:latex-tables-booktabs}            @tab @code{org-latex-tables-booktabs}
14738 @item @code{:latex-tables-centered}            @tab @code{org-latex-tables-centered}
14739 @item @code{:latex-text-markup-alist}          @tab @code{org-latex-text-markup-alist}
14740 @item @code{:latex-title-command}              @tab @code{org-latex-title-command}
14741 @item @code{:latex-toc-command}                @tab @code{org-latex-toc-command}
14742 @end multitable
14744 @subsubheading Markdown specific properties
14746 @multitable {@code{:md-footnotes-section}} {@code{org-md-footnotes-section}}
14747 @item @code{:md-footnote-format} @tab @code{org-md-footnote-format}
14748 @item @code{:md-footnotes-section} @tab @code{org-md-footnotes-section}
14749 @item @code{:md-headline-style} @tab @code{org-md-headline-style}
14750 @end multitable
14752 @subsubheading ODT specific properties
14754 @multitable {@code{:odt-format-inlinetask-function}} {@code{org-odt-format-inlinetask-function}}
14755 @item @code{:odt-content-template-file}      @tab @code{org-odt-content-template-file}
14756 @item @code{:odt-display-outline-level}      @tab @code{org-odt-display-outline-level}
14757 @item @code{:odt-fontify-srcblocks}          @tab @code{org-odt-fontify-srcblocks}
14758 @item @code{:odt-format-drawer-function}     @tab @code{org-odt-format-drawer-function}
14759 @item @code{:odt-format-headline-function}   @tab @code{org-odt-format-headline-function}
14760 @item @code{:odt-format-inlinetask-function} @tab @code{org-odt-format-inlinetask-function}
14761 @item @code{:odt-inline-formula-rules}       @tab @code{org-odt-inline-formula-rules}
14762 @item @code{:odt-inline-image-rules}         @tab @code{org-odt-inline-image-rules}
14763 @item @code{:odt-pixels-per-inch}            @tab @code{org-odt-pixels-per-inch}
14764 @item @code{:odt-styles-file}                @tab @code{org-odt-styles-file}
14765 @item @code{:odt-table-styles}               @tab @code{org-odt-table-styles}
14766 @item @code{:odt-use-date-fields}            @tab @code{org-odt-use-date-fields}
14767 @end multitable
14769 @subsubheading Texinfo specific properties
14771 @multitable {@code{:texinfo-link-with-unknown-path-format}} {@code{org-texinfo-link-with-unknown-path-format}}
14772 @item @code{:texinfo-active-timestamp-format}    @tab @code{org-texinfo-active-timestamp-format}
14773 @item @code{:texinfo-classes}                    @tab @code{org-texinfo-classes}
14774 @item @code{:texinfo-class}                      @tab @code{org-texinfo-default-class}
14775 @item @code{:texinfo-def-table-markup}           @tab @code{org-texinfo-def-table-markup}
14776 @item @code{:texinfo-diary-timestamp-format}     @tab @code{org-texinfo-diary-timestamp-format}
14777 @item @code{:texinfo-filename}                   @tab @code{org-texinfo-filename}
14778 @item @code{:texinfo-format-drawer-function}     @tab @code{org-texinfo-format-drawer-function}
14779 @item @code{:texinfo-format-headline-function}   @tab @code{org-texinfo-format-headline-function}
14780 @item @code{:texinfo-format-inlinetask-function} @tab @code{org-texinfo-format-inlinetask-function}
14781 @item @code{:texinfo-inactive-timestamp-format}  @tab @code{org-texinfo-inactive-timestamp-format}
14782 @item @code{:texinfo-link-with-unknown-path-format} @tab @code{org-texinfo-link-with-unknown-path-format}
14783 @item @code{:texinfo-node-description-column}    @tab @code{org-texinfo-node-description-column}
14784 @item @code{:texinfo-table-scientific-notation}  @tab @code{org-texinfo-table-scientific-notation}
14785 @item @code{:texinfo-tables-verbatim}            @tab @code{org-texinfo-tables-verbatim}
14786 @item @code{:texinfo-text-markup-alist}          @tab @code{org-texinfo-text-markup-alist}
14787 @end multitable
14789 @node Publishing links
14790 @subsection Links between published files
14791 @cindex links, publishing
14793 To create a link from one Org file to another, you would use something like
14794 @samp{[[file:foo.org][The foo]]} or simply @samp{file:foo.org}
14795 (@pxref{External links}).  When published, this link becomes a link to
14796 @file{foo.html}.  You can thus interlink the pages of your ``org web''
14797 project and the links will work as expected when you publish them to HTML.
14798 If you also publish the Org source file and want to link to it, use an
14799 @code{http:} link instead of a @code{file:} link, because @code{file:} links
14800 are converted to link to the corresponding @file{html} file.
14802 You may also link to related files, such as images.  Provided you are careful
14803 with relative file names, and provided you have also configured Org to upload
14804 the related files, these links will work too.  See @ref{Complex example}, for
14805 an example of this usage.
14807 Eventually, links between published documents can contain some search options
14808 (@pxref{Search options}), which will be resolved to the appropriate location
14809 in the linked file.  For example, once published to HTML, the following links
14810 all point to a dedicated anchor in @file{foo.html}.
14812 @example
14813 [[file:foo.org::*heading]]
14814 [[file:foo.org::#custom-id]]
14815 [[file:foo.org::target]]
14816 @end example
14818 @node Sitemap
14819 @subsection Generating a sitemap
14820 @cindex sitemap, of published pages
14822 The following properties may be used to control publishing of
14823 a map of files for a given project.
14825 @multitable @columnfractions 0.35 0.65
14826 @item @code{:auto-sitemap}
14827 @tab When non-@code{nil}, publish a sitemap during @code{org-publish-current-project}
14828 or @code{org-publish-all}.
14830 @item @code{:sitemap-filename}
14831 @tab Filename for output of sitemap.  Defaults to @file{sitemap.org} (which
14832 becomes @file{sitemap.html}).
14834 @item @code{:sitemap-title}
14835 @tab Title of sitemap page.  Defaults to name of file.
14837 @item @code{:sitemap-function}
14838 @tab Plug-in function to use for generation of the sitemap.
14839 Defaults to @code{org-publish-org-sitemap}, which generates a plain list
14840 of links to all files in the project.
14842 @item @code{:sitemap-sort-folders}
14843 @tab Where folders should appear in the sitemap.  Set this to @code{first}
14844 (default) or @code{last} to display folders first or last,
14845 respectively.  Any other value will mix files and folders.
14847 @item @code{:sitemap-sort-files}
14848 @tab How the files are sorted in the site map.  Set this to
14849 @code{alphabetically} (default), @code{chronologically} or
14850 @code{anti-chronologically}.  @code{chronologically} sorts the files with
14851 older date first while @code{anti-chronologically} sorts the files with newer
14852 date first.  @code{alphabetically} sorts the files alphabetically.  The date of
14853 a file is retrieved with @code{org-publish-find-date}.
14855 @item @code{:sitemap-ignore-case}
14856 @tab Should sorting be case-sensitive?  Default @code{nil}.
14858 @item @code{:sitemap-file-entry-format}
14859 @tab With this option one can tell how a sitemap's entry is formatted in the
14860 sitemap.  This is a format string with some escape sequences: @code{%t} stands
14861 for the title of the file, @code{%a} stands for the author of the file and
14862 @code{%d} stands for the date of the file.  The date is retrieved with the
14863 @code{org-publish-find-date} function and formatted with
14864 @code{org-publish-sitemap-date-format}.  Default @code{%t}.
14866 @item @code{:sitemap-date-format}
14867 @tab Format string for the @code{format-time-string} function that tells how
14868 a sitemap entry's date is to be formatted.  This property bypasses
14869 @code{org-publish-sitemap-date-format} which defaults to @code{%Y-%m-%d}.
14871 @item @code{:sitemap-sans-extension}
14872 @tab When non-@code{nil}, remove filenames' extensions from the generated sitemap.
14873 Useful to have cool URIs (see @uref{http://www.w3.org/Provider/Style/URI}).
14874 Defaults to @code{nil}.
14876 @end multitable
14878 @node Generating an index
14879 @subsection Generating an index
14880 @cindex index, in a publishing project
14882 Org mode can generate an index across the files of a publishing project.
14884 @multitable @columnfractions 0.25 0.75
14885 @item @code{:makeindex}
14886 @tab When non-@code{nil}, generate in index in the file @file{theindex.org} and
14887 publish it as @file{theindex.html}.
14888 @end multitable
14890 The file will be created when first publishing a project with the
14891 @code{:makeindex} set.  The file only contains a statement @code{#+INCLUDE:
14892 "theindex.inc"}.  You can then build around this include statement by adding
14893 a title, style information, etc.
14895 @cindex #+INDEX
14896 Index entries are specified with @code{#+INDEX} keyword.  An entry that
14897 contains an exclamation mark will create a sub item.
14899 @example
14900 * Curriculum Vitae
14901 #+INDEX: CV
14902 #+INDEX: Application!CV
14903 @end example
14905 @node Uploading files
14906 @section Uploading files
14907 @cindex rsync
14908 @cindex unison
14910 For those people already utilizing third party sync tools such as
14911 @command{rsync} or @command{unison}, it might be preferable not to use the built in
14912 @i{remote} publishing facilities of Org mode which rely heavily on
14913 Tramp.  Tramp, while very useful and powerful, tends not to be
14914 so efficient for multiple file transfer and has been known to cause problems
14915 under heavy usage.
14917 Specialized synchronization utilities offer several advantages.  In addition
14918 to timestamp comparison, they also do content and permissions/attribute
14919 checks.  For this reason you might prefer to publish your web to a local
14920 directory (possibly even @i{in place} with your Org files) and then use
14921 @file{unison} or @file{rsync} to do the synchronization with the remote host.
14923 Since Unison (for example) can be configured as to which files to transfer to
14924 a certain remote destination, it can greatly simplify the project publishing
14925 definition.  Simply keep all files in the correct location, process your Org
14926 files with @code{org-publish} and let the synchronization tool do the rest.
14927 You do not need, in this scenario, to include attachments such as @file{jpg},
14928 @file{css} or @file{gif} files in the project definition since the 3rd party
14929 tool syncs them.
14931 Publishing to a local directory is also much faster than to a remote one, so
14932 that you can afford more easily to republish entire projects.  If you set
14933 @code{org-publish-use-timestamps-flag} to @code{nil}, you gain the main
14934 benefit of re-including any changed external files such as source example
14935 files you might include with @code{#+INCLUDE:}.  The timestamp mechanism in
14936 Org is not smart enough to detect if included files have been modified.
14938 @node Sample configuration
14939 @section Sample configuration
14941 Below we provide two example configurations.  The first one is a simple
14942 project publishing only a set of Org files.  The second example is
14943 more complex, with a multi-component project.
14945 @menu
14946 * Simple example::              One-component publishing
14947 * Complex example::             A multi-component publishing example
14948 @end menu
14950 @node Simple example
14951 @subsection Example: simple publishing configuration
14953 This example publishes a set of Org files to the @file{public_html}
14954 directory on the local machine.
14956 @lisp
14957 (setq org-publish-project-alist
14958       '(("org"
14959          :base-directory "~/org/"
14960          :publishing-directory "~/public_html"
14961          :section-numbers nil
14962          :with-toc nil
14963          :html-head "<link rel=\"stylesheet\"
14964                     href=\"../other/mystyle.css\"
14965                     type=\"text/css\"/>")))
14966 @end lisp
14968 @node Complex example
14969 @subsection Example: complex publishing configuration
14971 This more complicated example publishes an entire website, including
14972 Org files converted to HTML, image files, Emacs Lisp source code, and
14973 style sheets.  The publishing directory is remote and private files are
14974 excluded.
14976 To ensure that links are preserved, care should be taken to replicate
14977 your directory structure on the web server, and to use relative file
14978 paths.  For example, if your Org files are kept in @file{~/org} and your
14979 publishable images in @file{~/images}, you would link to an image with
14981 @example
14982 file:../images/myimage.png
14983 @end example
14985 On the web server, the relative path to the image should be the
14986 same.  You can accomplish this by setting up an "images" folder in the
14987 right place on the web server, and publishing images to it.
14989 @lisp
14990 (setq org-publish-project-alist
14991       '(("orgfiles"
14992           :base-directory "~/org/"
14993           :base-extension "org"
14994           :publishing-directory "/ssh:user@@host:~/html/notebook/"
14995           :publishing-function org-html-publish-to-html
14996           :exclude "PrivatePage.org"   ;; regexp
14997           :headline-levels 3
14998           :section-numbers nil
14999           :with-toc nil
15000           :html-head "<link rel=\"stylesheet\"
15001                   href=\"../other/mystyle.css\" type=\"text/css\"/>"
15002           :html-preamble t)
15004          ("images"
15005           :base-directory "~/images/"
15006           :base-extension "jpg\\|gif\\|png"
15007           :publishing-directory "/ssh:user@@host:~/html/images/"
15008           :publishing-function org-publish-attachment)
15010          ("other"
15011           :base-directory "~/other/"
15012           :base-extension "css\\|el"
15013           :publishing-directory "/ssh:user@@host:~/html/other/"
15014           :publishing-function org-publish-attachment)
15015          ("website" :components ("orgfiles" "images" "other"))))
15016 @end lisp
15018 @node Triggering publication
15019 @section Triggering publication
15021 Once properly configured, Org can publish with the following commands:
15023 @table @kbd
15024 @orgcmd{C-c C-e P x,org-publish}
15025 Prompt for a specific project and publish all files that belong to it.
15026 @orgcmd{C-c C-e P p,org-publish-current-project}
15027 Publish the project containing the current file.
15028 @orgcmd{C-c C-e P f,org-publish-current-file}
15029 Publish only the current file.
15030 @orgcmd{C-c C-e P a,org-publish-all}
15031 Publish every project.
15032 @end table
15034 @vindex org-publish-use-timestamps-flag
15035 Org uses timestamps to track when a file has changed.  The above functions
15036 normally only publish changed files.  You can override this and force
15037 publishing of all files by giving a prefix argument to any of the commands
15038 above, or by customizing the variable @code{org-publish-use-timestamps-flag}.
15039 This may be necessary in particular if files include other files via
15040 @code{#+SETUPFILE:} or @code{#+INCLUDE:}.
15043 @node Working with source code
15044 @chapter Working with source code
15045 @cindex Schulte, Eric
15046 @cindex Davison, Dan
15047 @cindex source code, working with
15049 Source code here refers to any code typed in Org mode documents.  Org can
15050 manage source code in any Org file once such code is tagged with begin and
15051 end markers.  Working with source code begins with tagging source code
15052 blocks.  Tagged @samp{src} code blocks are not restricted to the preamble or
15053 the end of an Org document; they can go anywhere---with a few exceptions,
15054 such as not inside comments and fixed width areas.  Here's a sample
15055 @samp{src} code block in emacs-lisp:
15057 @example
15058 #+BEGIN_SRC emacs-lisp
15059   (defun org-xor (a b)
15060      "Exclusive or."
15061      (if a (not b) b))
15062 #+END_SRC
15063 @end example
15065 Org can take the code in the block between the @samp{#+BEGIN_SRC} and
15066 @samp{#+END_SRC} tags, and format, compile, execute, and show the results.
15067 Org can simplify many housekeeping tasks essential to modern code
15068 maintenance.  That's why these blocks in Org mode literature are sometimes
15069 referred to as @samp{live code} blocks (as compared to the static text and
15070 documentation around it).  Users can control how @samp{live} they want each
15071 block by tweaking the headers for compiling, execution, extraction.
15073 Org's @samp{src} code block type is one of many block types, such as quote,
15074 export, verse, latex, example, and verbatim.  This section pertains to
15075 @samp{src} code blocks between @samp{#+BEGIN_SRC} and @samp{#+END_SRC}
15077 For editing @samp{src} code blocks, Org provides native Emacs major-modes.
15078 That leverages the latest Emacs features for that source code language mode.
15080 For exporting, Org can then extract @samp{src} code blocks into compilable
15081 source files (in a conversion process known as @dfn{tangling} in literate
15082 programming terminology).
15084 For publishing, Org's back-ends can handle the @samp{src} code blocks and the
15085 text for output to a variety of formats with native syntax highlighting.
15087 For executing the source code in the @samp{src} code blocks, Org provides
15088 facilities that glue the tasks of compiling, collecting the results of the
15089 execution, and inserting them back to the Org file.  Besides text output,
15090 results may include links to other data types that Emacs can handle: audio,
15091 video, and graphics.
15093 An important feature of Org's execution of the @samp{src} code blocks is
15094 passing variables, functions, and results between @samp{src} blocks.  Such
15095 interoperability uses a common syntax even if these @samp{src} blocks are in
15096 different source code languages.  The integration extends to linking the
15097 debugger's error messages to the line in the @samp{src} code block in the Org
15098 file.  That should partly explain why this functionality by the original
15099 contributors, Eric Schulte and Dan Davison, was called @samp{Org Babel}.
15101 In literate programming, the main appeal is code and documentation
15102 co-existing in one file.  Org mode takes this several steps further.  First
15103 by enabling execution, and then by inserting results of that execution back
15104 into the Org file.  Along the way, Org provides extensive formatting
15105 features, including handling tables.  Org handles multiple source code
15106 languages in one file, and provides a common syntax for passing variables,
15107 functions, and results between @samp{src} code blocks.
15109 Org mode fulfills the promise of easy verification and maintenance of
15110 publishing reproducible research by keeping all these in the same file: text,
15111 data, code, configuration settings of the execution environment, the results
15112 of the execution, and associated narratives, claims, references, and internal
15113 and external links.
15115 Details of Org's facilities for working with source code are shown next.
15117 @menu
15118 * Structure of code blocks::    Code block syntax described
15119 * Editing source code::         Language major-mode editing
15120 * Exporting code blocks::       Export contents and/or results
15121 * Extracting source code::      Create pure source code files
15122 * Evaluating code blocks::      Place results of evaluation in the Org mode buffer
15123 * Library of Babel::            Use and contribute to a library of useful code blocks
15124 * Languages::                   List of supported code block languages
15125 * Header arguments::            Configure code block functionality
15126 * Results of evaluation::       How evaluation results are handled
15127 * Noweb reference syntax::      Literate programming in Org mode
15128 * Key bindings and useful functions::  Work quickly with code blocks
15129 * Batch execution::             Call functions from the command line
15130 @end menu
15133 @node Structure of code blocks
15134 @section Structure of code blocks
15135 @cindex code block, structure
15136 @cindex source code, block structure
15137 @cindex #+NAME
15138 @cindex #+BEGIN_SRC
15140 Org offers two ways to structure source code in Org documents: in a
15141 @samp{src} block, and directly inline.  Both specifications are shown below.
15143 A @samp{src} block conforms to this structure:
15145 @example
15146 #+NAME: <name>
15147 #+BEGIN_SRC <language> <switches> <header arguments>
15148   <body>
15149 #+END_SRC
15150 @end example
15152 Org mode's templates system (@pxref{Easy templates}) speeds up creating
15153 @samp{src} code blocks with just three keystrokes.  Do not be put-off by
15154 having to remember the source block syntax.  Org also works with other
15155 completion systems in Emacs, some of which predate Org and have custom
15156 domain-specific languages for defining templates.  Regular use of templates
15157 reduces errors, increases accuracy, and maintains consistency.
15159 @cindex source code, inline
15160 An inline code block conforms to this structure:
15162 @example
15163 src_<language>@{<body>@}
15164 @end example
15168 @example
15169 src_<language>[<header arguments>]@{<body>@}
15170 @end example
15172 @table @code
15173 @item #+NAME: <name>
15174 Optional.  Names the @samp{src} block so it can be called, like a function,
15175 from other @samp{src} blocks or inline blocks to evaluate or to capture the
15176 results.  Code from other blocks, other files, and from table formulas
15177 (@pxref{The spreadsheet}) can use the name to reference a @samp{src} block.
15178 This naming serves the same purpose as naming Org tables.  Org mode requires
15179 unique names.  For duplicate names, Org mode's behavior is undefined.
15180 @cindex #+NAME
15181 @item #+BEGIN_SRC
15182 @item #+END_SRC
15183 Mandatory.  They mark the start and end of a block that Org requires.  The
15184 @code{#+BEGIN_SRC} line takes additional arguments, as described next.
15185 @cindex begin block, end block
15186 @item <language>
15187 Mandatory for live code blocks.  It is the identifier of the source code
15188 language in the block.  @xref{Languages}, for identifiers of supported
15189 languages.
15190 @cindex source code, language
15191 @item <switches>
15192 Optional.  Switches provide finer control of the code execution, export, and
15193 format (see the discussion of switches in @ref{Literal examples})
15194 @cindex source code, switches
15195 @item <header arguments>
15196 Optional.  Heading arguments control many aspects of evaluation, export and
15197 tangling of code blocks (@pxref{Header arguments}).  Using Org's properties
15198 feature, header arguments can be selectively applied to the entire buffer or
15199 specific sub-trees of the Org document.
15200 @item source code, header arguments
15201 @item <body>
15202 Source code in the dialect of the specified language identifier.
15203 @end table
15205 @node Editing source code
15206 @section Editing source code
15207 @cindex code block, editing
15208 @cindex source code, editing
15210 @vindex org-edit-src-auto-save-idle-delay
15211 @vindex org-edit-src-turn-on-auto-save
15212 @kindex C-c '
15213 @kbd{C-c '} for editing the current code block.  It opens a new major-mode
15214 edit buffer containing the body of the @samp{src} code block, ready for any
15215 edits.  @kbd{C-c '} again to close the buffer and return to the Org buffer.
15217 @key{C-x C-s} saves the buffer and updates the contents of the Org buffer.
15219 Set @code{org-edit-src-auto-save-idle-delay} to save the base buffer after
15220 a certain idle delay time.
15222 Set @code{org-edit-src-turn-on-auto-save} to auto-save this buffer into a
15223 separate file using @code{auto-save-mode}.
15225 @kbd{C-c '} to close the major-mode buffer and return back to the Org buffer.
15227 While editing the source code in the major-mode, the @code{org-src-mode}
15228 minor mode remains active.  It provides these customization variables as
15229 described below.  For even more variables, look in the customization
15230 group @code{org-edit-structure}.
15232 @table @code
15233 @item org-src-lang-modes
15234 If an Emacs major-mode named @code{<lang>-mode} exists, where @code{<lang>}
15235 is the language identifier from code block's header line, then the edit
15236 buffer uses that major-mode.  Use this variable to arbitrarily map language
15237 identifiers to major modes.
15238 @item org-src-window-setup
15239 For specifying Emacs window arrangement when the new edit buffer is created.
15240 @item org-src-preserve-indentation
15241 @cindex indentation, in source blocks
15242 Default is @code{nil}.  Source code is indented.  This indentation applies
15243 during export or tangling, and depending on the context, may alter leading
15244 spaces and tabs.  When non-@code{nil}, source code is aligned with the
15245 leftmost column.  No lines are modified during export or tangling, which is
15246 very useful for white-space sensitive languages, such as Python.
15247 @item org-src-ask-before-returning-to-edit-buffer
15248 When @code{nil}, Org returns to the edit buffer without further prompts.  The
15249 default prompts for a confirmation.
15250 @end table
15252 Set @code{org-src-fontify-natively} to non-@code{nil} to turn on native code
15253 fontification in the @emph{Org} buffer.  Fontification of @samp{src} code
15254 blocks can give visual separation of text and code on the display page.  To
15255 further customize the appearance of @code{org-block} for specific languages,
15256 customize @code{org-src-block-faces}.  The following example shades the
15257 background of regular blocks, and colors source blocks only for Python and
15258 Emacs-Lisp languages.
15259 @lisp
15260 (require 'color)
15261 (set-face-attribute 'org-block nil :background
15262                     (color-darken-name
15263                      (face-attribute 'default :background) 3))
15265 (setq org-src-block-faces '(("emacs-lisp" (:background "#EEE2FF"))
15266                             ("python" (:background "#E5FFB8"))))
15267 @end lisp
15269 @node Exporting code blocks
15270 @section Exporting code blocks
15271 @cindex code block, exporting
15272 @cindex source code, exporting
15274 Org can flexibly export just the @emph{code} from the code blocks, just the
15275 @emph{results} of evaluation of the code block, @emph{both} the code and the
15276 results of the code block evaluation, or @emph{none}.  Org defaults to
15277 exporting @emph{code} for most languages.  For some languages, such as
15278 @code{ditaa}, Org defaults to @emph{results}.  To export just the body of
15279 code blocks, @pxref{Literal examples}.  To selectively export sub-trees of
15280 an Org document, @pxref{Exporting}.
15282 The @code{:exports} header arguments control exporting code blocks only and
15283 not inline code:
15285 @subsubheading Header arguments:
15287 @table @code
15288 @cindex @code{:exports}, src header argument
15289 @item :exports code
15290 This is the default for most languages where the body of the code block is
15291 exported.  See @ref{Literal examples} for more.
15292 @item :exports results
15293 On export, Org includes only the results and not the code block.  After each
15294 evaluation, Org inserts the results after the end of code block in the Org
15295 buffer.  By default, Org replaces any previous results.  Org can also append
15296 results.
15297 @item :exports both
15298 Org exports both the code block and the results.
15299 @item :exports none
15300 Org does not export the code block nor the results.
15301 @end table
15303 @vindex org-export-babel-evaluate
15304 To stop Org from evaluating code blocks during export, set
15305 @code{org-export-babel-evaluate} variable to @code{nil}.
15307 Turning off evaluation comes in handy when batch processing.  For example,
15308 markup languages for wikis, which have a high risk of untrusted code.
15309 Stopping code block evaluation also stops evaluation of all header arguments
15310 of the code block.  This may not be desirable in some circumstances.  So
15311 during export, to allow evaluation of just the header arguments but not any
15312 code evaluation in the source block, set @code{:eval never-export}
15313 (@pxref{eval}).
15315 To evaluate just the inline code blocks, set @code{org-export-babel-evaluate}
15316 to @code{inline-only}.  Isolating the option to allow inline evaluations
15317 separate from @samp{src} code block evaluations during exports is not for
15318 security but for avoiding any delays due to recalculations, such as calls to
15319 a remote database.
15321 Org never evaluates code blocks in commented sub-trees when exporting
15322 (@pxref{Comment lines}).  On the other hand, Org does evaluate code blocks in
15323 sub-trees excluded from export (@pxref{Export settings}).
15325 @node Extracting source code
15326 @section Extracting source code
15327 @cindex tangling
15328 @cindex source code, extracting
15329 @cindex code block, extracting source code
15331 Extracting source code from code blocks is a basic task in literate
15332 programming.  Org has features to make this easy.  In literate programming
15333 parlance, documents on creation are @emph{woven} with code and documentation,
15334 and on export, the code is @emph{tangled} for execution by a computer.  Org
15335 facilitates weaving and tangling for producing, maintaining, sharing, and
15336 exporting literate programming documents.  Org provides extensive
15337 customization options for extracting source code.
15339 When Org tangles @samp{src} code blocks, it expands, merges, and transforms
15340 them.  Then Org recomposes them into one or more separate files, as
15341 configured through the options.  During this @emph{tangling} process, Org
15342 expands variables in the source code, and resolves any Noweb style references
15343 (@pxref{Noweb reference syntax}).
15345 @subsubheading Header arguments
15347 @table @code
15348 @cindex @code{:tangle}, src header argument
15349 @item :tangle no
15350 By default, Org does not tangle the @samp{src} code block on export.
15351 @item :tangle yes
15352 Org extracts the contents of the code block for the tangled output.  By
15353 default, the output file name is the same as the Org file but with a file
15354 extension derived from the language identifier of the @samp{src} code block.
15355 @item :tangle filename
15356 Override the default file name with this one for the tangled output.
15357 @end table
15359 @kindex  C-c C-v t
15360 @subsubheading Functions
15362 @table @code
15363 @item org-babel-tangle
15364 Tangle the current file.  Bound to @kbd{C-c C-v t}.
15366 With prefix argument only tangle the current @samp{src} code block.
15367 @item org-babel-tangle-file
15368 Choose a file to tangle.  Bound to @kbd{C-c C-v f}.
15369 @end table
15371 @subsubheading Hooks
15373 @table @code
15374 @item org-babel-post-tangle-hook
15375 This hook runs from within code tangled by @code{org-babel-tangle}, making it
15376 suitable for post-processing, compilation, and evaluation of code in the
15377 tangled files.
15378 @end table
15380 @subsubheading Jumping between code and Org
15382 Debuggers normally link errors and messages back to the source code.  But for
15383 tangled files, we want to link back to the Org file, not to the tangled
15384 source file.  To make this extra jump, Org uses
15385 @code{org-babel-tangle-jump-to-org} function with two additional source code
15386 block header arguments: One, set @code{padline} (@pxref{padline}) to true
15387 (the default setting).  Two, set @code{comments} (@pxref{comments}) to
15388 @code{link}, which makes Org insert links to the Org file.
15390 @node Evaluating code blocks
15391 @section Evaluating code blocks
15392 @cindex code block, evaluating
15393 @cindex source code, evaluating
15394 @cindex #+RESULTS
15396 A note about security: With code evaluation comes the risk of harm.  Org
15397 safeguards by prompting for user's permission before executing any code in
15398 the source block.  To customize this safeguard (or disable it) see @ref{Code
15399 evaluation security}.
15401 Org captures the results of the @samp{src} code block evaluation and inserts
15402 them in the Org file, right after the @samp{src} code block.  The insertion
15403 point is after a newline and the @code{#+RESULTS} label.  Org creates the
15404 @code{#+RESULTS} label if one is not already there.
15406 By default, Org enables only @code{emacs-lisp} @samp{src} code blocks for
15407 execution.  See @ref{Languages} for identifiers to enable other languages.
15409 @kindex C-c C-c
15410 Org provides many ways to execute @samp{src} code blocks.  @kbd{C-c C-c} or
15411 @kbd{C-c C-v e} with the point on a @samp{src} code block@footnote{The option
15412 @code{org-babel-no-eval-on-ctrl-c-ctrl-c} can be used to remove code
15413 evaluation from the @kbd{C-c C-c} key binding.} calls the
15414 @code{org-babel-execute-src-block} function, which executes the code in the
15415 block, collects the results, and inserts them in the buffer.
15417 @cindex #+CALL
15418 By calling a named code block@footnote{Actually, the constructs call_<name>()
15419 and src_<lang>@{@} are not evaluated when they appear in a keyword line
15420 (i.e. lines starting with @code{#+KEYWORD:}, @pxref{In-buffer settings}).}
15421 from an Org mode buffer or a table.  Org can call the named @samp{src} code
15422 blocks from the current Org mode buffer or from the ``Library of Babel''
15423 (@pxref{Library of Babel}).  Whether inline syntax or the @code{#+CALL:}
15424 syntax is used, the result is wrapped based on the variable
15425 @code{org-babel-inline-result-wrap}, which by default is set to @code{"=%s="}
15426 to produce verbatim text suitable for markup.
15428 The syntax for @code{#+CALL:} is
15430 @example
15431 #+CALL: <name>(<arguments>)
15432 #+CALL: <name>[<inside header arguments>](<arguments>) <end header arguments>
15433 @end example
15435 The syntax for inline named code block is
15437 @example
15438 ... call_<name>(<arguments>) ...
15439 ... call_<name>[<inside header arguments>](<arguments>)[<end header arguments>] ...
15440 @end example
15442 @table @code
15443 @item <name>
15444 This is the name of the code block to be evaluated (@pxref{Structure of
15445 code blocks}).
15446 @item <arguments>
15447 Org passes arguments to the code block using standard function call syntax.
15448 For example, a @code{#+CALL:} line that passes @samp{4} to a code block named
15449 @code{double}, which declares the header argument @code{:var n=2}, would be
15450 written as @code{#+CALL: double(n=4)}.  Note how this function call syntax is
15451 different from the header argument syntax.
15452 @item <inside header arguments>
15453 Org passes inside header arguments to the named @samp{src} code block using
15454 the header argument syntax.  Inside header arguments apply to code block
15455 evaluation.  For example, @code{[:results output]} collects results printed
15456 to @code{STDOUT} during code execution of that block.  Note how this header
15457 argument syntax is different from the function call syntax.
15458 @item <end header arguments>
15459 End header arguments affect the results returned by the code block.  For
15460 example, @code{:results html} wraps the results in a @code{BEGIN_EXPORT html}
15461 block before inserting the results in the Org buffer.
15463 For more examples of header arguments for @code{#+CALL:} lines,
15464 @pxref{Arguments in function calls}.
15465 @end table
15467 @node Library of Babel
15468 @section Library of Babel
15469 @cindex babel, library of
15470 @cindex source code, library
15471 @cindex code block, library
15473 The ``Library of Babel'' is a collection of code blocks.  Like a function
15474 library, these code blocks can be called from other Org files.  This
15475 collection is in a repository file in Org mode format in the @samp{doc}
15476 directory of Org mode installation.  For remote code block evaluation syntax,
15477 @pxref{Evaluating code blocks}.
15479 @kindex C-c C-v i
15480 For any user to add code to the library, first save the code in regular
15481 @samp{src} code blocks of an Org file, and then load the Org file with
15482 @code{org-babel-lob-ingest}, which is bound to @kbd{C-c C-v i}.
15484 @node Languages
15485 @section Languages
15486 @cindex babel, languages
15487 @cindex source code, languages
15488 @cindex code block, languages
15490 Org supports the following languages for the @samp{src} code blocks:
15492 @multitable @columnfractions 0.25 0.25 0.25 0.25
15493 @headitem @b{Language} @tab @b{Identifier} @tab @b{Language} @tab @b{Identifier}
15494 @item Asymptote @tab asymptote @tab Awk @tab awk
15495 @item C @tab C @tab C++ @tab C++
15496 @item Clojure @tab clojure @tab CSS @tab css
15497 @item D @tab d @tab ditaa @tab ditaa
15498 @item Graphviz @tab dot @tab Emacs Calc @tab calc
15499 @item Emacs Lisp @tab emacs-lisp @tab Fortran @tab fortran
15500 @item gnuplot @tab gnuplot @tab Haskell @tab haskell
15501 @item Java @tab java @tab Javascript @tab js
15502 @item LaTeX @tab latex @tab Ledger @tab ledger
15503 @item Lisp @tab lisp @tab Lilypond @tab lilypond
15504 @item Lua @tab lua @tab MATLAB @tab matlab
15505 @item Mscgen @tab mscgen @tab Objective Caml @tab ocaml
15506 @item Octave @tab octave @tab Org mode @tab org
15507 @item Oz @tab oz @tab Perl @tab perl
15508 @item Plantuml @tab plantuml @tab Processing.js @tab processing
15509 @item Python @tab python @tab R @tab R
15510 @item Ruby @tab ruby @tab Sass @tab sass
15511 @item Scheme @tab scheme @tab GNU Screen @tab screen
15512 @item Sed @tab sed @tab shell @tab sh
15513 @item SQL @tab sql @tab SQLite @tab sqlite
15514 @end multitable
15516 Additional documentation for some languages are at
15517 @uref{http://orgmode.org/worg/org-contrib/babel/languages.html}.
15519 @vindex org-babel-load-languages
15520 By default, only @code{emacs-lisp} is enabled for evaluation.  To enable or
15521 disable other languages, customize the @code{org-babel-load-languages}
15522 variable either through the Emacs customization interface, or by adding code
15523 to the init file as shown next:
15525 In this example, evaluation is disabled for @code{emacs-lisp}, and enabled
15526 for @code{R}.
15528 @lisp
15529 (org-babel-do-load-languages
15530  'org-babel-load-languages
15531  '((emacs-lisp . nil)
15532    (R . t)))
15533 @end lisp
15535 Note that this is not the only way to enable a language.  Org also enables
15536 languages when loaded with @code{require} statement.  For example, the
15537 following enables execution of @code{clojure} code blocks:
15539 @lisp
15540 (require 'ob-clojure)
15541 @end lisp
15543 @node Header arguments
15544 @section Header arguments
15545 @cindex code block, header arguments
15546 @cindex source code, block header arguments
15548 Details of configuring header arguments are shown here.
15550 @menu
15551 * Using header arguments::      Different ways to set header arguments
15552 * Specific header arguments::   List of header arguments
15553 @end menu
15555 @node Using header arguments
15556 @subsection Using header arguments
15558 Since header arguments can be set in several ways, Org prioritizes them in
15559 case of overlaps or conflicts by giving local settings a higher priority.
15560 Header values in function calls, for example, override header values from
15561 global defaults.
15562 @menu
15563 * System-wide header arguments::  Set globally, language-specific
15564 * Language-specific header arguments::  Set in the Org file's headers
15565 * Header arguments in Org mode properties::  Set in the Org file
15566 * Language-specific mode properties::
15567 * Code block specific header arguments::  The most commonly used method
15568 * Arguments in function calls::  The most specific level, takes highest priority
15569 @end menu
15572 @node System-wide header arguments
15573 @subsubheading System-wide header arguments
15574 @vindex org-babel-default-header-args
15575 System-wide values of header arguments can be specified by adapting the
15576 @code{org-babel-default-header-args} variable:
15578 @cindex @code{:session}, src header argument
15579 @cindex @code{:results}, src header argument
15580 @cindex @code{:exports}, src header argument
15581 @cindex @code{:cache}, src header argument
15582 @cindex @code{:noweb}, src header argument
15583 @example
15584 :session    => "none"
15585 :results    => "replace"
15586 :exports    => "code"
15587 :cache      => "no"
15588 :noweb      => "no"
15589 @end example
15591 This example sets @code{:noweb} header arguments to @code{yes}, which makes
15592 Org expand @code{:noweb} references by default.
15594 @lisp
15595 (setq org-babel-default-header-args
15596       (cons '(:noweb . "yes")
15597             (assq-delete-all :noweb org-babel-default-header-args)))
15598 @end lisp
15600 @node Language-specific header arguments
15601 @subsubheading Language-specific header arguments
15602 Each language can have separate default header arguments by customizing the
15603 variable @code{org-babel-default-header-args:<lang>}, where @code{<lang>} is
15604 the name of the language.  For details, see the language-specific online
15605 documentation at @uref{http://orgmode.org/worg/org-contrib/babel}.
15607 @node Header arguments in Org mode properties
15608 @subsubheading Header arguments in Org mode properties
15610 For header arguments applicable to the buffer, use @code{#+PROPERTY:} lines
15611 anywhere in the Org mode file (@pxref{Property syntax}).
15613 The following example sets only for @samp{R} code blocks to @code{session},
15614 making all the @samp{R} code blocks execute in the same session.  Setting
15615 @code{results} to @code{silent} ignores the results of executions for all
15616 blocks, not just @samp{R} code blocks; no results inserted for any block.
15618 @example
15619 #+PROPERTY: header-args:R  :session *R*
15620 #+PROPERTY: header-args    :results silent
15621 @end example
15623 @vindex org-use-property-inheritance
15624 Header arguments set through Org's property drawers (@pxref{Property syntax})
15625 apply at the sub-tree level on down.  Since these property drawers can appear
15626 anywhere in the file hierarchy, Org uses outermost call or source block to
15627 resolve the values.  Org ignores @code{org-use-property-inheritance} setting.
15629 In this example, @code{:cache} defaults to @code{yes} for all code blocks in
15630 the sub-tree starting with @samp{sample header}.
15632 @example
15633 * sample header
15634   :PROPERTIES:
15635   :header-args:    :cache yes
15636   :END:
15637 @end example
15639 @kindex C-c C-x p
15640 @vindex org-babel-default-header-args
15641 Properties defined through @code{org-set-property} function, bound to
15642 @kbd{C-c C-x p}, apply to all active languages.  They override properties set
15643 in @code{org-babel-default-header-args}.
15645 @node Language-specific mode properties
15646 @subsubheading Language-specific mode properties
15648 Language-specific header arguments are also read from properties
15649 @code{header-args:<lang>} where @code{<lang>} is the language identifier.
15650 For example,
15652 @example
15653 * Heading
15654   :PROPERTIES:
15655   :header-args:clojure:    :session *clojure-1*
15656   :header-args:R:          :session *R*
15657   :END:
15658 ** Subheading
15659   :PROPERTIES:
15660   :header-args:clojure:    :session *clojure-2*
15661   :END:
15662 @end example
15664 would force separate sessions for clojure blocks in Heading and Subheading,
15665 but use the same session for all @samp{R} blocks.  Blocks in Subheading
15666 inherit settings from Heading.
15668 @node Code block specific header arguments
15669 @subsubheading Code block specific header arguments
15671 Header arguments are most commonly set at the @samp{src} code block level, on
15672 the @code{#+BEGIN_SRC} line.  Arguments set at this level take precedence
15673 over those set in the @code{org-babel-default-header-args} variable, and also
15674 those set as header properties.
15676 In the following example, setting @code{results} to @code{silent} makes it
15677 ignore results of the code execution.  Setting @code{:exports} to @code{code}
15678 exports only the body of the @samp{src} code block to HTML or @LaTeX{}.:
15680 @example
15681 #+NAME: factorial
15682 #+BEGIN_SRC haskell :results silent :exports code :var n=0
15683 fac 0 = 1
15684 fac n = n * fac (n-1)
15685 #+END_SRC
15686 @end example
15688 The same header arguments in an inline @samp{src} code block:
15690 @example
15691 src_haskell[:exports both]@{fac 5@}
15692 @end example
15694 Code block header arguments can span multiple lines using @code{#+HEADER:} on
15695 each line.  Note that Org currently accepts the plural spelling of
15696 @code{#+HEADER:} only as a convenience for backward-compatibility.  It may be
15697 removed at some point.
15699 @cindex #+HEADER:
15701 Multi-line header arguments on an unnamed @samp{src} code block:
15703 @example
15704 #+HEADER: :var data1=1
15705 #+BEGIN_SRC emacs-lisp :var data2=2
15706    (message "data1:%S, data2:%S" data1 data2)
15707 #+END_SRC
15709 #+RESULTS:
15710 : data1:1, data2:2
15711 @end example
15713 Multi-line header arguments on a named @samp{src} code block:
15715 @example
15716 #+NAME: named-block
15717 #+HEADER: :var data=2
15718 #+BEGIN_SRC emacs-lisp
15719   (message "data:%S" data)
15720 #+END_SRC
15722 #+RESULTS: named-block
15723   : data:2
15724 @end example
15726 @node Arguments in function calls
15727 @subsubheading Arguments in function calls
15729 Header arguments in function calls are the most specific and override all
15730 other settings in case of an overlap.  They get the highest priority.  Two
15731 @code{#+CALL:} examples are shown below.  For the complete syntax of
15732 @code{#+CALL:} lines, see @ref{Evaluating code blocks}.
15734 In this example, @code{:exports results} header argument is applied to the
15735 evaluation of the @code{#+CALL:} line.
15737 @example
15738 #+CALL: factorial(n=5) :exports results
15739 @end example
15741 In this example, @code{:session special} header argument is applied to the
15742 evaluation of @code{factorial} code block.
15744 @example
15745 #+CALL: factorial[:session special](n=5)
15746 @end example
15748 @node Specific header arguments
15749 @subsection Specific header arguments
15750 Org comes with many header arguments common to all languages.  New header
15751 arguments are added for specific languages as they become available for use
15752 in @samp{src} code blocks.  A header argument is specified with an initial
15753 colon followed by the argument's name in lowercase.  Common header arguments
15754 are:
15756 @menu
15757 * var::                         Pass arguments to @samp{src} code blocks
15758 * results::                     Specify results type; how to collect
15759 * file::                        Specify a path for output file
15760 * file-desc::                   Specify a description for file results
15761 * file-ext::                    Specify an extension for file output
15762 * output-dir::                  Specify a directory for output file
15763 * dir::                         Specify the default directory for code block execution
15764 * exports::                     Specify exporting code, results, both, none
15765 * tangle::                      Toggle tangling; or specify file name
15766 * mkdirp::                      Toggle for parent directory creation for target files during tangling
15767 * comments::                    Toggle insertion of comments in tangled code files
15768 * padline::                     Control insertion of padding lines in tangled code files
15769 * no-expand::                   Turn off variable assignment and noweb expansion during tangling
15770 * session::                     Preserve the state of code evaluation
15771 * noweb::                       Toggle expansion of noweb references
15772 * noweb-ref::                   Specify block's noweb reference resolution target
15773 * noweb-sep::                   String to separate noweb references
15774 * cache::                       Avoid re-evaluating unchanged code blocks
15775 * sep::                         Delimiter for writing tabular results outside Org
15776 * hlines::                      Handle horizontal lines in tables
15777 * colnames::                    Handle column names in tables
15778 * rownames::                    Handle row names in tables
15779 * shebang::                     Make tangled files executable
15780 * tangle-mode::                 Set permission of tangled files
15781 * eval::                        Limit evaluation of specific code blocks
15782 * wrap::                        Mark source block evaluation results
15783 * post::                        Post processing of results of code block evaluation
15784 * prologue::                    Text to prepend to body of code block
15785 * epilogue::                    Text to append to body of code block
15786 @end menu
15788 For language-specific header arguments, see @ref{Languages}.
15790 @node var
15791 @subsubsection @code{:var}
15792 @cindex @code{:var}, src header argument
15793 Use @code{:var} for passing arguments to @samp{src} code blocks.  The
15794 specifics of variables in @samp{src} code blocks vary by the source language
15795 and are covered in the language-specific documentation.  The syntax for
15796 @code{:var}, however, is the same for all languages.  This includes declaring
15797 a variable, and assigning a default value.
15799 Arguments can take values as literals, or as references, or even as Emacs
15800 Lisp code (@pxref{var, Emacs Lisp evaluation of variables}).  References are
15801 names from the Org file from the lines @code{#+NAME:} or @code{#+RESULTS:}.
15802 References can also refer to tables, lists, @code{#+BEGIN_EXAMPLE} blocks,
15803 other types of @samp{src} code blocks, or the results of execution of
15804 @samp{src} code blocks.
15806 For better performance, Org can cache results of evaluations.  But caching
15807 comes with severe limitations (@pxref{cache}).
15809 Argument values are indexed like arrays (@pxref{var, Indexable variable
15810 values}).
15812 The following syntax is used to pass arguments to @samp{src} code blocks
15813 using the @code{:var} header argument.
15815 @example
15816 :var name=assign
15817 @end example
15819 The @code{assign} is a literal value, such as a string @samp{"string"}, a
15820 number @samp{9}, a reference to a table, a list, a literal example, another
15821 code block (with or without arguments), or the results from evaluating a code
15822 block.
15824 Here are examples of passing values by reference:
15826 @table @dfn
15828 @item table
15829 an Org mode table named with either a @code{#+NAME:} line
15831 @example
15832 #+NAME: example-table
15833 | 1 |
15834 | 2 |
15835 | 3 |
15836 | 4 |
15838 #+NAME: table-length
15839 #+BEGIN_SRC emacs-lisp :var table=example-table
15840 (length table)
15841 #+END_SRC
15843 #+RESULTS: table-length
15844 : 4
15845 @end example
15847 @item list
15848 a simple list named with a @code{#+NAME:} line.  Note that only the top level
15849 list items are passed along.  Nested list items are ignored.
15851 @example
15852 #+NAME: example-list
15853   - simple
15854     - not
15855     - nested
15856   - list
15858 #+BEGIN_SRC emacs-lisp :var x=example-list
15859   (print x)
15860 #+END_SRC
15862 #+RESULTS:
15863 | simple | list |
15864 @end example
15866 @item code block without arguments
15867 a code block name (from the example above), as assigned by @code{#+NAME:},
15868 optionally followed by parentheses
15870 @example
15871 #+BEGIN_SRC emacs-lisp :var length=table-length()
15872 (* 2 length)
15873 #+END_SRC
15875 #+RESULTS:
15876 : 8
15877 @end example
15879 @item code block with arguments
15880 a @samp{src} code block name, as assigned by @code{#+NAME:}, followed by
15881 parentheses and optional arguments passed within the parentheses following
15882 the @samp{src} code block name using standard function call syntax
15884 @example
15885 #+NAME: double
15886 #+BEGIN_SRC emacs-lisp :var input=8
15887 (* 2 input)
15888 #+END_SRC
15890 #+RESULTS: double
15891 : 16
15893 #+NAME: squared
15894 #+BEGIN_SRC emacs-lisp :var input=double(input=2)
15895 (* input input)
15896 #+END_SRC
15898 #+RESULTS: squared
15899 : 4
15900 @end example
15902 @item literal example
15903 a literal example block named with a @code{#+NAME:} line
15905 @example
15906 #+NAME: literal-example
15907 #+BEGIN_EXAMPLE
15908 A literal example
15909 on two lines
15910 #+END_EXAMPLE
15912 #+NAME: read-literal-example
15913 #+BEGIN_SRC emacs-lisp :var x=literal-example
15914   (concatenate 'string x " for you.")
15915 #+END_SRC
15917 #+RESULTS: read-literal-example
15918 : A literal example
15919 : on two lines for you.
15921 @end example
15923 @end table
15925 @subsubheading Indexable variable values
15926 Indexing variable values enables referencing portions of a variable.  Indexes
15927 are 0 based with negative values counting backwards from the end.  If an
15928 index is separated by @code{,}s then each subsequent section will index as
15929 the next dimension.  Note that this indexing occurs @emph{before} other
15930 table-related header arguments are applied, such as @code{:hlines},
15931 @code{:colnames} and @code{:rownames}.  The following example assigns the
15932 last cell of the first row the table @code{example-table} to the variable
15933 @code{data}:
15935 @example
15936 #+NAME: example-table
15937 | 1 | a |
15938 | 2 | b |
15939 | 3 | c |
15940 | 4 | d |
15942 #+BEGIN_SRC emacs-lisp :var data=example-table[0,-1]
15943   data
15944 #+END_SRC
15946 #+RESULTS:
15947 : a
15948 @end example
15950 Ranges of variable values can be referenced using two integers separated by a
15951 @code{:}, in which case the entire inclusive range is referenced.  For
15952 example the following assigns the middle three rows of @code{example-table}
15953 to @code{data}.
15955 @example
15956 #+NAME: example-table
15957 | 1 | a |
15958 | 2 | b |
15959 | 3 | c |
15960 | 4 | d |
15961 | 5 | 3 |
15963 #+BEGIN_SRC emacs-lisp :var data=example-table[1:3]
15964   data
15965 #+END_SRC
15967 #+RESULTS:
15968 | 2 | b |
15969 | 3 | c |
15970 | 4 | d |
15971 @end example
15973 To pick the entire range, use an empty index, or the single character
15974 @code{*}.  @code{0:-1} does the same thing.  Example below shows how to
15975 reference the first column only.
15977 @example
15978 #+NAME: example-table
15979 | 1 | a |
15980 | 2 | b |
15981 | 3 | c |
15982 | 4 | d |
15984 #+BEGIN_SRC emacs-lisp :var data=example-table[,0]
15985   data
15986 #+END_SRC
15988 #+RESULTS:
15989 | 1 | 2 | 3 | 4 |
15990 @end example
15992 Index referencing can be used for tables and code blocks.  Index referencing
15993 can handle any number of dimensions.  Commas delimit multiple dimensions, as
15994 shown below.
15996 @example
15997 #+NAME: 3D
15998 #+BEGIN_SRC emacs-lisp
15999   '(((1  2  3)  (4  5  6)  (7  8  9))
16000     ((10 11 12) (13 14 15) (16 17 18))
16001     ((19 20 21) (22 23 24) (25 26 27)))
16002 #+END_SRC
16004 #+BEGIN_SRC emacs-lisp :var data=3D[1,,1]
16005   data
16006 #+END_SRC
16008 #+RESULTS:
16009 | 11 | 14 | 17 |
16010 @end example
16012 @subsubheading Emacs Lisp evaluation of variables
16014 Emacs lisp code can set the values for variables.  To differentiate a value
16015 from lisp code, Org interprets any value starting with @code{(}, @code{[},
16016 @code{'} or @code{`} as Emacs Lisp code.  The result of evaluating that code
16017 is then assigned to the value of that variable.  The following example shows
16018 how to reliably query and pass file name of the Org mode buffer to a code
16019 block using headers.  We need reliability here because the file's name could
16020 change once the code in the block starts executing.
16022 @example
16023 #+BEGIN_SRC sh :var filename=(buffer-file-name) :exports both
16024   wc -w $filename
16025 #+END_SRC
16026 @end example
16028 Note that values read from tables and lists will not be mistakenly evaluated
16029 as Emacs Lisp code, as illustrated in the following example.
16031 @example
16032 #+NAME: table
16033 | (a b c) |
16035 #+HEADER: :var data=table[0,0]
16036 #+BEGIN_SRC perl
16037   $data
16038 #+END_SRC
16040 #+RESULTS:
16041 : (a b c)
16042 @end example
16044 @node results
16045 @subsubsection @code{:results}
16046 @cindex @code{:results}, src header argument
16048 There are four classes of @code{:results} header arguments.  Each @samp{src}
16049 code block can take only one option per class.
16051 @itemize @bullet
16052 @item
16053 @b{collection} for how the results should be collected from the @samp{src}
16054 code block
16055 @item
16056 @b{type} for which type of result the code block will return; affects how Org
16057 processes and inserts results in the Org buffer
16058 @item
16059 @b{format} for the result; affects how Org processes and inserts results in
16060 the Org buffer
16061 @item
16062 @b{handling} for processing results after evaluation of the @samp{src} code
16063 block
16064 @end itemize
16066 @subsubheading Collection
16067 Collection options specify the results.  Choose one of the options; they are
16068 mutually exclusive.
16070 @itemize @bullet
16071 @item @code{value}
16072 Default.  Functional mode.  Result is the value returned by the last
16073 statement in the @samp{src} code block.  Languages like Python may require an
16074 explicit @code{return} statement in the @samp{src} code block.  Usage
16075 example: @code{:results value}.
16076 @item @code{output}
16077 Scripting mode.  Result is collected from STDOUT during execution of the code
16078 in the @samp{src} code block.  Usage example: @code{:results output}.
16079 @end itemize
16081 @subsubheading Type
16082 Type tells what result types to expect from the execution of the code
16083 block.  Choose one of the options; they are mutually exclusive.  The default
16084 behavior is to automatically determine the result type.
16086 @itemize @bullet
16087 @item @code{table}, @code{vector}
16088 Interpret the results as an Org table.  If the result is a single value,
16089 create a table with one row and one column.  Usage example: @code{:results
16090 value table}.
16091 @item @code{list}
16092 Interpret the results as an Org list.  If the result is a single value,
16093 create a list of one element.
16094 @item @code{scalar}, @code{verbatim}
16095 Interpret literally and insert as quoted text.  Do not create a table.  Usage
16096 example: @code{:results value verbatim}.
16097 @item @code{file}
16098 Interpret as path to a file.  Inserts a link to the file.  Usage example:
16099 @code{:results value file}.
16100 @end itemize
16102 @subsubheading Format
16103 Format pertains to the type of the result returned by the @samp{src} code
16104 block.  Choose one of the options; they are mutually exclusive.  The default
16105 follows from the type specified above.
16107 @itemize @bullet
16108 @item @code{raw}
16109 Interpreted as raw Org mode.  Inserted directly into the buffer.  Aligned if
16110 it is a table.  Usage example: @code{:results value raw}.
16111 @item @code{org}
16112 Results enclosed in a @code{BEGIN_SRC org} block.  For comma-escape, either
16113 @kbd{TAB} in the block, or export the file.  Usage example: @code{:results
16114 value org}.
16115 @item @code{html}
16116 Results enclosed in a @code{BEGIN_EXPORT html} block.  Usage example:
16117 @code{:results value html}.
16118 @item @code{latex}
16119 Results enclosed in a @code{BEGIN_EXPORT latex} block.  Usage example:
16120 @code{:results value latex}.
16121 @item @code{code}
16122 Result enclosed in a @samp{src} code block.  Useful for parsing.  Usage
16123 example: @code{:results value code}.
16124 @item @code{pp}
16125 Result converted to pretty-print source code.  Enclosed in a @samp{src} code
16126 block.  Languages supported: Emacs Lisp, Python, and Ruby.  Usage example:
16127 @code{:results value pp}.
16128 @item @code{drawer}
16129 Result wrapped in a RESULTS drawer.  Useful for containing @code{raw} or
16130 @code{org} results for later scripting and automated processing.  Usage
16131 example: @code{:results value drawer}.
16132 @end itemize
16134 @subsubheading Handling
16135 Handling options after collecting the results.
16137 @itemize @bullet
16138 @item @code{silent}
16139 Do not insert results in the Org mode buffer, but echo them in the
16140 minibuffer.  Usage example: @code{:results output silent}.
16141 @item @code{replace}
16142 Default.  Insert results in the Org buffer.  Remove previous results.  Usage
16143 example: @code{:results output replace}.
16144 @item @code{append}
16145 Append results to the Org buffer.  Latest results are at the bottom.  Does
16146 not remove previous results.  Usage example: @code{:results output append}.
16147 @item @code{prepend}
16148 Prepend results to the Org buffer.  Latest results are at the top.  Does not
16149 remove previous results.  Usage example: @code{:results output prepend}.
16150 @end itemize
16152 @node file
16153 @subsubsection @code{:file}
16154 @cindex @code{:file}, src header argument
16156 An external @code{:file} that saves the results of execution of the code
16157 block.  The @code{:file} is either a file name or two strings, where the
16158 first is the file name and the second is the description.  A link to the file
16159 is inserted.  It uses an Org mode style @code{[[file:]]} link (@pxref{Link
16160 format}).  Some languages, such as @samp{R}, @samp{dot}, @samp{ditaa}, and
16161 @samp{gnuplot}, automatically wrap the source code in additional boilerplate
16162 code.  Such code wrapping helps recreate the output, especially graphics
16163 output, by executing just the @code{:file} contents.
16165 @node file-desc
16166 @subsubsection @code{:file-desc}
16168 A description of the results file.  Org uses this description for the link
16169 (see @ref{Link format}) it inserts in the Org file.  If the @code{:file-desc}
16170 has no value, Org will use file name for both the ``link'' and the
16171 ``description'' portion of the Org mode link.
16173 @node file-ext
16174 @subsubsection @code{:file-ext}
16175 @cindex @code{:file-ext}, src header argument
16177 File name extension for the output file.  Org generates the file's complete
16178 name, and extension by combining @code{:file-ext}, @code{#+NAME:} of the
16179 source block, and the @ref{output-dir} header argument.  To override this
16180 auto generated file name, use the @code{:file} header argument.
16182 @node output-dir
16183 @subsubsection @code{:output-dir}
16184 @cindex @code{:output-dir}, src header argument
16186 Specifies the @code{:output-dir} for the results file.  Org accepts an
16187 absolute path (beginning with @code{/}) or a relative directory (without
16188 @code{/}).  The value can be combined with @code{#+NAME:} of the source block
16189 and @ref{file} or @ref{file-ext} header arguments.
16191 @node dir
16192 @subsubsection @code{:dir} and remote execution
16193 @cindex @code{:dir}, src header argument
16195 While the @code{:file} header argument can be used to specify the path to the
16196 output file, @code{:dir} specifies the default directory during @samp{src}
16197 code block execution.  If it is absent, then the directory associated with
16198 the current buffer is used.  In other words, supplying @code{:dir path}
16199 temporarily has the same effect as changing the current directory with
16200 @kbd{M-x cd path RET}, and then not supplying @code{:dir}.  Under the
16201 surface, @code{:dir} simply sets the value of the Emacs variable
16202 @code{default-directory}.
16204 When using @code{:dir}, relative paths (for example, @code{:file myfile.jpg}
16205 or @code{:file results/myfile.jpg}) become relative to the default directory.
16207 For example, to save the plot file in the @samp{Work} folder of the home
16208 directory (notice tilde is expanded):
16210 @example
16211 #+BEGIN_SRC R :file myplot.png :dir ~/Work
16212 matplot(matrix(rnorm(100), 10), type="l")
16213 #+END_SRC
16214 @end example
16216 @subsubheading Remote execution
16217 To evaluate the @samp{src} code block on a remote machine, supply a remote s
16218 directory name using @samp{Tramp} syntax.  For example:
16220 @example
16221 #+BEGIN_SRC R :file plot.png :dir /scp:dand@@yakuba.princeton.edu:
16222 plot(1:10, main=system("hostname", intern=TRUE))
16223 #+END_SRC
16224 @end example
16226 Org first captures the text results as usual for insertion in the Org file.
16227 Then Org also inserts a link to the remote file, thanks to Emacs
16228 @samp{Tramp}.  Org constructs the remote path to the file name from
16229 @code{:dir} and @code{default-directory}, as illustrated here:
16231 @example
16232 [[file:/scp:dand@@yakuba.princeton.edu:/home/dand/plot.png][plot.png]]
16233 @end example
16236 @subsubheading Some more warnings
16238 @itemize @bullet
16239 @item
16240 When @code{:dir} is used with @code{:session}, Org sets the starting
16241 directory for a new session.  But Org will not alter the directory of an
16242 already existing session.
16243 @item
16244 Do not use @code{:dir} with @code{:exports results} or with @code{:exports
16245 both} to avoid Org inserting incorrect links to remote files.  That is because
16246 Org does not expand @code{default directory} to avoid some underlying
16247 portability issues.
16248 @end itemize
16250 @node exports
16251 @subsubsection @code{:exports}
16252 @cindex @code{:exports}, src header argument
16254 The @code{:exports} header argument is to specify if that part of the Org
16255 file is exported to, say, HTML or @LaTeX{} formats.  Note that
16256 @code{:exports} affects only @samp{src} code blocks and not inline code.
16258 @itemize @bullet
16259 @item @code{code}
16260 The default.  The body of code is included into the exported file.  Example:
16261 @code{:exports code}.
16262 @item @code{results}
16263 The results of evaluation of the code is included in the exported file.
16264 Example: @code{:exports results}.
16265 @item @code{both}
16266 Both the code and results of evaluation are included in the exported file.
16267 Example: @code{:exports both}.
16268 @item @code{none}
16269 Neither the code nor the results of evaluation is included in the exported
16270 file.  Whether the code is evaluated at all depends on other
16271 options.  Example: @code{:exports none}.
16272 @end itemize
16274 @node tangle
16275 @subsubsection @code{:tangle}
16276 @cindex @code{:tangle}, src header argument
16278 The @code{:tangle} header argument specifies if the @samp{src} code block is
16279 exported to source file(s).
16281 @itemize @bullet
16282 @item @code{tangle}
16283 Export the @samp{src} code block to source file.  The file name for the
16284 source file is derived from the name of the Org file, and the file extension
16285 is derived from the source code language identifier.  Example: @code{:tangle
16286 yes}.
16287 @item @code{no}
16288 The default.  Do not extract the code a source code file.  Example:
16289 @code{:tangle no}.
16290 @item other
16291 Export the @samp{src} code block to source file whose file name is derived
16292 from any string passed to the @code{:tangle} header argument.  Org derives
16293 the file name as being relative to the directory of the Org file's location.
16294 Example: @code{:tangle path}.
16295 @end itemize
16297 @node mkdirp
16298 @subsubsection @code{:mkdirp}
16299 @cindex @code{:mkdirp}, src header argument
16301 The @code{:mkdirp} header argument creates parent directories for tangled
16302 files if the directory does not exist.  @code{yes} enables directory creation
16303 and @code{no} inhibits directory creation.
16305 @node comments
16306 @subsubsection @code{:comments}
16307 @cindex @code{:comments}, src header argument
16308 Controls inserting comments into tangled files.  These are above and beyond
16309 whatever comments may already exist in the @samp{src} code block.
16311 @itemize @bullet
16312 @item @code{no}
16313 The default.  Do not insert any extra comments during tangling.
16314 @item @code{link}
16315 Wrap the @samp{src} code block in comments.  Include links pointing back to
16316 the place in the Org file from where the code was tangled.
16317 @item @code{yes}
16318 Kept for backward compatibility; same as ``link''.
16319 @item @code{org}
16320 Nearest headline text from Org file is inserted as comment.  The exact text
16321 that is inserted is picked from the leading context of the source block.
16322 @item @code{both}
16323 Includes both ``link'' and ``org'' comment options.
16324 @item @code{noweb}
16325 Includes ``link'' comment option, expands noweb references, and wraps them in
16326 link comments inside the body of the @samp{src} code block.
16327 @end itemize
16329 @node padline
16330 @subsubsection @code{:padline}
16331 @cindex @code{:padline}, src header argument
16332 Control insertion of newlines to pad @samp{src} code blocks in the tangled
16333 file.
16334 @itemize @bullet
16335 @item @code{yes}
16336 Default.  Insert a newline before and after each @samp{src} code block in the
16337 tangled file.
16338 @item @code{no}
16339 Do not insert newlines to pad the tangled @samp{src} code blocks.
16340 @end itemize
16342 @node no-expand
16343 @subsubsection @code{:no-expand}
16344 @cindex @code{:no-expand}, src header argument
16346 By default Org expands @samp{src} code blocks during tangling.  The
16347 @code{:no-expand} header argument turns off such expansions.  Note that one
16348 side-effect of expansion by @code{org-babel-expand-src-block} also assigns
16349 values to @code{:var} (@pxref{var}) variables.  Expansions also replace Noweb
16350 references with their targets (@pxref{Noweb reference syntax}).  Some of
16351 these expansions may cause premature assignment, hence this option.  This
16352 option makes a difference only for tangling.  It has no effect when exporting
16353 since @samp{src} code blocks for execution have to be expanded anyway.
16355 @node session
16356 @subsubsection @code{:session}
16357 @cindex @code{:session}, src header argument
16359 The @code{:session} header argument is for running multiple source code
16360 blocks under one session.  Org runs @samp{src} code blocks with the same
16361 session name in the same interpreter process.
16363 @itemize @bullet
16364 @item @code{none}
16365 Default.  Each @samp{src} code block gets a new interpreter process to
16366 execute.  The process terminates once the block is evaluated.
16367 @item @code{other}
16368 Any string besides @code{none} turns that string into the name of that
16369 session.  For example, @code{:session mysession} names it @samp{mysession}.
16370 If @code{:session} has no argument, then the session name is derived from the
16371 source language identifier.  Subsequent blocks with the same source code
16372 language use the same session.  Depending on the language, state variables,
16373 code from other blocks, and the overall interpreted environment may be
16374 shared.  Some interpreted languages support concurrent sessions when
16375 subsequent source code language blocks change session names.
16376 @end itemize
16378 @node noweb
16379 @subsubsection @code{:noweb}
16380 @cindex @code{:noweb}, src header argument
16382 The @code{:noweb} header argument controls expansion of Noweb syntax
16383 references (@pxref{Noweb reference syntax}).  Expansions occur when source
16384 code blocks are evaluated, tangled, or exported.
16386 @itemize @bullet
16387 @item @code{no}
16388 Default.  No expansion of Noweb syntax references in the body of the code
16389 when evaluating, tangling, or exporting.
16390 @item @code{yes}
16391 Expansion of Noweb syntax references in the body of the @samp{src} code block
16392 when evaluating, tangling, or exporting.
16393 @item @code{tangle}
16394 Expansion of Noweb syntax references in the body of the @samp{src} code block
16395 when tangling.  No expansion when evaluating or exporting.
16396 @item @code{no-export}
16397 Expansion of Noweb syntax references in the body of the @samp{src} code block
16398 when evaluating or tangling.  No expansion when exporting.
16399 @item @code{strip-export}
16400 Expansion of Noweb syntax references in the body of the @samp{src} code block
16401 when expanding prior to evaluating or tangling.  Removes Noweb syntax
16402 references when exporting.
16403 @item @code{eval}
16404 Expansion of Noweb syntax references in the body of the @samp{src} code block
16405 only before evaluating.
16406 @end itemize
16408 @subsubheading Noweb prefix lines
16409 Noweb insertions now honor prefix characters that appear before the Noweb
16410 syntax reference.
16412 This behavior is illustrated in the following example.  Because the
16413 @code{<<example>>} noweb reference appears behind the SQL comment syntax,
16414 each line of the expanded noweb reference will be commented.
16416 With:
16418 @example
16419 #+NAME: example
16420 #+BEGIN_SRC text
16421 this is the
16422 multi-line body of example
16423 #+END_SRC
16424 @end example
16426 this @samp{src} code block:
16428 @example
16429 #+BEGIN_SRC sql :noweb yes
16430 -- <<example>>
16431 #+END_SRC
16432 @end example
16434 expands to:
16436 @example
16437 -- this is the
16438 -- multi-line body of example
16439 @end example
16441 Since this change will not affect noweb replacement text without newlines in
16442 them, inline noweb references are acceptable.
16444 This feature can also be used for management of indentation in exported code snippets.
16446 With:
16448 @example
16449 #+NAME: if-true
16450 #+BEGIN_SRC python :exports none
16451 print('Do things when True')
16452 #+END_SRC
16454 #+NAME: if-false
16455 #+BEGIN_SRC python :exports none
16456 print('Do things when False')
16457 #+END_SRC
16458 @end example
16460 this @samp{src} code block:
16462 @example
16463 #+BEGIN_SRC python :noweb yes :results output
16464 if True:
16465     <<if-true>>
16466 else:
16467     <<if-false>>
16468 #+END_SRC
16469 @end example
16471 expands to:
16473 @example
16474 if True:
16475     print('Do things when True')
16476 else:
16477     print('Do things when False')
16478 @end example
16480 and evaluates to:
16482 @example
16483 Do things when True
16484 @end example
16486 @node noweb-ref
16487 @subsubsection @code{:noweb-ref}
16488 @cindex @code{:noweb-ref}, src header argument
16490 When expanding Noweb style references, Org concatenates @samp{src} code
16491 blocks by matching the reference name to either the code block name or the
16492 @code{:noweb-ref} header argument.
16494 For simple concatenation, set this @code{:noweb-ref} header argument at the
16495 sub-tree or file level.  In the example Org file shown next, the body of the
16496 source code in each block is extracted for concatenation to a pure code file
16497 when tangled.
16499 @example
16500  #+BEGIN_SRC sh :tangle yes :noweb yes :shebang #!/bin/sh
16501    <<fullest-disk>>
16502  #+END_SRC
16503  * the mount point of the fullest disk
16504    :PROPERTIES:
16505    :header-args: :noweb-ref fullest-disk
16506    :END:
16508  ** query all mounted disks
16509  #+BEGIN_SRC sh
16510    df \
16511  #+END_SRC
16513  ** strip the header row
16514  #+BEGIN_SRC sh
16515    |sed '1d' \
16516  #+END_SRC
16518  ** output mount point of fullest disk
16519  #+BEGIN_SRC sh
16520    |awk '@{if (u < +$5) @{u = +$5; m = $6@}@} END @{print m@}'
16521  #+END_SRC
16522 @end example
16524 @node noweb-sep
16525 @subsubsection @code{:noweb-sep}
16526 @cindex @code{:noweb-sep}, src header argument
16528 By default a newline separates each noweb reference concatenation.  To change
16529 this newline separator, edit the @code{:noweb-sep} (@pxref{noweb-sep}) header
16530 argument.
16532 @node cache
16533 @subsubsection @code{:cache}
16534 @cindex @code{:cache}, src header argument
16536 The @code{:cache} header argument is for caching results of evaluating code
16537 blocks.  Caching results can avoid re-evaluating @samp{src} code blocks that
16538 have not changed since the previous run.  To benefit from the cache and avoid
16539 redundant evaluations, the source block must have a result already present in
16540 the buffer, and neither the header arguments (including the value of
16541 @code{:var} references) nor the text of the block itself has changed since
16542 the result was last computed.  This feature greatly helps avoid long-running
16543 calculations.  For some edge cases, however, the cached results may not be
16544 reliable.
16546 The caching feature is best for when @samp{src} blocks are pure functions,
16547 that is functions that return the same value for the same input arguments
16548 (@pxref{var}), and that do not have side effects, and do not rely on external
16549 variables other than the input arguments.  Functions that depend on a timer,
16550 file system objects, and random number generators are clearly unsuitable for
16551 caching.
16553 A note of warning: when @code{:cache} is used for a @code{:session}, caching
16554 may cause unexpected results.
16556 When the caching mechanism tests for any source code changes, it will not
16557 expand Noweb style references (@pxref{Noweb reference syntax}).  For reasons
16558 why, see @uref{http://thread.gmane.org/gmane.emacs.orgmode/79046}.
16560 The @code{:cache} header argument can have one of two values: @code{yes} or
16561 @code{no}.
16563 @itemize @bullet
16564 @item @code{no}
16565 Default.  No caching of results; @samp{src} code block evaluated every time.
16566 @item @code{yes}
16567 Whether to run the code or return the cached results is determined by
16568 comparing the SHA1 hash value of the combined @samp{src} code block and
16569 arguments passed to it.  This hash value is packed on the @code{#+RESULTS:}
16570 line from previous evaluation.  When hash values match, Org does not evaluate
16571 the @samp{src} code block.  When hash values mismatch, Org evaluates the
16572 @samp{src} code block, inserts the results, recalculates the hash value, and
16573 updates @code{#+RESULTS:} line.
16574 @end itemize
16576 In this example, both functions are cached.  But @code{caller} runs only if
16577 the result from @code{random} has changed since the last run.
16579 @example
16580  #+NAME: random
16581  #+BEGIN_SRC R :cache yes
16582  runif(1)
16583  #+END_SRC
16585  #+RESULTS[a2a72cd647ad44515fab62e144796432793d68e1]: random
16586  0.4659510825295
16588  #+NAME: caller
16589  #+BEGIN_SRC emacs-lisp :var x=random :cache yes
16591  #+END_SRC
16593  #+RESULTS[bec9c8724e397d5df3b696502df3ed7892fc4f5f]: caller
16594  0.254227238707244
16595 @end example
16597 @node sep
16598 @subsubsection @code{:sep}
16599 @cindex @code{:sep}, src header argument
16601 The @code{:sep} header argument is the delimiter for saving results as tables
16602 to files (@pxref{file}) external to Org mode.  Org defaults to tab delimited
16603 output.  The function, @code{org-open-at-point}, which is bound to @kbd{C-c
16604 C-o}, also uses @code{:sep} for opening tabular results.
16606 @node hlines
16607 @subsubsection @code{:hlines}
16608 @cindex @code{:hlines}, src header argument
16610 In-between each table row or below the table headings, sometimes results have
16611 horizontal lines, which are also known as hlines.  The @code{:hlines}
16612 argument with the value @code{yes} accepts such lines.  The default is
16613 @code{no}.
16615 @itemize @bullet
16616 @item @code{no}
16617 Strips horizontal lines from the input table.  For most code, this is
16618 desirable, or else those @code{hline} symbols raise unbound variable errors.
16620 The default is @code{:hlines no}.  The example shows hlines removed from the
16621 input table.
16623 @example
16624 #+NAME: many-cols
16625 | a | b | c |
16626 |---+---+---|
16627 | d | e | f |
16628 |---+---+---|
16629 | g | h | i |
16631 #+NAME: echo-table
16632 #+BEGIN_SRC python :var tab=many-cols
16633   return tab
16634 #+END_SRC
16636 #+RESULTS: echo-table
16637 | a | b | c |
16638 | d | e | f |
16639 | g | h | i |
16640 @end example
16642 @item @code{yes}
16643 For @code{:hlines yes}, the example shows hlines unchanged.
16645 @example
16646 #+NAME: many-cols
16647 | a | b | c |
16648 |---+---+---|
16649 | d | e | f |
16650 |---+---+---|
16651 | g | h | i |
16653 #+NAME: echo-table
16654 #+BEGIN_SRC python :var tab=many-cols :hlines yes
16655   return tab
16656 #+END_SRC
16658 #+RESULTS: echo-table
16659 | a | b | c |
16660 |---+---+---|
16661 | d | e | f |
16662 |---+---+---|
16663 | g | h | i |
16664 @end example
16665 @end itemize
16667 @node colnames
16668 @subsubsection @code{:colnames}
16669 @cindex @code{:colnames}, src header argument
16671 The @code{:colnames} header argument accepts @code{yes}, @code{no}, or
16672 @code{nil} values.  The default value is @code{nil}, which is unassigned.
16673 But this header argument behaves differently depending on the source code
16674 language.
16676 @itemize @bullet
16677 @item @code{nil}
16678 If an input table has column names (because the second row is an hline), then
16679 Org removes the column names, processes the table, puts back the column
16680 names, and then writes the table to the results block.
16682 @example
16683 #+NAME: less-cols
16684 | a |
16685 |---|
16686 | b |
16687 | c |
16689 #+NAME: echo-table-again
16690 #+BEGIN_SRC python :var tab=less-cols
16691   return [[val + '*' for val in row] for row in tab]
16692 #+END_SRC
16694 #+RESULTS: echo-table-again
16695 | a  |
16696 |----|
16697 | b* |
16698 | c* |
16699 @end example
16701 Note that column names have to accounted for when using variable indexing
16702 (@pxref{var, Indexable variable values}) because column names are not removed
16703 for indexing.
16705 @item @code{no}
16706 Do not pre-process column names.
16708 @item @code{yes}
16709 For an input table that has no hlines, process it like the @code{nil}
16710 value.  That is, Org removes the column names, processes the table, puts back
16711 the column names, and then writes the table to the results block.
16712 @end itemize
16714 @node rownames
16715 @subsubsection @code{:rownames}
16716 @cindex @code{:rownames}, src header argument
16718 The @code{:rownames} header argument can take on values @code{yes} or
16719 @code{no} values.  The default is @code{no}.  Note that @code{emacs-lisp}
16720 code blocks ignore @code{:rownames} header argument because of the ease of
16721 table-handling in Emacs.
16723 @itemize @bullet
16724 @item @code{no}
16725 Org will not pre-process row names.
16727 @item @code{yes}
16728 If an input table has row names, then Org removes the row names, processes
16729 the table, puts back the row names, and then writes the table to the results
16730 block.
16732 @example
16733 #+NAME: with-rownames
16734 | one | 1 | 2 | 3 | 4 |  5 |
16735 | two | 6 | 7 | 8 | 9 | 10 |
16737 #+NAME: echo-table-once-again
16738 #+BEGIN_SRC python :var tab=with-rownames :rownames yes
16739   return [[val + 10 for val in row] for row in tab]
16740 #+END_SRC
16742 #+RESULTS: echo-table-once-again
16743 | one | 11 | 12 | 13 | 14 | 15 |
16744 | two | 16 | 17 | 18 | 19 | 20 |
16745 @end example
16747 Note that row names have to accounted for when using variable indexing
16748 (@pxref{var, Indexable variable values}) because row names are not removed
16749 for indexing.
16751 @end itemize
16753 @node shebang
16754 @subsubsection @code{:shebang}
16755 @cindex @code{:shebang}, src header argument
16757 This header argument can turn results into executable script files.  By
16758 setting the @code{:shebang} header argument to a string value (for example,
16759 @code{:shebang "#!/bin/bash"}), Org inserts that string as the first line of
16760 the tangled file that the @samp{src} code block is extracted to.  Org then
16761 turns on the tangled file's executable permission.
16763 @node tangle-mode
16764 @subsubsection @code{:tangle-mode}
16765 @cindex @code{:tangle-mode}, src header argument
16767 The @code{tangle-mode} header argument specifies what permissions to set for
16768 tangled files by @code{set-file-modes}.  For example, to make read-only
16769 tangled file, use @code{:tangle-mode (identity #o444)}.  To make it
16770 executable, use @code{:tangle-mode (identity #o755)}.
16772 On @samp{src} code blocks with @code{shebang} (@pxref{shebang}) header
16773 argument, Org will automatically set the tangled file to executable
16774 permissions.  But this can be overridden with custom permissions using
16775 @code{tangle-mode} header argument.
16777 When multiple @samp{src} code blocks tangle to a single file with different
16778 and conflicting @code{tangle-mode} header arguments, Org's behavior is
16779 undefined.
16781 @node eval
16782 @subsubsection @code{:eval}
16783 @cindex @code{:eval}, src header argument
16784 The @code{:eval} header argument can limit evaluation of specific code
16785 blocks.  It is useful for protection against evaluating untrusted @samp{src}
16786 code blocks by prompting for a confirmation.  This protection is independent
16787 of the @code{org-confirm-babel-evaluate} setting.
16789 @table @code
16790 @item never or no
16791 Org will never evaluate this @samp{src} code block.
16792 @item query
16793 Org prompts the user for permission to evaluate this @samp{src} code block.
16794 @item never-export or no-export
16795 Org will not evaluate this @samp{src} code block when exporting, yet the user
16796 can evaluate this source block interactively.
16797 @item query-export
16798 Org prompts the user for permission to export this @samp{src} code block.
16799 @end table
16801 If @code{:eval} header argument is not set for a source block, then Org
16802 determines whether to evaluate from the @code{org-confirm-babel-evaluate}
16803 variable (@pxref{Code evaluation security}).
16805 @node wrap
16806 @subsubsection @code{:wrap}
16807 @cindex @code{:wrap}, src header argument
16808 The @code{:wrap} header argument marks the results block by appending strings
16809 to @code{#+BEGIN_} and @code{#+END_}.  If no string is specified, Org wraps
16810 the results in a @code{#+BEGIN/END_RESULTS} block.
16812 @node post
16813 @subsubsection @code{:post}
16814 @cindex @code{:post}, src header argument
16815 The @code{:post} header argument is for post-processing results from
16816 @samp{src} block evaluation.  When @code{:post} has any value, Org binds the
16817 results to @code{*this*} variable for easy passing to @ref{var} header
16818 argument specifications.  That makes results available to other @samp{src}
16819 code blocks, or for even direct Emacs Lisp code execution.
16821 The following two examples illustrate @code{:post} header argument in action.
16822 The first one shows how to attach @code{#+ATTR_LATEX:} line using
16823 @code{:post}.
16825 @example
16826 #+name: attr_wrap
16827 #+begin_src sh :var data="" :var width="\\textwidth" :results output
16828   echo "#+ATTR_LATEX: :width $width"
16829   echo "$data"
16830 #+end_src
16832 #+header: :file /tmp/it.png
16833 #+begin_src dot :post attr_wrap(width="5cm", data=*this*) :results drawer
16834   digraph@{
16835           a -> b;
16836           b -> c;
16837           c -> a;
16838   @}
16839 #+end_src
16841 #+RESULTS:
16842 :RESULTS:
16843 #+ATTR_LATEX :width 5cm
16844 [[file:/tmp/it.png]]
16845 :END:
16846 @end example
16848 The second example shows use of @code{:colnames} in @code{:post} to pass
16849 data between @samp{src} code blocks.
16851 @example
16852 #+name: round-tbl
16853 #+begin_src emacs-lisp :var tbl="" fmt="%.3f"
16854   (mapcar (lambda (row)
16855             (mapcar (lambda (cell)
16856                       (if (numberp cell)
16857                           (format fmt cell)
16858                         cell))
16859                     row))
16860           tbl)
16861 #+end_src
16863 #+begin_src R :colnames yes :post round-tbl[:colnames yes](*this*)
16864 set.seed(42)
16865 data.frame(foo=rnorm(1))
16866 #+end_src
16868 #+RESULTS:
16869 |   foo |
16870 |-------|
16871 | 1.371 |
16872 @end example
16874 @node prologue
16875 @subsubsection @code{:prologue}
16876 @cindex @code{:prologue}, src header argument
16877 The @code{prologue} header argument is for appending to the top of the code
16878 block for execution.  For example, a clear or reset code at the start of new
16879 execution of a @samp{src} code block.  A @code{reset} for @samp{gnuplot}:
16880 @code{:prologue "reset"}.  See also @ref{epilogue}.
16882 @lisp
16883 (add-to-list 'org-babel-default-header-args:gnuplot
16884              '((:prologue . "reset")))
16885 @end lisp
16887 @node epilogue
16888 @subsubsection @code{:epilogue}
16889 @cindex @code{:epilogue}, src header argument
16890 The value of the @code{epilogue} header argument is for appending to the end
16891 of the code block for execution.  See also @ref{prologue}.
16893 @node Results of evaluation
16894 @section Results of evaluation
16895 @cindex code block, results of evaluation
16896 @cindex source code, results of evaluation
16898 How Org handles results of a code block execution depends on many header
16899 arguments working together.  Here is only a summary of these.  For an
16900 enumeration of all the header arguments that affect results, see
16901 @ref{results}.
16903 The primary determinant is the execution context.  Is it in a @code{:session}
16904 or not?  Orthogonal to that is if the expected result is a @code{:results
16905 value} or @code{:results output}, which is a concatenation of output from
16906 start to finish of the @samp{src} code block's evaluation.
16908 @multitable @columnfractions 0.26 0.33 0.41
16909 @item @tab @b{Non-session} @tab @b{Session}
16910 @item @code{:results value} @tab value of last expression @tab value of last expression
16911 @item @code{:results output} @tab contents of STDOUT @tab concatenation of interpreter output
16912 @end multitable
16914 For @code{:session} and non-session, the @code{:results value} turns the
16915 results into an Org mode table format.  Single values are wrapped in a one
16916 dimensional vector.  Rows and columns of a table are wrapped in a
16917 two-dimensional vector.
16919 @subsection Non-session
16920 @subsubsection @code{:results value}
16921 @cindex @code{:results}, src header argument
16922 Default.  Org gets the value by wrapping the code in a function definition in
16923 the language of the @samp{src} block.  That is why when using @code{:results
16924 value}, code should execute like a function and return a value.  For
16925 languages like Python, an explicit @code{return} statement is mandatory when
16926 using @code{:results value}.
16928 This is one of four evaluation contexts where Org automatically wraps the
16929 code in a function definition.
16931 @subsubsection @code{:results output}
16932 @cindex @code{:results}, src header argument
16933 For @code{:results output}, the code is passed to an external process running
16934 the interpreter.  Org returns the contents of the standard output stream as
16935 as text results.
16937 @subsection Session
16938 @subsubsection @code{:results value}
16939 @cindex @code{:results}, src header argument
16940 For @code{:results value} from a @code{:session}, Org passes the code to an
16941 interpreter running as an interactive Emacs inferior process.  So only
16942 languages that provide interactive evaluation can have session support.  Not
16943 all languages provide this support, such as @samp{C} and @samp{ditaa}.  Even
16944 those that do support, such as @samp{Python} and @samp{Haskell}, they impose
16945 limitations on allowable language constructs that can run interactively.  Org
16946 inherits those limitations for those @samp{src} code blocks running in a
16947 @code{:session}.
16949 Org gets the value from the source code interpreter's last statement
16950 output.  Org has to use language-specific methods to obtain the value.  For
16951 example, from the variable @code{_} in @samp{Python} and @samp{Ruby}, and the
16952 value of @code{.Last.value} in @samp{R}).
16954 @subsubsection @code{:results output}
16955 @cindex @code{:results}, src header argument
16956 For @code{:results output}, Org passes the code to the interpreter running as
16957 an interactive Emacs inferior process.  Org concatenates whatever text output
16958 emitted by the interpreter to return the collection as a result.  Note that
16959 this collection is not the same as collected from @code{STDOUT} of a
16960 non-interactive interpreter running as an external process.  Compare for
16961 example these two blocks:
16963 @example
16964 #+BEGIN_SRC python :results output
16965  print "hello"
16967  print "bye"
16968 #+END_SRC
16970 #+RESULTS:
16971 : hello
16972 : bye
16973 @end example
16975 In the above non-session mode, the ``2'' is not printed; so does not appear
16976 in results.
16978 @example
16979 #+BEGIN_SRC python :results output :session
16980  print "hello"
16982  print "bye"
16983 #+END_SRC
16985 #+RESULTS:
16986 : hello
16987 : 2
16988 : bye
16989 @end example
16991 In the above @code{:session} mode, the interactive interpreter receives and
16992 prints ``2''.  Results show that.
16994 @node Noweb reference syntax
16995 @section Noweb reference syntax
16996 @cindex code block, noweb reference
16997 @cindex syntax, noweb
16998 @cindex source code, noweb reference
17000 Org supports named blocks in Noweb style syntax.  For Noweb literate
17001 programming details, see @uref{http://www.cs.tufts.edu/~nr/noweb/}).
17003 @example
17004 <<code-block-name>>
17005 @end example
17007 For the header argument @code{:noweb yes}, Org expands Noweb style references
17008 in the @samp{src} code block before evaluation.
17010 For the header argument @code{:noweb no}, Org does not expand Noweb style
17011 references in the @samp{src} code block before evaluation.
17013 The default is @code{:noweb no}.  Org defaults to @code{:noweb no} so as not
17014 to cause errors in languages where Noweb syntax is ambiguous.  Change Org's
17015 default to @code{:noweb yes} for languages where there is no risk of
17016 confusion.
17018 Org offers a more flexible way to resolve Noweb style references
17019 (@pxref{noweb-ref}).
17021 Org can include the @emph{results} of a code block rather than its body.  To
17022 that effect, append parentheses, possibly including arguments, to the code
17023 block name, as show below.
17025 @example
17026 <<code-block-name(optional arguments)>>
17027 @end example
17029 Note that when using the above approach to a code block's results, the code
17030 block name set by @code{#+NAME} keyword is required; the reference set by
17031 @code{:noweb-ref} will not work.
17033 Here is an example that demonstrates how the exported content changes when
17034 Noweb style references are used with parentheses versus without.
17036 With:
17038 @example
17039 #+NAME: some-code
17040 #+BEGIN_SRC python :var num=0 :results output :exports none
17041 print(num*10)
17042 #+END_SRC
17043 @end example
17045 this code block:
17047 @example
17048 #+BEGIN_SRC text :noweb yes
17049 <<some-code>>
17050 #+END_SRC
17051 @end example
17053 expands to:
17055 @example
17056 print(num*10)
17057 @end example
17059 Below, a similar Noweb style reference is used, but with parentheses, while
17060 setting a variable @code{num} to 10:
17062 @example
17063 #+BEGIN_SRC text :noweb yes
17064 <<some-code(num=10)>>
17065 #+END_SRC
17066 @end example
17068 Note that now the expansion contains the @emph{results} of the code block
17069 @code{some-code}, not the code block itself:
17071 @example
17073 @end example
17075 For faster tangling of large Org mode files, set
17076 @code{org-babel-use-quick-and-dirty-noweb-expansion} variable to @code{t}.
17077 The speedup comes at the expense of not correctly resolving inherited values
17078 of the @code{:noweb-ref} header argument.
17081 @node Key bindings and useful functions
17082 @section Key bindings and useful functions
17083 @cindex code block, key bindings
17085 Many common Org mode key sequences are re-bound depending on the context.
17087 Active key bindings in code blocks:
17089 @multitable @columnfractions 0.25 0.75
17090 @kindex C-c C-c
17091 @item @kbd{C-c C-c} @tab @code{org-babel-execute-src-block}
17092 @kindex C-c C-o
17093 @item @kbd{C-c C-o} @tab @code{org-babel-open-src-block-result}
17094 @kindex M-up
17095 @item @kbd{M-@key{up}}    @tab @code{org-babel-load-in-session}
17096 @kindex M-down
17097 @item @kbd{M-@key{down}}  @tab @code{org-babel-switch-to-session}
17098 @end multitable
17100 Active key bindings in Org mode buffer:
17102 @multitable @columnfractions 0.5 0.5
17103 @kindex C-c C-v p
17104 @kindex C-c C-v C-p
17105 @item @kbd{C-c C-v p} @ @ @r{or} @ @ @kbd{C-c C-v C-p} @tab @code{org-babel-previous-src-block}
17106 @kindex C-c C-v n
17107 @kindex C-c C-v C-n
17108 @item @kbd{C-c C-v n} @ @ @r{or} @ @ @kbd{C-c C-v C-n} @tab @code{org-babel-next-src-block}
17109 @kindex C-c C-v e
17110 @kindex C-c C-v C-e
17111 @item @kbd{C-c C-v e} @ @ @r{or} @ @ @kbd{C-c C-v C-e} @tab @code{org-babel-execute-maybe}
17112 @kindex C-c C-v o
17113 @kindex C-c C-v C-o
17114 @item @kbd{C-c C-v o} @ @ @r{or} @ @ @kbd{C-c C-v C-o} @tab @code{org-babel-open-src-block-result}
17115 @kindex C-c C-v v
17116 @kindex C-c C-v C-v
17117 @item @kbd{C-c C-v v} @ @ @r{or} @ @ @kbd{C-c C-v C-v} @tab @code{org-babel-expand-src-block}
17118 @kindex C-c C-v u
17119 @kindex C-c C-v C-u
17120 @item @kbd{C-c C-v u} @ @ @r{or} @ @ @kbd{C-c C-v C-u} @tab @code{org-babel-goto-src-block-head}
17121 @kindex C-c C-v g
17122 @kindex C-c C-v C-g
17123 @item @kbd{C-c C-v g} @ @ @r{or} @ @ @kbd{C-c C-v C-g} @tab @code{org-babel-goto-named-src-block}
17124 @kindex C-c C-v r
17125 @kindex C-c C-v C-r
17126 @item @kbd{C-c C-v r} @ @ @r{or} @ @ @kbd{C-c C-v C-r} @tab @code{org-babel-goto-named-result}
17127 @kindex C-c C-v b
17128 @kindex C-c C-v C-b
17129 @item @kbd{C-c C-v b} @ @ @r{or} @ @ @kbd{C-c C-v C-b} @tab @code{org-babel-execute-buffer}
17130 @kindex C-c C-v s
17131 @kindex C-c C-v C-s
17132 @item @kbd{C-c C-v s} @ @ @r{or} @ @ @kbd{C-c C-v C-s} @tab @code{org-babel-execute-subtree}
17133 @kindex C-c C-v d
17134 @kindex C-c C-v C-d
17135 @item @kbd{C-c C-v d} @ @ @r{or} @ @ @kbd{C-c C-v C-d} @tab @code{org-babel-demarcate-block}
17136 @kindex C-c C-v t
17137 @kindex C-c C-v C-t
17138 @item @kbd{C-c C-v t} @ @ @r{or} @ @ @kbd{C-c C-v C-t} @tab @code{org-babel-tangle}
17139 @kindex C-c C-v f
17140 @kindex C-c C-v C-f
17141 @item @kbd{C-c C-v f} @ @ @r{or} @ @ @kbd{C-c C-v C-f} @tab @code{org-babel-tangle-file}
17142 @kindex C-c C-v c
17143 @kindex C-c C-v C-c
17144 @item @kbd{C-c C-v c} @ @ @r{or} @ @ @kbd{C-c C-v C-c} @tab @code{org-babel-check-src-block}
17145 @kindex C-c C-v j
17146 @kindex C-c C-v C-j
17147 @item @kbd{C-c C-v j} @ @ @r{or} @ @ @kbd{C-c C-v C-j} @tab @code{org-babel-insert-header-arg}
17148 @kindex C-c C-v l
17149 @kindex C-c C-v C-l
17150 @item @kbd{C-c C-v l} @ @ @r{or} @ @ @kbd{C-c C-v C-l} @tab @code{org-babel-load-in-session}
17151 @kindex C-c C-v i
17152 @kindex C-c C-v C-i
17153 @item @kbd{C-c C-v i} @ @ @r{or} @ @ @kbd{C-c C-v C-i} @tab @code{org-babel-lob-ingest}
17154 @kindex C-c C-v I
17155 @kindex C-c C-v C-I
17156 @item @kbd{C-c C-v I} @ @ @r{or} @ @ @kbd{C-c C-v C-I} @tab @code{org-babel-view-src-block-info}
17157 @kindex C-c C-v z
17158 @kindex C-c C-v C-z
17159 @item @kbd{C-c C-v z} @ @ @r{or} @ @ @kbd{C-c C-v C-z} @tab @code{org-babel-switch-to-session-with-code}
17160 @kindex C-c C-v a
17161 @kindex C-c C-v C-a
17162 @item @kbd{C-c C-v a} @ @ @r{or} @ @ @kbd{C-c C-v C-a} @tab @code{org-babel-sha1-hash}
17163 @kindex C-c C-v h
17164 @kindex C-c C-v C-h
17165 @item @kbd{C-c C-v h} @ @ @r{or} @ @ @kbd{C-c C-v C-h} @tab @code{org-babel-describe-bindings}
17166 @kindex C-c C-v x
17167 @kindex C-c C-v C-x
17168 @item @kbd{C-c C-v x} @ @ @r{or} @ @ @kbd{C-c C-v C-x} @tab @code{org-babel-do-key-sequence-in-edit-buffer}
17169 @end multitable
17171 @c Extended key bindings when control key is kept pressed:
17173 @c @multitable @columnfractions 0.25 0.75
17174 @c @item @kbd{C-c C-v C-a} @tab @code{org-babel-sha1-hash}
17175 @c @item @kbd{C-c C-v C-b} @tab @code{org-babel-execute-buffer}
17176 @c @item @kbd{C-c C-v C-f} @tab @code{org-babel-tangle-file}
17177 @c @item @kbd{C-c C-v C-l} @tab @code{org-babel-lob-ingest}
17178 @c @item @kbd{C-c C-v C-p} @tab @code{org-babel-expand-src-block}
17179 @c @item @kbd{C-c C-v C-s} @tab @code{org-babel-execute-subtree}
17180 @c @item @kbd{C-c C-v C-t} @tab @code{org-babel-tangle}
17181 @c @item @kbd{C-c C-v C-z} @tab @code{org-babel-switch-to-session}
17182 @c @end multitable
17184 @node Batch execution
17185 @section Batch execution
17186 @cindex code block, batch execution
17187 @cindex source code, batch execution
17189 Org mode features, including working with source code facilities can be
17190 invoked from the command line.  This enables building shell scripts for batch
17191 processing, running automated system tasks, and expanding Org mode's
17192 usefulness.
17194 The sample script shows batch processing of multiple files using
17195 @code{org-babel-tangle}.
17197 @example
17198 #!/bin/sh
17199 # tangle files with org-mode
17201 emacs -Q --batch --eval "
17202     (progn
17203       (require 'ob-tangle)
17204       (mapc (lambda (file)
17205               (save-current-buffer
17206                 (find-file file)
17207                 (org-babel-tangle)
17208                 (kill-buffer)))
17209             command-line-args-left))
17210   " "$@@"
17211 @end example
17213 @node Miscellaneous
17214 @chapter Miscellaneous
17216 @menu
17217 * Completion::                  M-TAB guesses completions
17218 * Easy templates::              Quick insertion of structural elements
17219 * Speed keys::                  Electric commands at the beginning of a headline
17220 * Code evaluation security::    Org mode files evaluate inline code
17221 * Customization::               Adapting Org to changing tastes
17222 * In-buffer settings::          Overview of the #+KEYWORDS
17223 * The very busy C-c C-c key::   When in doubt, press C-c C-c
17224 * Clean view::                  Getting rid of leading stars in the outline
17225 * TTY keys::                    Using Org on a tty
17226 * Interaction::                 With other Emacs packages
17227 * org-crypt::                   Encrypting Org files
17228 @end menu
17231 @node Completion
17232 @section Completion
17233 @cindex completion, of @TeX{} symbols
17234 @cindex completion, of TODO keywords
17235 @cindex completion, of dictionary words
17236 @cindex completion, of option keywords
17237 @cindex completion, of tags
17238 @cindex completion, of property keys
17239 @cindex completion, of link abbreviations
17240 @cindex @TeX{} symbol completion
17241 @cindex TODO keywords completion
17242 @cindex dictionary word completion
17243 @cindex option keyword completion
17244 @cindex tag completion
17245 @cindex link abbreviations, completion of
17247 Org has in-buffer completions.  Unlike minibuffer completions, which are
17248 useful for quick command interactions, Org's in-buffer completions are more
17249 suitable for content creation in Org documents.  Type one or more letters and
17250 invoke the hot key to complete the text in-place.  Depending on the context
17251 and the keys, Org will offer different types of completions.  No minibuffer
17252 is involved.  Such mode-specific hot keys have become an integral part of
17253 Emacs and Org provides several shortcuts.
17255 @table @kbd
17256 @kindex M-@key{TAB}
17257 @item M-@key{TAB}
17258 Complete word at point
17259 @itemize @bullet
17260 @item
17261 At the beginning of a headline, complete TODO keywords.
17262 @item
17263 After @samp{\}, complete @TeX{} symbols supported by the exporter.
17264 @item
17265 After @samp{*}, complete headlines in the current buffer so that they
17266 can be used in search links like @samp{[[*find this headline]]}.
17267 @item
17268 After @samp{:} in a headline, complete tags.  The list of tags is taken
17269 from the variable @code{org-tag-alist} (possibly set through the
17270 @samp{#+TAGS} in-buffer option, @pxref{Setting tags}), or it is created
17271 dynamically from all tags used in the current buffer.
17272 @item
17273 After @samp{:} and not in a headline, complete property keys.  The list
17274 of keys is constructed dynamically from all keys used in the current
17275 buffer.
17276 @item
17277 After @samp{[}, complete link abbreviations (@pxref{Link abbreviations}).
17278 @item
17279 After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
17280 file-specific @samp{OPTIONS}.  After option keyword is complete, pressing
17281 @kbd{M-@key{TAB}} again will insert example settings for that option.
17282 @item
17283 After @samp{#+STARTUP: }, complete startup keywords.
17284 @item
17285 When the point is anywhere else, complete dictionary words using Ispell.
17286 @end itemize
17287 @kindex C-M-i
17288 If your desktop intercepts the combo @kbd{M-@key{TAB}} to switch windows, use
17289 @kbd{C-M-i} or @kbd{@key{ESC} @key{TAB}} as an alternative or customize your
17290 environment.
17291 @end table
17293 @node Easy templates
17294 @section Easy templates
17295 @cindex template insertion
17296 @cindex insertion, of templates
17298 With just a few keystrokes, Org's easy templates inserts empty pairs of
17299 structural elements, such as @code{#+BEGIN_SRC} and @code{#+END_SRC}.  Easy
17300 templates use an expansion mechanism, which is native to Org, in a process
17301 similar to @file{yasnippet} and other Emacs template expansion packages.
17303 @kbd{<} @kbd{s} @kbd{@key{TAB}} expands to a @samp{src} code block.
17305 @kbd{<} @kbd{l} @kbd{@key{TAB}} expands to:
17307 #+BEGIN_EXPORT latex
17309 #+END_EXPORT
17311 Org comes with these pre-defined easy templates:
17313 @multitable @columnfractions 0.1 0.9
17314 @item @kbd{s} @tab @code{#+BEGIN_SRC ... #+END_SRC}
17315 @item @kbd{e} @tab @code{#+BEGIN_EXAMPLE ... #+END_EXAMPLE}
17316 @item @kbd{q} @tab @code{#+BEGIN_QUOTE ... #+END_QUOTE}
17317 @item @kbd{v} @tab @code{#+BEGIN_VERSE ... #+END_VERSE}
17318 @item @kbd{c} @tab @code{#+BEGIN_CENTER ... #+END_CENTER}
17319 @item @kbd{l} @tab @code{#+BEGIN_EXPORT latex ... #+END_EXPORT}
17320 @item @kbd{L} @tab @code{#+LATEX:}
17321 @item @kbd{h} @tab @code{#+BEGIN_EXPORT html ... #+END_EXPORT}
17322 @item @kbd{H} @tab @code{#+HTML:}
17323 @item @kbd{a} @tab @code{#+BEGIN_EXPORT ascii ... #+END_EXPORT}
17324 @item @kbd{A} @tab @code{#+ASCII:}
17325 @item @kbd{i} @tab @code{#+INDEX:} line
17326 @item @kbd{I} @tab @code{#+INCLUDE:} line
17327 @end multitable
17329 More templates can added by customizing the variable
17330 @code{org-structure-template-alist}, whose docstring has additional details.
17332 @node Speed keys
17333 @section Speed keys
17334 @cindex speed keys
17336 Single keystrokes can execute custom commands in an Org file when the cursor
17337 is on a headline.  Without the extra burden of a meta or modifier key, Speed
17338 Keys can speed navigation or execute custom commands.  Besides faster
17339 navigation, Speed Keys may come in handy on small mobile devices that do not
17340 have full keyboards.  Speed Keys may also work on TTY devices known for their
17341 problems when entering Emacs keychords.
17343 @vindex org-use-speed-commands
17344 By default, Org has Speed Keys disabled.  To activate Speed Keys, set the
17345 variable @code{org-use-speed-commands} to a non-@code{nil} value.  To trigger
17346 a Speed Key, the cursor must be at the beginning of an Org headline, before
17347 any of the stars.
17349 @vindex org-speed-commands-user
17350 @findex org-speed-command-help
17351 Org comes with a pre-defined list of Speed Keys.  To add or modify Speed
17352 Keys, customize the variable, @code{org-speed-commands-user}.  For more
17353 details, see the variable's docstring.  With Speed Keys activated, @kbd{M-x
17354 org-speed-command-help}, or @kbd{?} when cursor is at the beginning of an Org
17355 headline, shows currently active Speed Keys, including the user-defined ones.
17358 @node Code evaluation security
17359 @section Code evaluation and security issues
17361 Unlike plain text, running code comes with risk.  Each @samp{src} code block,
17362 in terms of risk, is equivalent to an executable file.  Org therefore puts a
17363 few confirmation prompts by default.  This is to alert the casual user from
17364 accidentally running untrusted code.
17366 For users who do not run code blocks or write code regularly, Org's default
17367 settings should suffice.  However, some users may want to tweak the prompts
17368 for fewer interruptions.  To weigh the risks of automatic execution of code
17369 blocks, here are some details about code evaluation.
17371 Org evaluates code in the following circumstances:
17373 @table @i
17374 @item Source code blocks
17375 Org evaluates @samp{src} code blocks in an Org file during export.  Org also
17376 evaluates a @samp{src} code block with the @kbd{C-c C-c} key chord.  Users
17377 exporting or running code blocks must load files only from trusted sources.
17378 Be wary of customizing variables that remove or alter default security
17379 measures.
17381 @defopt org-confirm-babel-evaluate
17382 When @code{t}, Org prompts the user for confirmation before executing each
17383 code block.  When @code{nil}, Org executes code blocks without prompting the
17384 user for confirmation.  When this option is set to a custom function, Org
17385 invokes the function with these two arguments: the source code language and
17386 the body of the code block.  The custom function must return either a
17387 @code{t} or @code{nil}, which determines if the user is prompted.  Each
17388 source code language can be handled separately through this function
17389 argument.
17390 @end defopt
17392 For example, this function enables execution of @samp{ditaa} code +blocks
17393 without prompting:
17395 @lisp
17396 (defun my-org-confirm-babel-evaluate (lang body)
17397   (not (string= lang "ditaa")))  ; don't ask for ditaa
17398 (setq org-confirm-babel-evaluate 'my-org-confirm-babel-evaluate)
17399 @end lisp
17401 @item Following @code{shell} and @code{elisp} links
17402 Org has two link types that can also directly evaluate code (@pxref{External
17403 links}).  Because such code is not visible, these links have a potential
17404 risk.  Org therefore prompts the user when it encounters such links.  The
17405 customization variables are:
17407 @defopt org-confirm-shell-link-function
17408 Function that prompts the user before executing a shell link.
17409 @end defopt
17410 @defopt org-confirm-elisp-link-function
17411 Function that prompts the user before executing an Emacs Lisp link.
17412 @end defopt
17414 @item Formulas in tables
17415 Org executes formulas in tables (@pxref{The spreadsheet}) either through the
17416 @emph{calc} or the @emph{Emacs Lisp} interpreters.
17417 @end table
17419 @node Customization
17420 @section Customization
17421 @cindex customization
17422 @cindex options, for customization
17423 @cindex variables, for customization
17425 Org has more than 500 variables for customization.  They can be accessed
17426 through the usual @kbd{M-x org-customize RET} command.  Or through the Org
17427 menu, @code{Org->Customization->Browse Org Group}.  Org also has per-file
17428 settings for some variables (@pxref{In-buffer settings}).
17430 @node In-buffer settings
17431 @section Summary of in-buffer settings
17432 @cindex in-buffer settings
17433 @cindex special keywords
17434 In-buffer settings start with @samp{#+}, followed by a keyword, a colon, and
17435 then a word for each setting.  Org accepts multiple settings on the same
17436 line.  Org also accepts multiple lines for a keyword.  This manual describes
17437 these settings throughout.  A summary follows here.
17439 @kbd{C-c C-c} activates any changes to the in-buffer settings.  Closing and
17440 reopening the Org file in Emacs also activates the changes.
17442 @vindex org-archive-location
17443 @table @kbd
17444 @item #+ARCHIVE: %s_done::
17445 Sets the archive location of the agenda file.  This location applies to the
17446 lines until the next @samp{#+ARCHIVE} line, if any, in the Org file.  The
17447 first archive location in the Org file also applies to any entries before it.
17448 The corresponding variable is @code{org-archive-location}.
17449 @item #+CATEGORY:
17450 Sets the category of the agenda file, which applies to the entire document.
17451 @item #+COLUMNS: %25ITEM ...
17452 @cindex property, COLUMNS
17453 Sets the default format for columns view.  Org uses this format for column
17454 views where there is no @code{COLUMNS} property.
17455 @item #+CONSTANTS: name1=value1 ...
17456 @vindex org-table-formula-constants
17457 @vindex org-table-formula
17458 Set file-local values for constants that table formulas can use.  This line
17459 sets the local variable @code{org-table-formula-constants-local}.  The global
17460 version of this variable is @code{org-table-formula-constants}.
17461 @item #+FILETAGS: :tag1:tag2:tag3:
17462 Set tags that all entries in the file will inherit from here, including the
17463 top-level entries.
17464 @item #+LINK: linkword replace
17465 @vindex org-link-abbrev-alist
17466 Each line specifies one abbreviation for one link.  Use multiple
17467 @code{#+LINK:} lines for more, @pxref{Link abbreviations}.  The corresponding
17468 variable is @code{org-link-abbrev-alist}.
17469 @item #+PRIORITIES: highest lowest default
17470 @vindex org-highest-priority
17471 @vindex org-lowest-priority
17472 @vindex org-default-priority
17473 This line sets the limits and the default for the priorities.  All three
17474 must be either letters A--Z or numbers 0--9.  The highest priority must
17475 have a lower ASCII number than the lowest priority.
17476 @item #+PROPERTY: Property_Name Value
17477 This line sets a default inheritance value for entries in the current
17478 buffer, most useful for specifying the allowed values of a property.
17479 @cindex #+SETUPFILE
17480 @item #+SETUPFILE: file
17481 The setup file is for additional in-buffer settings.  Org loads this file and
17482 parses it for any settings in it only when Org opens the main file.  @kbd{C-c
17483 C-c} on the settings line will also parse and load.  Org also parses and
17484 loads the file during normal exporting process.  Org parses the contents of
17485 this file as if it was included in the buffer.  It can be another Org file.
17486 To visit the file, @kbd{C-c '} while the cursor is on the line with the file
17487 name.
17488 @item #+STARTUP:
17489 @cindex #+STARTUP
17490 Startup options Org uses when first visiting a file.
17492 The first set of options deals with the initial visibility of the outline
17493 tree.  The corresponding variable for global default settings is
17494 @code{org-startup-folded} with a default value of @code{t}, which is the same
17495 as @code{overview}.
17497 @vindex org-startup-folded
17498 @cindex @code{overview}, STARTUP keyword
17499 @cindex @code{content}, STARTUP keyword
17500 @cindex @code{showall}, STARTUP keyword
17501 @cindex @code{showeverything}, STARTUP keyword
17502 @example
17503 overview         @r{top-level headlines only}
17504 content          @r{all headlines}
17505 showall          @r{no folding of any entries}
17506 showeverything   @r{show even drawer contents}
17507 @end example
17509 @vindex org-startup-indented
17510 @cindex @code{indent}, STARTUP keyword
17511 @cindex @code{noindent}, STARTUP keyword
17512 Dynamic virtual indentation is controlled by the variable
17513 @code{org-startup-indented}
17514 @example
17515 indent     @r{start with @code{org-indent-mode} turned on}
17516 noindent   @r{start with @code{org-indent-mode} turned off}
17517 @end example
17519 @vindex org-startup-align-all-tables
17520 Aligns tables consistently upon visiting a file; useful for restoring
17521 narrowed table columns.  The corresponding variable is
17522 @code{org-startup-align-all-tables} with @code{nil} as default value.
17524 @cindex @code{align}, STARTUP keyword
17525 @cindex @code{noalign}, STARTUP keyword
17526 @example
17527 align      @r{align all tables}
17528 noalign    @r{don't align tables on startup}
17529 @end example
17531 @vindex org-startup-with-inline-images
17532 Whether Org should automatically display inline images.  The corresponding
17533 variable is @code{org-startup-with-inline-images}, with a default value
17534 @code{nil} to avoid delays when visiting a file.
17535 @cindex @code{inlineimages}, STARTUP keyword
17536 @cindex @code{noinlineimages}, STARTUP keyword
17537 @example
17538 inlineimages   @r{show inline images}
17539 noinlineimages @r{don't show inline images on startup}
17540 @end example
17542 @vindex org-startup-with-latex-preview
17543 Whether Org should automatically convert @LaTeX{} fragments to images.  The
17544 variable @code{org-startup-with-latex-preview}, which controls this setting,
17545 is set to @code{nil} by default to avoid startup delays.
17546 @cindex @code{latexpreview}, STARTUP keyword
17547 @cindex @code{nolatexpreview}, STARTUP keyword
17548 @example
17549 latexpreview   @r{preview @LaTeX{} fragments}
17550 nolatexpreview @r{don't preview @LaTeX{} fragments}
17551 @end example
17553 @vindex org-log-done
17554 @vindex org-log-note-clock-out
17555 @vindex org-log-repeat
17556 Logging the closing and reopening of TODO items and clock intervals can be
17557 configured using these options (see variables @code{org-log-done},
17558 @code{org-log-note-clock-out} and @code{org-log-repeat})
17559 @cindex @code{logdone}, STARTUP keyword
17560 @cindex @code{lognotedone}, STARTUP keyword
17561 @cindex @code{nologdone}, STARTUP keyword
17562 @cindex @code{lognoteclock-out}, STARTUP keyword
17563 @cindex @code{nolognoteclock-out}, STARTUP keyword
17564 @cindex @code{logrepeat}, STARTUP keyword
17565 @cindex @code{lognoterepeat}, STARTUP keyword
17566 @cindex @code{nologrepeat}, STARTUP keyword
17567 @cindex @code{logreschedule}, STARTUP keyword
17568 @cindex @code{lognotereschedule}, STARTUP keyword
17569 @cindex @code{nologreschedule}, STARTUP keyword
17570 @cindex @code{logredeadline}, STARTUP keyword
17571 @cindex @code{lognoteredeadline}, STARTUP keyword
17572 @cindex @code{nologredeadline}, STARTUP keyword
17573 @cindex @code{logrefile}, STARTUP keyword
17574 @cindex @code{lognoterefile}, STARTUP keyword
17575 @cindex @code{nologrefile}, STARTUP keyword
17576 @cindex @code{logdrawer}, STARTUP keyword
17577 @cindex @code{nologdrawer}, STARTUP keyword
17578 @cindex @code{logstatesreversed}, STARTUP keyword
17579 @cindex @code{nologstatesreversed}, STARTUP keyword
17580 @example
17581 logdone             @r{record a timestamp when an item is marked DONE}
17582 lognotedone         @r{record timestamp and a note when DONE}
17583 nologdone           @r{don't record when items are marked DONE}
17584 logrepeat           @r{record a time when reinstating a repeating item}
17585 lognoterepeat       @r{record a note when reinstating a repeating item}
17586 nologrepeat         @r{do not record when reinstating repeating item}
17587 lognoteclock-out    @r{record a note when clocking out}
17588 nolognoteclock-out  @r{don't record a note when clocking out}
17589 logreschedule       @r{record a timestamp when scheduling time changes}
17590 lognotereschedule   @r{record a note when scheduling time changes}
17591 nologreschedule     @r{do not record when a scheduling date changes}
17592 logredeadline       @r{record a timestamp when deadline changes}
17593 lognoteredeadline   @r{record a note when deadline changes}
17594 nologredeadline     @r{do not record when a deadline date changes}
17595 logrefile           @r{record a timestamp when refiling}
17596 lognoterefile       @r{record a note when refiling}
17597 nologrefile         @r{do not record when refiling}
17598 logdrawer           @r{store log into drawer}
17599 nologdrawer         @r{store log outside of drawer}
17600 logstatesreversed   @r{reverse the order of states notes}
17601 nologstatesreversed @r{do not reverse the order of states notes}
17602 @end example
17604 @vindex org-hide-leading-stars
17605 @vindex org-odd-levels-only
17606 These options hide leading stars in outline headings, and indent outlines.
17607 The corresponding variables are @code{org-hide-leading-stars} and
17608 @code{org-odd-levels-only}, both with a default setting of @code{nil}
17609 (meaning @code{showstars} and @code{oddeven}).
17610 @cindex @code{hidestars}, STARTUP keyword
17611 @cindex @code{showstars}, STARTUP keyword
17612 @cindex @code{odd}, STARTUP keyword
17613 @cindex @code{even}, STARTUP keyword
17614 @example
17615 hidestars  @r{hide all stars on the headline except one.}
17616 showstars  @r{show all stars on the headline}
17617 indent     @r{virtual indents according to the outline level}
17618 noindent   @r{no virtual indents}
17619 odd        @r{show odd outline levels only (1,3,...)}
17620 oddeven    @r{show all outline levels}
17621 @end example
17623 @vindex org-put-time-stamp-overlays
17624 @vindex org-time-stamp-overlay-formats
17625 To turn on custom format overlays over timestamps (variables
17626 @code{org-put-time-stamp-overlays} and
17627 @code{org-time-stamp-overlay-formats}), use
17628 @cindex @code{customtime}, STARTUP keyword
17629 @example
17630 customtime @r{overlay custom time format}
17631 @end example
17633 @vindex constants-unit-system
17634 The following options influence the table spreadsheet (variable
17635 @code{constants-unit-system}).
17636 @cindex @code{constcgs}, STARTUP keyword
17637 @cindex @code{constSI}, STARTUP keyword
17638 @example
17639 constcgs   @r{@file{constants.el} should use the c-g-s unit system}
17640 constSI    @r{@file{constants.el} should use the SI unit system}
17641 @end example
17643 @vindex org-footnote-define-inline
17644 @vindex org-footnote-auto-label
17645 @vindex org-footnote-auto-adjust
17646 For footnote settings, use the following keywords.  The corresponding
17647 variables are @code{org-footnote-define-inline},
17648 @code{org-footnote-auto-label}, and @code{org-footnote-auto-adjust}.
17649 @cindex @code{fninline}, STARTUP keyword
17650 @cindex @code{nofninline}, STARTUP keyword
17651 @cindex @code{fnlocal}, STARTUP keyword
17652 @cindex @code{fnprompt}, STARTUP keyword
17653 @cindex @code{fnauto}, STARTUP keyword
17654 @cindex @code{fnconfirm}, STARTUP keyword
17655 @cindex @code{fnplain}, STARTUP keyword
17656 @cindex @code{fnadjust}, STARTUP keyword
17657 @cindex @code{nofnadjust}, STARTUP keyword
17658 @example
17659 fninline    @r{define footnotes inline}
17660 fnnoinline  @r{define footnotes in separate section}
17661 fnlocal     @r{define footnotes near first reference, but not inline}
17662 fnprompt    @r{prompt for footnote labels}
17663 fnauto      @r{create @code{[fn:1]}-like labels automatically (default)}
17664 fnconfirm   @r{offer automatic label for editing or confirmation}
17665 fnplain     @r{create @code{[1]}-like labels automatically}
17666 fnadjust    @r{automatically renumber and sort footnotes}
17667 nofnadjust  @r{do not renumber and sort automatically}
17668 @end example
17670 @cindex org-hide-block-startup
17671 To hide blocks on startup, use these keywords.  The corresponding variable is
17672 @code{org-hide-block-startup}.
17673 @cindex @code{hideblocks}, STARTUP keyword
17674 @cindex @code{nohideblocks}, STARTUP keyword
17675 @example
17676 hideblocks   @r{Hide all begin/end blocks on startup}
17677 nohideblocks @r{Do not hide blocks on startup}
17678 @end example
17680 @cindex org-pretty-entities
17681 The display of entities as UTF-8 characters is governed by the variable
17682 @code{org-pretty-entities} and the keywords
17683 @cindex @code{entitiespretty}, STARTUP keyword
17684 @cindex @code{entitiesplain}, STARTUP keyword
17685 @example
17686 entitiespretty  @r{Show entities as UTF-8 characters where possible}
17687 entitiesplain   @r{Leave entities plain}
17688 @end example
17690 @item #+TAGS:  TAG1(c1) TAG2(c2)
17691 @vindex org-tag-alist
17692 These lines specify valid tags for this file.  Org accepts multiple tags
17693 lines.  Tags could correspond to the @emph{fast tag selection} keys.  The
17694 corresponding variable is @code{org-tag-alist}.
17695 @cindex #+TBLFM
17696 @item #+TBLFM:
17697 This line is for formulas for the table directly above.  A table can have
17698 multiple @samp{#+TBLFM:} lines.  On table recalculation, Org applies only the
17699 first @samp{#+TBLFM:} line.  For details see @ref{Using multiple #+TBLFM
17700 lines} in @ref{Editing and debugging formulas}.
17701 @item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+DATE:,
17702 @itemx #+OPTIONS:, #+BIND:,
17703 @itemx #+SELECT_TAGS:, #+EXCLUDE_TAGS:
17704 These lines provide settings for exporting files.  For more details see
17705 @ref{Export settings}.
17706 @item #+TODO:    #+SEQ_TODO:   #+TYP_TODO:
17707 @vindex org-todo-keywords
17708 These lines set the TODO keywords and their significance to the current file.
17709 The corresponding variable is @code{org-todo-keywords}.
17710 @end table
17712 @node The very busy C-c C-c key
17713 @section The very busy C-c C-c key
17714 @kindex C-c C-c
17715 @cindex C-c C-c, overview
17717 The @kbd{C-c C-c} key in Org serves many purposes depending on the context.
17718 It is probably the most over-worked, multi-purpose key combination in Org.
17719 Its uses are well-documented through out this manual, but here is a
17720 consolidated list for easy reference.
17722 @itemize @minus
17723 @item
17724 If any highlights shown in the buffer from the creation of a sparse tree, or
17725 from clock display, remove such highlights.
17726 @item
17727 If the cursor is in one of the special @code{#+KEYWORD} lines, scan the
17728 buffer for these lines and update the information.
17729 @item
17730 If the cursor is inside a table, realign the table.  The table realigns even
17731 if automatic table editor is turned off.
17732 @item
17733 If the cursor is on a @code{#+TBLFM} line, re-apply the formulas to
17734 the entire table.
17735 @item
17736 If the current buffer is a capture buffer, close the note and file it.  With
17737 a prefix argument, also jump to the target location after saving the note.
17738 @item
17739 If the cursor is on a @code{<<<target>>>}, update radio targets and
17740 corresponding links in this buffer.
17741 @item
17742 If the cursor is on a property line or at the start or end of a property
17743 drawer, offer property commands.
17744 @item
17745 If the cursor is at a footnote reference, go to the corresponding
17746 definition, and @emph{vice versa}.
17747 @item
17748 If the cursor is on a statistics cookie, update it.
17749 @item
17750 If the cursor is in a plain list item with a checkbox, toggle the status
17751 of the checkbox.
17752 @item
17753 If the cursor is on a numbered item in a plain list, renumber the
17754 ordered list.
17755 @item
17756 If the cursor is on the @code{#+BEGIN} line of a dynamic block, the
17757 block is updated.
17758 @item
17759 If the cursor is at a timestamp, fix the day name in the timestamp.
17760 @end itemize
17762 @node Clean view
17763 @section A cleaner outline view
17764 @cindex hiding leading stars
17765 @cindex dynamic indentation
17766 @cindex odd-levels-only outlines
17767 @cindex clean outline view
17769 Org's default outline with stars and no indents can become too cluttered for
17770 short documents.  For @emph{book-like} long documents, the effect is not as
17771 noticeable.  Org provides an alternate stars and indentation scheme, as shown
17772 on the right in the following table.  It uses only one star and indents text
17773 to line with the heading:
17775 @example
17776 @group
17777 * Top level headline             |    * Top level headline
17778 ** Second level                  |      * Second level
17779 *** 3rd level                    |        * 3rd level
17780 some text                        |          some text
17781 *** 3rd level                    |        * 3rd level
17782 more text                        |          more text
17783 * Another top level headline     |    * Another top level headline
17784 @end group
17785 @end example
17787 @noindent
17789 To turn this mode on, use the minor mode, @code{org-indent-mode}.  Text lines
17790 that are not headlines are prefixed with spaces to vertically align with the
17791 headline text@footnote{The @code{org-indent-mode} also sets the
17792 @code{wrap-prefix} correctly for indenting and wrapping long lines of
17793 headlines or text.  This minor mode handles @code{visual-line-mode} and
17794 directly applied settings through @code{word-wrap}.}.
17796 To make more horizontal space, the headlines are shifted by two stars.  This
17797 can be configured by the @code{org-indent-indentation-per-level} variable.
17798 Only one star on each headline is visible, the rest are masked with the same
17799 font color as the background.  This font face can be configured with the
17800 @code{org-hide} variable.
17802 Note that turning on @code{org-indent-mode} sets
17803 @code{org-hide-leading-stars} to @code{t} and @code{org-adapt-indentation} to
17804 @code{nil}; @samp{2.} below shows how this works.
17806 To globally turn on @code{org-indent-mode} for all files, customize the
17807 variable @code{org-startup-indented}.
17809 To turn on indenting for individual files, use @code{#+STARTUP} option as
17810 follows:
17812 @example
17813 #+STARTUP: indent
17814 @end example
17816 Indent on startup makes Org use hard spaces to align text with headings as
17817 shown in examples below.
17819 @enumerate
17820 @item
17821 @emph{Indentation of text below headlines}@*
17822 Indent text to align with the headline.
17824 @example
17825 *** 3rd level
17826     more text, now indented
17827 @end example
17829 @vindex org-adapt-indentation
17830 Org adapts indentations with paragraph filling, line wrapping, and structure
17831 editing@footnote{Also see the variable @code{org-adapt-indentation}.}.
17833 @item
17834 @vindex org-hide-leading-stars
17835 @emph{Hiding leading stars}@* Org can make leading stars invisible.  For
17836 global preference, configure the variable @code{org-hide-leading-stars}.  For
17837 per-file preference, use these file @code{#+STARTUP} options:
17839 @example
17840 #+STARTUP: hidestars
17841 #+STARTUP: showstars
17842 @end example
17844 With stars hidden, the tree is shown as:
17846 @example
17847 @group
17848 * Top level headline
17849  * Second level
17850   * 3rd level
17851   ...
17852 @end group
17853 @end example
17855 @noindent
17856 @vindex org-hide @r{(face)}
17857 Because Org makes the font color same as the background color to hide to
17858 stars, sometimes @code{org-hide} face may need tweaking to get the effect
17859 right.  For some black and white combinations, @code{grey90} on a white
17860 background might mask the stars better.
17862 @item
17863 @vindex org-odd-levels-only
17864 Using stars for only odd levels, 1, 3, 5, @dots{}, can also clean up the
17865 clutter.  This removes two stars from each level@footnote{Because
17866 @samp{LEVEL=2} has 3 stars, @samp{LEVEL=3} has 4 stars, and so on}.  For Org
17867 to properly handle this cleaner structure during edits and exports, configure
17868 the variable @code{org-odd-levels-only}.  To set this per-file, use either
17869 one of the following lines:
17871 @example
17872 #+STARTUP: odd
17873 #+STARTUP: oddeven
17874 @end example
17876 To switch between single and double stars layouts, use @kbd{M-x
17877 org-convert-to-odd-levels RET} and @kbd{M-x org-convert-to-oddeven-levels}.
17878 @end enumerate
17880 @node TTY keys
17881 @section Using Org on a tty
17882 @cindex tty key bindings
17884 Org provides alternative key bindings for TTY and modern mobile devices that
17885 cannot handle cursor keys and complex modifier key chords.  Some of these
17886 workarounds may be more cumbersome than necessary.  Users should look into
17887 customizing these further based on their usage needs.  For example, the
17888 normal @kbd{S-@key{cursor}} for editing timestamp might be better with
17889 @kbd{C-c .} chord.
17891 @multitable @columnfractions 0.15 0.2 0.1 0.2
17892 @item @b{Default} @tab @b{Alternative 1} @tab @b{Speed key} @tab @b{Alternative 2}
17893 @item @kbd{S-@key{TAB}}     @tab @kbd{C-u @key{TAB}}       @tab @kbd{C} @tab
17894 @item @kbd{M-@key{left}}    @tab @kbd{C-c C-x l}           @tab @kbd{l} @tab @kbd{@key{Esc} @key{left}}
17895 @item @kbd{M-S-@key{left}}  @tab @kbd{C-c C-x L}           @tab @kbd{L} @tab
17896 @item @kbd{M-@key{right}}   @tab @kbd{C-c C-x r}           @tab @kbd{r} @tab @kbd{@key{Esc} @key{right}}
17897 @item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R}           @tab @kbd{R} @tab
17898 @item @kbd{M-@key{up}}      @tab @kbd{C-c C-x u}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{up}}
17899 @item @kbd{M-S-@key{up}}    @tab @kbd{C-c C-x U}           @tab @kbd{U} @tab
17900 @item @kbd{M-@key{down}}    @tab @kbd{C-c C-x d}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{down}}
17901 @item @kbd{M-S-@key{down}}  @tab @kbd{C-c C-x D}           @tab @kbd{D} @tab
17902 @item @kbd{S-@key{RET}}     @tab @kbd{C-c C-x c}           @tab @kbd{ } @tab
17903 @item @kbd{M-@key{RET}}     @tab @kbd{C-c C-x m}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{RET}}
17904 @item @kbd{M-S-@key{RET}}   @tab @kbd{C-c C-x M}           @tab @kbd{ } @tab
17905 @item @kbd{S-@key{left}}    @tab @kbd{C-c @key{left}}      @tab @kbd{ } @tab
17906 @item @kbd{S-@key{right}}   @tab @kbd{C-c @key{right}}     @tab @kbd{ } @tab
17907 @item @kbd{S-@key{up}}      @tab @kbd{C-c @key{up}}        @tab @kbd{ } @tab
17908 @item @kbd{S-@key{down}}    @tab @kbd{C-c @key{down}}      @tab @kbd{ } @tab
17909 @item @kbd{C-S-@key{left}}  @tab @kbd{C-c C-x @key{left}}  @tab @kbd{ } @tab
17910 @item @kbd{C-S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab @kbd{ } @tab
17911 @end multitable
17914 @node Interaction
17915 @section Interaction with other packages
17916 @cindex packages, interaction with other
17917 Org's compatibility and the level of interaction with other Emacs packages
17918 are documented here.
17921 @menu
17922 * Cooperation::                 Packages Org cooperates with
17923 * Conflicts::                   Packages that lead to conflicts
17924 @end menu
17926 @node Cooperation
17927 @subsection Packages that Org cooperates with
17929 @table @asis
17930 @cindex @file{calc.el}
17931 @cindex Gillespie, Dave
17932 @item @file{calc.el} by Dave Gillespie
17933 Org uses the Calc package for tables to implement spreadsheet functionality
17934 (@pxref{The spreadsheet}).  Org also uses Calc for embedded calculations.
17935 @xref{Embedded Mode, , Embedded Mode, calc, GNU Emacs Calc Manual}.
17936 @item @file{constants.el} by Carsten Dominik
17937 @cindex @file{constants.el}
17938 @cindex Dominik, Carsten
17939 @vindex org-table-formula-constants
17940 Org can use names for constants in formulas in tables.  Org can also use
17941 calculation suffixes for units, such as @samp{M} for @samp{Mega}.  For a
17942 standard collection of such constants, install the @file{constants} package.
17943 Install version 2.0 of this package, available at
17944 @url{http://www.astro.uva.nl/~dominik/Tools}.  Org checks if the function
17945 @code{constants-get} has been autoloaded.  Installation instructions are in
17946 the file, @file{constants.el}.
17947 @item @file{cdlatex.el} by Carsten Dominik
17948 @cindex @file{cdlatex.el}
17949 @cindex Dominik, Carsten
17950 Org mode can use CD@LaTeX{} package to efficiently enter @LaTeX{} fragments
17951 into Org files (@pxref{CDLaTeX mode}).
17952 @item @file{imenu.el} by Ake Stenhoff and Lars Lindberg
17953 @cindex @file{imenu.el}
17954 Imenu creates dynamic menus based on an index of items in a file.  Org mode
17955 supports Imenu menus.  Enable it with a mode hook as follows:
17956 @lisp
17957 (add-hook 'org-mode-hook
17958           (lambda () (imenu-add-to-menubar "Imenu")))
17959 @end lisp
17960 @vindex org-imenu-depth
17961 By default the Imenu index is two levels deep.  Change the index depth using
17962 thes variable, @code{org-imenu-depth}.
17963 @item @file{speedbar.el} by Eric M. Ludlam
17964 @cindex @file{speedbar.el}
17965 @cindex Ludlam, Eric M.
17966 Speedbar package creates a special Emacs frame for displaying files and index
17967 items in files.  Org mode supports Speedbar; users can drill into Org files
17968 directly from the Speedbar.  The @kbd{<} in the Speedbar frame tweaks the
17969 agenda commands to that file or to a subtree.
17970 @cindex @file{table.el}
17971 @item @file{table.el} by Takaaki Ota
17972 @kindex C-c C-c
17973 @cindex table editor, @file{table.el}
17974 @cindex @file{table.el}
17975 @cindex Ota, Takaaki
17977 Complex ASCII tables with automatic line wrapping, column- and row-spanning,
17978 and alignment can be created using the Emacs table package by Takaaki Ota.
17979 Org mode recognizes such tables and export them properly.  @kbd{C-c '} to
17980 edit these tables in a special buffer, much like Org's @samp{src} code
17981 blocks.  Because of interference with other Org mode functionality, Takaaki
17982 Ota tables cannot be edited directly in the Org buffer.
17983 @table @kbd
17984 @orgcmd{C-c ',org-edit-special}
17985 Edit a @file{table.el} table.  Works when the cursor is in a table.el table.
17987 @orgcmd{C-c ~,org-table-create-with-table.el}
17988 Insert a @file{table.el} table.  If there is already a table at point, this
17989 command converts it between the @file{table.el} format and the Org mode
17990 format.  See the documentation string of the command @code{org-convert-table}
17991 for details.
17992 @end table
17993 @end table
17995 @node Conflicts
17996 @subsection Packages that conflict with Org mode
17998 @table @asis
18000 @cindex @code{shift-selection-mode}
18001 @vindex org-support-shift-select
18002 In Emacs, @code{shift-selection-mode} combines cursor motions with shift key
18003 to enlarge regions.  Emacs sets this mode by default.  This conflicts with
18004 Org's use of @kbd{S-@key{cursor}} commands to change timestamps, TODO
18005 keywords, priorities, and item bullet types, etc.  Since @kbd{S-@key{cursor}}
18006 commands outside of specific contexts don't do anything, Org offers the
18007 variable @code{org-support-shift-select} for customization.  Org mode
18008 accommodates shift selection by (i) making it available outside of the
18009 special contexts where special commands apply, and (ii) extending an
18010 existing active region even if the cursor moves across a special context.
18012 @item @file{CUA.el} by Kim. F. Storm
18013 @cindex @file{CUA.el}
18014 @cindex Storm, Kim. F.
18015 @vindex org-replace-disputed-keys
18016 Org key bindings conflict with @kbd{S-<cursor>} keys used by CUA mode.  For
18017 Org to relinquish these bindings to CUA mode, configure the variable
18018 @code{org-replace-disputed-keys}.  When set, Org moves the following key
18019 bindings in Org files, and in the agenda buffer (but not during date
18020 selection).
18022 @example
18023 S-UP      @result{}  M-p             S-DOWN     @result{}  M-n
18024 S-LEFT    @result{}  M--             S-RIGHT    @result{}  M-+
18025 C-S-LEFT  @result{}  M-S--           C-S-RIGHT  @result{}  M-S-+
18026 @end example
18028 @vindex org-disputed-keys
18029 Yes, these are unfortunately more difficult to remember.  To define a
18030 different replacement keys, look at the variable @code{org-disputed-keys}.
18032 @item @file{ecomplete.el} by Lars Magne Ingebrigtsen @email{larsi@@gnus.org}
18033 @cindex @file{ecomplete.el}
18035 Ecomplete provides ``electric'' address completion in address header
18036 lines in message buffers.  Sadly Orgtbl mode cuts ecompletes power
18037 supply: No completion happens when Orgtbl mode is enabled in message
18038 buffers while entering text in address header lines.  If one wants to
18039 use ecomplete one should @emph{not} follow the advice to automagically
18040 turn on Orgtbl mode in message buffers (see @ref{Orgtbl mode}), but
18041 instead---after filling in the message headers---turn on Orgtbl mode
18042 manually when needed in the messages body.
18044 @item @file{filladapt.el} by Kyle Jones
18045 @cindex @file{filladapt.el}
18047 Org mode tries to do the right thing when filling paragraphs, list items and
18048 other elements.  Many users reported problems using both @file{filladapt.el}
18049 and Org mode, so a safe thing to do is to disable filladapt like this:
18051 @lisp
18052 (add-hook 'org-mode-hook 'turn-off-filladapt-mode)
18053 @end lisp
18055 @item @file{yasnippet.el}
18056 @cindex @file{yasnippet.el}
18057 The way Org mode binds the @key{TAB} key (binding to @code{[tab]} instead of
18058 @code{"\t"}) overrules YASnippet's access to this key.  The following code
18059 fixed this problem:
18061 @lisp
18062 (add-hook 'org-mode-hook
18063           (lambda ()
18064             (setq-local yas/trigger-key [tab])
18065             (define-key yas/keymap [tab] 'yas/next-field-or-maybe-expand)))
18066 @end lisp
18068 The latest version of yasnippet doesn't play well with Org mode.  If the
18069 above code does not fix the conflict, first define the following function:
18071 @lisp
18072 (defun yas/org-very-safe-expand ()
18073   (let ((yas/fallback-behavior 'return-nil)) (yas/expand)))
18074 @end lisp
18076 Then tell Org mode to use that function:
18078 @lisp
18079 (add-hook 'org-mode-hook
18080           (lambda ()
18081             (make-variable-buffer-local 'yas/trigger-key)
18082             (setq yas/trigger-key [tab])
18083             (add-to-list 'org-tab-first-hook 'yas/org-very-safe-expand)
18084             (define-key yas/keymap [tab] 'yas/next-field)))
18085 @end lisp
18087 @item @file{windmove.el} by Hovav Shacham
18088 @cindex @file{windmove.el}
18089 This package also uses the @kbd{S-<cursor>} keys, so everything written
18090 in the paragraph above about CUA mode also applies here.  If you want make
18091 the windmove function active in locations where Org mode does not have
18092 special functionality on @kbd{S-@key{cursor}}, add this to your
18093 configuration:
18095 @lisp
18096 ;; Make windmove work in org-mode:
18097 (add-hook 'org-shiftup-final-hook 'windmove-up)
18098 (add-hook 'org-shiftleft-final-hook 'windmove-left)
18099 (add-hook 'org-shiftdown-final-hook 'windmove-down)
18100 (add-hook 'org-shiftright-final-hook 'windmove-right)
18101 @end lisp
18103 @item @file{viper.el} by Michael Kifer
18104 @cindex @file{viper.el}
18105 @kindex C-c /
18106 Viper uses @kbd{C-c /} and therefore makes this key not access the
18107 corresponding Org mode command @code{org-sparse-tree}.  You need to find
18108 another key for this command, or override the key in
18109 @code{viper-vi-global-user-map} with
18111 @lisp
18112 (define-key viper-vi-global-user-map "C-c /" 'org-sparse-tree)
18113 @end lisp
18117 @end table
18119 @node org-crypt
18120 @section org-crypt.el
18121 @cindex @file{org-crypt.el}
18122 @cindex @code{org-decrypt-entry}
18124 Org crypt encrypts the text of an Org entry, but not the headline, or
18125 properties.  Org crypt uses the Emacs EasyPG library to encrypt and decrypt.
18127 Any text below a headline that has a @samp{:crypt:} tag will be automatically
18128 be encrypted when the file is saved.  To use a different tag, customize the
18129 @code{org-crypt-tag-matcher} variable.
18131 Suggested Org crypt settings in Emacs init file:
18133 @lisp
18134 (require 'org-crypt)
18135 (org-crypt-use-before-save-magic)
18136 (setq org-tags-exclude-from-inheritance (quote ("crypt")))
18138 (setq org-crypt-key nil)
18139   ;; GPG key to use for encryption
18140   ;; Either the Key ID or set to nil to use symmetric encryption.
18142 (setq auto-save-default nil)
18143   ;; Auto-saving does not cooperate with org-crypt.el: so you need
18144   ;; to turn it off if you plan to use org-crypt.el quite often.
18145   ;; Otherwise, you'll get an (annoying) message each time you
18146   ;; start Org.
18148   ;; To turn it off only locally, you can insert this:
18149   ;;
18150   ;; # -*- buffer-auto-save-file-name: nil; -*-
18151 @end lisp
18153 Excluding the crypt tag from inheritance prevents encrypting previously
18154 encrypted text.
18156 @node Hacking
18157 @appendix Hacking
18158 @cindex hacking
18160 This appendix covers some areas where users can extend the functionality of
18161 Org.
18163 @menu
18164 * Hooks::                       How to reach into Org's internals
18165 * Add-on packages::             Available extensions
18166 * Adding hyperlink types::      New custom link types
18167 * Adding export back-ends::     How to write new export back-ends
18168 * Context-sensitive commands::  How to add functionality to such commands
18169 * Tables in arbitrary syntax::  Orgtbl for @LaTeX{} and other programs
18170 * Dynamic blocks::              Automatically filled blocks
18171 * Special agenda views::        Customized views
18172 * Speeding up your agendas::    Tips on how to speed up your agendas
18173 * Extracting agenda information::  Post-processing of agenda information
18174 * Using the property API::      Writing programs that use entry properties
18175 * Using the mapping API::       Mapping over all or selected entries
18176 @end menu
18178 @node Hooks
18179 @section Hooks
18180 @cindex hooks
18182 Org has a large number of hook variables for adding functionality.  This
18183 appendix illustrates using a few.  A complete list of hooks with
18184 documentation is maintained by the Worg project at
18185 @uref{http://orgmode.org/worg/doc.html#hooks}.
18187 @node Add-on packages
18188 @section Add-on packages
18189 @cindex add-on packages
18191 Various authors wrote a large number of add-on packages for Org.
18193 These packages are not part of Emacs, but they are distributed as contributed
18194 packages with the separate release available at @uref{http://orgmode.org}.
18195 See the @file{contrib/README} file in the source code directory for a list of
18196 contributed files.  Worg page with more information is at:
18197 @uref{http://orgmode.org/worg/org-contrib/}.
18199 @node Adding hyperlink types
18200 @section Adding hyperlink types
18201 @cindex hyperlinks, adding new types
18203 Org has many built-in hyperlink types (@pxref{Hyperlinks}), and an interface
18204 for adding new link types.  The example file, @file{org-man.el}, shows the
18205 process of adding Org links to Unix man pages, which look like this:
18206 @samp{[[man:printf][The printf manpage]]}:
18208 @lisp
18209 ;;; org-man.el - Support for links to manpages in Org
18211 (require 'org)
18213 (org-add-link-type "man" 'org-man-open)
18214 (add-hook 'org-store-link-functions 'org-man-store-link)
18216 (defcustom org-man-command 'man
18217   "The Emacs command to be used to display a man page."
18218   :group 'org-link
18219   :type '(choice (const man) (const woman)))
18221 (defun org-man-open (path)
18222   "Visit the manpage on PATH.
18223 PATH should be a topic that can be thrown at the man command."
18224   (funcall org-man-command path))
18226 (defun org-man-store-link ()
18227   "Store a link to a manpage."
18228   (when (memq major-mode '(Man-mode woman-mode))
18229     ;; This is a man page, we do make this link
18230     (let* ((page (org-man-get-page-name))
18231            (link (concat "man:" page))
18232            (description (format "Manpage for %s" page)))
18233       (org-store-link-props
18234        :type "man"
18235        :link link
18236        :description description))))
18238 (defun org-man-get-page-name ()
18239   "Extract the page name from the buffer name."
18240   ;; This works for both `Man-mode' and `woman-mode'.
18241   (if (string-match " \\(\\S-+\\)\\*" (buffer-name))
18242       (match-string 1 (buffer-name))
18243     (error "Cannot create link to this man page")))
18245 (provide 'org-man)
18247 ;;; org-man.el ends here
18248 @end lisp
18250 @noindent
18251 To activate links to man pages in Org, enter this in the init file:
18253 @lisp
18254 (require 'org-man)
18255 @end lisp
18257 @noindent
18258 A review of @file{org-man.el}:
18259 @enumerate
18260 @item
18261 First, @code{(require 'org)} ensures @file{org.el} is loaded.
18262 @item
18263 The @code{org-add-link-type} defines a new link type with @samp{man} prefix.
18264 The call contains the function to call that follows the link type.
18265 @item
18266 @vindex org-store-link-functions
18267 The next line adds a function to @code{org-store-link-functions} that records
18268 a useful link with the command @kbd{C-c l} in a buffer displaying a man page.
18269 @end enumerate
18271 The rest of the file defines necessary variables and functions.  First is the
18272 customization variable @code{org-man-command}.  It has two options,
18273 @code{man} and @code{woman}.  Next is a function whose argument is the link
18274 path, which for man pages is the topic of the man command.  To follow the
18275 link, the function calls the @code{org-man-command} to display the man page.
18278 @kbd{C-c l} constructs and stores the link.
18280 @kbd{C-c l} calls the function @code{org-man-store-link}, which first checks
18281 if the @code{major-mode} is appropriate.  If check fails, the function
18282 returns @code{nil}.  Otherwise the function makes a link string by combining
18283 the @samp{man:} prefix with the man topic.  The function then calls
18284 @code{org-store-link-props} with @code{:type} and @code{:link} properties.  A
18285 @code{:description} property is an optional string that is displayed when the
18286 function inserts the link in the Org buffer.
18288 @kbd{C-c C-l} inserts the stored link.
18290 To define new link types, define a function that implements completion
18291 support with @kbd{C-c C-l}.  This function should not accept any arguments
18292 but return the appropriate prefix and complete link string.
18294 @node Adding export back-ends
18295 @section Adding export back-ends
18296 @cindex Export, writing back-ends
18298 Org's export engine makes it easy for writing new back-ends.  The framework
18299 on which the engine was built makes it easy to derive new back-ends from
18300 existing ones.
18302 The two main entry points to the export engine are:
18303 @code{org-export-define-backend} and
18304 @code{org-export-define-derived-backend}.  To grok these functions, see
18305 @file{ox-latex.el} for an example of defining a new back-end from scratch,
18306 and @file{ox-beamer.el} for an example of deriving from an existing engine.
18308 For creating a new back-end from scratch, first set its name as a symbol in
18309 an alist consisting of elements and export functions.  To make the back-end
18310 visible to the export dispatcher, set @code{:menu-entry} keyword.  For export
18311 options specific to this back-end, set the @code{:options-alist}.
18313 For creating a new back-end from an existing one, set @code{:translate-alist}
18314 to an alist of export functions.  This alist replaces the parent back-end
18315 functions.
18317 For complete documentation, see
18318 @url{http://orgmode.org/worg/dev/org-export-reference.html, the Org Export
18319 Reference on Worg}.
18321 @node Context-sensitive commands
18322 @section Context-sensitive commands
18323 @cindex context-sensitive commands, hooks
18324 @cindex add-ons, context-sensitive commands
18325 @vindex org-ctrl-c-ctrl-c-hook
18327 Org has facilities for building context sensitive commands.  Authors of Org
18328 add-ons can tap into this functionality.
18330 Some Org commands change depending on the context.  The most important
18331 example of this behavior is the @kbd{C-c C-c} (@pxref{The very busy C-c C-c
18332 key}).  Other examples are @kbd{M-cursor} and @kbd{M-S-cursor}.
18334 These context sensitive commands work by providing a function that detects
18335 special context for that add-on and executes functionality appropriate for
18336 that context.
18338 @node Tables in arbitrary syntax
18339 @section Tables and lists in arbitrary syntax
18340 @cindex tables, in other modes
18341 @cindex lists, in other modes
18342 @cindex Orgtbl mode
18344 Because of Org's success in handling tables with Orgtbl, a frequently asked
18345 feature is to Org's usability functions to other table formats native to
18346 other modem's, such as @LaTeX{}.  This would be hard to do in a general way
18347 without complicated customization nightmares.  Moreover, that would take Org
18348 away from its simplicity roots that Orgtbl has proven.  There is, however, an
18349 alternate approach to accomplishing the same.
18351 This approach involves implementing a custom @emph{translate} function that
18352 operates on a native Org @emph{source table} to produce a table in another
18353 format.  This strategy would keep the excellently working Orgtbl simple and
18354 isolate complications, if any, confined to the translate function.  To add
18355 more alien table formats, we just add more translate functions.  Also the
18356 burden of developing custom translate functions for new table formats will be
18357 in the hands of those who know those formats best.
18359 For an example of how this strategy works, see Orgstruct mode.  In that mode,
18360 Bastien added the ability to use Org's facilities to edit and re-structure
18361 lists.  He did by turning @code{orgstruct-mode} on, and then exporting the
18362 list locally to another format, such as HTML, @LaTeX{} or Texinfo.
18364 @menu
18365 * Radio tables::                Sending and receiving radio tables
18366 * A @LaTeX{} example::          Step by step, almost a tutorial
18367 * Translator functions::        Copy and modify
18368 * Radio lists::                 Sending and receiving lists
18369 @end menu
18371 @node Radio tables
18372 @subsection Radio tables
18373 @cindex radio tables
18375 Radio tables are target locations for translated tables that are not near
18376 their source.  Org finds the target location and inserts the translated
18377 table.
18379 The key to finding the target location are the magic words @code{BEGIN/END
18380 RECEIVE ORGTBL}.  They have to appear as comments in the current mode.  If
18381 the mode is C, then:
18383 @example
18384 /* BEGIN RECEIVE ORGTBL table_name */
18385 /* END RECEIVE ORGTBL table_name */
18386 @end example
18388 @noindent
18389 At the location of source, Org needs a special line to direct Orgtbl to
18390 translate and to find the target for inserting the translated table.  For
18391 example:
18392 @cindex #+ORGTBL
18393 @example
18394 #+ORGTBL: SEND table_name translation_function arguments...
18395 @end example
18397 @noindent
18398 @code{table_name} is the table's reference name, which is also used in the
18399 receiver lines, and the @code{translation_function} is the Lisp function that
18400 translates.  This line, in addition, may also contain alternating key and
18401 value arguments at the end.  The translation function gets these values as a
18402 property list.  A few standard parameters are already recognized and acted
18403 upon before the translation function is called:
18405 @table @code
18406 @item :skip N
18407 Skip the first N lines of the table.  Hlines do count; include them if they
18408 are to be skipped.
18410 @item :skipcols (n1 n2 ...)
18411 List of columns to be skipped.  First Org automatically discards columns with
18412 calculation marks and then sends the table to the translator function, which
18413 then skips columns as specified in @samp{skipcols}.
18414 @end table
18416 @noindent
18417 To keep the source table intact in the buffer without being disturbed when
18418 the source file is compiled or otherwise being worked on, use one of these
18419 strategies:
18421 @itemize @bullet
18422 @item
18423 Place the table in a block comment.  For example, in C mode you could wrap
18424 the table between @samp{/*} and @samp{*/} lines.
18425 @item
18426 Put the table after an @samp{END} statement.  For example @samp{\bye} in
18427 @TeX{} and @samp{\end@{document@}} in @LaTeX{}.
18428 @item
18429 Comment and uncomment each line of the table during edits.  The @kbd{M-x
18430 orgtbl-toggle-comment RET} command makes toggling easy.
18431 @end itemize
18433 @node A @LaTeX{} example
18434 @subsection A @LaTeX{} example of radio tables
18435 @cindex @LaTeX{}, and Orgtbl mode
18437 To wrap a source table in @LaTeX{}, use the @code{comment} environment
18438 provided by @file{comment.sty}.  To activate it, put
18439 @code{\usepackage@{comment@}} in the document header.  Orgtbl mode inserts a
18440 radio table skeleton@footnote{By default this works only for @LaTeX{}, HTML,
18441 and Texinfo.  Configure the variable @code{orgtbl-radio-table-templates} to
18442 install templates for other export formats.}  with the command @kbd{M-x
18443 orgtbl-insert-radio-table RET}, which prompts for a table name.  For example,
18444 if @samp{salesfigures} is the name, the template inserts:
18446 @cindex #+ORGTBL, SEND
18447 @example
18448 % BEGIN RECEIVE ORGTBL salesfigures
18449 % END RECEIVE ORGTBL salesfigures
18450 \begin@{comment@}
18451 #+ORGTBL: SEND salesfigures orgtbl-to-latex
18452 | | |
18453 \end@{comment@}
18454 @end example
18456 @noindent
18457 @vindex @LaTeX{}-verbatim-environments
18458 The line @code{#+ORGTBL: SEND} tells Orgtbl mode to use the function
18459 @code{orgtbl-to-latex} to convert the table to @LaTeX{} format, then insert
18460 the table at the target (receive) location named @code{salesfigures}.  Now
18461 the table is ready for data entry.  It can even use spreadsheet
18462 features@footnote{If the @samp{#+TBLFM} line contains an odd number of dollar
18463 characters, this may cause problems with font-lock in @LaTeX{} mode.  As
18464 shown in the example you can fix this by adding an extra line inside the
18465 @code{comment} environment that is used to balance the dollar expressions.
18466 If you are using AUC@TeX{} with the font-latex library, a much better
18467 solution is to add the @code{comment} environment to the variable
18468 @code{LaTeX-verbatim-environments}.}:
18470 @example
18471 % BEGIN RECEIVE ORGTBL salesfigures
18472 % END RECEIVE ORGTBL salesfigures
18473 \begin@{comment@}
18474 #+ORGTBL: SEND salesfigures orgtbl-to-latex
18475 | Month | Days | Nr sold | per day |
18476 |-------+------+---------+---------|
18477 | Jan   |   23 |      55 |     2.4 |
18478 | Feb   |   21 |      16 |     0.8 |
18479 | March |   22 |     278 |    12.6 |
18480 #+TBLFM: $4=$3/$2;%.1f
18481 % $ (optional extra dollar to keep font-lock happy, see footnote)
18482 \end@{comment@}
18483 @end example
18485 @noindent
18486 After editing, @kbd{C-c C-c} inserts translated table at the target location,
18487 between the two marker lines.
18489 For hand-made custom tables, note that the translator needs to skip the first
18490 two lines of the source table.  Also the command has to @emph{splice} out the
18491 target table without the header and footer.
18493 @example
18494 \begin@{tabular@}@{lrrr@}
18495 Month & \multicolumn@{1@}@{c@}@{Days@} & Nr.\ sold & per day\\
18496 % BEGIN RECEIVE ORGTBL salesfigures
18497 % END RECEIVE ORGTBL salesfigures
18498 \end@{tabular@}
18500 \begin@{comment@}
18501 #+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2
18502 | Month | Days | Nr sold | per day |
18503 |-------+------+---------+---------|
18504 | Jan   |   23 |      55 |     2.4 |
18505 | Feb   |   21 |      16 |     0.8 |
18506 | March |   22 |     278 |    12.6 |
18507 #+TBLFM: $4=$3/$2;%.1f
18508 \end@{comment@}
18509 @end example
18511 The @LaTeX{} translator function @code{orgtbl-to-latex} is already part of
18512 Orgtbl mode and uses @code{tabular} environment by default to typeset the
18513 table and mark the horizontal lines with @code{\hline}.  For additional
18514 parameters to control output, @pxref{Translator functions}:
18516 @table @code
18517 @item :splice nil/t
18518 When non-@code{nil}, returns only table body lines; not wrapped in tabular
18519 environment.  Default is @code{nil}.
18521 @item :fmt fmt
18522 Format to warp each field.  It should contain @code{%s} for the original
18523 field value.  For example, to wrap each field value in dollar symbol, you
18524 could use @code{:fmt "$%s$"}.  Format can also wrap a property list with
18525 column numbers and formats, for example @code{:fmt (2 "$%s$" 4 "%s\\%%")}.
18526 In place of a string, a function of one argument can be used; the function
18527 must return a formatted string.
18529 @item :efmt efmt
18530 Format numbers as exponentials.  The spec should have @code{%s} twice for
18531 inserting mantissa and exponent, for example @code{"%s\\times10^@{%s@}"}.
18532 This may also be a property list with column numbers and formats, for example
18533 @code{:efmt (2 "$%s\\times10^@{%s@}$" 4 "$%s\\cdot10^@{%s@}$")}.  After
18534 @code{efmt} has been applied to a value, @code{fmt} will also be applied.
18535 Functions with two arguments can be supplied instead of strings.  By default,
18536 no special formatting is applied.
18537 @end table
18539 @node Translator functions
18540 @subsection Translator functions
18541 @cindex HTML, and Orgtbl mode
18542 @cindex translator function
18544 Orgtbl mode has built-in translator functions: @code{orgtbl-to-csv}
18545 (comma-separated values), @code{orgtbl-to-tsv} (TAB-separated values),
18546 @code{orgtbl-to-latex}, @code{orgtbl-to-html}, @code{orgtbl-to-texinfo},
18547 @code{orgtbl-to-unicode} and @code{orgtbl-to-orgtbl}.  They use the generic
18548 translator, @code{orgtbl-to-generic}, which delegates translations to various
18549 export back-ends.
18551 Properties passed to the function through the @samp{ORGTBL SEND} line take
18552 precedence over properties defined inside the function.  For example, this
18553 overrides the default @LaTeX{} line endings, @samp{\\}, with @samp{\\[2mm]}:
18555 @example
18556 #+ORGTBL: SEND test orgtbl-to-latex :lend " \\\\[2mm]"
18557 @end example
18559 For a new language translator, define a converter function.  It can be a
18560 generic function, such as shown in this example.  It marks a beginning and
18561 ending of a table with @samp{!BTBL!} and @samp{!ETBL!}; a beginning and
18562 ending of lines with @samp{!BL!} and @samp{!EL!}; and uses a TAB for a field
18563 separator:
18565 @lisp
18566 (defun orgtbl-to-language (table params)
18567   "Convert the orgtbl-mode TABLE to language."
18568   (orgtbl-to-generic
18569    table
18570    (org-combine-plists
18571     '(:tstart "!BTBL!" :tend "!ETBL!" :lstart "!BL!" :lend "!EL!" :sep "\t")
18572     params)))
18573 @end lisp
18575 @noindent
18576 The documentation for the @code{orgtbl-to-generic} function shows a complete
18577 list of parameters, each of which can be passed through to
18578 @code{orgtbl-to-latex}, @code{orgtbl-to-texinfo}, and any other function
18579 using that generic function.
18581 For complicated translations the generic translator function could be
18582 replaced by a custom translator function.  Such a custom function must take
18583 two arguments and return a single string containing the formatted table.  The
18584 first argument is the table whose lines are a list of fields or the symbol
18585 @code{hline}.  The second argument is the property list consisting of
18586 parameters specified in the @samp{#+ORGTBL: SEND} line.  Please share your
18587 translator functions by posting them to the Org users mailing list,
18588 @email{emacs-orgmode@@gnu.org}.
18590 @node Radio lists
18591 @subsection Radio lists
18592 @cindex radio lists
18593 @cindex org-list-insert-radio-list
18595 Call the @code{org-list-insert-radio-list} function to insert a radio list
18596 template in HTML, @LaTeX{}, and Texinfo mode documents.  Sending and
18597 receiving radio lists works is the same as for radio tables (@pxref{Radio
18598 tables}) except for these differences:
18600 @cindex #+ORGLST
18601 @itemize @minus
18602 @item
18603 Orgstruct mode must be active.
18604 @item
18605 Use @code{ORGLST} keyword instead of @code{ORGTBL}.
18606 @item
18607 @kbd{C-c C-c} works only on the first list item.
18608 @end itemize
18610 Built-in translators functions are: @code{org-list-to-latex},
18611 @code{org-list-to-html} and @code{org-list-to-texinfo}.  They use the
18612 @code{org-list-to-generic} translator function.  See its documentation for
18613 parameters for accurate customizations of lists.  Here is a @LaTeX{} example:
18615 @example
18616 % BEGIN RECEIVE ORGLST to-buy
18617 % END RECEIVE ORGLST to-buy
18618 \begin@{comment@}
18619 #+ORGLST: SEND to-buy org-list-to-latex
18620 - a new house
18621 - a new computer
18622   + a new keyboard
18623   + a new mouse
18624 - a new life
18625 \end@{comment@}
18626 @end example
18628 @kbd{C-c C-c} on @samp{a new house} inserts the translated @LaTeX{} list
18629 in-between the BEGIN and END marker lines.
18631 @node Dynamic blocks
18632 @section Dynamic blocks
18633 @cindex dynamic blocks
18635 Org supports @emph{dynamic blocks} in Org documents.  They are inserted with
18636 begin and end markers like any other @samp{src} code block, but the contents
18637 are updated automatically by a user function.  For example, @kbd{C-c C-x C-r}
18638 inserts a dynamic table that updates the work time (@pxref{Clocking work
18639 time}).
18641 Dynamic blocks can have names and function parameters.  The syntax is similar
18642 to @samp{src} code block specifications:
18644 @cindex #+BEGIN:dynamic block
18645 @example
18646 #+BEGIN: myblock :parameter1 value1 :parameter2 value2 ...
18648 #+END:
18649 @end example
18651 These command update dynamic blocks:
18653 @table @kbd
18654 @orgcmd{C-c C-x C-u,org-dblock-update}
18655 Update dynamic block at point.
18656 @orgkey{C-u C-c C-x C-u}
18657 Update all dynamic blocks in the current file.
18658 @end table
18660 Before updating a dynamic block, Org removes content between the BEGIN and
18661 END markers.  Org then reads the parameters on the BEGIN line for passing to
18662 the writer function.  If the function expects to access the removed content,
18663 then Org expects an extra parameter, @code{:content}, on the BEGIN line.
18665 To syntax for calling a writer function with a named block, @code{myblock}
18666 is: @code{org-dblock-write:myblock}.  Parameters come from the BEGIN line.
18668 The following is an example of a dynamic block and a block writer function
18669 that updates the time when the function was last run:
18671 @example
18672 #+BEGIN: block-update-time :format "on %m/%d/%Y at %H:%M"
18674 #+END:
18675 @end example
18677 @noindent
18678 The dynamic block's writer function:
18680 @lisp
18681 (defun org-dblock-write:block-update-time (params)
18682   (let ((fmt (or (plist-get params :format) "%d. %m. %Y")))
18683     (insert "Last block update at: "
18684             (format-time-string fmt))))
18685 @end lisp
18687 To keep dynamic blocks up-to-date in an Org file, use the function,
18688 @code{org-update-all-dblocks} in hook, such as @code{before-save-hook}.  The
18689 @code{org-update-all-dblocks} function does not run if the file is not in
18690 Org mode.
18692 Dynamic blocks, like any other block, can be narrowed with
18693 @code{org-narrow-to-block}.
18695 @node Special agenda views
18696 @section Special agenda views
18697 @cindex agenda views, user-defined
18699 @vindex org-agenda-skip-function
18700 @vindex org-agenda-skip-function-global
18701 Org provides a special hook to further limit items in agenda views:
18702 @code{agenda}, @code{agenda*}@footnote{The @code{agenda*} view is the same as
18703 @code{agenda} except that it only considers @emph{appointments}, i.e.,
18704 scheduled and deadline items that have a time specification @samp{[h]h:mm} in
18705 their time-stamps.}, @code{todo}, @code{alltodo}, @code{tags},
18706 @code{tags-todo}, @code{tags-tree}.  Specify a custom function that tests
18707 inclusion of every matched item in the view.  This function can also
18708 skip as much as is needed.
18710 For a global condition applicable to agenda views, use the
18711 @code{org-agenda-skip-function-global} variable.  Org uses a global condition
18712 with @code{org-agenda-skip-function} for custom searching.
18714 This example defines a function for a custom view showing TODO items with
18715 WAITING status.  Manually this is a multi step search process, but with a
18716 custom view, this can be automated as follows:
18718 The custom function searches the subtree for the WAITING tag and returns
18719 @code{nil} on match.  Otherwise it gives the location from where the search
18720 continues.
18722 @lisp
18723 (defun my-skip-unless-waiting ()
18724   "Skip trees that are not waiting"
18725   (let ((subtree-end (save-excursion (org-end-of-subtree t))))
18726     (if (re-search-forward ":waiting:" subtree-end t)
18727         nil          ; tag found, do not skip
18728       subtree-end))) ; tag not found, continue after end of subtree
18729 @end lisp
18731 To use this custom function in a custom agenda command:
18733 @lisp
18734 (org-add-agenda-custom-command
18735  '("b" todo "PROJECT"
18736    ((org-agenda-skip-function 'my-skip-unless-waiting)
18737     (org-agenda-overriding-header "Projects waiting for something: "))))
18738 @end lisp
18740 @vindex org-agenda-overriding-header
18741 Note that this also binds @code{org-agenda-overriding-header} to a more
18742 meaningful string suitable for the agenda view.
18744 @vindex org-odd-levels-only
18745 @vindex org-agenda-skip-function
18747 Search for entries with a limit set on levels for the custom search.  This is
18748 a general approach to creating custom searches in Org.  To include all
18749 levels, use @samp{LEVEL>0}@footnote{Note that, for
18750 @code{org-odd-levels-only}, a level number corresponds to order in the
18751 hierarchy, not to the number of stars.}.  Then to selectively pick the
18752 matched entries, use @code{org-agenda-skip-function}, which also accepts Lisp
18753 forms, such as @code{org-agenda-skip-entry-if} and
18754 @code{org-agenda-skip-subtree-if}.  For example:
18756 @table @code
18757 @item (org-agenda-skip-entry-if 'scheduled)
18758 Skip current entry if it has been scheduled.
18759 @item (org-agenda-skip-entry-if 'notscheduled)
18760 Skip current entry if it has not been scheduled.
18761 @item (org-agenda-skip-entry-if 'deadline)
18762 Skip current entry if it has a deadline.
18763 @item (org-agenda-skip-entry-if 'scheduled 'deadline)
18764 Skip current entry if it has a deadline, or if it is scheduled.
18765 @item (org-agenda-skip-entry-if 'todo '("TODO" "WAITING"))
18766 Skip current entry if the TODO keyword is TODO or WAITING.
18767 @item (org-agenda-skip-entry-if 'todo 'done)
18768 Skip current entry if the TODO keyword marks a DONE state.
18769 @item (org-agenda-skip-entry-if 'timestamp)
18770 Skip current entry if it has any timestamp, may also be deadline or scheduled.
18771 @anchor{x-agenda-skip-entry-regexp}
18772 @item (org-agenda-skip-entry-if 'regexp "regular expression")
18773 Skip current entry if the regular expression matches in the entry.
18774 @item (org-agenda-skip-entry-if 'notregexp "regular expression")
18775 Skip current entry unless the regular expression matches.
18776 @item (org-agenda-skip-subtree-if 'regexp "regular expression")
18777 Same as above, but check and skip the entire subtree.
18778 @end table
18780 The following is an example of a search for @samp{WAITING} without the
18781 special function:
18783 @lisp
18784 (org-add-agenda-custom-command
18785  '("b" todo "PROJECT"
18786    ((org-agenda-skip-function '(org-agenda-skip-subtree-if
18787                                 'regexp ":waiting:"))
18788     (org-agenda-overriding-header "Projects waiting for something: "))))
18789 @end lisp
18791 @node Speeding up your agendas
18792 @section Speeding up your agendas
18793 @cindex agenda views, optimization
18795 Some agenda commands slow down when the Org files grow in size or number.
18796 Here are tips to speed up:
18798 @enumerate
18799 @item
18800 Reduce the number of Org agenda files to avoid slowdowns due to hard drive
18801 accesses.
18802 @item
18803 Reduce the number of @samp{DONE} and archived headlines so agenda operations
18804 that skip over these can finish faster.
18805 @item
18806 @vindex org-agenda-dim-blocked-tasks
18807 Do not dim blocked tasks:
18808 @lisp
18809 (setq org-agenda-dim-blocked-tasks nil)
18810 @end lisp
18811 @item
18812 @vindex org-startup-folded
18813 @vindex org-agenda-inhibit-startup
18814 Stop preparing agenda buffers on startup:
18815 @lisp
18816 (setq org-agenda-inhibit-startup nil)
18817 @end lisp
18818 @item
18819 @vindex org-agenda-show-inherited-tags
18820 @vindex org-agenda-use-tag-inheritance
18821 Disable tag inheritance for agendas:
18822 @lisp
18823 (setq org-agenda-use-tag-inheritance nil)
18824 @end lisp
18825 @end enumerate
18827 These options can be applied to selected agenda views.  For more details
18828 about generation of agenda views, see the docstrings for the relevant
18829 variables, and this @uref{http://orgmode.org/worg/agenda-optimization.html,
18830 dedicated Worg page} for agenda optimization.
18832 @node Extracting agenda information
18833 @section Extracting agenda information
18834 @cindex agenda, pipe
18835 @cindex Scripts, for agenda processing
18837 @vindex org-agenda-custom-commands
18838 Org provides commands to access agendas through Emacs batch mode.  Through
18839 this command-line interface, agendas are automated for further processing or
18840 printing.
18842 @code{org-batch-agenda} creates an agenda view in ASCII and outputs to
18843 STDOUT.  This command takes one string parameter.  When string length=1, Org
18844 uses it as a key to @code{org-agenda-custom-commands}.  These are the same
18845 ones available through @kbd{C-c a}.
18847 This example command line directly prints the TODO list to the printer:
18849 @example
18850 emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
18851 @end example
18853 When the string parameter length is two or more characters, Org matches it
18854 with tags/TODO strings.  For example, this example command line prints items
18855 tagged with @samp{shop}, but excludes items tagged with @samp{NewYork}:
18857 @example
18858 emacs -batch -l ~/.emacs                                      \
18859       -eval '(org-batch-agenda "+shop-NewYork")' | lpr
18860 @end example
18862 @noindent
18863 An example showing on-the-fly parameter modifications:
18865 @example
18866 emacs -batch -l ~/.emacs                                      \
18867    -eval '(org-batch-agenda "a"                               \
18868             org-agenda-span (quote month)                     \
18869             org-agenda-include-diary nil                      \
18870             org-agenda-files (quote ("~/org/project.org")))'  \
18871    | lpr
18872 @end example
18874 @noindent
18875 which will produce an agenda for the next 30 days from just the
18876 @file{~/org/projects.org} file.
18878 For structured processing of agenda output, use @code{org-batch-agenda-csv}
18879 with the following fields:
18881 @example
18882 category     @r{The category of the item}
18883 head         @r{The headline, without TODO keyword, TAGS and PRIORITY}
18884 type         @r{The type of the agenda entry, can be}
18885                 todo               @r{selected in TODO match}
18886                 tagsmatch          @r{selected in tags match}
18887                 diary              @r{imported from diary}
18888                 deadline           @r{a deadline}
18889                 scheduled          @r{scheduled}
18890                 timestamp          @r{appointment, selected by timestamp}
18891                 closed             @r{entry was closed on date}
18892                 upcoming-deadline  @r{warning about nearing deadline}
18893                 past-scheduled     @r{forwarded scheduled item}
18894                 block              @r{entry has date block including date}
18895 todo         @r{The TODO keyword, if any}
18896 tags         @r{All tags including inherited ones, separated by colons}
18897 date         @r{The relevant date, like 2007-2-14}
18898 time         @r{The time, like 15:00-16:50}
18899 extra        @r{String with extra planning info}
18900 priority-l   @r{The priority letter if any was given}
18901 priority-n   @r{The computed numerical priority}
18902 @end example
18904 @noindent
18905 If the selection of the agenda item was based on a timestamp, including those
18906 items with @samp{DEADLINE} and @samp{SCHEDULED} keywords, then Org includes
18907 date and time in the output.
18909 If the selection of the agenda item was based on a timestamp  (or
18910 deadline/scheduled), then Org includes date and time in the output.
18912 Here is an example of a post-processing script in Perl.  It takes the CSV
18913 output from Emacs and prints with a checkbox:
18915 @example
18916 #!/usr/bin/perl
18918 # define the Emacs command to run
18919 $cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'";
18921 # run it and capture the output
18922 $agenda = qx@{$cmd 2>/dev/null@};
18924 # loop over all lines
18925 foreach $line (split(/\n/,$agenda)) @{
18926   # get the individual values
18927   ($category,$head,$type,$todo,$tags,$date,$time,$extra,
18928    $priority_l,$priority_n) = split(/,/,$line);
18929   # process and print
18930   print "[ ] $head\n";
18932 @end example
18934 @node Using the property API
18935 @section Using the property API
18936 @cindex API, for properties
18937 @cindex properties, API
18939 Functions for working with properties.
18941 @defun org-entry-properties &optional pom which
18942 Get all properties of the entry at point-or-marker POM.@*
18943 This includes the TODO keyword, the tags, time strings for deadline,
18944 scheduled, and clocking, and any additional properties defined in the
18945 entry.  The return value is an alist.  Keys may occur multiple times
18946 if the property key was used several times.@*
18947 POM may also be @code{nil}, in which case the current entry is used.
18948 If WHICH is @code{nil} or @code{all}, get all properties.  If WHICH is
18949 @code{special} or @code{standard}, only get that subclass.
18950 @end defun
18952 @vindex org-use-property-inheritance
18953 @findex org-insert-property-drawer
18954 @defun org-entry-get pom property &optional inherit
18955 Get value of @code{PROPERTY} for entry at point-or-marker @code{POM}@.  By
18956 default, this only looks at properties defined locally in the entry.  If
18957 @code{INHERIT} is non-@code{nil} and the entry does not have the property,
18958 then also check higher levels of the hierarchy.  If @code{INHERIT} is the
18959 symbol @code{selective}, use inheritance if and only if the setting of
18960 @code{org-use-property-inheritance} selects @code{PROPERTY} for inheritance.
18961 @end defun
18963 @defun org-entry-delete pom property
18964 Delete the property @code{PROPERTY} from entry at point-or-marker POM.
18965 @end defun
18967 @defun org-entry-put pom property value
18968 Set @code{PROPERTY} to @code{VALUE} for entry at point-or-marker POM.
18969 @end defun
18971 @defun org-buffer-property-keys &optional include-specials
18972 Get all property keys in the current buffer.
18973 @end defun
18975 @defun org-insert-property-drawer
18976 Insert a property drawer for the current entry.
18977 @end defun
18979 @defun org-entry-put-multivalued-property pom property &rest values
18980 Set @code{PROPERTY} at point-or-marker @code{POM} to @code{VALUES}@.
18981 @code{VALUES} should be a list of strings.  They will be concatenated, with
18982 spaces as separators.
18983 @end defun
18985 @defun org-entry-get-multivalued-property pom property
18986 Treat the value of the property @code{PROPERTY} as a whitespace-separated
18987 list of values and return the values as a list of strings.
18988 @end defun
18990 @defun org-entry-add-to-multivalued-property pom property value
18991 Treat the value of the property @code{PROPERTY} as a whitespace-separated
18992 list of values and make sure that @code{VALUE} is in this list.
18993 @end defun
18995 @defun org-entry-remove-from-multivalued-property pom property value
18996 Treat the value of the property @code{PROPERTY} as a whitespace-separated
18997 list of values and make sure that @code{VALUE} is @emph{not} in this list.
18998 @end defun
19000 @defun org-entry-member-in-multivalued-property pom property value
19001 Treat the value of the property @code{PROPERTY} as a whitespace-separated
19002 list of values and check if @code{VALUE} is in this list.
19003 @end defun
19005 @defopt org-property-allowed-value-functions
19006 Hook for functions supplying allowed values for a specific property.
19007 The functions must take a single argument, the name of the property, and
19008 return a flat list of allowed values.  If @samp{:ETC} is one of
19009 the values, use the values as completion help, but allow also other values
19010 to be entered.  The functions must return @code{nil} if they are not
19011 responsible for this property.
19012 @end defopt
19014 @node Using the mapping API
19015 @section Using the mapping API
19016 @cindex API, for mapping
19017 @cindex mapping entries, API
19019 Org has sophisticated mapping capabilities for finding entries.  Org uses
19020 this functionality internally for generating agenda views.  Org also exposes
19021 an API for executing arbitrary functions for each selected entry.  The API's
19022 main entry point is:
19024 @defun org-map-entries func &optional match scope &rest skip
19025 Call @samp{FUNC} at each headline selected by @code{MATCH} in @code{SCOPE}.
19027 @samp{FUNC} is a function or a Lisp form.  With the cursor positioned at the
19028 beginning of the headline, call the function without arguments.  Org returns
19029 an alist of return values of calls to the function.
19031 To avoid preserving point, Org wraps the call to @code{FUNC} in
19032 save-excursion form.  After evaluation, Org moves the cursor to the end of
19033 the line that was just processed.  Search continues from that point forward.
19034 This may not always work as expected under some conditions, such as if the
19035 current sub-tree was removed by a previous archiving operation.  In such rare
19036 circumstances, Org skips the next entry entirely when it should not.  To stop
19037 Org from such skips, make @samp{FUNC} set the variable
19038 @code{org-map-continue-from} to a specific buffer position.
19040 @samp{MATCH} is a tags/property/TODO match.  Org iterates only matched
19041 headlines.  Org iterates over all headlines when @code{MATCH} is @code{nil}
19042 or @code{t}.
19044 @samp{SCOPE} determines the scope of this command.  It can be any of:
19046 @example
19047 nil     @r{the current buffer, respecting the restriction if any}
19048 tree    @r{the subtree started with the entry at point}
19049 region  @r{The entries within the active region, if any}
19050 file    @r{the current buffer, without restriction}
19051 file-with-archives
19052         @r{the current buffer, and any archives associated with it}
19053 agenda  @r{all agenda files}
19054 agenda-with-archives
19055         @r{all agenda files with any archive files associated with them}
19056 (file1 file2 ...)
19057         @r{if this is a list, all files in the list will be scanned}
19058 @end example
19059 @noindent
19060 The remaining args are treated as settings for the scanner's skipping
19061 facilities.  Valid args are:
19063 @vindex org-agenda-skip-function
19064 @example
19065 archive   @r{skip trees with the archive tag}
19066 comment   @r{skip trees with the COMMENT keyword}
19067 function or Lisp form
19068           @r{will be used as value for @code{org-agenda-skip-function},}
19069           @r{so whenever the function returns t, FUNC}
19070           @r{will not be called for that entry and search will}
19071           @r{continue from the point where the function leaves it}
19072 @end example
19073 @end defun
19075 The mapping routine can call any arbitrary function, even functions that
19076 change meta data or query the property API (@pxref{Using the property API}).
19077 Here are some handy functions:
19079 @defun org-todo &optional arg
19080 Change the TODO state of the entry.  See the docstring of the functions for
19081 the many possible values for the argument @code{ARG}.
19082 @end defun
19084 @defun org-priority &optional action
19085 Change the priority of the entry.  See the docstring of this function for the
19086 possible values for @code{ACTION}.
19087 @end defun
19089 @defun org-toggle-tag tag &optional onoff
19090 Toggle the tag @code{TAG} in the current entry.  Setting @code{ONOFF} to
19091 either @code{on} or @code{off} will not toggle tag, but ensure that it is
19092 either on or off.
19093 @end defun
19095 @defun org-promote
19096 Promote the current entry.
19097 @end defun
19099 @defun org-demote
19100 Demote the current entry.
19101 @end defun
19103 This example turns all entries tagged with @code{TOMORROW} into TODO entries
19104 with keyword @code{UPCOMING}.  Org ignores entries in comment trees and
19105 archive trees.
19107 @lisp
19108 (org-map-entries
19109  '(org-todo "UPCOMING")
19110  "+TOMORROW" 'file 'archive 'comment)
19111 @end lisp
19113 The following example counts the number of entries with TODO keyword
19114 @code{WAITING}, in all agenda files.
19116 @lisp
19117 (length (org-map-entries t "/+WAITING" 'agenda))
19118 @end lisp
19120 @node MobileOrg
19121 @appendix MobileOrg
19122 @cindex iPhone
19123 @cindex MobileOrg
19125 MobileOrg is a companion mobile app that runs on iOS and Android devices.
19126 MobileOrg enables offline-views and capture support for an Org mode system
19127 that is rooted on a ``real'' computer.  MobileOrg can record changes to
19128 existing entries.
19130 The @uref{https://github.com/MobileOrg/, iOS implementation} for the
19131 @emph{iPhone/iPod Touch/iPad} series of devices, was started by Richard
19132 Moreland and is now in the hands Sean Escriva.  Android users should check
19133 out @uref{http://wiki.github.com/matburt/mobileorg-android/, MobileOrg
19134 Android} by Matt Jones.  Though the two implementations are not identical,
19135 they offer similar features.
19137 This appendix describes Org's support for agenda view formats compatible with
19138 MobileOrg.  It also describes synchronizing changes, such as to notes,
19139 between MobileOrg and the computer.
19141 To change tags and TODO states in MobileOrg, first customize the variables
19142 @code{org-todo-keywords} and @code{org-tag-alist}.  These should cover all
19143 the important tags and TODO keywords, even if Org files use only some of
19144 them.  Though MobileOrg has in-buffer settings, it understands TODO states
19145 @emph{sets} (@pxref{Per-file keywords}) and @emph{mutually exclusive} tags
19146 (@pxref{Setting tags}) only for those set in these variables.
19148 @menu
19149 * Setting up the staging area::  For the mobile device
19150 * Pushing to MobileOrg::        Uploading Org files and agendas
19151 * Pulling from MobileOrg::      Integrating captured and flagged items
19152 @end menu
19154 @node Setting up the staging area
19155 @section Setting up the staging area
19157 MobileOrg needs access to a file directory on a server to interact with
19158 Emacs.  With a public server, consider encrypting the files.  MobileOrg
19159 version 1.5 supports encryption for the iPhone.  Org also requires
19160 @file{openssl} installed on the local computer.  To turn on encryption, set
19161 the same password in MobileOrg and in Emacs.  Set the password in the
19162 variable @code{org-mobile-use-encryption}@footnote{If Emacs is configured for
19163 safe storing of passwords, then configure the variable,
19164 @code{org-mobile-encryption-password}; please read the docstring of that
19165 variable.}.  Note that even after MobileOrg encrypts the file contents, the
19166 file names will remain visible on the file systems of the local computer, the
19167 server, and the mobile device.
19169 For a server to host files, consider options like
19170 @uref{http://dropbox.com,Dropbox.com} account@footnote{An alternative is to
19171 use webdav server.  MobileOrg documentation has details of webdav server
19172 configuration.  Additional help is at
19173 @uref{http://orgmode.org/worg/org-faq.html#mobileorg_webdav, FAQ entry}.}.
19174 On first connection, MobileOrg creates a directory @file{MobileOrg/} on
19175 Dropbox.  Pass its location to Emacs through an init file variable as
19176 follows:
19178 @lisp
19179 (setq org-mobile-directory "~/Dropbox/MobileOrg")
19180 @end lisp
19182 Org copies files to the above directory for MobileOrg.  Org also uses the
19183 same directory for sharing notes between Org and MobileOrg.
19185 @node Pushing to MobileOrg
19186 @section Pushing to MobileOrg
19188 Org pushes files listed in @code{org-mobile-files} to
19189 @code{org-mobile-directory}.  Files include agenda files (as listed in
19190 @code{org-agenda-files}).  Customize @code{org-mobile-files} to add other
19191 files.  File names will be staged with paths relative to
19192 @code{org-directory}, so all files should be inside this
19193 directory@footnote{Symbolic links in @code{org-directory} should have the
19194 same name as their targets.}.
19196 Push creates a special Org file @file{agendas.org} with custom agenda views
19197 defined by the user@footnote{While creating the agendas, Org mode will force
19198 ID properties on all referenced entries, so that these entries can be
19199 uniquely identified if MobileOrg flags them for further action.  To avoid
19200 setting properties configure the variable
19201 @code{org-mobile-force-id-on-agenda-items} to @code{nil}.  Org mode will then
19202 rely on outline paths, assuming they are unique.}.
19204 Org writes the file @file{index.org}, containing links to other files.
19205 MobileOrg reads this file first from the server to determine what other files
19206 to download for agendas.  For faster downloads, MobileOrg will read only
19207 those files whose checksums@footnote{Checksums are stored automatically in
19208 the file @file{checksums.dat}.} have changed.
19210 @node Pulling from MobileOrg
19211 @section Pulling from MobileOrg
19213 When MobileOrg synchronizes with the server, it pulls the Org files for
19214 viewing.  It then appends to the file @file{mobileorg.org} on the server the
19215 captured entries, pointers to flagged and changed entries.  Org integrates
19216 its data in an inbox file format.
19218 @enumerate
19219 @item
19220 Org moves all entries found in
19221 @file{mobileorg.org}@footnote{@file{mobileorg.org} will be empty after this
19222 operation.} and appends them to the file pointed to by the variable
19223 @code{org-mobile-inbox-for-pull}.  Each captured entry and each editing event
19224 is a top-level entry in the inbox file.
19225 @item
19226 After moving the entries, Org attempts changes to MobileOrg.  Some changes
19227 are applied directly and without user interaction.  Examples include changes
19228 to tags, TODO state, headline and body text.  Entries for further action are
19229 tagged as @code{:FLAGGED:}.  Org marks entries with problems with an error
19230 message in the inbox.  They have to be resolved manually.
19231 @item
19232 Org generates an agenda view for flagged entries for user intervention to
19233 clean up.  For notes stored in flagged entries, MobileOrg displays them in
19234 the echo area when the cursor is on the corresponding agenda item.
19236 @table @kbd
19237 @kindex ?
19238 @item ?
19239 Pressing @kbd{?} displays the entire flagged note in another window.  Org
19240 also pushes it to the kill ring.  To store flagged note as a normal note, use
19241 @kbd{?  z C-y C-c C-c}.  Pressing @kbd{?} twice does these things: first it
19242 removes the @code{:FLAGGED:} tag; second, it removes the flagged note from
19243 the property drawer; third, it signals that manual editing of the flagged
19244 entry is now finished.
19245 @end table
19246 @end enumerate
19248 @kindex C-c a ?
19249 @kbd{C-c a ?} returns to the agenda view to finish processing flagged
19250 entries.  Note that these entries may not be the most recent since MobileOrg
19251 searches files that were last pulled.  To get an updated agenda view with
19252 changes since the last pull, pull again.
19254 @node History and acknowledgments
19255 @appendix History and acknowledgments
19256 @cindex acknowledgments
19257 @cindex history
19258 @cindex thanks
19260 @section From Carsten
19262 Org was born in 2003, out of frustration over the user interface of the Emacs
19263 Outline mode.  I was trying to organize my notes and projects, and using
19264 Emacs seemed to be the natural way to go.  However, having to remember eleven
19265 different commands with two or three keys per command, only to hide and show
19266 parts of the outline tree, that seemed entirely unacceptable.  Also, when
19267 using outlines to take notes, I constantly wanted to restructure the tree,
19268 organizing it paralleling my thoughts and plans.  @emph{Visibility cycling}
19269 and @emph{structure editing} were originally implemented in the package
19270 @file{outline-magic.el}, but quickly moved to the more general @file{org.el}.
19271 As this environment became comfortable for project planning, the next step
19272 was adding @emph{TODO entries}, basic @emph{timestamps}, and @emph{table
19273 support}.  These areas highlighted the two main goals that Org still has
19274 today: to be a new, outline-based, plain text mode with innovative and
19275 intuitive editing features, and to incorporate project planning functionality
19276 directly into a notes file.
19278 Since the first release, literally thousands of emails to me or to
19279 @email{emacs-orgmode@@gnu.org} have provided a constant stream of bug
19280 reports, feedback, new ideas, and sometimes patches and add-on code.
19281 Many thanks to everyone who has helped to improve this package.  I am
19282 trying to keep here a list of the people who had significant influence
19283 in shaping one or more aspects of Org.  The list may not be
19284 complete, if I have forgotten someone, please accept my apologies and
19285 let me know.
19287 Before I get to this list, a few special mentions are in order:
19289 @table @i
19290 @item Bastien Guerry
19291 Bastien has written a large number of extensions to Org (most of them
19292 integrated into the core by now), including the @LaTeX{} exporter and the
19293 plain list parser.  His support during the early days was central to the
19294 success of this project.  Bastien also invented Worg, helped establishing the
19295 Web presence of Org, and sponsored hosting costs for the orgmode.org website.
19296 Bastien stepped in as maintainer of Org between 2011 and 2013, at a time when
19297 I desperately needed a break.
19298 @item Eric Schulte and Dan Davison
19299 Eric and Dan are jointly responsible for the Org-babel system, which turns
19300 Org into a multi-language environment for evaluating code and doing literate
19301 programming and reproducible research.  This has become one of Org's killer
19302 features that define what Org is today.
19303 @item John Wiegley
19304 John has contributed a number of great ideas and patches directly to Org,
19305 including the attachment system (@file{org-attach.el}), integration with
19306 Apple Mail (@file{org-mac-message.el}), hierarchical dependencies of TODO
19307 items, habit tracking (@file{org-habits.el}), and encryption
19308 (@file{org-crypt.el}).  Also, the capture system is really an extended copy
19309 of his great @file{remember.el}.
19310 @item Sebastian Rose
19311 Without Sebastian, the HTML/XHTML publishing of Org would be the pitiful work
19312 of an ignorant amateur.  Sebastian has pushed this part of Org onto a much
19313 higher level.  He also wrote @file{org-info.js}, a Java script for displaying
19314 web pages derived from Org using an Info-like or a folding interface with
19315 single-key navigation.
19316 @end table
19318 @noindent See below for the full list of contributions!  Again, please
19319 let me know what I am missing here!
19321 @section From Bastien
19323 I (Bastien) have been maintaining Org between 2011 and 2013.  This appendix
19324 would not be complete without adding a few more acknowledgments and thanks.
19326 I am first grateful to Carsten for his trust while handing me over the
19327 maintainership of Org.  His unremitting support is what really helped me
19328 getting more confident over time, with both the community and the code.
19330 When I took over maintainership, I knew I would have to make Org more
19331 collaborative than ever, as I would have to rely on people that are more
19332 knowledgeable than I am on many parts of the code.  Here is a list of the
19333 persons I could rely on, they should really be considered co-maintainers,
19334 either of the code or the community:
19336 @table @i
19337 @item Eric Schulte
19338 Eric is maintaining the Babel parts of Org.  His reactivity here kept me away
19339 from worrying about possible bugs here and let me focus on other parts.
19341 @item Nicolas Goaziou
19342 Nicolas is maintaining the consistency of the deepest parts of Org.  His work
19343 on @file{org-element.el} and @file{ox.el} has been outstanding, and it opened
19344 the doors for many new ideas and features.  He rewrote many of the old
19345 exporters to use the new export engine, and helped with documenting this
19346 major change.  More importantly (if that's possible), he has been more than
19347 reliable during all the work done for Org 8.0, and always very reactive on
19348 the mailing list.
19350 @item Achim Gratz
19351 Achim rewrote the building process of Org, turning some @emph{ad hoc} tools
19352 into a flexible and conceptually clean process.  He patiently coped with the
19353 many hiccups that such a change can create for users.
19355 @item Nick Dokos
19356 The Org mode mailing list would not be such a nice place without Nick, who
19357 patiently helped users so many times.  It is impossible to overestimate such
19358 a great help, and the list would not be so active without him.
19359 @end table
19361 I received support from so many users that it is clearly impossible to be
19362 fair when shortlisting a few of them, but Org's history would not be
19363 complete if the ones above were not mentioned in this manual.
19365 @section List of contributions
19367 @itemize @bullet
19369 @item
19370 @i{Russel Adams} came up with the idea for drawers.
19371 @item
19372 @i{Suvayu Ali} has steadily helped on the mailing list, providing useful
19373 feedback on many features and several patches.
19374 @item
19375 @i{Luis Anaya} wrote @file{ox-man.el}.
19376 @item
19377 @i{Thomas Baumann} wrote @file{org-bbdb.el} and @file{org-mhe.el}.
19378 @item
19379 @i{Michael Brand} helped by reporting many bugs and testing many features.
19380 He also implemented the distinction between empty fields and 0-value fields
19381 in Org's spreadsheets.
19382 @item
19383 @i{Christophe Bataillon} created the great unicorn logo that we use on the
19384 Org mode website.
19385 @item
19386 @i{Alex Bochannek} provided a patch for rounding timestamps.
19387 @item
19388 @i{Jan Böcker} wrote @file{org-docview.el}.
19389 @item
19390 @i{Brad Bozarth} showed how to pull RSS feed data into Org mode files.
19391 @item
19392 @i{Tom Breton} wrote @file{org-choose.el}.
19393 @item
19394 @i{Charles Cave}'s suggestion sparked the implementation of templates
19395 for Remember, which are now templates for capture.
19396 @item
19397 @i{Pavel Chalmoviansky} influenced the agenda treatment of items with
19398 specified time.
19399 @item
19400 @i{Gregory Chernov} patched support for Lisp forms into table
19401 calculations and improved XEmacs compatibility, in particular by porting
19402 @file{nouline.el} to XEmacs.
19403 @item
19404 @i{Sacha Chua} suggested copying some linking code from Planner, and helped
19405 make Org popular through her blog.
19406 @item
19407 @i{Toby S. Cubitt} contributed to the code for clock formats.
19408 @item
19409 @i{Baoqiu Cui} contributed the first DocBook exporter.  In Org 8.0, we go a
19410 different route: you can now export to Texinfo and export the @file{.texi}
19411 file to DocBook using @code{makeinfo}.
19412 @item
19413 @i{Eddward DeVilla} proposed and tested checkbox statistics.  He also
19414 came up with the idea of properties, and that there should be an API for
19415 them.
19416 @item
19417 @i{Nick Dokos} tracked down several nasty bugs.
19418 @item
19419 @i{Kees Dullemond} used to edit projects lists directly in HTML and so
19420 inspired some of the early development, including HTML export.  He also
19421 asked for a way to narrow wide table columns.
19422 @item
19423 @i{Jason Dunsmore} has been maintaining the Org-Mode server at Rackspace for
19424 several years now.  He also sponsored the hosting costs until Rackspace
19425 started to host us for free.
19426 @item
19427 @i{Thomas S. Dye} contributed documentation on Worg and helped integrating
19428 the Org-Babel documentation into the manual.
19429 @item
19430 @i{Christian Egli} converted the documentation into Texinfo format, inspired
19431 the agenda, patched CSS formatting into the HTML exporter, and wrote
19432 @file{org-taskjuggler.el}, which has been rewritten by Nicolas Goaziou as
19433 @file{ox-taskjuggler.el} for Org 8.0.
19434 @item
19435 @i{David Emery} provided a patch for custom CSS support in exported
19436 HTML agendas.
19437 @item
19438 @i{Sean Escriva} took over MobileOrg development on the iPhone platform.
19439 @item
19440 @i{Nic Ferrier} contributed mailcap and XOXO support.
19441 @item
19442 @i{Miguel A. Figueroa-Villanueva} implemented hierarchical checkboxes.
19443 @item
19444 @i{John Foerch} figured out how to make incremental search show context
19445 around a match in a hidden outline tree.
19446 @item
19447 @i{Raimar Finken} wrote @file{org-git-line.el}.
19448 @item
19449 @i{Mikael Fornius} works as a mailing list moderator.
19450 @item
19451 @i{Austin Frank} works as a mailing list moderator.
19452 @item
19453 @i{Eric Fraga} drove the development of BEAMER export with ideas and
19454 testing.
19455 @item
19456 @i{Barry Gidden} did proofreading the manual in preparation for the book
19457 publication through Network Theory Ltd.
19458 @item
19459 @i{Niels Giesen} had the idea to automatically archive DONE trees.
19460 @item
19461 @i{Nicolas Goaziou} rewrote much of the plain list code.  He also wrote
19462 @file{org-element.el} and @file{org-export.el}, which was a huge step forward
19463 in implementing a clean framework for Org exporters.
19464 @item
19465 @i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
19466 @item
19467 @i{Brian Gough} of Network Theory Ltd publishes the Org mode manual as a
19468 book.
19469 @item
19470 @i{Bernt Hansen} has driven much of the support for auto-repeating tasks,
19471 task state change logging, and the clocktable.  His clear explanations have
19472 been critical when we started to adopt the Git version control system.
19473 @item
19474 @i{Manuel Hermenegildo} has contributed various ideas, small fixes and
19475 patches.
19476 @item
19477 @i{Phil Jackson} wrote @file{org-irc.el}.
19478 @item
19479 @i{Scott Jaderholm} proposed footnotes, control over whitespace between
19480 folded entries, and column view for properties.
19481 @item
19482 @i{Matt Jones} wrote @i{MobileOrg Android}.
19483 @item
19484 @i{Tokuya Kameshima} wrote @file{org-wl.el} and @file{org-mew.el}.
19485 @item
19486 @i{Jonathan Leech-Pepin} wrote @file{ox-texinfo.el}.
19487 @item
19488 @i{Shidai Liu} ("Leo") asked for embedded @LaTeX{} and tested it.  He also
19489 provided frequent feedback and some patches.
19490 @item
19491 @i{Matt Lundin} has proposed last-row references for table formulas and named
19492 invisible anchors.  He has also worked a lot on the FAQ.
19493 @item
19494 @i{David Maus} wrote @file{org-atom.el}, maintains the issues file for Org,
19495 and is a prolific contributor on the mailing list with competent replies,
19496 small fixes and patches.
19497 @item
19498 @i{Jason F. McBrayer} suggested agenda export to CSV format.
19499 @item
19500 @i{Max Mikhanosha} came up with the idea of refiling and sticky agendas.
19501 @item
19502 @i{Dmitri Minaev} sent a patch to set priority limits on a per-file
19503 basis.
19504 @item
19505 @i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler
19506 happy.
19507 @item
19508 @i{Richard Moreland} wrote MobileOrg for the iPhone.
19509 @item
19510 @i{Rick Moynihan} proposed allowing multiple TODO sequences in a file
19511 and being able to quickly restrict the agenda to a subtree.
19512 @item
19513 @i{Todd Neal} provided patches for links to Info files and Elisp forms.
19514 @item
19515 @i{Greg Newman} refreshed the unicorn logo into its current form.
19516 @item
19517 @i{Tim O'Callaghan} suggested in-file links, search options for general
19518 file links, and TAGS.
19519 @item
19520 @i{Osamu Okano} wrote @file{orgcard2ref.pl}, a Perl program to create a text
19521 version of the reference card.
19522 @item
19523 @i{Takeshi Okano} translated the manual and David O'Toole's tutorial
19524 into Japanese.
19525 @item
19526 @i{Oliver Oppitz} suggested multi-state TODO items.
19527 @item
19528 @i{Scott Otterson} sparked the introduction of descriptive text for
19529 links, among other things.
19530 @item
19531 @i{Pete Phillips} helped during the development of the TAGS feature, and
19532 provided frequent feedback.
19533 @item
19534 @i{Francesco Pizzolante} provided patches that helped speeding up the agenda
19535 generation.
19536 @item
19537 @i{Martin Pohlack} provided the code snippet to bundle character insertion
19538 into bundles of 20 for undo.
19539 @item
19540 @i{Rackspace.com} is hosting our website for free.  Thank you Rackspace!
19541 @item
19542 @i{T.V. Raman} reported bugs and suggested improvements.
19543 @item
19544 @i{Matthias Rempe} (Oelde) provided ideas, Windows support, and quality
19545 control.
19546 @item
19547 @i{Paul Rivier} provided the basic implementation of named footnotes.  He
19548 also acted as mailing list moderator for some time.
19549 @item
19550 @i{Kevin Rogers} contributed code to access VM files on remote hosts.
19551 @item
19552 @i{Frank Ruell} solved the mystery of the @code{keymapp nil} bug, a
19553 conflict with @file{allout.el}.
19554 @item
19555 @i{Jason Riedy} generalized the send-receive mechanism for Orgtbl tables with
19556 extensive patches.
19557 @item
19558 @i{Philip Rooke} created the Org reference card, provided lots
19559 of feedback, developed and applied standards to the Org documentation.
19560 @item
19561 @i{Christian Schlauer} proposed angular brackets around links, among
19562 other things.
19563 @item
19564 @i{Christopher Schmidt} reworked @code{orgstruct-mode} so that users can
19565 enjoy folding in non-org buffers by using Org headlines in comments.
19566 @item
19567 @i{Paul Sexton} wrote @file{org-ctags.el}.
19568 @item
19569 Linking to VM/BBDB/Gnus was first inspired by @i{Tom Shannon}'s
19570 @file{organizer-mode.el}.
19571 @item
19572 @i{Ilya Shlyakhter} proposed the Archive Sibling, line numbering in literal
19573 examples, and remote highlighting for referenced code lines.
19574 @item
19575 @i{Stathis Sideris} wrote the @file{ditaa.jar} ASCII to PNG converter that is
19576 now packaged into Org's @file{contrib} directory.
19577 @item
19578 @i{Daniel Sinder} came up with the idea of internal archiving by locking
19579 subtrees.
19580 @item
19581 @i{Dale Smith} proposed link abbreviations.
19582 @item
19583 @i{James TD Smith} has contributed a large number of patches for useful
19584 tweaks and features.
19585 @item
19586 @i{Adam Spiers} asked for global linking commands, inspired the link
19587 extension system, added support for mairix, and proposed the mapping API.
19588 @item
19589 @i{Ulf Stegemann} created the table to translate special symbols to HTML,
19590 @LaTeX{}, UTF-8, Latin-1 and ASCII.
19591 @item
19592 @i{Andy Stewart} contributed code to @file{org-w3m.el}, to copy HTML content
19593 with links transformation to Org syntax.
19594 @item
19595 @i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
19596 chapter about publishing.
19597 @item
19598 @i{Jambunathan K} contributed the ODT exporter and rewrote the HTML exporter.
19599 @item
19600 @i{Sebastien Vauban} reported many issues with @LaTeX{} and BEAMER export and
19601 enabled source code highlighting in Gnus.
19602 @item
19603 @i{Stefan Vollmar} organized a video-recorded talk at the
19604 Max-Planck-Institute for Neurology.  He also inspired the creation of a
19605 concept index for HTML export.
19606 @item
19607 @i{Jürgen Vollmer} contributed code generating the table of contents
19608 in HTML output.
19609 @item
19610 @i{Samuel Wales} has provided important feedback and bug reports.
19611 @item
19612 @i{Chris Wallace} provided a patch implementing the @samp{QUOTE}
19613 keyword.
19614 @item
19615 @i{David Wainberg} suggested archiving, and improvements to the linking
19616 system.
19617 @item
19618 @i{Carsten Wimmer} suggested some changes and helped fix a bug in
19619 linking to Gnus.
19620 @item
19621 @i{Roland Winkler} requested additional key bindings to make Org
19622 work on a tty.
19623 @item
19624 @i{Piotr Zielinski} wrote @file{org-mouse.el}, proposed agenda blocks
19625 and contributed various ideas and code snippets.
19626 @item
19627 @i{Marco Wahl} wrote @file{org-eww.el}.
19628 @end itemize
19631 @node GNU Free Documentation License
19632 @appendix GNU Free Documentation License
19633 @include doclicense.texi
19636 @node Main Index
19637 @unnumbered Concept index
19639 @printindex cp
19641 @node Key Index
19642 @unnumbered Key index
19644 @printindex ky
19646 @node Command and Function Index
19647 @unnumbered Command and function index
19649 @printindex fn
19651 @node Variable Index
19652 @unnumbered Variable index
19654 This is not a complete index of variables and faces, only the ones that are
19655 mentioned in the manual.  For a complete list, use @kbd{M-x org-customize
19656 @key{RET}}.
19658 @printindex vr
19660 @bye
19662 @c Local variables:
19663 @c fill-column: 77
19664 @c indent-tabs-mode: nil
19665 @c paragraph-start:    "\b\\|^@[a-zA-Z]*[ \n]\\|^@x?org\\(key\\|cmd\\)\\|\f\\|[  ]*$"
19666 @c paragraph-separate: "\b\\|^@[a-zA-Z]*[ \n]\\|^@x?org\\(key\\|cmd\\)\\|[       \f]*$"
19667 @c End:
19670 @c  LocalWords:  webdavhost pre