]> code.delx.au - gnu-emacs/blob - doc/misc/org.texi
Install org-mode version 7.3
[gnu-emacs] / doc / misc / org.texi
1
2 \input texinfo
3 @c %**start of header
4 @setfilename ../../info/org
5 @settitle The Org Manual
6
7 @set VERSION 7.3
8 @set DATE November 2010
9
10 @c Use proper quote and backtick for code sections in PDF output
11 @c Cf. Texinfo manual 14.2
12 @set txicodequoteundirected
13 @set txicodequotebacktick
14
15 @c Version and Contact Info
16 @set MAINTAINERSITE @uref{http://orgmode.org,maintainers webpage}
17 @set AUTHOR Carsten Dominik
18 @set MAINTAINER Carsten Dominik
19 @set MAINTAINEREMAIL @email{carsten at orgmode dot org}
20 @set MAINTAINERCONTACT @uref{mailto:carsten at orgmode dot org,contact the maintainer}
21 @c %**end of header
22 @finalout
23
24 @c Macro definitions
25 @macro orgcmd{key,command}
26 @iftex
27 @kindex \key\
28 @findex \command\
29 @item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
30 @end iftex
31 @ifnottex
32 @kindex \key\
33 @findex \command\
34 @item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
35 @end ifnottex
36 @end macro
37
38 @macro orgkey{key}
39 @kindex \key\
40 @item @kbd{\key\}
41 @end macro
42
43 @iftex
44 @c @hyphenation{time-stamp time-stamps time-stamp-ing time-stamp-ed}
45 @end iftex
46 @macro Ie {}
47 I.e.,
48 @end macro
49 @macro ie {}
50 i.e.,
51 @end macro
52 @macro Eg {}
53 E.g.,
54 @end macro
55 @macro eg {}
56 e.g.,
57 @end macro
58
59 @c Subheadings inside a table.
60 @macro tsubheading{text}
61 @ifinfo
62 @subsubheading \text\
63 @end ifinfo
64 @ifnotinfo
65 @item @b{\text\}
66 @end ifnotinfo
67 @end macro
68
69 @copying
70 This manual is for Org version @value{VERSION}.
71
72 Copyright @copyright{} 2004, 2005, 2006, 2007, 2008, 2009, 2010
73 Free Software Foundation, Inc.
74
75 @quotation
76 Permission is granted to copy, distribute and/or modify this document
77 under the terms of the GNU Free Documentation License, Version 1.3 or
78 any later version published by the Free Software Foundation; with no
79 Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
80 and with the Back-Cover Texts as in (a) below. A copy of the license
81 is included in the section entitled ``GNU Free Documentation License.''
82
83 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
84 modify this GNU manual. Buying copies from the FSF supports it in
85 developing GNU and promoting software freedom.''
86
87 This document is part of a collection distributed under the GNU Free
88 Documentation License. If you want to distribute this document
89 separately from the collection, you can do so by adding a copy of the
90 license to the document, as described in section 6 of the license.
91 @end quotation
92 @end copying
93
94 @dircategory Emacs
95 @direntry
96 * Org Mode: (org). Outline-based notes management and organizer
97 @end direntry
98
99 @titlepage
100 @title The Org Manual
101
102 @subtitle Release @value{VERSION}
103 @author by Carsten Dominik
104 with contributions by David O'Toole, Bastien Guerry, Philip Rooke, Dan Davison, Eric Schulte, and Thomas Dye
105
106 @c The following two commands start the copyright page.
107 @page
108 @vskip 0pt plus 1filll
109 @insertcopying
110 @end titlepage
111
112 @c Output the table of contents at the beginning.
113 @contents
114
115 @ifnottex
116 @node Top, Introduction, (dir), (dir)
117 @top Org Mode Manual
118
119 @insertcopying
120 @end ifnottex
121
122 @menu
123 * Introduction:: Getting started
124 * Document Structure:: A tree works like your brain
125 * Tables:: Pure magic for quick formatting
126 * Hyperlinks:: Notes in context
127 * TODO Items:: Every tree branch can be a TODO item
128 * Tags:: Tagging headlines and matching sets of tags
129 * Properties and Columns:: Storing information about an entry
130 * Dates and Times:: Making items useful for planning
131 * Capture - Refile - Archive:: The ins and outs for projects
132 * Agenda Views:: Collecting information into views
133 * Markup:: Prepare text for rich export
134 * Exporting:: Sharing and publishing of notes
135 * Publishing:: Create a web site of linked Org files
136 * Working With Source Code:: Export, evaluate, and tangle code blocks
137 * Miscellaneous:: All the rest which did not fit elsewhere
138 * Hacking:: How to hack your way around
139 * MobileOrg:: Viewing and capture on a mobile device
140 * History and Acknowledgments:: How Org came into being
141 * Main Index:: An index of Org's concepts and features
142 * Key Index:: Key bindings and where they are described
143 * Command and Function Index:: Command names and some internal functions
144 * Variable Index:: Variables mentioned in the manual
145
146 @detailmenu
147 --- The Detailed Node Listing ---
148
149 Introduction
150
151 * Summary:: Brief summary of what Org does
152 * Installation:: How to install a downloaded version of Org
153 * Activation:: How to activate Org for certain buffers
154 * Feedback:: Bug reports, ideas, patches etc.
155 * Conventions:: Type-setting conventions in the manual
156
157 Document structure
158
159 * Outlines:: Org is based on Outline mode
160 * Headlines:: How to typeset Org tree headlines
161 * Visibility cycling:: Show and hide, much simplified
162 * Motion:: Jumping to other headlines
163 * Structure editing:: Changing sequence and level of headlines
164 * Sparse trees:: Matches embedded in context
165 * Plain lists:: Additional structure within an entry
166 * Drawers:: Tucking stuff away
167 * Blocks:: Folding blocks
168 * Footnotes:: How footnotes are defined in Org's syntax
169 * Orgstruct mode:: Structure editing outside Org
170
171 Tables
172
173 * Built-in table editor:: Simple tables
174 * Column width and alignment:: Overrule the automatic settings
175 * Column groups:: Grouping to trigger vertical lines
176 * Orgtbl mode:: The table editor as minor mode
177 * The spreadsheet:: The table editor has spreadsheet capabilities
178 * Org-Plot:: Plotting from org tables
179
180 The spreadsheet
181
182 * References:: How to refer to another field or range
183 * Formula syntax for Calc:: Using Calc to compute stuff
184 * Formula syntax for Lisp:: Writing formulas in Emacs Lisp
185 * Field formulas:: Formulas valid for a single field
186 * Column formulas:: Formulas valid for an entire column
187 * Editing and debugging formulas:: Fixing formulas
188 * Updating the table:: Recomputing all dependent fields
189 * Advanced features:: Field names, parameters and automatic recalc
190
191 Hyperlinks
192
193 * Link format:: How links in Org are formatted
194 * Internal links:: Links to other places in the current file
195 * External links:: URL-like links to the world
196 * Handling links:: Creating, inserting and following
197 * Using links outside Org:: Linking from my C source code?
198 * Link abbreviations:: Shortcuts for writing complex links
199 * Search options:: Linking to a specific location
200 * Custom searches:: When the default search is not enough
201
202 Internal links
203
204 * Radio targets:: Make targets trigger links in plain text
205
206 TODO items
207
208 * TODO basics:: Marking and displaying TODO entries
209 * TODO extensions:: Workflow and assignments
210 * Progress logging:: Dates and notes for progress
211 * Priorities:: Some things are more important than others
212 * Breaking down tasks:: Splitting a task into manageable pieces
213 * Checkboxes:: Tick-off lists
214
215 Extended use of TODO keywords
216
217 * Workflow states:: From TODO to DONE in steps
218 * TODO types:: I do this, Fred does the rest
219 * Multiple sets in one file:: Mixing it all, and still finding your way
220 * Fast access to TODO states:: Single letter selection of a state
221 * Per-file keywords:: Different files, different requirements
222 * Faces for TODO keywords:: Highlighting states
223 * TODO dependencies:: When one task needs to wait for others
224
225 Progress logging
226
227 * Closing items:: When was this entry marked DONE?
228 * Tracking TODO state changes:: When did the status change?
229 * Tracking your habits:: How consistent have you been?
230
231 Tags
232
233 * Tag inheritance:: Tags use the tree structure of the outline
234 * Setting tags:: How to assign tags to a headline
235 * Tag searches:: Searching for combinations of tags
236
237 Properties and columns
238
239 * Property syntax:: How properties are spelled out
240 * Special properties:: Access to other Org-mode features
241 * Property searches:: Matching property values
242 * Property inheritance:: Passing values down the tree
243 * Column view:: Tabular viewing and editing
244 * Property API:: Properties for Lisp programmers
245
246 Column view
247
248 * Defining columns:: The COLUMNS format property
249 * Using column view:: How to create and use column view
250 * Capturing column view:: A dynamic block for column view
251
252 Defining columns
253
254 * Scope of column definitions:: Where defined, where valid?
255 * Column attributes:: Appearance and content of a column
256
257 Dates and times
258
259 * Timestamps:: Assigning a time to a tree entry
260 * Creating timestamps:: Commands which insert timestamps
261 * Deadlines and scheduling:: Planning your work
262 * Clocking work time:: Tracking how long you spend on a task
263 * Resolving idle time:: Resolving time if you've been idle
264 * Effort estimates:: Planning work effort in advance
265 * Relative timer:: Notes with a running timer
266 * Countdown timer:: Starting a countdown timer for a task
267
268 Creating timestamps
269
270 * The date/time prompt:: How Org-mode helps you entering date and time
271 * Custom time format:: Making dates look different
272
273 Deadlines and scheduling
274
275 * Inserting deadline/schedule:: Planning items
276 * Repeated tasks:: Items that show up again and again
277
278 Capture - Refile - Archive
279
280 * Capture:: Capturing new stuff
281 * Attachments:: Add files to tasks
282 * RSS Feeds:: Getting input from RSS feeds
283 * Protocols:: External (e.g. Browser) access to Emacs and Org
284 * Refiling notes:: Moving a tree from one place to another
285 * Archiving:: What to do with finished projects
286
287 Capture
288
289 * Setting up capture:: Where notes will be stored
290 * Using capture:: Commands to invoke and terminate capture
291 * Capture templates:: Define the outline of different note types
292
293 Capture templates
294
295 * Template elements:: What is needed for a complete template entry
296 * Template expansion:: Filling in information about time and context
297
298 Archiving
299
300 * Moving subtrees:: Moving a tree to an archive file
301 * Internal archiving:: Switch off a tree but keep it in the file
302
303 Agenda views
304
305 * Agenda files:: Files being searched for agenda information
306 * Agenda dispatcher:: Keyboard access to agenda views
307 * Built-in agenda views:: What is available out of the box?
308 * Presentation and sorting:: How agenda items are prepared for display
309 * Agenda commands:: Remote editing of Org trees
310 * Custom agenda views:: Defining special searches and views
311 * Exporting Agenda Views:: Writing a view to a file
312 * Agenda column view:: Using column view for collected entries
313
314 The built-in agenda views
315
316 * Weekly/daily agenda:: The calendar page with current tasks
317 * Global TODO list:: All unfinished action items
318 * Matching tags and properties:: Structured information with fine-tuned search
319 * Timeline:: Time-sorted view for single file
320 * Search view:: Find entries by searching for text
321 * Stuck projects:: Find projects you need to review
322
323 Presentation and sorting
324
325 * Categories:: Not all tasks are equal
326 * Time-of-day specifications:: How the agenda knows the time
327 * Sorting of agenda items:: The order of things
328
329 Custom agenda views
330
331 * Storing searches:: Type once, use often
332 * Block agenda:: All the stuff you need in a single buffer
333 * Setting Options:: Changing the rules
334
335 Markup for rich export
336
337 * Structural markup elements:: The basic structure as seen by the exporter
338 * Images and tables:: Tables and Images will be included
339 * Literal examples:: Source code examples with special formatting
340 * Include files:: Include additional files into a document
341 * Index entries:: Making an index
342 * Macro replacement:: Use macros to create complex output
343 * Embedded LaTeX:: LaTeX can be freely used inside Org documents
344
345 Structural markup elements
346
347 * Document title:: Where the title is taken from
348 * Headings and sections:: The document structure as seen by the exporter
349 * Table of contents:: The if and where of the table of contents
350 * Initial text:: Text before the first heading?
351 * Lists:: Lists
352 * Paragraphs:: Paragraphs
353 * Footnote markup:: Footnotes
354 * Emphasis and monospace:: Bold, italic, etc.
355 * Horizontal rules:: Make a line
356 * Comment lines:: What will *not* be exported
357
358 Embedded La@TeX{}
359
360 * Special symbols:: Greek letters and other symbols
361 * Subscripts and superscripts:: Simple syntax for raising/lowering text
362 * LaTeX fragments:: Complex formulas made easy
363 * Previewing LaTeX fragments:: What will this snippet look like?
364 * CDLaTeX mode:: Speed up entering of formulas
365
366 Exporting
367
368 * Selective export:: Using tags to select and exclude trees
369 * Export options:: Per-file export settings
370 * The export dispatcher:: How to access exporter commands
371 * ASCII/Latin-1/UTF-8 export:: Exporting to flat files with encoding
372 * HTML export:: Exporting to HTML
373 * LaTeX and PDF export:: Exporting to La@TeX{}, and processing to PDF
374 * DocBook export:: Exporting to DocBook
375 * TaskJuggler export:: Exporting to TaskJuggler
376 * Freemind export:: Exporting to Freemind mind maps
377 * XOXO export:: Exporting to XOXO
378 * iCalendar export:: Exporting in iCalendar format
379
380 HTML export
381
382 * HTML Export commands:: How to invoke HTML export
383 * Quoting HTML tags:: Using direct HTML in Org-mode
384 * Links in HTML export:: How links will be interpreted and formatted
385 * Tables in HTML export:: How to modify the formatting of tables
386 * Images in HTML export:: How to insert figures into HTML output
387 * Math formatting in HTML export:: Beautiful math also on the web
388 * Text areas in HTML export:: An alternative way to show an example
389 * CSS support:: Changing the appearance of the output
390 * JavaScript support:: Info and Folding in a web browser
391
392 La@TeX{} and PDF export
393
394 * LaTeX/PDF export commands:: Which key invokes which commands
395 * Header and sectioning:: Setting up the export file structure
396 * Quoting LaTeX code:: Incorporating literal La@TeX{} code
397 * Tables in LaTeX export:: Options for exporting tables to La@TeX{}
398 * Images in LaTeX export:: How to insert figures into La@TeX{} output
399 * Beamer class export:: Turning the file into a presentation
400
401 DocBook export
402
403 * DocBook export commands:: How to invoke DocBook export
404 * Quoting DocBook code:: Incorporating DocBook code in Org files
405 * Recursive sections:: Recursive sections in DocBook
406 * Tables in DocBook export:: Tables are exported as HTML tables
407 * Images in DocBook export:: How to insert figures into DocBook output
408 * Special characters:: How to handle special characters
409
410 Publishing
411
412 * Configuration:: Defining projects
413 * Uploading files:: How to get files up on the server
414 * Sample configuration:: Example projects
415 * Triggering publication:: Publication commands
416
417 Configuration
418
419 * Project alist:: The central configuration variable
420 * Sources and destinations:: From here to there
421 * Selecting files:: What files are part of the project?
422 * Publishing action:: Setting the function doing the publishing
423 * Publishing options:: Tweaking HTML export
424 * Publishing links:: Which links keep working after publishing?
425 * Sitemap:: Generating a list of all pages
426 * Generating an index:: An index that reaches across pages
427
428 Sample configuration
429
430 * Simple example:: One-component publishing
431 * Complex example:: A multi-component publishing example
432
433 Working with source code
434
435 * Structure of code blocks:: Code block syntax described
436 * Editing source code:: Language major-mode editing
437 * Exporting code blocks:: Export contents and/or results
438 * Extracting source code:: Create pure source code files
439 * Evaluating code blocks:: Place results of evaluation in the Org-mode buffer
440 * Library of Babel:: Use and contribute to a library of useful code blocks
441 * Languages:: List of supported code block languages
442 * Header arguments:: Configure code block functionality
443 * Results of evaluation:: How evaluation results are handled
444 * Noweb reference syntax:: Literate programming in Org-mode
445 * Key bindings and useful functions:: Work quickly with code blocks
446 * Batch execution:: Call functions from the command line
447
448 Header arguments
449
450 * Using header arguments:: Different ways to set header arguments
451 * Specific header arguments:: List of header arguments
452
453 Using header arguments
454
455 * System-wide header arguments:: Set global default values
456 * Language-specific header arguments:: Set default values by language
457 * Buffer-wide header arguments:: Set default values for a specific buffer
458 * Header arguments in Org-mode properties:: Set default values for a buffer or heading
459 * Code block specific header arguments:: The most common way to set values
460 * Header arguments in function calls:: The most specific level
461
462 Specific header arguments
463
464 * var:: Pass arguments to code blocks
465 * results:: Specify the type of results and how they will
466 be collected and handled
467 * file:: Specify a path for file output
468 * dir:: Specify the default (possibly remote)
469 directory for code block execution
470 * exports:: Export code and/or results
471 * tangle:: Toggle tangling and specify file name
472 * comments:: Toggle insertion of comments in tangled
473 code files
474 * no-expand:: Turn off variable assignment and noweb
475 expansion during tangling
476 * session:: Preserve the state of code evaluation
477 * noweb:: Toggle expansion of noweb references
478 * cache:: Avoid re-evaluating unchanged code blocks
479 * hlines:: Handle horizontal lines in tables
480 * colnames:: Handle column names in tables
481 * rownames:: Handle row names in tables
482 * shebang:: Make tangled files executable
483 * eval:: Limit evaluation of specific code blocks
484
485 Miscellaneous
486
487 * Completion:: M-TAB knows what you need
488 * Easy Templates:: Quick insertion of structural elements
489 * Speed keys:: Electric commands at the beginning of a headline
490 * Code evaluation security:: Org mode files evaluate inline code
491 * Customization:: Adapting Org to your taste
492 * In-buffer settings:: Overview of the #+KEYWORDS
493 * The very busy C-c C-c key:: When in doubt, press C-c C-c
494 * Clean view:: Getting rid of leading stars in the outline
495 * TTY keys:: Using Org on a tty
496 * Interaction:: Other Emacs packages
497
498 Interaction with other packages
499
500 * Cooperation:: Packages Org cooperates with
501 * Conflicts:: Packages that lead to conflicts
502
503 Hacking
504
505 * Hooks:: Who to reach into Org's internals
506 * Add-on packages:: Available extensions
507 * Adding hyperlink types:: New custom link types
508 * Context-sensitive commands:: How to add functionality to such commands
509 * Tables in arbitrary syntax:: Orgtbl for La@TeX{} and other programs
510 * Dynamic blocks:: Automatically filled blocks
511 * Special agenda views:: Customized views
512 * Extracting agenda information:: Postprocessing of agenda information
513 * Using the property API:: Writing programs that use entry properties
514 * Using the mapping API:: Mapping over all or selected entries
515
516 Tables and lists in arbitrary syntax
517
518 * Radio tables:: Sending and receiving radio tables
519 * A LaTeX example:: Step by step, almost a tutorial
520 * Translator functions:: Copy and modify
521 * Radio lists:: Doing the same for lists
522
523 MobileOrg
524
525 * Setting up the staging area:: Where to interact with the mobile device
526 * Pushing to MobileOrg:: Uploading Org files and agendas
527 * Pulling from MobileOrg:: Integrating captured and flagged items
528
529 @end detailmenu
530 @end menu
531
532 @node Introduction, Document Structure, Top, Top
533 @chapter Introduction
534 @cindex introduction
535
536 @menu
537 * Summary:: Brief summary of what Org does
538 * Installation:: How to install a downloaded version of Org
539 * Activation:: How to activate Org for certain buffers
540 * Feedback:: Bug reports, ideas, patches etc.
541 * Conventions:: Type-setting conventions in the manual
542 @end menu
543
544 @node Summary, Installation, Introduction, Introduction
545 @section Summary
546 @cindex summary
547
548 Org is a mode for keeping notes, maintaining TODO lists, and doing
549 project planning with a fast and effective plain-text system.
550
551 Org develops organizational tasks around NOTES files that contain
552 lists or information about projects as plain text. Org is
553 implemented on top of Outline mode, which makes it possible to keep the
554 content of large files well structured. Visibility cycling and
555 structure editing help to work with the tree. Tables are easily created
556 with a built-in table editor. Org supports TODO items, deadlines,
557 timestamps, and scheduling. It dynamically compiles entries into an
558 agenda that utilizes and smoothly integrates much of the Emacs calendar
559 and diary. Plain text URL-like links connect to websites, emails,
560 Usenet messages, BBDB entries, and any files related to the projects.
561 For printing and sharing of notes, an Org file can be exported as a
562 structured ASCII file, as HTML, or (TODO and agenda items only) as an
563 iCalendar file. It can also serve as a publishing tool for a set of
564 linked web pages.
565
566 As a project planning environment, Org works by adding metadata to outline
567 nodes. Based on this data, specific entries can be extracted in queries and
568 create dynamic @i{agenda views}.
569
570 Org mode contains the Org Babel environment which allows to work with
571 embedded source code block in a file, to facilitate code evaluation,
572 documentation, and tangling.
573
574 Org's automatic, context-sensitive table editor with spreadsheet
575 capabilities can be integrated into any major mode by activating the
576 minor Orgtbl mode. Using a translation step, it can be used to maintain
577 tables in arbitrary file types, for example in La@TeX{}. The structure
578 editing and list creation capabilities can be used outside Org with
579 the minor Orgstruct mode.
580
581 Org keeps simple things simple. When first fired up, it should
582 feel like a straightforward, easy to use outliner. Complexity is not
583 imposed, but a large amount of functionality is available when you need
584 it. Org is a toolbox and can be used in different ways and for different
585 ends, for example:
586
587 @example
588 @r{@bullet{} an outline extension with visibility cycling and structure editing}
589 @r{@bullet{} an ASCII system and table editor for taking structured notes}
590 @r{@bullet{} a TODO list editor}
591 @r{@bullet{} a full agenda and planner with deadlines and work scheduling}
592 @pindex GTD, Getting Things Done
593 @r{@bullet{} an environment in which to implement David Allen's GTD system}
594 @r{@bullet{} a simple hypertext system, with HTML and La@TeX{} export}
595 @r{@bullet{} a publishing tool to create a set of interlinked webpages}
596 @r{@bullet{} an environment for literate programming}
597 @end example
598
599
600 @cindex FAQ
601 There is a website for Org which provides links to the newest
602 version of Org, as well as additional information, frequently asked
603 questions (FAQ), links to tutorials, etc@. This page is located at
604 @uref{http://orgmode.org}.
605
606 @page
607
608
609 @node Installation, Activation, Summary, Introduction
610 @section Installation
611 @cindex installation
612 @cindex XEmacs
613
614 @b{Important:} @i{If you are using a version of Org that is part of the Emacs
615 distribution or an XEmacs package, please skip this section and go directly
616 to @ref{Activation}.}
617
618 If you have downloaded Org from the Web, either as a distribution @file{.zip}
619 or @file{.tar} file, or as a Git archive, you must take the following steps
620 to install it: go into the unpacked Org distribution directory and edit the
621 top section of the file @file{Makefile}. You must set the name of the Emacs
622 binary (likely either @file{emacs} or @file{xemacs}), and the paths to the
623 directories where local Lisp and Info files are kept. If you don't have
624 access to the system-wide directories, you can simply run Org directly from
625 the distribution directory by adding the @file{lisp} subdirectory to the
626 Emacs load path. To do this, add the following line to @file{.emacs}:
627
628 @example
629 (setq load-path (cons "~/path/to/orgdir/lisp" load-path))
630 @end example
631
632 @noindent
633 If you plan to use code from the @file{contrib} subdirectory, do a similar
634 step for this directory:
635
636 @example
637 (setq load-path (cons "~/path/to/orgdir/contrib/lisp" load-path))
638 @end example
639
640 @noindent Now byte-compile the Lisp files with the shell command:
641
642 @example
643 make
644 @end example
645
646 @noindent If you are running Org from the distribution directory, this is
647 all. If you want to install Org into the system directories, use (as
648 administrator)
649
650 @example
651 make install
652 @end example
653
654 Installing Info files is system dependent, because of differences in the
655 @file{install-info} program. In Debian it copies the info files into the
656 correct directory and modifies the info directory file. In many other
657 systems, the files need to be copied to the correct directory separately, and
658 @file{install-info} then only modifies the directory file. Check your system
659 documentation to find out which of the following commands you need:
660
661 @example
662 make install-info
663 make install-info-debian
664 @end example
665
666 Then add the following line to @file{.emacs}. It is needed so that
667 Emacs can autoload functions that are located in files not immediately loaded
668 when Org-mode starts.
669 @lisp
670 (require 'org-install)
671 @end lisp
672
673 Do not forget to activate Org as described in the following section.
674 @page
675
676 @node Activation, Feedback, Installation, Introduction
677 @section Activation
678 @cindex activation
679 @cindex autoload
680 @cindex global key bindings
681 @cindex key bindings, global
682
683 Add the following lines to your @file{.emacs} file. The last three lines
684 define @emph{global} keys for the commands @command{org-store-link},
685 @command{org-agenda}, and @command{org-iswitchb}---please choose suitable
686 keys yourself.
687
688 @lisp
689 ;; The following lines are always needed. Choose your own keys.
690 (add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
691 (global-set-key "\C-cl" 'org-store-link)
692 (global-set-key "\C-ca" 'org-agenda)
693 (global-set-key "\C-cb" 'org-iswitchb)
694 @end lisp
695
696 Furthermore, you must activate @code{font-lock-mode} in Org
697 buffers, because significant functionality depends on font-locking being
698 active. You can do this with either one of the following two lines
699 (XEmacs users must use the second option):
700 @lisp
701 (global-font-lock-mode 1) ; for all buffers
702 (add-hook 'org-mode-hook 'turn-on-font-lock) ; Org buffers only
703 @end lisp
704
705 @cindex Org-mode, turning on
706 With this setup, all files with extension @samp{.org} will be put
707 into Org-mode. As an alternative, make the first line of a file look
708 like this:
709
710 @example
711 MY PROJECTS -*- mode: org; -*-
712 @end example
713
714 @vindex org-insert-mode-line-in-empty-file
715 @noindent which will select Org-mode for this buffer no matter what
716 the file's name is. See also the variable
717 @code{org-insert-mode-line-in-empty-file}.
718
719 Many commands in Org work on the region if the region is @i{active}. To make
720 use of this, you need to have @code{transient-mark-mode}
721 (@code{zmacs-regions} in XEmacs) turned on. In Emacs 23 this is the default,
722 in Emacs 22 you need to do this yourself with
723 @lisp
724 (transient-mark-mode 1)
725 @end lisp
726 @noindent If you do not like @code{transient-mark-mode}, you can create an
727 active region by using the mouse to select a region, or pressing
728 @kbd{C-@key{SPC}} twice before moving the cursor.
729
730 @node Feedback, Conventions, Activation, Introduction
731 @section Feedback
732 @cindex feedback
733 @cindex bug reports
734 @cindex maintainer
735 @cindex author
736
737 If you find problems with Org, or if you have questions, remarks, or ideas
738 about it, please mail to the Org mailing list @email{emacs-orgmode@@gnu.org}.
739 If you are not a member of the mailing list, your mail will be passed to the
740 list after a moderator has approved it@footnote{Please consider subscribing
741 to the mailing list, in order to minimize the work the mailing list
742 moderators have to do.}.
743
744 For bug reports, please first try to reproduce the bug with the latest
745 version of Org available - if you are running an outdated version, it is
746 quite possible that the bug has been fixed already. If the bug persists,
747 prepare a report and provide as much information as possible, including the
748 version information of Emacs (@kbd{M-x emacs-version @key{RET}}) and Org
749 (@kbd{M-x org-version @key{RET}}), as well as the Org related setup in
750 @file{.emacs}. The easiest way to do this is to use the command
751 @example
752 @kbd{M-x org-submit-bug-report}
753 @end example
754 @noindent which will put all this information into an Emacs mail buffer so
755 that you only need to add your description. If you re not sending the Email
756 from within Emacs, please copy and paste the content into your Email program.
757
758 If an error occurs, a backtrace can be very useful (see below on how to
759 create one). Often a small example file helps, along with clear information
760 about:
761
762 @enumerate
763 @item What exactly did you do?
764 @item What did you expect to happen?
765 @item What happened instead?
766 @end enumerate
767 @noindent Thank you for helping to improve this program.
768
769 @subsubheading How to create a useful backtrace
770
771 @cindex backtrace of an error
772 If working with Org produces an error with a message you don't
773 understand, you may have hit a bug. The best way to report this is by
774 providing, in addition to what was mentioned above, a @emph{backtrace}.
775 This is information from the built-in debugger about where and how the
776 error occurred. Here is how to produce a useful backtrace:
777
778 @enumerate
779 @item
780 Reload uncompiled versions of all Org-mode Lisp files. The backtrace
781 contains much more information if it is produced with uncompiled code.
782 To do this, use
783 @example
784 C-u M-x org-reload RET
785 @end example
786 @noindent
787 or select @code{Org -> Refresh/Reload -> Reload Org uncompiled} from the
788 menu.
789 @item
790 Go to the @code{Options} menu and select @code{Enter Debugger on Error}
791 (XEmacs has this option in the @code{Troubleshooting} sub-menu).
792 @item
793 Do whatever you have to do to hit the error. Don't forget to
794 document the steps you take.
795 @item
796 When you hit the error, a @file{*Backtrace*} buffer will appear on the
797 screen. Save this buffer to a file (for example using @kbd{C-x C-w}) and
798 attach it to your bug report.
799 @end enumerate
800
801 @node Conventions, , Feedback, Introduction
802 @section Typesetting conventions used in this manual
803
804 Org uses three types of keywords: TODO keywords, tags, and property
805 names. In this manual we use the following conventions:
806
807 @table @code
808 @item TODO
809 @itemx WAITING
810 TODO keywords are written with all capitals, even if they are
811 user-defined.
812 @item boss
813 @itemx ARCHIVE
814 User-defined tags are written in lowercase; built-in tags with special
815 meaning are written with all capitals.
816 @item Release
817 @itemx PRIORITY
818 User-defined properties are capitalized; built-in properties with
819 special meaning are written with all capitals.
820 @end table
821
822 @node Document Structure, Tables, Introduction, Top
823 @chapter Document structure
824 @cindex document structure
825 @cindex structure of document
826
827 Org is based on Outline mode and provides flexible commands to
828 edit the structure of the document.
829
830 @menu
831 * Outlines:: Org is based on Outline mode
832 * Headlines:: How to typeset Org tree headlines
833 * Visibility cycling:: Show and hide, much simplified
834 * Motion:: Jumping to other headlines
835 * Structure editing:: Changing sequence and level of headlines
836 * Sparse trees:: Matches embedded in context
837 * Plain lists:: Additional structure within an entry
838 * Drawers:: Tucking stuff away
839 * Blocks:: Folding blocks
840 * Footnotes:: How footnotes are defined in Org's syntax
841 * Orgstruct mode:: Structure editing outside Org
842 @end menu
843
844 @node Outlines, Headlines, Document Structure, Document Structure
845 @section Outlines
846 @cindex outlines
847 @cindex Outline mode
848
849 Org is implemented on top of Outline mode. Outlines allow a
850 document to be organized in a hierarchical structure, which (at least
851 for me) is the best representation of notes and thoughts. An overview
852 of this structure is achieved by folding (hiding) large parts of the
853 document to show only the general document structure and the parts
854 currently being worked on. Org greatly simplifies the use of
855 outlines by compressing the entire show/hide functionality into a single
856 command, @command{org-cycle}, which is bound to the @key{TAB} key.
857
858 @node Headlines, Visibility cycling, Outlines, Document Structure
859 @section Headlines
860 @cindex headlines
861 @cindex outline tree
862 @vindex org-special-ctrl-a/e
863 @vindex org-special-ctrl-k
864 @vindex org-ctrl-k-protect-subtree
865
866 Headlines define the structure of an outline tree. The headlines in Org
867 start with one or more stars, on the left margin@footnote{See the variables
868 @code{org-special-ctrl-a/e}, @code{org-special-ctrl-k}, and
869 @code{org-ctrl-k-protect-subtree} to configure special behavior of @kbd{C-a},
870 @kbd{C-e}, and @kbd{C-k} in headlines.}. For example:
871
872 @example
873 * Top level headline
874 ** Second level
875 *** 3rd level
876 some text
877 *** 3rd level
878 more text
879
880 * Another top level headline
881 @end example
882
883 @noindent Some people find the many stars too noisy and would prefer an
884 outline that has whitespace followed by a single star as headline
885 starters. @ref{Clean view}, describes a setup to realize this.
886
887 @vindex org-cycle-separator-lines
888 An empty line after the end of a subtree is considered part of it and
889 will be hidden when the subtree is folded. However, if you leave at
890 least two empty lines, one empty line will remain visible after folding
891 the subtree, in order to structure the collapsed view. See the
892 variable @code{org-cycle-separator-lines} to modify this behavior.
893
894 @node Visibility cycling, Motion, Headlines, Document Structure
895 @section Visibility cycling
896 @cindex cycling, visibility
897 @cindex visibility cycling
898 @cindex trees, visibility
899 @cindex show hidden text
900 @cindex hide text
901
902 Outlines make it possible to hide parts of the text in the buffer.
903 Org uses just two commands, bound to @key{TAB} and
904 @kbd{S-@key{TAB}} to change the visibility in the buffer.
905
906 @cindex subtree visibility states
907 @cindex subtree cycling
908 @cindex folded, subtree visibility state
909 @cindex children, subtree visibility state
910 @cindex subtree, subtree visibility state
911 @table @asis
912 @orgcmd{@key{TAB},org-cycle}
913 @emph{Subtree cycling}: Rotate current subtree among the states
914
915 @example
916 ,-> FOLDED -> CHILDREN -> SUBTREE --.
917 '-----------------------------------'
918 @end example
919
920 @vindex org-cycle-emulate-tab
921 @vindex org-cycle-global-at-bob
922 The cursor must be on a headline for this to work@footnote{see, however,
923 the option @code{org-cycle-emulate-tab}.}. When the cursor is at the
924 beginning of the buffer and the first line is not a headline, then
925 @key{TAB} actually runs global cycling (see below)@footnote{see the
926 option @code{org-cycle-global-at-bob}.}. Also when called with a prefix
927 argument (@kbd{C-u @key{TAB}}), global cycling is invoked.
928
929 @cindex global visibility states
930 @cindex global cycling
931 @cindex overview, global visibility state
932 @cindex contents, global visibility state
933 @cindex show all, global visibility state
934 @orgcmd{S-@key{TAB},org-global-cycle}
935 @itemx C-u @key{TAB}
936 @emph{Global cycling}: Rotate the entire buffer among the states
937
938 @example
939 ,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
940 '--------------------------------------'
941 @end example
942
943 When @kbd{S-@key{TAB}} is called with a numeric prefix argument N, the
944 CONTENTS view up to headlines of level N will be shown. Note that inside
945 tables, @kbd{S-@key{TAB}} jumps to the previous field.
946
947 @cindex show all, command
948 @orgcmd{C-u C-u C-u @key{TAB},show-all}
949 Show all, including drawers.
950 @orgcmd{C-c C-r,org-reveal}
951 Reveal context around point, showing the current entry, the following heading
952 and the hierarchy above. Useful for working near a location that has been
953 exposed by a sparse tree command (@pxref{Sparse trees}) or an agenda command
954 (@pxref{Agenda commands}). With a prefix argument show, on each
955 level, all sibling headings. With double prefix arg, also show the entire
956 subtree of the parent.
957 @orgcmd{C-c C-k,show-branches}
958 Expose all the headings of the subtree, CONTENT view for just one subtree.
959 @orgcmd{C-c C-x b,org-tree-to-indirect-buffer}
960 Show the current subtree in an indirect buffer@footnote{The indirect
961 buffer
962 @ifinfo
963 (@pxref{Indirect Buffers,,,emacs,GNU Emacs Manual})
964 @end ifinfo
965 @ifnotinfo
966 (see the Emacs manual for more information about indirect buffers)
967 @end ifnotinfo
968 will contain the entire buffer, but will be narrowed to the current
969 tree. Editing the indirect buffer will also change the original buffer,
970 but without affecting visibility in that buffer.}. With a numeric
971 prefix argument N, go up to level N and then take that tree. If N is
972 negative then go up that many levels. With a @kbd{C-u} prefix, do not remove
973 the previously used indirect buffer.
974 @end table
975
976 @vindex org-startup-folded
977 @cindex @code{overview}, STARTUP keyword
978 @cindex @code{content}, STARTUP keyword
979 @cindex @code{showall}, STARTUP keyword
980 @cindex @code{showeverything}, STARTUP keyword
981
982 When Emacs first visits an Org file, the global state is set to
983 OVERVIEW, i.e. only the top level headlines are visible. This can be
984 configured through the variable @code{org-startup-folded}, or on a
985 per-file basis by adding one of the following lines anywhere in the
986 buffer:
987
988 @example
989 #+STARTUP: overview
990 #+STARTUP: content
991 #+STARTUP: showall
992 #+STARTUP: showeverything
993 @end example
994
995 @cindex property, VISIBILITY
996 @noindent
997 Furthermore, any entries with a @samp{VISIBILITY} property (@pxref{Properties
998 and Columns}) will get their visibility adapted accordingly. Allowed values
999 for this property are @code{folded}, @code{children}, @code{content}, and
1000 @code{all}.
1001 @table @asis
1002 @orgcmd{C-u C-u @key{TAB},org-set-startup-visibility}
1003 Switch back to the startup visibility of the buffer, i.e. whatever is
1004 requested by startup options and @samp{VISIBILITY} properties in individual
1005 entries.
1006 @end table
1007
1008 @node Motion, Structure editing, Visibility cycling, Document Structure
1009 @section Motion
1010 @cindex motion, between headlines
1011 @cindex jumping, to headlines
1012 @cindex headline navigation
1013 The following commands jump to other headlines in the buffer.
1014
1015 @table @asis
1016 @orgcmd{C-c C-n,outline-next-visible-heading}
1017 Next heading.
1018 @orgcmd{C-c C-p,outline-previous-visible-heading}
1019 Previous heading.
1020 @orgcmd{C-c C-f,org-forward-same-level}
1021 Next heading same level.
1022 @orgcmd{C-c C-b,org-backward-same-level}
1023 Previous heading same level.
1024 @orgcmd{C-c C-u,outline-up-heading}
1025 Backward to higher level heading.
1026 @orgcmd{C-c C-j,org-goto}
1027 Jump to a different place without changing the current outline
1028 visibility. Shows the document structure in a temporary buffer, where
1029 you can use the following keys to find your destination:
1030 @vindex org-goto-auto-isearch
1031 @example
1032 @key{TAB} @r{Cycle visibility.}
1033 @key{down} / @key{up} @r{Next/previous visible headline.}
1034 @key{RET} @r{Select this location.}
1035 @kbd{/} @r{Do a Sparse-tree search}
1036 @r{The following keys work if you turn off @code{org-goto-auto-isearch}}
1037 n / p @r{Next/previous visible headline.}
1038 f / b @r{Next/previous headline same level.}
1039 u @r{One level up.}
1040 0-9 @r{Digit argument.}
1041 q @r{Quit}
1042 @end example
1043 @vindex org-goto-interface
1044 @noindent
1045 See also the variable @code{org-goto-interface}.
1046 @end table
1047
1048 @node Structure editing, Sparse trees, Motion, Document Structure
1049 @section Structure editing
1050 @cindex structure editing
1051 @cindex headline, promotion and demotion
1052 @cindex promotion, of subtrees
1053 @cindex demotion, of subtrees
1054 @cindex subtree, cut and paste
1055 @cindex pasting, of subtrees
1056 @cindex cutting, of subtrees
1057 @cindex copying, of subtrees
1058 @cindex sorting, of subtrees
1059 @cindex subtrees, cut and paste
1060
1061 @table @asis
1062 @orgcmd{M-@key{RET},org-insert-heading}
1063 @vindex org-M-RET-may-split-line
1064 Insert new heading with same level as current. If the cursor is in a
1065 plain list item, a new item is created (@pxref{Plain lists}). To force
1066 creation of a new headline, use a prefix argument, or first press @key{RET}
1067 to get to the beginning of the next line. When this command is used in
1068 the middle of a line, the line is split and the rest of the line becomes
1069 the new headline@footnote{If you do not want the line to be split,
1070 customize the variable @code{org-M-RET-may-split-line}.}. If the
1071 command is used at the beginning of a headline, the new headline is
1072 created before the current line. If at the beginning of any other line,
1073 the content of that line is made the new heading. If the command is
1074 used at the end of a folded subtree (i.e. behind the ellipses at the end
1075 of a headline), then a headline like the current one will be inserted
1076 after the end of the subtree.
1077 @orgcmd{C-@key{RET},org-insert-heading-respect-content}
1078 Just like @kbd{M-@key{RET}}, except when adding a new heading below the
1079 current heading, the new heading is placed after the body instead of before
1080 it. This command works from anywhere in the entry.
1081 @orgcmd{M-S-@key{RET},org-insert-todo-heading}
1082 @vindex org-treat-insert-todo-heading-as-state-change
1083 Insert new TODO entry with same level as current heading. See also the
1084 variable @code{org-treat-insert-todo-heading-as-state-change}.
1085 @orgcmd{C-S-@key{RET},org-insert-todo-heading-respect-content}
1086 Insert new TODO entry with same level as current heading. Like
1087 @kbd{C-@key{RET}}, the new headline will be inserted after the current
1088 subtree.
1089 @orgcmd{@key{TAB},org-cycle}
1090 In a new entry with no text yet, the first @key{TAB} demotes the entry to
1091 become a child of the previous one. The next @key{TAB} makes it a parent,
1092 and so on, all the way to top level. Yet another @key{TAB}, and you are back
1093 to the initial level.
1094 @orgcmd{M-@key{left},org-do-promote}
1095 Promote current heading by one level.
1096 @orgcmd{M-@key{right},org-do-demote}
1097 Demote current heading by one level.
1098 @orgcmd{M-S-@key{left},org-promote-subtree}
1099 Promote the current subtree by one level.
1100 @orgcmd{M-S-@key{right},org-demote-subtree}
1101 Demote the current subtree by one level.
1102 @orgcmd{M-S-@key{up},org-move-subtree-up}
1103 Move subtree up (swap with previous subtree of same
1104 level).
1105 @orgcmd{M-S-@key{down},org-move-subtree-down}
1106 Move subtree down (swap with next subtree of same level).
1107 @orgcmd{C-c C-x C-w,org-cut-subtree}
1108 Kill subtree, i.e. remove it from buffer but save in kill ring.
1109 With a numeric prefix argument N, kill N sequential subtrees.
1110 @orgcmd{C-c C-x M-w,org-copy-subtree}
1111 Copy subtree to kill ring. With a numeric prefix argument N, copy the N
1112 sequential subtrees.
1113 @orgcmd{C-c C-x C-y,org-paste-subtree}
1114 Yank subtree from kill ring. This does modify the level of the subtree to
1115 make sure the tree fits in nicely at the yank position. The yank level can
1116 also be specified with a numeric prefix argument, or by yanking after a
1117 headline marker like @samp{****}.
1118 @orgcmd{C-y,org-yank}
1119 @vindex org-yank-adjusted-subtrees
1120 @vindex org-yank-folded-subtrees
1121 Depending on the variables @code{org-yank-adjusted-subtrees} and
1122 @code{org-yank-folded-subtrees}, Org's internal @code{yank} command will
1123 paste subtrees folded and in a clever way, using the same command as @kbd{C-c
1124 C-x C-y}. With the default settings, no level adjustment will take place,
1125 but the yanked tree will be folded unless doing so would swallow text
1126 previously visible. Any prefix argument to this command will force a normal
1127 @code{yank} to be executed, with the prefix passed along. A good way to
1128 force a normal yank is @kbd{C-u C-y}. If you use @code{yank-pop} after a
1129 yank, it will yank previous kill items plainly, without adjustment and
1130 folding.
1131 @orgcmd{C-c C-x c,org-clone-subtree-with-time-shift}
1132 Clone a subtree by making a number of sibling copies of it. You will be
1133 prompted for the number of copies to make, and you can also specify if any
1134 timestamps in the entry should be shifted. This can be useful, for example,
1135 to create a number of tasks related to a series of lectures to prepare. For
1136 more details, see the docstring of the command
1137 @code{org-clone-subtree-with-time-shift}.
1138 @orgcmd{C-c C-w,org-refile}
1139 Refile entry or region to a different location. @xref{Refiling notes}.
1140 @orgcmd{C-c ^,org-sort-entries-or-items}
1141 Sort same-level entries. When there is an active region, all entries in the
1142 region will be sorted. Otherwise the children of the current headline are
1143 sorted. The command prompts for the sorting method, which can be
1144 alphabetically, numerically, by time (first timestamp with active preferred,
1145 creation time, scheduled time, deadline time), by priority, by TODO keyword
1146 (in the sequence the keywords have been defined in the setup) or by the value
1147 of a property. Reverse sorting is possible as well. You can also supply
1148 your own function to extract the sorting key. With a @kbd{C-u} prefix,
1149 sorting will be case-sensitive. With two @kbd{C-u C-u} prefixes, duplicate
1150 entries will also be removed.
1151 @orgcmd{C-x n s,org-narrow-to-subtree}
1152 Narrow buffer to current subtree.
1153 @orgcmd{C-x n w,widen}
1154 Widen buffer to remove narrowing.
1155 @orgcmd{C-c *,org-toggle-heading}
1156 Turn a normal line or plain list item into a headline (so that it becomes a
1157 subheading at its location). Also turn a headline into a normal line by
1158 removing the stars. If there is an active region, turn all lines in the
1159 region into headlines. If the first line in the region was an item, turn
1160 only the item lines into headlines. Finally, if the first line is a
1161 headline, remove the stars from all headlines in the region.
1162 @end table
1163
1164 @cindex region, active
1165 @cindex active region
1166 @cindex transient mark mode
1167 When there is an active region (Transient Mark mode), promotion and
1168 demotion work on all headlines in the region. To select a region of
1169 headlines, it is best to place both point and mark at the beginning of a
1170 line, mark at the beginning of the first headline, and point at the line
1171 just after the last headline to change. Note that when the cursor is
1172 inside a table (@pxref{Tables}), the Meta-Cursor keys have different
1173 functionality.
1174
1175
1176 @node Sparse trees, Plain lists, Structure editing, Document Structure
1177 @section Sparse trees
1178 @cindex sparse trees
1179 @cindex trees, sparse
1180 @cindex folding, sparse trees
1181 @cindex occur, command
1182
1183 @vindex org-show-hierarchy-above
1184 @vindex org-show-following-heading
1185 @vindex org-show-siblings
1186 @vindex org-show-entry-below
1187 An important feature of Org-mode is the ability to construct @emph{sparse
1188 trees} for selected information in an outline tree, so that the entire
1189 document is folded as much as possible, but the selected information is made
1190 visible along with the headline structure above it@footnote{See also the
1191 variables @code{org-show-hierarchy-above}, @code{org-show-following-heading},
1192 @code{org-show-siblings}, and @code{org-show-entry-below} for detailed
1193 control on how much context is shown around each match.}. Just try it out
1194 and you will see immediately how it works.
1195
1196 Org-mode contains several commands creating such trees, all these
1197 commands can be accessed through a dispatcher:
1198
1199 @table @asis
1200 @orgcmd{C-c /,org-sparse-tree}
1201 This prompts for an extra key to select a sparse-tree creating command.
1202 @kindex C-c / r
1203 @item C-c / r
1204 @vindex org-remove-highlights-with-change
1205 Occur. Prompts for a regexp and shows a sparse tree with all matches. If
1206 the match is in a headline, the headline is made visible. If the match is in
1207 the body of an entry, headline and body are made visible. In order to
1208 provide minimal context, also the full hierarchy of headlines above the match
1209 is shown, as well as the headline following the match. Each match is also
1210 highlighted; the highlights disappear when the buffer is changed by an
1211 editing command@footnote{This depends on the option
1212 @code{org-remove-highlights-with-change}}, or by pressing @kbd{C-c C-c}.
1213 When called with a @kbd{C-u} prefix argument, previous highlights are kept,
1214 so several calls to this command can be stacked.
1215 @end table
1216
1217 @noindent
1218 @vindex org-agenda-custom-commands
1219 For frequently used sparse trees of specific search strings, you can
1220 use the variable @code{org-agenda-custom-commands} to define fast
1221 keyboard access to specific sparse trees. These commands will then be
1222 accessible through the agenda dispatcher (@pxref{Agenda dispatcher}).
1223 For example:
1224
1225 @lisp
1226 (setq org-agenda-custom-commands
1227 '(("f" occur-tree "FIXME")))
1228 @end lisp
1229
1230 @noindent will define the key @kbd{C-c a f} as a shortcut for creating
1231 a sparse tree matching the string @samp{FIXME}.
1232
1233 The other sparse tree commands select headings based on TODO keywords,
1234 tags, or properties and will be discussed later in this manual.
1235
1236 @kindex C-c C-e v
1237 @cindex printing sparse trees
1238 @cindex visible text, printing
1239 To print a sparse tree, you can use the Emacs command
1240 @code{ps-print-buffer-with-faces} which does not print invisible parts
1241 of the document @footnote{This does not work under XEmacs, because
1242 XEmacs uses selective display for outlining, not text properties.}.
1243 Or you can use the command @kbd{C-c C-e v} to export only the visible
1244 part of the document and print the resulting file.
1245
1246 @node Plain lists, Drawers, Sparse trees, Document Structure
1247 @section Plain lists
1248 @cindex plain lists
1249 @cindex lists, plain
1250 @cindex lists, ordered
1251 @cindex ordered lists
1252
1253 Within an entry of the outline tree, hand-formatted lists can provide
1254 additional structure. They also provide a way to create lists of checkboxes
1255 (@pxref{Checkboxes}). Org supports editing such lists, and every exporter
1256 (@pxref{Exporting}) can parse and format them.
1257
1258 Org knows ordered lists, unordered lists, and description lists.
1259 @itemize @bullet
1260 @item
1261 @emph{Unordered} list items start with @samp{-}, @samp{+}, or
1262 @samp{*}@footnote{When using @samp{*} as a bullet, lines must be indented or
1263 they will be seen as top-level headlines. Also, when you are hiding leading
1264 stars to get a clean outline view, plain list items starting with a star are
1265 visually indistinguishable from true headlines. In short: even though
1266 @samp{*} is supported, it may be better to not use it for plain list items.}
1267 as bullets.
1268 @item
1269 @vindex org-plain-list-ordered-item-terminator
1270 @emph{Ordered} list items start with a numeral followed by either a period or
1271 a right parenthesis@footnote{You can filter out any of them by configuring
1272 @code{org-plain-list-ordered-item-terminator}.}, such as @samp{1.} or
1273 @samp{1)}. If you want a list to start a different value (e.g. 20), start
1274 the text of the item with @code{[@@20]}@footnote{If there's a checkbox in the
1275 item, the cookie must be put @emph{before} the checkbox.}. Those constructs
1276 can be used in any item of the list in order to enforce a particular
1277 numbering.
1278 @item
1279 @emph{Description} list items are unordered list items, and contain the
1280 separator @samp{ :: } to separate the description @emph{term} from the
1281 description.
1282 @end itemize
1283
1284 Items belonging to the same list must have the same indentation on the first
1285 line. In particular, if an ordered list reaches number @samp{10.}, then the
1286 2--digit numbers must be written left-aligned with the other numbers in the
1287 list.
1288
1289 @vindex org-list-ending-method
1290 @vindex org-list-end-regexp
1291 @vindex org-empty-line-terminates-plain-lists
1292 Two methods@footnote{To disable either of them, configure
1293 @code{org-list-ending-method}.} are provided to terminate lists. A list ends
1294 before the next line that is indented like the bullet/number or less, or it
1295 ends before two blank lines@footnote{See also
1296 @code{org-empty-line-terminates-plain-lists}.}. In both cases, all levels of
1297 the list are closed@footnote{So you cannot have a sublist, some text and then
1298 another sublist while still in the same top-level list item. This used to be
1299 possible, but it was only supported in the HTML exporter and difficult to
1300 manage with automatic indentation.}. For finer control, you can end lists
1301 with any pattern set in @code{org-list-end-regexp}. Here is an example:
1302
1303 @example
1304 @group
1305 ** Lord of the Rings
1306 My favorite scenes are (in this order)
1307 1. The attack of the Rohirrim
1308 2. Eowyn's fight with the witch king
1309 + this was already my favorite scene in the book
1310 + I really like Miranda Otto.
1311 3. Peter Jackson being shot by Legolas
1312 He makes a really funny face when it happens.
1313 - on DVD only
1314 But in the end, no individual scenes matter but the film as a whole.
1315 Important actors in this film are:
1316 - @b{Elijah Wood} :: He plays Frodo
1317 - @b{Sean Austin} :: He plays Sam, Frodo's friend. I still remember
1318 him very well from his role as Mikey Walsh in @i{The Goonies}.
1319 @end group
1320 @end example
1321
1322 Org supports these lists by tuning filling and wrapping commands to deal with
1323 them correctly@footnote{Org only changes the filling settings for Emacs. For
1324 XEmacs, you should use Kyle E. Jones' @file{filladapt.el}. To turn this on,
1325 put into @file{.emacs}: @code{(require 'filladapt)}}, and by exporting them
1326 properly (@pxref{Exporting}). Since indentation is what governs the
1327 structure of these lists, many structural constructs like @code{#+BEGIN_...}
1328 blocks can be indented to signal that they should be considered of a list
1329 item.
1330
1331 @vindex org-list-demote-modify-bullet
1332 If you find that using a different bullet for a sub-list (than that used for
1333 the current list-level) improves readability, customize the variable
1334 @code{org-list-demote-modify-bullet}.
1335
1336 @vindex org-list-automatic-rules
1337 The following commands act on items when the cursor is in the first line of
1338 an item (the line with the bullet or number). Some of them imply the
1339 application of automatic rules to keep list structure in tact. If some of
1340 these actions get in your way, configure @code{org-list-automatic-rules}
1341 to disable them individually.
1342
1343 @table @asis
1344 @orgcmd{@key{TAB},org-cycle}
1345 @vindex org-cycle-include-plain-lists
1346 Items can be folded just like headline levels. Normally this works only if
1347 the cursor is on a plain list item. For more details, see the variable
1348 @code{org-cycle-include-plain-lists}. to @code{integrate}, plain list items
1349 will be treated like low-level. The level of an item is then given by the
1350 indentation of the bullet/number. Items are always subordinate to real
1351 headlines, however; the hierarchies remain completely separated.
1352 @orgcmd{M-@key{RET},org-insert-heading}
1353 @vindex org-M-RET-may-split-line
1354 @vindex org-list-automatic-rules
1355 Insert new item at current level. With a prefix argument, force a new
1356 heading (@pxref{Structure editing}). If this command is used in the middle
1357 of a line, the line is @emph{split} and the rest of the line becomes the new
1358 item@footnote{If you do not want the line to be split, customize the variable
1359 @code{org-M-RET-may-split-line}.}. If this command is executed @emph{before
1360 item's body}, the new item is created @emph{before} the current item. If the
1361 command is executed in the white space before the text that is part of an
1362 item but does not contain the bullet, a bullet is added to the current line.
1363
1364 As a new item cannot be inserted in a structural construct (like an example
1365 or source code block) within a list, Org will instead insert it right before
1366 the structure, or return an error.
1367 @kindex M-S-@key{RET}
1368 @item M-S-@key{RET}
1369 Insert a new item with a checkbox (@pxref{Checkboxes}).
1370 @orgcmd{@key{TAB},org-cycle}
1371 In a new item with no text yet, the first @key{TAB} demotes the item to
1372 become a child of the previous one. Subsequents @key{TAB} move the item to
1373 meaningful levels in the list and eventually get it back to its initial
1374 position.
1375 @kindex S-@key{down}
1376 @item S-@key{up}
1377 @itemx S-@key{down}
1378 @cindex shift-selection-mode
1379 @vindex org-support-shift-select
1380 Jump to the previous/next item in the current list, but only if
1381 @code{org-support-shift-select} is off. If not, you can still use paragraph
1382 jumping commands like @kbd{C-@key{up}} and @kbd{C-@key{down}} to quite
1383 similar effect.
1384 @kindex M-S-@key{up}
1385 @kindex M-S-@key{down}
1386 @item M-S-@key{up}
1387 @itemx M-S-@key{down}
1388 Move the item including subitems up/down (swap with previous/next item
1389 of same indentation). If the list is ordered, renumbering is
1390 automatic.
1391 @kindex M-@key{left}
1392 @kindex M-@key{right}
1393 @item M-@key{left}
1394 @itemx M-@key{right}
1395 Decrease/increase the indentation of an item, leaving children alone.
1396 @kindex M-S-@key{left}
1397 @kindex M-S-@key{right}
1398 @item M-S-@key{left}
1399 @itemx M-S-@key{right}
1400 Decrease/increase the indentation of the item, including subitems.
1401 Initially, the item tree is selected based on current indentation. When
1402 these commands are executed several times in direct succession, the initially
1403 selected region is used, even if the new indentation would imply a different
1404 hierarchy. To use the new hierarchy, break the command chain with a cursor
1405 motion or so.
1406
1407 As a special case, using this command on the very first item of a list will
1408 move the whole list. This behavior can be disabled by configuring
1409 @code{org-list-automatic-rules}. The global indentation of a list has no
1410 influence on the text @emph{after} the list.
1411 @kindex C-c C-c
1412 @item C-c C-c
1413 If there is a checkbox (@pxref{Checkboxes}) in the item line, toggle the
1414 state of the checkbox. Also, makes sure that all the
1415 items on this list level use the same bullet and that the numbering of list
1416 items (if applicable) is correct.
1417 @kindex C-c -
1418 @vindex org-plain-list-ordered-item-terminator
1419 @vindex org-list-automatic-rules
1420 @item C-c -
1421 Cycle the entire list level through the different itemize/enumerate bullets
1422 (@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}) or a subset of them,
1423 depending on @code{org-plain-list-ordered-item-terminator}, the type of list,
1424 and its position@footnote{See @code{bullet} rule in
1425 @code{org-list-automatic-rules} for more information.}. With a numeric
1426 prefix argument N, select the Nth bullet from this list. If there is an
1427 active region when calling this, all lines will be converted to list items.
1428 If the first line already was a list item, any item markers will be removed
1429 from the list. Finally, even without an active region, a normal line will be
1430 converted into a list item.
1431 @kindex C-c *
1432 @item C-c *
1433 Turn a plain list item into a headline (so that it becomes a subheading at
1434 its location). @xref{Structure editing}, for a detailed explanation.
1435 @kindex S-@key{left}
1436 @kindex S-@key{right}
1437 @item S-@key{left}/@key{right}
1438 @vindex org-support-shift-select
1439 This command also cycles bullet styles when the cursor in on the bullet or
1440 anywhere in an item line, details depending on
1441 @code{org-support-shift-select}.
1442 @kindex C-c ^
1443 @item C-c ^
1444 Sort the plain list. You will be prompted for the sorting method:
1445 numerically, alphabetically, by time, or by custom function.
1446 @end table
1447
1448 @node Drawers, Blocks, Plain lists, Document Structure
1449 @section Drawers
1450 @cindex drawers
1451 @cindex #+DRAWERS
1452 @cindex visibility cycling, drawers
1453
1454 @vindex org-drawers
1455 Sometimes you want to keep information associated with an entry, but you
1456 normally don't want to see it. For this, Org-mode has @emph{drawers}.
1457 Drawers need to be configured with the variable
1458 @code{org-drawers}@footnote{You can define drawers on a per-file basis
1459 with a line like @code{#+DRAWERS: HIDDEN PROPERTIES STATE}}. Drawers
1460 look like this:
1461
1462 @example
1463 ** This is a headline
1464 Still outside the drawer
1465 :DRAWERNAME:
1466 This is inside the drawer.
1467 :END:
1468 After the drawer.
1469 @end example
1470
1471 Visibility cycling (@pxref{Visibility cycling}) on the headline will hide and
1472 show the entry, but keep the drawer collapsed to a single line. In order to
1473 look inside the drawer, you need to move the cursor to the drawer line and
1474 press @key{TAB} there. Org-mode uses the @code{PROPERTIES} drawer for
1475 storing properties (@pxref{Properties and Columns}), and you can also arrange
1476 for state change notes (@pxref{Tracking TODO state changes}) and clock times
1477 (@pxref{Clocking work time}) to be stored in a drawer @code{LOGBOOK}. If you
1478 want to store a quick note in the LOGBOOK drawer, in a similar way as this is
1479 done by state changes, use
1480
1481 @table @kbd
1482 @kindex C-c C-z
1483 @item C-c C-z
1484 Add a time-stamped note to the LOGBOOK drawer.
1485 @end table
1486
1487 @node Blocks, Footnotes, Drawers, Document Structure
1488 @section Blocks
1489
1490 @vindex org-hide-block-startup
1491 @cindex blocks, folding
1492 Org-mode uses begin...end blocks for various purposes from including source
1493 code examples (@pxref{Literal examples}) to capturing time logging
1494 information (@pxref{Clocking work time}). These blocks can be folded and
1495 unfolded by pressing TAB in the begin line. You can also get all blocks
1496 folded at startup by configuring the variable @code{org-hide-block-startup}
1497 or on a per-file basis by using
1498
1499 @cindex @code{hideblocks}, STARTUP keyword
1500 @cindex @code{nohideblocks}, STARTUP keyword
1501 @example
1502 #+STARTUP: hideblocks
1503 #+STARTUP: nohideblocks
1504 @end example
1505
1506 @node Footnotes, Orgstruct mode, Blocks, Document Structure
1507 @section Footnotes
1508 @cindex footnotes
1509
1510 Org-mode supports the creation of footnotes. In contrast to the
1511 @file{footnote.el} package, Org-mode's footnotes are designed for work on a
1512 larger document, not only for one-off documents like emails. The basic
1513 syntax is similar to the one used by @file{footnote.el}, i.e. a footnote is
1514 defined in a paragraph that is started by a footnote marker in square
1515 brackets in column 0, no indentation allowed. If you need a paragraph break
1516 inside a footnote, use the La@TeX{} idiom @samp{\par}. The footnote reference
1517 is simply the marker in square brackets, inside text. For example:
1518
1519 @example
1520 The Org homepage[fn:1] now looks a lot better than it used to.
1521 ...
1522 [fn:1] The link is: http://orgmode.org
1523 @end example
1524
1525 Org-mode extends the number-based syntax to @emph{named} footnotes and
1526 optional inline definition. Using plain numbers as markers (as
1527 @file{footnote.el} does) is supported for backward compatibility, but not
1528 encouraged because of possible conflicts with La@TeX{} snippets (@pxref{Embedded
1529 LaTeX}). Here are the valid references:
1530
1531 @table @code
1532 @item [1]
1533 A plain numeric footnote marker. Compatible with @file{footnote.el}, but not
1534 recommended because something like @samp{[1]} could easily be part of a code
1535 snippet.
1536 @item [fn:name]
1537 A named footnote reference, where @code{name} is a unique label word, or, for
1538 simplicity of automatic creation, a number.
1539 @item [fn:: This is the inline definition of this footnote]
1540 A La@TeX{}-like anonymous footnote where the definition is given directly at the
1541 reference point.
1542 @item [fn:name: a definition]
1543 An inline definition of a footnote, which also specifies a name for the note.
1544 Since Org allows multiple references to the same note, you can then use
1545 @code{[fn:name]} to create additional references.
1546 @end table
1547
1548 @vindex org-footnote-auto-label
1549 Footnote labels can be created automatically, or you can create names yourself.
1550 This is handled by the variable @code{org-footnote-auto-label} and its
1551 corresponding @code{#+STARTUP} keywords, see the docstring of that variable
1552 for details.
1553
1554 @noindent The following command handles footnotes:
1555
1556 @table @kbd
1557 @kindex C-c C-x f
1558 @item C-c C-x f
1559 The footnote action command.
1560
1561 When the cursor is on a footnote reference, jump to the definition. When it
1562 is at a definition, jump to the (first) reference.
1563
1564 @vindex org-footnote-define-inline
1565 @vindex org-footnote-section
1566 @vindex org-footnote-auto-adjust
1567 Otherwise, create a new footnote. Depending on the variable
1568 @code{org-footnote-define-inline}@footnote{The corresponding in-buffer
1569 setting is: @code{#+STARTUP: fninline} or @code{#+STARTUP: nofninline}}, the
1570 definition will be placed right into the text as part of the reference, or
1571 separately into the location determined by the variable
1572 @code{org-footnote-section}.
1573
1574 When this command is called with a prefix argument, a menu of additional
1575 options is offered:
1576 @example
1577 s @r{Sort the footnote definitions by reference sequence. During editing,}
1578 @r{Org makes no effort to sort footnote definitions into a particular}
1579 @r{sequence. If you want them sorted, use this command, which will}
1580 @r{also move entries according to @code{org-footnote-section}. Automatic}
1581 @r{sorting after each insertion/deletion can be configured using the}
1582 @r{variable @code{org-footnote-auto-adjust}.}
1583 r @r{Renumber the simple @code{fn:N} footnotes. Automatic renumbering}
1584 @r{after each insertion/deletion can be configured using the variable}
1585 @r{@code{org-footnote-auto-adjust}.}
1586 S @r{Short for first @code{r}, then @code{s} action.}
1587 n @r{Normalize the footnotes by collecting all definitions (including}
1588 @r{inline definitions) into a special section, and then numbering them}
1589 @r{in sequence. The references will then also be numbers. This is}
1590 @r{meant to be the final step before finishing a document (e.g. sending}
1591 @r{off an email). The exporters do this automatically, and so could}
1592 @r{something like @code{message-send-hook}.}
1593 d @r{Delete the footnote at point, and all definitions of and references}
1594 @r{to it.}
1595 @end example
1596 Depending on the variable @code{org-footnote-auto-adjust}@footnote{the
1597 corresponding in-buffer options are @code{fnadjust} and @code{nofnadjust}.},
1598 renumbering and sorting footnotes can be automatic after each insertion or
1599 deletion.
1600
1601 @kindex C-c C-c
1602 @item C-c C-c
1603 If the cursor is on a footnote reference, jump to the definition. If it is a
1604 the definition, jump back to the reference. When called at a footnote
1605 location with a prefix argument, offer the same menu as @kbd{C-c C-x f}.
1606 @kindex C-c C-o
1607 @kindex mouse-1
1608 @kindex mouse-2
1609 @item C-c C-o @r{or} mouse-1/2
1610 Footnote labels are also links to the corresponding definition/reference, and
1611 you can use the usual commands to follow these links.
1612 @end table
1613
1614 @node Orgstruct mode, , Footnotes, Document Structure
1615 @section The Orgstruct minor mode
1616 @cindex Orgstruct mode
1617 @cindex minor mode for structure editing
1618
1619 If you like the intuitive way the Org-mode structure editing and list
1620 formatting works, you might want to use these commands in other modes like
1621 Text mode or Mail mode as well. The minor mode @code{orgstruct-mode} makes
1622 this possible. Toggle the mode with @kbd{M-x orgstruct-mode}, or
1623 turn it on by default, for example in Mail mode, with one of:
1624
1625 @lisp
1626 (add-hook 'mail-mode-hook 'turn-on-orgstruct)
1627 (add-hook 'mail-mode-hook 'turn-on-orgstruct++)
1628 @end lisp
1629
1630 When this mode is active and the cursor is on a line that looks to Org like a
1631 headline or the first line of a list item, most structure editing commands
1632 will work, even if the same keys normally have different functionality in the
1633 major mode you are using. If the cursor is not in one of those special
1634 lines, Orgstruct mode lurks silently in the shadow. When you use
1635 @code{orgstruct++-mode}, Org will also export indentation and autofill
1636 settings into that mode, and detect item context after the first line of an
1637 item.
1638
1639 @node Tables, Hyperlinks, Document Structure, Top
1640 @chapter Tables
1641 @cindex tables
1642 @cindex editing tables
1643
1644 Org comes with a fast and intuitive table editor. Spreadsheet-like
1645 calculations are supported in connection with the Emacs @file{calc}
1646 package
1647 @ifinfo
1648 (@pxref{Top,Calc,,Calc,Gnu Emacs Calculator Manual}).
1649 @end ifinfo
1650 @ifnotinfo
1651 (see the Emacs Calculator manual for more information about the Emacs
1652 calculator).
1653 @end ifnotinfo
1654
1655 @menu
1656 * Built-in table editor:: Simple tables
1657 * Column width and alignment:: Overrule the automatic settings
1658 * Column groups:: Grouping to trigger vertical lines
1659 * Orgtbl mode:: The table editor as minor mode
1660 * The spreadsheet:: The table editor has spreadsheet capabilities
1661 * Org-Plot:: Plotting from org tables
1662 @end menu
1663
1664 @node Built-in table editor, Column width and alignment, Tables, Tables
1665 @section The built-in table editor
1666 @cindex table editor, built-in
1667
1668 Org makes it easy to format tables in plain ASCII. Any line with
1669 @samp{|} as the first non-whitespace character is considered part of a
1670 table. @samp{|} is also the column separator. A table might look like
1671 this:
1672
1673 @example
1674 | Name | Phone | Age |
1675 |-------+-------+-----|
1676 | Peter | 1234 | 17 |
1677 | Anna | 4321 | 25 |
1678 @end example
1679
1680 A table is re-aligned automatically each time you press @key{TAB} or
1681 @key{RET} or @kbd{C-c C-c} inside the table. @key{TAB} also moves to
1682 the next field (@key{RET} to the next row) and creates new table rows
1683 at the end of the table or before horizontal lines. The indentation
1684 of the table is set by the first line. Any line starting with
1685 @samp{|-} is considered as a horizontal separator line and will be
1686 expanded on the next re-align to span the whole table width. So, to
1687 create the above table, you would only type
1688
1689 @example
1690 |Name|Phone|Age|
1691 |-
1692 @end example
1693
1694 @noindent and then press @key{TAB} to align the table and start filling in
1695 fields. Even faster would be to type @code{|Name|Phone|Age} followed by
1696 @kbd{C-c @key{RET}}.
1697
1698 @vindex org-enable-table-editor
1699 @vindex org-table-auto-blank-field
1700 When typing text into a field, Org treats @key{DEL},
1701 @key{Backspace}, and all character keys in a special way, so that
1702 inserting and deleting avoids shifting other fields. Also, when
1703 typing @emph{immediately after the cursor was moved into a new field
1704 with @kbd{@key{TAB}}, @kbd{S-@key{TAB}} or @kbd{@key{RET}}}, the
1705 field is automatically made blank. If this behavior is too
1706 unpredictable for you, configure the variables
1707 @code{org-enable-table-editor} and @code{org-table-auto-blank-field}.
1708
1709 @table @kbd
1710 @tsubheading{Creation and conversion}
1711 @orgcmd{C-c |,org-table-create-or-convert-from-region}
1712 Convert the active region to table. If every line contains at least one
1713 TAB character, the function assumes that the material is tab separated.
1714 If every line contains a comma, comma-separated values (CSV) are assumed.
1715 If not, lines are split at whitespace into fields. You can use a prefix
1716 argument to force a specific separator: @kbd{C-u} forces CSV, @kbd{C-u
1717 C-u} forces TAB, and a numeric argument N indicates that at least N
1718 consecutive spaces, or alternatively a TAB will be the separator.
1719 @*
1720 If there is no active region, this command creates an empty Org
1721 table. But it's easier just to start typing, like
1722 @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
1723
1724 @tsubheading{Re-aligning and field motion}
1725 @orgcmd{C-c C-c,org-ctrl-c-ctrl-c}
1726 Re-align the table without moving the cursor.
1727 @c
1728 @orgcmd{<TAB>,org-cycle}
1729 Re-align the table, move to the next field. Creates a new row if
1730 necessary.
1731 @c
1732 @orgcmd{S-@key{TAB},org-shifttab}
1733 Re-align, move to previous field.
1734 @c
1735 @orgcmd{@key{RET},org-return}
1736 Re-align the table and move down to next row. Creates a new row if
1737 necessary. At the beginning or end of a line, @key{RET} still does
1738 NEWLINE, so it can be used to split a table.
1739 @c
1740 @kindex M-a
1741 @item M-a
1742 Move to beginning of the current table field, or on to the previous field.
1743 @kindex M-e
1744 @item M-e
1745 Move to end of the current table field, or on to the next field.
1746
1747 @tsubheading{Column and row editing}
1748 @kindex M-@key{left}
1749 @kindex M-@key{right}
1750 @item M-@key{left}
1751 @itemx M-@key{right}
1752 Move the current column left/right.
1753 @c
1754 @kindex M-S-@key{left}
1755 @item M-S-@key{left}
1756 Kill the current column.
1757 @c
1758 @kindex M-S-@key{right}
1759 @item M-S-@key{right}
1760 Insert a new column to the left of the cursor position.
1761 @c
1762 @kindex M-@key{up}
1763 @kindex M-@key{down}
1764 @item M-@key{up}
1765 @itemx M-@key{down}
1766 Move the current row up/down.
1767 @c
1768 @kindex M-S-@key{up}
1769 @item M-S-@key{up}
1770 Kill the current row or horizontal line.
1771 @c
1772 @kindex M-S-@key{down}
1773 @item M-S-@key{down}
1774 Insert a new row above the current row. With a prefix argument, the line is
1775 created below the current one.
1776 @c
1777 @kindex C-c -
1778 @item C-c -
1779 Insert a horizontal line below current row. With a prefix argument, the line
1780 is created above the current line.
1781 @c
1782 @kindex C-c @key{RET}
1783 @item C-c @key{RET}
1784 Insert a horizontal line below current row, and move the cursor into the row
1785 below that line.
1786 @c
1787 @kindex C-c ^
1788 @item C-c ^
1789 Sort the table lines in the region. The position of point indicates the
1790 column to be used for sorting, and the range of lines is the range
1791 between the nearest horizontal separator lines, or the entire table. If
1792 point is before the first column, you will be prompted for the sorting
1793 column. If there is an active region, the mark specifies the first line
1794 and the sorting column, while point should be in the last line to be
1795 included into the sorting. The command prompts for the sorting type
1796 (alphabetically, numerically, or by time). When called with a prefix
1797 argument, alphabetic sorting will be case-sensitive.
1798
1799 @tsubheading{Regions}
1800 @kindex C-c C-x M-w
1801 @item C-c C-x M-w
1802 Copy a rectangular region from a table to a special clipboard. Point and
1803 mark determine edge fields of the rectangle. If there is no active region,
1804 copy just the current field. The process ignores horizontal separator lines.
1805 @c
1806 @kindex C-c C-x C-w
1807 @item C-c C-x C-w
1808 Copy a rectangular region from a table to a special clipboard, and
1809 blank all fields in the rectangle. So this is the ``cut'' operation.
1810 @c
1811 @kindex C-c C-x C-y
1812 @item C-c C-x C-y
1813 Paste a rectangular region into a table.
1814 The upper left corner ends up in the current field. All involved fields
1815 will be overwritten. If the rectangle does not fit into the present table,
1816 the table is enlarged as needed. The process ignores horizontal separator
1817 lines.
1818 @c
1819 @kindex M-@key{RET}
1820 @itemx M-@kbd{RET}
1821 Wrap several fields in a column like a paragraph. If there is an active
1822 region, and both point and mark are in the same column, the text in the
1823 column is wrapped to minimum width for the given number of lines. A numeric
1824 prefix argument may be used to change the number of desired lines. If there
1825 is no region, the current field is split at the cursor position and the text
1826 fragment to the right of the cursor is prepended to the field one line
1827 down. If there is no region, but you specify a prefix argument, the current
1828 field is made blank, and the content is appended to the field above.
1829
1830 @tsubheading{Calculations}
1831 @cindex formula, in tables
1832 @cindex calculations, in tables
1833 @cindex region, active
1834 @cindex active region
1835 @cindex transient mark mode
1836 @kindex C-c +
1837 @item C-c +
1838 Sum the numbers in the current column, or in the rectangle defined by
1839 the active region. The result is shown in the echo area and can
1840 be inserted with @kbd{C-y}.
1841 @c
1842 @kindex S-@key{RET}
1843 @item S-@key{RET}
1844 @vindex org-table-copy-increment
1845 When current field is empty, copy from first non-empty field above. When not
1846 empty, copy current field down to next row and move cursor along with it.
1847 Depending on the variable @code{org-table-copy-increment}, integer field
1848 values will be incremented during copy. Integers that are too large will not
1849 be incremented. Also, a @code{0} prefix argument temporarily disables the
1850 increment. This key is also used by shift-selection and related modes
1851 (@pxref{Conflicts}).
1852
1853 @tsubheading{Miscellaneous}
1854 @kindex C-c `
1855 @item C-c `
1856 Edit the current field in a separate window. This is useful for fields that
1857 are not fully visible (@pxref{Column width and alignment}). When called with
1858 a @kbd{C-u} prefix, just make the full field visible, so that it can be
1859 edited in place.
1860 @c
1861 @item M-x org-table-import
1862 Import a file as a table. The table should be TAB or whitespace
1863 separated. Use, for example, to import a spreadsheet table or data
1864 from a database, because these programs generally can write
1865 TAB-separated text files. This command works by inserting the file into
1866 the buffer and then converting the region to a table. Any prefix
1867 argument is passed on to the converter, which uses it to determine the
1868 separator.
1869 @item C-c |
1870 Tables can also be imported by pasting tabular text into the Org
1871 buffer, selecting the pasted text with @kbd{C-x C-x} and then using the
1872 @kbd{C-c |} command (see above under @i{Creation and conversion}).
1873 @c
1874 @item M-x org-table-export
1875 @vindex org-table-export-default-format
1876 Export the table, by default as a TAB-separated file. Use for data
1877 exchange with, for example, spreadsheet or database programs. The format
1878 used to export the file can be configured in the variable
1879 @code{org-table-export-default-format}. You may also use properties
1880 @code{TABLE_EXPORT_FILE} and @code{TABLE_EXPORT_FORMAT} to specify the file
1881 name and the format for table export in a subtree. Org supports quite
1882 general formats for exported tables. The exporter format is the same as the
1883 format used by Orgtbl radio tables, see @ref{Translator functions}, for a
1884 detailed description.
1885 @end table
1886
1887 If you don't like the automatic table editor because it gets in your
1888 way on lines which you would like to start with @samp{|}, you can turn
1889 it off with
1890
1891 @lisp
1892 (setq org-enable-table-editor nil)
1893 @end lisp
1894
1895 @noindent Then the only table command that still works is
1896 @kbd{C-c C-c} to do a manual re-align.
1897
1898 @node Column width and alignment, Column groups, Built-in table editor, Tables
1899 @section Column width and alignment
1900 @cindex narrow columns in tables
1901 @cindex alignment in tables
1902
1903 The width of columns is automatically determined by the table editor. And
1904 also the alignment of a column is determined automatically from the fraction
1905 of number-like versus non-number fields in the column.
1906
1907 Sometimes a single field or a few fields need to carry more text, leading to
1908 inconveniently wide columns. Or maybe you want to make a table with several
1909 columns having a fixed width, regardless of content. To set@footnote{This
1910 feature does not work on XEmacs.} the width of a column, one field anywhere
1911 in the column may contain just the string @samp{<N>} where @samp{N} is an
1912 integer specifying the width of the column in characters. The next re-align
1913 will then set the width of this column to this value.
1914
1915 @example
1916 @group
1917 |---+------------------------------| |---+--------|
1918 | | | | | <6> |
1919 | 1 | one | | 1 | one |
1920 | 2 | two | ----\ | 2 | two |
1921 | 3 | This is a long chunk of text | ----/ | 3 | This=> |
1922 | 4 | four | | 4 | four |
1923 |---+------------------------------| |---+--------|
1924 @end group
1925 @end example
1926
1927 @noindent
1928 Fields that are wider become clipped and end in the string @samp{=>}.
1929 Note that the full text is still in the buffer, it is only invisible.
1930 To see the full text, hold the mouse over the field---a tool-tip window
1931 will show the full content. To edit such a field, use the command
1932 @kbd{C-c `} (that is @kbd{C-c} followed by the backquote). This will
1933 open a new window with the full field. Edit it and finish with @kbd{C-c
1934 C-c}.
1935
1936 @vindex org-startup-align-all-tables
1937 When visiting a file containing a table with narrowed columns, the
1938 necessary character hiding has not yet happened, and the table needs to
1939 be aligned before it looks nice. Setting the option
1940 @code{org-startup-align-all-tables} will realign all tables in a file
1941 upon visiting, but also slow down startup. You can also set this option
1942 on a per-file basis with:
1943
1944 @example
1945 #+STARTUP: align
1946 #+STARTUP: noalign
1947 @end example
1948
1949 If you would like to overrule the automatic alignment of number-rich columns
1950 to the right and of string-rich column to the left, you and use @samp{<r>},
1951 @samp{c}@footnote{Centering does not work inside Emacs, but it does have an
1952 effect when exporting to HTML.} or @samp{<l>} in a similar fashion. You may
1953 also combine alignment and field width like this: @samp{<l10>}.
1954
1955 Lines which only contain these formatting cookies will be removed
1956 automatically when exporting the document.
1957
1958 @node Column groups, Orgtbl mode, Column width and alignment, Tables
1959 @section Column groups
1960 @cindex grouping columns in tables
1961
1962 When Org exports tables, it does so by default without vertical
1963 lines because that is visually more satisfying in general. Occasionally
1964 however, vertical lines can be useful to structure a table into groups
1965 of columns, much like horizontal lines can do for groups of rows. In
1966 order to specify column groups, you can use a special row where the
1967 first field contains only @samp{/}. The further fields can either
1968 contain @samp{<} to indicate that this column should start a group,
1969 @samp{>} to indicate the end of a column, or @samp{<>} to make a column
1970 a group of its own. Boundaries between column groups will upon export be
1971 marked with vertical lines. Here is an example:
1972
1973 @example
1974 | N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
1975 |---+-----+-----+-----+---------+------------|
1976 | / | < | | > | < | > |
1977 | 1 | 1 | 1 | 1 | 1 | 1 |
1978 | 2 | 4 | 8 | 16 | 1.4142 | 1.1892 |
1979 | 3 | 9 | 27 | 81 | 1.7321 | 1.3161 |
1980 |---+-----+-----+-----+---------+------------|
1981 #+TBLFM: $2=$1^2::$3=$1^3::$4=$1^4::$5=sqrt($1)::$6=sqrt(sqrt(($1)))
1982 @end example
1983
1984 It is also sufficient to just insert the column group starters after
1985 every vertical line you would like to have:
1986
1987 @example
1988 | N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
1989 |----+-----+-----+-----+---------+------------|
1990 | / | < | | | < | |
1991 @end example
1992
1993 @node Orgtbl mode, The spreadsheet, Column groups, Tables
1994 @section The Orgtbl minor mode
1995 @cindex Orgtbl mode
1996 @cindex minor mode for tables
1997
1998 If you like the intuitive way the Org table editor works, you
1999 might also want to use it in other modes like Text mode or Mail mode.
2000 The minor mode Orgtbl mode makes this possible. You can always toggle
2001 the mode with @kbd{M-x orgtbl-mode}. To turn it on by default, for
2002 example in mail mode, use
2003
2004 @lisp
2005 (add-hook 'mail-mode-hook 'turn-on-orgtbl)
2006 @end lisp
2007
2008 Furthermore, with some special setup, it is possible to maintain tables
2009 in arbitrary syntax with Orgtbl mode. For example, it is possible to
2010 construct La@TeX{} tables with the underlying ease and power of
2011 Orgtbl mode, including spreadsheet capabilities. For details, see
2012 @ref{Tables in arbitrary syntax}.
2013
2014 @node The spreadsheet, Org-Plot, Orgtbl mode, Tables
2015 @section The spreadsheet
2016 @cindex calculations, in tables
2017 @cindex spreadsheet capabilities
2018 @cindex @file{calc} package
2019
2020 The table editor makes use of the Emacs @file{calc} package to implement
2021 spreadsheet-like capabilities. It can also evaluate Emacs Lisp forms to
2022 derive fields from other fields. While fully featured, Org's implementation
2023 is not identical to other spreadsheets. For example, Org knows the concept
2024 of a @emph{column formula} that will be applied to all non-header fields in a
2025 column without having to copy the formula to each relevant field. There is
2026 also a formula debugger, and a formula editor with features for highlighting
2027 fields in the table corresponding to the references at the point in the
2028 formula, moving these references by arrow keys
2029
2030 @menu
2031 * References:: How to refer to another field or range
2032 * Formula syntax for Calc:: Using Calc to compute stuff
2033 * Formula syntax for Lisp:: Writing formulas in Emacs Lisp
2034 * Field formulas:: Formulas valid for a single field
2035 * Column formulas:: Formulas valid for an entire column
2036 * Editing and debugging formulas:: Fixing formulas
2037 * Updating the table:: Recomputing all dependent fields
2038 * Advanced features:: Field names, parameters and automatic recalc
2039 @end menu
2040
2041 @node References, Formula syntax for Calc, The spreadsheet, The spreadsheet
2042 @subsection References
2043 @cindex references
2044
2045 To compute fields in the table from other fields, formulas must
2046 reference other fields or ranges. In Org, fields can be referenced
2047 by name, by absolute coordinates, and by relative coordinates. To find
2048 out what the coordinates of a field are, press @kbd{C-c ?} in that
2049 field, or press @kbd{C-c @}} to toggle the display of a grid.
2050
2051 @subsubheading Field references
2052 @cindex field references
2053 @cindex references, to fields
2054
2055 Formulas can reference the value of another field in two ways. Like in
2056 any other spreadsheet, you may reference fields with a letter/number
2057 combination like @code{B3}, meaning the 2nd field in the 3rd row.
2058 @c Such references are always fixed to that field, they don't change
2059 @c when you copy and paste a formula to a different field. So
2060 @c Org's @code{B3} behaves like @code{$B$3} in other spreadsheets.
2061
2062 @noindent
2063 Org also uses another, more general operator that looks like this:
2064 @example
2065 @@@var{row}$@var{column}
2066 @end example
2067
2068 @noindent
2069 Column references can be absolute like @samp{1}, @samp{2},...@samp{@var{N}},
2070 or relative to the current column like @samp{+1} or @samp{-2}.
2071
2072 The row specification only counts data lines and ignores horizontal
2073 separator lines (hlines). You can use absolute row numbers
2074 @samp{1}...@samp{@var{N}}, and row numbers relative to the current row like
2075 @samp{+3} or @samp{-1}. Or specify the row relative to one of the
2076 hlines: @samp{I} refers to the first hline@footnote{Note that only
2077 hlines are counted that @emph{separate} table lines. If the table
2078 starts with a hline above the header, it does not count.}, @samp{II} to
2079 the second, etc@. @samp{-I} refers to the first such line above the
2080 current line, @samp{+I} to the first such line below the current line.
2081 You can also write @samp{III+2} which is the second data line after the
2082 third hline in the table.
2083
2084 @samp{0} refers to the current row and column. Also, if you omit
2085 either the column or the row part of the reference, the current
2086 row/column is implied.
2087
2088 Org's references with @emph{unsigned} numbers are fixed references
2089 in the sense that if you use the same reference in the formula for two
2090 different fields, the same field will be referenced each time.
2091 Org's references with @emph{signed} numbers are floating
2092 references because the same reference operator can reference different
2093 fields depending on the field being calculated by the formula.
2094
2095 As a special case, references like @samp{$LR5} and @samp{$LR12} can be used
2096 to refer in a stable way to the 5th and 12th field in the last row of the
2097 table.
2098
2099 Here are a few examples:
2100
2101 @example
2102 @@2$3 @r{2nd row, 3rd column}
2103 C2 @r{same as previous}
2104 $5 @r{column 5 in the current row}
2105 E& @r{same as previous}
2106 @@2 @r{current column, row 2}
2107 @@-1$-3 @r{the field one row up, three columns to the left}
2108 @@-I$2 @r{field just under hline above current row, column 2}
2109 @end example
2110
2111 @subsubheading Range references
2112 @cindex range references
2113 @cindex references, to ranges
2114
2115 You may reference a rectangular range of fields by specifying two field
2116 references connected by two dots @samp{..}. If both fields are in the
2117 current row, you may simply use @samp{$2..$7}, but if at least one field
2118 is in a different row, you need to use the general @code{@@row$column}
2119 format at least for the first field (i.e the reference must start with
2120 @samp{@@} in order to be interpreted correctly). Examples:
2121
2122 @example
2123 $1..$3 @r{First three fields in the current row.}
2124 $P..$Q @r{Range, using column names (see under Advanced)}
2125 @@2$1..@@4$3 @r{6 fields between these two fields.}
2126 A2..C4 @r{Same as above.}
2127 @@-1$-2..@@-1 @r{3 numbers from the column to the left, 2 up to current row}
2128 @end example
2129
2130 @noindent Range references return a vector of values that can be fed
2131 into Calc vector functions. Empty fields in ranges are normally
2132 suppressed, so that the vector contains only the non-empty fields (but
2133 see the @samp{E} mode switch below). If there are no non-empty fields,
2134 @samp{[0]} is returned to avoid syntax errors in formulas.
2135
2136 @subsubheading Field coordinates in formulas
2137 @cindex field coordinates
2138 @cindex coordinates, of field
2139 @cindex row, of field coordinates
2140 @cindex column, of field coordinates
2141
2142 For Calc formulas and Lisp formulas @code{@@#} and @code{$#} can be used to
2143 get the row or column number of the field where the formula result goes.
2144 The traditional Lisp formula equivalents are @code{org-table-current-dline}
2145 and @code{org-table-current-column}. Examples:
2146
2147 @example
2148 if(@@# % 2, $#, string("")) @r{column number on odd lines only}
2149 $3 = remote(FOO, @@@@#$2) @r{copy column 2 from table FOO into}
2150 @r{column 3 of the current table}
2151 @end example
2152
2153 @noindent For the second example, table FOO must have at least as many rows
2154 as the current table. Inefficient@footnote{The computation time scales as
2155 O(N^2) because table FOO is parsed for each field to be copied.} for large
2156 number of rows.
2157
2158 @subsubheading Named references
2159 @cindex named references
2160 @cindex references, named
2161 @cindex name, of column or field
2162 @cindex constants, in calculations
2163 @cindex #+CONSTANTS
2164
2165 @vindex org-table-formula-constants
2166 @samp{$name} is interpreted as the name of a column, parameter or
2167 constant. Constants are defined globally through the variable
2168 @code{org-table-formula-constants}, and locally (for the file) through a
2169 line like
2170
2171 @example
2172 #+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6
2173 @end example
2174
2175 @noindent
2176 @vindex constants-unit-system
2177 @pindex constants.el
2178 Also properties (@pxref{Properties and Columns}) can be used as
2179 constants in table formulas: for a property @samp{:Xyz:} use the name
2180 @samp{$PROP_Xyz}, and the property will be searched in the current
2181 outline entry and in the hierarchy above it. If you have the
2182 @file{constants.el} package, it will also be used to resolve constants,
2183 including natural constants like @samp{$h} for Planck's constant, and
2184 units like @samp{$km} for kilometers@footnote{@file{constants.el} can
2185 supply the values of constants in two different unit systems, @code{SI}
2186 and @code{cgs}. Which one is used depends on the value of the variable
2187 @code{constants-unit-system}. You can use the @code{#+STARTUP} options
2188 @code{constSI} and @code{constcgs} to set this value for the current
2189 buffer.}. Column names and parameters can be specified in special table
2190 lines. These are described below, see @ref{Advanced features}. All
2191 names must start with a letter, and further consist of letters and
2192 numbers.
2193
2194 @subsubheading Remote references
2195 @cindex remote references
2196 @cindex references, remote
2197 @cindex references, to a different table
2198 @cindex name, of column or field
2199 @cindex constants, in calculations
2200 @cindex #+TBLNAME
2201
2202 You may also reference constants, fields and ranges from a different table,
2203 either in the current file or even in a different file. The syntax is
2204
2205 @example
2206 remote(NAME-OR-ID,REF)
2207 @end example
2208
2209 @noindent
2210 where NAME can be the name of a table in the current file as set by a
2211 @code{#+TBLNAME: NAME} line before the table. It can also be the ID of an
2212 entry, even in a different file, and the reference then refers to the first
2213 table in that entry. REF is an absolute field or range reference as
2214 described above for example @code{@@3$3} or @code{$somename}, valid in the
2215 referenced table.
2216
2217 @node Formula syntax for Calc, Formula syntax for Lisp, References, The spreadsheet
2218 @subsection Formula syntax for Calc
2219 @cindex formula syntax, Calc
2220 @cindex syntax, of formulas
2221
2222 A formula can be any algebraic expression understood by the Emacs
2223 @file{Calc} package. @b{Note that @file{calc} has the
2224 non-standard convention that @samp{/} has lower precedence than
2225 @samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.} Before
2226 evaluation by @code{calc-eval} (@pxref{Calling Calc from
2227 Your Programs,calc-eval,Calling Calc from Your Lisp Programs,Calc,GNU
2228 Emacs Calc Manual}),
2229 @c FIXME: The link to the Calc manual in HTML does not work.
2230 variable substitution takes place according to the rules described above.
2231 @cindex vectors, in table calculations
2232 The range vectors can be directly fed into the Calc vector functions
2233 like @samp{vmean} and @samp{vsum}.
2234
2235 @cindex format specifier
2236 @cindex mode, for @file{calc}
2237 @vindex org-calc-default-modes
2238 A formula can contain an optional mode string after a semicolon. This
2239 string consists of flags to influence Calc and other modes during
2240 execution. By default, Org uses the standard Calc modes (precision
2241 12, angular units degrees, fraction and symbolic modes off). The display
2242 format, however, has been changed to @code{(float 8)} to keep tables
2243 compact. The default settings can be configured using the variable
2244 @code{org-calc-default-modes}.
2245
2246 @example
2247 p20 @r{set the internal Calc calculation precision to 20 digits}
2248 n3 s3 e2 f4 @r{Normal, scientific, engineering, or fixed}
2249 @r{format of the result of Calc passed back to Org.}
2250 @r{Calc formatting is unlimited in precision as}
2251 @r{long as the Calc calculation precision is greater.}
2252 D R @r{angle modes: degrees, radians}
2253 F S @r{fraction and symbolic modes}
2254 N @r{interpret all fields as numbers, use 0 for non-numbers}
2255 T @r{force text interpretation}
2256 E @r{keep empty fields in ranges}
2257 L @r{literal}
2258 @end example
2259
2260 @noindent
2261 Unless you use large integer numbers or high-precision-calculation
2262 and -display for floating point numbers you may alternatively provide a
2263 @code{printf} format specifier to reformat the Calc result after it has been
2264 passed back to Org instead of letting Calc already do the
2265 formatting@footnote{The @code{printf} reformatting is limited in precision
2266 because the value passed to it is converted into an @code{integer} or
2267 @code{double}. The @code{integer} is limited in size by truncating the
2268 signed value to 32 bits. The @code{double} is limited in precision to 64
2269 bits overall which leaves approximately 16 significant decimal digits.}.
2270 A few examples:
2271
2272 @example
2273 $1+$2 @r{Sum of first and second field}
2274 $1+$2;%.2f @r{Same, format result to two decimals}
2275 exp($2)+exp($1) @r{Math functions can be used}
2276 $0;%.1f @r{Reformat current cell to 1 decimal}
2277 ($3-32)*5/9 @r{Degrees F -> C conversion}
2278 $c/$1/$cm @r{Hz -> cm conversion, using @file{constants.el}}
2279 tan($1);Dp3s1 @r{Compute in degrees, precision 3, display SCI 1}
2280 sin($1);Dp3%.1e @r{Same, but use printf specifier for display}
2281 vmean($2..$7) @r{Compute column range mean, using vector function}
2282 vmean($2..$7);EN @r{Same, but treat empty fields as 0}
2283 taylor($3,x=7,2) @r{taylor series of $3, at x=7, second degree}
2284 @end example
2285
2286 Calc also contains a complete set of logical operations. For example
2287
2288 @example
2289 if($1<20,teen,string("")) @r{``teen'' if age $1 less than 20, else empty}
2290 @end example
2291
2292 @node Formula syntax for Lisp, Field formulas, Formula syntax for Calc, The spreadsheet
2293 @subsection Emacs Lisp forms as formulas
2294 @cindex Lisp forms, as table formulas
2295
2296 It is also possible to write a formula in Emacs Lisp; this can be useful
2297 for string manipulation and control structures, if Calc's
2298 functionality is not enough. If a formula starts with a single-quote
2299 followed by an opening parenthesis, then it is evaluated as a Lisp form.
2300 The evaluation should return either a string or a number. Just as with
2301 @file{calc} formulas, you can specify modes and a printf format after a
2302 semicolon. With Emacs Lisp forms, you need to be conscious about the way
2303 field references are interpolated into the form. By default, a
2304 reference will be interpolated as a Lisp string (in double-quotes)
2305 containing the field. If you provide the @samp{N} mode switch, all
2306 referenced elements will be numbers (non-number fields will be zero) and
2307 interpolated as Lisp numbers, without quotes. If you provide the
2308 @samp{L} flag, all fields will be interpolated literally, without quotes.
2309 I.e., if you want a reference to be interpreted as a string by the Lisp
2310 form, enclose the reference operator itself in double-quotes, like
2311 @code{"$3"}. Ranges are inserted as space-separated fields, so you can
2312 embed them in list or vector syntax. A few examples, note how the
2313 @samp{N} mode is used when we do computations in Lisp.
2314
2315 @example
2316 @r{Swap the first two characters of the content of column 1}
2317 '(concat (substring $1 1 2) (substring $1 0 1) (substring $1 2))
2318 @r{Add columns 1 and 2, equivalent to Calc's @code{$1+$2}}
2319 '(+ $1 $2);N
2320 @r{Compute the sum of columns 1-4, like Calc's @code{vsum($1..$4)}}
2321 '(apply '+ '($1..$4));N
2322 @end example
2323
2324 @node Field formulas, Column formulas, Formula syntax for Lisp, The spreadsheet
2325 @subsection Field formulas
2326 @cindex field formula
2327 @cindex formula, for individual table field
2328
2329 To assign a formula to a particular field, type it directly into the
2330 field, preceded by @samp{:=}, for example @samp{:=$1+$2}. When you
2331 press @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in
2332 the field, the formula will be stored as the formula for this field,
2333 evaluated, and the current field replaced with the result.
2334
2335 @cindex #+TBLFM
2336 Formulas are stored in a special line starting with @samp{#+TBLFM:}
2337 directly below the table. If you typed the equation in the 4th field of
2338 the 3rd data line in the table, the formula will look like
2339 @samp{@@3$4=$1+$2}. When inserting/deleting/swapping column and rows
2340 with the appropriate commands, @i{absolute references} (but not relative
2341 ones) in stored formulas are modified in order to still reference the
2342 same field. Of course this is not true if you edit the table structure
2343 with normal editing commands---then you must fix the equations yourself.
2344 The left-hand side of a formula may also be a named field (@pxref{Advanced
2345 features}), or a last-row reference like @samp{$LR3}.
2346
2347 Instead of typing an equation into the field, you may also use the
2348 following command
2349
2350 @table @kbd
2351 @kindex C-u C-c =
2352 @item C-u C-c =
2353 Install a new formula for the current field. The command prompts for a
2354 formula with default taken from the @samp{#+TBLFM:} line, applies
2355 it to the current field, and stores it.
2356 @end table
2357
2358 @node Column formulas, Editing and debugging formulas, Field formulas, The spreadsheet
2359 @subsection Column formulas
2360 @cindex column formula
2361 @cindex formula, for table column
2362
2363 Often in a table, the same formula should be used for all fields in a
2364 particular column. Instead of having to copy the formula to all fields
2365 in that column, Org allows you to assign a single formula to an entire
2366 column. If the table contains horizontal separator hlines, everything
2367 before the first such line is considered part of the table @emph{header}
2368 and will not be modified by column formulas.
2369
2370 To assign a formula to a column, type it directly into any field in the
2371 column, preceded by an equal sign, like @samp{=$1+$2}. When you press
2372 @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the field,
2373 the formula will be stored as the formula for the current column, evaluated
2374 and the current field replaced with the result. If the field contains only
2375 @samp{=}, the previously stored formula for this column is used. For each
2376 column, Org will only remember the most recently used formula. In the
2377 @samp{#+TBLFM:} line, column formulas will look like @samp{$4=$1+$2}. The left-hand
2378 side of a column formula cannot currently be the name of column, it
2379 must be the numeric column reference.
2380
2381 Instead of typing an equation into the field, you may also use the
2382 following command:
2383
2384 @table @kbd
2385 @kindex C-c =
2386 @item C-c =
2387 Install a new formula for the current column and replace current field with
2388 the result of the formula. The command prompts for a formula, with default
2389 taken from the @samp{#+TBLFM} line, applies it to the current field and
2390 stores it. With a numeric prefix argument(e.g. @kbd{C-5 C-c =}) the command
2391 will apply it to that many consecutive fields in the current column.
2392 @end table
2393
2394 @node Editing and debugging formulas, Updating the table, Column formulas, The spreadsheet
2395 @subsection Editing and debugging formulas
2396 @cindex formula editing
2397 @cindex editing, of table formulas
2398
2399 @vindex org-table-use-standard-references
2400 You can edit individual formulas in the minibuffer or directly in the
2401 field. Org can also prepare a special buffer with all active
2402 formulas of a table. When offering a formula for editing, Org
2403 converts references to the standard format (like @code{B3} or @code{D&})
2404 if possible. If you prefer to only work with the internal format (like
2405 @code{@@3$2} or @code{$4}), configure the variable
2406 @code{org-table-use-standard-references}.
2407
2408 @table @kbd
2409 @kindex C-c =
2410 @kindex C-u C-c =
2411 @item C-c =
2412 @itemx C-u C-c =
2413 Edit the formula associated with the current column/field in the
2414 minibuffer. See @ref{Column formulas}, and @ref{Field formulas}.
2415 @kindex C-u C-u C-c =
2416 @item C-u C-u C-c =
2417 Re-insert the active formula (either a
2418 field formula, or a column formula) into the current field, so that you
2419 can edit it directly in the field. The advantage over editing in the
2420 minibuffer is that you can use the command @kbd{C-c ?}.
2421 @kindex C-c ?
2422 @item C-c ?
2423 While editing a formula in a table field, highlight the field(s)
2424 referenced by the reference at the cursor position in the formula.
2425 @kindex C-c @}
2426 @item C-c @}
2427 Toggle the display of row and column numbers for a table, using
2428 overlays. These are updated each time the table is aligned; you can
2429 force it with @kbd{C-c C-c}.
2430 @kindex C-c @{
2431 @item C-c @{
2432 Toggle the formula debugger on and off. See below.
2433 @kindex C-c '
2434 @item C-c '
2435 Edit all formulas for the current table in a special buffer, where the
2436 formulas will be displayed one per line. If the current field has an
2437 active formula, the cursor in the formula editor will mark it.
2438 While inside the special buffer, Org will automatically highlight
2439 any field or range reference at the cursor position. You may edit,
2440 remove and add formulas, and use the following commands:
2441 @table @kbd
2442 @kindex C-c C-c
2443 @kindex C-x C-s
2444 @item C-c C-c
2445 @itemx C-x C-s
2446 Exit the formula editor and store the modified formulas. With @kbd{C-u}
2447 prefix, also apply the new formulas to the entire table.
2448 @kindex C-c C-q
2449 @item C-c C-q
2450 Exit the formula editor without installing changes.
2451 @kindex C-c C-r
2452 @item C-c C-r
2453 Toggle all references in the formula editor between standard (like
2454 @code{B3}) and internal (like @code{@@3$2}).
2455 @kindex @key{TAB}
2456 @item @key{TAB}
2457 Pretty-print or indent Lisp formula at point. When in a line containing
2458 a Lisp formula, format the formula according to Emacs Lisp rules.
2459 Another @key{TAB} collapses the formula back again. In the open
2460 formula, @key{TAB} re-indents just like in Emacs Lisp mode.
2461 @kindex M-@key{TAB}
2462 @item M-@key{TAB}
2463 Complete Lisp symbols, just like in Emacs Lisp mode.
2464 @kindex S-@key{up}
2465 @kindex S-@key{down}
2466 @kindex S-@key{left}
2467 @kindex S-@key{right}
2468 @item S-@key{up}/@key{down}/@key{left}/@key{right}
2469 Shift the reference at point. For example, if the reference is
2470 @code{B3} and you press @kbd{S-@key{right}}, it will become @code{C3}.
2471 This also works for relative references and for hline references.
2472 @kindex M-S-@key{up}
2473 @kindex M-S-@key{down}
2474 @item M-S-@key{up}/@key{down}
2475 Move the test line for column formulas in the Org buffer up and
2476 down.
2477 @kindex M-@key{up}
2478 @kindex M-@key{down}
2479 @item M-@key{up}/@key{down}
2480 Scroll the window displaying the table.
2481 @kindex C-c @}
2482 @item C-c @}
2483 Turn the coordinate grid in the table on and off.
2484 @end table
2485 @end table
2486
2487 Making a table field blank does not remove the formula associated with
2488 the field, because that is stored in a different line (the @samp{#+TBLFM}
2489 line)---during the next recalculation the field will be filled again.
2490 To remove a formula from a field, you have to give an empty reply when
2491 prompted for the formula, or to edit the @samp{#+TBLFM} line.
2492
2493 @kindex C-c C-c
2494 You may edit the @samp{#+TBLFM} directly and re-apply the changed
2495 equations with @kbd{C-c C-c} in that line or with the normal
2496 recalculation commands in the table.
2497
2498 @subsubheading Debugging formulas
2499 @cindex formula debugging
2500 @cindex debugging, of table formulas
2501 When the evaluation of a formula leads to an error, the field content
2502 becomes the string @samp{#ERROR}. If you would like see what is going
2503 on during variable substitution and calculation in order to find a bug,
2504 turn on formula debugging in the @code{Tbl} menu and repeat the
2505 calculation, for example by pressing @kbd{C-u C-u C-c = @key{RET}} in a
2506 field. Detailed information will be displayed.
2507
2508 @node Updating the table, Advanced features, Editing and debugging formulas, The spreadsheet
2509 @subsection Updating the table
2510 @cindex recomputing table fields
2511 @cindex updating, table
2512
2513 Recalculation of a table is normally not automatic, but needs to be
2514 triggered by a command. See @ref{Advanced features}, for a way to make
2515 recalculation at least semi-automatic.
2516
2517 In order to recalculate a line of a table or the entire table, use the
2518 following commands:
2519
2520 @table @kbd
2521 @kindex C-c *
2522 @item C-c *
2523 Recalculate the current row by first applying the stored column formulas
2524 from left to right, and all field formulas in the current row.
2525 @c
2526 @kindex C-u C-c *
2527 @item C-u C-c *
2528 @kindex C-u C-c C-c
2529 @itemx C-u C-c C-c
2530 Recompute the entire table, line by line. Any lines before the first
2531 hline are left alone, assuming that these are part of the table header.
2532 @c
2533 @kindex C-u C-u C-c *
2534 @kindex C-u C-u C-c C-c
2535 @item C-u C-u C-c *
2536 @itemx C-u C-u C-c C-c
2537 Iterate the table by recomputing it until no further changes occur.
2538 This may be necessary if some computed fields use the value of other
2539 fields that are computed @i{later} in the calculation sequence.
2540 @item M-x org-table-recalculate-buffer-tables
2541 Recompute all tables in the current buffer.
2542 @item M-x org-table-iterate-buffer-tables
2543 Iterate all tables in the current buffer, in order to converge table-to-table
2544 dependencies.
2545 @end table
2546
2547 @node Advanced features, , Updating the table, The spreadsheet
2548 @subsection Advanced features
2549
2550 If you want the recalculation of fields to happen automatically, or if
2551 you want to be able to assign @i{names} to fields and columns, you need
2552 to reserve the first column of the table for special marking characters.
2553 @table @kbd
2554 @kindex C-#
2555 @item C-#
2556 Rotate the calculation mark in first column through the states @samp{ },
2557 @samp{#}, @samp{*}, @samp{!}, @samp{$}. When there is an active region,
2558 change all marks in the region.
2559 @end table
2560
2561 Here is an example of a table that collects exam results of students and
2562 makes use of these features:
2563
2564 @example
2565 @group
2566 |---+---------+--------+--------+--------+-------+------|
2567 | | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
2568 |---+---------+--------+--------+--------+-------+------|
2569 | ! | | P1 | P2 | P3 | Tot | |
2570 | # | Maximum | 10 | 15 | 25 | 50 | 10.0 |
2571 | ^ | | m1 | m2 | m3 | mt | |
2572 |---+---------+--------+--------+--------+-------+------|
2573 | # | Peter | 10 | 8 | 23 | 41 | 8.2 |
2574 | # | Sam | 2 | 4 | 3 | 9 | 1.8 |
2575 |---+---------+--------+--------+--------+-------+------|
2576 | | Average | | | | 29.7 | |
2577 | ^ | | | | | at | |
2578 | $ | max=50 | | | | | |
2579 |---+---------+--------+--------+--------+-------+------|
2580 #+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(@@-II..@@-I);%.1f
2581 @end group
2582 @end example
2583
2584 @noindent @b{Important}: please note that for these special tables,
2585 recalculating the table with @kbd{C-u C-c *} will only affect rows that
2586 are marked @samp{#} or @samp{*}, and fields that have a formula assigned
2587 to the field itself. The column formulas are not applied in rows with
2588 empty first field.
2589
2590 @cindex marking characters, tables
2591 The marking characters have the following meaning:
2592 @table @samp
2593 @item !
2594 The fields in this line define names for the columns, so that you may
2595 refer to a column as @samp{$Tot} instead of @samp{$6}.
2596 @item ^
2597 This row defines names for the fields @emph{above} the row. With such
2598 a definition, any formula in the table may use @samp{$m1} to refer to
2599 the value @samp{10}. Also, if you assign a formula to a names field, it
2600 will be stored as @samp{$name=...}.
2601 @item _
2602 Similar to @samp{^}, but defines names for the fields in the row
2603 @emph{below}.
2604 @item $
2605 Fields in this row can define @emph{parameters} for formulas. For
2606 example, if a field in a @samp{$} row contains @samp{max=50}, then
2607 formulas in this table can refer to the value 50 using @samp{$max}.
2608 Parameters work exactly like constants, only that they can be defined on
2609 a per-table basis.
2610 @item #
2611 Fields in this row are automatically recalculated when pressing
2612 @key{TAB} or @key{RET} or @kbd{S-@key{TAB}} in this row. Also, this row
2613 is selected for a global recalculation with @kbd{C-u C-c *}. Unmarked
2614 lines will be left alone by this command.
2615 @item *
2616 Selects this line for global recalculation with @kbd{C-u C-c *}, but
2617 not for automatic recalculation. Use this when automatic
2618 recalculation slows down editing too much.
2619 @item
2620 Unmarked lines are exempt from recalculation with @kbd{C-u C-c *}.
2621 All lines that should be recalculated should be marked with @samp{#}
2622 or @samp{*}.
2623 @item /
2624 Do not export this line. Useful for lines that contain the narrowing
2625 @samp{<N>} markers or column group markers.
2626 @end table
2627
2628 Finally, just to whet your appetite for what can be done with the
2629 fantastic @file{calc.el} package, here is a table that computes the Taylor
2630 series of degree @code{n} at location @code{x} for a couple of
2631 functions.
2632
2633 @example
2634 @group
2635 |---+-------------+---+-----+--------------------------------------|
2636 | | Func | n | x | Result |
2637 |---+-------------+---+-----+--------------------------------------|
2638 | # | exp(x) | 1 | x | 1 + x |
2639 | # | exp(x) | 2 | x | 1 + x + x^2 / 2 |
2640 | # | exp(x) | 3 | x | 1 + x + x^2 / 2 + x^3 / 6 |
2641 | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
2642 | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2 |
2643 | * | tan(x) | 3 | x | 0.0175 x + 1.77e-6 x^3 |
2644 |---+-------------+---+-----+--------------------------------------|
2645 #+TBLFM: $5=taylor($2,$4,$3);n3
2646 @end group
2647 @end example
2648
2649 @node Org-Plot, , The spreadsheet, Tables
2650 @section Org-Plot
2651 @cindex graph, in tables
2652 @cindex plot tables using Gnuplot
2653 @cindex #+PLOT
2654
2655 Org-Plot can produce 2D and 3D graphs of information stored in org tables
2656 using @file{Gnuplot} @uref{http://www.gnuplot.info/} and @file{gnuplot-mode}
2657 @uref{http://cars9.uchicago.edu/~ravel/software/gnuplot-mode.html}. To see
2658 this in action, ensure that you have both Gnuplot and Gnuplot mode installed
2659 on your system, then call @code{org-plot/gnuplot} on the following table.
2660
2661 @example
2662 @group
2663 #+PLOT: title:"Citas" ind:1 deps:(3) type:2d with:histograms set:"yrange [0:]"
2664 | Sede | Max cites | H-index |
2665 |-----------+-----------+---------|
2666 | Chile | 257.72 | 21.39 |
2667 | Leeds | 165.77 | 19.68 |
2668 | Sao Paolo | 71.00 | 11.50 |
2669 | Stockholm | 134.19 | 14.33 |
2670 | Morelia | 257.56 | 17.67 |
2671 @end group
2672 @end example
2673
2674 Notice that Org Plot is smart enough to apply the table's headers as labels.
2675 Further control over the labels, type, content, and appearance of plots can
2676 be exercised through the @code{#+PLOT:} lines preceding a table. See below
2677 for a complete list of Org-plot options. For more information and examples
2678 see the Org-plot tutorial at
2679 @uref{http://orgmode.org/worg/org-tutorials/org-plot.php}.
2680
2681 @subsubheading Plot Options
2682
2683 @table @code
2684 @item set
2685 Specify any @command{gnuplot} option to be set when graphing.
2686
2687 @item title
2688 Specify the title of the plot.
2689
2690 @item ind
2691 Specify which column of the table to use as the @code{x} axis.
2692
2693 @item deps
2694 Specify the columns to graph as a Lisp style list, surrounded by parentheses
2695 and separated by spaces for example @code{dep:(3 4)} to graph the third and
2696 fourth columns (defaults to graphing all other columns aside from the @code{ind}
2697 column).
2698
2699 @item type
2700 Specify whether the plot will be @code{2d}, @code{3d}, or @code{grid}.
2701
2702 @item with
2703 Specify a @code{with} option to be inserted for every col being plotted
2704 (e.g. @code{lines}, @code{points}, @code{boxes}, @code{impulses}, etc...).
2705 Defaults to @code{lines}.
2706
2707 @item file
2708 If you want to plot to a file, specify @code{"@var{path/to/desired/output-file}"}.
2709
2710 @item labels
2711 List of labels to be used for the deps (defaults to the column headers if
2712 they exist).
2713
2714 @item line
2715 Specify an entire line to be inserted in the Gnuplot script.
2716
2717 @item map
2718 When plotting @code{3d} or @code{grid} types, set this to @code{t} to graph a
2719 flat mapping rather than a @code{3d} slope.
2720
2721 @item timefmt
2722 Specify format of Org-mode timestamps as they will be parsed by Gnuplot.
2723 Defaults to @samp{%Y-%m-%d-%H:%M:%S}.
2724
2725 @item script
2726 If you want total control, you can specify a script file (place the file name
2727 between double-quotes) which will be used to plot. Before plotting, every
2728 instance of @code{$datafile} in the specified script will be replaced with
2729 the path to the generated data file. Note: even if you set this option, you
2730 may still want to specify the plot type, as that can impact the content of
2731 the data file.
2732 @end table
2733
2734 @node Hyperlinks, TODO Items, Tables, Top
2735 @chapter Hyperlinks
2736 @cindex hyperlinks
2737
2738 Like HTML, Org provides links inside a file, external links to
2739 other files, Usenet articles, emails, and much more.
2740
2741 @menu
2742 * Link format:: How links in Org are formatted
2743 * Internal links:: Links to other places in the current file
2744 * External links:: URL-like links to the world
2745 * Handling links:: Creating, inserting and following
2746 * Using links outside Org:: Linking from my C source code?
2747 * Link abbreviations:: Shortcuts for writing complex links
2748 * Search options:: Linking to a specific location
2749 * Custom searches:: When the default search is not enough
2750 @end menu
2751
2752 @node Link format, Internal links, Hyperlinks, Hyperlinks
2753 @section Link format
2754 @cindex link format
2755 @cindex format, of links
2756
2757 Org will recognize plain URL-like links and activate them as
2758 clickable links. The general link format, however, looks like this:
2759
2760 @example
2761 [[link][description]] @r{or alternatively} [[link]]
2762 @end example
2763
2764 @noindent
2765 Once a link in the buffer is complete (all brackets present), Org
2766 will change the display so that @samp{description} is displayed instead
2767 of @samp{[[link][description]]} and @samp{link} is displayed instead of
2768 @samp{[[link]]}. Links will be highlighted in the face @code{org-link},
2769 which by default is an underlined face. You can directly edit the
2770 visible part of a link. Note that this can be either the @samp{link}
2771 part (if there is no description) or the @samp{description} part. To
2772 edit also the invisible @samp{link} part, use @kbd{C-c C-l} with the
2773 cursor on the link.
2774
2775 If you place the cursor at the beginning or just behind the end of the
2776 displayed text and press @key{BACKSPACE}, you will remove the
2777 (invisible) bracket at that location. This makes the link incomplete
2778 and the internals are again displayed as plain text. Inserting the
2779 missing bracket hides the link internals again. To show the
2780 internal structure of all links, use the menu entry
2781 @code{Org->Hyperlinks->Literal links}.
2782
2783 @node Internal links, External links, Link format, Hyperlinks
2784 @section Internal links
2785 @cindex internal links
2786 @cindex links, internal
2787 @cindex targets, for links
2788
2789 @cindex property, CUSTOM_ID
2790 If the link does not look like a URL, it is considered to be internal in the
2791 current file. The most important case is a link like
2792 @samp{[[#my-custom-id]]} which will link to the entry with the
2793 @code{CUSTOM_ID} property @samp{my-custom-id}. Such custom IDs are very good
2794 for HTML export (@pxref{HTML export}) where they produce pretty section
2795 links. You are responsible yourself to make sure these custom IDs are unique
2796 in a file.
2797
2798 Links such as @samp{[[My Target]]} or @samp{[[My Target][Find my target]]}
2799 lead to a text search in the current file.
2800
2801 The link can be followed with @kbd{C-c C-o} when the cursor is on the link,
2802 or with a mouse click (@pxref{Handling links}). Links to custom IDs will
2803 point to the corresponding headline. The preferred match for a text link is
2804 a @i{dedicated target}: the same string in double angular brackets. Targets
2805 may be located anywhere; sometimes it is convenient to put them into a
2806 comment line. For example
2807
2808 @example
2809 # <<My Target>>
2810 @end example
2811
2812 @noindent In HTML export (@pxref{HTML export}), such targets will become
2813 named anchors for direct access through @samp{http} links@footnote{Note that
2814 text before the first headline is usually not exported, so the first such
2815 target should be after the first headline, or in the line directly before the
2816 first headline.}.
2817
2818 If no dedicated target exists, Org will search for a headline that is exactly
2819 the link text but may also include a TODO keyword and tags@footnote{To insert
2820 a link targeting a headline, in-buffer completion can be used. Just type a
2821 star followed by a few optional letters into the buffer and press
2822 @kbd{M-@key{TAB}}. All headlines in the current buffer will be offered as
2823 completions.}. In non-Org files, the search will look for the words in the
2824 link text, in the above example the search would be for @samp{my target}.
2825
2826 Following a link pushes a mark onto Org's own mark ring. You can
2827 return to the previous position with @kbd{C-c &}. Using this command
2828 several times in direct succession goes back to positions recorded
2829 earlier.
2830
2831 @menu
2832 * Radio targets:: Make targets trigger links in plain text
2833 @end menu
2834
2835 @node Radio targets, , Internal links, Internal links
2836 @subsection Radio targets
2837 @cindex radio targets
2838 @cindex targets, radio
2839 @cindex links, radio targets
2840
2841 Org can automatically turn any occurrences of certain target names
2842 in normal text into a link. So without explicitly creating a link, the
2843 text connects to the target radioing its position. Radio targets are
2844 enclosed by triple angular brackets. For example, a target @samp{<<<My
2845 Target>>>} causes each occurrence of @samp{my target} in normal text to
2846 become activated as a link. The Org file is scanned automatically
2847 for radio targets only when the file is first loaded into Emacs. To
2848 update the target list during editing, press @kbd{C-c C-c} with the
2849 cursor on or at a target.
2850
2851 @node External links, Handling links, Internal links, Hyperlinks
2852 @section External links
2853 @cindex links, external
2854 @cindex external links
2855 @cindex links, external
2856 @cindex Gnus links
2857 @cindex BBDB links
2858 @cindex IRC links
2859 @cindex URL links
2860 @cindex file links
2861 @cindex VM links
2862 @cindex RMAIL links
2863 @cindex WANDERLUST links
2864 @cindex MH-E links
2865 @cindex USENET links
2866 @cindex SHELL links
2867 @cindex Info links
2868 @cindex Elisp links
2869
2870 Org supports links to files, websites, Usenet and email messages,
2871 BBDB database entries and links to both IRC conversations and their
2872 logs. External links are URL-like locators. They start with a short
2873 identifying string followed by a colon. There can be no space after
2874 the colon. The following list shows examples for each link type.
2875
2876 @example
2877 http://www.astro.uva.nl/~dominik @r{on the web}
2878 doi:10.1000/182 @r{DOI for an electronic resource}
2879 file:/home/dominik/images/jupiter.jpg @r{file, absolute path}
2880 /home/dominik/images/jupiter.jpg @r{same as above}
2881 file:papers/last.pdf @r{file, relative path}
2882 ./papers/last.pdf @r{same as above}
2883 file:/myself@@some.where:papers/last.pdf @r{file, path on remote machine}
2884 /myself@@some.where:papers/last.pdf @r{same as above}
2885 file:sometextfile::NNN @r{file with line number to jump to}
2886 file:projects.org @r{another Org file}
2887 file:projects.org::some words @r{text search in Org file}
2888 file:projects.org::*task title @r{heading search in Org file}
2889 docview:papers/last.pdf::NNN @r{open file in doc-view mode at page NNN}
2890 id:B7423F4D-2E8A-471B-8810-C40F074717E9 @r{Link to heading by ID}
2891 news:comp.emacs @r{Usenet link}
2892 mailto:adent@@galaxy.net @r{Mail link}
2893 vm:folder @r{VM folder link}
2894 vm:folder#id @r{VM message link}
2895 vm://myself@@some.where.org/folder#id @r{VM on remote machine}
2896 wl:folder @r{WANDERLUST folder link}
2897 wl:folder#id @r{WANDERLUST message link}
2898 mhe:folder @r{MH-E folder link}
2899 mhe:folder#id @r{MH-E message link}
2900 rmail:folder @r{RMAIL folder link}
2901 rmail:folder#id @r{RMAIL message link}
2902 gnus:group @r{Gnus group link}
2903 gnus:group#id @r{Gnus article link}
2904 bbdb:R.*Stallman @r{BBDB link (with regexp)}
2905 irc:/irc.com/#emacs/bob @r{IRC link}
2906 info:org:External%20links @r{Info node link (with encoded space)}
2907 shell:ls *.org @r{A shell command}
2908 elisp:org-agenda @r{Interactive Elisp command}
2909 elisp:(find-file-other-frame "Elisp.org") @r{Elisp form to evaluate}
2910 @end example
2911
2912 A link should be enclosed in double brackets and may contain a
2913 descriptive text to be displayed instead of the URL (@pxref{Link
2914 format}), for example:
2915
2916 @example
2917 [[http://www.gnu.org/software/emacs/][GNU Emacs]]
2918 @end example
2919
2920 @noindent
2921 If the description is a file name or URL that points to an image, HTML
2922 export (@pxref{HTML export}) will inline the image as a clickable
2923 button. If there is no description at all and the link points to an
2924 image,
2925 that image will be inlined into the exported HTML file.
2926
2927 @cindex square brackets, around links
2928 @cindex plain text external links
2929 Org also finds external links in the normal text and activates them
2930 as links. If spaces must be part of the link (for example in
2931 @samp{bbdb:Richard Stallman}), or if you need to remove ambiguities
2932 about the end of the link, enclose them in square brackets.
2933
2934 @node Handling links, Using links outside Org, External links, Hyperlinks
2935 @section Handling links
2936 @cindex links, handling
2937
2938 Org provides methods to create a link in the correct syntax, to
2939 insert it into an Org file, and to follow the link.
2940
2941 @table @kbd
2942 @kindex C-c l
2943 @cindex storing links
2944 @item C-c l
2945 Store a link to the current location. This is a @emph{global} command (you
2946 must create the key binding yourself) which can be used in any buffer to
2947 create a link. The link will be stored for later insertion into an Org
2948 buffer (see below). What kind of link will be created depends on the current
2949 buffer:
2950
2951 @b{Org-mode buffers}@*
2952 For Org files, if there is a @samp{<<target>>} at the cursor, the link points
2953 to the target. Otherwise it points to the current headline, which will also
2954 be the description.
2955
2956 @vindex org-link-to-org-use-id
2957 @cindex property, CUSTOM_ID
2958 @cindex property, ID
2959 If the headline has a @code{CUSTOM_ID} property, a link to this custom ID
2960 will be stored. In addition or alternatively (depending on the value of
2961 @code{org-link-to-org-use-id}), a globally unique @code{ID} property will be
2962 created and/or used to construct a link. So using this command in Org
2963 buffers will potentially create two links: a human-readable from the custom
2964 ID, and one that is globally unique and works even if the entry is moved from
2965 file to file. Later, when inserting the link, you need to decide which one
2966 to use.
2967
2968 @b{Email/News clients: VM, Rmail, Wanderlust, MH-E, Gnus}@*
2969 Pretty much all Emacs mail clients are supported. The link will point to the
2970 current article, or, in some GNUS buffers, to the group. The description is
2971 constructed from the author and the subject.
2972
2973 @b{Web browsers: W3 and W3M}@*
2974 Here the link will be the current URL, with the page title as description.
2975
2976 @b{Contacts: BBDB}@*
2977 Links created in a BBDB buffer will point to the current entry.
2978
2979 @b{Chat: IRC}@*
2980 @vindex org-irc-link-to-logs
2981 For IRC links, if you set the variable @code{org-irc-link-to-logs} to
2982 @code{t}, a @samp{file:/} style link to the relevant point in the logs for
2983 the current conversation is created. Otherwise an @samp{irc:/} style link to
2984 the user/channel/server under the point will be stored.
2985
2986 @b{Other files}@*
2987 For any other files, the link will point to the file, with a search string
2988 (@pxref{Search options}) pointing to the contents of the current line. If
2989 there is an active region, the selected words will form the basis of the
2990 search string. If the automatically created link is not working correctly or
2991 accurately enough, you can write custom functions to select the search string
2992 and to do the search for particular file types---see @ref{Custom searches}.
2993 The key binding @kbd{C-c l} is only a suggestion---see @ref{Installation}.
2994
2995 @b{Agenda view}@*
2996 When the cursor is in an agenda view, the created link points to the
2997 entry referenced by the current line.
2998
2999 @c
3000 @kindex C-c C-l
3001 @cindex link completion
3002 @cindex completion, of links
3003 @cindex inserting links
3004 @item C-c C-l
3005 @vindex org-keep-stored-link-after-insertion
3006 Insert a link@footnote{ Note that you don't have to use this command to
3007 insert a link. Links in Org are plain text, and you can type or paste them
3008 straight into the buffer. By using this command, the links are automatically
3009 enclosed in double brackets, and you will be asked for the optional
3010 descriptive text.}. This prompts for a link to be inserted into the buffer.
3011 You can just type a link, using text for an internal link, or one of the link
3012 type prefixes mentioned in the examples above. The link will be inserted
3013 into the buffer@footnote{After insertion of a stored link, the link will be
3014 removed from the list of stored links. To keep it in the list later use, use
3015 a triple @kbd{C-u} prefix argument to @kbd{C-c C-l}, or configure the option
3016 @code{org-keep-stored-link-after-insertion}.}, along with a descriptive text.
3017 If some text was selected when this command is called, the selected text
3018 becomes the default description.
3019
3020 @b{Inserting stored links}@*
3021 All links stored during the
3022 current session are part of the history for this prompt, so you can access
3023 them with @key{up} and @key{down} (or @kbd{M-p/n}).
3024
3025 @b{Completion support}@* Completion with @key{TAB} will help you to insert
3026 valid link prefixes like @samp{http:} or @samp{ftp:}, including the prefixes
3027 defined through link abbreviations (@pxref{Link abbreviations}). If you
3028 press @key{RET} after inserting only the @var{prefix}, Org will offer
3029 specific completion support for some link types@footnote{This works by
3030 calling a special function @code{org-PREFIX-complete-link}.} For
3031 example, if you type @kbd{file @key{RET}}, file name completion (alternative
3032 access: @kbd{C-u C-c C-l}, see below) will be offered, and after @kbd{bbdb
3033 @key{RET}} you can complete contact names.
3034 @kindex C-u C-c C-l
3035 @cindex file name completion
3036 @cindex completion, of file names
3037 @item C-u C-c C-l
3038 When @kbd{C-c C-l} is called with a @kbd{C-u} prefix argument, a link to
3039 a file will be inserted and you may use file name completion to select
3040 the name of the file. The path to the file is inserted relative to the
3041 directory of the current Org file, if the linked file is in the current
3042 directory or in a sub-directory of it, or if the path is written relative
3043 to the current directory using @samp{../}. Otherwise an absolute path
3044 is used, if possible with @samp{~/} for your home directory. You can
3045 force an absolute path with two @kbd{C-u} prefixes.
3046 @c
3047 @item C-c C-l @ @r{(with cursor on existing link)}
3048 When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the
3049 link and description parts of the link.
3050 @c
3051 @cindex following links
3052 @kindex C-c C-o
3053 @kindex @key{RET}
3054 @item C-c C-o @ @r{(or, if @code{org-return-follows-link} is set, also} @key{RET}
3055 @vindex org-file-apps
3056 Open link at point. This will launch a web browser for URLs (using
3057 @command{browse-url-at-point}), run VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for
3058 the corresponding links, and execute the command in a shell link. When the
3059 cursor is on an internal link, this command runs the corresponding search.
3060 When the cursor is on a TAG list in a headline, it creates the corresponding
3061 TAGS view. If the cursor is on a timestamp, it compiles the agenda for that
3062 date. Furthermore, it will visit text and remote files in @samp{file:} links
3063 with Emacs and select a suitable application for local non-text files.
3064 Classification of files is based on file extension only. See option
3065 @code{org-file-apps}. If you want to override the default application and
3066 visit the file with Emacs, use a @kbd{C-u} prefix. If you want to avoid
3067 opening in Emacs, use a @kbd{C-u C-u} prefix.@*
3068 If the cursor is on a headline, but not on a link, offer all links in the
3069 headline and entry text.
3070 @c
3071 @kindex mouse-2
3072 @kindex mouse-1
3073 @item mouse-2
3074 @itemx mouse-1
3075 On links, @kbd{mouse-2} will open the link just as @kbd{C-c C-o}
3076 would. Under Emacs 22, @kbd{mouse-1} will also follow a link.
3077 @c
3078 @kindex mouse-3
3079 @item mouse-3
3080 @vindex org-display-internal-link-with-indirect-buffer
3081 Like @kbd{mouse-2}, but force file links to be opened with Emacs, and
3082 internal links to be displayed in another window@footnote{See the
3083 variable @code{org-display-internal-link-with-indirect-buffer}}.
3084 @c
3085 @cindex inlining images
3086 @cindex images, inlining
3087 @kindex C-c C-x C-v
3088 @vindex org-startup-with-inline-images
3089 @cindex @code{inlineimages}, STARTUP keyword
3090 @cindex @code{noinlineimages}, STARTUP keyword
3091 @item C-c C-x C-v
3092 Toggle the inline display of linked images. Normally this will only inline
3093 images that have no description part in the link, i.e. images that will also
3094 be inlined during export. When called with a prefix argument, also display
3095 images that do have a link description. You can ask for inline images to be
3096 displayed at startup by configuring the variable
3097 @code{org-startup-with-inline-images}@footnote{with corresponding
3098 @code{#+STARTUP} keywords @code{inlineimages} and @code{inlineimages}}.
3099 @cindex mark ring
3100 @kindex C-c %
3101 @item C-c %
3102 Push the current position onto the mark ring, to be able to return
3103 easily. Commands following an internal link do this automatically.
3104 @c
3105 @cindex links, returning to
3106 @kindex C-c &
3107 @item C-c &
3108 Jump back to a recorded position. A position is recorded by the
3109 commands following internal links, and by @kbd{C-c %}. Using this
3110 command several times in direct succession moves through a ring of
3111 previously recorded positions.
3112 @c
3113 @kindex C-c C-x C-n
3114 @kindex C-c C-x C-p
3115 @cindex links, finding next/previous
3116 @item C-c C-x C-n
3117 @itemx C-c C-x C-p
3118 Move forward/backward to the next link in the buffer. At the limit of
3119 the buffer, the search fails once, and then wraps around. The key
3120 bindings for this are really too long, you might want to bind this also
3121 to @kbd{C-n} and @kbd{C-p}
3122 @lisp
3123 (add-hook 'org-load-hook
3124 (lambda ()
3125 (define-key 'org-mode-map "\C-n" 'org-next-link)
3126 (define-key 'org-mode-map "\C-p" 'org-previous-link)))
3127 @end lisp
3128 @end table
3129
3130 @node Using links outside Org, Link abbreviations, Handling links, Hyperlinks
3131 @section Using links outside Org
3132
3133 You can insert and follow links that have Org syntax not only in
3134 Org, but in any Emacs buffer. For this, you should create two
3135 global commands, like this (please select suitable global keys
3136 yourself):
3137
3138 @lisp
3139 (global-set-key "\C-c L" 'org-insert-link-global)
3140 (global-set-key "\C-c o" 'org-open-at-point-global)
3141 @end lisp
3142
3143 @node Link abbreviations, Search options, Using links outside Org, Hyperlinks
3144 @section Link abbreviations
3145 @cindex link abbreviations
3146 @cindex abbreviation, links
3147
3148 Long URLs can be cumbersome to type, and often many similar links are
3149 needed in a document. For this you can use link abbreviations. An
3150 abbreviated link looks like this
3151
3152 @example
3153 [[linkword:tag][description]]
3154 @end example
3155
3156 @noindent
3157 @vindex org-link-abbrev-alist
3158 where the tag is optional.
3159 The @i{linkword} must be a word, starting with a letter, followed by
3160 letters, numbers, @samp{-}, and @samp{_}. Abbreviations are resolved
3161 according to the information in the variable @code{org-link-abbrev-alist}
3162 that relates the linkwords to replacement text. Here is an example:
3163
3164 @smalllisp
3165 @group
3166 (setq org-link-abbrev-alist
3167 '(("bugzilla" . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
3168 ("google" . "http://www.google.com/search?q=")
3169 ("gmap" . "http://maps.google.com/maps?q=%s")
3170 ("omap" . "http://nominatim.openstreetmap.org/search?q=%s&polygon=1")
3171 ("ads" . "http://adsabs.harvard.edu/cgi-bin/nph-abs_connect?author=%s&db_key=AST")))
3172 @end group
3173 @end smalllisp
3174
3175 If the replacement text contains the string @samp{%s}, it will be
3176 replaced with the tag. Otherwise the tag will be appended to the string
3177 in order to create the link. You may also specify a function that will
3178 be called with the tag as the only argument to create the link.
3179
3180 With the above setting, you could link to a specific bug with
3181 @code{[[bugzilla:129]]}, search the web for @samp{OrgMode} with
3182 @code{[[google:OrgMode]]}, show the map location of the Free Software
3183 Foundation @code{[[gmap:51 Franklin Street, Boston]]} or of Carsten office
3184 @code{[[omap:Science Park 904, Amsterdam, The Netherlands]]} and find out
3185 what the Org author is doing besides Emacs hacking with
3186 @code{[[ads:Dominik,C]]}.
3187
3188 If you need special abbreviations just for a single Org buffer, you
3189 can define them in the file with
3190
3191 @cindex #+LINK
3192 @example
3193 #+LINK: bugzilla http://10.1.2.9/bugzilla/show_bug.cgi?id=
3194 #+LINK: google http://www.google.com/search?q=%s
3195 @end example
3196
3197 @noindent
3198 In-buffer completion (@pxref{Completion}) can be used after @samp{[} to
3199 complete link abbreviations. You may also define a function
3200 @code{org-PREFIX-complete-link} that implements special (e.g. completion)
3201 support for inserting such a link with @kbd{C-c C-l}. Such a function should
3202 not accept any arguments, and return the full link with prefix.
3203
3204 @node Search options, Custom searches, Link abbreviations, Hyperlinks
3205 @section Search options in file links
3206 @cindex search option in file links
3207 @cindex file links, searching
3208
3209 File links can contain additional information to make Emacs jump to a
3210 particular location in the file when following a link. This can be a
3211 line number or a search option after a double@footnote{For backward
3212 compatibility, line numbers can also follow a single colon.} colon. For
3213 example, when the command @kbd{C-c l} creates a link (@pxref{Handling
3214 links}) to a file, it encodes the words in the current line as a search
3215 string that can be used to find this line back later when following the
3216 link with @kbd{C-c C-o}.
3217
3218 Here is the syntax of the different ways to attach a search to a file
3219 link, together with an explanation:
3220
3221 @example
3222 [[file:~/code/main.c::255]]
3223 [[file:~/xx.org::My Target]]
3224 [[file:~/xx.org::*My Target]]
3225 [[file:~/xx.org::#my-custom-id]]
3226 [[file:~/xx.org::/regexp/]]
3227 @end example
3228
3229 @table @code
3230 @item 255
3231 Jump to line 255.
3232 @item My Target
3233 Search for a link target @samp{<<My Target>>}, or do a text search for
3234 @samp{my target}, similar to the search in internal links, see
3235 @ref{Internal links}. In HTML export (@pxref{HTML export}), such a file
3236 link will become an HTML reference to the corresponding named anchor in
3237 the linked file.
3238 @item *My Target
3239 In an Org file, restrict search to headlines.
3240 @item #my-custom-id
3241 Link to a heading with a @code{CUSTOM_ID} property
3242 @item /regexp/
3243 Do a regular expression search for @code{regexp}. This uses the Emacs
3244 command @code{occur} to list all matches in a separate window. If the
3245 target file is in Org-mode, @code{org-occur} is used to create a
3246 sparse tree with the matches.
3247 @c If the target file is a directory,
3248 @c @code{grep} will be used to search all files in the directory.
3249 @end table
3250
3251 As a degenerate case, a file link with an empty file name can be used
3252 to search the current file. For example, @code{[[file:::find me]]} does
3253 a search for @samp{find me} in the current file, just as
3254 @samp{[[find me]]} would.
3255
3256 @node Custom searches, , Search options, Hyperlinks
3257 @section Custom Searches
3258 @cindex custom search strings
3259 @cindex search strings, custom
3260
3261 The default mechanism for creating search strings and for doing the
3262 actual search related to a file link may not work correctly in all
3263 cases. For example, Bib@TeX{} database files have many entries like
3264 @samp{year="1993"} which would not result in good search strings,
3265 because the only unique identification for a Bib@TeX{} entry is the
3266 citation key.
3267
3268 @vindex org-create-file-search-functions
3269 @vindex org-execute-file-search-functions
3270 If you come across such a problem, you can write custom functions to set
3271 the right search string for a particular file type, and to do the search
3272 for the string in the file. Using @code{add-hook}, these functions need
3273 to be added to the hook variables
3274 @code{org-create-file-search-functions} and
3275 @code{org-execute-file-search-functions}. See the docstring for these
3276 variables for more information. Org actually uses this mechanism
3277 for Bib@TeX{} database files, and you can use the corresponding code as
3278 an implementation example. See the file @file{org-bibtex.el}.
3279
3280 @node TODO Items, Tags, Hyperlinks, Top
3281 @chapter TODO items
3282 @cindex TODO items
3283
3284 Org-mode does not maintain TODO lists as separate documents@footnote{Of
3285 course, you can make a document that contains only long lists of TODO items,
3286 but this is not required.}. Instead, TODO items are an integral part of the
3287 notes file, because TODO items usually come up while taking notes! With Org
3288 mode, simply mark any entry in a tree as being a TODO item. In this way,
3289 information is not duplicated, and the entire context from which the TODO
3290 item emerged is always present.
3291
3292 Of course, this technique for managing TODO items scatters them
3293 throughout your notes file. Org-mode compensates for this by providing
3294 methods to give you an overview of all the things that you have to do.
3295
3296 @menu
3297 * TODO basics:: Marking and displaying TODO entries
3298 * TODO extensions:: Workflow and assignments
3299 * Progress logging:: Dates and notes for progress
3300 * Priorities:: Some things are more important than others
3301 * Breaking down tasks:: Splitting a task into manageable pieces
3302 * Checkboxes:: Tick-off lists
3303 @end menu
3304
3305 @node TODO basics, TODO extensions, TODO Items, TODO Items
3306 @section Basic TODO functionality
3307
3308 Any headline becomes a TODO item when it starts with the word
3309 @samp{TODO}, for example:
3310
3311 @example
3312 *** TODO Write letter to Sam Fortune
3313 @end example
3314
3315 @noindent
3316 The most important commands to work with TODO entries are:
3317
3318 @table @kbd
3319 @kindex C-c C-t
3320 @cindex cycling, of TODO states
3321 @item C-c C-t
3322 Rotate the TODO state of the current item among
3323
3324 @example
3325 ,-> (unmarked) -> TODO -> DONE --.
3326 '--------------------------------'
3327 @end example
3328
3329 The same rotation can also be done ``remotely'' from the timeline and
3330 agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
3331
3332 @kindex C-u C-c C-t
3333 @item C-u C-c C-t
3334 Select a specific keyword using completion or (if it has been set up)
3335 the fast selection interface. For the latter, you need to assign keys
3336 to TODO states, see @ref{Per-file keywords}, and @ref{Setting tags}, for
3337 more information.
3338
3339 @kindex S-@key{right}
3340 @kindex S-@key{left}
3341 @vindex org-treat-S-cursor-todo-selection-as-state-change
3342 @item S-@key{right}
3343 @itemx S-@key{left}
3344 Select the following/preceding TODO state, similar to cycling. Useful
3345 mostly if more than two TODO states are possible (@pxref{TODO
3346 extensions}). See also @ref{Conflicts}, for a discussion of the interaction
3347 with @code{shift-selection-mode}. See also the variable
3348 @code{org-treat-S-cursor-todo-selection-as-state-change}.
3349 @kindex C-c / t
3350 @cindex sparse tree, for TODO
3351 @itemx C-c / t
3352 @vindex org-todo-keywords
3353 View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}). Folds the
3354 entire buffer, but shows all TODO items (with not-DONE state) and the
3355 headings hierarchy above them. With a prefix argument (or by using @kbd{C-c
3356 / T}), search for a specific TODO. You will be prompted for the keyword, and
3357 you can also give a list of keywords like @code{KWD1|KWD2|...} to list
3358 entries that match any one of these keywords. With numeric prefix argument
3359 N, show the tree for the Nth keyword in the variable
3360 @code{org-todo-keywords}. With two prefix arguments, find all TODO states,
3361 both un-done and done.
3362 @kindex C-c a t
3363 @item C-c a t
3364 Show the global TODO list. Collects the TODO items (with not-DONE states)
3365 from all agenda files (@pxref{Agenda Views}) into a single buffer. The new
3366 buffer will be in @code{agenda-mode}, which provides commands to examine and
3367 manipulate the TODO entries from the new buffer (@pxref{Agenda commands}).
3368 @xref{Global TODO list}, for more information.
3369 @kindex S-M-@key{RET}
3370 @item S-M-@key{RET}
3371 Insert a new TODO entry below the current one.
3372 @end table
3373
3374 @noindent
3375 @vindex org-todo-state-tags-triggers
3376 Changing a TODO state can also trigger tag changes. See the docstring of the
3377 option @code{org-todo-state-tags-triggers} for details.
3378
3379 @node TODO extensions, Progress logging, TODO basics, TODO Items
3380 @section Extended use of TODO keywords
3381 @cindex extended TODO keywords
3382
3383 @vindex org-todo-keywords
3384 By default, marked TODO entries have one of only two states: TODO and
3385 DONE. Org-mode allows you to classify TODO items in more complex ways
3386 with @emph{TODO keywords} (stored in @code{org-todo-keywords}). With
3387 special setup, the TODO keyword system can work differently in different
3388 files.
3389
3390 Note that @i{tags} are another way to classify headlines in general and
3391 TODO items in particular (@pxref{Tags}).
3392
3393 @menu
3394 * Workflow states:: From TODO to DONE in steps
3395 * TODO types:: I do this, Fred does the rest
3396 * Multiple sets in one file:: Mixing it all, and still finding your way
3397 * Fast access to TODO states:: Single letter selection of a state
3398 * Per-file keywords:: Different files, different requirements
3399 * Faces for TODO keywords:: Highlighting states
3400 * TODO dependencies:: When one task needs to wait for others
3401 @end menu
3402
3403 @node Workflow states, TODO types, TODO extensions, TODO extensions
3404 @subsection TODO keywords as workflow states
3405 @cindex TODO workflow
3406 @cindex workflow states as TODO keywords
3407
3408 You can use TODO keywords to indicate different @emph{sequential} states
3409 in the process of working on an item, for example@footnote{Changing
3410 this variable only becomes effective after restarting Org-mode in a
3411 buffer.}:
3412
3413 @lisp
3414 (setq org-todo-keywords
3415 '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
3416 @end lisp
3417
3418 The vertical bar separates the TODO keywords (states that @emph{need
3419 action}) from the DONE states (which need @emph{no further action}). If
3420 you don't provide the separator bar, the last state is used as the DONE
3421 state.
3422 @cindex completion, of TODO keywords
3423 With this setup, the command @kbd{C-c C-t} will cycle an entry from TODO
3424 to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED. You may
3425 also use a numeric prefix argument to quickly select a specific state. For
3426 example @kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
3427 Or you can use @kbd{S-@key{left}} to go backward through the sequence. If you
3428 define many keywords, you can use in-buffer completion
3429 (@pxref{Completion}) or even a special one-key selection scheme
3430 (@pxref{Fast access to TODO states}) to insert these words into the
3431 buffer. Changing a TODO state can be logged with a timestamp, see
3432 @ref{Tracking TODO state changes}, for more information.
3433
3434 @node TODO types, Multiple sets in one file, Workflow states, TODO extensions
3435 @subsection TODO keywords as types
3436 @cindex TODO types
3437 @cindex names as TODO keywords
3438 @cindex types as TODO keywords
3439
3440 The second possibility is to use TODO keywords to indicate different
3441 @emph{types} of action items. For example, you might want to indicate
3442 that items are for ``work'' or ``home''. Or, when you work with several
3443 people on a single project, you might want to assign action items
3444 directly to persons, by using their names as TODO keywords. This would
3445 be set up like this:
3446
3447 @lisp
3448 (setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
3449 @end lisp
3450
3451 In this case, different keywords do not indicate a sequence, but rather
3452 different types. So the normal work flow would be to assign a task to a
3453 person, and later to mark it DONE. Org-mode supports this style by adapting
3454 the workings of the command @kbd{C-c C-t}@footnote{This is also true for the
3455 @kbd{t} command in the timeline and agenda buffers.}. When used several
3456 times in succession, it will still cycle through all names, in order to first
3457 select the right type for a task. But when you return to the item after some
3458 time and execute @kbd{C-c C-t} again, it will switch from any name directly
3459 to DONE. Use prefix arguments or completion to quickly select a specific
3460 name. You can also review the items of a specific TODO type in a sparse tree
3461 by using a numeric prefix to @kbd{C-c / t}. For example, to see all things
3462 Lucy has to do, you would use @kbd{C-3 C-c / t}. To collect Lucy's items
3463 from all agenda files into a single buffer, you would use the numeric prefix
3464 argument as well when creating the global TODO list: @kbd{C-3 C-c a t}.
3465
3466 @node Multiple sets in one file, Fast access to TODO states, TODO types, TODO extensions
3467 @subsection Multiple keyword sets in one file
3468 @cindex TODO keyword sets
3469
3470 Sometimes you may want to use different sets of TODO keywords in
3471 parallel. For example, you may want to have the basic
3472 @code{TODO}/@code{DONE}, but also a workflow for bug fixing, and a
3473 separate state indicating that an item has been canceled (so it is not
3474 DONE, but also does not require action). Your setup would then look
3475 like this:
3476
3477 @lisp
3478 (setq org-todo-keywords
3479 '((sequence "TODO" "|" "DONE")
3480 (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
3481 (sequence "|" "CANCELED")))
3482 @end lisp
3483
3484 The keywords should all be different, this helps Org-mode to keep track
3485 of which subsequence should be used for a given entry. In this setup,
3486 @kbd{C-c C-t} only operates within a subsequence, so it switches from
3487 @code{DONE} to (nothing) to @code{TODO}, and from @code{FIXED} to
3488 (nothing) to @code{REPORT}. Therefore you need a mechanism to initially
3489 select the correct sequence. Besides the obvious ways like typing a
3490 keyword or using completion, you may also apply the following commands:
3491
3492 @table @kbd
3493 @kindex C-S-@key{right}
3494 @kindex C-S-@key{left}
3495 @kindex C-u C-u C-c C-t
3496 @item C-u C-u C-c C-t
3497 @itemx C-S-@key{right}
3498 @itemx C-S-@key{left}
3499 These keys jump from one TODO subset to the next. In the above example,
3500 @kbd{C-u C-u C-c C-t} or @kbd{C-S-@key{right}} would jump from @code{TODO} or
3501 @code{DONE} to @code{REPORT}, and any of the words in the second row to
3502 @code{CANCELED}. Note that the @kbd{C-S-} key binding conflict with
3503 @code{shift-selection-mode} (@pxref{Conflicts}).
3504 @kindex S-@key{right}
3505 @kindex S-@key{left}
3506 @item S-@key{right}
3507 @itemx S-@key{left}
3508 @kbd{S-@key{<left>}} and @kbd{S-@key{<right>}} and walk through @emph{all}
3509 keywords from all sets, so for example @kbd{S-@key{<right>}} would switch
3510 from @code{DONE} to @code{REPORT} in the example above. See also
3511 @ref{Conflicts}, for a discussion of the interaction with
3512 @code{shift-selection-mode}.
3513 @end table
3514
3515 @node Fast access to TODO states, Per-file keywords, Multiple sets in one file, TODO extensions
3516 @subsection Fast access to TODO states
3517
3518 If you would like to quickly change an entry to an arbitrary TODO state
3519 instead of cycling through the states, you can set up keys for
3520 single-letter access to the states. This is done by adding the section
3521 key after each keyword, in parentheses. For example:
3522
3523 @lisp
3524 (setq org-todo-keywords
3525 '((sequence "TODO(t)" "|" "DONE(d)")
3526 (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
3527 (sequence "|" "CANCELED(c)")))
3528 @end lisp
3529
3530 @vindex org-fast-tag-selection-include-todo
3531 If you then press @code{C-c C-t} followed by the selection key, the entry
3532 will be switched to this state. @key{SPC} can be used to remove any TODO
3533 keyword from an entry.@footnote{Check also the variable
3534 @code{org-fast-tag-selection-include-todo}, it allows you to change the TODO
3535 state through the tags interface (@pxref{Setting tags}), in case you like to
3536 mingle the two concepts. Note that this means you need to come up with
3537 unique keys across both sets of keywords.}
3538
3539 @node Per-file keywords, Faces for TODO keywords, Fast access to TODO states, TODO extensions
3540 @subsection Setting up keywords for individual files
3541 @cindex keyword options
3542 @cindex per-file keywords
3543 @cindex #+TODO
3544 @cindex #+TYP_TODO
3545 @cindex #+SEQ_TODO
3546
3547 It can be very useful to use different aspects of the TODO mechanism in
3548 different files. For file-local settings, you need to add special lines
3549 to the file which set the keywords and interpretation for that file
3550 only. For example, to set one of the two examples discussed above, you
3551 need one of the following lines, starting in column zero anywhere in the
3552 file:
3553
3554 @example
3555 #+TODO: TODO FEEDBACK VERIFY | DONE CANCELED
3556 @end example
3557 @noindent (you may also write @code{#+SEQ_TODO} to be explicit about the
3558 interpretation, but it means the same as @code{#+TODO}), or
3559 @example
3560 #+TYP_TODO: Fred Sara Lucy Mike | DONE
3561 @end example
3562
3563 A setup for using several sets in parallel would be:
3564
3565 @example
3566 #+TODO: TODO | DONE
3567 #+TODO: REPORT BUG KNOWNCAUSE | FIXED
3568 #+TODO: | CANCELED
3569 @end example
3570
3571 @cindex completion, of option keywords
3572 @kindex M-@key{TAB}
3573 @noindent To make sure you are using the correct keyword, type
3574 @samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
3575
3576 @cindex DONE, final TODO keyword
3577 Remember that the keywords after the vertical bar (or the last keyword
3578 if no bar is there) must always mean that the item is DONE (although you
3579 may use a different word). After changing one of these lines, use
3580 @kbd{C-c C-c} with the cursor still in the line to make the changes
3581 known to Org-mode@footnote{Org-mode parses these lines only when
3582 Org-mode is activated after visiting a file. @kbd{C-c C-c} with the
3583 cursor in a line starting with @samp{#+} is simply restarting Org-mode
3584 for the current buffer.}.
3585
3586 @node Faces for TODO keywords, TODO dependencies, Per-file keywords, TODO extensions
3587 @subsection Faces for TODO keywords
3588 @cindex faces, for TODO keywords
3589
3590 @vindex org-todo @r{(face)}
3591 @vindex org-done @r{(face)}
3592 @vindex org-todo-keyword-faces
3593 Org-mode highlights TODO keywords with special faces: @code{org-todo}
3594 for keywords indicating that an item still has to be acted upon, and
3595 @code{org-done} for keywords indicating that an item is finished. If
3596 you are using more than 2 different states, you might want to use
3597 special faces for some of them. This can be done using the variable
3598 @code{org-todo-keyword-faces}. For example:
3599
3600 @lisp
3601 @group
3602 (setq org-todo-keyword-faces
3603 '(("TODO" . org-warning) ("STARTED" . "yellow")
3604 ("CANCELED" . (:foreground "blue" :weight bold))))
3605 @end group
3606 @end lisp
3607
3608 While using a list with face properties as shown for CANCELED @emph{should}
3609 work, this does not aways seem to be the case. If necessary, define a
3610 special face and use that. A string is interpreted as a color. The variable
3611 @code{org-faces-easy-properties} determines if that color is interpreted as a
3612 foreground or a background color.
3613
3614 @node TODO dependencies, , Faces for TODO keywords, TODO extensions
3615 @subsection TODO dependencies
3616 @cindex TODO dependencies
3617 @cindex dependencies, of TODO states
3618
3619 @vindex org-enforce-todo-dependencies
3620 @cindex property, ORDERED
3621 The structure of Org files (hierarchy and lists) makes it easy to define TODO
3622 dependencies. Usually, a parent TODO task should not be marked DONE until
3623 all subtasks (defined as children tasks) are marked as DONE. And sometimes
3624 there is a logical sequence to a number of (sub)tasks, so that one task
3625 cannot be acted upon before all siblings above it are done. If you customize
3626 the variable @code{org-enforce-todo-dependencies}, Org will block entries
3627 from changing state to DONE while they have children that are not DONE.
3628 Furthermore, if an entry has a property @code{ORDERED}, each of its children
3629 will be blocked until all earlier siblings are marked DONE. Here is an
3630 example:
3631
3632 @example
3633 * TODO Blocked until (two) is done
3634 ** DONE one
3635 ** TODO two
3636
3637 * Parent
3638 :PROPERTIES:
3639 :ORDERED: t
3640 :END:
3641 ** TODO a
3642 ** TODO b, needs to wait for (a)
3643 ** TODO c, needs to wait for (a) and (b)
3644 @end example
3645
3646 @table @kbd
3647 @kindex C-c C-x o
3648 @item C-c C-x o
3649 @vindex org-track-ordered-property-with-tag
3650 @cindex property, ORDERED
3651 Toggle the @code{ORDERED} property of the current entry. A property is used
3652 for this behavior because this should be local to the current entry, not
3653 inherited like a tag. However, if you would like to @i{track} the value of
3654 this property with a tag for better visibility, customize the variable
3655 @code{org-track-ordered-property-with-tag}.
3656 @kindex C-u C-u C-u C-c C-t
3657 @item C-u C-u C-u C-c C-t
3658 Change TODO state, circumventing any state blocking.
3659 @end table
3660
3661 @vindex org-agenda-dim-blocked-tasks
3662 If you set the variable @code{org-agenda-dim-blocked-tasks}, TODO entries
3663 that cannot be closed because of such dependencies will be shown in a dimmed
3664 font or even made invisible in agenda views (@pxref{Agenda Views}).
3665
3666 @cindex checkboxes and TODO dependencies
3667 @vindex org-enforce-todo-dependencies
3668 You can also block changes of TODO states by looking at checkboxes
3669 (@pxref{Checkboxes}). If you set the variable
3670 @code{org-enforce-todo-checkbox-dependencies}, an entry that has unchecked
3671 checkboxes will be blocked from switching to DONE.
3672
3673 If you need more complex dependency structures, for example dependencies
3674 between entries in different trees or files, check out the contributed
3675 module @file{org-depend.el}.
3676
3677 @page
3678 @node Progress logging, Priorities, TODO extensions, TODO Items
3679 @section Progress logging
3680 @cindex progress logging
3681 @cindex logging, of progress
3682
3683 Org-mode can automatically record a timestamp and possibly a note when
3684 you mark a TODO item as DONE, or even each time you change the state of
3685 a TODO item. This system is highly configurable, settings can be on a
3686 per-keyword basis and can be localized to a file or even a subtree. For
3687 information on how to clock working time for a task, see @ref{Clocking
3688 work time}.
3689
3690 @menu
3691 * Closing items:: When was this entry marked DONE?
3692 * Tracking TODO state changes:: When did the status change?
3693 * Tracking your habits:: How consistent have you been?
3694 @end menu
3695
3696 @node Closing items, Tracking TODO state changes, Progress logging, Progress logging
3697 @subsection Closing items
3698
3699 The most basic logging is to keep track of @emph{when} a certain TODO
3700 item was finished. This is achieved with@footnote{The corresponding
3701 in-buffer setting is: @code{#+STARTUP: logdone}}.
3702
3703 @lisp
3704 (setq org-log-done 'time)
3705 @end lisp
3706
3707 @noindent
3708 Then each time you turn an entry from a TODO (not-done) state into any
3709 of the DONE states, a line @samp{CLOSED: [timestamp]} will be inserted
3710 just after the headline. If you turn the entry back into a TODO item
3711 through further state cycling, that line will be removed again. If you
3712 want to record a note along with the timestamp, use@footnote{The
3713 corresponding in-buffer setting is: @code{#+STARTUP: lognotedone}}
3714
3715 @lisp
3716 (setq org-log-done 'note)
3717 @end lisp
3718
3719 @noindent
3720 You will then be prompted for a note, and that note will be stored below
3721 the entry with a @samp{Closing Note} heading.
3722
3723 In the timeline (@pxref{Timeline}) and in the agenda
3724 (@pxref{Weekly/daily agenda}), you can then use the @kbd{l} key to
3725 display the TODO items with a @samp{CLOSED} timestamp on each day,
3726 giving you an overview of what has been done.
3727
3728 @node Tracking TODO state changes, Tracking your habits, Closing items, Progress logging
3729 @subsection Tracking TODO state changes
3730 @cindex drawer, for state change recording
3731
3732 @vindex org-log-states-order-reversed
3733 @vindex org-log-into-drawer
3734 @cindex property, LOG_INTO_DRAWER
3735 When TODO keywords are used as workflow states (@pxref{Workflow states}), you
3736 might want to keep track of when a state change occurred and maybe take a
3737 note about this change. You can either record just a timestamp, or a
3738 time-stamped note for a change. These records will be inserted after the
3739 headline as an itemized list, newest first@footnote{See the variable
3740 @code{org-log-states-order-reversed}}. When taking a lot of notes, you might
3741 want to get the notes out of the way into a drawer (@pxref{Drawers}).
3742 Customize the variable @code{org-log-into-drawer} to get this
3743 behavior---the recommended drawer for this is called @code{LOGBOOK}. You can
3744 also overrule the setting of this variable for a subtree by setting a
3745 @code{LOG_INTO_DRAWER} property.
3746
3747 Since it is normally too much to record a note for every state, Org-mode
3748 expects configuration on a per-keyword basis for this. This is achieved by
3749 adding special markers @samp{!} (for a timestamp) and @samp{@@} (for a note)
3750 in parentheses after each keyword. For example, with the setting
3751
3752 @lisp
3753 (setq org-todo-keywords
3754 '((sequence "TODO(t)" "WAIT(w@@/!)" "|" "DONE(d!)" "CANCELED(c@@)")))
3755 @end lisp
3756
3757 @noindent
3758 @vindex org-log-done
3759 you not only define global TODO keywords and fast access keys, but also
3760 request that a time is recorded when the entry is set to
3761 DONE@footnote{It is possible that Org-mode will record two timestamps
3762 when you are using both @code{org-log-done} and state change logging.
3763 However, it will never prompt for two notes---if you have configured
3764 both, the state change recording note will take precedence and cancel
3765 the @samp{Closing Note}.}, and that a note is recorded when switching to
3766 WAIT or CANCELED. The setting for WAIT is even more special: the
3767 @samp{!} after the slash means that in addition to the note taken when
3768 entering the state, a timestamp should be recorded when @i{leaving} the
3769 WAIT state, if and only if the @i{target} state does not configure
3770 logging for entering it. So it has no effect when switching from WAIT
3771 to DONE, because DONE is configured to record a timestamp only. But
3772 when switching from WAIT back to TODO, the @samp{/!} in the WAIT
3773 setting now triggers a timestamp even though TODO has no logging
3774 configured.
3775
3776 You can use the exact same syntax for setting logging preferences local
3777 to a buffer:
3778 @example
3779 #+TODO: TODO(t) WAIT(w@@/!) | DONE(d!) CANCELED(c@@)
3780 @end example
3781
3782 @cindex property, LOGGING
3783 In order to define logging settings that are local to a subtree or a
3784 single item, define a LOGGING property in this entry. Any non-empty
3785 LOGGING property resets all logging settings to nil. You may then turn
3786 on logging for this specific tree using STARTUP keywords like
3787 @code{lognotedone} or @code{logrepeat}, as well as adding state specific
3788 settings like @code{TODO(!)}. For example
3789
3790 @example
3791 * TODO Log each state with only a time
3792 :PROPERTIES:
3793 :LOGGING: TODO(!) WAIT(!) DONE(!) CANCELED(!)
3794 :END:
3795 * TODO Only log when switching to WAIT, and when repeating
3796 :PROPERTIES:
3797 :LOGGING: WAIT(@@) logrepeat
3798 :END:
3799 * TODO No logging at all
3800 :PROPERTIES:
3801 :LOGGING: nil
3802 :END:
3803 @end example
3804
3805 @node Tracking your habits, , Tracking TODO state changes, Progress logging
3806 @subsection Tracking your habits
3807 @cindex habits
3808
3809 Org has the ability to track the consistency of a special category of TODOs,
3810 called ``habits''. A habit has the following properties:
3811
3812 @enumerate
3813 @item
3814 You have enabled the @code{habits} module by customizing the variable
3815 @code{org-modules}.
3816 @item
3817 The habit is a TODO, with a TODO keyword representing an open state.
3818 @item
3819 The property @code{STYLE} is set to the value @code{habit}.
3820 @item
3821 The TODO has a scheduled date, usually with a @code{.+} style repeat
3822 interval. A @code{++} style may be appropriate for habits with time
3823 constraints, e.g., must be done on weekends, or a @code{+} style for an
3824 unusual habit that can have a backlog, e.g., weekly reports.
3825 @item
3826 The TODO may also have minimum and maximum ranges specified by using the
3827 syntax @samp{.+2d/3d}, which says that you want to do the task at least every
3828 three days, but at most every two days.
3829 @item
3830 You must also have state logging for the @code{DONE} state enabled, in order
3831 for historical data to be represented in the consistency graph. If it's not
3832 enabled it's not an error, but the consistency graphs will be largely
3833 meaningless.
3834 @end enumerate
3835
3836 To give you an idea of what the above rules look like in action, here's an
3837 actual habit with some history:
3838
3839 @example
3840 ** TODO Shave
3841 SCHEDULED: <2009-10-17 Sat .+2d/4d>
3842 - State "DONE" from "TODO" [2009-10-15 Thu]
3843 - State "DONE" from "TODO" [2009-10-12 Mon]
3844 - State "DONE" from "TODO" [2009-10-10 Sat]
3845 - State "DONE" from "TODO" [2009-10-04 Sun]
3846 - State "DONE" from "TODO" [2009-10-02 Fri]
3847 - State "DONE" from "TODO" [2009-09-29 Tue]
3848 - State "DONE" from "TODO" [2009-09-25 Fri]
3849 - State "DONE" from "TODO" [2009-09-19 Sat]
3850 - State "DONE" from "TODO" [2009-09-16 Wed]
3851 - State "DONE" from "TODO" [2009-09-12 Sat]
3852 :PROPERTIES:
3853 :STYLE: habit
3854 :LAST_REPEAT: [2009-10-19 Mon 00:36]
3855 :END:
3856 @end example
3857
3858 What this habit says is: I want to shave at most every 2 days (given by the
3859 @code{SCHEDULED} date and repeat interval) and at least every 4 days. If
3860 today is the 15th, then the habit first appears in the agenda on Oct 17,
3861 after the minimum of 2 days has elapsed, and will appear overdue on Oct 19,
3862 after four days have elapsed.
3863
3864 What's really useful about habits is that they are displayed along with a
3865 consistency graph, to show how consistent you've been at getting that task
3866 done in the past. This graph shows every day that the task was done over the
3867 past three weeks, with colors for each day. The colors used are:
3868
3869 @table @code
3870 @item Blue
3871 If the task wasn't to be done yet on that day.
3872 @item Green
3873 If the task could have been done on that day.
3874 @item Yellow
3875 If the task was going to be overdue the next day.
3876 @item Red
3877 If the task was overdue on that day.
3878 @end table
3879
3880 In addition to coloring each day, the day is also marked with an asterisk if
3881 the task was actually done that day, and an exclamation mark to show where
3882 the current day falls in the graph.
3883
3884 There are several configuration variables that can be used to change the way
3885 habits are displayed in the agenda.
3886
3887 @table @code
3888 @item org-habit-graph-column
3889 The buffer column at which the consistency graph should be drawn. This will
3890 overwrite any text in that column, so it's a good idea to keep your habits'
3891 titles brief and to the point.
3892 @item org-habit-preceding-days
3893 The amount of history, in days before today, to appear in consistency graphs.
3894 @item org-habit-following-days
3895 The number of days after today that will appear in consistency graphs.
3896 @item org-habit-show-habits-only-for-today
3897 If non-nil, only show habits in today's agenda view. This is set to true by
3898 default.
3899 @end table
3900
3901 Lastly, pressing @kbd{K} in the agenda buffer will cause habits to
3902 temporarily be disabled and they won't appear at all. Press @kbd{K} again to
3903 bring them back. They are also subject to tag filtering, if you have habits
3904 which should only be done in certain contexts, for example.
3905
3906 @node Priorities, Breaking down tasks, Progress logging, TODO Items
3907 @section Priorities
3908 @cindex priorities
3909
3910 If you use Org-mode extensively, you may end up with enough TODO items that
3911 it starts to make sense to prioritize them. Prioritizing can be done by
3912 placing a @emph{priority cookie} into the headline of a TODO item, like this
3913
3914 @example
3915 *** TODO [#A] Write letter to Sam Fortune
3916 @end example
3917
3918 @noindent
3919 @vindex org-priority-faces
3920 By default, Org-mode supports three priorities: @samp{A}, @samp{B}, and
3921 @samp{C}. @samp{A} is the highest priority. An entry without a cookie is
3922 treated just like priority @samp{B}. Priorities make a difference only for
3923 sorting in the agenda (@pxref{Weekly/daily agenda}); outside the agenda, they
3924 have no inherent meaning to Org-mode. The cookies can be highlighted with
3925 special faces by customizing the variable @code{org-priority-faces}.
3926
3927 Priorities can be attached to any outline node; they do not need to be TODO
3928 items.
3929
3930 @table @kbd
3931 @kindex @kbd{C-c ,}
3932 @item @kbd{C-c ,}
3933 Set the priority of the current headline. The command prompts for a
3934 priority character @samp{A}, @samp{B} or @samp{C}. When you press
3935 @key{SPC} instead, the priority cookie is removed from the headline.
3936 The priorities can also be changed ``remotely'' from the timeline and
3937 agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
3938 @c
3939 @kindex S-@key{up}
3940 @kindex S-@key{down}
3941 @item S-@key{up}
3942 @itemx S-@key{down}
3943 @vindex org-priority-start-cycle-with-default
3944 Increase/decrease priority of current headline@footnote{See also the option
3945 @code{org-priority-start-cycle-with-default}.}. Note that these keys are
3946 also used to modify timestamps (@pxref{Creating timestamps}). See also
3947 @ref{Conflicts}, for a discussion of the interaction with
3948 @code{shift-selection-mode}.
3949 @end table
3950
3951 @vindex org-highest-priority
3952 @vindex org-lowest-priority
3953 @vindex org-default-priority
3954 You can change the range of allowed priorities by setting the variables
3955 @code{org-highest-priority}, @code{org-lowest-priority}, and
3956 @code{org-default-priority}. For an individual buffer, you may set
3957 these values (highest, lowest, default) like this (please make sure that
3958 the highest priority is earlier in the alphabet than the lowest
3959 priority):
3960
3961 @cindex #+PRIORITIES
3962 @example
3963 #+PRIORITIES: A C B
3964 @end example
3965
3966 @node Breaking down tasks, Checkboxes, Priorities, TODO Items
3967 @section Breaking tasks down into subtasks
3968 @cindex tasks, breaking down
3969 @cindex statistics, for TODO items
3970
3971 @vindex org-agenda-todo-list-sublevels
3972 It is often advisable to break down large tasks into smaller, manageable
3973 subtasks. You can do this by creating an outline tree below a TODO item,
3974 with detailed subtasks on the tree@footnote{To keep subtasks out of the
3975 global TODO list, see the @code{org-agenda-todo-list-sublevels}.}. To keep
3976 the overview over the fraction of subtasks that are already completed, insert
3977 either @samp{[/]} or @samp{[%]} anywhere in the headline. These cookies will
3978 be updated each time the TODO status of a child changes, or when pressing
3979 @kbd{C-c C-c} on the cookie. For example:
3980
3981 @example
3982 * Organize Party [33%]
3983 ** TODO Call people [1/2]
3984 *** TODO Peter
3985 *** DONE Sarah
3986 ** TODO Buy food
3987 ** DONE Talk to neighbor
3988 @end example
3989
3990 @cindex property, COOKIE_DATA
3991 If a heading has both checkboxes and TODO children below it, the meaning of
3992 the statistics cookie become ambiguous. Set the property
3993 @code{COOKIE_DATA} to either @samp{checkbox} or @samp{todo} to resolve
3994 this issue.
3995
3996 @vindex org-hierarchical-todo-statistics
3997 If you would like to have the statistics cookie count any TODO entries in the
3998 subtree (not just direct children), configure the variable
3999 @code{org-hierarchical-todo-statistics}. To do this for a single subtree,
4000 include the word @samp{recursive} into the value of the @code{COOKIE_DATA}
4001 property.
4002
4003 @example
4004 * Parent capturing statistics [2/20]
4005 :PROPERTIES:
4006 :COOKIE_DATA: todo recursive
4007 :END:
4008 @end example
4009
4010 If you would like a TODO entry to automatically change to DONE
4011 when all children are done, you can use the following setup:
4012
4013 @example
4014 (defun org-summary-todo (n-done n-not-done)
4015 "Switch entry to DONE when all subentries are done, to TODO otherwise."
4016 (let (org-log-done org-log-states) ; turn off logging
4017 (org-todo (if (= n-not-done 0) "DONE" "TODO"))))
4018
4019 (add-hook 'org-after-todo-statistics-hook 'org-summary-todo)
4020 @end example
4021
4022
4023 Another possibility is the use of checkboxes to identify (a hierarchy of) a
4024 large number of subtasks (@pxref{Checkboxes}).
4025
4026
4027 @node Checkboxes, , Breaking down tasks, TODO Items
4028 @section Checkboxes
4029 @cindex checkboxes
4030
4031 @vindex org-list-automatic-rules
4032 Every item in a plain list@footnote{With the exception of description
4033 lists. But you can allow it by modifying @code{org-list-automatic-rules}
4034 accordingly.} (@pxref{Plain lists}) can be made into a checkbox by starting
4035 it with the string @samp{[ ]}. This feature is similar to TODO items
4036 (@pxref{TODO Items}), but is more lightweight. Checkboxes are not included
4037 into the global TODO list, so they are often great to split a task into a
4038 number of simple steps. Or you can use them in a shopping list. To toggle a
4039 checkbox, use @kbd{C-c C-c}, or use the mouse (thanks to Piotr Zielinski's
4040 @file{org-mouse.el}).
4041
4042 Here is an example of a checkbox list.
4043
4044 @example
4045 * TODO Organize party [2/4]
4046 - [-] call people [1/3]
4047 - [ ] Peter
4048 - [X] Sarah
4049 - [ ] Sam
4050 - [X] order food
4051 - [ ] think about what music to play
4052 - [X] talk to the neighbors
4053 @end example
4054
4055 Checkboxes work hierarchically, so if a checkbox item has children that
4056 are checkboxes, toggling one of the children checkboxes will make the
4057 parent checkbox reflect if none, some, or all of the children are
4058 checked.
4059
4060 @cindex statistics, for checkboxes
4061 @cindex checkbox statistics
4062 @cindex property, COOKIE_DATA
4063 @vindex org-hierarchical-checkbox-statistics
4064 The @samp{[2/4]} and @samp{[1/3]} in the first and second line are cookies
4065 indicating how many checkboxes present in this entry have been checked off,
4066 and the total number of checkboxes present. This can give you an idea on how
4067 many checkboxes remain, even without opening a folded entry. The cookies can
4068 be placed into a headline or into (the first line of) a plain list item.
4069 Each cookie covers checkboxes of direct children structurally below the
4070 headline/item on which the cookie appears@footnote{Set the variable
4071 @code{org-hierarchical-checkbox-statistics} if you want such cookies to
4072 represent the all checkboxes below the cookie, not just the direct
4073 children.}. You have to insert the cookie yourself by typing either
4074 @samp{[/]} or @samp{[%]}. With @samp{[/]} you get an @samp{n out of m}
4075 result, as in the examples above. With @samp{[%]} you get information about
4076 the percentage of checkboxes checked (in the above example, this would be
4077 @samp{[50%]} and @samp{[33%]}, respectively). In a headline, a cookie can
4078 count either checkboxes below the heading or TODO states of children, and it
4079 will display whatever was changed last. Set the property @code{COOKIE_DATA}
4080 to either @samp{checkbox} or @samp{todo} to resolve this issue.
4081
4082 @cindex blocking, of checkboxes
4083 @cindex checkbox blocking
4084 @cindex property, ORDERED
4085 If the current outline node has an @code{ORDERED} property, checkboxes must
4086 be checked off in sequence, and an error will be thrown if you try to check
4087 off a box while there are unchecked boxes above it.
4088
4089 @noindent The following commands work with checkboxes:
4090
4091 @table @kbd
4092 @kindex C-c C-c
4093 @item C-c C-c
4094 Toggle checkbox status or (with prefix arg) checkbox presence at point. With
4095 double prefix argument, set it to @samp{[-]}, which is considered to be an
4096 intermediate state.
4097 @kindex C-c C-x C-b
4098 @item C-c C-x C-b
4099 Toggle checkbox status or (with prefix arg) checkbox presence at point. With
4100 double prefix argument, set it to @samp{[-]}, which is considered to be an
4101 intermediate state.
4102 @itemize @minus
4103 @item
4104 If there is an active region, toggle the first checkbox in the region
4105 and set all remaining boxes to the same status as the first. With a prefix
4106 arg, add or remove the checkbox for all items in the region.
4107 @item
4108 If the cursor is in a headline, toggle checkboxes in the region between
4109 this headline and the next (so @emph{not} the entire subtree).
4110 @item
4111 If there is no active region, just toggle the checkbox at point.
4112 @end itemize
4113 @kindex M-S-@key{RET}
4114 @item M-S-@key{RET}
4115 Insert a new item with a checkbox.
4116 This works only if the cursor is already in a plain list item
4117 (@pxref{Plain lists}).
4118 @kindex C-c C-x o
4119 @item C-c C-x o
4120 @vindex org-track-ordered-property-with-tag
4121 @cindex property, ORDERED
4122 Toggle the @code{ORDERED} property of the entry, to toggle if checkboxes must
4123 be checked off in sequence. A property is used for this behavior because
4124 this should be local to the current entry, not inherited like a tag.
4125 However, if you would like to @i{track} the value of this property with a tag
4126 for better visibility, customize the variable
4127 @code{org-track-ordered-property-with-tag}.
4128 @kindex C-c #
4129 @item C-c #
4130 Update the statistics cookie in the current outline entry. When called with
4131 a @kbd{C-u} prefix, update the entire file. Checkbox statistic cookies are
4132 updated automatically if you toggle checkboxes with @kbd{C-c C-c} and make
4133 new ones with @kbd{M-S-@key{RET}}. TODO statistics cookies update when
4134 changing TODO states. If you delete boxes/entries or add/change them by
4135 hand, use this command to get things back into sync. Or simply toggle any
4136 entry twice (checkboxes with @kbd{C-c C-c}).
4137 @end table
4138
4139 @node Tags, Properties and Columns, TODO Items, Top
4140 @chapter Tags
4141 @cindex tags
4142 @cindex headline tagging
4143 @cindex matching, tags
4144 @cindex sparse tree, tag based
4145
4146 An excellent way to implement labels and contexts for cross-correlating
4147 information is to assign @i{tags} to headlines. Org-mode has extensive
4148 support for tags.
4149
4150 @vindex org-tag-faces
4151 Every headline can contain a list of tags; they occur at the end of the
4152 headline. Tags are normal words containing letters, numbers, @samp{_}, and
4153 @samp{@@}. Tags must be preceded and followed by a single colon, e.g.,
4154 @samp{:work:}. Several tags can be specified, as in @samp{:work:urgent:}.
4155 Tags will by default be in bold face with the same color as the headline.
4156 You may specify special faces for specific tags using the variable
4157 @code{org-tag-faces}, in much the same way as you can for TODO keywords
4158 (@pxref{Faces for TODO keywords}).
4159
4160 @menu
4161 * Tag inheritance:: Tags use the tree structure of the outline
4162 * Setting tags:: How to assign tags to a headline
4163 * Tag searches:: Searching for combinations of tags
4164 @end menu
4165
4166 @node Tag inheritance, Setting tags, Tags, Tags
4167 @section Tag inheritance
4168 @cindex tag inheritance
4169 @cindex inheritance, of tags
4170 @cindex sublevels, inclusion into tags match
4171
4172 @i{Tags} make use of the hierarchical structure of outline trees. If a
4173 heading has a certain tag, all subheadings will inherit the tag as
4174 well. For example, in the list
4175
4176 @example
4177 * Meeting with the French group :work:
4178 ** Summary by Frank :boss:notes:
4179 *** TODO Prepare slides for him :action:
4180 @end example
4181
4182 @noindent
4183 the final heading will have the tags @samp{:work:}, @samp{:boss:},
4184 @samp{:notes:}, and @samp{:action:} even though the final heading is not
4185 explicitly marked with those tags. You can also set tags that all entries in
4186 a file should inherit just as if these tags were defined in a hypothetical
4187 level zero that surrounds the entire file. Use a line like this@footnote{As
4188 with all these in-buffer settings, pressing @kbd{C-c C-c} activates any
4189 changes in the line.}:
4190
4191 @cindex #+FILETAGS
4192 @example
4193 #+FILETAGS: :Peter:Boss:Secret:
4194 @end example
4195
4196 @noindent
4197 @vindex org-use-tag-inheritance
4198 @vindex org-tags-exclude-from-inheritance
4199 To limit tag inheritance to specific tags, or to turn it off entirely, use
4200 the variables @code{org-use-tag-inheritance} and
4201 @code{org-tags-exclude-from-inheritance}.
4202
4203 @vindex org-tags-match-list-sublevels
4204 When a headline matches during a tags search while tag inheritance is turned
4205 on, all the sublevels in the same tree will (for a simple match form) match
4206 as well@footnote{This is only true if the search does not involve more
4207 complex tests including properties (@pxref{Property searches}).}. The list
4208 of matches may then become very long. If you only want to see the first tags
4209 match in a subtree, configure the variable
4210 @code{org-tags-match-list-sublevels} (not recommended).
4211
4212 @node Setting tags, Tag searches, Tag inheritance, Tags
4213 @section Setting tags
4214 @cindex setting tags
4215 @cindex tags, setting
4216
4217 @kindex M-@key{TAB}
4218 Tags can simply be typed into the buffer at the end of a headline.
4219 After a colon, @kbd{M-@key{TAB}} offers completion on tags. There is
4220 also a special command for inserting tags:
4221
4222 @table @kbd
4223 @kindex C-c C-q
4224 @item C-c C-q
4225 @cindex completion, of tags
4226 @vindex org-tags-column
4227 Enter new tags for the current headline. Org-mode will either offer
4228 completion or a special single-key interface for setting tags, see
4229 below. After pressing @key{RET}, the tags will be inserted and aligned
4230 to @code{org-tags-column}. When called with a @kbd{C-u} prefix, all
4231 tags in the current buffer will be aligned to that column, just to make
4232 things look nice. TAGS are automatically realigned after promotion,
4233 demotion, and TODO state changes (@pxref{TODO basics}).
4234 @kindex C-c C-c
4235 @item C-c C-c
4236 When the cursor is in a headline, this does the same as @kbd{C-c C-q}.
4237 @end table
4238
4239 @vindex org-tag-alist
4240 Org will support tag insertion based on a @emph{list of tags}. By
4241 default this list is constructed dynamically, containing all tags
4242 currently used in the buffer. You may also globally specify a hard list
4243 of tags with the variable @code{org-tag-alist}. Finally you can set
4244 the default tags for a given file with lines like
4245
4246 @cindex #+TAGS
4247 @example
4248 #+TAGS: @@work @@home @@tennisclub
4249 #+TAGS: laptop car pc sailboat
4250 @end example
4251
4252 If you have globally defined your preferred set of tags using the
4253 variable @code{org-tag-alist}, but would like to use a dynamic tag list
4254 in a specific file, add an empty TAGS option line to that file:
4255
4256 @example
4257 #+TAGS:
4258 @end example
4259
4260 @vindex org-tag-persistent-alist
4261 If you have a preferred set of tags that you would like to use in every file,
4262 in addition to those defined on a per-file basis by TAGS option lines, then
4263 you may specify a list of tags with the variable
4264 @code{org-tag-persistent-alist}. You may turn this off on a per-file basis
4265 by adding a STARTUP option line to that file:
4266
4267 @example
4268 #+STARTUP: noptag
4269 @end example
4270
4271 By default Org-mode uses the standard minibuffer completion facilities for
4272 entering tags. However, it also implements another, quicker, tag selection
4273 method called @emph{fast tag selection}. This allows you to select and
4274 deselect tags with just a single key press. For this to work well you should
4275 assign unique letters to most of your commonly used tags. You can do this
4276 globally by configuring the variable @code{org-tag-alist} in your
4277 @file{.emacs} file. For example, you may find the need to tag many items in
4278 different files with @samp{:@@home:}. In this case you can set something
4279 like:
4280
4281 @lisp
4282 (setq org-tag-alist '(("@@work" . ?w) ("@@home" . ?h) ("laptop" . ?l)))
4283 @end lisp
4284
4285 @noindent If the tag is only relevant to the file you are working on, then you
4286 can instead set the TAGS option line as:
4287
4288 @example
4289 #+TAGS: @@work(w) @@home(h) @@tennisclub(t) laptop(l) pc(p)
4290 @end example
4291
4292 @noindent The tags interface will show the available tags in a splash
4293 window. If you want to start a new line after a specific tag, insert
4294 @samp{\n} into the tag list
4295
4296 @example
4297 #+TAGS: @@work(w) @@home(h) @@tennisclub(t) \n laptop(l) pc(p)
4298 @end example
4299
4300 @noindent or write them in two lines:
4301
4302 @example
4303 #+TAGS: @@work(w) @@home(h) @@tennisclub(t)
4304 #+TAGS: laptop(l) pc(p)
4305 @end example
4306
4307 @noindent
4308 You can also group together tags that are mutually exclusive by using
4309 braces, as in:
4310
4311 @example
4312 #+TAGS: @{ @@work(w) @@home(h) @@tennisclub(t) @} laptop(l) pc(p)
4313 @end example
4314
4315 @noindent you indicate that at most one of @samp{@@work}, @samp{@@home},
4316 and @samp{@@tennisclub} should be selected. Multiple such groups are allowed.
4317
4318 @noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
4319 these lines to activate any changes.
4320
4321 @noindent
4322 To set these mutually exclusive groups in the variable @code{org-tags-alist},
4323 you must use the dummy tags @code{:startgroup} and @code{:endgroup} instead
4324 of the braces. Similarly, you can use @code{:newline} to indicate a line
4325 break. The previous example would be set globally by the following
4326 configuration:
4327
4328 @lisp
4329 (setq org-tag-alist '((:startgroup . nil)
4330 ("@@work" . ?w) ("@@home" . ?h)
4331 ("@@tennisclub" . ?t)
4332 (:endgroup . nil)
4333 ("laptop" . ?l) ("pc" . ?p)))
4334 @end lisp
4335
4336 If at least one tag has a selection key then pressing @kbd{C-c C-c} will
4337 automatically present you with a special interface, listing inherited tags,
4338 the tags of the current headline, and a list of all valid tags with
4339 corresponding keys@footnote{Keys will automatically be assigned to tags which
4340 have no configured keys.}. In this interface, you can use the following
4341 keys:
4342
4343 @table @kbd
4344 @item a-z...
4345 Pressing keys assigned to tags will add or remove them from the list of
4346 tags in the current line. Selecting a tag in a group of mutually
4347 exclusive tags will turn off any other tags from that group.
4348 @kindex @key{TAB}
4349 @item @key{TAB}
4350 Enter a tag in the minibuffer, even if the tag is not in the predefined
4351 list. You will be able to complete on all tags present in the buffer.
4352 @kindex @key{SPC}
4353 @item @key{SPC}
4354 Clear all tags for this line.
4355 @kindex @key{RET}
4356 @item @key{RET}
4357 Accept the modified set.
4358 @item C-g
4359 Abort without installing changes.
4360 @item q
4361 If @kbd{q} is not assigned to a tag, it aborts like @kbd{C-g}.
4362 @item !
4363 Turn off groups of mutually exclusive tags. Use this to (as an
4364 exception) assign several tags from such a group.
4365 @item C-c
4366 Toggle auto-exit after the next change (see below).
4367 If you are using expert mode, the first @kbd{C-c} will display the
4368 selection window.
4369 @end table
4370
4371 @noindent
4372 This method lets you assign tags to a headline with very few keys. With
4373 the above setup, you could clear the current tags and set @samp{@@home},
4374 @samp{laptop} and @samp{pc} tags with just the following keys: @kbd{C-c
4375 C-c @key{SPC} h l p @key{RET}}. Switching from @samp{@@home} to
4376 @samp{@@work} would be done with @kbd{C-c C-c w @key{RET}} or
4377 alternatively with @kbd{C-c C-c C-c w}. Adding the non-predefined tag
4378 @samp{Sarah} could be done with @kbd{C-c C-c @key{TAB} S a r a h
4379 @key{RET} @key{RET}}.
4380
4381 @vindex org-fast-tag-selection-single-key
4382 If you find that most of the time you need only a single key press to
4383 modify your list of tags, set the variable
4384 @code{org-fast-tag-selection-single-key}. Then you no longer have to
4385 press @key{RET} to exit fast tag selection---it will immediately exit
4386 after the first change. If you then occasionally need more keys, press
4387 @kbd{C-c} to turn off auto-exit for the current tag selection process
4388 (in effect: start selection with @kbd{C-c C-c C-c} instead of @kbd{C-c
4389 C-c}). If you set the variable to the value @code{expert}, the special
4390 window is not even shown for single-key tag selection, it comes up only
4391 when you press an extra @kbd{C-c}.
4392
4393 @node Tag searches, , Setting tags, Tags
4394 @section Tag searches
4395 @cindex tag searches
4396 @cindex searching for tags
4397
4398 Once a system of tags has been set up, it can be used to collect related
4399 information into special lists.
4400
4401 @table @kbd
4402 @kindex C-c \
4403 @kindex C-c / m
4404 @item C-c \
4405 @itemx C-c / m
4406 Create a sparse tree with all headlines matching a tags search. With a
4407 @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
4408 @kindex C-c a m
4409 @item C-c a m
4410 Create a global list of tag matches from all agenda files.
4411 @xref{Matching tags and properties}.
4412 @kindex C-c a M
4413 @item C-c a M
4414 @vindex org-tags-match-list-sublevels
4415 Create a global list of tag matches from all agenda files, but check
4416 only TODO items and force checking subitems (see variable
4417 @code{org-tags-match-list-sublevels}).
4418 @end table
4419
4420 These commands all prompt for a match string which allows basic Boolean logic
4421 like @samp{+boss+urgent-project1}, to find entries with tags @samp{boss} and
4422 @samp{urgent}, but not @samp{project1}, or @samp{Kathy|Sally} to find entries
4423 which are tagged, like @samp{Kathy} or @samp{Sally}. The full syntax of the search
4424 string is rich and allows also matching against TODO keywords, entry levels
4425 and properties. For a complete description with many examples, see
4426 @ref{Matching tags and properties}.
4427
4428
4429 @node Properties and Columns, Dates and Times, Tags, Top
4430 @chapter Properties and columns
4431 @cindex properties
4432
4433 Properties are a set of key-value pairs associated with an entry. There
4434 are two main applications for properties in Org-mode. First, properties
4435 are like tags, but with a value. Second, you can use properties to
4436 implement (very basic) database capabilities in an Org buffer. For
4437 an example of the first application, imagine maintaining a file where
4438 you document bugs and plan releases for a piece of software. Instead of
4439 using tags like @code{:release_1:}, @code{:release_2:}, one can use a
4440 property, say @code{:Release:}, that in different subtrees has different
4441 values, such as @code{1.0} or @code{2.0}. For an example of the second
4442 application of properties, imagine keeping track of your music CDs,
4443 where properties could be things such as the album, artist, date of
4444 release, number of tracks, and so on.
4445
4446 Properties can be conveniently edited and viewed in column view
4447 (@pxref{Column view}).
4448
4449 @menu
4450 * Property syntax:: How properties are spelled out
4451 * Special properties:: Access to other Org-mode features
4452 * Property searches:: Matching property values
4453 * Property inheritance:: Passing values down the tree
4454 * Column view:: Tabular viewing and editing
4455 * Property API:: Properties for Lisp programmers
4456 @end menu
4457
4458 @node Property syntax, Special properties, Properties and Columns, Properties and Columns
4459 @section Property syntax
4460 @cindex property syntax
4461 @cindex drawer, for properties
4462
4463 Properties are key-value pairs. They need to be inserted into a special
4464 drawer (@pxref{Drawers}) with the name @code{PROPERTIES}. Each property
4465 is specified on a single line, with the key (surrounded by colons)
4466 first, and the value after it. Here is an example:
4467
4468 @example
4469 * CD collection
4470 ** Classic
4471 *** Goldberg Variations
4472 :PROPERTIES:
4473 :Title: Goldberg Variations
4474 :Composer: J.S. Bach
4475 :Artist: Glen Gould
4476 :Publisher: Deutsche Grammophon
4477 :NDisks: 1
4478 :END:
4479 @end example
4480
4481 You may define the allowed values for a particular property @samp{:Xyz:}
4482 by setting a property @samp{:Xyz_ALL:}. This special property is
4483 @emph{inherited}, so if you set it in a level 1 entry, it will apply to
4484 the entire tree. When allowed values are defined, setting the
4485 corresponding property becomes easier and is less prone to typing
4486 errors. For the example with the CD collection, we can predefine
4487 publishers and the number of disks in a box like this:
4488
4489 @example
4490 * CD collection
4491 :PROPERTIES:
4492 :NDisks_ALL: 1 2 3 4
4493 :Publisher_ALL: "Deutsche Grammophon" Philips EMI
4494 :END:
4495 @end example
4496
4497 If you want to set properties that can be inherited by any entry in a
4498 file, use a line like
4499 @cindex property, _ALL
4500 @cindex #+PROPERTY
4501 @example
4502 #+PROPERTY: NDisks_ALL 1 2 3 4
4503 @end example
4504
4505 @vindex org-global-properties
4506 Property values set with the global variable
4507 @code{org-global-properties} can be inherited by all entries in all
4508 Org files.
4509
4510 @noindent
4511 The following commands help to work with properties:
4512
4513 @table @kbd
4514 @kindex M-@key{TAB}
4515 @item M-@key{TAB}
4516 After an initial colon in a line, complete property keys. All keys used
4517 in the current file will be offered as possible completions.
4518 @kindex C-c C-x p
4519 @item C-c C-x p
4520 Set a property. This prompts for a property name and a value. If
4521 necessary, the property drawer is created as well.
4522 @item M-x org-insert-property-drawer
4523 Insert a property drawer into the current entry. The drawer will be
4524 inserted early in the entry, but after the lines with planning
4525 information like deadlines.
4526 @kindex C-c C-c
4527 @item C-c C-c
4528 With the cursor in a property drawer, this executes property commands.
4529 @item C-c C-c s
4530 Set a property in the current entry. Both the property and the value
4531 can be inserted using completion.
4532 @kindex S-@key{right}
4533 @kindex S-@key{left}
4534 @item S-@key{left}/@key{right}
4535 Switch property at point to the next/previous allowed value.
4536 @item C-c C-c d
4537 Remove a property from the current entry.
4538 @item C-c C-c D
4539 Globally remove a property, from all entries in the current file.
4540 @item C-c C-c c
4541 Compute the property at point, using the operator and scope from the
4542 nearest column format definition.
4543 @end table
4544
4545 @node Special properties, Property searches, Property syntax, Properties and Columns
4546 @section Special properties
4547 @cindex properties, special
4548
4549 Special properties provide an alternative access method to Org-mode
4550 features, like the TODO state or the priority of an entry, discussed in the
4551 previous chapters. This interface exists so that you can include
4552 these states in a column view (@pxref{Column view}), or to use them in
4553 queries. The following property names are special and should not be
4554 used as keys in the properties drawer:
4555
4556 @cindex property, special, TODO
4557 @cindex property, special, TAGS
4558 @cindex property, special, ALLTAGS
4559 @cindex property, special, CATEGORY
4560 @cindex property, special, PRIORITY
4561 @cindex property, special, DEADLINE
4562 @cindex property, special, SCHEDULED
4563 @cindex property, special, CLOSED
4564 @cindex property, special, TIMESTAMP
4565 @cindex property, special, TIMESTAMP_IA
4566 @cindex property, special, CLOCKSUM
4567 @cindex property, special, BLOCKED
4568 @c guessing that ITEM is needed in this area; also, should this list be sorted?
4569 @cindex property, special, ITEM
4570 @example
4571 TODO @r{The TODO keyword of the entry.}
4572 TAGS @r{The tags defined directly in the headline.}
4573 ALLTAGS @r{All tags, including inherited ones.}
4574 CATEGORY @r{The category of an entry.}
4575 PRIORITY @r{The priority of the entry, a string with a single letter.}
4576 DEADLINE @r{The deadline time string, without the angular brackets.}
4577 SCHEDULED @r{The scheduling timestamp, without the angular brackets.}
4578 CLOSED @r{When was this entry closed?}
4579 TIMESTAMP @r{The first keyword-less timestamp in the entry.}
4580 TIMESTAMP_IA @r{The first inactive timestamp in the entry.}
4581 CLOCKSUM @r{The sum of CLOCK intervals in the subtree. @code{org-clock-sum}}
4582 @r{must be run first to compute the values.}
4583 BLOCKED @r{"t" if task is currently blocked by children or siblings}
4584 ITEM @r{The content of the entry.}
4585 @end example
4586
4587 @node Property searches, Property inheritance, Special properties, Properties and Columns
4588 @section Property searches
4589 @cindex properties, searching
4590 @cindex searching, of properties
4591
4592 To create sparse trees and special lists with selection based on properties,
4593 the same commands are used as for tag searches (@pxref{Tag searches}).
4594 @table @kbd
4595 @kindex C-c \
4596 @kindex C-c / m
4597 @item C-c \
4598 @itemx C-c / m
4599 Create a sparse tree with all matching entries. With a
4600 @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
4601 @kindex C-c a m
4602 @item C-c a m
4603 Create a global list of tag/property matches from all agenda files.
4604 @xref{Matching tags and properties}.
4605 @kindex C-c a M
4606 @item C-c a M
4607 @vindex org-tags-match-list-sublevels
4608 Create a global list of tag matches from all agenda files, but check
4609 only TODO items and force checking of subitems (see variable
4610 @code{org-tags-match-list-sublevels}).
4611 @end table
4612
4613 The syntax for the search string is described in @ref{Matching tags and
4614 properties}.
4615
4616 There is also a special command for creating sparse trees based on a
4617 single property:
4618
4619 @table @kbd
4620 @kindex C-c / p
4621 @item C-c / p
4622 Create a sparse tree based on the value of a property. This first
4623 prompts for the name of a property, and then for a value. A sparse tree
4624 is created with all entries that define this property with the given
4625 value. If you enclose the value into curly braces, it is interpreted as
4626 a regular expression and matched against the property values.
4627 @end table
4628
4629 @node Property inheritance, Column view, Property searches, Properties and Columns
4630 @section Property Inheritance
4631 @cindex properties, inheritance
4632 @cindex inheritance, of properties
4633
4634 @vindex org-use-property-inheritance
4635 The outline structure of Org-mode documents lends itself for an
4636 inheritance model of properties: if the parent in a tree has a certain
4637 property, the children can inherit this property. Org-mode does not
4638 turn this on by default, because it can slow down property searches
4639 significantly and is often not needed. However, if you find inheritance
4640 useful, you can turn it on by setting the variable
4641 @code{org-use-property-inheritance}. It may be set to @code{t} to make
4642 all properties inherited from the parent, to a list of properties
4643 that should be inherited, or to a regular expression that matches
4644 inherited properties. If a property has the value @samp{nil}, this is
4645 interpreted as an explicit undefine of he property, so that inheritance
4646 search will stop at this value and return @code{nil}.
4647
4648 Org-mode has a few properties for which inheritance is hard-coded, at
4649 least for the special applications for which they are used:
4650
4651 @cindex property, COLUMNS
4652 @table @code
4653 @item COLUMNS
4654 The @code{:COLUMNS:} property defines the format of column view
4655 (@pxref{Column view}). It is inherited in the sense that the level
4656 where a @code{:COLUMNS:} property is defined is used as the starting
4657 point for a column view table, independently of the location in the
4658 subtree from where columns view is turned on.
4659 @item CATEGORY
4660 @cindex property, CATEGORY
4661 For agenda view, a category set through a @code{:CATEGORY:} property
4662 applies to the entire subtree.
4663 @item ARCHIVE
4664 @cindex property, ARCHIVE
4665 For archiving, the @code{:ARCHIVE:} property may define the archive
4666 location for the entire subtree (@pxref{Moving subtrees}).
4667 @item LOGGING
4668 @cindex property, LOGGING
4669 The LOGGING property may define logging settings for an entry or a
4670 subtree (@pxref{Tracking TODO state changes}).
4671 @end table
4672
4673 @node Column view, Property API, Property inheritance, Properties and Columns
4674 @section Column view
4675
4676 A great way to view and edit properties in an outline tree is
4677 @emph{column view}. In column view, each outline node is turned into a
4678 table row. Columns in this table provide access to properties of the
4679 entries. Org-mode implements columns by overlaying a tabular structure
4680 over the headline of each item. While the headlines have been turned
4681 into a table row, you can still change the visibility of the outline
4682 tree. For example, you get a compact table by switching to CONTENTS
4683 view (@kbd{S-@key{TAB} S-@key{TAB}}, or simply @kbd{c} while column view
4684 is active), but you can still open, read, and edit the entry below each
4685 headline. Or, you can switch to column view after executing a sparse
4686 tree command and in this way get a table only for the selected items.
4687 Column view also works in agenda buffers (@pxref{Agenda Views}) where
4688 queries have collected selected items, possibly from a number of files.
4689
4690 @menu
4691 * Defining columns:: The COLUMNS format property
4692 * Using column view:: How to create and use column view
4693 * Capturing column view:: A dynamic block for column view
4694 @end menu
4695
4696 @node Defining columns, Using column view, Column view, Column view
4697 @subsection Defining columns
4698 @cindex column view, for properties
4699 @cindex properties, column view
4700
4701 Setting up a column view first requires defining the columns. This is
4702 done by defining a column format line.
4703
4704 @menu
4705 * Scope of column definitions:: Where defined, where valid?
4706 * Column attributes:: Appearance and content of a column
4707 @end menu
4708
4709 @node Scope of column definitions, Column attributes, Defining columns, Defining columns
4710 @subsubsection Scope of column definitions
4711
4712 To define a column format for an entire file, use a line like
4713
4714 @cindex #+COLUMNS
4715 @example
4716 #+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
4717 @end example
4718
4719 To specify a format that only applies to a specific tree, add a
4720 @code{:COLUMNS:} property to the top node of that tree, for example:
4721
4722 @example
4723 ** Top node for columns view
4724 :PROPERTIES:
4725 :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
4726 :END:
4727 @end example
4728
4729 If a @code{:COLUMNS:} property is present in an entry, it defines columns
4730 for the entry itself, and for the entire subtree below it. Since the
4731 column definition is part of the hierarchical structure of the document,
4732 you can define columns on level 1 that are general enough for all
4733 sublevels, and more specific columns further down, when you edit a
4734 deeper part of the tree.
4735
4736 @node Column attributes, , Scope of column definitions, Defining columns
4737 @subsubsection Column attributes
4738 A column definition sets the attributes of a column. The general
4739 definition looks like this:
4740
4741 @example
4742 %[@var{width}]@var{property}[(@var{title})][@{@var{summary-type}@}]
4743 @end example
4744
4745 @noindent
4746 Except for the percent sign and the property name, all items are
4747 optional. The individual parts have the following meaning:
4748
4749 @example
4750 @var{width} @r{An integer specifying the width of the column in characters.}
4751 @r{If omitted, the width will be determined automatically.}
4752 @var{property} @r{The property that should be edited in this column.}
4753 @r{Special properties representing meta data are allowed here}
4754 @r{as well (@pxref{Special properties})}
4755 @var{title} @r{The header text for the column. If omitted, the property}
4756 @r{name is used.}
4757 @{@var{summary-type}@} @r{The summary type. If specified, the column values for}
4758 @r{parent nodes are computed from the children.}
4759 @r{Supported summary types are:}
4760 @{+@} @r{Sum numbers in this column.}
4761 @{+;%.1f@} @r{Like @samp{+}, but format result with @samp{%.1f}.}
4762 @{$@} @r{Currency, short for @samp{+;%.2f}.}
4763 @{:@} @r{Sum times, HH:MM, plain numbers are hours.}
4764 @{X@} @r{Checkbox status, @samp{[X]} if all children are @samp{[X]}.}
4765 @{X/@} @r{Checkbox status, @samp{[n/m]}.}
4766 @{X%@} @r{Checkbox status, @samp{[n%]}.}
4767 @{min@} @r{Smallest number in column.}
4768 @{max@} @r{Largest number.}
4769 @{mean@} @r{Arithmetic mean of numbers.}
4770 @{:min@} @r{Smallest time value in column.}
4771 @{:max@} @r{Largest time value.}
4772 @{:mean@} @r{Arithmetic mean of time values.}
4773 @{@@min@} @r{Minimum age (in days/hours/mins/seconds).}
4774 @{@@max@} @r{Maximum age (in days/hours/mins/seconds).}
4775 @{@@mean@} @r{Arithmetic mean of ages (in days/hours/mins/seconds).}
4776 @{est+@} @r{Add low-high estimates.}
4777 @end example
4778
4779 @noindent
4780 Be aware that you can only have one summary type for any property you
4781 include. Subsequent columns referencing the same property will all display the
4782 same summary information.
4783
4784 The @code{est+} summary type requires further explanation. It is used for
4785 combining estimates, expressed as low-high ranges. For example, instead
4786 of estimating a particular task will take 5 days, you might estimate it as
4787 5-6 days if you're fairly confident you know how much woark is required, or
4788 1-10 days if you don't really know what needs to be done. Both ranges
4789 average at 5.5 days, but the first represents a more predictable delivery.
4790
4791 When combining a set of such estimates, simply adding the lows and highs
4792 produces an unrealistically wide result. Instead, @code{est+} adds the
4793 statistical mean and variance of the sub-tasks, generating a final estimate
4794 from the sum. For example, suppose you had ten tasks, each of which was
4795 estimated at 0.5 to 2 days of work. Straight addition produces an estimate
4796 of 5 to 20 days, representing what to expect if everything goes either
4797 extremely well or extremely poorly. In contrast, @code{est+} estimates the
4798 full job more realistically, at 10-15 days.
4799
4800 Here is an example for a complete columns definition, along with allowed
4801 values.
4802
4803 @example
4804 :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.}
4805 %10Time_Estimate@{:@} %CLOCKSUM
4806 :Owner_ALL: Tammy Mark Karl Lisa Don
4807 :Status_ALL: "In progress" "Not started yet" "Finished" ""
4808 :Approved_ALL: "[ ]" "[X]"
4809 @end example
4810
4811 @noindent
4812 The first column, @samp{%25ITEM}, means the first 25 characters of the
4813 item itself, i.e. of the headline. You probably always should start the
4814 column definition with the @samp{ITEM} specifier. The other specifiers
4815 create columns @samp{Owner} with a list of names as allowed values, for
4816 @samp{Status} with four different possible values, and for a checkbox
4817 field @samp{Approved}. When no width is given after the @samp{%}
4818 character, the column will be exactly as wide as it needs to be in order
4819 to fully display all values. The @samp{Approved} column does have a
4820 modified title (@samp{Approved?}, with a question mark). Summaries will
4821 be created for the @samp{Time_Estimate} column by adding time duration
4822 expressions like HH:MM, and for the @samp{Approved} column, by providing
4823 an @samp{[X]} status if all children have been checked. The
4824 @samp{CLOCKSUM} column is special, it lists the sum of CLOCK intervals
4825 in the subtree.
4826
4827 @node Using column view, Capturing column view, Defining columns, Column view
4828 @subsection Using column view
4829
4830 @table @kbd
4831 @tsubheading{Turning column view on and off}
4832 @kindex C-c C-x C-c
4833 @item C-c C-x C-c
4834 @vindex org-columns-default-format
4835 Turn on column view. If the cursor is before the first headline in the file,
4836 column view is turned on for the entire file, using the @code{#+COLUMNS}
4837 definition. If the cursor is somewhere inside the outline, this command
4838 searches the hierarchy, up from point, for a @code{:COLUMNS:} property that
4839 defines a format. When one is found, the column view table is established
4840 for the tree starting at the entry that contains the @code{:COLUMNS:}
4841 property. If no such property is found, the format is taken from the
4842 @code{#+COLUMNS} line or from the variable @code{org-columns-default-format},
4843 and column view is established for the current entry and its subtree.
4844 @kindex r
4845 @item r
4846 Recreate the column view, to include recent changes made in the buffer.
4847 @kindex g
4848 @item g
4849 Same as @kbd{r}.
4850 @kindex q
4851 @item q
4852 Exit column view.
4853 @tsubheading{Editing values}
4854 @item @key{left} @key{right} @key{up} @key{down}
4855 Move through the column view from field to field.
4856 @kindex S-@key{left}
4857 @kindex S-@key{right}
4858 @item S-@key{left}/@key{right}
4859 Switch to the next/previous allowed value of the field. For this, you
4860 have to have specified allowed values for a property.
4861 @item 1..9,0
4862 Directly select the nth allowed value, @kbd{0} selects the 10th value.
4863 @kindex n
4864 @kindex p
4865 @itemx n / p
4866 Same as @kbd{S-@key{left}/@key{right}}
4867 @kindex e
4868 @item e
4869 Edit the property at point. For the special properties, this will
4870 invoke the same interface that you normally use to change that
4871 property. For example, when editing a TAGS property, the tag completion
4872 or fast selection interface will pop up.
4873 @kindex C-c C-c
4874 @item C-c C-c
4875 When there is a checkbox at point, toggle it.
4876 @kindex v
4877 @item v
4878 View the full value of this property. This is useful if the width of
4879 the column is smaller than that of the value.
4880 @kindex a
4881 @item a
4882 Edit the list of allowed values for this property. If the list is found
4883 in the hierarchy, the modified values is stored there. If no list is
4884 found, the new value is stored in the first entry that is part of the
4885 current column view.
4886 @tsubheading{Modifying the table structure}
4887 @kindex <
4888 @kindex >
4889 @item < / >
4890 Make the column narrower/wider by one character.
4891 @kindex S-M-@key{right}
4892 @item S-M-@key{right}
4893 Insert a new column, to the left of the current column.
4894 @kindex S-M-@key{left}
4895 @item S-M-@key{left}
4896 Delete the current column.
4897 @end table
4898
4899 @node Capturing column view, , Using column view, Column view
4900 @subsection Capturing column view
4901
4902 Since column view is just an overlay over a buffer, it cannot be
4903 exported or printed directly. If you want to capture a column view, use
4904 a @code{columnview} dynamic block (@pxref{Dynamic blocks}). The frame
4905 of this block looks like this:
4906
4907 @cindex #+BEGIN, columnview
4908 @example
4909 * The column view
4910 #+BEGIN: columnview :hlines 1 :id "label"
4911
4912 #+END:
4913 @end example
4914
4915 @noindent This dynamic block has the following parameters:
4916
4917 @table @code
4918 @item :id
4919 This is the most important parameter. Column view is a feature that is
4920 often localized to a certain (sub)tree, and the capture block might be
4921 at a different location in the file. To identify the tree whose view to
4922 capture, you can use 4 values:
4923 @cindex property, ID
4924 @example
4925 local @r{use the tree in which the capture block is located}
4926 global @r{make a global view, including all headings in the file}
4927 "file:@var{path-to-file}"
4928 @r{run column view at the top of this file}
4929 "@var{ID}" @r{call column view in the tree that has an @code{:ID:}}
4930 @r{property with the value @i{label}. You can use}
4931 @r{@kbd{M-x org-id-copy} to create a globally unique ID for}
4932 @r{the current entry and copy it to the kill-ring.}
4933 @end example
4934 @item :hlines
4935 When @code{t}, insert an hline after every line. When a number @var{N}, insert
4936 an hline before each headline with level @code{<= @var{N}}.
4937 @item :vlines
4938 When set to @code{t}, force column groups to get vertical lines.
4939 @item :maxlevel
4940 When set to a number, don't capture entries below this level.
4941 @item :skip-empty-rows
4942 When set to @code{t}, skip rows where the only non-empty specifier of the
4943 column view is @code{ITEM}.
4944
4945 @end table
4946
4947 @noindent
4948 The following commands insert or update the dynamic block:
4949
4950 @table @kbd
4951 @kindex C-c C-x i
4952 @item C-c C-x i
4953 Insert a dynamic block capturing a column view. You will be prompted
4954 for the scope or ID of the view.
4955 @kindex C-c C-c
4956 @item C-c C-c
4957 @kindex C-c C-x C-u
4958 @itemx C-c C-x C-u
4959 Update dynamic block at point. The cursor needs to be in the
4960 @code{#+BEGIN} line of the dynamic block.
4961 @kindex C-u C-c C-x C-u
4962 @item C-u C-c C-x C-u
4963 Update all dynamic blocks (@pxref{Dynamic blocks}). This is useful if
4964 you have several clock table blocks in a buffer.
4965 @end table
4966
4967 You can add formulas to the column view table and you may add plotting
4968 instructions in front of the table---these will survive an update of the
4969 block. If there is a @code{#+TBLFM:} after the table, the table will
4970 actually be recalculated automatically after an update.
4971
4972 An alternative way to capture and process property values into a table is
4973 provided by Eric Schulte's @file{org-collector.el} which is a contributed
4974 package@footnote{Contributed packages are not part of Emacs, but are
4975 distributed with the main distribution of Org (visit
4976 @uref{http://orgmode.org}).}. It provides a general API to collect
4977 properties from entries in a certain scope, and arbitrary Lisp expressions to
4978 process these values before inserting them into a table or a dynamic block.
4979
4980 @node Property API, , Column view, Properties and Columns
4981 @section The Property API
4982 @cindex properties, API
4983 @cindex API, for properties
4984
4985 There is a full API for accessing and changing properties. This API can
4986 be used by Emacs Lisp programs to work with properties and to implement
4987 features based on them. For more information see @ref{Using the
4988 property API}.
4989
4990 @node Dates and Times, Capture - Refile - Archive, Properties and Columns, Top
4991 @chapter Dates and times
4992 @cindex dates
4993 @cindex times
4994 @cindex timestamp
4995 @cindex date stamp
4996
4997 To assist project planning, TODO items can be labeled with a date and/or
4998 a time. The specially formatted string carrying the date and time
4999 information is called a @emph{timestamp} in Org-mode. This may be a
5000 little confusing because timestamp is often used as indicating when
5001 something was created or last changed. However, in Org-mode this term
5002 is used in a much wider sense.
5003
5004 @menu
5005 * Timestamps:: Assigning a time to a tree entry
5006 * Creating timestamps:: Commands which insert timestamps
5007 * Deadlines and scheduling:: Planning your work
5008 * Clocking work time:: Tracking how long you spend on a task
5009 * Resolving idle time:: Resolving time if you've been idle
5010 * Effort estimates:: Planning work effort in advance
5011 * Relative timer:: Notes with a running timer
5012 * Countdown timer:: Starting a countdown timer for a task
5013 @end menu
5014
5015
5016 @node Timestamps, Creating timestamps, Dates and Times, Dates and Times
5017 @section Timestamps, deadlines, and scheduling
5018 @cindex timestamps
5019 @cindex ranges, time
5020 @cindex date stamps
5021 @cindex deadlines
5022 @cindex scheduling
5023
5024 A timestamp is a specification of a date (possibly with a time or a range of
5025 times) in a special format, either @samp{<2003-09-16 Tue>} or
5026 @samp{<2003-09-16 Tue 09:39>} or @samp{<2003-09-16 Tue
5027 12:00-12:30>}@footnote{This is inspired by the standard ISO 8601 date/time
5028 format. To use an alternative format, see @ref{Custom time format}.}. A
5029 timestamp can appear anywhere in the headline or body of an Org tree entry.
5030 Its presence causes entries to be shown on specific dates in the agenda
5031 (@pxref{Weekly/daily agenda}). We distinguish:
5032
5033 @table @var
5034 @item Plain timestamp; Event; Appointment
5035 @cindex timestamp
5036 A simple timestamp just assigns a date/time to an item. This is just
5037 like writing down an appointment or event in a paper agenda. In the
5038 timeline and agenda displays, the headline of an entry associated with a
5039 plain timestamp will be shown exactly on that date.
5040
5041 @example
5042 * Meet Peter at the movies <2006-11-01 Wed 19:15>
5043 * Discussion on climate change <2006-11-02 Thu 20:00-22:00>
5044 @end example
5045
5046 @item Timestamp with repeater interval
5047 @cindex timestamp, with repeater interval
5048 A timestamp may contain a @emph{repeater interval}, indicating that it
5049 applies not only on the given date, but again and again after a certain
5050 interval of N days (d), weeks (w), months (m), or years (y). The
5051 following will show up in the agenda every Wednesday:
5052
5053 @example
5054 * Pick up Sam at school <2007-05-16 Wed 12:30 +1w>
5055 @end example
5056
5057 @item Diary-style sexp entries
5058 For more complex date specifications, Org-mode supports using the
5059 special sexp diary entries implemented in the Emacs calendar/diary
5060 package. For example
5061
5062 @example
5063 * The nerd meeting on every 2nd Thursday of the month
5064 <%%(diary-float t 4 2)>
5065 @end example
5066
5067 @item Time/Date range
5068 @cindex timerange
5069 @cindex date range
5070 Two timestamps connected by @samp{--} denote a range. The headline
5071 will be shown on the first and last day of the range, and on any dates
5072 that are displayed and fall in the range. Here is an example:
5073
5074 @example
5075 ** Meeting in Amsterdam
5076 <2004-08-23 Mon>--<2004-08-26 Thu>
5077 @end example
5078
5079 @item Inactive timestamp
5080 @cindex timestamp, inactive
5081 @cindex inactive timestamp
5082 Just like a plain timestamp, but with square brackets instead of
5083 angular ones. These timestamps are inactive in the sense that they do
5084 @emph{not} trigger an entry to show up in the agenda.
5085
5086 @example
5087 * Gillian comes late for the fifth time [2006-11-01 Wed]
5088 @end example
5089
5090 @end table
5091
5092 @node Creating timestamps, Deadlines and scheduling, Timestamps, Dates and Times
5093 @section Creating timestamps
5094 @cindex creating timestamps
5095 @cindex timestamps, creating
5096
5097 For Org-mode to recognize timestamps, they need to be in the specific
5098 format. All commands listed below produce timestamps in the correct
5099 format.
5100
5101 @table @kbd
5102 @orgcmd{C-c .,org-time-stamp}
5103 Prompt for a date and insert a corresponding timestamp. When the cursor is
5104 at an existing timestamp in the buffer, the command is used to modify this
5105 timestamp instead of inserting a new one. When this command is used twice in
5106 succession, a time range is inserted.
5107 @c
5108 @orgcmd{C-c !,org-time-stamp-inactive}
5109 Like @kbd{C-c .}, but insert an inactive timestamp that will not cause
5110 an agenda entry.
5111 @c
5112 @kindex C-u C-c .
5113 @kindex C-u C-c !
5114 @item C-u C-c .
5115 @itemx C-u C-c !
5116 @vindex org-time-stamp-rounding-minutes
5117 Like @kbd{C-c .} and @kbd{C-c !}, but use the alternative format which
5118 contains date and time. The default time can be rounded to multiples of 5
5119 minutes, see the option @code{org-time-stamp-rounding-minutes}.
5120 @c
5121 @orgcmd{C-c <,org-date-from-calendar}
5122 Insert a timestamp corresponding to the cursor date in the Calendar.
5123 @c
5124 @orgcmd{C-c >,org-goto-calendar}
5125 Access the Emacs calendar for the current date. If there is a
5126 timestamp in the current line, go to the corresponding date
5127 instead.
5128 @c
5129 @orgcmd{C-c C-o,org-open-at-point}
5130 Access the agenda for the date given by the timestamp or -range at
5131 point (@pxref{Weekly/daily agenda}).
5132 @c
5133 @kindex S-@key{left}
5134 @kindex S-@key{right}
5135 @item S-@key{left}
5136 @itemx S-@key{right}
5137 Change date at cursor by one day. These key bindings conflict with
5138 shift-selection and related modes (@pxref{Conflicts}).
5139 @c
5140 @kindex S-@key{up}
5141 @kindex S-@key{down}
5142 @item S-@key{up}
5143 @itemx S-@key{down}
5144 Change the item under the cursor in a timestamp. The cursor can be on a
5145 year, month, day, hour or minute. When the timestamp contains a time range
5146 like @samp{15:30-16:30}, modifying the first time will also shift the second,
5147 shifting the time block with constant length. To change the length, modify
5148 the second time. Note that if the cursor is in a headline and not at a
5149 timestamp, these same keys modify the priority of an item.
5150 (@pxref{Priorities}). The key bindings also conflict with shift-selection and
5151 related modes (@pxref{Conflicts}).
5152 @c
5153 @kindex C-c C-y
5154 @cindex evaluate time range
5155 @item C-c C-y
5156 Evaluate a time range by computing the difference between start and end.
5157 With a prefix argument, insert result after the time range (in a table: into
5158 the following column).
5159 @end table
5160
5161
5162 @menu
5163 * The date/time prompt:: How Org-mode helps you entering date and time
5164 * Custom time format:: Making dates look different
5165 @end menu
5166
5167 @node The date/time prompt, Custom time format, Creating timestamps, Creating timestamps
5168 @subsection The date/time prompt
5169 @cindex date, reading in minibuffer
5170 @cindex time, reading in minibuffer
5171
5172 @vindex org-read-date-prefer-future
5173 When Org-mode prompts for a date/time, the default is shown in default
5174 date/time format, and the prompt therefore seems to ask for a specific
5175 format. But it will in fact accept any string containing some date and/or
5176 time information, and it is really smart about interpreting your input. You
5177 can, for example, use @kbd{C-y} to paste a (possibly multi-line) string
5178 copied from an email message. Org-mode will find whatever information is in
5179 there and derive anything you have not specified from the @emph{default date
5180 and time}. The default is usually the current date and time, but when
5181 modifying an existing timestamp, or when entering the second stamp of a
5182 range, it is taken from the stamp in the buffer. When filling in
5183 information, Org-mode assumes that most of the time you will want to enter a
5184 date in the future: if you omit the month/year and the given day/month is
5185 @i{before} today, it will assume that you mean a future date@footnote{See the
5186 variable @code{org-read-date-prefer-future}. You may set that variable to
5187 the symbol @code{time} to even make a time before now shift the date to
5188 tomorrow.}. If the date has been automatically shifted into the future, the
5189 time prompt will show this with @samp{(=>F).}
5190
5191 For example, let's assume that today is @b{June 13, 2006}. Here is how
5192 various inputs will be interpreted, the items filled in by Org-mode are
5193 in @b{bold}.
5194
5195 @example
5196 3-2-5 --> 2003-02-05
5197 2/5/3 --> 2003-02-05
5198 14 --> @b{2006}-@b{06}-14
5199 12 --> @b{2006}-@b{07}-12
5200 2/5 --> @b{2007}-02-05
5201 Fri --> nearest Friday (default date or later)
5202 sep 15 --> @b{2006}-09-15
5203 feb 15 --> @b{2007}-02-15
5204 sep 12 9 --> 2009-09-12
5205 12:45 --> @b{2006}-@b{06}-@b{13} 12:45
5206 22 sept 0:34 --> @b{2006}-09-22 0:34
5207 w4 --> ISO week for of the current year @b{2006}
5208 2012 w4 fri --> Friday of ISO week 4 in 2012
5209 2012-w04-5 --> Same as above
5210 @end example
5211
5212 Furthermore you can specify a relative date by giving, as the
5213 @emph{first} thing in the input: a plus/minus sign, a number and a
5214 letter ([dwmy]) to indicate change in days, weeks, months, or years. With a
5215 single plus or minus, the date is always relative to today. With a
5216 double plus or minus, it is relative to the default date. If instead of
5217 a single letter, you use the abbreviation of day name, the date will be
5218 the nth such day. E.g.
5219
5220 @example
5221 +0 --> today
5222 . --> today
5223 +4d --> four days from today
5224 +4 --> same as above
5225 +2w --> two weeks from today
5226 ++5 --> five days from default date
5227 +2tue --> second Tuesday from now.
5228 @end example
5229
5230 @vindex parse-time-months
5231 @vindex parse-time-weekdays
5232 The function understands English month and weekday abbreviations. If
5233 you want to use unabbreviated names and/or other languages, configure
5234 the variables @code{parse-time-months} and @code{parse-time-weekdays}.
5235
5236 You can specify a time range by giving start and end times or by giving a
5237 start time and a duration (in HH:MM format). Use '-' or '--' as the separator
5238 in the former case and use '+' as the separator in the latter case. E.g.
5239
5240 @example
5241 11am-1:15pm --> 11:00-13:15
5242 11am--1:15pm --> same as above
5243 11am+2:15 --> same as above
5244 @end example
5245
5246 @cindex calendar, for selecting date
5247 @vindex org-popup-calendar-for-date-prompt
5248 Parallel to the minibuffer prompt, a calendar is popped up@footnote{If
5249 you don't need/want the calendar, configure the variable
5250 @code{org-popup-calendar-for-date-prompt}.}. When you exit the date
5251 prompt, either by clicking on a date in the calendar, or by pressing
5252 @key{RET}, the date selected in the calendar will be combined with the
5253 information entered at the prompt. You can control the calendar fully
5254 from the minibuffer:
5255
5256 @kindex <
5257 @kindex >
5258 @kindex M-v
5259 @kindex C-v
5260 @kindex mouse-1
5261 @kindex S-@key{right}
5262 @kindex S-@key{left}
5263 @kindex S-@key{down}
5264 @kindex S-@key{up}
5265 @kindex M-S-@key{right}
5266 @kindex M-S-@key{left}
5267 @kindex @key{RET}
5268 @example
5269 @key{RET} @r{Choose date at cursor in calendar.}
5270 mouse-1 @r{Select date by clicking on it.}
5271 S-@key{right}/@key{left} @r{One day forward/backward.}
5272 S-@key{down}/@key{up} @r{One week forward/backward.}
5273 M-S-@key{right}/@key{left} @r{One month forward/backward.}
5274 > / < @r{Scroll calendar forward/backward by one month.}
5275 M-v / C-v @r{Scroll calendar forward/backward by 3 months.}
5276 @end example
5277
5278 @vindex org-read-date-display-live
5279 The actions of the date/time prompt may seem complex, but I assure you they
5280 will grow on you, and you will start getting annoyed by pretty much any other
5281 way of entering a date/time out there. To help you understand what is going
5282 on, the current interpretation of your input will be displayed live in the
5283 minibuffer@footnote{If you find this distracting, turn the display of with
5284 @code{org-read-date-display-live}.}.
5285
5286 @node Custom time format, , The date/time prompt, Creating timestamps
5287 @subsection Custom time format
5288 @cindex custom date/time format
5289 @cindex time format, custom
5290 @cindex date format, custom
5291
5292 @vindex org-display-custom-times
5293 @vindex org-time-stamp-custom-formats
5294 Org-mode uses the standard ISO notation for dates and times as it is
5295 defined in ISO 8601. If you cannot get used to this and require another
5296 representation of date and time to keep you happy, you can get it by
5297 customizing the variables @code{org-display-custom-times} and
5298 @code{org-time-stamp-custom-formats}.
5299
5300 @table @kbd
5301 @kindex C-c C-x C-t
5302 @item C-c C-x C-t
5303 Toggle the display of custom formats for dates and times.
5304 @end table
5305
5306 @noindent
5307 Org-mode needs the default format for scanning, so the custom date/time
5308 format does not @emph{replace} the default format---instead it is put
5309 @emph{over} the default format using text properties. This has the
5310 following consequences:
5311 @itemize @bullet
5312 @item
5313 You cannot place the cursor onto a timestamp anymore, only before or
5314 after.
5315 @item
5316 The @kbd{S-@key{up}/@key{down}} keys can no longer be used to adjust
5317 each component of a timestamp. If the cursor is at the beginning of
5318 the stamp, @kbd{S-@key{up}/@key{down}} will change the stamp by one day,
5319 just like @kbd{S-@key{left}/@key{right}}. At the end of the stamp, the
5320 time will be changed by one minute.
5321 @item
5322 If the timestamp contains a range of clock times or a repeater, these
5323 will not be overlayed, but remain in the buffer as they were.
5324 @item
5325 When you delete a timestamp character-by-character, it will only
5326 disappear from the buffer after @emph{all} (invisible) characters
5327 belonging to the ISO timestamp have been removed.
5328 @item
5329 If the custom timestamp format is longer than the default and you are
5330 using dates in tables, table alignment will be messed up. If the custom
5331 format is shorter, things do work as expected.
5332 @end itemize
5333
5334
5335 @node Deadlines and scheduling, Clocking work time, Creating timestamps, Dates and Times
5336 @section Deadlines and scheduling
5337
5338 A timestamp may be preceded by special keywords to facilitate planning:
5339
5340 @table @var
5341 @item DEADLINE
5342 @cindex DEADLINE keyword
5343
5344 Meaning: the task (most likely a TODO item, though not necessarily) is supposed
5345 to be finished on that date.
5346
5347 @vindex org-deadline-warning-days
5348 On the deadline date, the task will be listed in the agenda. In
5349 addition, the agenda for @emph{today} will carry a warning about the
5350 approaching or missed deadline, starting
5351 @code{org-deadline-warning-days} before the due date, and continuing
5352 until the entry is marked DONE. An example:
5353
5354 @example
5355 *** TODO write article about the Earth for the Guide
5356 The editor in charge is [[bbdb:Ford Prefect]]
5357 DEADLINE: <2004-02-29 Sun>
5358 @end example
5359
5360 You can specify a different lead time for warnings for a specific
5361 deadlines using the following syntax. Here is an example with a warning
5362 period of 5 days @code{DEADLINE: <2004-02-29 Sun -5d>}.
5363
5364 @item SCHEDULED
5365 @cindex SCHEDULED keyword
5366
5367 Meaning: you are planning to start working on that task on the given
5368 date.
5369
5370 @vindex org-agenda-skip-scheduled-if-done
5371 The headline will be listed under the given date@footnote{It will still
5372 be listed on that date after it has been marked DONE. If you don't like
5373 this, set the variable @code{org-agenda-skip-scheduled-if-done}.}. In
5374 addition, a reminder that the scheduled date has passed will be present
5375 in the compilation for @emph{today}, until the entry is marked DONE.
5376 I.e. the task will automatically be forwarded until completed.
5377
5378 @example
5379 *** TODO Call Trillian for a date on New Years Eve.
5380 SCHEDULED: <2004-12-25 Sat>
5381 @end example
5382
5383 @noindent
5384 @b{Important:} Scheduling an item in Org-mode should @i{not} be
5385 understood in the same way that we understand @i{scheduling a meeting}.
5386 Setting a date for a meeting is just a simple appointment, you should
5387 mark this entry with a simple plain timestamp, to get this item shown
5388 on the date where it applies. This is a frequent misunderstanding by
5389 Org users. In Org-mode, @i{scheduling} means setting a date when you
5390 want to start working on an action item.
5391 @end table
5392
5393 You may use timestamps with repeaters in scheduling and deadline
5394 entries. Org-mode will issue early and late warnings based on the
5395 assumption that the timestamp represents the @i{nearest instance} of
5396 the repeater. However, the use of diary sexp entries like
5397 @c
5398 @code{<%%(diary-float t 42)>}
5399 @c
5400 in scheduling and deadline timestamps is limited. Org-mode does not
5401 know enough about the internals of each sexp function to issue early and
5402 late warnings. However, it will show the item on each day where the
5403 sexp entry matches.
5404
5405 @menu
5406 * Inserting deadline/schedule:: Planning items
5407 * Repeated tasks:: Items that show up again and again
5408 @end menu
5409
5410 @node Inserting deadline/schedule, Repeated tasks, Deadlines and scheduling, Deadlines and scheduling
5411 @subsection Inserting deadlines or schedules
5412
5413 The following commands allow you to quickly insert a deadline or to schedule
5414 an item:
5415
5416 @table @kbd
5417 @c
5418 @kindex C-c C-d
5419 @item C-c C-d
5420 Insert @samp{DEADLINE} keyword along with a stamp. The insertion will happen
5421 in the line directly following the headline. When called with a prefix arg,
5422 an existing deadline will be removed from the entry. Depending on the
5423 variable @code{org-log-redeadline}@footnote{with corresponding
5424 @code{#+STARTUP} keywords @code{logredeadline}, @code{lognoteredeadline},
5425 and @code{nologredeadline}}, a note will be taken when changing an existing
5426 deadline.
5427 @c FIXME Any CLOSED timestamp will be removed.????????
5428 @c
5429 @kindex C-c C-s
5430 @item C-c C-s
5431 Insert @samp{SCHEDULED} keyword along with a stamp. The insertion will
5432 happen in the line directly following the headline. Any CLOSED timestamp
5433 will be removed. When called with a prefix argument, remove the scheduling
5434 date from the entry. Depending on the variable
5435 @code{org-log-reschedule}@footnote{with corresponding @code{#+STARTUP}
5436 keywords @code{logredeadline}, @code{lognoteredeadline}, and
5437 @code{nologredeadline}}, a note will be taken when changing an existing
5438 scheduling time.
5439 @c
5440 @kindex C-c C-x C-k
5441 @kindex k a
5442 @kindex k s
5443 @item C-c C-x C-k
5444 Mark the current entry for agenda action. After you have marked the entry
5445 like this, you can open the agenda or the calendar to find an appropriate
5446 date. With the cursor on the selected date, press @kbd{k s} or @kbd{k d} to
5447 schedule the marked item.
5448 @c
5449 @kindex C-c / d
5450 @cindex sparse tree, for deadlines
5451 @item C-c / d
5452 @vindex org-deadline-warning-days
5453 Create a sparse tree with all deadlines that are either past-due, or
5454 which will become due within @code{org-deadline-warning-days}.
5455 With @kbd{C-u} prefix, show all deadlines in the file. With a numeric
5456 prefix, check that many days. For example, @kbd{C-1 C-c / d} shows
5457 all deadlines due tomorrow.
5458 @c
5459 @kindex C-c / b
5460 @item C-c / b
5461 Sparse tree for deadlines and scheduled items before a given date.
5462 @c
5463 @kindex C-c / a
5464 @item C-c / a
5465 Sparse tree for deadlines and scheduled items after a given date.
5466 @end table
5467
5468 @node Repeated tasks, , Inserting deadline/schedule, Deadlines and scheduling
5469 @subsection Repeated tasks
5470 @cindex tasks, repeated
5471 @cindex repeated tasks
5472
5473 Some tasks need to be repeated again and again. Org-mode helps to
5474 organize such tasks using a so-called repeater in a DEADLINE, SCHEDULED,
5475 or plain timestamp. In the following example
5476 @example
5477 ** TODO Pay the rent
5478 DEADLINE: <2005-10-01 Sat +1m>
5479 @end example
5480 @noindent
5481 the @code{+1m} is a repeater; the intended interpretation is that the task
5482 has a deadline on <2005-10-01> and repeats itself every (one) month starting
5483 from that time. If you need both a repeater and a special warning period in
5484 a deadline entry, the repeater should come first and the warning period last:
5485 @code{DEADLINE: <2005-10-01 Sat +1m -3d>}.
5486
5487 @vindex org-todo-repeat-to-state
5488 Deadlines and scheduled items produce entries in the agenda when they are
5489 over-due, so it is important to be able to mark such an entry as completed
5490 once you have done so. When you mark a DEADLINE or a SCHEDULE with the TODO
5491 keyword DONE, it will no longer produce entries in the agenda. The problem
5492 with this is, however, that then also the @emph{next} instance of the
5493 repeated entry will not be active. Org-mode deals with this in the following
5494 way: When you try to mark such an entry DONE (using @kbd{C-c C-t}), it will
5495 shift the base date of the repeating timestamp by the repeater interval, and
5496 immediately set the entry state back to TODO@footnote{In fact, the target
5497 state is taken from, in this sequence, the @code{REPEAT_TO_STATE} property or
5498 the variable @code{org-todo-repeat-to-state}. If neither of these is
5499 specified, the target state defaults to the first state of the TODO state
5500 sequence.}. In the example above, setting the state to DONE would actually
5501 switch the date like this:
5502
5503 @example
5504 ** TODO Pay the rent
5505 DEADLINE: <2005-11-01 Tue +1m>
5506 @end example
5507
5508 @vindex org-log-repeat
5509 A timestamp@footnote{You can change this using the option
5510 @code{org-log-repeat}, or the @code{#+STARTUP} options @code{logrepeat},
5511 @code{lognoterepeat}, and @code{nologrepeat}. With @code{lognoterepeat}, you
5512 will also be prompted for a note.} will be added under the deadline, to keep
5513 a record that you actually acted on the previous instance of this deadline.
5514
5515 As a consequence of shifting the base date, this entry will no longer be
5516 visible in the agenda when checking past dates, but all future instances
5517 will be visible.
5518
5519 With the @samp{+1m} cookie, the date shift will always be exactly one
5520 month. So if you have not paid the rent for three months, marking this
5521 entry DONE will still keep it as an overdue deadline. Depending on the
5522 task, this may not be the best way to handle it. For example, if you
5523 forgot to call you father for 3 weeks, it does not make sense to call
5524 him 3 times in a single day to make up for it. Finally, there are tasks
5525 like changing batteries which should always repeat a certain time
5526 @i{after} the last time you did it. For these tasks, Org-mode has
5527 special repeaters markers with @samp{++} and @samp{.+}. For example:
5528
5529 @example
5530 ** TODO Call Father
5531 DEADLINE: <2008-02-10 Sun ++1w>
5532 Marking this DONE will shift the date by at least one week,
5533 but also by as many weeks as it takes to get this date into
5534 the future. However, it stays on a Sunday, even if you called
5535 and marked it done on Saturday.
5536 ** TODO Check the batteries in the smoke detectors
5537 DEADLINE: <2005-11-01 Tue .+1m>
5538 Marking this DONE will shift the date to one month after
5539 today.
5540 @end example
5541
5542 You may have both scheduling and deadline information for a specific
5543 task---just make sure that the repeater intervals on both are the same.
5544
5545 An alternative to using a repeater is to create a number of copies of a task
5546 subtree, with dates shifted in each copy. The command @kbd{C-c C-x c} was
5547 created for this purpose, it is described in @ref{Structure editing}.
5548
5549
5550 @node Clocking work time, Resolving idle time, Deadlines and scheduling, Dates and Times
5551 @section Clocking work time
5552
5553 Org-mode allows you to clock the time you spend on specific tasks in a
5554 project. When you start working on an item, you can start the clock.
5555 When you stop working on that task, or when you mark the task done, the
5556 clock is stopped and the corresponding time interval is recorded. It
5557 also computes the total time spent on each subtree of a project. And it
5558 remembers a history or tasks recently clocked, to that you can jump quickly
5559 between a number of tasks absorbing your time.
5560
5561 To save the clock history across Emacs sessions, use
5562 @lisp
5563 (setq org-clock-persist 'history)
5564 (org-clock-persistence-insinuate)
5565 @end lisp
5566 When you clock into a new task after resuming Emacs, the incomplete
5567 clock@footnote{To resume the clock under the assumption that you have worked
5568 on this task while outside Emacs, use @code{(setq org-clock-persist t)}.}
5569 will be found (@pxref{Resolving idle time}) and you will be prompted about
5570 what to do with it.
5571
5572 @table @kbd
5573 @kindex C-c C-x C-i
5574 @item C-c C-x C-i
5575 @vindex org-clock-into-drawer
5576 Start the clock on the current item (clock-in). This inserts the CLOCK
5577 keyword together with a timestamp. If this is not the first clocking of
5578 this item, the multiple CLOCK lines will be wrapped into a
5579 @code{:LOGBOOK:} drawer (see also the variable
5580 @code{org-clock-into-drawer}). When called with a @kbd{C-u} prefix argument,
5581 select the task from a list of recently clocked tasks. With two @kbd{C-u
5582 C-u} prefixes, clock into the task at point and mark it as the default task.
5583 The default task will always be available when selecting a clocking task,
5584 with letter @kbd{d}.@*
5585 @cindex property: CLOCK_MODELINE_TOTAL
5586 @cindex property: LAST_REPEAT
5587 @vindex org-clock-modeline-total
5588 While the clock is running, the current clocking time is shown in the mode
5589 line, along with the title of the task. The clock time shown will be all
5590 time ever clocked for this task and its children. If the task has an effort
5591 estimate (@pxref{Effort estimates}), the mode line displays the current
5592 clocking time against it@footnote{To add an effort estimate ``on the fly'',
5593 hook a function doing this to @code{org-clock-in-prepare-hook}.} If the task
5594 is a repeating one (@pxref{Repeated tasks}), only the time since the last
5595 reset of the task @footnote{as recorded by the @code{LAST_REPEAT} property}
5596 will be shown. More control over what time is shown can be exercised with
5597 the @code{CLOCK_MODELINE_TOTAL} property. It may have the values
5598 @code{current} to show only the current clocking instance, @code{today} to
5599 show all time clocked on this tasks today (see also the variable
5600 @code{org-extend-today-until}), @code{all} to include all time, or
5601 @code{auto} which is the default@footnote{See also the variable
5602 @code{org-clock-modeline-total}.}.@* Clicking with @kbd{mouse-1} onto the
5603 mode line entry will pop up a menu with clocking options.
5604 @kindex C-c C-x C-o
5605 @item C-c C-x C-o
5606 @vindex org-log-note-clock-out
5607 Stop the clock (clock-out). This inserts another timestamp at the same
5608 location where the clock was last started. It also directly computes
5609 the resulting time in inserts it after the time range as @samp{=>
5610 HH:MM}. See the variable @code{org-log-note-clock-out} for the
5611 possibility to record an additional note together with the clock-out
5612 timestamp@footnote{The corresponding in-buffer setting is:
5613 @code{#+STARTUP: lognoteclock-out}}.
5614 @kindex C-c C-x C-e
5615 @item C-c C-x C-e
5616 Update the effort estimate for the current clock task.
5617 @kindex C-c C-y
5618 @kindex C-c C-c
5619 @item C-c C-y @ @ @r{or}@ @ C-c C-c
5620 Recompute the time interval after changing one of the timestamps. This
5621 is only necessary if you edit the timestamps directly. If you change
5622 them with @kbd{S-@key{cursor}} keys, the update is automatic.
5623 @kindex C-c C-t
5624 @item C-c C-t
5625 Changing the TODO state of an item to DONE automatically stops the clock
5626 if it is running in this same item.
5627 @kindex C-c C-x C-x
5628 @item C-c C-x C-x
5629 Cancel the current clock. This is useful if a clock was started by
5630 mistake, or if you ended up working on something else.
5631 @kindex C-c C-x C-j
5632 @item C-c C-x C-j
5633 Jump to the headline of the currently clocked in task. With a @kbd{C-u}
5634 prefix arg, select the target task from a list of recently clocked tasks.
5635 @kindex C-c C-x C-d
5636 @item C-c C-x C-d
5637 @vindex org-remove-highlights-with-change
5638 Display time summaries for each subtree in the current buffer. This
5639 puts overlays at the end of each headline, showing the total time
5640 recorded under that heading, including the time of any subheadings. You
5641 can use visibility cycling to study the tree, but the overlays disappear
5642 when you change the buffer (see variable
5643 @code{org-remove-highlights-with-change}) or press @kbd{C-c C-c}.
5644 @kindex C-c C-x C-r
5645 @item C-c C-x C-r
5646 Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
5647 report as an Org-mode table into the current file. When the cursor is
5648 at an existing clock table, just update it. When called with a prefix
5649 argument, jump to the first clock report in the current document and
5650 update it.
5651 @cindex #+BEGIN, clocktable
5652 @example
5653 #+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
5654 #+END: clocktable
5655 @end example
5656 @noindent
5657 If such a block already exists at point, its content is replaced by the
5658 new table. The @samp{BEGIN} line can specify options:
5659 @example
5660 :maxlevel @r{Maximum level depth to which times are listed in the table.}
5661 :emphasize @r{When @code{t}, emphasize level one and level two items.}
5662 :scope @r{The scope to consider. This can be any of the following:}
5663 nil @r{the current buffer or narrowed region}
5664 file @r{the full current buffer}
5665 subtree @r{the subtree where the clocktable is located}
5666 tree@var{N} @r{the surrounding level @var{N} tree, for example @code{tree3}}
5667 tree @r{the surrounding level 1 tree}
5668 agenda @r{all agenda files}
5669 ("file"..) @r{scan these files}
5670 file-with-archives @r{current file and its archives}
5671 agenda-with-archives @r{all agenda files, including archives}
5672 :block @r{The time block to consider. This block is specified either}
5673 @r{absolute, or relative to the current time and may be any of}
5674 @r{these formats:}
5675 2007-12-31 @r{New year eve 2007}
5676 2007-12 @r{December 2007}
5677 2007-W50 @r{ISO-week 50 in 2007}
5678 2007 @r{the year 2007}
5679 today, yesterday, today-@var{N} @r{a relative day}
5680 thisweek, lastweek, thisweek-@var{N} @r{a relative week}
5681 thismonth, lastmonth, thismonth-@var{N} @r{a relative month}
5682 thisyear, lastyear, thisyear-@var{N} @r{a relative year}
5683 @r{Use @kbd{S-@key{left}/@key{right}} keys to shift the time interval.}
5684 :tstart @r{A time string specifying when to start considering times.}
5685 :tend @r{A time string specifying when to stop considering times.}
5686 :step @r{@code{week} or @code{day}, to split the table into chunks.}
5687 @r{To use this, @code{:block} or @code{:tstart}, @code{:tend} are needed.}
5688 :stepskip0 @r{Don't show steps that have zero time}
5689 :tags @r{A tags match to select entries that should contribute}
5690 :link @r{Link the item headlines in the table to their origins.}
5691 :formula @r{Content of a @code{#+TBLFM} line to be added and evaluated.}
5692 @r{As a special case, @samp{:formula %} adds a column with % time.}
5693 @r{If you do not specify a formula here, any existing formula.}
5694 @r{below the clock table will survive updates and be evaluated.}
5695 :timestamp @r{A timestamp for the entry, when available. Look for SCHEDULED,}
5696 @r{DEADLINE, TIMESTAMP and TIMESTAMP_IA, in this order.}
5697 @end example
5698 To get a clock summary of the current level 1 tree, for the current
5699 day, you could write
5700 @example
5701 #+BEGIN: clocktable :maxlevel 2 :block today :scope tree1 :link t
5702 #+END: clocktable
5703 @end example
5704 @noindent
5705 and to use a specific time range you could write@footnote{Note that all
5706 parameters must be specified in a single line---the line is broken here
5707 only to fit it into the manual.}
5708 @example
5709 #+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>"
5710 :tend "<2006-08-10 Thu 12:00>"
5711 #+END: clocktable
5712 @end example
5713 A summary of the current subtree with % times would be
5714 @example
5715 #+BEGIN: clocktable :scope subtree :link t :formula %
5716 #+END: clocktable
5717 @end example
5718 @kindex C-c C-c
5719 @item C-c C-c
5720 @kindex C-c C-x C-u
5721 @itemx C-c C-x C-u
5722 Update dynamic block at point. The cursor needs to be in the
5723 @code{#+BEGIN} line of the dynamic block.
5724 @kindex C-u C-c C-x C-u
5725 @item C-u C-c C-x C-u
5726 Update all dynamic blocks (@pxref{Dynamic blocks}). This is useful if
5727 you have several clock table blocks in a buffer.
5728 @kindex S-@key{left}
5729 @kindex S-@key{right}
5730 @item S-@key{left}
5731 @itemx S-@key{right}
5732 Shift the current @code{:block} interval and update the table. The cursor
5733 needs to be in the @code{#+BEGIN: clocktable} line for this command. If
5734 @code{:block} is @code{today}, it will be shifted to @code{today-1} etc.
5735 @end table
5736
5737 The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
5738 the agenda (@pxref{Weekly/daily agenda}) to show which tasks have been
5739 worked on or closed during a day.
5740
5741 @node Resolving idle time, Effort estimates, Clocking work time, Dates and Times
5742 @section Resolving idle time
5743 @cindex resolve idle time
5744
5745 @cindex idle, resolve, dangling
5746 If you clock in on a work item, and then walk away from your
5747 computer---perhaps to take a phone call---you often need to ``resolve'' the
5748 time you were away by either subtracting it from the current clock, or
5749 applying it to another one.
5750
5751 @vindex org-clock-idle-time
5752 By customizing the variable @code{org-clock-idle-time} to some integer, such
5753 as 10 or 15, Emacs can alert you when you get back to your computer after
5754 being idle for that many minutes@footnote{On computers using Mac OS X,
5755 idleness is based on actual user idleness, not just Emacs' idle time. For
5756 X11, you can install a utility program @file{x11idle.c}, available in the
5757 UTILITIES directory of the Org git distribution, to get the same general
5758 treatment of idleness. On other systems, idle time refers to Emacs idle time
5759 only.}, and ask what you want to do with the idle time. There will be a
5760 question waiting for you when you get back, indicating how much idle time has
5761 passed (constantly updated with the current amount), as well as a set of
5762 choices to correct the discrepancy:
5763
5764 @table @kbd
5765 @item k
5766 To keep some or all of the minutes and stay clocked in, press @kbd{k}. Org
5767 will ask how many of the minutes to keep. Press @key{RET} to keep them all,
5768 effectively changing nothing, or enter a number to keep that many minutes.
5769 @item K
5770 If you use the shift key and press @kbd{K}, it will keep however many minutes
5771 you request and then immediately clock out of that task. If you keep all of
5772 the minutes, this is the same as just clocking out of the current task.
5773 @item s
5774 To keep none of the minutes, use @kbd{s} to subtract all the away time from
5775 the clock, and then check back in from the moment you returned.
5776 @item S
5777 To keep none of the minutes and just clock out at the start of the away time,
5778 use the shift key and press @kbd{S}. Remember that using shift will always
5779 leave you clocked out, no matter which option you choose.
5780 @item C
5781 To cancel the clock altogether, use @kbd{C}. Note that if instead of
5782 canceling you subtract the away time, and the resulting clock amount is less
5783 than a minute, the clock will still be canceled rather than clutter up the
5784 log with an empty entry.
5785 @end table
5786
5787 What if you subtracted those away minutes from the current clock, and now
5788 want to apply them to a new clock? Simply clock in to any task immediately
5789 after the subtraction. Org will notice that you have subtracted time ``on
5790 the books'', so to speak, and will ask if you want to apply those minutes to
5791 the next task you clock in on.
5792
5793 There is one other instance when this clock resolution magic occurs. Say you
5794 were clocked in and hacking away, and suddenly your cat chased a mouse who
5795 scared a hamster that crashed into your UPS's power button! You suddenly
5796 lose all your buffers, but thanks to auto-save you still have your recent Org
5797 mode changes, including your last clock in.
5798
5799 If you restart Emacs and clock into any task, Org will notice that you have a
5800 dangling clock which was never clocked out from your last session. Using
5801 that clock's starting time as the beginning of the unaccounted-for period,
5802 Org will ask how you want to resolve that time. The logic and behavior is
5803 identical to dealing with away time due to idleness, it's just happening due
5804 to a recovery event rather than a set amount of idle time.
5805
5806 You can also check all the files visited by your Org agenda for dangling
5807 clocks at any time using @kbd{M-x org-resolve-clocks}.
5808
5809 @node Effort estimates, Relative timer, Resolving idle time, Dates and Times
5810 @section Effort estimates
5811 @cindex effort estimates
5812
5813 @cindex property, Effort
5814 @vindex org-effort-property
5815 If you want to plan your work in a very detailed way, or if you need to
5816 produce offers with quotations of the estimated work effort, you may want to
5817 assign effort estimates to entries. If you are also clocking your work, you
5818 may later want to compare the planned effort with the actual working time, a
5819 great way to improve planning estimates. Effort estimates are stored in a
5820 special property @samp{Effort}@footnote{You may change the property being
5821 used with the variable @code{org-effort-property}.}. You can set the effort
5822 for an entry with the following commands:
5823
5824 @table @kbd
5825 @kindex C-c C-x e
5826 @item C-c C-x e
5827 Set the effort estimate for the current entry. With a numeric prefix
5828 argument, set it to the NTH allowed value (see below). This command is also
5829 accessible from the agenda with the @kbd{e} key.
5830 @kindex C-c C-x C-e
5831 @item C-c C-x C-e
5832 Modify the effort estimate of the item currently being clocked.
5833 @end table
5834
5835 Clearly the best way to work with effort estimates is through column view
5836 (@pxref{Column view}). You should start by setting up discrete values for
5837 effort estimates, and a @code{COLUMNS} format that displays these values
5838 together with clock sums (if you want to clock your time). For a specific
5839 buffer you can use
5840
5841 @example
5842 #+PROPERTY: Effort_ALL 0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00 8:00
5843 #+COLUMNS: %40ITEM(Task) %17Effort(Estimated Effort)@{:@} %CLOCKSUM
5844 @end example
5845
5846 @noindent
5847 @vindex org-global-properties
5848 @vindex org-columns-default-format
5849 or, even better, you can set up these values globally by customizing the
5850 variables @code{org-global-properties} and @code{org-columns-default-format}.
5851 In particular if you want to use this setup also in the agenda, a global
5852 setup may be advised.
5853
5854 The way to assign estimates to individual items is then to switch to column
5855 mode, and to use @kbd{S-@key{right}} and @kbd{S-@key{left}} to change the
5856 value. The values you enter will immediately be summed up in the hierarchy.
5857 In the column next to it, any clocked time will be displayed.
5858
5859 @vindex org-agenda-columns-add-appointments-to-effort-sum
5860 If you switch to column view in the daily/weekly agenda, the effort column
5861 will summarize the estimated work effort for each day@footnote{Please note
5862 the pitfalls of summing hierarchical data in a flat list (@pxref{Agenda
5863 column view}).}, and you can use this to find space in your schedule. To get
5864 an overview of the entire part of the day that is committed, you can set the
5865 option @code{org-agenda-columns-add-appointments-to-effort-sum}. The
5866 appointments on a day that take place over a specified time interval will
5867 then also be added to the load estimate of the day.
5868
5869 Effort estimates can be used in secondary agenda filtering that is triggered
5870 with the @kbd{/} key in the agenda (@pxref{Agenda commands}). If you have
5871 these estimates defined consistently, two or three key presses will narrow
5872 down the list to stuff that fits into an available time slot.
5873
5874 @node Relative timer, Countdown timer, Effort estimates, Dates and Times
5875 @section Taking notes with a relative timer
5876 @cindex relative timer
5877
5878 When taking notes during, for example, a meeting or a video viewing, it can
5879 be useful to have access to times relative to a starting time. Org provides
5880 such a relative timer and make it easy to create timed notes.
5881
5882 @table @kbd
5883 @kindex C-c C-x .
5884 @item C-c C-x .
5885 Insert a relative time into the buffer. The first time you use this, the
5886 timer will be started. When called with a prefix argument, the timer is
5887 restarted.
5888 @kindex C-c C-x -
5889 @item C-c C-x -
5890 Insert a description list item with the current relative time. With a prefix
5891 argument, first reset the timer to 0.
5892 @kindex M-@key{RET}
5893 @item M-@key{RET}
5894 Once the timer list is started, you can also use @kbd{M-@key{RET}} to insert
5895 new timer items.
5896 @kindex C-c C-x ,
5897 @item C-c C-x ,
5898 Pause the timer, or continue it if it is already paused.
5899 @c removed the sentence because it is redundant to the following item
5900 @kindex C-u C-c C-x ,
5901 @item C-u C-c C-x ,
5902 Stop the timer. After this, you can only start a new timer, not continue the
5903 old one. This command also removes the timer from the mode line.
5904 @kindex C-c C-x 0
5905 @item C-c C-x 0
5906 Reset the timer without inserting anything into the buffer. By default, the
5907 timer is reset to 0. When called with a @kbd{C-u} prefix, reset the timer to
5908 specific starting offset. The user is prompted for the offset, with a
5909 default taken from a timer string at point, if any, So this can be used to
5910 restart taking notes after a break in the process. When called with a double
5911 prefix argument @kbd{C-u C-u}, change all timer strings in the active region
5912 by a certain amount. This can be used to fix timer strings if the timer was
5913 not started at exactly the right moment.
5914 @end table
5915
5916 @node Countdown timer, , Relative timer, Dates and Times
5917 @section Countdown timer
5918 @cindex Countdown timer
5919 @kindex C-c C-x ;
5920 @kindex ;
5921
5922 Calling @code{org-timer-set-timer} from an Org-mode buffer runs a countdown
5923 timer. Use @key{;} from agenda buffers, @key{C-c C-x ;} everwhere else.
5924
5925 @code{org-timer-set-timer} prompts the user for a duration and displays a
5926 countdown timer in the modeline. @code{org-timer-default-timer} sets the
5927 default countdown value. Giving a prefix numeric argument overrides this
5928 default value.
5929
5930 @node Capture - Refile - Archive, Agenda Views, Dates and Times, Top
5931 @chapter Capture - Refile - Archive
5932 @cindex capture
5933
5934 An important part of any organization system is the ability to quickly
5935 capture new ideas and tasks, and to associate reference material with them.
5936 Org does this using a process called @i{capture}. It also can store files
5937 related to a task (@i{attachments}) in a special directory. Once in the
5938 system, tasks and projects need to be moved around. Moving completed project
5939 trees to an archive file keeps the system compact and fast.
5940
5941 @menu
5942 * Capture:: Capturing new stuff
5943 * Attachments:: Add files to tasks
5944 * RSS Feeds:: Getting input from RSS feeds
5945 * Protocols:: External (e.g. Browser) access to Emacs and Org
5946 * Refiling notes:: Moving a tree from one place to another
5947 * Archiving:: What to do with finished projects
5948 @end menu
5949
5950 @node Capture, Attachments, Capture - Refile - Archive, Capture - Refile - Archive
5951 @section Capture
5952 @cindex capture
5953
5954 Org's method for capturing new items is heavily inspired by John Wiegley
5955 excellent remember package. Up to version 6.36 Org used a special setup
5956 for @file{remember.el}. @file{org-remember.el} is still part of Org-mode for
5957 backward compatibility with existing setups. You can find the documentation
5958 for org-remember at @url{http://orgmode.org/org-remember.pdf}.
5959
5960 The new capturing setup described here is preferred and should be used by new
5961 users. To convert your @code{org-remember-templates}, run the command
5962 @example
5963 @kbd{M-x org-capture-import-remember-templates @key{RET}}
5964 @end example
5965 @noindent and then customize the new variable with @kbd{M-x
5966 customize-variable org-capture-templates}, check the result, and save the
5967 customization. You can then use both remember and capture until
5968 you are familiar with the new mechanism.
5969
5970 Capture lets you quickly store notes with little interruption of your work
5971 flow. The basic process of capturing is very similar to remember, but Org
5972 does enhance it with templates and more.
5973
5974 @menu
5975 * Setting up capture:: Where notes will be stored
5976 * Using capture:: Commands to invoke and terminate capture
5977 * Capture templates:: Define the outline of different note types
5978 @end menu
5979
5980 @node Setting up capture, Using capture, Capture, Capture
5981 @subsection Setting up capture
5982
5983 The following customization sets a default target file for notes, and defines
5984 a global key@footnote{Please select your own key, @kbd{C-c c} is only a
5985 suggestion.} for capturing new material.
5986
5987 @vindex org-default-notes-file
5988 @example
5989 (setq org-default-notes-file (concat org-directory "/notes.org"))
5990 (define-key global-map "\C-cc" 'org-capture)
5991 @end example
5992
5993 @node Using capture, Capture templates, Setting up capture, Capture
5994 @subsection Using capture
5995
5996 @table @kbd
5997 @kindex C-c c
5998 @item C-c c
5999 Call the command @code{org-capture}. If you have templates defined
6000 @pxref{Capture templates}, it will offer these templates for selection or use
6001 a new Org outline node as the default template. It will insert the template
6002 into the target file and switch to an indirect buffer narrowed to this new
6003 node. You may then insert the information you want.
6004
6005 @kindex C-c C-c
6006 @item C-c C-c
6007 Once you have finished entering information into the capture buffer,
6008 @kbd{C-c C-c} will return you to the window configuration before the capture
6009 process, so that you can resume your work without further distraction.
6010
6011 @kindex C-c C-w
6012 @item C-c C-w
6013 Finalize the capture process by refiling (@pxref{Refiling notes}) the note to
6014 a different place. Please realize that this is a normal refiling command
6015 that will be executed - so the cursor position at the moment you run this
6016 command is important. If you have inserted a tree with a parent and
6017 children, first move the cursor back to the parent.
6018
6019 @kindex C-c C-k
6020 @item C-c C-k
6021 Abort the capture process and return to the previous state.
6022 @end table
6023
6024 You can also call @code{org-capture} in a special way from the agenda, using
6025 the @kbd{k c} key combination. With this access, any timestamps inserted by
6026 the selected capture template will default to the cursor date in the agenda,
6027 rather than to the current date.
6028
6029 @node Capture templates, , Using capture, Capture
6030 @subsection Capture templates
6031 @cindex templates, for Capture
6032
6033 You can use templates for different types of capture items, and
6034 for different target locations. The easiest way to create such templates is
6035 through the customize interface.
6036
6037 @table @kbd
6038 @kindex C-c c C
6039 @item C-c c C
6040 Customize the variable @code{org-capture-templates}.
6041 @end table
6042
6043 Before we give the formal description of template definitions, let's look at
6044 an example. Say you would like to use one template to create general TODO
6045 entries, and you want to put these entries under the heading @samp{Tasks} in
6046 your file @file{~/org/gtd.org}. Also, a date tree in the file
6047 @file{journal.org} should capture journal entries. A possible configuration
6048 would look like:
6049
6050 @example
6051 (setq org-capture-templates
6052 '(("t" "Todo" entry (file+headline "~/org/gtd.org" "Tasks")
6053 "* TODO %?\n %i\n %a")
6054 ("j" "Journal" entry (file+datetree "~/org/journal.org")
6055 "* %?\nEntered on %U\n %i\n %a")))
6056 @end example
6057
6058 @noindent If you then press @kbd{C-c c t}, Org will prepare the template
6059 for you like this:
6060 @example
6061 * TODO
6062 [[file:@var{link to where you initiated capture}]]
6063 @end example
6064
6065 @noindent
6066 During expansion of the template, @code{%a} has been replaced by a link to
6067 the location from where you called the capture command. This can be
6068 extremely useful for deriving tasks from emails, for example. You fill in
6069 the task definition, press @code{C-c C-c} and Org returns you to the same
6070 place where you started the capture process.
6071
6072
6073 @menu
6074 * Template elements:: What is needed for a complete template entry
6075 * Template expansion:: Filling in information about time and context
6076 @end menu
6077
6078 @node Template elements, Template expansion, Capture templates, Capture templates
6079 @subsubsection Template elements
6080
6081 Now lets look at the elements of a template definition. Each entry in
6082 @code{org-capture-templates} is a list with the following items:
6083
6084 @table @var
6085 @item keys
6086 The keys that will select the template, as a string, characters
6087 only, for example @code{"a"} for a template to be selected with a
6088 single key, or @code{"bt"} for selection with two keys. When using
6089 several keys, keys using the same prefix key must be sequential
6090 in the list and preceded by a 2-element entry explaining the
6091 prefix key, for example
6092 @example
6093 ("b" "Templates for marking stuff to buy")
6094 @end example
6095 @noindent If you do not define a template for the @kbd{C} key, this key will
6096 be used to open the customize buffer for this complex variable.
6097
6098 @item description
6099 A short string describing the template, which will be shown during
6100 selection.
6101
6102 @item type
6103 The type of entry, a symbol. Valid values are:
6104 @table @code
6105 @item entry
6106 An Org-mode node, with a headline. Will be filed as the child of the
6107 target entry or as a top-level entry. The target file should be an Org-mode
6108 file.
6109 @item item
6110 A plain list item, placed in the first plain list at the target
6111 location. Again the target file should be an Org file.
6112 @item checkitem
6113 A checkbox item. This only differs from the plain list item by the
6114 default template.
6115 @item table-line
6116 a new line in the first table at the target location. Where exactly the
6117 line will be inserted depends on the properties @code{:prepend} and
6118 @code{:table-line-pos} (see below).
6119 @item plain
6120 Text to be inserted as it is.
6121 @end table
6122
6123 @item target
6124 @vindex org-default-notes-file
6125 Specification of where the captured item should be placed. In Org-mode
6126 files, targets usually define a node. Entries will become children of this
6127 node, other types will be added to the table or list in the body of this
6128 node. Most target specifications contain a file name. If that file name is
6129 the empty string, it defaults to @code{org-default-notes-file}.
6130
6131 Valid values are:
6132 @table @code
6133 @item (file "path/to/file")
6134 Text will be placed at the beginning or end of that file.
6135
6136 @item (id "id of existing org entry")
6137 Filing as child of this entry, or in the body of the entry.
6138
6139 @item (file+headline "path/to/file" "node headline")
6140 Fast configuration if the target heading is unique in the file.
6141
6142 @item (file+olp "path/to/file" "Level 1 heading" "Level 2" ...)
6143 For non-unique headings, the full path is safer.
6144
6145 @item (file+regexp "path/to/file" "regexp to find location")
6146 Use a regular expression to position the cursor.
6147
6148 @item (file+datetree "path/to/file")
6149 Will create a heading in a date tree.
6150
6151 @item (file+function "path/to/file" function-finding-location)
6152 A function to find the right location in the file.
6153
6154 @item (clock)
6155 File to the entry that is currently being clocked.
6156
6157 @item (function function-finding-location)
6158 Most general way, write your own function to find both
6159 file and location.
6160 @end table
6161
6162 @item template
6163 The template for creating the capture item. If you leave this empty, an
6164 appropriate default template will be used. Otherwise this is a string with
6165 escape codes, which will be replaced depending on time and context of the
6166 capture call. The string with escapes may be loaded from a template file,
6167 using the special syntax @code{(file "path/to/template")}. See below for
6168 more details.
6169
6170 @item properties
6171 The rest of the entry is a property list of additional options.
6172 Recognized properties are:
6173 @table @code
6174 @item :prepend
6175 Normally new captured information will be appended at
6176 the target location (last child, last table line, last list item...).
6177 Setting this property will change that.
6178
6179 @item :immediate-finish
6180 When set, do not offer to edit the information, just
6181 file it away immediately. This makes sense if the template only needs
6182 information that can be added automatically.
6183
6184 @item :empty-lines
6185 Set this to the number of lines to insert
6186 before and after the new item. Default 0, only common other value is 1.
6187
6188 @item :clock-in
6189 Start the clock in this item.
6190
6191 @item :clock-resume
6192 If starting the capture interrupted a clock, restart that clock when finished
6193 with the capture.
6194
6195 @item :unnarrowed
6196 Do not narrow the target buffer, simply show the full buffer. Default is to
6197 narrow it so that you only see the new material.
6198
6199 @item :kill-buffer
6200 If the target file was not yet visited when capture was invoked, kill the
6201 buffer again after capture is completed.
6202 @end table
6203 @end table
6204
6205 @node Template expansion, , Template elements, Capture templates
6206 @subsubsection Template expansion
6207
6208 In the template itself, special @kbd{%}-escapes@footnote{If you need one of
6209 these sequences literally, escape the @kbd{%} with a backslash.} allow
6210 dynamic insertion of content:
6211
6212 @comment SJE: should these sentences terminate in period?
6213 @smallexample
6214 %^@{@var{prompt}@} @r{prompt the user for a string and replace this sequence with it.}
6215 @r{You may specify a default value and a completion table with}
6216 @r{%^@{prompt|default|completion2|completion3...@}}
6217 @r{The arrow keys access a prompt-specific history.}
6218 %a @r{annotation, normally the link created with @code{org-store-link}}
6219 %A @r{like @code{%a}, but prompt for the description part}
6220 %i @r{initial content, the region when capture is called while the}
6221 @r{region is active.}
6222 @r{The entire text will be indented like @code{%i} itself.}
6223 %t @r{timestamp, date only}
6224 %T @r{timestamp with date and time}
6225 %u, %U @r{like the above, but inactive timestamps}
6226 %^t @r{like @code{%t}, but prompt for date. Similarly @code{%^T}, @code{%^u}, @code{%^U}}
6227 @r{You may define a prompt like @code{%^@{Birthday@}t}}
6228 %n @r{user name (taken from @code{user-full-name})}
6229 %c @r{Current kill ring head.}
6230 %x @r{Content of the X clipboard.}
6231 %^C @r{Interactive selection of which kill or clip to use.}
6232 %^L @r{Like @code{%^C}, but insert as link.}
6233 %k @r{title of the currently clocked task}
6234 %K @r{link to the currently clocked task}
6235 %^g @r{prompt for tags, with completion on tags in target file.}
6236 %^G @r{prompt for tags, with completion all tags in all agenda files.}
6237 %^@{@var{prop}@}p @r{Prompt the user for a value for property @var{prop}}
6238 %:keyword @r{specific information for certain link types, see below}
6239 %[@var{file}] @r{insert the contents of the file given by @var{file}}
6240 %(@var{sexp}) @r{evaluate Elisp @var{sexp} and replace with the result}
6241 @end smallexample
6242
6243 @noindent
6244 For specific link types, the following keywords will be
6245 defined@footnote{If you define your own link types (@pxref{Adding
6246 hyperlink types}), any property you store with
6247 @code{org-store-link-props} can be accessed in capture templates in a
6248 similar way.}:
6249
6250 @vindex org-from-is-user-regexp
6251 @smallexample
6252 Link type | Available keywords
6253 -------------------+----------------------------------------------
6254 bbdb | %:name %:company
6255 irc | %:server %:port %:nick
6256 vm, wl, mh, mew, rmail | %:type %:subject %:message-id
6257 | %:from %:fromname %:fromaddress
6258 | %:to %:toname %:toaddress
6259 | %:date @r{(message date header field)}
6260 | %:date-timestamp @r{(date as active timestamp)}
6261 | %:date-timestamp-inactive @r{(date as inactive timestamp)}
6262 | %: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}.}}
6263 gnus | %:group, @r{for messages also all email fields}
6264 w3, w3m | %:url
6265 info | %:file %:node
6266 calendar | %:date
6267 @end smallexample
6268
6269 @noindent
6270 To place the cursor after template expansion use:
6271
6272 @smallexample
6273 %? @r{After completing the template, position cursor here.}
6274 @end smallexample
6275
6276
6277 @node Attachments, RSS Feeds, Capture, Capture - Refile - Archive
6278 @section Attachments
6279 @cindex attachments
6280
6281 @vindex org-attach-directory
6282 It is often useful to associate reference material with an outline node/task.
6283 Small chunks of plain text can simply be stored in the subtree of a project.
6284 Hyperlinks (@pxref{Hyperlinks}) can establish associations with
6285 files that live elsewhere on your computer or in the cloud, like emails or
6286 source code files belonging to a project. Another method is @i{attachments},
6287 which are files located in a directory belonging to an outline node. Org
6288 uses directories named by the unique ID of each entry. These directories are
6289 located in the @file{data} directory which lives in the same directory where
6290 your Org file lives@footnote{If you move entries or Org files from one
6291 directory to another, you may want to configure @code{org-attach-directory}
6292 to contain an absolute path.}. If you initialize this directory with
6293 @code{git init}, Org will automatically commit changes when it sees them.
6294 The attachment system has been contributed to Org by John Wiegley.
6295
6296 In cases where it seems better to do so, you can also attach a directory of your
6297 choice to an entry. You can also make children inherit the attachment
6298 directory from a parent, so that an entire subtree uses the same attached
6299 directory.
6300
6301 @noindent The following commands deal with attachments:
6302
6303 @table @kbd
6304
6305 @kindex C-c C-a
6306 @item C-c C-a
6307 The dispatcher for commands related to the attachment system. After these
6308 keys, a list of commands is displayed and you must press an additional key
6309 to select a command:
6310
6311 @table @kbd
6312 @kindex C-c C-a a
6313 @item a
6314 @vindex org-attach-method
6315 Select a file and move it into the task's attachment directory. The file
6316 will be copied, moved, or linked, depending on @code{org-attach-method}.
6317 Note that hard links are not supported on all systems.
6318
6319 @kindex C-c C-a c
6320 @kindex C-c C-a m
6321 @kindex C-c C-a l
6322 @item c/m/l
6323 Attach a file using the copy/move/link method.
6324 Note that hard links are not supported on all systems.
6325
6326 @kindex C-c C-a n
6327 @item n
6328 Create a new attachment as an Emacs buffer.
6329
6330 @kindex C-c C-a z
6331 @item z
6332 Synchronize the current task with its attachment directory, in case you added
6333 attachments yourself.
6334
6335 @kindex C-c C-a o
6336 @item o
6337 @vindex org-file-apps
6338 Open current task's attachment. If there is more than one, prompt for a
6339 file name first. Opening will follow the rules set by @code{org-file-apps}.
6340 For more details, see the information on following hyperlinks
6341 (@pxref{Handling links}).
6342
6343 @kindex C-c C-a O
6344 @item O
6345 Also open the attachment, but force opening the file in Emacs.
6346
6347 @kindex C-c C-a f
6348 @item f
6349 Open the current task's attachment directory.
6350
6351 @kindex C-c C-a F
6352 @item F
6353 Also open the directory, but force using @command{dired} in Emacs.
6354
6355 @kindex C-c C-a d
6356 @item d
6357 Select and delete a single attachment.
6358
6359 @kindex C-c C-a D
6360 @item D
6361 Delete all of a task's attachments. A safer way is to open the directory in
6362 @command{dired} and delete from there.
6363
6364 @kindex C-c C-a s
6365 @item C-c C-a s
6366 @cindex property, ATTACH_DIR
6367 Set a specific directory as the entry's attachment directory. This works by
6368 putting the directory path into the @code{ATTACH_DIR} property.
6369
6370 @kindex C-c C-a i
6371 @item C-c C-a i
6372 @cindex property, ATTACH_DIR_INHERIT
6373 Set the @code{ATTACH_DIR_INHERIT} property, so that children will use the
6374 same directory for attachments as the parent does.
6375 @end table
6376 @end table
6377
6378 @node RSS Feeds, Protocols, Attachments, Capture - Refile - Archive
6379 @section RSS feeds
6380 @cindex RSS feeds
6381 @cindex Atom feeds
6382
6383 Org can add and change entries based on information found in RSS feeds and
6384 Atom feeds. You could use this to make a task out of each new podcast in a
6385 podcast feed. Or you could use a phone-based note-creating service on the
6386 web to import tasks into Org. To access feeds, configure the variable
6387 @code{org-feed-alist}. The docstring of this variable has detailed
6388 information. Here is just an example:
6389
6390 @example
6391 (setq org-feed-alist
6392 '(("Slashdot"
6393 "http://rss.slashdot.org/Slashdot/slashdot"
6394 "~/txt/org/feeds.org" "Slashdot Entries")))
6395 @end example
6396
6397 @noindent
6398 will configure that new items from the feed provided by
6399 @code{rss.slashdot.org} will result in new entries in the file
6400 @file{~/org/feeds.org} under the heading @samp{Slashdot Entries}, whenever
6401 the following command is used:
6402
6403 @table @kbd
6404 @kindex C-c C-x g
6405 @item C-c C-x g
6406 Collect items from the feeds configured in @code{org-feed-alist} and act upon
6407 them.
6408 @kindex C-c C-x G
6409 @item C-c C-x G
6410 Prompt for a feed name and go to the inbox configured for this feed.
6411 @end table
6412
6413 Under the same headline, Org will create a drawer @samp{FEEDSTATUS} in which
6414 it will store information about the status of items in the feed, to avoid
6415 adding the same item several times. You should add @samp{FEEDSTATUS} to the
6416 list of drawers in that file:
6417
6418 @example
6419 #+DRAWERS: LOGBOOK PROPERTIES FEEDSTATUS
6420 @end example
6421
6422 For more information, including how to read atom feeds, see
6423 @file{org-feed.el} and the docstring of @code{org-feed-alist}.
6424
6425 @node Protocols, Refiling notes, RSS Feeds, Capture - Refile - Archive
6426 @section Protocols for external access
6427 @cindex protocols, for external access
6428 @cindex emacsserver
6429
6430 You can set up Org for handling protocol calls from outside applications that
6431 are passed to Emacs through the @file{emacsserver}. For example, you can
6432 configure bookmarks in your web browser to send a link to the current page to
6433 Org and create a note from it using capture (@pxref{Capture}). Or you
6434 could create a bookmark that will tell Emacs to open the local source file of
6435 a remote website you are looking at with the browser. See
6436 @uref{http://orgmode.org/worg/org-contrib/org-protocol.php} for detailed
6437 documentation and setup instructions.
6438
6439 @node Refiling notes, Archiving, Protocols, Capture - Refile - Archive
6440 @section Refiling notes
6441 @cindex refiling notes
6442
6443 When reviewing the captured data, you may want to refile some of the entries
6444 into a different list, for example into a project. Cutting, finding the
6445 right location, and then pasting the note is cumbersome. To simplify this
6446 process, you can use the following special command:
6447
6448 @table @kbd
6449 @kindex C-c C-w
6450 @item C-c C-w
6451 @vindex org-reverse-note-order
6452 @vindex org-refile-targets
6453 @vindex org-refile-use-outline-path
6454 @vindex org-outline-path-complete-in-steps
6455 @vindex org-refile-allow-creating-parent-nodes
6456 @vindex org-log-refile
6457 @vindex org-refile-use-cache
6458 Refile the entry or region at point. This command offers possible locations
6459 for refiling the entry and lets you select one with completion. The item (or
6460 all items in the region) is filed below the target heading as a subitem.
6461 Depending on @code{org-reverse-note-order}, it will be either the first or
6462 last subitem.@*
6463 By default, all level 1 headlines in the current buffer are considered to be
6464 targets, but you can have more complex definitions across a number of files.
6465 See the variable @code{org-refile-targets} for details. If you would like to
6466 select a location via a file-path-like completion along the outline path, see
6467 the variables @code{org-refile-use-outline-path} and
6468 @code{org-outline-path-complete-in-steps}. If you would like to be able to
6469 create new nodes as new parents for refiling on the fly, check the
6470 variable @code{org-refile-allow-creating-parent-nodes}.
6471 When the variable @code{org-log-refile}@footnote{with corresponding
6472 @code{#+STARTUP} keywords @code{logrefile}, @code{lognoterefile},
6473 and @code{nologrefile}} is set, a time stamp or a note will be
6474 recorded when an entry has been refiled.
6475 @kindex C-u C-c C-w
6476 @item C-u C-c C-w
6477 Use the refile interface to jump to a heading.
6478 @kindex C-u C-u C-c C-w
6479 @item C-u C-u C-c C-w
6480 Jump to the location where @code{org-refile} last moved a tree to.
6481 @item C-2 C-c C-w
6482 Refile as the child of the item currently being clocked.
6483 @item C-0 C-c C-w @ @r{or} @ C-u C-u C-u C-c C-w
6484 Clear the target cache. Caching of refile targets can be turned on by
6485 setting @code{org-refile-use-cache}. To make the command seen new possible
6486 targets, you have to clear the cache with this command.
6487 @end table
6488
6489 @node Archiving, , Refiling notes, Capture - Refile - Archive
6490 @section Archiving
6491 @cindex archiving
6492
6493 When a project represented by a (sub)tree is finished, you may want
6494 to move the tree out of the way and to stop it from contributing to the
6495 agenda. Archiving is important to keep your working files compact and global
6496 searches like the construction of agenda views fast.
6497
6498 @table @kbd
6499 @kindex C-c C-x C-a
6500 @item C-c C-x C-a
6501 @vindex org-archive-default-command
6502 Archive the current entry using the command specified in the variable
6503 @code{org-archive-default-command}.
6504 @end table
6505
6506 @menu
6507 * Moving subtrees:: Moving a tree to an archive file
6508 * Internal archiving:: Switch off a tree but keep it in the file
6509 @end menu
6510
6511 @node Moving subtrees, Internal archiving, Archiving, Archiving
6512 @subsection Moving a tree to the archive file
6513 @cindex external archiving
6514
6515 The most common archiving action is to move a project tree to another file,
6516 the archive file.
6517
6518 @table @kbd
6519 @kindex C-c $
6520 @kindex C-c C-x C-s
6521 @item C-c C-x C-s@ @r{or short} @ C-c $
6522 @vindex org-archive-location
6523 Archive the subtree starting at the cursor position to the location
6524 given by @code{org-archive-location}.
6525 @kindex C-u C-c C-x C-s
6526 @item C-u C-c C-x C-s
6527 Check if any direct children of the current headline could be moved to
6528 the archive. To do this, each subtree is checked for open TODO entries.
6529 If none are found, the command offers to move it to the archive
6530 location. If the cursor is @emph{not} on a headline when this command
6531 is invoked, the level 1 trees will be checked.
6532 @end table
6533
6534 @cindex archive locations
6535 The default archive location is a file in the same directory as the
6536 current file, with the name derived by appending @file{_archive} to the
6537 current file name. For information and examples on how to change this,
6538 see the documentation string of the variable
6539 @code{org-archive-location}. There is also an in-buffer option for
6540 setting this variable, for example@footnote{For backward compatibility,
6541 the following also works: If there are several such lines in a file,
6542 each specifies the archive location for the text below it. The first
6543 such line also applies to any text before its definition. However,
6544 using this method is @emph{strongly} deprecated as it is incompatible
6545 with the outline structure of the document. The correct method for
6546 setting multiple archive locations in a buffer is using properties.}:
6547
6548 @cindex #+ARCHIVE
6549 @example
6550 #+ARCHIVE: %s_done::
6551 @end example
6552
6553 @cindex property, ARCHIVE
6554 @noindent
6555 If you would like to have a special ARCHIVE location for a single entry
6556 or a (sub)tree, give the entry an @code{:ARCHIVE:} property with the
6557 location as the value (@pxref{Properties and Columns}).
6558
6559 @vindex org-archive-save-context-info
6560 When a subtree is moved, it receives a number of special properties that
6561 record context information like the file from where the entry came, its
6562 outline path the archiving time etc. Configure the variable
6563 @code{org-archive-save-context-info} to adjust the amount of information
6564 added.
6565
6566
6567 @node Internal archiving, , Moving subtrees, Archiving
6568 @subsection Internal archiving
6569
6570 If you want to just switch off (for agenda views) certain subtrees without
6571 moving them to a different file, you can use the @code{ARCHIVE tag}.
6572
6573 A headline that is marked with the ARCHIVE tag (@pxref{Tags}) stays at
6574 its location in the outline tree, but behaves in the following way:
6575 @itemize @minus
6576 @item
6577 @vindex org-cycle-open-archived-trees
6578 It does not open when you attempt to do so with a visibility cycling
6579 command (@pxref{Visibility cycling}). You can force cycling archived
6580 subtrees with @kbd{C-@key{TAB}}, or by setting the option
6581 @code{org-cycle-open-archived-trees}. Also normal outline commands like
6582 @code{show-all} will open archived subtrees.
6583 @item
6584 @vindex org-sparse-tree-open-archived-trees
6585 During sparse tree construction (@pxref{Sparse trees}), matches in
6586 archived subtrees are not exposed, unless you configure the option
6587 @code{org-sparse-tree-open-archived-trees}.
6588 @item
6589 @vindex org-agenda-skip-archived-trees
6590 During agenda view construction (@pxref{Agenda Views}), the content of
6591 archived trees is ignored unless you configure the option
6592 @code{org-agenda-skip-archived-trees}, in which case these trees will always
6593 be included. In the agenda you can press @kbd{v a} to get archives
6594 temporarily included.
6595 @item
6596 @vindex org-export-with-archived-trees
6597 Archived trees are not exported (@pxref{Exporting}), only the headline
6598 is. Configure the details using the variable
6599 @code{org-export-with-archived-trees}.
6600 @item
6601 @vindex org-columns-skip-archived-trees
6602 Archived trees are excluded from column view unless the variable
6603 @code{org-columns-skip-archived-trees} is configured to @code{nil}.
6604 @end itemize
6605
6606 The following commands help manage the ARCHIVE tag:
6607
6608 @table @kbd
6609 @kindex C-c C-x a
6610 @item C-c C-x a
6611 Toggle the ARCHIVE tag for the current headline. When the tag is set,
6612 the headline changes to a shadowed face, and the subtree below it is
6613 hidden.
6614 @kindex C-u C-c C-x a
6615 @item C-u C-c C-x a
6616 Check if any direct children of the current headline should be archived.
6617 To do this, each subtree is checked for open TODO entries. If none are
6618 found, the command offers to set the ARCHIVE tag for the child. If the
6619 cursor is @emph{not} on a headline when this command is invoked, the
6620 level 1 trees will be checked.
6621 @kindex C-@kbd{TAB}
6622 @item C-@kbd{TAB}
6623 Cycle a tree even if it is tagged with ARCHIVE.
6624 @kindex C-c C-x A
6625 @item C-c C-x A
6626 Move the current entry to the @emph{Archive Sibling}. This is a sibling of
6627 the entry with the heading @samp{Archive} and the tag @samp{ARCHIVE}. The
6628 entry becomes a child of that sibling and in this way retains a lot of its
6629 original context, including inherited tags and approximate position in the
6630 outline.
6631 @end table
6632
6633
6634 @node Agenda Views, Markup, Capture - Refile - Archive, Top
6635 @chapter Agenda views
6636 @cindex agenda views
6637
6638 Due to the way Org works, TODO items, time-stamped items, and
6639 tagged headlines can be scattered throughout a file or even a number of
6640 files. To get an overview of open action items, or of events that are
6641 important for a particular date, this information must be collected,
6642 sorted and displayed in an organized way.
6643
6644 Org can select items based on various criteria and display them
6645 in a separate buffer. Seven different view types are provided:
6646
6647 @itemize @bullet
6648 @item
6649 an @emph{agenda} that is like a calendar and shows information
6650 for specific dates,
6651 @item
6652 a @emph{TODO list} that covers all unfinished
6653 action items,
6654 @item
6655 a @emph{match view}, showings headlines based on the tags, properties, and
6656 TODO state associated with them,
6657 @item
6658 a @emph{timeline view} that shows all events in a single Org file,
6659 in time-sorted view,
6660 @item
6661 a @emph{text search view} that shows all entries from multiple files
6662 that contain specified keywords,
6663 @item
6664 a @emph{stuck projects view} showing projects that currently don't move
6665 along, and
6666 @item
6667 @emph{custom views} that are special searches and combinations of different
6668 views.
6669 @end itemize
6670
6671 @noindent
6672 The extracted information is displayed in a special @emph{agenda
6673 buffer}. This buffer is read-only, but provides commands to visit the
6674 corresponding locations in the original Org files, and even to
6675 edit these files remotely.
6676
6677 @vindex org-agenda-window-setup
6678 @vindex org-agenda-restore-windows-after-quit
6679 Two variables control how the agenda buffer is displayed and whether the
6680 window configuration is restored when the agenda exits:
6681 @code{org-agenda-window-setup} and
6682 @code{org-agenda-restore-windows-after-quit}.
6683
6684 @menu
6685 * Agenda files:: Files being searched for agenda information
6686 * Agenda dispatcher:: Keyboard access to agenda views
6687 * Built-in agenda views:: What is available out of the box?
6688 * Presentation and sorting:: How agenda items are prepared for display
6689 * Agenda commands:: Remote editing of Org trees
6690 * Custom agenda views:: Defining special searches and views
6691 * Exporting Agenda Views:: Writing a view to a file
6692 * Agenda column view:: Using column view for collected entries
6693 @end menu
6694
6695 @node Agenda files, Agenda dispatcher, Agenda Views, Agenda Views
6696 @section Agenda files
6697 @cindex agenda files
6698 @cindex files for agenda
6699
6700 @vindex org-agenda-files
6701 The information to be shown is normally collected from all @emph{agenda
6702 files}, the files listed in the variable
6703 @code{org-agenda-files}@footnote{If the value of that variable is not a
6704 list, but a single file name, then the list of agenda files will be
6705 maintained in that external file.}. If a directory is part of this list,
6706 all files with the extension @file{.org} in this directory will be part
6707 of the list.
6708
6709 Thus, even if you only work with a single Org file, that file should
6710 be put into the list@footnote{When using the dispatcher, pressing
6711 @kbd{<} before selecting a command will actually limit the command to
6712 the current file, and ignore @code{org-agenda-files} until the next
6713 dispatcher command.}. You can customize @code{org-agenda-files}, but
6714 the easiest way to maintain it is through the following commands
6715
6716 @cindex files, adding to agenda list
6717 @table @kbd
6718 @kindex C-c [
6719 @item C-c [
6720 Add current file to the list of agenda files. The file is added to
6721 the front of the list. If it was already in the list, it is moved to
6722 the front. With a prefix argument, file is added/moved to the end.
6723 @kindex C-c ]
6724 @item C-c ]
6725 Remove current file from the list of agenda files.
6726 @kindex C-,
6727 @kindex C-'
6728 @item C-,
6729 @itemx C-'
6730 Cycle through agenda file list, visiting one file after the other.
6731 @kindex M-x org-iswitchb
6732 @item M-x org-iswitchb
6733 Command to use an @code{iswitchb}-like interface to switch to and between Org
6734 buffers.
6735 @end table
6736
6737 @noindent
6738 The Org menu contains the current list of files and can be used
6739 to visit any of them.
6740
6741 If you would like to focus the agenda temporarily on a file not in
6742 this list, or on just one file in the list, or even on only a subtree in a
6743 file, then this can be done in different ways. For a single agenda command,
6744 you may press @kbd{<} once or several times in the dispatcher
6745 (@pxref{Agenda dispatcher}). To restrict the agenda scope for an
6746 extended period, use the following commands:
6747
6748 @table @kbd
6749 @kindex C-c C-x <
6750 @item C-c C-x <
6751 Permanently restrict the agenda to the current subtree. When with a
6752 prefix argument, or with the cursor before the first headline in a file,
6753 the agenda scope is set to the entire file. This restriction remains in
6754 effect until removed with @kbd{C-c C-x >}, or by typing either @kbd{<}
6755 or @kbd{>} in the agenda dispatcher. If there is a window displaying an
6756 agenda view, the new restriction takes effect immediately.
6757 @kindex C-c C-x >
6758 @item C-c C-x >
6759 Remove the permanent restriction created by @kbd{C-c C-x <}.
6760 @end table
6761
6762 @noindent
6763 When working with @file{speedbar.el}, you can use the following commands in
6764 the Speedbar frame:
6765 @table @kbd
6766 @kindex <
6767 @item < @r{in the speedbar frame}
6768 Permanently restrict the agenda to the item---either an Org file or a subtree
6769 in such a file---at the cursor in the Speedbar frame.
6770 If there is a window displaying an agenda view, the new restriction takes
6771 effect immediately.
6772 @kindex >
6773 @item > @r{in the speedbar frame}
6774 Lift the restriction.
6775 @end table
6776
6777 @node Agenda dispatcher, Built-in agenda views, Agenda files, Agenda Views
6778 @section The agenda dispatcher
6779 @cindex agenda dispatcher
6780 @cindex dispatching agenda commands
6781 The views are created through a dispatcher, which should be bound to a
6782 global key---for example @kbd{C-c a} (@pxref{Installation}). In the
6783 following we will assume that @kbd{C-c a} is indeed how the dispatcher
6784 is accessed and list keyboard access to commands accordingly. After
6785 pressing @kbd{C-c a}, an additional letter is required to execute a
6786 command. The dispatcher offers the following default commands:
6787 @table @kbd
6788 @item a
6789 Create the calendar-like agenda (@pxref{Weekly/daily agenda}).
6790 @item t @r{/} T
6791 Create a list of all TODO items (@pxref{Global TODO list}).
6792 @item m @r{/} M
6793 Create a list of headlines matching a TAGS expression (@pxref{Matching
6794 tags and properties}).
6795 @item L
6796 Create the timeline view for the current buffer (@pxref{Timeline}).
6797 @item s
6798 Create a list of entries selected by a boolean expression of keywords
6799 and/or regular expressions that must or must not occur in the entry.
6800 @item /
6801 @vindex org-agenda-text-search-extra-files
6802 Search for a regular expression in all agenda files and additionally in
6803 the files listed in @code{org-agenda-text-search-extra-files}. This
6804 uses the Emacs command @code{multi-occur}. A prefix argument can be
6805 used to specify the number of context lines for each match, default is
6806 1.
6807 @item # @r{/} !
6808 Create a list of stuck projects (@pxref{Stuck projects}).
6809 @item <
6810 Restrict an agenda command to the current buffer@footnote{For backward
6811 compatibility, you can also press @kbd{1} to restrict to the current
6812 buffer.}. After pressing @kbd{<}, you still need to press the character
6813 selecting the command.
6814 @item < <
6815 If there is an active region, restrict the following agenda command to
6816 the region. Otherwise, restrict it to the current subtree@footnote{For
6817 backward compatibility, you can also press @kbd{0} to restrict to the
6818 current region/subtree.}. After pressing @kbd{< <}, you still need to press the
6819 character selecting the command.
6820 @end table
6821
6822 You can also define custom commands that will be accessible through the
6823 dispatcher, just like the default commands. This includes the
6824 possibility to create extended agenda buffers that contain several
6825 blocks together, for example the weekly agenda, the global TODO list and
6826 a number of special tags matches. @xref{Custom agenda views}.
6827
6828 @node Built-in agenda views, Presentation and sorting, Agenda dispatcher, Agenda Views
6829 @section The built-in agenda views
6830
6831 In this section we describe the built-in views.
6832
6833 @menu
6834 * Weekly/daily agenda:: The calendar page with current tasks
6835 * Global TODO list:: All unfinished action items
6836 * Matching tags and properties:: Structured information with fine-tuned search
6837 * Timeline:: Time-sorted view for single file
6838 * Search view:: Find entries by searching for text
6839 * Stuck projects:: Find projects you need to review
6840 @end menu
6841
6842 @node Weekly/daily agenda, Global TODO list, Built-in agenda views, Built-in agenda views
6843 @subsection The weekly/daily agenda
6844 @cindex agenda
6845 @cindex weekly agenda
6846 @cindex daily agenda
6847
6848 The purpose of the weekly/daily @emph{agenda} is to act like a page of a
6849 paper agenda, showing all the tasks for the current week or day.
6850
6851 @table @kbd
6852 @cindex org-agenda, command
6853 @kindex C-c a a
6854 @item C-c a a
6855 @vindex org-agenda-ndays
6856 Compile an agenda for the current week from a list of Org files. The agenda
6857 shows the entries for each day. With a numeric prefix@footnote{For backward
6858 compatibility, the universal prefix @kbd{C-u} causes all TODO entries to be
6859 listed before the agenda. This feature is deprecated, use the dedicated TODO
6860 list, or a block agenda instead (@pxref{Block agenda}).} (like @kbd{C-u 2 1
6861 C-c a a}) you may set the number of days to be displayed (see also the
6862 variable @code{org-agenda-ndays})
6863 @end table
6864
6865 Remote editing from the agenda buffer means, for example, that you can
6866 change the dates of deadlines and appointments from the agenda buffer.
6867 The commands available in the Agenda buffer are listed in @ref{Agenda
6868 commands}.
6869
6870 @subsubheading Calendar/Diary integration
6871 @cindex calendar integration
6872 @cindex diary integration
6873
6874 Emacs contains the calendar and diary by Edward M. Reingold. The
6875 calendar displays a three-month calendar with holidays from different
6876 countries and cultures. The diary allows you to keep track of
6877 anniversaries, lunar phases, sunrise/set, recurrent appointments
6878 (weekly, monthly) and more. In this way, it is quite complementary to
6879 Org. It can be very useful to combine output from Org with
6880 the diary.
6881
6882 In order to include entries from the Emacs diary into Org-mode's
6883 agenda, you only need to customize the variable
6884
6885 @lisp
6886 (setq org-agenda-include-diary t)
6887 @end lisp
6888
6889 @noindent After that, everything will happen automatically. All diary
6890 entries including holidays, anniversaries, etc., will be included in the
6891 agenda buffer created by Org-mode. @key{SPC}, @key{TAB}, and
6892 @key{RET} can be used from the agenda buffer to jump to the diary
6893 file in order to edit existing diary entries. The @kbd{i} command to
6894 insert new entries for the current date works in the agenda buffer, as
6895 well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
6896 Sunrise/Sunset times, show lunar phases and to convert to other
6897 calendars, respectively. @kbd{c} can be used to switch back and forth
6898 between calendar and agenda.
6899
6900 If you are using the diary only for sexp entries and holidays, it is
6901 faster to not use the above setting, but instead to copy or even move
6902 the entries into an Org file. Org-mode evaluates diary-style sexp
6903 entries, and does it faster because there is no overhead for first
6904 creating the diary display. Note that the sexp entries must start at
6905 the left margin, no whitespace is allowed before them. For example,
6906 the following segment of an Org file will be processed and entries
6907 will be made in the agenda:
6908
6909 @example
6910 * Birthdays and similar stuff
6911 #+CATEGORY: Holiday
6912 %%(org-calendar-holiday) ; special function for holiday names
6913 #+CATEGORY: Ann
6914 %%(diary-anniversary 5 14 1956)@footnote{Note that the order of the arguments (month, day, year) depends on the setting of @code{calendar-date-style}.} Arthur Dent is %d years old
6915 %%(diary-anniversary 10 2 1869) Mahatma Gandhi would be %d years old
6916 @end example
6917
6918 @subsubheading Anniversaries from BBDB
6919 @cindex BBDB, anniversaries
6920 @cindex anniversaries, from BBDB
6921
6922 If you are using the Big Brothers Database to store your contacts, you will
6923 very likely prefer to store anniversaries in BBDB rather than in a
6924 separate Org or diary file. Org supports this and will show BBDB
6925 anniversaries as part of the agenda. All you need to do is to add the
6926 following to one your your agenda files:
6927
6928 @example
6929 * Anniversaries
6930 :PROPERTIES:
6931 :CATEGORY: Anniv
6932 :END:
6933 %%(org-bbdb-anniversaries)
6934 @end example
6935
6936 You can then go ahead and define anniversaries for a BBDB record. Basically,
6937 you need to press @kbd{C-o anniversary @key{RET}} with the cursor in a BBDB
6938 record and then add the date in the format @code{YYYY-MM-DD}, followed by a
6939 space and the class of the anniversary (@samp{birthday} or @samp{wedding}, or
6940 a format string). If you omit the class, it will default to @samp{birthday}.
6941 Here are a few examples, the header for the file @file{org-bbdb.el} contains
6942 more detailed information.
6943
6944 @example
6945 1973-06-22
6946 1955-08-02 wedding
6947 2008-04-14 %s released version 6.01 of org-mode, %d years ago
6948 @end example
6949
6950 After a change to BBDB, or for the first agenda display during an Emacs
6951 session, the agenda display will suffer a short delay as Org updates its
6952 hash with anniversaries. However, from then on things will be very fast---much
6953 faster in fact than a long list of @samp{%%(diary-anniversary)} entries
6954 in an Org or Diary file.
6955
6956 @subsubheading Appointment reminders
6957 @cindex @file{appt.el}
6958 @cindex appointment reminders
6959
6960 Org can interact with Emacs appointments notification facility. To add all
6961 the appointments of your agenda files, use the command
6962 @code{org-agenda-to-appt}. This command also lets you filter through the
6963 list of your appointments and add only those belonging to a specific category
6964 or matching a regular expression. See the docstring for details.
6965
6966 @node Global TODO list, Matching tags and properties, Weekly/daily agenda, Built-in agenda views
6967 @subsection The global TODO list
6968 @cindex global TODO list
6969 @cindex TODO list, global
6970
6971 The global TODO list contains all unfinished TODO items formatted and
6972 collected into a single place.
6973
6974 @table @kbd
6975 @kindex C-c a t
6976 @item C-c a t
6977 Show the global TODO list. This collects the TODO items from all agenda
6978 files (@pxref{Agenda Views}) into a single buffer. By default, this lists
6979 items with a state the is not a DONE state. The buffer is in
6980 @code{agenda-mode}, so there are commands to examine and manipulate the TODO
6981 entries directly from that buffer (@pxref{Agenda commands}).
6982 @kindex C-c a T
6983 @item C-c a T
6984 @cindex TODO keyword matching
6985 @vindex org-todo-keywords
6986 Like the above, but allows selection of a specific TODO keyword. You can
6987 also do this by specifying a prefix argument to @kbd{C-c a t}. You are
6988 prompted for a keyword, and you may also specify several keywords by
6989 separating them with @samp{|} as the boolean OR operator. With a numeric
6990 prefix, the nth keyword in @code{org-todo-keywords} is selected.
6991 @kindex r
6992 The @kbd{r} key in the agenda buffer regenerates it, and you can give
6993 a prefix argument to this command to change the selected TODO keyword,
6994 for example @kbd{3 r}. If you often need a search for a specific
6995 keyword, define a custom command for it (@pxref{Agenda dispatcher}).@*
6996 Matching specific TODO keywords can also be done as part of a tags
6997 search (@pxref{Tag searches}).
6998 @end table
6999
7000 Remote editing of TODO items means that you can change the state of a
7001 TODO entry with a single key press. The commands available in the
7002 TODO list are described in @ref{Agenda commands}.
7003
7004 @cindex sublevels, inclusion into TODO list
7005 Normally the global TODO list simply shows all headlines with TODO
7006 keywords. This list can become very long. There are two ways to keep
7007 it more compact:
7008 @itemize @minus
7009 @item
7010 @vindex org-agenda-todo-ignore-scheduled
7011 @vindex org-agenda-todo-ignore-deadlines
7012 @vindex org-agenda-todo-ignore-with-date
7013 Some people view a TODO item that has been @emph{scheduled} for execution or
7014 have a @emph{deadline} (@pxref{Timestamps}) as no longer @emph{open}.
7015 Configure the variables @code{org-agenda-todo-ignore-scheduled},
7016 @code{org-agenda-todo-ignore-deadlines}, and/or
7017 @code{org-agenda-todo-ignore-with-date} to exclude such items from the
7018 global TODO list.
7019 @item
7020 @vindex org-agenda-todo-list-sublevels
7021 TODO items may have sublevels to break up the task into subtasks. In
7022 such cases it may be enough to list only the highest level TODO headline
7023 and omit the sublevels from the global list. Configure the variable
7024 @code{org-agenda-todo-list-sublevels} to get this behavior.
7025 @end itemize
7026
7027 @node Matching tags and properties, Timeline, Global TODO list, Built-in agenda views
7028 @subsection Matching tags and properties
7029 @cindex matching, of tags
7030 @cindex matching, of properties
7031 @cindex tags view
7032 @cindex match view
7033
7034 If headlines in the agenda files are marked with @emph{tags} (@pxref{Tags}),
7035 or have properties (@pxref{Properties and Columns}), you can select headlines
7036 based on this metadata and collect them into an agenda buffer. The match
7037 syntax described here also applies when creating sparse trees with @kbd{C-c /
7038 m}.
7039
7040 @table @kbd
7041 @kindex C-c a m
7042 @item C-c a m
7043 Produce a list of all headlines that match a given set of tags. The
7044 command prompts for a selection criterion, which is a boolean logic
7045 expression with tags, like @samp{+work+urgent-withboss} or
7046 @samp{work|home} (@pxref{Tags}). If you often need a specific search,
7047 define a custom command for it (@pxref{Agenda dispatcher}).
7048 @kindex C-c a M
7049 @item C-c a M
7050 @vindex org-tags-match-list-sublevels
7051 @vindex org-agenda-tags-todo-honor-ignore-options
7052 Like @kbd{C-c a m}, but only select headlines that are also TODO items in a
7053 not-DONE state and force checking subitems (see variable
7054 @code{org-tags-match-list-sublevels}). To exclude scheduled/deadline items,
7055 see the variable @code{org-agenda-tags-todo-honor-ignore-options}. Matching
7056 specific TODO keywords together with a tags match is also possible, see
7057 @ref{Tag searches}.
7058 @end table
7059
7060 The commands available in the tags list are described in @ref{Agenda
7061 commands}.
7062
7063 @subsubheading Match syntax
7064
7065 @cindex Boolean logic, for tag/property searches
7066 A search string can use Boolean operators @samp{&} for AND and @samp{|} for
7067 OR. @samp{&} binds more strongly than @samp{|}. Parentheses are currently
7068 not implemented. Each element in the search is either a tag, a regular
7069 expression matching tags, or an expression like @code{PROPERTY OPERATOR
7070 VALUE} with a comparison operator, accessing a property value. Each element
7071 may be preceded by @samp{-}, to select against it, and @samp{+} is syntactic
7072 sugar for positive selection. The AND operator @samp{&} is optional when
7073 @samp{+} or @samp{-} is present. Here are some examples, using only tags.
7074
7075 @table @samp
7076 @item +work-boss
7077 Select headlines tagged @samp{:work:}, but discard those also tagged
7078 @samp{:boss:}.
7079 @item work|laptop
7080 Selects lines tagged @samp{:work:} or @samp{:laptop:}.
7081 @item work|laptop+night
7082 Like before, but require the @samp{:laptop:} lines to be tagged also
7083 @samp{:night:}.
7084 @end table
7085
7086 @cindex regular expressions, with tags search
7087 Instead of a tag, you may also specify a regular expression enclosed in curly
7088 braces. For example,
7089 @samp{work+@{^boss.*@}} matches headlines that contain the tag
7090 @samp{:work:} and any tag @i{starting} with @samp{boss}.
7091
7092 @cindex TODO keyword matching, with tags search
7093 @cindex level, require for tags/property match
7094 @cindex category, require for tags/property match
7095 @vindex org-odd-levels-only
7096 You may also test for properties (@pxref{Properties and Columns}) at the same
7097 time as matching tags. The properties may be real properties, or special
7098 properties that represent other metadata (@pxref{Special properties}). For
7099 example, the ``property'' @code{TODO} represents the TODO keyword of the
7100 entry. Or, the ``property'' @code{LEVEL} represents the level of an entry.
7101 So a search @samp{+LEVEL=3+boss-TODO="DONE"} lists all level three headlines
7102 that have the tag @samp{boss} and are @emph{not} marked with the TODO keyword
7103 DONE. In buffers with @code{org-odd-levels-only} set, @samp{LEVEL} does not
7104 count the number of stars, but @samp{LEVEL=2} will correspond to 3 stars etc.
7105
7106 Here are more examples:
7107 @table @samp
7108 @item work+TODO="WAITING"
7109 Select @samp{:work:}-tagged TODO lines with the specific TODO
7110 keyword @samp{WAITING}.
7111 @item work+TODO="WAITING"|home+TODO="WAITING"
7112 Waiting tasks both at work and at home.
7113 @end table
7114
7115 When matching properties, a number of different operators can be used to test
7116 the value of a property. Here is a complex example:
7117
7118 @example
7119 +work-boss+PRIORITY="A"+Coffee="unlimited"+Effort<2 \
7120 +With=@{Sarah\|Denny@}+SCHEDULED>="<2008-10-11>"
7121 @end example
7122
7123 @noindent
7124 The type of comparison will depend on how the comparison value is written:
7125 @itemize @minus
7126 @item
7127 If the comparison value is a plain number, a numerical comparison is done,
7128 and the allowed operators are @samp{<}, @samp{=}, @samp{>}, @samp{<=},
7129 @samp{>=}, and @samp{<>}.
7130 @item
7131 If the comparison value is enclosed in double-quotes,
7132 a string comparison is done, and the same operators are allowed.
7133 @item
7134 If the comparison value is enclosed in double-quotes @emph{and} angular
7135 brackets (like @samp{DEADLINE<="<2008-12-24 18:30>"}), both values are
7136 assumed to be date/time specifications in the standard Org way, and the
7137 comparison will be done accordingly. Special values that will be recognized
7138 are @code{"<now>"} for now (including time), and @code{"<today>"}, and
7139 @code{"<tomorrow>"} for these days at 0:00 hours, i.e. without a time
7140 specification. Also strings like @code{"<+5d>"} or @code{"<-2m>"} with units
7141 @code{d}, @code{w}, @code{m}, and @code{y} for day, week, month, and year,
7142 respectively, can be used.
7143 @item
7144 If the comparison value is enclosed
7145 in curly braces, a regexp match is performed, with @samp{=} meaning that the
7146 regexp matches the property value, and @samp{<>} meaning that it does not
7147 match.
7148 @end itemize
7149
7150 So the search string in the example finds entries tagged @samp{:work:} but
7151 not @samp{:boss:}, which also have a priority value @samp{A}, a
7152 @samp{:Coffee:} property with the value @samp{unlimited}, an @samp{Effort}
7153 property that is numerically smaller than 2, a @samp{:With:} property that is
7154 matched by the regular expression @samp{Sarah\|Denny}, and that are scheduled
7155 on or after October 11, 2008.
7156
7157 Accessing TODO, LEVEL, and CATEGORY during a search is fast. Accessing any
7158 other properties will slow down the search. However, once you have paid the
7159 price by accessing one property, testing additional properties is cheap
7160 again.
7161
7162 You can configure Org-mode to use property inheritance during a search, but
7163 beware that this can slow down searches considerably. See @ref{Property
7164 inheritance}, for details.
7165
7166 For backward compatibility, and also for typing speed, there is also a
7167 different way to test TODO states in a search. For this, terminate the
7168 tags/property part of the search string (which may include several terms
7169 connected with @samp{|}) with a @samp{/} and then specify a Boolean
7170 expression just for TODO keywords. The syntax is then similar to that for
7171 tags, but should be applied with care: for example, a positive selection on
7172 several TODO keywords cannot meaningfully be combined with boolean AND.
7173 However, @emph{negative selection} combined with AND can be meaningful. To
7174 make sure that only lines are checked that actually have any TODO keyword
7175 (resulting in a speed-up), use @kbd{C-c a M}, or equivalently start the TODO
7176 part after the slash with @samp{!}. Using @kbd{C-c a M} or @samp{/!} will
7177 not match TODO keywords in a DONE state. Examples:
7178
7179 @table @samp
7180 @item work/WAITING
7181 Same as @samp{work+TODO="WAITING"}
7182 @item work/!-WAITING-NEXT
7183 Select @samp{:work:}-tagged TODO lines that are neither @samp{WAITING}
7184 nor @samp{NEXT}
7185 @item work/!+WAITING|+NEXT
7186 Select @samp{:work:}-tagged TODO lines that are either @samp{WAITING} or
7187 @samp{NEXT}.
7188 @end table
7189
7190 @node Timeline, Search view, Matching tags and properties, Built-in agenda views
7191 @subsection Timeline for a single file
7192 @cindex timeline, single file
7193 @cindex time-sorted view
7194
7195 The timeline summarizes all time-stamped items from a single Org-mode
7196 file in a @emph{time-sorted view}. The main purpose of this command is
7197 to give an overview over events in a project.
7198
7199 @table @kbd
7200 @kindex C-c a L
7201 @item C-c a L
7202 Show a time-sorted view of the Org file, with all time-stamped items.
7203 When called with a @kbd{C-u} prefix, all unfinished TODO entries
7204 (scheduled or not) are also listed under the current date.
7205 @end table
7206
7207 @noindent
7208 The commands available in the timeline buffer are listed in
7209 @ref{Agenda commands}.
7210
7211 @node Search view, Stuck projects, Timeline, Built-in agenda views
7212 @subsection Search view
7213 @cindex search view
7214 @cindex text search
7215 @cindex searching, for text
7216
7217 This agenda view is a general text search facility for Org-mode entries.
7218 It is particularly useful to find notes.
7219
7220 @table @kbd
7221 @kindex C-c a s
7222 @item C-c a s
7223 This is a special search that lets you select entries by matching a substring
7224 or specific words using a boolean logic.
7225 @end table
7226 For example, the search string @samp{computer equipment} will find entries
7227 that contain @samp{computer equipment} as a substring. If the two words are
7228 separated by more space or a line break, the search will still match.
7229 Search view can also search for specific keywords in the entry, using Boolean
7230 logic. The search string @samp{+computer +wifi -ethernet -@{8\.11[bg]@}}
7231 will search for note entries that contain the keywords @code{computer}
7232 and @code{wifi}, but not the keyword @code{ethernet}, and which are also
7233 not matched by the regular expression @code{8\.11[bg]}, meaning to
7234 exclude both 8.11b and 8.11g. The first @samp{+} is necessary to turn on
7235 word search, other @samp{+} characters are optional. For more details, see
7236 the docstring of the command @code{org-search-view}.
7237
7238 @vindex org-agenda-text-search-extra-files
7239 Note that in addition to the agenda files, this command will also search
7240 the files listed in @code{org-agenda-text-search-extra-files}.
7241
7242 @node Stuck projects, , Search view, Built-in agenda views
7243 @subsection Stuck projects
7244
7245 If you are following a system like David Allen's GTD to organize your
7246 work, one of the ``duties'' you have is a regular review to make sure
7247 that all projects move along. A @emph{stuck} project is a project that
7248 has no defined next actions, so it will never show up in the TODO lists
7249 Org-mode produces. During the review, you need to identify such
7250 projects and define next actions for them.
7251
7252 @table @kbd
7253 @kindex C-c a #
7254 @item C-c a #
7255 List projects that are stuck.
7256 @kindex C-c a !
7257 @item C-c a !
7258 @vindex org-stuck-projects
7259 Customize the variable @code{org-stuck-projects} to define what a stuck
7260 project is and how to find it.
7261 @end table
7262
7263 You almost certainly will have to configure this view before it will
7264 work for you. The built-in default assumes that all your projects are
7265 level-2 headlines, and that a project is not stuck if it has at least
7266 one entry marked with a TODO keyword TODO or NEXT or NEXTACTION.
7267
7268 Let's assume that you, in your own way of using Org-mode, identify
7269 projects with a tag PROJECT, and that you use a TODO keyword MAYBE to
7270 indicate a project that should not be considered yet. Let's further
7271 assume that the TODO keyword DONE marks finished projects, and that NEXT
7272 and TODO indicate next actions. The tag @@SHOP indicates shopping and
7273 is a next action even without the NEXT tag. Finally, if the project
7274 contains the special word IGNORE anywhere, it should not be listed
7275 either. In this case you would start by identifying eligible projects
7276 with a tags/todo match@footnote{@xref{Tag searches}.}
7277 @samp{+PROJECT/-MAYBE-DONE}, and then check for TODO, NEXT, @@SHOP, and
7278 IGNORE in the subtree to identify projects that are not stuck. The
7279 correct customization for this is
7280
7281 @lisp
7282 (setq org-stuck-projects
7283 '("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@@SHOP")
7284 "\\<IGNORE\\>"))
7285 @end lisp
7286
7287 Note that if a project is identified as non-stuck, the subtree of this entry
7288 will still be searched for stuck projects.
7289
7290 @node Presentation and sorting, Agenda commands, Built-in agenda views, Agenda Views
7291 @section Presentation and sorting
7292 @cindex presentation, of agenda items
7293
7294 @vindex org-agenda-prefix-format
7295 Before displaying items in an agenda view, Org-mode visually prepares
7296 the items and sorts them. Each item occupies a single line. The line
7297 starts with a @emph{prefix} that contains the @emph{category}
7298 (@pxref{Categories}) of the item and other important information. You can
7299 customize the prefix using the option @code{org-agenda-prefix-format}.
7300 The prefix is followed by a cleaned-up version of the outline headline
7301 associated with the item.
7302
7303 @menu
7304 * Categories:: Not all tasks are equal
7305 * Time-of-day specifications:: How the agenda knows the time
7306 * Sorting of agenda items:: The order of things
7307 @end menu
7308
7309 @node Categories, Time-of-day specifications, Presentation and sorting, Presentation and sorting
7310 @subsection Categories
7311
7312 @cindex category
7313 @cindex #+CATEGORY
7314 The category is a broad label assigned to each agenda item. By default,
7315 the category is simply derived from the file name, but you can also
7316 specify it with a special line in the buffer, like this@footnote{For
7317 backward compatibility, the following also works: if there are several
7318 such lines in a file, each specifies the category for the text below it.
7319 The first category also applies to any text before the first CATEGORY
7320 line. However, using this method is @emph{strongly} deprecated as it is
7321 incompatible with the outline structure of the document. The correct
7322 method for setting multiple categories in a buffer is using a
7323 property.}:
7324
7325 @example
7326 #+CATEGORY: Thesis
7327 @end example
7328
7329 @noindent
7330 @cindex property, CATEGORY
7331 If you would like to have a special CATEGORY for a single entry or a
7332 (sub)tree, give the entry a @code{:CATEGORY:} property with the
7333 special category you want to apply as the value.
7334
7335 @noindent
7336 The display in the agenda buffer looks best if the category is not
7337 longer than 10 characters.
7338
7339 @node Time-of-day specifications, Sorting of agenda items, Categories, Presentation and sorting
7340 @subsection Time-of-day specifications
7341 @cindex time-of-day specification
7342
7343 Org-mode checks each agenda item for a time-of-day specification. The
7344 time can be part of the timestamp that triggered inclusion into the
7345 agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}. Time
7346 ranges can be specified with two timestamps, like
7347 @c
7348 @w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
7349
7350 In the headline of the entry itself, a time(range) may also appear as
7351 plain text (like @samp{12:45} or a @samp{8:30-1pm}). If the agenda
7352 integrates the Emacs diary (@pxref{Weekly/daily agenda}), time
7353 specifications in diary entries are recognized as well.
7354
7355 For agenda display, Org-mode extracts the time and displays it in a
7356 standard 24 hour format as part of the prefix. The example times in
7357 the previous paragraphs would end up in the agenda like this:
7358
7359 @example
7360 8:30-13:00 Arthur Dent lies in front of the bulldozer
7361 12:45...... Ford Prefect arrives and takes Arthur to the pub
7362 19:00...... The Vogon reads his poem
7363 20:30-22:15 Marvin escorts the Hitchhikers to the bridge
7364 @end example
7365
7366 @cindex time grid
7367 If the agenda is in single-day mode, or for the display of today, the
7368 timed entries are embedded in a time grid, like
7369
7370 @example
7371 8:00...... ------------------
7372 8:30-13:00 Arthur Dent lies in front of the bulldozer
7373 10:00...... ------------------
7374 12:00...... ------------------
7375 12:45...... Ford Prefect arrives and takes Arthur to the pub
7376 14:00...... ------------------
7377 16:00...... ------------------
7378 18:00...... ------------------
7379 19:00...... The Vogon reads his poem
7380 20:00...... ------------------
7381 20:30-22:15 Marvin escorts the Hitchhikers to the bridge
7382 @end example
7383
7384 @vindex org-agenda-use-time-grid
7385 @vindex org-agenda-time-grid
7386 The time grid can be turned on and off with the variable
7387 @code{org-agenda-use-time-grid}, and can be configured with
7388 @code{org-agenda-time-grid}.
7389
7390 @node Sorting of agenda items, , Time-of-day specifications, Presentation and sorting
7391 @subsection Sorting of agenda items
7392 @cindex sorting, of agenda items
7393 @cindex priorities, of agenda items
7394 Before being inserted into a view, the items are sorted. How this is
7395 done depends on the type of view.
7396 @itemize @bullet
7397 @item
7398 @vindex org-agenda-files
7399 For the daily/weekly agenda, the items for each day are sorted. The
7400 default order is to first collect all items containing an explicit
7401 time-of-day specification. These entries will be shown at the beginning
7402 of the list, as a @emph{schedule} for the day. After that, items remain
7403 grouped in categories, in the sequence given by @code{org-agenda-files}.
7404 Within each category, items are sorted by priority (@pxref{Priorities}),
7405 which is composed of the base priority (2000 for priority @samp{A}, 1000
7406 for @samp{B}, and 0 for @samp{C}), plus additional increments for
7407 overdue scheduled or deadline items.
7408 @item
7409 For the TODO list, items remain in the order of categories, but within
7410 each category, sorting takes place according to priority
7411 (@pxref{Priorities}). The priority used for sorting derives from the
7412 priority cookie, with additions depending on how close an item is to its due
7413 or scheduled date.
7414 @item
7415 For tags matches, items are not sorted at all, but just appear in the
7416 sequence in which they are found in the agenda files.
7417 @end itemize
7418
7419 @vindex org-agenda-sorting-strategy
7420 Sorting can be customized using the variable
7421 @code{org-agenda-sorting-strategy}, and may also include criteria based on
7422 the estimated effort of an entry (@pxref{Effort estimates}).
7423
7424 @node Agenda commands, Custom agenda views, Presentation and sorting, Agenda Views
7425 @section Commands in the agenda buffer
7426 @cindex commands, in agenda buffer
7427
7428 Entries in the agenda buffer are linked back to the Org file or diary
7429 file where they originate. You are not allowed to edit the agenda
7430 buffer itself, but commands are provided to show and jump to the
7431 original entry location, and to edit the Org files ``remotely'' from
7432 the agenda buffer. In this way, all information is stored only once,
7433 removing the risk that your agenda and note files may diverge.
7434
7435 Some commands can be executed with mouse clicks on agenda lines. For
7436 the other commands, the cursor needs to be in the desired line.
7437
7438 @table @kbd
7439 @tsubheading{Motion}
7440 @cindex motion commands in agenda
7441 @kindex n
7442 @item n
7443 Next line (same as @key{up} and @kbd{C-p}).
7444 @kindex p
7445 @item p
7446 Previous line (same as @key{down} and @kbd{C-n}).
7447 @tsubheading{View/Go to Org file}
7448 @kindex mouse-3
7449 @kindex @key{SPC}
7450 @item mouse-3
7451 @itemx @key{SPC}
7452 Display the original location of the item in another window.
7453 With prefix arg, make sure that the entire entry is made visible in the
7454 outline, not only the heading.
7455 @c
7456 @kindex L
7457 @item L
7458 Display original location and recenter that window.
7459 @c
7460 @kindex mouse-2
7461 @kindex mouse-1
7462 @kindex @key{TAB}
7463 @item mouse-2
7464 @itemx mouse-1
7465 @itemx @key{TAB}
7466 Go to the original location of the item in another window. Under Emacs
7467 22, @kbd{mouse-1} will also works for this.
7468 @c
7469 @kindex @key{RET}
7470 @itemx @key{RET}
7471 Go to the original location of the item and delete other windows.
7472 @c
7473 @kindex F
7474 @item F
7475 @vindex org-agenda-start-with-follow-mode
7476 Toggle Follow mode. In Follow mode, as you move the cursor through
7477 the agenda buffer, the other window always shows the corresponding
7478 location in the Org file. The initial setting for this mode in new
7479 agenda buffers can be set with the variable
7480 @code{org-agenda-start-with-follow-mode}.
7481 @c
7482 @kindex C-c C-x b
7483 @item C-c C-x b
7484 Display the entire subtree of the current item in an indirect buffer. With a
7485 numeric prefix argument N, go up to level N and then take that tree. If N is
7486 negative, go up that many levels. With a @kbd{C-u} prefix, do not remove the
7487 previously used indirect buffer.
7488
7489 @kindex C-c C-o
7490 @item C-c C-o
7491 Follow a link in the entry. This will offer a selection of any links in the
7492 text belonging to the referenced Org node. If there is only one link, it
7493 will be followed without a selection prompt.
7494
7495 @tsubheading{Change display}
7496 @cindex display changing, in agenda
7497 @kindex o
7498 @item o
7499 Delete other windows.
7500 @c
7501 @kindex v d
7502 @kindex d
7503 @kindex v w
7504 @kindex w
7505 @kindex v m
7506 @kindex v y
7507 @item v d @ @r{or short} @ d
7508 @itemx v w @ @r{or short} @ w
7509 @itemx v m
7510 @itemx v y
7511 Switch to day/week/month/year view. When switching to day or week view,
7512 this setting becomes the default for subsequent agenda commands. Since
7513 month and year views are slow to create, they do not become the default.
7514 A numeric prefix argument may be used to jump directly to a specific day
7515 of the year, ISO week, month, or year, respectively. For example,
7516 @kbd{32 d} jumps to February 1st, @kbd{9 w} to ISO week number 9. When
7517 setting day, week, or month view, a year may be encoded in the prefix
7518 argument as well. For example, @kbd{200712 w} will jump to week 12 in
7519 2007. If such a year specification has only one or two digits, it will
7520 be mapped to the interval 1938-2037.
7521 @c
7522 @kindex f
7523 @item f
7524 @vindex org-agenda-ndays
7525 Go forward in time to display the following @code{org-agenda-ndays} days.
7526 For example, if the display covers a week, switch to the following week.
7527 With prefix arg, go forward that many times @code{org-agenda-ndays} days.
7528 @c
7529 @kindex b
7530 @item b
7531 Go backward in time to display earlier dates.
7532 @c
7533 @kindex .
7534 @item .
7535 Go to today.
7536 @c
7537 @kindex j
7538 @item j
7539 Prompt for a date and go there.
7540 @c
7541 @kindex J
7542 @item J
7543 Go to the currently clocked in task in the agenda buffer.
7544 @c
7545 @kindex D
7546 @item D
7547 Toggle the inclusion of diary entries. See @ref{Weekly/daily agenda}.
7548 @c
7549 @kindex v l
7550 @kindex v L
7551 @kindex l
7552 @item v l @ @r{or short} @ l
7553 @vindex org-log-done
7554 @vindex org-agenda-log-mode-items
7555 Toggle Logbook mode. In Logbook mode, entries that were marked DONE while
7556 logging was on (variable @code{org-log-done}) are shown in the agenda, as are
7557 entries that have been clocked on that day. You can configure the entry
7558 types that should be included in log mode using the variable
7559 @code{org-agenda-log-mode-items}. When called with a @kbd{C-u} prefix, show
7560 all possible logbook entries, including state changes. When called with two
7561 prefix args @kbd{C-u C-u}, show only logging information, nothing else.
7562 @kbd{v L} is equivalent to @kbd{C-u v l}.
7563 @c
7564 @kindex v [
7565 @kindex [
7566 @item v [ @ @r{or short} @ [
7567 Include inactive timestamps into the current view. Only for weekly/daily
7568 agenda and timeline views.
7569 @c
7570 @kindex v a
7571 @kindex v A
7572 @item v a
7573 @itemx v A
7574 Toggle Archives mode. In Archives mode, trees that are marked
7575 @code{ARCHIVED} are also scanned when producing the agenda. When you use the
7576 capital @kbd{A}, even all archive files are included. To exit archives mode,
7577 press @kbd{v a} again.
7578 @c
7579 @kindex v R
7580 @kindex R
7581 @item v R @ @r{or short} @ R
7582 @vindex org-agenda-start-with-clockreport-mode
7583 Toggle Clockreport mode. In Clockreport mode, the daily/weekly agenda will
7584 always show a table with the clocked times for the timespan and file scope
7585 covered by the current agenda view. The initial setting for this mode in new
7586 agenda buffers can be set with the variable
7587 @code{org-agenda-start-with-clockreport-mode}.
7588 @c
7589 @kindex v E
7590 @kindex E
7591 @item v E @ @r{or short} @ E
7592 @vindex org-agenda-start-with-entry-text-mode
7593 @vindex org-agenda-entry-text-maxlines
7594 Toggle entry text mode. In entry text mode, a number of lines from the Org
7595 outline node referenced by an agenda line will be displayed below the line.
7596 The maximum number of lines is given by the variable
7597 @code{org-agenda-entry-text-maxlines}. Calling this command with a numeric
7598 prefix argument will temporarily modify that number to the prefix value.
7599 @c
7600 @kindex G
7601 @item G
7602 @vindex org-agenda-use-time-grid
7603 @vindex org-agenda-time-grid
7604 Toggle the time grid on and off. See also the variables
7605 @code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
7606 @c
7607 @kindex r
7608 @item r
7609 Recreate the agenda buffer, for example to reflect the changes after
7610 modification of the timestamps of items with @kbd{S-@key{left}} and
7611 @kbd{S-@key{right}}. When the buffer is the global TODO list, a prefix
7612 argument is interpreted to create a selective list for a specific TODO
7613 keyword.
7614 @kindex g
7615 @item g
7616 Same as @kbd{r}.
7617 @c
7618 @kindex s
7619 @kindex C-x C-s
7620 @item s
7621 @itemx C-x C-s
7622 Save all Org buffers in the current Emacs session, and also the locations of
7623 IDs.
7624 @c
7625 @kindex C-c C-x C-c
7626 @item C-c C-x C-c
7627 @vindex org-columns-default-format
7628 Invoke column view (@pxref{Column view}) in the agenda buffer. The column
7629 view format is taken from the entry at point, or (if there is no entry at
7630 point), from the first entry in the agenda view. So whatever the format for
7631 that entry would be in the original buffer (taken from a property, from a
7632 @code{#+COLUMNS} line, or from the default variable
7633 @code{org-columns-default-format}), will be used in the agenda.
7634
7635 @kindex C-c C-x >
7636 @item C-c C-x >
7637 Remove the restriction lock on the agenda, if it is currently restricted to a
7638 file or subtree (@pxref{Agenda files}).
7639
7640 @tsubheading{Secondary filtering and query editing}
7641 @cindex filtering, by tag and effort, in agenda
7642 @cindex tag filtering, in agenda
7643 @cindex effort filtering, in agenda
7644 @cindex query editing, in agenda
7645
7646 @kindex /
7647 @item /
7648 @vindex org-agenda-filter-preset
7649 Filter the current agenda view with respect to a tag and/or effort estimates.
7650 The difference between this and a custom agenda command is that filtering is
7651 very fast, so that you can switch quickly between different filters without
7652 having to recreate the agenda@footnote{Custom commands can preset a filter by
7653 binding the variable @code{org-agenda-filter-preset} as an option. This
7654 filter will then be applied to the view and persist as a basic filter through
7655 refreshes and more secondary filtering. The filter is a global property of
7656 the entire agenda view - in a block agenda, you should only set this in the
7657 global options section, not in the section of an individual block.}
7658
7659 You will be prompted for a tag selection letter, SPC will mean any tag at
7660 all. Pressing @key{TAB} at that prompt will offer use completion to select a
7661 tag (including any tags that do not have a selection character). The command
7662 then hides all entries that do not contain or inherit this tag. When called
7663 with prefix arg, remove the entries that @emph{do} have the tag. A second
7664 @kbd{/} at the prompt will turn off the filter and unhide any hidden entries.
7665 If the first key you press is either @kbd{+} or @kbd{-}, the previous filter
7666 will be narrowed by requiring or forbidding the selected additional tag.
7667 Instead of pressing @kbd{+} or @kbd{-} after @kbd{/}, you can also
7668 immediately use the @kbd{\} command.
7669
7670 @vindex org-sort-agenda-noeffort-is-high
7671 In order to filter for effort estimates, you should set-up allowed
7672 efforts globally, for example
7673 @lisp
7674 (setq org-global-properties
7675 '(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00")))
7676 @end lisp
7677 You can then filter for an effort by first typing an operator, one of
7678 @kbd{<}, @kbd{>}, and @kbd{=}, and then the one-digit index of an effort
7679 estimate in your array of allowed values, where @kbd{0} means the 10th value.
7680 The filter will then restrict to entries with effort smaller-or-equal, equal,
7681 or larger-or-equal than the selected value. If the digits 0-9 are not used
7682 as fast access keys to tags, you can also simply press the index digit
7683 directly without an operator. In this case, @kbd{<} will be assumed. For
7684 application of the operator, entries without a defined effort will be treated
7685 according to the value of @code{org-sort-agenda-noeffort-is-high}. To filter
7686 for tasks without effort definition, press @kbd{?} as the operator.
7687
7688 Org also supports automatic, context-aware tag filtering. If the variable
7689 @code{org-agenda-auto-exclude-function} is set to a user-defined function,
7690 that function can decide which tags should be excluded from the agenda
7691 automatically. Once this is set, the @kbd{/} command then accepts @kbd{RET}
7692 as a sub-option key and runs the auto exclusion logic. For example, let's
7693 say you use a @code{Net} tag to identify tasks which need network access, an
7694 @code{Errand} tag for errands in town, and a @code{Call} tag for making phone
7695 calls. You could auto-exclude these tags based on the availability of the
7696 Internet, and outside of business hours, with something like this:
7697
7698 @lisp
7699 @group
7700 (defun org-my-auto-exclude-function (tag)
7701 (and (cond
7702 ((string= tag "Net")
7703 (/= 0 (call-process "/sbin/ping" nil nil nil
7704 "-c1" "-q" "-t1" "mail.gnu.org")))
7705 ((or (string= tag "Errand") (string= tag "Call"))
7706 (let ((hour (nth 2 (decode-time))))
7707 (or (< hour 8) (> hour 21)))))
7708 (concat "-" tag)))
7709
7710 (setq org-agenda-auto-exclude-function 'org-my-auto-exclude-function)
7711 @end group
7712 @end lisp
7713
7714 @kindex \
7715 @item \
7716 Narrow the current agenda filter by an additional condition. When called with
7717 prefix arg, remove the entries that @emph{do} have the tag, or that do match
7718 the effort criterion. You can achieve the same effect by pressing @kbd{+} or
7719 @kbd{-} as the first key after the @kbd{/} command.
7720
7721 @kindex [
7722 @kindex ]
7723 @kindex @{
7724 @kindex @}
7725 @item [ ] @{ @}
7726 @table @i
7727 @item @r{in} search view
7728 add new search words (@kbd{[} and @kbd{]}) or new regular expressions
7729 (@kbd{@{} and @kbd{@}}) to the query string. The opening bracket/brace will
7730 add a positive search term prefixed by @samp{+}, indicating that this search
7731 term @i{must} occur/match in the entry. The closing bracket/brace will add a
7732 negative search term which @i{must not} occur/match in the entry for it to be
7733 selected.
7734 @end table
7735
7736 @page
7737 @tsubheading{Remote editing}
7738 @cindex remote editing, from agenda
7739
7740 @item 0-9
7741 Digit argument.
7742 @c
7743 @cindex undoing remote-editing events
7744 @cindex remote editing, undo
7745 @kindex C-_
7746 @item C-_
7747 Undo a change due to a remote editing command. The change is undone
7748 both in the agenda buffer and in the remote buffer.
7749 @c
7750 @kindex t
7751 @item t
7752 Change the TODO state of the item, both in the agenda and in the
7753 original org file.
7754 @c
7755 @kindex C-S-@key{right}
7756 @kindex C-S-@key{left}
7757 @item C-S-@key{right}@r{/}@key{left}
7758 Switch to the next/previous set of TODO keywords.
7759 @c
7760 @kindex C-k
7761 @item C-k
7762 @vindex org-agenda-confirm-kill
7763 Delete the current agenda item along with the entire subtree belonging
7764 to it in the original Org file. If the text to be deleted remotely
7765 is longer than one line, the kill needs to be confirmed by the user. See
7766 variable @code{org-agenda-confirm-kill}.
7767 @c
7768 @kindex C-c C-w
7769 @item C-c C-w
7770 Refile the entry at point.
7771 @c
7772 @kindex C-c C-x C-a
7773 @kindex a
7774 @item C-c C-x C-a @ @r{or short} @ a
7775 @vindex org-archive-default-command
7776 Archive the subtree corresponding to the entry at point using the default
7777 archiving command set in @code{org-archive-default-command}. When using the
7778 @code{a} key, confirmation will be required.
7779 @c
7780 @kindex C-c C-x a
7781 @item C-c C-x a
7782 Toggle the ARCHIVE tag for the current headline.
7783 @c
7784 @kindex C-c C-x A
7785 @item C-c C-x A
7786 Move the subtree corresponding to the current entry to its @emph{archive
7787 sibling}.
7788 @c
7789 @kindex $
7790 @kindex C-c C-x C-s
7791 @item C-c C-x C-s @ @r{or short} @ $
7792 Archive the subtree corresponding to the current headline. This means the
7793 entry will be moved to the configured archive location, most likely a
7794 different file.
7795 @c
7796 @kindex T
7797 @item T
7798 @vindex org-agenda-show-inherited-tags
7799 Show all tags associated with the current item. This is useful if you have
7800 turned off @code{org-agenda-show-inherited-tags}, but still want to see all
7801 tags of a headline occasionally.
7802 @c
7803 @kindex :
7804 @item :
7805 Set tags for the current headline. If there is an active region in the
7806 agenda, change a tag for all headings in the region.
7807 @c
7808 @kindex ,
7809 @item ,
7810 Set the priority for the current item. Org-mode prompts for the
7811 priority character. If you reply with @key{SPC}, the priority cookie
7812 is removed from the entry.
7813 @c
7814 @kindex P
7815 @item P
7816 Display weighted priority of current item.
7817 @c
7818 @kindex +
7819 @kindex S-@key{up}
7820 @item +
7821 @itemx S-@key{up}
7822 Increase the priority of the current item. The priority is changed in
7823 the original buffer, but the agenda is not resorted. Use the @kbd{r}
7824 key for this.
7825 @c
7826 @kindex -
7827 @kindex S-@key{down}
7828 @item -
7829 @itemx S-@key{down}
7830 Decrease the priority of the current item.
7831 @c
7832 @kindex C-c C-z
7833 @kindex z
7834 @item z @ @r{or also} @ C-c C-z
7835 @vindex org-log-into-drawer
7836 Add a note to the entry. This note will be recorded, and then files to the
7837 same location where state change notes are put. Depending on
7838 @code{org-log-into-drawer}, this maybe inside a drawer.
7839 @c
7840 @kindex C-c C-a
7841 @item C-c C-a
7842 Dispatcher for all command related to attachments.
7843 @c
7844 @kindex C-c C-s
7845 @item C-c C-s
7846 Schedule this item, with prefix arg remove the scheduling timestamp
7847 @c
7848 @kindex C-c C-d
7849 @item C-c C-d
7850 Set a deadline for this item, with prefix arg remove the deadline.
7851 @c
7852 @kindex k
7853 @item k
7854 Agenda actions, to set dates for selected items to the cursor date.
7855 This command also works in the calendar! The command prompts for an
7856 additional key:
7857 @example
7858 m @r{Mark the entry at point for action. You can also make entries}
7859 @r{in Org files with @kbd{C-c C-x C-k}.}
7860 d @r{Set the deadline of the marked entry to the date at point.}
7861 s @r{Schedule the marked entry at the date at point.}
7862 r @r{Call @code{org-capture} with the cursor date as default date.}
7863 @end example
7864 @noindent
7865 Press @kbd{r} afterward to refresh the agenda and see the effect of the
7866 command.
7867 @c
7868 @kindex S-@key{right}
7869 @item S-@key{right}
7870 Change the timestamp associated with the current line by one day into the
7871 future. With a numeric prefix argument, change it by that many days. For
7872 example, @kbd{3 6 5 S-@key{right}} will change it by a year. With a
7873 @kbd{C-u} prefix, change the time by one hour. If you immediately repeat the
7874 command, it will continue to change hours even without the prefix arg. With
7875 a double @kbd{C-u C-u} prefix, do the same for changing minutes. The stamp
7876 is changed in the original Org file, but the change is not directly reflected
7877 in the agenda buffer. Use @kbd{r} or @kbd{g} to update the buffer.
7878 @c
7879 @kindex S-@key{left}
7880 @item S-@key{left}
7881 Change the timestamp associated with the current line by one day
7882 into the past.
7883 @c
7884 @kindex >
7885 @item >
7886 Change the timestamp associated with the current line. The key @kbd{>} has
7887 been chosen, because it is the same as @kbd{S-.} on my keyboard.
7888 @c
7889 @kindex I
7890 @item I
7891 Start the clock on the current item. If a clock is running already, it
7892 is stopped first.
7893 @c
7894 @kindex O
7895 @item O
7896 Stop the previously started clock.
7897 @c
7898 @kindex X
7899 @item X
7900 Cancel the currently running clock.
7901
7902 @kindex J
7903 @item J
7904 Jump to the running clock in another window.
7905
7906 @tsubheading{Bulk remote editing selected entries}
7907 @cindex remote editing, bulk, from agenda
7908
7909 @kindex m
7910 @item m
7911 Mark the entry at point for bulk action.
7912
7913 @kindex u
7914 @item u
7915 Unmark entry for bulk action.
7916
7917 @kindex U
7918 @item U
7919 Unmark all marked entries for bulk action.
7920
7921 @kindex B
7922 @item B
7923 Bulk action: act on all marked entries in the agenda. This will prompt for
7924 another key to select the action to be applied. The prefix arg to @kbd{B}
7925 will be passed through to the @kbd{s} and @kbd{d} commands, to bulk-remove
7926 these special timestamps.
7927 @example
7928 r @r{Prompt for a single refile target and move all entries. The entries}
7929 @r{will no longer be in the agenda, refresh (@kbd{g}) to bring them back.}
7930 $ @r{Archive all selected entries.}
7931 A @r{Archive entries by moving them to their respective archive siblings.}
7932 t @r{Change TODO state. This prompts for a single TODO keyword and}
7933 @r{changes the state of all selected entries, bypassing blocking and}
7934 @r{suppressing logging notes (but not time stamps).}
7935 + @r{Add a tag to all selected entries.}
7936 - @r{Remove a tag from all selected entries.}
7937 s @r{Schedule all items to a new date. To shift existing schedule dates}
7938 @r{by a fixed number of days, use something starting with double plus}
7939 @r{at the prompt, for example @samp{++8d} or @samp{++2w}.}
7940 d @r{Set deadline to a specific date.}
7941 @end example
7942
7943
7944 @tsubheading{Calendar commands}
7945 @cindex calendar commands, from agenda
7946 @kindex c
7947 @item c
7948 Open the Emacs calendar and move to the date at the agenda cursor.
7949 @c
7950 @item c
7951 When in the calendar, compute and show the Org-mode agenda for the
7952 date at the cursor.
7953 @c
7954 @cindex diary entries, creating from agenda
7955 @kindex i
7956 @item i
7957 @vindex org-agenda-diary-file
7958 Insert a new entry into the diary, using the date at the cursor and (for
7959 block entries) the date at the mark. This will add to the Emacs diary
7960 file@footnote{This file is parsed for the agenda when
7961 @code{org-agenda-include-diary} is set.}, in a way similar to the @kbd{i}
7962 command in the calendar. The diary file will pop up in another window, where
7963 you can add the entry.
7964
7965 If you configure @code{org-agenda-diary-file} to point to an Org-mode file,
7966 Org will create entries (in org-mode syntax) in that file instead. Most
7967 entries will be stored in a date-based outline tree that will later make it
7968 easy to archive appointments from previous months/years. The tree will be
7969 built under an entry with a @code{DATE_TREE} property, or else with years as
7970 top-level entries. Emacs will prompt you for the entry text - if you specify
7971 it, the entry will be created in @code{org-agenda-diary-file} without further
7972 interaction. If you directly press @key{RET} at the prompt without typing
7973 text, the target file will be shown in another window for you to finish the
7974 entry there. See also the @kbd{k r} command.
7975 @c
7976 @kindex M
7977 @item M
7978 Show the phases of the moon for the three months around current date.
7979 @c
7980 @kindex S
7981 @item S
7982 Show sunrise and sunset times. The geographical location must be set
7983 with calendar variables, see the documentation for the Emacs calendar.
7984 @c
7985 @kindex C
7986 @item C
7987 Convert the date at cursor into many other cultural and historic
7988 calendars.
7989 @c
7990 @kindex H
7991 @item H
7992 Show holidays for three months around the cursor date.
7993
7994 @item M-x org-export-icalendar-combine-agenda-files
7995 Export a single iCalendar file containing entries from all agenda files.
7996 This is a globally available command, and also available in the agenda menu.
7997
7998 @tsubheading{Exporting to a file}
7999 @kindex C-x C-w
8000 @item C-x C-w
8001 @cindex exporting agenda views
8002 @cindex agenda views, exporting
8003 @vindex org-agenda-exporter-settings
8004 Write the agenda view to a file. Depending on the extension of the selected
8005 file name, the view will be exported as HTML (extension @file{.html} or
8006 @file{.htm}), Postscript (extension @file{.ps}), PDF (extension @file{.pdf}),
8007 and plain text (any other extension). When called with a @kbd{C-u} prefix
8008 argument, immediately open the newly created file. Use the variable
8009 @code{org-agenda-exporter-settings} to set options for @file{ps-print} and
8010 for @file{htmlize} to be used during export.
8011
8012 @tsubheading{Quit and Exit}
8013 @kindex q
8014 @item q
8015 Quit agenda, remove the agenda buffer.
8016 @c
8017 @kindex x
8018 @cindex agenda files, removing buffers
8019 @item x
8020 Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
8021 for the compilation of the agenda. Buffers created by the user to
8022 visit Org files will not be removed.
8023 @end table
8024
8025
8026 @node Custom agenda views, Exporting Agenda Views, Agenda commands, Agenda Views
8027 @section Custom agenda views
8028 @cindex custom agenda views
8029 @cindex agenda views, custom
8030
8031 Custom agenda commands serve two purposes: to store and quickly access
8032 frequently used TODO and tags searches, and to create special composite
8033 agenda buffers. Custom agenda commands will be accessible through the
8034 dispatcher (@pxref{Agenda dispatcher}), just like the default commands.
8035
8036 @menu
8037 * Storing searches:: Type once, use often
8038 * Block agenda:: All the stuff you need in a single buffer
8039 * Setting Options:: Changing the rules
8040 @end menu
8041
8042 @node Storing searches, Block agenda, Custom agenda views, Custom agenda views
8043 @subsection Storing searches
8044
8045 The first application of custom searches is the definition of keyboard
8046 shortcuts for frequently used searches, either creating an agenda
8047 buffer, or a sparse tree (the latter covering of course only the current
8048 buffer).
8049 @kindex C-c a C
8050 @vindex org-agenda-custom-commands
8051 Custom commands are configured in the variable
8052 @code{org-agenda-custom-commands}. You can customize this variable, for
8053 example by pressing @kbd{C-c a C}. You can also directly set it with
8054 Emacs Lisp in @file{.emacs}. The following example contains all valid
8055 search types:
8056
8057 @lisp
8058 @group
8059 (setq org-agenda-custom-commands
8060 '(("w" todo "WAITING")
8061 ("W" todo-tree "WAITING")
8062 ("u" tags "+boss-urgent")
8063 ("v" tags-todo "+boss-urgent")
8064 ("U" tags-tree "+boss-urgent")
8065 ("f" occur-tree "\\<FIXME\\>")
8066 ("h" . "HOME+Name tags searches") ; description for "h" prefix
8067 ("hl" tags "+home+Lisa")
8068 ("hp" tags "+home+Peter")
8069 ("hk" tags "+home+Kim")))
8070 @end group
8071 @end lisp
8072
8073 @noindent
8074 The initial string in each entry defines the keys you have to press
8075 after the dispatcher command @kbd{C-c a} in order to access the command.
8076 Usually this will be just a single character, but if you have many
8077 similar commands, you can also define two-letter combinations where the
8078 first character is the same in several combinations and serves as a
8079 prefix key@footnote{You can provide a description for a prefix key by
8080 inserting a cons cell with the prefix and the description.}. The second
8081 parameter is the search type, followed by the string or regular
8082 expression to be used for the matching. The example above will
8083 therefore define:
8084
8085 @table @kbd
8086 @item C-c a w
8087 as a global search for TODO entries with @samp{WAITING} as the TODO
8088 keyword
8089 @item C-c a W
8090 as the same search, but only in the current buffer and displaying the
8091 results as a sparse tree
8092 @item C-c a u
8093 as a global tags search for headlines marked @samp{:boss:} but not
8094 @samp{:urgent:}
8095 @item C-c a v
8096 as the same search as @kbd{C-c a u}, but limiting the search to
8097 headlines that are also TODO items
8098 @item C-c a U
8099 as the same search as @kbd{C-c a u}, but only in the current buffer and
8100 displaying the result as a sparse tree
8101 @item C-c a f
8102 to create a sparse tree (again: current buffer only) with all entries
8103 containing the word @samp{FIXME}
8104 @item C-c a h
8105 as a prefix command for a HOME tags search where you have to press an
8106 additional key (@kbd{l}, @kbd{p} or @kbd{k}) to select a name (Lisa,
8107 Peter, or Kim) as additional tag to match.
8108 @end table
8109
8110 @node Block agenda, Setting Options, Storing searches, Custom agenda views
8111 @subsection Block agenda
8112 @cindex block agenda
8113 @cindex agenda, with block views
8114
8115 Another possibility is the construction of agenda views that comprise
8116 the results of @emph{several} commands, each of which creates a block in
8117 the agenda buffer. The available commands include @code{agenda} for the
8118 daily or weekly agenda (as created with @kbd{C-c a a}), @code{alltodo}
8119 for the global TODO list (as constructed with @kbd{C-c a t}), and the
8120 matching commands discussed above: @code{todo}, @code{tags}, and
8121 @code{tags-todo}. Here are two examples:
8122
8123 @lisp
8124 @group
8125 (setq org-agenda-custom-commands
8126 '(("h" "Agenda and Home-related tasks"
8127 ((agenda "")
8128 (tags-todo "home")
8129 (tags "garden")))
8130 ("o" "Agenda and Office-related tasks"
8131 ((agenda "")
8132 (tags-todo "work")
8133 (tags "office")))))
8134 @end group
8135 @end lisp
8136
8137 @noindent
8138 This will define @kbd{C-c a h} to create a multi-block view for stuff
8139 you need to attend to at home. The resulting agenda buffer will contain
8140 your agenda for the current week, all TODO items that carry the tag
8141 @samp{home}, and also all lines tagged with @samp{garden}. Finally the
8142 command @kbd{C-c a o} provides a similar view for office tasks.
8143
8144 @node Setting Options, , Block agenda, Custom agenda views
8145 @subsection Setting options for custom commands
8146 @cindex options, for custom agenda views
8147
8148 @vindex org-agenda-custom-commands
8149 Org-mode contains a number of variables regulating agenda construction
8150 and display. The global variables define the behavior for all agenda
8151 commands, including the custom commands. However, if you want to change
8152 some settings just for a single custom view, you can do so. Setting
8153 options requires inserting a list of variable names and values at the
8154 right spot in @code{org-agenda-custom-commands}. For example:
8155
8156 @lisp
8157 @group
8158 (setq org-agenda-custom-commands
8159 '(("w" todo "WAITING"
8160 ((org-agenda-sorting-strategy '(priority-down))
8161 (org-agenda-prefix-format " Mixed: ")))
8162 ("U" tags-tree "+boss-urgent"
8163 ((org-show-following-heading nil)
8164 (org-show-hierarchy-above nil)))
8165 ("N" search ""
8166 ((org-agenda-files '("~org/notes.org"))
8167 (org-agenda-text-search-extra-files nil)))))
8168 @end group
8169 @end lisp
8170
8171 @noindent
8172 Now the @kbd{C-c a w} command will sort the collected entries only by
8173 priority, and the prefix format is modified to just say @samp{ Mixed: }
8174 instead of giving the category of the entry. The sparse tags tree of
8175 @kbd{C-c a U} will now turn out ultra-compact, because neither the
8176 headline hierarchy above the match, nor the headline following the match
8177 will be shown. The command @kbd{C-c a N} will do a text search limited
8178 to only a single file.
8179
8180 @vindex org-agenda-custom-commands
8181 For command sets creating a block agenda,
8182 @code{org-agenda-custom-commands} has two separate spots for setting
8183 options. You can add options that should be valid for just a single
8184 command in the set, and options that should be valid for all commands in
8185 the set. The former are just added to the command entry, the latter
8186 must come after the list of command entries. Going back to the block
8187 agenda example (@pxref{Block agenda}), let's change the sorting strategy
8188 for the @kbd{C-c a h} commands to @code{priority-down}, but let's sort
8189 the results for GARDEN tags query in the opposite order,
8190 @code{priority-up}. This would look like this:
8191
8192 @lisp
8193 @group
8194 (setq org-agenda-custom-commands
8195 '(("h" "Agenda and Home-related tasks"
8196 ((agenda)
8197 (tags-todo "home")
8198 (tags "garden"
8199 ((org-agenda-sorting-strategy '(priority-up)))))
8200 ((org-agenda-sorting-strategy '(priority-down))))
8201 ("o" "Agenda and Office-related tasks"
8202 ((agenda)
8203 (tags-todo "work")
8204 (tags "office")))))
8205 @end group
8206 @end lisp
8207
8208 As you see, the values and parentheses setting is a little complex.
8209 When in doubt, use the customize interface to set this variable---it
8210 fully supports its structure. Just one caveat: when setting options in
8211 this interface, the @emph{values} are just Lisp expressions. So if the
8212 value is a string, you need to add the double-quotes around the value
8213 yourself.
8214
8215
8216 @node Exporting Agenda Views, Agenda column view, Custom agenda views, Agenda Views
8217 @section Exporting Agenda Views
8218 @cindex agenda views, exporting
8219
8220 If you are away from your computer, it can be very useful to have a printed
8221 version of some agenda views to carry around. Org-mode can export custom
8222 agenda views as plain text, HTML@footnote{You need to install Hrvoje Niksic's
8223 @file{htmlize.el}.}, Postscript, PDF@footnote{To create PDF output, the
8224 ghostscript @file{ps2pdf} utility must be installed on the system. Selecting
8225 a PDF file with also create the postscript file.}, and iCalendar files. If
8226 you want to do this only occasionally, use the command
8227
8228 @table @kbd
8229 @kindex C-x C-w
8230 @item C-x C-w
8231 @cindex exporting agenda views
8232 @cindex agenda views, exporting
8233 @vindex org-agenda-exporter-settings
8234 Write the agenda view to a file. Depending on the extension of the selected
8235 file name, the view will be exported as HTML (extension @file{.html} or
8236 @file{.htm}), Postscript (extension @file{.ps}), iCalendar (extension
8237 @file{.ics}), or plain text (any other extension). Use the variable
8238 @code{org-agenda-exporter-settings} to set options for @file{ps-print} and
8239 for @file{htmlize} to be used during export, for example
8240
8241 @vindex org-agenda-add-entry-text-maxlines
8242 @vindex htmlize-output-type
8243 @vindex ps-number-of-columns
8244 @vindex ps-landscape-mode
8245 @lisp
8246 (setq org-agenda-exporter-settings
8247 '((ps-number-of-columns 2)
8248 (ps-landscape-mode t)
8249 (org-agenda-add-entry-text-maxlines 5)
8250 (htmlize-output-type 'css)))
8251 @end lisp
8252 @end table
8253
8254 If you need to export certain agenda views frequently, you can associate
8255 any custom agenda command with a list of output file names
8256 @footnote{If you want to store standard views like the weekly agenda
8257 or the global TODO list as well, you need to define custom commands for
8258 them in order to be able to specify file names.}. Here is an example
8259 that first defines custom commands for the agenda and the global
8260 TODO list, together with a number of files to which to export them.
8261 Then we define two block agenda commands and specify file names for them
8262 as well. File names can be relative to the current working directory,
8263 or absolute.
8264
8265 @lisp
8266 @group
8267 (setq org-agenda-custom-commands
8268 '(("X" agenda "" nil ("agenda.html" "agenda.ps"))
8269 ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
8270 ("h" "Agenda and Home-related tasks"
8271 ((agenda "")
8272 (tags-todo "home")
8273 (tags "garden"))
8274 nil
8275 ("~/views/home.html"))
8276 ("o" "Agenda and Office-related tasks"
8277 ((agenda)
8278 (tags-todo "work")
8279 (tags "office"))
8280 nil
8281 ("~/views/office.ps" "~/calendars/office.ics"))))
8282 @end group
8283 @end lisp
8284
8285 The extension of the file name determines the type of export. If it is
8286 @file{.html}, Org-mode will use the @file{htmlize.el} package to convert
8287 the buffer to HTML and save it to this file name. If the extension is
8288 @file{.ps}, @code{ps-print-buffer-with-faces} is used to produce
8289 Postscript output. If the extension is @file{.ics}, iCalendar export is
8290 run export over all files that were used to construct the agenda, and
8291 limit the export to entries listed in the agenda. Any other
8292 extension produces a plain ASCII file.
8293
8294 The export files are @emph{not} created when you use one of those
8295 commands interactively because this might use too much overhead.
8296 Instead, there is a special command to produce @emph{all} specified
8297 files in one step:
8298
8299 @table @kbd
8300 @kindex C-c a e
8301 @item C-c a e
8302 Export all agenda views that have export file names associated with
8303 them.
8304 @end table
8305
8306 You can use the options section of the custom agenda commands to also
8307 set options for the export commands. For example:
8308
8309 @lisp
8310 (setq org-agenda-custom-commands
8311 '(("X" agenda ""
8312 ((ps-number-of-columns 2)
8313 (ps-landscape-mode t)
8314 (org-agenda-prefix-format " [ ] ")
8315 (org-agenda-with-colors nil)
8316 (org-agenda-remove-tags t))
8317 ("theagenda.ps"))))
8318 @end lisp
8319
8320 @noindent
8321 This command sets two options for the Postscript exporter, to make it
8322 print in two columns in landscape format---the resulting page can be cut
8323 in two and then used in a paper agenda. The remaining settings modify
8324 the agenda prefix to omit category and scheduling information, and
8325 instead include a checkbox to check off items. We also remove the tags
8326 to make the lines compact, and we don't want to use colors for the
8327 black-and-white printer. Settings specified in
8328 @code{org-agenda-exporter-settings} will also apply, but the settings
8329 in @code{org-agenda-custom-commands} take precedence.
8330
8331 @noindent
8332 From the command line you may also use
8333 @example
8334 emacs -f org-batch-store-agenda-views -kill
8335 @end example
8336 @noindent
8337 or, if you need to modify some parameters@footnote{Quoting depends on the
8338 system you use, please check the FAQ for examples.}
8339 @example
8340 emacs -eval '(org-batch-store-agenda-views \
8341 org-agenda-ndays 30 \
8342 org-agenda-start-day "2007-11-01" \
8343 org-agenda-include-diary nil \
8344 org-agenda-files (quote ("~/org/project.org")))' \
8345 -kill
8346 @end example
8347 @noindent
8348 which will create the agenda views restricted to the file
8349 @file{~/org/project.org}, without diary entries and with a 30-day
8350 extent.
8351
8352 You can also extract agenda information in a way that allows further
8353 processing by other programs. See @ref{Extracting agenda information}, for
8354 more information.
8355
8356
8357 @node Agenda column view, , Exporting Agenda Views, Agenda Views
8358 @section Using column view in the agenda
8359 @cindex column view, in agenda
8360 @cindex agenda, column view
8361
8362 Column view (@pxref{Column view}) is normally used to view and edit
8363 properties embedded in the hierarchical structure of an Org file. It can be
8364 quite useful to use column view also from the agenda, where entries are
8365 collected by certain criteria.
8366
8367 @table @kbd
8368 @kindex C-c C-x C-c
8369 @item C-c C-x C-c
8370 Turn on column view in the agenda.
8371 @end table
8372
8373 To understand how to use this properly, it is important to realize that the
8374 entries in the agenda are no longer in their proper outline environment.
8375 This causes the following issues:
8376
8377 @enumerate
8378 @item
8379 @vindex org-columns-default-format
8380 @vindex org-overriding-columns-format
8381 Org needs to make a decision which @code{COLUMNS} format to use. Since the
8382 entries in the agenda are collected from different files, and different files
8383 may have different @code{COLUMNS} formats, this is a non-trivial problem.
8384 Org first checks if the variable @code{org-overriding-columns-format} is
8385 currently set, and if so, takes the format from there. Otherwise it takes
8386 the format associated with the first item in the agenda, or, if that item
8387 does not have a specific format (defined in a property, or in its file), it
8388 uses @code{org-columns-default-format}.
8389 @item
8390 @cindex property, special, CLOCKSUM
8391 If any of the columns has a summary type defined (@pxref{Column attributes}),
8392 turning on column view in the agenda will visit all relevant agenda files and
8393 make sure that the computations of this property are up to date. This is
8394 also true for the special @code{CLOCKSUM} property. Org will then sum the
8395 values displayed in the agenda. In the daily/weekly agenda, the sums will
8396 cover a single day, in all other views they cover the entire block. It is
8397 vital to realize that the agenda may show the same entry @emph{twice} (for
8398 example as scheduled and as a deadline), and it may show two entries from the
8399 same hierarchy (for example a @emph{parent} and its @emph{child}). In these
8400 cases, the summation in the agenda will lead to incorrect results because
8401 some values will count double.
8402 @item
8403 When the column view in the agenda shows the @code{CLOCKSUM}, that is always
8404 the entire clocked time for this item. So even in the daily/weekly agenda,
8405 the clocksum listed in column view may originate from times outside the
8406 current view. This has the advantage that you can compare these values with
8407 a column listing the planned total effort for a task---one of the major
8408 applications for column view in the agenda. If you want information about
8409 clocked time in the displayed period use clock table mode (press @kbd{R} in
8410 the agenda).
8411 @end enumerate
8412
8413
8414 @node Markup, Exporting, Agenda Views, Top
8415 @chapter Markup for rich export
8416
8417 When exporting Org-mode documents, the exporter tries to reflect the
8418 structure of the document as accurately as possible in the backend. Since
8419 export targets like HTML, La@TeX{}, or DocBook allow much richer formatting,
8420 Org-mode has rules on how to prepare text for rich export. This section
8421 summarizes the markup rules used in an Org-mode buffer.
8422
8423 @menu
8424 * Structural markup elements:: The basic structure as seen by the exporter
8425 * Images and tables:: Tables and Images will be included
8426 * Literal examples:: Source code examples with special formatting
8427 * Include files:: Include additional files into a document
8428 * Index entries:: Making an index
8429 * Macro replacement:: Use macros to create complex output
8430 * Embedded LaTeX:: LaTeX can be freely used inside Org documents
8431 @end menu
8432
8433 @node Structural markup elements, Images and tables, Markup, Markup
8434 @section Structural markup elements
8435
8436 @menu
8437 * Document title:: Where the title is taken from
8438 * Headings and sections:: The document structure as seen by the exporter
8439 * Table of contents:: The if and where of the table of contents
8440 * Initial text:: Text before the first heading?
8441 * Lists:: Lists
8442 * Paragraphs:: Paragraphs
8443 * Footnote markup:: Footnotes
8444 * Emphasis and monospace:: Bold, italic, etc.
8445 * Horizontal rules:: Make a line
8446 * Comment lines:: What will *not* be exported
8447 @end menu
8448
8449 @node Document title, Headings and sections, Structural markup elements, Structural markup elements
8450 @subheading Document title
8451 @cindex document title, markup rules
8452
8453 @noindent
8454 The title of the exported document is taken from the special line
8455
8456 @cindex #+TITLE
8457 @example
8458 #+TITLE: This is the title of the document
8459 @end example
8460
8461 @noindent
8462 If this line does not exist, the title is derived from the first non-empty,
8463 non-comment line in the buffer. If no such line exists, or if you have
8464 turned off exporting of the text before the first headline (see below), the
8465 title will be the file name without extension.
8466
8467 @cindex property, EXPORT_TITLE
8468 If you are exporting only a subtree by marking is as the region, the heading
8469 of the subtree will become the title of the document. If the subtree has a
8470 property @code{EXPORT_TITLE}, that will take precedence.
8471
8472 @node Headings and sections, Table of contents, Document title, Structural markup elements
8473 @subheading Headings and sections
8474 @cindex headings and sections, markup rules
8475
8476 @vindex org-export-headline-levels
8477 The outline structure of the document as described in @ref{Document
8478 Structure}, forms the basis for defining sections of the exported document.
8479 However, since the outline structure is also used for (for example) lists of
8480 tasks, only the first three outline levels will be used as headings. Deeper
8481 levels will become itemized lists. You can change the location of this
8482 switch globally by setting the variable @code{org-export-headline-levels}, or on a
8483 per-file basis with a line
8484
8485 @cindex #+OPTIONS
8486 @example
8487 #+OPTIONS: H:4
8488 @end example
8489
8490 @node Table of contents, Initial text, Headings and sections, Structural markup elements
8491 @subheading Table of contents
8492 @cindex table of contents, markup rules
8493
8494 @vindex org-export-with-toc
8495 The table of contents is normally inserted directly before the first headline
8496 of the file. If you would like to get it to a different location, insert the
8497 string @code{[TABLE-OF-CONTENTS]} on a line by itself at the desired
8498 location. The depth of the table of contents is by default the same as the
8499 number of headline levels, but you can choose a smaller number, or turn off
8500 the table of contents entirely, by configuring the variable
8501 @code{org-export-with-toc}, or on a per-file basis with a line like
8502
8503 @example
8504 #+OPTIONS: toc:2 (only to two levels in TOC)
8505 #+OPTIONS: toc:nil (no TOC at all)
8506 @end example
8507
8508 @node Initial text, Lists, Table of contents, Structural markup elements
8509 @subheading Text before the first headline
8510 @cindex text before first headline, markup rules
8511 @cindex #+TEXT
8512
8513 Org-mode normally exports the text before the first headline, and even uses
8514 the first line as the document title. The text will be fully marked up. If
8515 you need to include literal HTML, La@TeX{}, or DocBook code, use the special
8516 constructs described below in the sections for the individual exporters.
8517
8518 @vindex org-export-skip-text-before-1st-heading
8519 Some people like to use the space before the first headline for setup and
8520 internal links and therefore would like to control the exported text before
8521 the first headline in a different way. You can do so by setting the variable
8522 @code{org-export-skip-text-before-1st-heading} to @code{t}. On a per-file
8523 basis, you can get the same effect with @samp{#+OPTIONS: skip:t}.
8524
8525 @noindent
8526 If you still want to have some text before the first headline, use the
8527 @code{#+TEXT} construct:
8528
8529 @example
8530 #+OPTIONS: skip:t
8531 #+TEXT: This text will go before the *first* headline.
8532 #+TEXT: [TABLE-OF-CONTENTS]
8533 #+TEXT: This goes between the table of contents and the first headline
8534 @end example
8535
8536 @node Lists, Paragraphs, Initial text, Structural markup elements
8537 @subheading Lists
8538 @cindex lists, markup rules
8539
8540 Plain lists as described in @ref{Plain lists}, are translated to the backend's
8541 syntax for such lists. Most backends support unordered, ordered, and
8542 description lists.
8543
8544 @node Paragraphs, Footnote markup, Lists, Structural markup elements
8545 @subheading Paragraphs, line breaks, and quoting
8546 @cindex paragraphs, markup rules
8547
8548 Paragraphs are separated by at least one empty line. If you need to enforce
8549 a line break within a paragraph, use @samp{\\} at the end of a line.
8550
8551 To keep the line breaks in a region, but otherwise use normal formatting, you
8552 can use this construct, which can also be used to format poetry.
8553
8554 @cindex #+BEGIN_VERSE
8555 @example
8556 #+BEGIN_VERSE
8557 Great clouds overhead
8558 Tiny black birds rise and fall
8559 Snow covers Emacs
8560
8561 -- AlexSchroeder
8562 #+END_VERSE
8563 @end example
8564
8565 When quoting a passage from another document, it is customary to format this
8566 as a paragraph that is indented on both the left and the right margin. You
8567 can include quotations in Org-mode documents like this:
8568
8569 @cindex #+BEGIN_QUOTE
8570 @example
8571 #+BEGIN_QUOTE
8572 Everything should be made as simple as possible,
8573 but not any simpler -- Albert Einstein
8574 #+END_QUOTE
8575 @end example
8576
8577 If you would like to center some text, do it like this:
8578 @cindex #+BEGIN_CENTER
8579 @example
8580 #+BEGIN_CENTER
8581 Everything should be made as simple as possible, \\
8582 but not any simpler
8583 #+END_CENTER
8584 @end example
8585
8586
8587 @node Footnote markup, Emphasis and monospace, Paragraphs, Structural markup elements
8588 @subheading Footnote markup
8589 @cindex footnotes, markup rules
8590 @cindex @file{footnote.el}
8591
8592 Footnotes defined in the way described in @ref{Footnotes}, will be exported by
8593 all backends. Org allows multiple references to the same note, and
8594 different backends support this to varying degrees.
8595
8596 @node Emphasis and monospace, Horizontal rules, Footnote markup, Structural markup elements
8597 @subheading Emphasis and monospace
8598
8599 @cindex underlined text, markup rules
8600 @cindex bold text, markup rules
8601 @cindex italic text, markup rules
8602 @cindex verbatim text, markup rules
8603 @cindex code text, markup rules
8604 @cindex strike-through text, markup rules
8605 You can make words @b{*bold*}, @i{/italic/}, _underlined_, @code{=code=}
8606 and @code{~verbatim~}, and, if you must, @samp{+strike-through+}. Text
8607 in the code and verbatim string is not processed for Org-mode specific
8608 syntax, it is exported verbatim.
8609
8610 @node Horizontal rules, Comment lines, Emphasis and monospace, Structural markup elements
8611 @subheading Horizontal rules
8612 @cindex horizontal rules, markup rules
8613 A line consisting of only dashes, and at least 5 of them, will be
8614 exported as a horizontal line (@samp{<hr/>} in HTML).
8615
8616 @node Comment lines, , Horizontal rules, Structural markup elements
8617 @subheading Comment lines
8618 @cindex comment lines
8619 @cindex exporting, not
8620 @cindex #+BEGIN_COMMENT
8621
8622 Lines starting with @samp{#} in column zero are treated as comments and will
8623 never be exported. If you want an indented line to be treated as a comment,
8624 start it with @samp{#+ }. Also entire subtrees starting with the word
8625 @samp{COMMENT} will never be exported. Finally, regions surrounded by
8626 @samp{#+BEGIN_COMMENT} ... @samp{#+END_COMMENT} will not be exported.
8627
8628 @table @kbd
8629 @kindex C-c ;
8630 @item C-c ;
8631 Toggle the COMMENT keyword at the beginning of an entry.
8632 @end table
8633
8634
8635 @node Images and tables, Literal examples, Structural markup elements, Markup
8636 @section Images and Tables
8637
8638 @cindex tables, markup rules
8639 @cindex #+CAPTION
8640 @cindex #+LABEL
8641 Both the native Org-mode tables (@pxref{Tables}) and tables formatted with
8642 the @file{table.el} package will be exported properly. For Org-mode tables,
8643 the lines before the first horizontal separator line will become table header
8644 lines. You can use the following lines somewhere before the table to assign
8645 a caption and a label for cross references, and in the text you can refer to
8646 the object with @code{\ref@{tab:basic-data@}}:
8647
8648 @example
8649 #+CAPTION: This is the caption for the next table (or link)
8650 #+LABEL: tbl:basic-data
8651 | ... | ...|
8652 |-----|----|
8653 @end example
8654
8655 @cindex inlined images, markup rules
8656 Some backends (HTML, La@TeX{}, and DocBook) allow you to directly include
8657 images into the exported document. Org does this, if a link to an image
8658 files does not have a description part, for example @code{[[./img/a.jpg]]}.
8659 If you wish to define a caption for the image and maybe a label for internal
8660 cross references, make sure that the link is on a line by itself and precede
8661 it with @code{#+CAPTION} and @code{#+LABEL} as follows:
8662
8663 @example
8664 #+CAPTION: This is the caption for the next figure link (or table)
8665 #+LABEL: fig:SED-HR4049
8666 [[./img/a.jpg]]
8667 @end example
8668
8669 You may also define additional attributes for the figure. As this is
8670 backend-specific, see the sections about the individual backends for more
8671 information.
8672
8673 @xref{Handling links,the discussion of image links}.
8674
8675 @node Literal examples, Include files, Images and tables, Markup
8676 @section Literal examples
8677 @cindex literal examples, markup rules
8678 @cindex code line references, markup rules
8679
8680 You can include literal examples that should not be subjected to
8681 markup. Such examples will be typeset in monospace, so this is well suited
8682 for source code and similar examples.
8683 @cindex #+BEGIN_EXAMPLE
8684
8685 @example
8686 #+BEGIN_EXAMPLE
8687 Some example from a text file.
8688 #+END_EXAMPLE
8689 @end example
8690
8691 Note that such blocks may be @i{indented} in order to align nicely with
8692 indented text and in particular with plain list structure (@pxref{Plain
8693 lists}). For simplicity when using small examples, you can also start the
8694 example lines with a colon followed by a space. There may also be additional
8695 whitespace before the colon:
8696
8697 @example
8698 Here is an example
8699 : Some example from a text file.
8700 @end example
8701
8702 @cindex formatting source code, markup rules
8703 If the example is source code from a programming language, or any other text
8704 that can be marked up by font-lock in Emacs, you can ask for the example to
8705 look like the fontified Emacs buffer@footnote{This works automatically for
8706 the HTML backend (it requires version 1.34 of the @file{htmlize.el} package,
8707 which is distributed with Org.) Fontified code chunks in LaTeX can be
8708 achieved using either the listings or the
8709 @url{http://code.google.com/p/minted, minted,} package. To use listings, turn
8710 on the variable @code{org-export-latex-listings} and ensure that the listings
8711 package is included by the LaTeX header (e.g. by configuring
8712 @code{org-export-latex-packages-alist}). See the listings documentation for
8713 configuration options, including obtaining colored output. For minted it is
8714 necessary to install the program @url{http://pygments.org, pygments}, in
8715 addition to setting @code{org-export-latex-minted}, ensuring that the minted
8716 package is included by the LaTeX header, and ensuring that the
8717 @code{-shell-escape} option is passed to @file{pdflatex} (see
8718 @code{org-latex-to-pdf-process}). See the documentation of the variables
8719 @code{org-export-latex-listings} and @code{org-export-latex-minted} for
8720 further details.}. This is done with the @samp{src} block, where you also
8721 need to specify the name of the major mode that should be used to fontify the
8722 example:
8723 @cindex #+BEGIN_SRC
8724
8725 @example
8726 #+BEGIN_SRC emacs-lisp
8727 (defun org-xor (a b)
8728 "Exclusive or."
8729 (if a (not b) b))
8730 #+END_SRC
8731 @end example
8732
8733 Both in @code{example} and in @code{src} snippets, you can add a @code{-n}
8734 switch to the end of the @code{BEGIN} line, to get the lines of the example
8735 numbered. If you use a @code{+n} switch, the numbering from the previous
8736 numbered snippet will be continued in the current one. In literal examples,
8737 Org will interpret strings like @samp{(ref:name)} as labels, and use them as
8738 targets for special hyperlinks like @code{[[(name)]]} (i.e. the reference name
8739 enclosed in single parenthesis). In HTML, hovering the mouse over such a
8740 link will remote-highlight the corresponding code line, which is kind of
8741 cool.
8742
8743 You can also add a @code{-r} switch which @i{removes} the labels from the
8744 source code@footnote{Adding @code{-k} to @code{-n -r} will @i{keep} the
8745 labels in the source code while using line numbers for the links, which might
8746 be useful to explain those in an org-mode example code.}. With the @code{-n}
8747 switch, links to these references will be labeled by the line numbers from
8748 the code listing, otherwise links will use the labels with no parentheses.
8749 Here is an example:
8750
8751 @example
8752 #+BEGIN_SRC emacs-lisp -n -r
8753 (save-excursion (ref:sc)
8754 (goto-char (point-min)) (ref:jump)
8755 #+END_SRC
8756 In line [[(sc)]] we remember the current position. [[(jump)][Line (jump)]]
8757 jumps to point-min.
8758 @end example
8759
8760 @vindex org-coderef-label-format
8761 If the syntax for the label format conflicts with the language syntax, use a
8762 @code{-l} switch to change the format, for example @samp{#+BEGIN_SRC pascal
8763 -n -r -l "((%s))"}. See also the variable @code{org-coderef-label-format}.
8764
8765 HTML export also allows examples to be published as text areas, @xref{Text
8766 areas in HTML export}.
8767
8768 @table @kbd
8769 @kindex C-c '
8770 @item C-c '
8771 Edit the source code example at point in its native mode. This works by
8772 switching to a temporary buffer with the source code. You need to exit by
8773 pressing @kbd{C-c '} again@footnote{Upon exit, lines starting with @samp{*}
8774 or @samp{#} will get a comma prepended, to keep them from being interpreted
8775 by Org as outline nodes or special comments. These commas will be stripped
8776 for editing with @kbd{C-c '}, and also for export.}, the edited version will
8777 then replace the old version in the Org buffer. Fixed-width regions
8778 (where each line starts with a colon followed by a space) will be edited
8779 using @code{artist-mode}@footnote{You may select a different-mode with the
8780 variable @code{org-edit-fixed-width-region-mode}.} to allow creating ASCII
8781 drawings easily. Using this command in an empty line will create a new
8782 fixed-width region.
8783 @kindex C-c l
8784 @item C-c l
8785 Calling @code{org-store-link} while editing a source code example in a
8786 temporary buffer created with @kbd{C-c '} will prompt for a label, make sure
8787 that it is unique in the current buffer, and insert it with the proper
8788 formatting like @samp{(ref:label)} at the end of the current line. Then the
8789 label is stored as a link @samp{(label)}, for retrieval with @kbd{C-c C-l}.
8790 @end table
8791
8792
8793 @node Include files, Index entries, Literal examples, Markup
8794 @section Include files
8795 @cindex include files, markup rules
8796
8797 During export, you can include the content of another file. For example, to
8798 include your @file{.emacs} file, you could use:
8799 @cindex #+INCLUDE
8800
8801 @example
8802 #+INCLUDE: "~/.emacs" src emacs-lisp
8803 @end example
8804 @noindent
8805 The optional second and third parameter are the markup (e.g. @samp{quote},
8806 @samp{example}, or @samp{src}), and, if the markup is @samp{src}, the
8807 language for formatting the contents. The markup is optional, if it is not
8808 given, the text will be assumed to be in Org-mode format and will be
8809 processed normally. The include line will also allow additional keyword
8810 parameters @code{:prefix1} and @code{:prefix} to specify prefixes for the
8811 first line and for each following line, as well as any options accepted by
8812 the selected markup. For example, to include a file as an item, use
8813
8814 @example
8815 #+INCLUDE: "~/snippets/xx" :prefix1 " + " :prefix " "
8816 @end example
8817
8818 @table @kbd
8819 @kindex C-c '
8820 @item C-c '
8821 Visit the include file at point.
8822 @end table
8823
8824 @node Index entries, Macro replacement, Include files, Markup
8825 @section Index entries
8826 @cindex index entries, for publishing
8827
8828 You can specify entries that will be used for generating an index during
8829 publishing. This is done by lines starting with @code{#+INDEX}. An entry
8830 the contains an exclamation mark will create a sub item. See @ref{Generating
8831 an index} for more information.
8832
8833 @example
8834 * Curriculum Vitae
8835 #+INDEX: CV
8836 #+INDEX: Application!CV
8837 @end example
8838
8839
8840
8841
8842 @node Macro replacement, Embedded LaTeX, Index entries, Markup
8843 @section Macro replacement
8844 @cindex macro replacement, during export
8845 @cindex #+MACRO
8846
8847 You can define text snippets with
8848
8849 @example
8850 #+MACRO: name replacement text $1, $2 are arguments
8851 @end example
8852
8853 @noindent which can be referenced anywhere in the document (even in
8854 code examples) with @code{@{@{@{name(arg1,arg2)@}@}@}}. In addition to
8855 defined macros, @code{@{@{@{title@}@}@}}, @code{@{@{@{author@}@}@}}, etc.,
8856 will reference information set by the @code{#+TITLE:}, @code{#+AUTHOR:}, and
8857 similar lines. Also, @code{@{@{@{date(@var{FORMAT})@}@}@}} and
8858 @code{@{@{@{modification-time(@var{FORMAT})@}@}@}} refer to current date time
8859 and to the modification time of the file being exported, respectively.
8860 @var{FORMAT} should be a format string understood by
8861 @code{format-time-string}.
8862
8863 Macro expansion takes place during export, and some people use it to
8864 construct complex HTML code.
8865
8866
8867 @node Embedded LaTeX, , Macro replacement, Markup
8868 @section Embedded La@TeX{}
8869 @cindex @TeX{} interpretation
8870 @cindex La@TeX{} interpretation
8871
8872 Plain ASCII is normally sufficient for almost all note taking. One
8873 exception, however, are scientific notes which need to be able to contain
8874 mathematical symbols and the occasional formula. La@TeX{}@footnote{La@TeX{}
8875 is a macro system based on Donald E. Knuth's @TeX{} system. Many of the
8876 features described here as ``La@TeX{}'' are really from @TeX{}, but for
8877 simplicity I am blurring this distinction.} is widely used to typeset
8878 scientific documents. Org-mode supports embedding La@TeX{} code into its
8879 files, because many academics are used to writing and reading La@TeX{} source
8880 code, and because it can be readily processed to produce pretty output for a
8881 number of export backends.
8882
8883 @menu
8884 * Special symbols:: Greek letters and other symbols
8885 * Subscripts and superscripts:: Simple syntax for raising/lowering text
8886 * LaTeX fragments:: Complex formulas made easy
8887 * Previewing LaTeX fragments:: What will this snippet look like?
8888 * CDLaTeX mode:: Speed up entering of formulas
8889 @end menu
8890
8891 @node Special symbols, Subscripts and superscripts, Embedded LaTeX, Embedded LaTeX
8892 @subsection Special symbols
8893 @cindex math symbols
8894 @cindex special symbols
8895 @cindex @TeX{} macros
8896 @cindex La@TeX{} fragments, markup rules
8897 @cindex HTML entities
8898 @cindex La@TeX{} entities
8899
8900 You can use La@TeX{} macros to insert special symbols like @samp{\alpha} to
8901 indicate the Greek letter, or @samp{\to} to indicate an arrow. Completion
8902 for these macros is available, just type @samp{\} and maybe a few letters,
8903 and press @kbd{M-@key{TAB}} to see possible completions. Unlike La@TeX{}
8904 code, Org-mode allows these macros to be present without surrounding math
8905 delimiters, for example:
8906
8907 @example
8908 Angles are written as Greek letters \alpha, \beta and \gamma.
8909 @end example
8910
8911 @vindex org-entities
8912 During export, these symbols will be transformed into the native format of
8913 the exporter backend. Strings like @code{\alpha} will be exported as
8914 @code{&alpha;} in the HTML output, and as @code{$\alpha$} in the La@TeX{}
8915 output. Similarly, @code{\nbsp} will become @code{&nbsp;} in HTML and
8916 @code{~} in La@TeX{}. If you need such a symbol inside a word, terminate it
8917 like this: @samp{\Aacute@{@}stor}.
8918
8919 A large number of entities is provided, with names taken from both HTML and
8920 La@TeX{}, see the variable @code{org-entities} for the complete list.
8921 @samp{\-} is treated as a shy hyphen, and @samp{--}, @samp{---}, and
8922 @samp{...} are all converted into special commands creating hyphens of
8923 different lengths or a compact set of dots.
8924
8925 If you would like to see entities displayed as UTF8 characters, use the
8926 following command@footnote{You can turn this on by default by setting the
8927 variable @code{org-pretty-entities}, or on a per-file base with the
8928 @code{#+STARTUP} option @code{entitiespretty}.}:
8929
8930 @table @kbd
8931 @kindex C-c C-x \
8932 @item C-c C-x \
8933 Toggle display of entities as UTF8 characters. This does not change the
8934 buffer content which remains plain ASCII, but it overlays the UTF8 character
8935 for display purposes only.
8936 @end table
8937
8938 @node Subscripts and superscripts, LaTeX fragments, Special symbols, Embedded LaTeX
8939 @subsection Subscripts and superscripts
8940 @cindex subscript
8941 @cindex superscript
8942
8943 Just like in La@TeX{}, @samp{^} and @samp{_} are used to indicate super-
8944 and subscripts. Again, these can be used without embedding them in
8945 math-mode delimiters. To increase the readability of ASCII text, it is
8946 not necessary (but OK) to surround multi-character sub- and superscripts
8947 with curly braces. For example
8948
8949 @example
8950 The mass if the sun is M_sun = 1.989 x 10^30 kg. The radius of
8951 the sun is R_@{sun@} = 6.96 x 10^8 m.
8952 @end example
8953
8954 @vindex org-export-with-sub-superscripts
8955 To avoid interpretation as raised or lowered text, you can quote @samp{^} and
8956 @samp{_} with a backslash: @samp{\^} and @samp{\_}. If you write a text
8957 where the underscore is often used in a different context, Org's convention
8958 to always interpret these as subscripts can get in your way. Configure the
8959 variable @code{org-export-with-sub-superscripts} to globally change this
8960 convention, or use, on a per-file basis:
8961
8962 @example
8963 #+OPTIONS: ^:@{@}
8964 @end example
8965
8966 @noindent With this setting, @samp{a_b} will not be interpreted as a
8967 subscript, but @samp{a_@{b@}} will.
8968
8969 @table @kbd
8970 @kindex C-c C-x \
8971 @item C-c C-x \
8972 In addition to showing entities as UTF8 characters, this command will also
8973 format sub- and superscripts in a WYSIWYM way.
8974 @end table
8975
8976 @node LaTeX fragments, Previewing LaTeX fragments, Subscripts and superscripts, Embedded LaTeX
8977 @subsection La@TeX{} fragments
8978 @cindex La@TeX{} fragments
8979
8980 @vindex org-format-latex-header
8981 Going beyond symbols and sub- and superscripts, a full formula language is
8982 needed. Org-mode can contain La@TeX{} math fragments, and it supports ways
8983 to process these for several export backends. When exporting to La@TeX{},
8984 the code is obviously left as it is. When exporting to HTML, Org invokes the
8985 @uref{http://www.mathjax.org, MathJax library} (@pxref{Math formatting in
8986 HTML export}) to process and display the math@footnote{If you plan to use
8987 this regularly or on pages with significant page views, you should install
8988 @file{MathJax} on your own server in order to limit the load of our server.}.
8989 Finally, it can also process the mathematical expressions into
8990 images@footnote{For this to work you need to be on a system with a working
8991 La@TeX{} installation. You also need the @file{dvipng} program, available at
8992 @url{http://sourceforge.net/projects/dvipng/}. The La@TeX{} header that will
8993 be used when processing a fragment can be configured with the variable
8994 @code{org-format-latex-header}.} that can be displayed in a browser or in
8995 DocBook documents.
8996
8997 La@TeX{} fragments don't need any special marking at all. The following
8998 snippets will be identified as La@TeX{} source code:
8999 @itemize @bullet
9000 @item
9001 Environments of any kind@footnote{When @file{MathJax} is used, only the
9002 environment recognized by @file{MathJax} will be processed. When dvipng is
9003 used to create images, any La@TeX{} environments will be handled.}. The only
9004 requirement is that the @code{\begin} statement appears on a new line,
9005 preceded by only whitespace.
9006 @item
9007 Text within the usual La@TeX{} math delimiters. To avoid conflicts with
9008 currency specifications, single @samp{$} characters are only recognized as
9009 math delimiters if the enclosed text contains at most two line breaks, is
9010 directly attached to the @samp{$} characters with no whitespace in between,
9011 and if the closing @samp{$} is followed by whitespace, punctuation or a dash.
9012 For the other delimiters, there is no such restriction, so when in doubt, use
9013 @samp{\(...\)} as inline math delimiters.
9014 @end itemize
9015
9016 @noindent For example:
9017
9018 @example
9019 \begin@{equation@} % arbitrary environments,
9020 x=\sqrt@{b@} % even tables, figures
9021 \end@{equation@} % etc
9022
9023 If $a^2=b$ and \( b=2 \), then the solution must be
9024 either $$ a=+\sqrt@{2@} $$ or \[ a=-\sqrt@{2@} \].
9025 @end example
9026
9027 @noindent
9028 @vindex org-format-latex-options
9029 If you need any of the delimiter ASCII sequences for other purposes, you
9030 can configure the option @code{org-format-latex-options} to deselect the
9031 ones you do not wish to have interpreted by the La@TeX{} converter.
9032
9033 @vindex org-export-with-LaTeX-fragments
9034 LaTeX processing can be configured with the variable
9035 @code{org-export-with-LaTeX-fragments}. The default setting is @code{t}
9036 which means @file{MathJax} for HTML, and no processing for DocBook, ASCII and
9037 LaTeX backends. You can also set this variable on a per-file basis using one
9038 of these lines:
9039
9040 @example
9041 #+OPTIONS: LaTeX:t @r{Do the right thing automatically (MathJax)}
9042 #+OPTIONS: LaTeX:dvipng @r{Force using dvipng images}
9043 #+OPTIONS: LaTeX:nil @r{Do not process La@TeX{} fragments at all}
9044 #+OPTIONS: LaTeX:verbatim @r{Verbatim export, for jsMath or so}
9045 @end example
9046
9047 @node Previewing LaTeX fragments, CDLaTeX mode, LaTeX fragments, Embedded LaTeX
9048 @subsection Previewing LaTeX fragments
9049 @cindex LaTeX fragments, preview
9050
9051 If you have @file{dvipng} installed, La@TeX{} fragments can be processed to
9052 produce preview images of the typeset expressions:
9053
9054 @table @kbd
9055 @kindex C-c C-x C-l
9056 @item C-c C-x C-l
9057 Produce a preview image of the La@TeX{} fragment at point and overlay it
9058 over the source code. If there is no fragment at point, process all
9059 fragments in the current entry (between two headlines). When called
9060 with a prefix argument, process the entire subtree. When called with
9061 two prefix arguments, or when the cursor is before the first headline,
9062 process the entire buffer.
9063 @kindex C-c C-c
9064 @item C-c C-c
9065 Remove the overlay preview images.
9066 @end table
9067
9068 @vindex org-format-latex-options
9069 You can customize the variable @code{org-format-latex-options} to influence
9070 some aspects of the preview. In particular, the @code{:scale} (and for HTML
9071 export, @code{:html-scale}) property can be used to adjust the size of the
9072 preview images.
9073
9074 @node CDLaTeX mode, , Previewing LaTeX fragments, Embedded LaTeX
9075 @subsection Using CDLa@TeX{} to enter math
9076 @cindex CDLa@TeX{}
9077
9078 CDLa@TeX{} mode is a minor mode that is normally used in combination with a
9079 major La@TeX{} mode like AUC@TeX{} in order to speed-up insertion of
9080 environments and math templates. Inside Org-mode, you can make use of
9081 some of the features of CDLa@TeX{} mode. You need to install
9082 @file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
9083 AUC@TeX{}) from @url{http://www.astro.uva.nl/~dominik/Tools/cdlatex}.
9084 Don't use CDLa@TeX{} mode itself under Org-mode, but use the light
9085 version @code{org-cdlatex-mode} that comes as part of Org-mode. Turn it
9086 on for the current buffer with @code{M-x org-cdlatex-mode}, or for all
9087 Org files with
9088
9089 @lisp
9090 (add-hook 'org-mode-hook 'turn-on-org-cdlatex)
9091 @end lisp
9092
9093 When this mode is enabled, the following features are present (for more
9094 details see the documentation of CDLa@TeX{} mode):
9095 @itemize @bullet
9096 @kindex C-c @{
9097 @item
9098 Environment templates can be inserted with @kbd{C-c @{}.
9099 @item
9100 @kindex @key{TAB}
9101 The @key{TAB} key will do template expansion if the cursor is inside a
9102 La@TeX{} fragment@footnote{Org-mode has a method to test if the cursor is
9103 inside such a fragment, see the documentation of the function
9104 @code{org-inside-LaTeX-fragment-p}.}. For example, @key{TAB} will
9105 expand @code{fr} to @code{\frac@{@}@{@}} and position the cursor
9106 correctly inside the first brace. Another @key{TAB} will get you into
9107 the second brace. Even outside fragments, @key{TAB} will expand
9108 environment abbreviations at the beginning of a line. For example, if
9109 you write @samp{equ} at the beginning of a line and press @key{TAB},
9110 this abbreviation will be expanded to an @code{equation} environment.
9111 To get a list of all abbreviations, type @kbd{M-x cdlatex-command-help}.
9112 @item
9113 @kindex _
9114 @kindex ^
9115 @vindex cdlatex-simplify-sub-super-scripts
9116 Pressing @kbd{_} and @kbd{^} inside a La@TeX{} fragment will insert these
9117 characters together with a pair of braces. If you use @key{TAB} to move
9118 out of the braces, and if the braces surround only a single character or
9119 macro, they are removed again (depending on the variable
9120 @code{cdlatex-simplify-sub-super-scripts}).
9121 @item
9122 @kindex `
9123 Pressing the backquote @kbd{`} followed by a character inserts math
9124 macros, also outside La@TeX{} fragments. If you wait more than 1.5 seconds
9125 after the backquote, a help window will pop up.
9126 @item
9127 @kindex '
9128 Pressing the single-quote @kbd{'} followed by another character modifies
9129 the symbol before point with an accent or a font. If you wait more than
9130 1.5 seconds after the backquote, a help window will pop up. Character
9131 modification will work only inside La@TeX{} fragments, outside the quote
9132 is normal.
9133 @end itemize
9134
9135 @node Exporting, Publishing, Markup, Top
9136 @chapter Exporting
9137 @cindex exporting
9138
9139 Org-mode documents can be exported into a variety of other formats. For
9140 printing and sharing of notes, ASCII export produces a readable and simple
9141 version of an Org file. HTML export allows you to publish a notes file on
9142 the web, while the XOXO format provides a solid base for exchange with a
9143 broad range of other applications. La@TeX{} export lets you use Org-mode and
9144 its structured editing functions to easily create La@TeX{} files. DocBook
9145 export makes it possible to convert Org files to many other formats using
9146 DocBook tools. For project management you can create gantt and resource
9147 charts by using TaskJuggler export. To incorporate entries with associated
9148 times like deadlines or appointments into a desktop calendar program like
9149 iCal, Org-mode can also produce extracts in the iCalendar format. Currently
9150 Org-mode only supports export, not import of these different formats.
9151
9152 Org supports export of selected regions when @code{transient-mark-mode} is
9153 enabled (default in Emacs 23).
9154
9155 @menu
9156 * Selective export:: Using tags to select and exclude trees
9157 * Export options:: Per-file export settings
9158 * The export dispatcher:: How to access exporter commands
9159 * ASCII/Latin-1/UTF-8 export:: Exporting to flat files with encoding
9160 * HTML export:: Exporting to HTML
9161 * LaTeX and PDF export:: Exporting to La@TeX{}, and processing to PDF
9162 * DocBook export:: Exporting to DocBook
9163 * TaskJuggler export:: Exporting to TaskJuggler
9164 * Freemind export:: Exporting to Freemind mind maps
9165 * XOXO export:: Exporting to XOXO
9166 * iCalendar export:: Exporting in iCalendar format
9167 @end menu
9168
9169 @node Selective export, Export options, Exporting, Exporting
9170 @section Selective export
9171 @cindex export, selective by tags
9172
9173 @vindex org-export-select-tags
9174 @vindex org-export-exclude-tags
9175 You may use tags to select the parts of a document that should be exported,
9176 or to exclude parts from export. This behavior is governed by two variables:
9177 @code{org-export-select-tags} and @code{org-export-exclude-tags}.
9178
9179 Org first checks if any of the @emph{select} tags is present in the buffer.
9180 If yes, all trees that do not carry one of these tags will be excluded. If a
9181 selected tree is a subtree, the heading hierarchy above it will also be
9182 selected for export, but not the text below those headings.
9183
9184 @noindent
9185 If none of the select tags is found, the whole buffer will be selected for
9186 export.
9187
9188 @noindent
9189 Finally, all subtrees that are marked by any of the @emph{exclude} tags will
9190 be removed from the export buffer.
9191
9192 @node Export options, The export dispatcher, Selective export, Exporting
9193 @section Export options
9194 @cindex options, for export
9195
9196 @cindex completion, of option keywords
9197 The exporter recognizes special lines in the buffer which provide
9198 additional information. These lines may be put anywhere in the file.
9199 The whole set of lines can be inserted into the buffer with @kbd{C-c
9200 C-e t}. For individual lines, a good way to make sure the keyword is
9201 correct is to type @samp{#+} and then use @kbd{M-@key{TAB}} completion
9202 (@pxref{Completion}). For a summary of other in-buffer settings not
9203 specifically related to export, see @ref{In-buffer settings}.
9204 In particular, note that you can place commonly-used (export) options in
9205 a separate file which can be included using @code{#+SETUPFILE}.
9206
9207 @table @kbd
9208 @kindex C-c C-e t
9209 @item C-c C-e t
9210 Insert template with export options, see example below.
9211 @end table
9212
9213 @cindex #+TITLE
9214 @cindex #+AUTHOR
9215 @cindex #+DATE
9216 @cindex #+EMAIL
9217 @cindex #+DESCRIPTION
9218 @cindex #+KEYWORDS
9219 @cindex #+LANGUAGE
9220 @cindex #+TEXT
9221 @cindex #+OPTIONS
9222 @cindex #+BIND
9223 @cindex #+LINK_UP
9224 @cindex #+LINK_HOME
9225 @cindex #+EXPORT_SELECT_TAGS
9226 @cindex #+EXPORT_EXCLUDE_TAGS
9227 @cindex #+XSLT
9228 @cindex #+LATEX_HEADER
9229 @vindex user-full-name
9230 @vindex user-mail-address
9231 @vindex org-export-default-language
9232 @example
9233 #+TITLE: the title to be shown (default is the buffer name)
9234 #+AUTHOR: the author (default taken from @code{user-full-name})
9235 #+DATE: a date, fixed, of a format string for @code{format-time-string}
9236 #+EMAIL: his/her email address (default from @code{user-mail-address})
9237 #+DESCRIPTION: the page description, e.g. for the XHTML meta tag
9238 #+KEYWORDS: the page keywords, e.g. for the XHTML meta tag
9239 #+LANGUAGE: language for HTML, e.g. @samp{en} (@code{org-export-default-language})
9240 #+TEXT: Some descriptive text to be inserted at the beginning.
9241 #+TEXT: Several lines may be given.
9242 #+OPTIONS: H:2 num:t toc:t \n:nil @@:t ::t |:t ^:t f:t TeX:t ...
9243 #+BIND: lisp-var lisp-val, e.g.: org-export-latex-low-levels itemize
9244 @r{You need to confirm using these, or configure @code{org-export-allow-BIND}}
9245 #+LINK_UP: the ``up'' link of an exported page
9246 #+LINK_HOME: the ``home'' link of an exported page
9247 #+LATEX_HEADER: extra line(s) for the LaTeX header, like \usepackage@{xyz@}
9248 #+EXPORT_SELECT_TAGS: Tags that select a tree for export
9249 #+EXPORT_EXCLUDE_TAGS: Tags that exclude a tree from export
9250 #+XSLT: the XSLT stylesheet used by DocBook exporter to generate FO file
9251 @end example
9252
9253 @noindent
9254 The OPTIONS line is a compact@footnote{If you want to configure many options
9255 this way, you can use several OPTIONS lines.} form to specify export settings. Here
9256 you can:
9257 @cindex headline levels
9258 @cindex section-numbers
9259 @cindex table of contents
9260 @cindex line-break preservation
9261 @cindex quoted HTML tags
9262 @cindex fixed-width sections
9263 @cindex tables
9264 @cindex @TeX{}-like syntax for sub- and superscripts
9265 @cindex footnotes
9266 @cindex special strings
9267 @cindex emphasized text
9268 @cindex @TeX{} macros
9269 @cindex La@TeX{} fragments
9270 @cindex author info, in export
9271 @cindex time info, in export
9272 @example
9273 H: @r{set the number of headline levels for export}
9274 num: @r{turn on/off section-numbers}
9275 toc: @r{turn on/off table of contents, or set level limit (integer)}
9276 \n: @r{turn on/off line-break-preservation (DOES NOT WORK)}
9277 @@: @r{turn on/off quoted HTML tags}
9278 :: @r{turn on/off fixed-width sections}
9279 |: @r{turn on/off tables}
9280 ^: @r{turn on/off @TeX{}-like syntax for sub- and superscripts. If}
9281 @r{you write "^:@{@}", @code{a_@{b@}} will be interpreted, but}
9282 @r{the simple @code{a_b} will be left as it is.}
9283 -: @r{turn on/off conversion of special strings.}
9284 f: @r{turn on/off footnotes like this[1].}
9285 todo: @r{turn on/off inclusion of TODO keywords into exported text}
9286 pri: @r{turn on/off priority cookies}
9287 tags: @r{turn on/off inclusion of tags, may also be @code{not-in-toc}}
9288 <: @r{turn on/off inclusion of any time/date stamps like DEADLINES}
9289 *: @r{turn on/off emphasized text (bold, italic, underlined)}
9290 TeX: @r{turn on/off simple @TeX{} macros in plain text}
9291 LaTeX: @r{configure export of La@TeX{} fragments. Default @code{auto}}
9292 skip: @r{turn on/off skipping the text before the first heading}
9293 author: @r{turn on/off inclusion of author name/email into exported file}
9294 email: @r{turn on/off inclusion of author email into exported file}
9295 creator: @r{turn on/off inclusion of creator info into exported file}
9296 timestamp: @r{turn on/off inclusion creation time into exported file}
9297 d: @r{turn on/off inclusion of drawers}
9298 @end example
9299 @noindent
9300 These options take effect in both the HTML and La@TeX{} export, except
9301 for @code{TeX} and @code{LaTeX}, which are respectively @code{t} and
9302 @code{nil} for the La@TeX{} export.
9303
9304 When exporting only a single subtree by selecting it with @kbd{C-c @@} before
9305 calling an export command, the subtree can overrule some of the file's export
9306 settings with properties @code{EXPORT_FILE_NAME}, @code{EXPORT_TITLE},
9307 @code{EXPORT_TEXT}, @code{EXPORT_AUTHOR}, @code{EXPORT_DATE}, and
9308 @code{EXPORT_OPTIONS}.
9309
9310 @node The export dispatcher, ASCII/Latin-1/UTF-8 export, Export options, Exporting
9311 @section The export dispatcher
9312 @cindex dispatcher, for export commands
9313
9314 All export commands can be reached using the export dispatcher, which is a
9315 prefix key that prompts for an additional key specifying the command.
9316 Normally the entire file is exported, but if there is an active region that
9317 contains one outline tree, the first heading is used as document title and
9318 the subtrees are exported.
9319
9320 @table @kbd
9321 @kindex C-c C-e
9322 @item C-c C-e
9323 @vindex org-export-run-in-background
9324 Dispatcher for export and publishing commands. Displays a help-window
9325 listing the additional key(s) needed to launch an export or publishing
9326 command. The prefix arg is passed through to the exporter. A double prefix
9327 @kbd{C-u C-u} causes most commands to be executed in the background, in a
9328 separate Emacs process@footnote{To make this behavior the default, customize
9329 the variable @code{org-export-run-in-background}.}.
9330 @kindex C-c C-e v
9331 @item C-c C-e v
9332 Like @kbd{C-c C-e}, but only export the text that is currently visible
9333 (i.e. not hidden by outline visibility).
9334 @kindex C-u C-u C-c C-e
9335 @item C-u C-u C-c C-e
9336 @vindex org-export-run-in-background
9337 Call an the exporter, but reverse the setting of
9338 @code{org-export-run-in-background}, i.e. request background processing if
9339 not set, or force processing in the current Emacs process if set.
9340 @end table
9341
9342 @node ASCII/Latin-1/UTF-8 export, HTML export, The export dispatcher, Exporting
9343 @section ASCII/Latin-1/UTF-8 export
9344 @cindex ASCII export
9345 @cindex Latin-1 export
9346 @cindex UTF-8 export
9347
9348 ASCII export produces a simple and very readable version of an Org-mode
9349 file, containing only plain ASCII. Latin-1 and UTF-8 export augment the file
9350 with special characters and symbols available in these encodings.
9351
9352 @cindex region, active
9353 @cindex active region
9354 @cindex transient-mark-mode
9355 @table @kbd
9356 @kindex C-c C-e a
9357 @item C-c C-e a
9358 @cindex property, EXPORT_FILE_NAME
9359 Export as ASCII file. For an Org file, @file{myfile.org}, the ASCII file
9360 will be @file{myfile.txt}. The file will be overwritten without
9361 warning. If there is an active region@footnote{This requires
9362 @code{transient-mark-mode} be turned on.}, only the region will be
9363 exported. If the selected region is a single tree@footnote{To select the
9364 current subtree, use @kbd{C-c @@}.}, the tree head will
9365 become the document title. If the tree head entry has or inherits an
9366 @code{EXPORT_FILE_NAME} property, that name will be used for the
9367 export.
9368 @kindex C-c C-e A
9369 @item C-c C-e A
9370 Export to a temporary buffer, do not create a file.
9371 @kindex C-c C-e n
9372 @kindex C-c C-e N
9373 @item C-c C-e n @ @ @r{and} @ @ C-c C-e N
9374 Like the above commands, but use Latin-1 encoding.
9375 @kindex C-c C-e u
9376 @kindex C-c C-e U
9377 @item C-c C-e u @ @ @r{and} @ @ C-c C-e U
9378 Like the above commands, but use UTF-8 encoding.
9379 @kindex C-c C-e v a
9380 @kindex C-c C-e v n
9381 @kindex C-c C-e v u
9382 @item C-c C-e v a @ @ @r{and} @ @ C-c C-e v n @ @ @r{and} @ @ C-c C-e v u
9383 Export only the visible part of the document.
9384 @end table
9385
9386 @cindex headline levels, for exporting
9387 In the exported version, the first 3 outline levels will become
9388 headlines, defining a general document structure. Additional levels
9389 will be exported as itemized lists. If you want that transition to occur
9390 at a different level, specify it with a prefix argument. For example,
9391
9392 @example
9393 @kbd{C-1 C-c C-e a}
9394 @end example
9395
9396 @noindent
9397 creates only top level headlines and does the rest as items. When
9398 headlines are converted to items, the indentation of the text following
9399 the headline is changed to fit nicely under the item. This is done with
9400 the assumption that the first body line indicates the base indentation of
9401 the body text. Any indentation larger than this is adjusted to preserve
9402 the layout relative to the first line. Should there be lines with less
9403 indentation than the first, these are left alone.
9404
9405 @vindex org-export-ascii-links-to-notes
9406 Links will be exported in a footnote-like style, with the descriptive part in
9407 the text and the link in a note before the next heading. See the variable
9408 @code{org-export-ascii-links-to-notes} for details and other options.
9409
9410 @node HTML export, LaTeX and PDF export, ASCII/Latin-1/UTF-8 export, Exporting
9411 @section HTML export
9412 @cindex HTML export
9413
9414 Org-mode contains an HTML (XHTML 1.0 strict) exporter with extensive
9415 HTML formatting, in ways similar to John Gruber's @emph{markdown}
9416 language, but with additional support for tables.
9417
9418 @menu
9419 * HTML Export commands:: How to invoke HTML export
9420 * Quoting HTML tags:: Using direct HTML in Org-mode
9421 * Links in HTML export:: How links will be interpreted and formatted
9422 * Tables in HTML export:: How to modify the formatting of tables
9423 * Images in HTML export:: How to insert figures into HTML output
9424 * Math formatting in HTML export:: Beautiful math also on the web
9425 * Text areas in HTML export:: An alternative way to show an example
9426 * CSS support:: Changing the appearance of the output
9427 * JavaScript support:: Info and Folding in a web browser
9428 @end menu
9429
9430 @node HTML Export commands, Quoting HTML tags, HTML export, HTML export
9431 @subsection HTML export commands
9432
9433 @cindex region, active
9434 @cindex active region
9435 @cindex transient-mark-mode
9436 @table @kbd
9437 @kindex C-c C-e h
9438 @item C-c C-e h
9439 @cindex property, EXPORT_FILE_NAME
9440 Export as HTML file @file{myfile.html}. For an Org file @file{myfile.org},
9441 the ASCII file will be @file{myfile.html}. The file will be overwritten
9442 without warning. If there is an active region@footnote{This requires
9443 @code{transient-mark-mode} be turned on.}, only the region will be
9444 exported. If the selected region is a single tree@footnote{To select the
9445 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
9446 title. If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
9447 property, that name will be used for the export.
9448 @kindex C-c C-e b
9449 @item C-c C-e b
9450 Export as HTML file and immediately open it with a browser.
9451 @kindex C-c C-e H
9452 @item C-c C-e H
9453 Export to a temporary buffer, do not create a file.
9454 @kindex C-c C-e R
9455 @item C-c C-e R
9456 Export the active region to a temporary buffer. With a prefix argument, do
9457 not produce the file header and footer, but just the plain HTML section for
9458 the region. This is good for cut-and-paste operations.
9459 @kindex C-c C-e v h
9460 @kindex C-c C-e v b
9461 @kindex C-c C-e v H
9462 @kindex C-c C-e v R
9463 @item C-c C-e v h
9464 @item C-c C-e v b
9465 @item C-c C-e v H
9466 @item C-c C-e v R
9467 Export only the visible part of the document.
9468 @item M-x org-export-region-as-html
9469 Convert the region to HTML under the assumption that it was Org-mode
9470 syntax before. This is a global command that can be invoked in any
9471 buffer.
9472 @item M-x org-replace-region-by-HTML
9473 Replace the active region (assumed to be in Org-mode syntax) by HTML
9474 code.
9475 @end table
9476
9477 @cindex headline levels, for exporting
9478 In the exported version, the first 3 outline levels will become headlines,
9479 defining a general document structure. Additional levels will be exported as
9480 itemized lists. If you want that transition to occur at a different level,
9481 specify it with a numeric prefix argument. For example,
9482
9483 @example
9484 @kbd{C-2 C-c C-e b}
9485 @end example
9486
9487 @noindent
9488 creates two levels of headings and does the rest as items.
9489
9490 @node Quoting HTML tags, Links in HTML export, HTML Export commands, HTML export
9491 @subsection Quoting HTML tags
9492
9493 Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
9494 @samp{&gt;} in HTML export. If you want to include simple HTML tags
9495 which should be interpreted as such, mark them with @samp{@@} as in
9496 @samp{@@<b>bold text@@</b>}. Note that this really works only for
9497 simple tags. For more extensive HTML that should be copied verbatim to
9498 the exported file use either
9499
9500 @cindex #+HTML
9501 @cindex #+BEGIN_HTML
9502 @example
9503 #+HTML: Literal HTML code for export
9504 @end example
9505
9506 @noindent or
9507 @cindex #+BEGIN_HTML
9508
9509 @example
9510 #+BEGIN_HTML
9511 All lines between these markers are exported literally
9512 #+END_HTML
9513 @end example
9514
9515
9516 @node Links in HTML export, Tables in HTML export, Quoting HTML tags, HTML export
9517 @subsection Links in HTML export
9518
9519 @cindex links, in HTML export
9520 @cindex internal links, in HTML export
9521 @cindex external links, in HTML export
9522 Internal links (@pxref{Internal links}) will continue to work in HTML. This
9523 includes automatic links created by radio targets (@pxref{Radio
9524 targets}). Links to external files will still work if the target file is on
9525 the same @i{relative} path as the published Org file. Links to other
9526 @file{.org} files will be translated into HTML links under the assumption
9527 that an HTML version also exists of the linked file, at the same relative
9528 path. @samp{id:} links can then be used to jump to specific entries across
9529 files. For information related to linking files while publishing them to a
9530 publishing directory see @ref{Publishing links}.
9531
9532 If you want to specify attributes for links, you can do so using a special
9533 @code{#+ATTR_HTML} line to define attributes that will be added to the
9534 @code{<a>} or @code{<img>} tags. Here is an example that sets @code{title}
9535 and @code{style} attributes for a link:
9536
9537 @cindex #+ATTR_HTML
9538 @example
9539 #+ATTR_HTML: title="The Org-mode homepage" style="color:red;"
9540 [[http://orgmode.org]]
9541 @end example
9542
9543 @node Tables in HTML export, Images in HTML export, Links in HTML export, HTML export
9544 @subsection Tables
9545 @cindex tables, in HTML
9546 @vindex org-export-html-table-tag
9547
9548 Org-mode tables are exported to HTML using the table tag defined in
9549 @code{org-export-html-table-tag}. The default setting makes tables without
9550 cell borders and frame. If you would like to change this for individual
9551 tables, place something like the following before the table:
9552
9553 @cindex #+CAPTION
9554 @cindex #+ATTR_HTML
9555 @example
9556 #+CAPTION: This is a table with lines around and between cells
9557 #+ATTR_HTML: border="2" rules="all" frame="all"
9558 @end example
9559
9560 @node Images in HTML export, Math formatting in HTML export, Tables in HTML export, HTML export
9561 @subsection Images in HTML export
9562
9563 @cindex images, inline in HTML
9564 @cindex inlining images in HTML
9565 @vindex org-export-html-inline-images
9566 HTML export can inline images given as links in the Org file, and
9567 it can make an image the clickable part of a link. By
9568 default@footnote{But see the variable
9569 @code{org-export-html-inline-images}.}, images are inlined if a link does
9570 not have a description. So @samp{[[file:myimg.jpg]]} will be inlined,
9571 while @samp{[[file:myimg.jpg][the image]]} will just produce a link
9572 @samp{the image} that points to the image. If the description part
9573 itself is a @code{file:} link or a @code{http:} URL pointing to an
9574 image, this image will be inlined and activated so that clicking on the
9575 image will activate the link. For example, to include a thumbnail that
9576 will link to a high resolution version of the image, you could use:
9577
9578 @example
9579 [[file:highres.jpg][file:thumb.jpg]]
9580 @end example
9581
9582 If you need to add attributes to an inlined image, use a @code{#+ATTR_HTML}.
9583 In the example below we specify the @code{alt} and @code{title} attributes to
9584 support text viewers and accessibility, and align it to the right.
9585
9586 @cindex #+CAPTION
9587 @cindex #+ATTR_HTML
9588 @example
9589 #+CAPTION: A black cat stalking a spider
9590 #+ATTR_HTML: alt="cat/spider image" title="Action!" align="right"
9591 [[./img/a.jpg]]
9592 @end example
9593
9594 @noindent
9595 and you could use @code{http} addresses just as well.
9596
9597 @node Math formatting in HTML export, Text areas in HTML export, Images in HTML export, HTML export
9598 @subsection Math formatting in HTML export
9599 @cindex MathJax
9600 @cindex dvipng
9601
9602 La@TeX{} math snippets (@pxref{LaTeX fragments}) can be displayed in two
9603 different ways on HTML pages. The default is to use the
9604 @uref{http://www.mathjax.org, MathJax system} which should work out of the
9605 box with Org mode installation because @code{http://orgmode.org} serves
9606 @file{MathJax} for Org-mode users for small applications and for testing
9607 purposes. @b{If you plan to use this regularly or on pages with significant
9608 page views, you should install MathJax on your own server in order to limit
9609 the load of our server.} To configure @file{MathJax}, use the variable
9610 @code{org-export-html-mathjax-options} or insert something like the following
9611 into the buffer:
9612
9613 @example
9614 #+MATHJAX: align:"left" mathml:t path:"/MathJax/MathJax.js"
9615 @end example
9616
9617 @noindent See the docstring of the variable
9618 @code{org-export-html-mathjax-options} for the meaning of the parameters in
9619 this line.
9620
9621 If you prefer, you can also request that La@TeX{} are processed into small
9622 images that will be inserted into the browser page. Before the availability
9623 of MathJax, this was the default method for Org files. This method requires
9624 that the @file{dvipng} program is available on your system. You can still
9625 get this processing with
9626
9627 @example
9628 #+OPTIONS: LaTeX:dvipng
9629 @end example
9630
9631 @node Text areas in HTML export, CSS support, Math formatting in HTML export, HTML export
9632 @subsection Text areas in HTML export
9633
9634 @cindex text areas, in HTML
9635 An alternative way to publish literal code examples in HTML is to use text
9636 areas, where the example can even be edited before pasting it into an
9637 application. It is triggered by a @code{-t} switch at an @code{example} or
9638 @code{src} block. Using this switch disables any options for syntax and
9639 label highlighting, and line numbering, which may be present. You may also
9640 use @code{-h} and @code{-w} switches to specify the height and width of the
9641 text area, which default to the number of lines in the example, and 80,
9642 respectively. For example
9643
9644 @example
9645 #+BEGIN_EXAMPLE -t -w 40
9646 (defun org-xor (a b)
9647 "Exclusive or."
9648 (if a (not b) b))
9649 #+END_EXAMPLE
9650 @end example
9651
9652
9653 @node CSS support, JavaScript support, Text areas in HTML export, HTML export
9654 @subsection CSS support
9655 @cindex CSS, for HTML export
9656 @cindex HTML export, CSS
9657
9658 @vindex org-export-html-todo-kwd-class-prefix
9659 @vindex org-export-html-tag-class-prefix
9660 You can also give style information for the exported file. The HTML exporter
9661 assigns the following special CSS classes@footnote{If the classes on TODO
9662 keywords and tags lead to conflicts, use the variables
9663 @code{org-export-html-todo-kwd-class-prefix} and
9664 @code{org-export-html-tag-class-prefix} to make them unique.} to appropriate
9665 parts of the document---your style specifications may change these, in
9666 addition to any of the standard classes like for headlines, tables, etc.
9667 @example
9668 p.author @r{author information, including email}
9669 p.date @r{publishing date}
9670 p.creator @r{creator info, about org-mode version}
9671 .title @r{document title}
9672 .todo @r{TODO keywords, all not-done states}
9673 .done @r{the DONE keywords, all stated the count as done}
9674 .WAITING @r{each TODO keyword also uses a class named after itself}
9675 .timestamp @r{timestamp}
9676 .timestamp-kwd @r{keyword associated with a timestamp, like SCHEDULED}
9677 .timestamp-wrapper @r{span around keyword plus timestamp}
9678 .tag @r{tag in a headline}
9679 ._HOME @r{each tag uses itself as a class, "@@" replaced by "_"}
9680 .target @r{target for links}
9681 .linenr @r{the line number in a code example}
9682 .code-highlighted @r{for highlighting referenced code lines}
9683 div.outline-N @r{div for outline level N (headline plus text))}
9684 div.outline-text-N @r{extra div for text at outline level N}
9685 .section-number-N @r{section number in headlines, different for each level}
9686 div.figure @r{how to format an inlined image}
9687 pre.src @r{formatted source code}
9688 pre.example @r{normal example}
9689 p.verse @r{verse paragraph}
9690 div.footnotes @r{footnote section headline}
9691 p.footnote @r{footnote definition paragraph, containing a footnote}
9692 .footref @r{a footnote reference number (always a <sup>)}
9693 .footnum @r{footnote number in footnote definition (always <sup>)}
9694 @end example
9695
9696 @vindex org-export-html-style-default
9697 @vindex org-export-html-style-include-default
9698 @vindex org-export-html-style
9699 @vindex org-export-html-extra
9700 @vindex org-export-html-style-default
9701 Each exported file contains a compact default style that defines these
9702 classes in a basic way@footnote{This style is defined in the constant
9703 @code{org-export-html-style-default}, which you should not modify. To turn
9704 inclusion of these defaults off, customize
9705 @code{org-export-html-style-include-default}}. You may overwrite these
9706 settings, or add to them by using the variables @code{org-export-html-style}
9707 (for Org-wide settings) and @code{org-export-html-style-extra} (for more
9708 granular settings, like file-local settings). To set the latter variable
9709 individually for each file, you can use
9710
9711 @cindex #+STYLE
9712 @example
9713 #+STYLE: <link rel="stylesheet" type="text/css" href="stylesheet.css" />
9714 @end example
9715
9716 @noindent
9717 For longer style definitions, you can use several such lines. You could also
9718 directly write a @code{<style>} @code{</style>} section in this way, without
9719 referring to an external file.
9720
9721 In order to add styles to a subtree, use the @code{:HTML_CONTAINER_CLASS:}
9722 property to assign a class to the tree. In order to specify CSS styles for a
9723 particular headline, you can use the id specified in a @code{:CUSTOM_ID:}
9724 property.
9725
9726 @c FIXME: More about header and footer styles
9727 @c FIXME: Talk about links and targets.
9728
9729 @node JavaScript support, , CSS support, HTML export
9730 @subsection JavaScript supported display of web pages
9731
9732 @cindex Rose, Sebastian
9733 Sebastian Rose has written a JavaScript program especially designed to
9734 enhance the web viewing experience of HTML files created with Org. This
9735 program allows you to view large files in two different ways. The first one
9736 is an @emph{Info}-like mode where each section is displayed separately and
9737 navigation can be done with the @kbd{n} and @kbd{p} keys (and some other keys
9738 as well, press @kbd{?} for an overview of the available keys). The second
9739 view type is a @emph{folding} view much like Org provides inside Emacs. The
9740 script is available at @url{http://orgmode.org/org-info.js} and you can find
9741 the documentation for it at @url{http://orgmode.org/worg/code/org-info-js/}.
9742 We host the script at our site, but if you use it a lot, you might
9743 not want to be dependent on @url{orgmode.org} and prefer to install a local
9744 copy on your own web server.
9745
9746 To use the script, you need to make sure that the @file{org-jsinfo.el} module
9747 gets loaded. It should be loaded by default, but you can try @kbd{M-x
9748 customize-variable @key{RET} org-modules @key{RET}} to convince yourself that
9749 this is indeed the case. All it then takes to make use of the program is
9750 adding a single line to the Org file:
9751
9752 @cindex #+INFOJS_OPT
9753 @example
9754 #+INFOJS_OPT: view:info toc:nil
9755 @end example
9756
9757 @noindent
9758 If this line is found, the HTML header will automatically contain the code
9759 needed to invoke the script. Using the line above, you can set the following
9760 viewing options:
9761
9762 @example
9763 path: @r{The path to the script. The default is to grab the script from}
9764 @r{@url{http://orgmode.org/org-info.js}, but you might want to have}
9765 @r{a local copy and use a path like @samp{../scripts/org-info.js}.}
9766 view: @r{Initial view when website is first shown. Possible values are:}
9767 info @r{Info-like interface with one section per page.}
9768 overview @r{Folding interface, initially showing only top-level.}
9769 content @r{Folding interface, starting with all headlines visible.}
9770 showall @r{Folding interface, all headlines and text visible.}
9771 sdepth: @r{Maximum headline level that will still become an independent}
9772 @r{section for info and folding modes. The default is taken from}
9773 @r{@code{org-export-headline-levels} (= the @code{H} switch in @code{#+OPTIONS}).}
9774 @r{If this is smaller than in @code{org-export-headline-levels}, each}
9775 @r{info/folding section can still contain child headlines.}
9776 toc: @r{Should the table of content @emph{initially} be visible?}
9777 @r{Even when @code{nil}, you can always get to the "toc" with @kbd{i}.}
9778 tdepth: @r{The depth of the table of contents. The defaults are taken from}
9779 @r{the variables @code{org-export-headline-levels} and @code{org-export-with-toc}.}
9780 ftoc: @r{Does the css of the page specify a fixed position for the "toc"?}
9781 @r{If yes, the toc will never be displayed as a section.}
9782 ltoc: @r{Should there be short contents (children) in each section?}
9783 @r{Make this @code{above} if the section should be above initial text.}
9784 mouse: @r{Headings are highlighted when the mouse is over them. Should be}
9785 @r{@samp{underline} (default) or a background color like @samp{#cccccc}.}
9786 buttons: @r{Should view-toggle buttons be everywhere? When @code{nil} (the}
9787 @r{default), only one such button will be present.}
9788 @end example
9789 @noindent
9790 @vindex org-infojs-options
9791 @vindex org-export-html-use-infojs
9792 You can choose default values for these options by customizing the variable
9793 @code{org-infojs-options}. If you always want to apply the script to your
9794 pages, configure the variable @code{org-export-html-use-infojs}.
9795
9796 @node LaTeX and PDF export, DocBook export, HTML export, Exporting
9797 @section La@TeX{} and PDF export
9798 @cindex La@TeX{} export
9799 @cindex PDF export
9800 @cindex Guerry, Bastien
9801
9802 Org-mode contains a La@TeX{} exporter written by Bastien Guerry. With
9803 further processing@footnote{The default LaTeX output is designed for
9804 processing with pdftex or latex. It includes packages that are not
9805 compatible with xetex and possibly luatex. See the variables
9806 @code{org-export-latex-default-packages-alist} and
9807 @code{org-export-latex-packages-alist}.}, this backend is also used to
9808 produce PDF output. Since the La@TeX{} output uses @file{hyperref} to
9809 implement links and cross references, the PDF output file will be fully
9810 linked.
9811
9812 @menu
9813 * LaTeX/PDF export commands:: Which key invokes which commands
9814 * Header and sectioning:: Setting up the export file structure
9815 * Quoting LaTeX code:: Incorporating literal La@TeX{} code
9816 * Tables in LaTeX export:: Options for exporting tables to La@TeX{}
9817 * Images in LaTeX export:: How to insert figures into La@TeX{} output
9818 * Beamer class export:: Turning the file into a presentation
9819 @end menu
9820
9821 @node LaTeX/PDF export commands, Header and sectioning, LaTeX and PDF export, LaTeX and PDF export
9822 @subsection La@TeX{} export commands
9823
9824 @cindex region, active
9825 @cindex active region
9826 @cindex transient-mark-mode
9827 @table @kbd
9828 @kindex C-c C-e l
9829 @item C-c C-e l
9830 @cindex property EXPORT_FILE_NAME
9831 Export as La@TeX{} file @file{myfile.tex}. For an Org file
9832 @file{myfile.org}, the ASCII file will be @file{myfile.tex}. The file will
9833 be overwritten without warning. If there is an active region@footnote{This
9834 requires @code{transient-mark-mode} be turned on.}, only the region will be
9835 exported. If the selected region is a single tree@footnote{To select the
9836 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
9837 title. If the tree head entry has or inherits an @code{EXPORT_FILE_NAME}
9838 property, that name will be used for the export.
9839 @kindex C-c C-e L
9840 @item C-c C-e L
9841 Export to a temporary buffer, do not create a file.
9842 @kindex C-c C-e v l
9843 @kindex C-c C-e v L
9844 @item C-c C-e v l
9845 @item C-c C-e v L
9846 Export only the visible part of the document.
9847 @item M-x org-export-region-as-latex
9848 Convert the region to La@TeX{} under the assumption that it was Org-mode
9849 syntax before. This is a global command that can be invoked in any
9850 buffer.
9851 @item M-x org-replace-region-by-latex
9852 Replace the active region (assumed to be in Org-mode syntax) by La@TeX{}
9853 code.
9854 @kindex C-c C-e p
9855 @item C-c C-e p
9856 Export as La@TeX{} and then process to PDF.
9857 @kindex C-c C-e d
9858 @item C-c C-e d
9859 Export as La@TeX{} and then process to PDF, then open the resulting PDF file.
9860 @end table
9861
9862 @cindex headline levels, for exporting
9863 @vindex org-latex-low-levels
9864 In the exported version, the first 3 outline levels will become
9865 headlines, defining a general document structure. Additional levels
9866 will be exported as description lists. The exporter can ignore them or
9867 convert them to a custom string depending on
9868 @code{org-latex-low-levels}.
9869
9870 If you want that transition to occur at a different level, specify it
9871 with a numeric prefix argument. For example,
9872
9873 @example
9874 @kbd{C-2 C-c C-e l}
9875 @end example
9876
9877 @noindent
9878 creates two levels of headings and does the rest as items.
9879
9880 @node Header and sectioning, Quoting LaTeX code, LaTeX/PDF export commands, LaTeX and PDF export
9881 @subsection Header and sectioning structure
9882 @cindex La@TeX{} class
9883 @cindex La@TeX{} sectioning structure
9884 @cindex La@TeX{} header
9885 @cindex header, for LaTeX files
9886 @cindex sectioning structure, for LaTeX export
9887
9888 By default, the La@TeX{} output uses the class @code{article}.
9889
9890 @vindex org-export-latex-default-class
9891 @vindex org-export-latex-classes
9892 @vindex org-export-latex-default-packages-alist
9893 @vindex org-export-latex-packages-alist
9894 @cindex #+LATEX_HEADER
9895 @cindex #+LATEX_CLASS
9896 @cindex #+LATEX_CLASS_OPTIONS
9897 @cindex property, LATEX_CLASS
9898 @cindex property, LATEX_CLASS_OPTIONS
9899 You can change this globally by setting a different value for
9900 @code{org-export-latex-default-class} or locally by adding an option like
9901 @code{#+LaTeX_CLASS: myclass} in your file, or with a @code{:LaTeX_CLASS:}
9902 property that applies when exporting a region containing only this (sub)tree.
9903 The class must be listed in @code{org-export-latex-classes}. This variable
9904 defines a header template for each class@footnote{Into which the values of
9905 @code{org-export-latex-default-packages-alist} and
9906 @code{org-export-latex-packages-alist} are spliced.}, and allows you to
9907 define the sectioning structure for each class. You can also define your own
9908 classes there. @code{#+LaTeX_CLASS_OPTIONS} or a @code{LaTeX_CLASS_OPTIONS}
9909 property can specify the options for the @code{\documentclass} macro. You
9910 can also use @code{#+LATEX_HEADER: \usepackage@{xyz@}} to add lines to the
9911 header. See the docstring of @code{org-export-latex-classes} for more
9912 information.
9913
9914 @node Quoting LaTeX code, Tables in LaTeX export, Header and sectioning, LaTeX and PDF export
9915 @subsection Quoting La@TeX{} code
9916
9917 Embedded La@TeX{} as described in @ref{Embedded LaTeX}, will be correctly
9918 inserted into the La@TeX{} file. This includes simple macros like
9919 @samp{\ref@{LABEL@}} to create a cross reference to a figure. Furthermore,
9920 you can add special code that should only be present in La@TeX{} export with
9921 the following constructs:
9922
9923 @cindex #+LaTeX
9924 @cindex #+BEGIN_LaTeX
9925 @example
9926 #+LaTeX: Literal LaTeX code for export
9927 @end example
9928
9929 @noindent or
9930 @cindex #+BEGIN_LaTeX
9931
9932 @example
9933 #+BEGIN_LaTeX
9934 All lines between these markers are exported literally
9935 #+END_LaTeX
9936 @end example
9937
9938
9939 @node Tables in LaTeX export, Images in LaTeX export, Quoting LaTeX code, LaTeX and PDF export
9940 @subsection Tables in La@TeX{} export
9941 @cindex tables, in La@TeX{} export
9942
9943 For La@TeX{} export of a table, you can specify a label and a caption
9944 (@pxref{Images and tables}). You can also use the @code{ATTR_LaTeX} line to
9945 request a @code{longtable} environment for the table, so that it may span
9946 several pages, or provide the @code{multicolumn} keyword that will make the
9947 table span the page in a multicolumn environment (@code{table*} environment).
9948 Finally, you can set the alignment string:
9949
9950 @cindex #+CAPTION
9951 @cindex #+LABEL
9952 @cindex #+ATTR_LaTeX
9953 @example
9954 #+CAPTION: A long table
9955 #+LABEL: tbl:long
9956 #+ATTR_LaTeX: longtable align=l|lp@{3cm@}r|l
9957 | ..... | ..... |
9958 | ..... | ..... |
9959 @end example
9960
9961
9962 @node Images in LaTeX export, Beamer class export, Tables in LaTeX export, LaTeX and PDF export
9963 @subsection Images in La@TeX{} export
9964 @cindex images, inline in La@TeX{}
9965 @cindex inlining images in La@TeX{}
9966
9967 Images that are linked to without a description part in the link, like
9968 @samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]} will be inserted into the PDF
9969 output file resulting from La@TeX{} processing. Org will use an
9970 @code{\includegraphics} macro to insert the image. If you have specified a
9971 caption and/or a label as described in @ref{Images and tables}, the figure
9972 will be wrapped into a @code{figure} environment and thus become a floating
9973 element. You can use an @code{#+ATTR_LaTeX:} line to specify the various
9974 options that can be used in the optional argument of the
9975 @code{\includegraphics} macro. To modify the placement option of the
9976 @code{figure} environment, add something like @samp{placement=[h!]} to the
9977 Attributes.
9978
9979 If you would like to let text flow around the image, add the word @samp{wrap}
9980 to the @code{#+ATTR_LaTeX:} line, which will make the figure occupy the left
9981 half of the page. To fine-tune, the @code{placement} field will be the set
9982 of additional arguments needed by the @code{wrapfigure} environment. Note
9983 that if you change the size of the image, you need to use compatible settings
9984 for @code{\includegraphics} and @code{wrapfigure}.
9985
9986 @cindex #+CAPTION
9987 @cindex #+LABEL
9988 @cindex #+ATTR_LaTeX
9989 @example
9990 #+CAPTION: The black-body emission of the disk around HR 4049
9991 #+LABEL: fig:SED-HR4049
9992 #+ATTR_LaTeX: width=5cm,angle=90
9993 [[./img/sed-hr4049.pdf]]
9994
9995 #+ATTR_LaTeX: width=0.38\textwidth wrap placement=@{r@}@{0.4\textwidth@}
9996 [[./img/hst.png]]
9997 @end example
9998
9999 If you need references to a label created in this way, write
10000 @samp{\ref@{fig:SED-HR4049@}} just like in La@TeX{}.
10001
10002 @node Beamer class export, , Images in LaTeX export, LaTeX and PDF export
10003 @subsection Beamer class export
10004
10005 The LaTeX class @file{beamer} allows production of high quality presentations
10006 using LaTeX and pdf processing. Org-mode has special support for turning an
10007 Org-mode file or tree into a @file{beamer} presentation.
10008
10009 When the LaTeX class for the current buffer (as set with @code{#+LaTeX_CLASS:
10010 beamer}) or subtree (set with a @code{LaTeX_CLASS} property) is
10011 @code{beamer}, a special export mode will turn the file or tree into a beamer
10012 presentation. Any tree with not-too-deep level nesting should in principle be
10013 exportable as a beamer presentation. By default, the top-level entries (or
10014 the first level below the selected subtree heading) will be turned into
10015 frames, and the outline structure below this level will become itemize lists.
10016 You can also configure the variable @code{org-beamer-frame-level} to a
10017 different level - then the hierarchy above frames will produce the sectioning
10018 structure of the presentation.
10019
10020 A template for useful in-buffer settings or properties can be inserted into
10021 the buffer with @kbd{M-x org-insert-beamer-options-template}. Among other
10022 things, this will install a column view format which is very handy for
10023 editing special properties used by beamer.
10024
10025 You can influence the structure of the presentation using the following
10026 properties:
10027
10028 @table @code
10029 @item BEAMER_env
10030 The environment that should be used to format this entry. Valid environments
10031 are defined in the constant @code{org-beamer-environments-default}, and you
10032 can define more in @code{org-beamer-environments-extra}. If this property is
10033 set, the entry will also get a @code{:B_environment:} tag to make this
10034 visible. This tag has no semantic meaning, it is only a visual aid.
10035 @item BEAMER_envargs
10036 The beamer-special arguments that should be used for the environment, like
10037 @code{[t]} or @code{[<+->]} of @code{<2-3>}. If the @code{BEAMER_col}
10038 property is also set, something like @code{C[t]} can be added here as well to
10039 set an options argument for the implied @code{columns} environment.
10040 @code{c[t]} will set an option for the implied @code{column} environment.
10041 @item BEAMER_col
10042 The width of a column that should start with this entry. If this property is
10043 set, the entry will also get a @code{:BMCOL:} property to make this visible.
10044 Also this tag is only a visual aid. When this is a plain number, it will be
10045 interpreted as a fraction of @code{\textwidth}. Otherwise it will be assumed
10046 that you have specified the units, like @samp{3cm}. The first such property
10047 in a frame will start a @code{columns} environment to surround the columns.
10048 This environment is closed when an entry has a @code{BEAMER_col} property
10049 with value 0 or 1, or automatically at the end of the frame.
10050 @item BEAMER_extra
10051 Additional commands that should be inserted after the environment has been
10052 opened. For example, when creating a frame, this can be used to specify
10053 transitions.
10054 @end table
10055
10056 Frames will automatically receive a @code{fragile} option if they contain
10057 source code that uses the verbatim environment. Special @file{beamer}
10058 specific code can be inserted using @code{#+BEAMER:} and
10059 @code{#+BEGIN_beamer...#+end_beamer} constructs, similar to other export
10060 backends, but with the difference that @code{#+LaTeX:} stuff will be included
10061 in the presentation as well.
10062
10063 Outline nodes with @code{BEAMER_env} property value @samp{note} or
10064 @samp{noteNH} will be formatted as beamer notes, i,e, they will be wrapped
10065 into @code{\note@{...@}}. The former will include the heading as part of the
10066 note text, the latter will ignore the heading of that node. To simplify note
10067 generation, it is actually enough to mark the note with a @emph{tag} (either
10068 @code{:B_note:} or @code{:B_noteNH:}) instead of creating the
10069 @code{BEAMER_env} property.
10070
10071 You can turn on a special minor mode @code{org-beamer-mode} for editing
10072 support with
10073
10074 @example
10075 #+STARTUP: beamer
10076 @end example
10077
10078 @table @kbd
10079 @kindex C-c C-b
10080 @item C-c C-b
10081 In @code{org-beamer-mode}, this key offers fast selection of a beamer
10082 environment or the @code{BEAMER_col} property.
10083 @end table
10084
10085 Column view provides a great way to set the environment of a node and other
10086 important parameters. Make sure you are using a COLUMN format that is geared
10087 toward this special purpose. The command @kbd{M-x
10088 org-insert-beamer-options-template} defines such a format.
10089
10090 Here is a simple example Org document that is intended for beamer export.
10091
10092 @smallexample
10093 #+LaTeX_CLASS: beamer
10094 #+TITLE: Example Presentation
10095 #+AUTHOR: Carsten Dominik
10096 #+LaTeX_CLASS_OPTIONS: [presentation]
10097 #+BEAMER_FRAME_LEVEL: 2
10098 #+BEAMER_HEADER_EXTRA: \usetheme@{Madrid@}\usecolortheme@{default@}
10099 #+COLUMNS: %35ITEM %10BEAMER_env(Env) %10BEAMER_envargs(Args) %4BEAMER_col(Col) %8BEAMER_extra(Ex)
10100
10101 * This is the first structural section
10102
10103 ** Frame 1 \\ with a subtitle
10104 *** Thanks to Eric Fraga :BMCOL:B_block:
10105 :PROPERTIES:
10106 :BEAMER_env: block
10107 :BEAMER_envargs: C[t]
10108 :BEAMER_col: 0.5
10109 :END:
10110 for the first viable beamer setup in Org
10111 *** Thanks to everyone else :BMCOL:B_block:
10112 :PROPERTIES:
10113 :BEAMER_col: 0.5
10114 :BEAMER_env: block
10115 :BEAMER_envargs: <2->
10116 :END:
10117 for contributing to the discussion
10118 **** This will be formatted as a beamer note :B_note:
10119 ** Frame 2 \\ where we will not use columns
10120 *** Request :B_block:
10121 Please test this stuff!
10122 :PROPERTIES:
10123 :BEAMER_env: block
10124 :END:
10125 @end smallexample
10126
10127 For more information, see the documentation on Worg.
10128
10129 @node DocBook export, TaskJuggler export, LaTeX and PDF export, Exporting
10130 @section DocBook export
10131 @cindex DocBook export
10132 @cindex PDF export
10133 @cindex Cui, Baoqiu
10134
10135 Org contains a DocBook exporter written by Baoqiu Cui. Once an Org file is
10136 exported to DocBook format, it can be further processed to produce other
10137 formats, including PDF, HTML, man pages, etc., using many available DocBook
10138 tools and stylesheets.
10139
10140 Currently DocBook exporter only supports DocBook V5.0.
10141
10142 @menu
10143 * DocBook export commands:: How to invoke DocBook export
10144 * Quoting DocBook code:: Incorporating DocBook code in Org files
10145 * Recursive sections:: Recursive sections in DocBook
10146 * Tables in DocBook export:: Tables are exported as HTML tables
10147 * Images in DocBook export:: How to insert figures into DocBook output
10148 * Special characters:: How to handle special characters
10149 @end menu
10150
10151 @node DocBook export commands, Quoting DocBook code, DocBook export, DocBook export
10152 @subsection DocBook export commands
10153
10154 @cindex region, active
10155 @cindex active region
10156 @cindex transient-mark-mode
10157 @table @kbd
10158 @kindex C-c C-e D
10159 @item C-c C-e D
10160 @cindex property EXPORT_FILE_NAME
10161 Export as DocBook file. For an Org file, @file{myfile.org}, the DocBook XML
10162 file will be @file{myfile.xml}. The file will be overwritten without
10163 warning. If there is an active region@footnote{This requires
10164 @code{transient-mark-mode} to be turned on}, only the region will be
10165 exported. If the selected region is a single tree@footnote{To select the
10166 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
10167 title. If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
10168 property, that name will be used for the export.
10169 @kindex C-c C-e V
10170 @item C-c C-e V
10171 Export as DocBook file, process to PDF, then open the resulting PDF file.
10172
10173 @vindex org-export-docbook-xslt-proc-command
10174 @vindex org-export-docbook-xsl-fo-proc-command
10175 Note that, in order to produce PDF output based on exported DocBook file, you
10176 need to have XSLT processor and XSL-FO processor software installed on your
10177 system. Check variables @code{org-export-docbook-xslt-proc-command} and
10178 @code{org-export-docbook-xsl-fo-proc-command}.
10179
10180 @vindex org-export-docbook-xslt-stylesheet
10181 The stylesheet argument @code{%s} in variable
10182 @code{org-export-docbook-xslt-proc-command} is replaced by the value of
10183 variable @code{org-export-docbook-xslt-stylesheet}, which needs to be set by
10184 the user. You can also overrule this global setting on a per-file basis by
10185 adding an in-buffer setting @code{#+XSLT:} to the Org file.
10186
10187 @kindex C-c C-e v D
10188 @item C-c C-e v D
10189 Export only the visible part of the document.
10190 @end table
10191
10192 @node Quoting DocBook code, Recursive sections, DocBook export commands, DocBook export
10193 @subsection Quoting DocBook code
10194
10195 You can quote DocBook code in Org files and copy it verbatim into exported
10196 DocBook file with the following constructs:
10197
10198 @cindex #+DOCBOOK
10199 @cindex #+BEGIN_DOCBOOK
10200 @example
10201 #+DOCBOOK: Literal DocBook code for export
10202 @end example
10203
10204 @noindent or
10205 @cindex #+BEGIN_DOCBOOK
10206
10207 @example
10208 #+BEGIN_DOCBOOK
10209 All lines between these markers are exported by DocBook exporter
10210 literally.
10211 #+END_DOCBOOK
10212 @end example
10213
10214 For example, you can use the following lines to include a DocBook warning
10215 admonition. As to what this warning says, you should pay attention to the
10216 document context when quoting DocBook code in Org files. You may make
10217 exported DocBook XML files invalid by not quoting DocBook code correctly.
10218
10219 @example
10220 #+BEGIN_DOCBOOK
10221 <warning>
10222 <para>You should know what you are doing when quoting DocBook XML code
10223 in your Org file. Invalid DocBook XML file may be generated by
10224 DocBook exporter if you are not careful!</para>
10225 </warning>
10226 #+END_DOCBOOK
10227 @end example
10228
10229 @node Recursive sections, Tables in DocBook export, Quoting DocBook code, DocBook export
10230 @subsection Recursive sections
10231 @cindex DocBook recursive sections
10232
10233 DocBook exporter exports Org files as articles using the @code{article}
10234 element in DocBook. Recursive sections, i.e. @code{section} elements, are
10235 used in exported articles. Top level headlines in Org files are exported as
10236 top level sections, and lower level headlines are exported as nested
10237 sections. The entire structure of Org files will be exported completely, no
10238 matter how many nested levels of headlines there are.
10239
10240 Using recursive sections makes it easy to port and reuse exported DocBook
10241 code in other DocBook document types like @code{book} or @code{set}.
10242
10243 @node Tables in DocBook export, Images in DocBook export, Recursive sections, DocBook export
10244 @subsection Tables in DocBook export
10245 @cindex tables, in DocBook export
10246
10247 Tables in Org files are exported as HTML tables, which have been supported since
10248 DocBook V4.3.
10249
10250 If a table does not have a caption, an informal table is generated using the
10251 @code{informaltable} element; otherwise, a formal table will be generated
10252 using the @code{table} element.
10253
10254 @node Images in DocBook export, Special characters, Tables in DocBook export, DocBook export
10255 @subsection Images in DocBook export
10256 @cindex images, inline in DocBook
10257 @cindex inlining images in DocBook
10258
10259 Images that are linked to without a description part in the link, like
10260 @samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]}, will be exported to DocBook
10261 using @code{mediaobject} elements. Each @code{mediaobject} element contains
10262 an @code{imageobject} that wraps an @code{imagedata} element. If you have
10263 specified a caption for an image as described in @ref{Images and tables}, a
10264 @code{caption} element will be added in @code{mediaobject}. If a label is
10265 also specified, it will be exported as an @code{xml:id} attribute of the
10266 @code{mediaobject} element.
10267
10268 @vindex org-export-docbook-default-image-attributes
10269 Image attributes supported by the @code{imagedata} element, like @code{align}
10270 or @code{width}, can be specified in two ways: you can either customize
10271 variable @code{org-export-docbook-default-image-attributes} or use the
10272 @code{#+ATTR_DOCBOOK:} line. Attributes specified in variable
10273 @code{org-export-docbook-default-image-attributes} are applied to all inline
10274 images in the Org file to be exported (unless they are overridden by image
10275 attributes specified in @code{#+ATTR_DOCBOOK:} lines).
10276
10277 The @code{#+ATTR_DOCBOOK:} line can be used to specify additional image
10278 attributes or override default image attributes for individual images. If
10279 the same attribute appears in both the @code{#+ATTR_DOCBOOK:} line and
10280 variable @code{org-export-docbook-default-image-attributes}, the former
10281 takes precedence. Here is an example about how image attributes can be
10282 set:
10283
10284 @cindex #+CAPTION
10285 @cindex #+LABEL
10286 @cindex #+ATTR_DOCBOOK
10287 @example
10288 #+CAPTION: The logo of Org-mode
10289 #+LABEL: unicorn-svg
10290 #+ATTR_DOCBOOK: scalefit="1" width="100%" depth="100%"
10291 [[./img/org-mode-unicorn.svg]]
10292 @end example
10293
10294 @vindex org-export-docbook-inline-image-extensions
10295 By default, DocBook exporter recognizes the following image file types:
10296 @file{jpeg}, @file{jpg}, @file{png}, @file{gif}, and @file{svg}. You can
10297 customize variable @code{org-export-docbook-inline-image-extensions} to add
10298 more types to this list as long as DocBook supports them.
10299
10300 @node Special characters, , Images in DocBook export, DocBook export
10301 @subsection Special characters in DocBook export
10302 @cindex Special characters in DocBook export
10303
10304 @vindex org-export-docbook-doctype
10305 @vindex org-entities
10306 Special characters that are written in @TeX{}-like syntax, such as @code{\alpha},
10307 @code{\Gamma}, and @code{\Zeta}, are supported by DocBook exporter. These
10308 characters are rewritten to XML entities, like @code{&alpha;},
10309 @code{&Gamma;}, and @code{&Zeta;}, based on the list saved in variable
10310 @code{org-entities}. As long as the generated DocBook file includes the
10311 corresponding entities, these special characters are recognized.
10312
10313 You can customize variable @code{org-export-docbook-doctype} to include the
10314 entities you need. For example, you can set variable
10315 @code{org-export-docbook-doctype} to the following value to recognize all
10316 special characters included in XHTML entities:
10317
10318 @example
10319 "<!DOCTYPE article [
10320 <!ENTITY % xhtml1-symbol PUBLIC
10321 \"-//W3C//ENTITIES Symbol for HTML//EN//XML\"
10322 \"http://www.w3.org/2003/entities/2007/xhtml1-symbol.ent\"
10323 >
10324 %xhtml1-symbol;
10325 ]>
10326 "
10327 @end example
10328
10329 @node TaskJuggler export, Freemind export, DocBook export, Exporting
10330 @section TaskJuggler export
10331 @cindex TaskJuggler export
10332 @cindex Project management
10333
10334 @uref{http://www.taskjuggler.org/, TaskJuggler} is a project management tool.
10335 It provides an optimizing scheduler that computes your project time lines and
10336 resource assignments based on the project outline and the constraints that
10337 you have provided.
10338
10339 The TaskJuggler exporter is a bit different from other exporters, such as the
10340 HTML and LaTeX exporters for example, in that it does not export all the
10341 nodes of a document or strictly follow the order of the nodes in the
10342 document.
10343
10344 Instead the TaskJuggler exporter looks for a tree that defines the tasks and
10345 a optionally tree that defines the resources for this project. It then
10346 creates a TaskJuggler file based on these trees and the attributes defined in
10347 all the nodes.
10348
10349 @subsection TaskJuggler export commands
10350
10351 @table @kbd
10352 @kindex C-c C-e j
10353 @item C-c C-e j
10354 Export as TaskJuggler file.
10355
10356 @kindex C-c C-e J
10357 @item C-c C-e J
10358 Export as TaskJuggler file and then open the file with TaskJugglerUI.
10359 @end table
10360
10361 @subsection Tasks
10362
10363 @vindex org-export-taskjuggler-project-tag
10364 Create your tasks as you usually do with Org-mode. Assign efforts to each
10365 task using properties (it's easiest to do this in the column view). You
10366 should end up with something similar to the example by Peter Jones in
10367 @url{http://www.contextualdevelopment.com/static/artifacts/articles/2008/project-planning/project-planning.org}.
10368 Now mark the top node of your tasks with a tag named
10369 @code{:taskjuggler_project:} (or whatever you customized
10370 @code{org-export-taskjuggler-project-tag} to). You are now ready to export
10371 the project plan with @kbd{C-c C-e J} which will export the project plan and
10372 open a gantt chart in TaskJugglerUI.
10373
10374 @subsection Resources
10375
10376 @vindex org-export-taskjuggler-resource-tag
10377 Next you can define resources and assign those to work on specific tasks. You
10378 can group your resources hierarchically. Tag the top node of the resources
10379 with @code{:taskjuggler_resource:} (or whatever you customized
10380 @code{org-export-taskjuggler-resource-tag} to). You can optionally assign an
10381 identifier (named @samp{resource_id}) to the resources (using the standard
10382 Org properties commands, @pxref{Property syntax}) or you can let the exporter
10383 generate identifiers automatically (the exporter picks the first word of the
10384 headline as the identifier as long as it is unique, see the documentation of
10385 @code{org-taskjuggler-get-unique-id}). Using that identifier you can then
10386 allocate resources to tasks. This is again done with the @samp{allocate}
10387 property on the tasks. Do this in column view or when on the task type
10388 @kbd{C-c C-x p allocate @key{RET} <resource_id> @key{RET}}.
10389
10390 Once the allocations are done you can again export to TaskJuggler and check
10391 in the Resource Allocation Graph which person is working on what task at what
10392 time.
10393
10394 @subsection Export of properties
10395
10396 The exporter also takes TODO state information into consideration, i.e. if a
10397 task is marked as done it will have the corresponding attribute in
10398 TaskJuggler (@samp{complete 100}). Also it will export any property on a task
10399 resource or resource node which is known to TaskJuggler, such as
10400 @samp{limits}, @samp{vacation}, @samp{shift}, @samp{booking},
10401 @samp{efficiency}, @samp{journalentry}, @samp{rate} for resources or
10402 @samp{account}, @samp{start}, @samp{note}, @samp{duration}, @samp{end},
10403 @samp{journalentry}, @samp{milestone}, @samp{reference}, @samp{responsible},
10404 @samp{scheduling}, etc for tasks.
10405
10406 @subsection Dependencies
10407
10408 The exporter will handle dependencies that are defined in the tasks either
10409 with the @samp{ORDERED} attribute (@pxref{TODO dependencies}), with the
10410 @samp{BLOCKER} attribute (see org-depend.el) or alternatively with a
10411 @samp{depends} attribute. Both the @samp{BLOCKER} and the @samp{depends}
10412 attribute can be either @samp{previous-sibling} or a reference to an
10413 identifier (named @samp{task_id}) which is defined for another task in the
10414 project. @samp{BLOCKER} and the @samp{depends} attribute can define multiple
10415 dependencies separated by either space or comma. You can also specify
10416 optional attributes on the dependency by simply appending it. The following
10417 examples should illustrate this:
10418
10419 @example
10420 * Preparation
10421 :PROPERTIES:
10422 :task_id: preparation
10423 :ORDERED: t
10424 :END:
10425 * Training material
10426 :PROPERTIES:
10427 :task_id: training_material
10428 :ORDERED: t
10429 :END:
10430 ** Markup Guidelines
10431 :PROPERTIES:
10432 :Effort: 2.0
10433 :END:
10434 ** Workflow Guidelines
10435 :PROPERTIES:
10436 :Effort: 2.0
10437 :END:
10438 * Presentation
10439 :PROPERTIES:
10440 :Effort: 2.0
10441 :BLOCKER: training_material @{ gapduration 1d @} preparation
10442 :END:
10443 @end example
10444
10445 @subsection Reports
10446
10447 @vindex org-export-taskjuggler-default-reports
10448 TaskJuggler can produce many kinds of reports (e.g. gantt chart, resource
10449 allocation, etc). The user defines what kind of reports should be generated
10450 for a project in the TaskJuggler file. The exporter will automatically insert
10451 some default reports in the file. These defaults are defined in
10452 @code{org-export-taskjuggler-default-reports}. They can be modified using
10453 customize along with a number of other options. For a more complete list, see
10454 @kbd{M-x customize-group @key{RET} org-export-taskjuggler @key{RET}}.
10455
10456 For more information and examples see the Org-taskjuggler tutorial at
10457 @uref{http://orgmode.org/worg/org-tutorials/org-taskjuggler.php}.
10458
10459 @node Freemind export, XOXO export, TaskJuggler export, Exporting
10460 @section Freemind export
10461 @cindex Freemind export
10462 @cindex mind map
10463
10464 The Freemind exporter was written by Lennart Borgman.
10465
10466 @table @kbd
10467 @kindex C-c C-e m
10468 @item C-c C-e m
10469 Export as Freemind mind map @file{myfile.mm}.
10470 @end table
10471
10472 @node XOXO export, iCalendar export, Freemind export, Exporting
10473 @section XOXO export
10474 @cindex XOXO export
10475
10476 Org-mode contains an exporter that produces XOXO-style output.
10477 Currently, this exporter only handles the general outline structure and
10478 does not interpret any additional Org-mode features.
10479
10480 @table @kbd
10481 @kindex C-c C-e x
10482 @item C-c C-e x
10483 Export as XOXO file @file{myfile.html}.
10484 @kindex C-c C-e v
10485 @item C-c C-e v x
10486 Export only the visible part of the document.
10487 @end table
10488
10489 @node iCalendar export, , XOXO export, Exporting
10490 @section iCalendar export
10491 @cindex iCalendar export
10492
10493 @vindex org-icalendar-include-todo
10494 @vindex org-icalendar-use-deadline
10495 @vindex org-icalendar-use-scheduled
10496 @vindex org-icalendar-categories
10497 @vindex org-icalendar-alarm-time
10498 Some people use Org-mode for keeping track of projects, but still prefer a
10499 standard calendar application for anniversaries and appointments. In this
10500 case it can be useful to show deadlines and other time-stamped items in Org
10501 files in the calendar application. Org-mode can export calendar information
10502 in the standard iCalendar format. If you also want to have TODO entries
10503 included in the export, configure the variable
10504 @code{org-icalendar-include-todo}. Plain timestamps are exported as VEVENT,
10505 and TODO items as VTODO. It will also create events from deadlines that are
10506 in non-TODO items. Deadlines and scheduling dates in TODO items will be used
10507 to set the start and due dates for the TODO entry@footnote{See the variables
10508 @code{org-icalendar-use-deadline} and @code{org-icalendar-use-scheduled}.}.
10509 As categories, it will use the tags locally defined in the heading, and the
10510 file/tree category@footnote{To add inherited tags or the TODO state,
10511 configure the variable @code{org-icalendar-categories}.}. See the variable
10512 @code{org-icalendar-alarm-time} for a way to assign alarms to entries with a
10513 time.
10514
10515 @vindex org-icalendar-store-UID
10516 @cindex property, ID
10517 The iCalendar standard requires each entry to have a globally unique
10518 identifier (UID). Org creates these identifiers during export. If you set
10519 the variable @code{org-icalendar-store-UID}, the UID will be stored in the
10520 @code{:ID:} property of the entry and re-used next time you report this
10521 entry. Since a single entry can give rise to multiple iCalendar entries (as
10522 a timestamp, a deadline, a scheduled item, and as a TODO item), Org adds
10523 prefixes to the UID, depending on what triggered the inclusion of the entry.
10524 In this way the UID remains unique, but a synchronization program can still
10525 figure out from which entry all the different instances originate.
10526
10527 @table @kbd
10528 @kindex C-c C-e i
10529 @item C-c C-e i
10530 Create iCalendar entries for the current file and store them in the same
10531 directory, using a file extension @file{.ics}.
10532 @kindex C-c C-e I
10533 @item C-c C-e I
10534 @vindex org-agenda-files
10535 Like @kbd{C-c C-e i}, but do this for all files in
10536 @code{org-agenda-files}. For each of these files, a separate iCalendar
10537 file will be written.
10538 @kindex C-c C-e c
10539 @item C-c C-e c
10540 @vindex org-combined-agenda-icalendar-file
10541 Create a single large iCalendar file from all files in
10542 @code{org-agenda-files} and write it to the file given by
10543 @code{org-combined-agenda-icalendar-file}.
10544 @end table
10545
10546 @vindex org-use-property-inheritance
10547 @vindex org-icalendar-include-body
10548 @cindex property, SUMMARY
10549 @cindex property, DESCRIPTION
10550 @cindex property, LOCATION
10551 The export will honor SUMMARY, DESCRIPTION and LOCATION@footnote{The LOCATION
10552 property can be inherited from higher in the hierarchy if you configure
10553 @code{org-use-property-inheritance} accordingly.} properties if the selected
10554 entries have them. If not, the summary will be derived from the headline,
10555 and the description from the body (limited to
10556 @code{org-icalendar-include-body} characters).
10557
10558 How this calendar is best read and updated, depends on the application
10559 you are using. The FAQ covers this issue.
10560
10561 @node Publishing, Working With Source Code, Exporting, Top
10562 @chapter Publishing
10563 @cindex publishing
10564
10565 Org includes a publishing management system that allows you to configure
10566 automatic HTML conversion of @emph{projects} composed of interlinked org
10567 files. You can also configure Org to automatically upload your exported HTML
10568 pages and related attachments, such as images and source code files, to a web
10569 server.
10570
10571 You can also use Org to convert files into PDF, or even combine HTML and PDF
10572 conversion so that files are available in both formats on the server.
10573
10574 Publishing has been contributed to Org by David O'Toole.
10575
10576 @menu
10577 * Configuration:: Defining projects
10578 * Uploading files:: How to get files up on the server
10579 * Sample configuration:: Example projects
10580 * Triggering publication:: Publication commands
10581 @end menu
10582
10583 @node Configuration, Uploading files, Publishing, Publishing
10584 @section Configuration
10585
10586 Publishing needs significant configuration to specify files, destination
10587 and many other properties of a project.
10588
10589 @menu
10590 * Project alist:: The central configuration variable
10591 * Sources and destinations:: From here to there
10592 * Selecting files:: What files are part of the project?
10593 * Publishing action:: Setting the function doing the publishing
10594 * Publishing options:: Tweaking HTML export
10595 * Publishing links:: Which links keep working after publishing?
10596 * Sitemap:: Generating a list of all pages
10597 * Generating an index:: An index that reaches across pages
10598 @end menu
10599
10600 @node Project alist, Sources and destinations, Configuration, Configuration
10601 @subsection The variable @code{org-publish-project-alist}
10602 @cindex org-publish-project-alist
10603 @cindex projects, for publishing
10604
10605 @vindex org-publish-project-alist
10606 Publishing is configured almost entirely through setting the value of one
10607 variable, called @code{org-publish-project-alist}. Each element of the list
10608 configures one project, and may be in one of the two following forms:
10609
10610 @lisp
10611 ("project-name" :property value :property value ...)
10612 @r{i.e. a well-formed property list with alternating keys and values}
10613 @r{or}
10614 ("project-name" :components ("project-name" "project-name" ...))
10615
10616 @end lisp
10617
10618 In both cases, projects are configured by specifying property values. A
10619 project defines the set of files that will be published, as well as the
10620 publishing configuration to use when publishing those files. When a project
10621 takes the second form listed above, the individual members of the
10622 @code{:components} property are taken to be sub-projects, which group
10623 together files requiring different publishing options. When you publish such
10624 a ``meta-project'', all the components will also be published, in the
10625 sequence given.
10626
10627 @node Sources and destinations, Selecting files, Project alist, Configuration
10628 @subsection Sources and destinations for files
10629 @cindex directories, for publishing
10630
10631 Most properties are optional, but some should always be set. In
10632 particular, Org needs to know where to look for source files,
10633 and where to put published files.
10634
10635 @multitable @columnfractions 0.3 0.7
10636 @item @code{:base-directory}
10637 @tab Directory containing publishing source files
10638 @item @code{:publishing-directory}
10639 @tab Directory where output files will be published. You can directly
10640 publish to a webserver using a file name syntax appropriate for
10641 the Emacs @file{tramp} package. Or you can publish to a local directory and
10642 use external tools to upload your website (@pxref{Uploading files}).
10643 @item @code{:preparation-function}
10644 @tab Function or list of functions to be called before starting the
10645 publishing process, for example, to run @code{make} for updating files to be
10646 published. The project property list is scoped into this call as the
10647 variable @code{project-plist}.
10648 @item @code{:completion-function}
10649 @tab Function or list of functions called after finishing the publishing
10650 process, for example, to change permissions of the resulting files. The
10651 project property list is scoped into this call as the variable
10652 @code{project-plist}.
10653 @end multitable
10654 @noindent
10655
10656 @node Selecting files, Publishing action, Sources and destinations, Configuration
10657 @subsection Selecting files
10658 @cindex files, selecting for publishing
10659
10660 By default, all files with extension @file{.org} in the base directory
10661 are considered part of the project. This can be modified by setting the
10662 properties
10663 @multitable @columnfractions 0.25 0.75
10664 @item @code{:base-extension}
10665 @tab Extension (without the dot!) of source files. This actually is a
10666 regular expression. Set this to the symbol @code{any} if you want to get all
10667 files in @code{:base-directory}, even without extension.
10668
10669 @item @code{:exclude}
10670 @tab Regular expression to match file names that should not be
10671 published, even though they have been selected on the basis of their
10672 extension.
10673
10674 @item @code{:include}
10675 @tab List of files to be included regardless of @code{:base-extension}
10676 and @code{:exclude}.
10677 @end multitable
10678
10679 @node Publishing action, Publishing options, Selecting files, Configuration
10680 @subsection Publishing action
10681 @cindex action, for publishing
10682
10683 Publishing means that a file is copied to the destination directory and
10684 possibly transformed in the process. The default transformation is to export
10685 Org files as HTML files, and this is done by the function
10686 @code{org-publish-org-to-html} which calls the HTML exporter (@pxref{HTML
10687 export}). But you also can publish your content as PDF files using
10688 @code{org-publish-org-to-pdf}, or as @code{ascii}, @code{latin1} or
10689 @code{utf8} encoded files using the corresponding functions. If you want to
10690 publish the Org file itself, but with @i{archived}, @i{commented}, and
10691 @i{tag-excluded} trees removed, use @code{org-publish-org-to-org} and set the
10692 parameters @code{:plain-source} and/or @code{:htmlized-source}. This will
10693 produce @file{file.org} and @file{file.org.html} in the publishing
10694 directory@footnote{@file{file-source.org} and @file{file-source.org.html} if
10695 source and publishing directories are equal. Note that with this kind of
10696 setup, you need to add @code{:exclude "-source\\.org"} to the project
10697 definition in @code{org-publish-project-alist} to avoid that the published
10698 source files will be considered as new org files the next time the project is
10699 published.}. Other files like images only need to be copied to the
10700 publishing destination, for this you may use @code{org-publish-attachment}.
10701 For non-Org files, you always need to specify the publishing function:
10702
10703 @multitable @columnfractions 0.3 0.7
10704 @item @code{:publishing-function}
10705 @tab Function executing the publication of a file. This may also be a
10706 list of functions, which will all be called in turn.
10707 @item @code{:plain-source}
10708 @tab Non-nil means, publish plain source.
10709 @item @code{:htmlized-source}
10710 @tab Non-nil means, publish htmlized source.
10711 @end multitable
10712
10713 The function must accept three arguments: a property list containing at least
10714 a @code{:publishing-directory} property, the name of the file to be
10715 published, and the path to the publishing directory of the output file. It
10716 should take the specified file, make the necessary transformation (if any)
10717 and place the result into the destination folder.
10718
10719 @node Publishing options, Publishing links, Publishing action, Configuration
10720 @subsection Options for the HTML/La@TeX{} exporters
10721 @cindex options, for publishing
10722
10723 The property list can be used to set many export options for the HTML
10724 and La@TeX{} exporters. In most cases, these properties correspond to user
10725 variables in Org. The table below lists these properties along
10726 with the variable they belong to. See the documentation string for the
10727 respective variable for details.
10728
10729 @vindex org-export-html-link-up
10730 @vindex org-export-html-link-home
10731 @vindex org-export-default-language
10732 @vindex org-display-custom-times
10733 @vindex org-export-headline-levels
10734 @vindex org-export-with-section-numbers
10735 @vindex org-export-section-number-format
10736 @vindex org-export-with-toc
10737 @vindex org-export-preserve-breaks
10738 @vindex org-export-with-archived-trees
10739 @vindex org-export-with-emphasize
10740 @vindex org-export-with-sub-superscripts
10741 @vindex org-export-with-special-strings
10742 @vindex org-export-with-footnotes
10743 @vindex org-export-with-drawers
10744 @vindex org-export-with-tags
10745 @vindex org-export-with-todo-keywords
10746 @vindex org-export-with-priority
10747 @vindex org-export-with-TeX-macros
10748 @vindex org-export-with-LaTeX-fragments
10749 @vindex org-export-skip-text-before-1st-heading
10750 @vindex org-export-with-fixed-width
10751 @vindex org-export-with-timestamps
10752 @vindex org-export-author-info
10753 @vindex org-export-email
10754 @vindex org-export-creator-info
10755 @vindex org-export-with-tables
10756 @vindex org-export-highlight-first-table-line
10757 @vindex org-export-html-style-include-default
10758 @vindex org-export-html-style
10759 @vindex org-export-html-style-extra
10760 @vindex org-export-html-link-org-files-as-html
10761 @vindex org-export-html-inline-images
10762 @vindex org-export-html-extension
10763 @vindex org-export-html-table-tag
10764 @vindex org-export-html-expand
10765 @vindex org-export-html-with-timestamp
10766 @vindex org-export-publishing-directory
10767 @vindex org-export-html-preamble
10768 @vindex org-export-html-postamble
10769 @vindex org-export-html-auto-preamble
10770 @vindex org-export-html-auto-postamble
10771 @vindex user-full-name
10772 @vindex user-mail-address
10773 @vindex org-export-select-tags
10774 @vindex org-export-exclude-tags
10775
10776 @multitable @columnfractions 0.32 0.68
10777 @item @code{:link-up} @tab @code{org-export-html-link-up}
10778 @item @code{:link-home} @tab @code{org-export-html-link-home}
10779 @item @code{:language} @tab @code{org-export-default-language}
10780 @item @code{:customtime} @tab @code{org-display-custom-times}
10781 @item @code{:headline-levels} @tab @code{org-export-headline-levels}
10782 @item @code{:section-numbers} @tab @code{org-export-with-section-numbers}
10783 @item @code{:section-number-format} @tab @code{org-export-section-number-format}
10784 @item @code{:table-of-contents} @tab @code{org-export-with-toc}
10785 @item @code{:preserve-breaks} @tab @code{org-export-preserve-breaks}
10786 @item @code{:archived-trees} @tab @code{org-export-with-archived-trees}
10787 @item @code{:emphasize} @tab @code{org-export-with-emphasize}
10788 @item @code{:sub-superscript} @tab @code{org-export-with-sub-superscripts}
10789 @item @code{:special-strings} @tab @code{org-export-with-special-strings}
10790 @item @code{:footnotes} @tab @code{org-export-with-footnotes}
10791 @item @code{:drawers} @tab @code{org-export-with-drawers}
10792 @item @code{:tags} @tab @code{org-export-with-tags}
10793 @item @code{:todo-keywords} @tab @code{org-export-with-todo-keywords}
10794 @item @code{:priority} @tab @code{org-export-with-priority}
10795 @item @code{:TeX-macros} @tab @code{org-export-with-TeX-macros}
10796 @item @code{:LaTeX-fragments} @tab @code{org-export-with-LaTeX-fragments}
10797 @item @code{:latex-listings} @tab @code{org-export-latex-listings}
10798 @item @code{:skip-before-1st-heading} @tab @code{org-export-skip-text-before-1st-heading}
10799 @item @code{:fixed-width} @tab @code{org-export-with-fixed-width}
10800 @item @code{:timestamps} @tab @code{org-export-with-timestamps}
10801 @item @code{:author-info} @tab @code{org-export-author-info}
10802 @item @code{:email-info} @tab @code{org-export-email-info}
10803 @item @code{:creator-info} @tab @code{org-export-creator-info}
10804 @item @code{:tables} @tab @code{org-export-with-tables}
10805 @item @code{:table-auto-headline} @tab @code{org-export-highlight-first-table-line}
10806 @item @code{:style-include-default} @tab @code{org-export-html-style-include-default}
10807 @item @code{:style} @tab @code{org-export-html-style}
10808 @item @code{:style-extra} @tab @code{org-export-html-style-extra}
10809 @item @code{:convert-org-links} @tab @code{org-export-html-link-org-files-as-html}
10810 @item @code{:inline-images} @tab @code{org-export-html-inline-images}
10811 @item @code{:html-extension} @tab @code{org-export-html-extension}
10812 @item @code{:xml-declaration} @tab @code{org-export-html-xml-declaration}
10813 @item @code{:html-table-tag} @tab @code{org-export-html-table-tag}
10814 @item @code{:expand-quoted-html} @tab @code{org-export-html-expand}
10815 @item @code{:timestamp} @tab @code{org-export-html-with-timestamp}
10816 @item @code{:publishing-directory} @tab @code{org-export-publishing-directory}
10817 @item @code{:preamble} @tab @code{org-export-html-preamble}
10818 @item @code{:postamble} @tab @code{org-export-html-postamble}
10819 @item @code{:auto-preamble} @tab @code{org-export-html-auto-preamble}
10820 @item @code{:auto-postamble} @tab @code{org-export-html-auto-postamble}
10821 @item @code{:author} @tab @code{user-full-name}
10822 @item @code{:email} @tab @code{user-mail-address} : @code{addr;addr;..}
10823 @item @code{:select-tags} @tab @code{org-export-select-tags}
10824 @item @code{:exclude-tags} @tab @code{org-export-exclude-tags}
10825 @item @code{:latex-image-options} @tab @code{org-export-latex-image-default-option}
10826 @end multitable
10827
10828 Most of the @code{org-export-with-*} variables have the same effect in
10829 both HTML and La@TeX{} exporters, except for @code{:TeX-macros} and
10830 @code{:LaTeX-fragments}, respectively @code{nil} and @code{t} in the
10831 La@TeX{} export.
10832
10833 @vindex org-publish-project-alist
10834 When a property is given a value in @code{org-publish-project-alist},
10835 its setting overrides the value of the corresponding user variable (if
10836 any) during publishing. Options set within a file (@pxref{Export
10837 options}), however, override everything.
10838
10839 @node Publishing links, Sitemap, Publishing options, Configuration
10840 @subsection Links between published files
10841 @cindex links, publishing
10842
10843 To create a link from one Org file to another, you would use
10844 something like @samp{[[file:foo.org][The foo]]} or simply
10845 @samp{file:foo.org.} (@pxref{Hyperlinks}). When published, this link
10846 becomes a link to @file{foo.html}. In this way, you can interlink the
10847 pages of your "org web" project and the links will work as expected when
10848 you publish them to HTML. If you also publish the Org source file and want
10849 to link to that, use an @code{http:} link instead of a @code{file:} link,
10850 because @code{file:} links are converted to link to the corresponding
10851 @file{html} file.
10852
10853 You may also link to related files, such as images. Provided you are careful
10854 with relative file names, and provided you have also configured Org to upload
10855 the related files, these links will work too. See @ref{Complex example}, for
10856 an example of this usage.
10857
10858 Sometimes an Org file to be published may contain links that are
10859 only valid in your production environment, but not in the publishing
10860 location. In this case, use the property
10861
10862 @multitable @columnfractions 0.4 0.6
10863 @item @code{:link-validation-function}
10864 @tab Function to validate links
10865 @end multitable
10866
10867 @noindent
10868 to define a function for checking link validity. This function must
10869 accept two arguments, the file name and a directory relative to which
10870 the file name is interpreted in the production environment. If this
10871 function returns @code{nil}, then the HTML generator will only insert a
10872 description into the HTML file, but no link. One option for this
10873 function is @code{org-publish-validate-link} which checks if the given
10874 file is part of any project in @code{org-publish-project-alist}.
10875
10876 @node Sitemap, Generating an index, Publishing links, Configuration
10877 @subsection Generating a sitemap
10878 @cindex sitemap, of published pages
10879
10880 The following properties may be used to control publishing of
10881 a map of files for a given project.
10882
10883 @multitable @columnfractions 0.35 0.65
10884 @item @code{:auto-sitemap}
10885 @tab When non-nil, publish a sitemap during @code{org-publish-current-project}
10886 or @code{org-publish-all}.
10887
10888 @item @code{:sitemap-filename}
10889 @tab Filename for output of sitemap. Defaults to @file{sitemap.org} (which
10890 becomes @file{sitemap.html}).
10891
10892 @item @code{:sitemap-title}
10893 @tab Title of sitemap page. Defaults to name of file.
10894
10895 @item @code{:sitemap-function}
10896 @tab Plug-in function to use for generation of the sitemap.
10897 Defaults to @code{org-publish-org-sitemap}, which generates a plain list
10898 of links to all files in the project.
10899
10900 @item @code{:sitemap-sort-folders}
10901 @tab Where folders should appear in the sitemap. Set this to @code{first}
10902 (default) or @code{last} to display folders first or last,
10903 respectively. Any other value will mix files and folders.
10904
10905 @item @code{:sitemap-alphabetically}
10906 @tab The site map is normally sorted alphabetically. Set this explicitly to
10907 @code{nil} to turn off sorting.
10908
10909 @item @code{:sitemap-ignore-case}
10910 @tab Should sorting be case-sensitive? Default @code{nil}.
10911
10912 @end multitable
10913
10914 @node Generating an index, , Sitemap, Configuration
10915 @subsection Generating an index
10916 @cindex index, in a publishing project
10917
10918 Org-mode can generate an index across the files of a publishing project.
10919
10920 @multitable @columnfractions 0.25 0.75
10921 @item @code{:makeindex}
10922 @tab When non-nil, generate in index in the file @file{theindex.org} and
10923 publish it as @file{theindex.html}.
10924 @end multitable
10925
10926 The file will be create when first publishing a project with the
10927 @code{:makeindex} set. The file only contains a statement @code{#+include:
10928 "theindex.inc"}. You can then built around this include statement by adding
10929 a title, style information etc.
10930
10931 @node Uploading files, Sample configuration, Configuration, Publishing
10932 @section Uploading files
10933 @cindex rsync
10934 @cindex unison
10935
10936 For those people already utilizing third party sync tools such as
10937 @command{rsync} or @command{unison}, it might be preferable not to use the built in
10938 @i{remote} publishing facilities of Org-mode which rely heavily on
10939 Tramp. Tramp, while very useful and powerful, tends not to be
10940 so efficient for multiple file transfer and has been known to cause problems
10941 under heavy usage.
10942
10943 Specialized synchronization utilities offer several advantages. In addition
10944 to timestamp comparison, they also do content and permissions/attribute
10945 checks. For this reason you might prefer to publish your web to a local
10946 directory (possibly even @i{in place} with your Org files) and then use
10947 @file{unison} or @file{rsync} to do the synchronization with the remote host.
10948
10949 Since Unison (for example) can be configured as to which files to transfer to
10950 a certain remote destination, it can greatly simplify the project publishing
10951 definition. Simply keep all files in the correct location, process your Org
10952 files with @code{org-publish} and let the synchronization tool do the rest.
10953 You do not need, in this scenario, to include attachments such as @file{jpg},
10954 @file{css} or @file{gif} files in the project definition since the 3rd party
10955 tool syncs them.
10956
10957 Publishing to a local directory is also much faster than to a remote one, so
10958 that you can afford more easily to republish entire projects. If you set
10959 @code{org-publish-use-timestamps-flag} to @code{nil}, you gain the main
10960 benefit of re-including any changed external files such as source example
10961 files you might include with @code{#+INCLUDE}. The timestamp mechanism in
10962 Org is not smart enough to detect if included files have been modified.
10963
10964 @node Sample configuration, Triggering publication, Uploading files, Publishing
10965 @section Sample configuration
10966
10967 Below we provide two example configurations. The first one is a simple
10968 project publishing only a set of Org files. The second example is
10969 more complex, with a multi-component project.
10970
10971 @menu
10972 * Simple example:: One-component publishing
10973 * Complex example:: A multi-component publishing example
10974 @end menu
10975
10976 @node Simple example, Complex example, Sample configuration, Sample configuration
10977 @subsection Example: simple publishing configuration
10978
10979 This example publishes a set of Org files to the @file{public_html}
10980 directory on the local machine.
10981
10982 @lisp
10983 (setq org-publish-project-alist
10984 '(("org"
10985 :base-directory "~/org/"
10986 :publishing-directory "~/public_html"
10987 :section-numbers nil
10988 :table-of-contents nil
10989 :style "<link rel=\"stylesheet\"
10990 href=\"../other/mystyle.css\"
10991 type=\"text/css\"/>")))
10992 @end lisp
10993
10994 @node Complex example, , Simple example, Sample configuration
10995 @subsection Example: complex publishing configuration
10996
10997 This more complicated example publishes an entire website, including
10998 Org files converted to HTML, image files, Emacs Lisp source code, and
10999 style sheets. The publishing directory is remote and private files are
11000 excluded.
11001
11002 To ensure that links are preserved, care should be taken to replicate
11003 your directory structure on the web server, and to use relative file
11004 paths. For example, if your Org files are kept in @file{~/org} and your
11005 publishable images in @file{~/images}, you would link to an image with
11006 @c
11007 @example
11008 file:../images/myimage.png
11009 @end example
11010 @c
11011 On the web server, the relative path to the image should be the
11012 same. You can accomplish this by setting up an "images" folder in the
11013 right place on the web server, and publishing images to it.
11014
11015 @lisp
11016 (setq org-publish-project-alist
11017 '(("orgfiles"
11018 :base-directory "~/org/"
11019 :base-extension "org"
11020 :publishing-directory "/ssh:user@@host:~/html/notebook/"
11021 :publishing-function org-publish-org-to-html
11022 :exclude "PrivatePage.org" ;; regexp
11023 :headline-levels 3
11024 :section-numbers nil
11025 :table-of-contents nil
11026 :style "<link rel=\"stylesheet\"
11027 href=\"../other/mystyle.css\" type=\"text/css\"/>"
11028 :auto-preamble t
11029 :auto-postamble nil)
11030
11031 ("images"
11032 :base-directory "~/images/"
11033 :base-extension "jpg\\|gif\\|png"
11034 :publishing-directory "/ssh:user@@host:~/html/images/"
11035 :publishing-function org-publish-attachment)
11036
11037 ("other"
11038 :base-directory "~/other/"
11039 :base-extension "css\\|el"
11040 :publishing-directory "/ssh:user@@host:~/html/other/"
11041 :publishing-function org-publish-attachment)
11042 ("website" :components ("orgfiles" "images" "other"))))
11043 @end lisp
11044
11045 @node Triggering publication, , Sample configuration, Publishing
11046 @section Triggering publication
11047
11048 Once properly configured, Org can publish with the following commands:
11049
11050 @table @kbd
11051 @kindex C-c C-e C
11052 @item C-c C-e C
11053 Prompt for a specific project and publish all files that belong to it.
11054 @kindex C-c C-e P
11055 @item C-c C-e P
11056 Publish the project containing the current file.
11057 @kindex C-c C-e F
11058 @item C-c C-e F
11059 Publish only the current file.
11060 @kindex C-c C-e E
11061 @item C-c C-e E
11062 Publish every project.
11063 @end table
11064
11065 @vindex org-publish-use-timestamps-flag
11066 Org uses timestamps to track when a file has changed. The above functions
11067 normally only publish changed files. You can override this and force
11068 publishing of all files by giving a prefix argument to any of the commands
11069 above, or by customizing the variable @code{org-publish-use-timestamps-flag}.
11070 This may be necessary in particular if files include other files via
11071 @code{#+SETUPFILE:} or @code{#+INCLUDE:}.
11072
11073 @comment node-name, next, previous, up
11074 @comment Working With Source Code, Miscellaneous, Publishing, Top
11075
11076 @node Working With Source Code, Miscellaneous, Publishing, Top
11077 @chapter Working with source code
11078 @cindex Schulte, Eric
11079 @cindex Davison, Dan
11080 @cindex source code, working with
11081
11082 Source code can be included in Org-mode documents using a @samp{src} block,
11083 e.g.
11084
11085 @example
11086 #+BEGIN_SRC emacs-lisp
11087 (defun org-xor (a b)
11088 "Exclusive or."
11089 (if a (not b) b))
11090 #+END_SRC
11091 @end example
11092
11093 Org-mode provides a number of features for working with live source code,
11094 including editing of code blocks in their native major-mode, evaluation of
11095 code blocks, tangling of code blocks, and exporting code blocks and their
11096 results in several formats. This functionality was contributed by Eric
11097 Schulte and Dan Davison, and was originally named Org-babel.
11098
11099 The following sections describe Org-mode's code block handling facilities.
11100
11101 @menu
11102 * Structure of code blocks:: Code block syntax described
11103 * Editing source code:: Language major-mode editing
11104 * Exporting code blocks:: Export contents and/or results
11105 * Extracting source code:: Create pure source code files
11106 * Evaluating code blocks:: Place results of evaluation in the Org-mode buffer
11107 * Library of Babel:: Use and contribute to a library of useful code blocks
11108 * Languages:: List of supported code block languages
11109 * Header arguments:: Configure code block functionality
11110 * Results of evaluation:: How evaluation results are handled
11111 * Noweb reference syntax:: Literate programming in Org-mode
11112 * Key bindings and useful functions:: Work quickly with code blocks
11113 * Batch execution:: Call functions from the command line
11114 @end menu
11115
11116 @comment node-name, next, previous, up
11117 @comment Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
11118
11119 @node Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
11120 @section Structure of code blocks
11121 @cindex code block, structure
11122 @cindex source code, block structure
11123
11124 The structure of code blocks is as follows:
11125
11126 @example
11127 #+srcname: <name>
11128 #+begin_src <language> <switches> <header arguments>
11129 <body>
11130 #+end_src
11131 @end example
11132
11133 code blocks can also be embedded in text as so called inline code blocks as
11134
11135 @example
11136 src_<language>@{<body>@}
11137 @end example
11138
11139 or
11140
11141 @example
11142 src_<language>[<header arguments>]@{<body>@}
11143 @end example
11144
11145 @table @code
11146 @item <name>
11147 This name is associated with the code block. This is similar to the
11148 @samp{#+tblname} lines that can be used to name tables in Org-mode files.
11149 Referencing the name of a code block makes it possible to evaluate the
11150 block from other places in the file, other files, or from Org-mode table
11151 formulas (see @ref{The spreadsheet}).
11152 @item <language>
11153 The language of the code in the block.
11154 @item <switches>
11155 Switches controlling exportation of the code block (see switches discussion in
11156 @ref{Literal examples})
11157 @item <header arguments>
11158 Optional header arguments control many aspects of evaluation, export and
11159 tangling of code blocks. See the @ref{Header arguments}
11160 section. Header arguments can also be set on a per-buffer or per-subtree
11161 basis using properties.
11162 @item <body>
11163 The source code.
11164 @end table
11165
11166 @comment node-name, next, previous, up
11167 @comment Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
11168
11169 @node Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
11170 @section Editing source code
11171 @cindex code block, editing
11172 @cindex source code, editing
11173
11174 @kindex C-c '
11175 Use @kbd{C-c '} to edit the current code block. This brings up
11176 a language major-mode edit buffer containing the body of the code
11177 block. Saving this buffer will write the new contents back to the Org
11178 buffer. Use @kbd{C-c '} again to exit.
11179
11180 The @code{org-src-mode} minor mode will be active in the edit buffer. The
11181 following variables can be used to configure the behavior of the edit
11182 buffer. See also the customization group @code{org-edit-structure} for
11183 further configuration options.
11184
11185 @table @code
11186 @item org-src-lang-modes
11187 If an Emacs major-mode named @code{<lang>-mode} exists, where
11188 @code{<lang>} is the language named in the header line of the code block,
11189 then the edit buffer will be placed in that major-mode. This variable
11190 can be used to map arbitrary language names to existing major modes.
11191 @item org-src-window-setup
11192 Controls the way Emacs windows are rearranged when the edit buffer is created.
11193 @item org-src-preserve-indentation
11194 This variable is especially useful for tangling languages such as
11195 python, in which whitespace indentation in the output is critical.
11196 @item org-src-ask-before-returning-to-edit-buffer
11197 By default, Org will ask before returning to an open edit buffer. Set
11198 this variable to nil to switch without asking.
11199 @end table
11200
11201 @comment node-name, next, previous, up
11202 @comment Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
11203
11204 @node Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
11205 @section Exporting code blocks
11206 @cindex code block, exporting
11207 @cindex source code, exporting
11208
11209 It is possible to export the @emph{contents} of code blocks, the
11210 @emph{results} of code block evaluation, @emph{neither}, or @emph{both}. For
11211 most languages, the default exports the contents of code blocks. However, for
11212 some languages (e.g. @code{ditaa}) the default exports the results of code
11213 block evaluation. For information on exporting code block bodies, see
11214 @ref{Literal examples}.
11215
11216 The @code{:exports} header argument can be used to specify export
11217 behavior:
11218
11219 @subsubheading Header arguments:
11220 @table @code
11221 @item :exports code
11222 The default in most languages. The body of the code block is exported, as
11223 described in @ref{Literal examples}.
11224 @item :exports results
11225 The code block will be evaluated and the results will be placed in the
11226 Org-mode buffer for export, either updating previous results of the code
11227 block located anywhere in the buffer or, if no previous results exist,
11228 placing the results immediately after the code block. The body of the code
11229 block will not be exported.
11230 @item :exports both
11231 Both the code block and its results will be exported.
11232 @item :exports none
11233 Neither the code block nor its results will be exported.
11234 @end table
11235
11236 It is possible to inhibit the evaluation of code blocks during export.
11237 Setting the the @code{org-export-babel-evaluate} variable to @code{nil} will
11238 ensure that no code blocks are evaluated as part of the export process. This
11239 can be useful in situations where potentially untrusted Org-mode files are
11240 exported in an automated fashion, for example when Org-mode is used as the
11241 markup language for a wiki.
11242
11243 @comment node-name, next, previous, up
11244 @comment Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
11245 @node Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
11246 @section Extracting source code
11247 @cindex source code, extracting
11248 @cindex code block, extracting source code
11249
11250 Creating pure source code files by extracting code from source blocks is
11251 referred to as ``tangling''---a term adopted from the literate programming
11252 community. During ``tangling'' of code blocks their bodies are expanded
11253 using @code{org-babel-expand-src-block} which can expand both variable and
11254 ``noweb'' style references (see @ref{Noweb reference syntax}).
11255
11256 @subsubheading Header arguments
11257 @table @code
11258 @item :tangle no
11259 The default. The code block is not included in the tangled output.
11260 @item :tangle yes
11261 Include the code block in the tangled output. The output file name is the
11262 name of the org file with the extension @samp{.org} replaced by the extension
11263 for the block language.
11264 @item :tangle filename
11265 Include the code block in the tangled output to file @samp{filename}.
11266 @end table
11267
11268 @kindex C-c C-v t
11269 @subsubheading Functions
11270 @table @code
11271 @item org-babel-tangle
11272 Tangle the current file. Bound to @kbd{C-c C-v t}.
11273 @item org-babel-tangle-file
11274 Choose a file to tangle. Bound to @kbd{C-c C-v f}.
11275 @end table
11276
11277 @subsubheading Hooks
11278 @table @code
11279 @item org-babel-post-tangle-hook
11280 This hook is run from within code files tangled by @code{org-babel-tangle}.
11281 Example applications could include post-processing, compilation or evaluation
11282 of tangled code files.
11283 @end table
11284
11285 @node Evaluating code blocks, Library of Babel, Extracting source code, Working With Source Code
11286 @section Evaluating code blocks
11287 @cindex code block, evaluating
11288 @cindex source code, evaluating
11289
11290 Code blocks can be evaluated@footnote{Whenever code is evaluated there is a
11291 potential for that code to do harm. Org-mode provides a number of safeguards
11292 to ensure that it only evaluates code with explicit confirmation from the
11293 user. For information on these safeguards (and on how to disable them) see
11294 @ref{Code evaluation security}.} and the results placed in the Org-mode
11295 buffer. By default, evaluation is only turned on for @code{emacs-lisp} code
11296 blocks, however support exists for evaluating blocks in many languages. See
11297 @ref{Languages} for a list of supported languages. See @ref{Structure of
11298 code blocks} for information on the syntax used to define a code block.
11299
11300 @kindex C-c C-c
11301 There are a number of ways to evaluate code blocks. The simplest is to press
11302 @kbd{C-c C-c} or @kbd{C-c C-v e} with the point on a code block@footnote{The
11303 @code{org-babel-no-eval-on-ctrl-c-ctrl-c} variable can be used to remove code
11304 evaluation from the @kbd{C-c C-c} key binding.}. This will call the
11305 @code{org-babel-execute-src-block} function to evaluate the block and insert
11306 its results into the Org-mode buffer.
11307
11308 It is also possible to evaluate named code blocks from anywhere in an
11309 Org-mode buffer or an Org-mode table. @code{#+call} (or synonymously
11310 @code{#+function} or @code{#+lob}) lines can be used to remotely execute code
11311 blocks located in the current Org-mode buffer or in the ``Library of Babel''
11312 (see @ref{Library of Babel}). These lines use the following syntax.
11313
11314 @example
11315 #+call: <name>(<arguments>) <header arguments>
11316 #+function: <name>(<arguments>) <header arguments>
11317 #+lob: <name>(<arguments>) <header arguments>
11318 @end example
11319
11320 @table @code
11321 @item <name>
11322 The name of the code block to be evaluated.
11323 @item <arguments>
11324 Arguments specified in this section will be passed to the code block.
11325 @item <header arguments>
11326 Header arguments can be placed after the function invocation. See
11327 @ref{Header arguments} for more information on header arguments.
11328 @end table
11329
11330
11331 @node Library of Babel, Languages, Evaluating code blocks, Working With Source Code
11332 @section Library of Babel
11333 @cindex babel, library of
11334 @cindex source code, library
11335 @cindex code block, library
11336
11337 The ``Library of Babel'' is a library of code blocks
11338 that can be called from any Org-mode file. The library is housed in an
11339 Org-mode file located in the @samp{contrib} directory of Org-mode.
11340 Org-mode users can deposit functions they believe to be generally
11341 useful in the library.
11342
11343 Code blocks defined in the ``Library of Babel'' can be called remotely as if
11344 they were in the current Org-mode buffer (see @ref{Evaluating code blocks}
11345 for information on the syntax of remote code block evaluation).
11346
11347 @kindex C-c C-v i
11348 Code blocks located in any Org-mode file can be loaded into the ``Library of
11349 Babel'' with the @code{org-babel-lob-ingest} function, bound to @kbd{C-c C-v
11350 i}.
11351
11352 @node Languages, Header arguments, Library of Babel, Working With Source Code
11353 @section Languages
11354 @cindex babel, languages
11355 @cindex source code, languages
11356 @cindex code block, languages
11357
11358 Code blocks in the following languages are supported.
11359
11360 @multitable @columnfractions 0.28 0.3 0.22 0.2
11361 @item @b{Language} @tab @b{Identifier} @tab @b{Language} @tab @b{Identifier}
11362 @item Asymptote @tab asymptote @tab C @tab C
11363 @item C++ @tab C++ @tab Clojure @tab clojure
11364 @item css @tab css @tab ditaa @tab ditaa
11365 @item Graphviz @tab dot @tab Emacs Lisp @tab emacs-lisp
11366 @item gnuplot @tab gnuplot @tab Haskell @tab haskell
11367 @item LaTeX @tab latex @tab Matlab @tab matlab
11368 @item Mscgen @tab mscgen @tab Objective Caml @tab ocaml
11369 @item Octave @tab octave @tab OZ @tab oz
11370 @item Perl @tab perl @tab Python @tab python
11371 @item R @tab R @tab Ruby @tab ruby
11372 @item Sass @tab sass @tab GNU Screen @tab screen
11373 @item shell @tab sh @tab SQL @tab sql
11374 @item Sqlite @tab sqlite
11375 @end multitable
11376
11377 Language-specific documentation is available for some languages. If
11378 available, it can be found at
11379 @uref{http://orgmode.org/worg/org-contrib/babel/languages}.
11380
11381 The @code{org-babel-load-languages} controls which languages are enabled for
11382 evaluation (by default only @code{emacs-lisp} is enabled). This variable can
11383 be set using the customization interface or by adding code like the following
11384 to your emacs configuration.
11385
11386 @quotation
11387 The following disables @code{emacs-lisp} evaluation and enables evaluation of
11388 @code{R} code blocks.
11389 @end quotation
11390
11391 @lisp
11392 (org-babel-do-load-languages
11393 'org-babel-load-languages
11394 '((emacs-lisp . nil)
11395 (R . t)))
11396 @end lisp
11397
11398 It is also possible to enable support for a language by loading the related
11399 elisp file with @code{require}.
11400
11401 @quotation
11402 The following adds support for evaluating @code{clojure} code blocks.
11403 @end quotation
11404
11405 @lisp
11406 (require 'ob-clojure)
11407 @end lisp
11408
11409 @node Header arguments, Results of evaluation, Languages, Working With Source Code
11410 @section Header arguments
11411 @cindex code block, header arguments
11412 @cindex source code, block header arguments
11413
11414 Code block functionality can be configured with header arguments. This
11415 section provides an overview of the use of header arguments, and then
11416 describes each header argument in detail.
11417
11418 @menu
11419 * Using header arguments:: Different ways to set header arguments
11420 * Specific header arguments:: List of header arguments
11421 @end menu
11422
11423 @node Using header arguments, Specific header arguments, Header arguments, Header arguments
11424 @subsection Using header arguments
11425
11426 The values of header arguments can be set in six different ways, each more
11427 specific (and having higher priority) than the last.
11428 @menu
11429 * System-wide header arguments:: Set global default values
11430 * Language-specific header arguments:: Set default values by language
11431 * Buffer-wide header arguments:: Set default values for a specific buffer
11432 * Header arguments in Org-mode properties:: Set default values for a buffer or heading
11433 * Code block specific header arguments:: The most common way to set values
11434 * Header arguments in function calls:: The most specific level
11435 @end menu
11436
11437
11438 @node System-wide header arguments, Language-specific header arguments, Using header arguments, Using header arguments
11439 @subsubheading System-wide header arguments
11440 @vindex org-babel-default-header-args
11441 System-wide values of header arguments can be specified by customizing the
11442 @code{org-babel-default-header-args} variable:
11443
11444 @example
11445 :session => "none"
11446 :results => "replace"
11447 :exports => "code"
11448 :cache => "no"
11449 :noweb => "no"
11450 @end example
11451
11452 @c @example
11453 @c org-babel-default-header-args is a variable defined in `org-babel.el'.
11454 @c Its value is
11455 @c ((:session . "none")
11456 @c (:results . "replace")
11457 @c (:exports . "code")
11458 @c (:cache . "no")
11459 @c (:noweb . "no"))
11460
11461
11462 @c Documentation:
11463 @c Default arguments to use when evaluating a code block.
11464 @c @end example
11465
11466 For example, the following example could be used to set the default value of
11467 @code{:noweb} header arguments to @code{yes}. This would have the effect of
11468 expanding @code{:noweb} references by default when evaluating source code
11469 blocks.
11470
11471 @lisp
11472 (setq org-babel-default-header-args
11473 (cons '(:noweb . "yes")
11474 (assq-delete-all :noweb org-babel-default-header-args)))
11475 @end lisp
11476
11477 @node Language-specific header arguments, Buffer-wide header arguments, System-wide header arguments, Using header arguments
11478 @subsubheading Language-specific header arguments
11479 Each language can define its own set of default header arguments. See the
11480 language-specific documentation available online at
11481 @uref{http://orgmode.org/worg/org-contrib/babel}.
11482
11483 @node Buffer-wide header arguments, Header arguments in Org-mode properties, Language-specific header arguments, Using header arguments
11484 @subsubheading Buffer-wide header arguments
11485 Buffer-wide header arguments may be specified through the use of a special
11486 line placed anywhere in an Org-mode file. The line consists of the
11487 @code{#+BABEL:} keyword followed by a series of header arguments which may be
11488 specified using the standard header argument syntax.
11489
11490 For example the following would set @code{session} to @code{*R*}, and
11491 @code{results} to @code{silent} for every code block in the buffer, ensuring
11492 that all execution took place in the same session, and no results would be
11493 inserted into the buffer.
11494
11495 @example
11496 #+BABEL: :session *R* :results silent
11497 @end example
11498
11499 @node Header arguments in Org-mode properties, Code block specific header arguments, Buffer-wide header arguments, Using header arguments
11500 @subsubheading Header arguments in Org-mode properties
11501
11502 Header arguments are also read from Org-mode properties (see @ref{Property
11503 syntax}), which can be set on a buffer-wide or per-heading basis. An example
11504 of setting a header argument for all code blocks in a buffer is
11505
11506 @example
11507 #+property: tangle yes
11508 @end example
11509
11510 When properties are used to set default header arguments, they are looked up
11511 with inheritance, so the value of the @code{:cache} header argument will default
11512 to @code{yes} in all code blocks in the subtree rooted at the following
11513 heading:
11514
11515 @example
11516 * outline header
11517 :PROPERTIES:
11518 :cache: yes
11519 :END:
11520 @end example
11521
11522 @kindex C-c C-x p
11523 @vindex org-babel-default-header-args
11524 Properties defined in this way override the properties set in
11525 @code{org-babel-default-header-args}. It is convenient to use the
11526 @code{org-set-property} function bound to @kbd{C-c C-x p} to set properties
11527 in Org-mode documents.
11528
11529 @node Code block specific header arguments, Header arguments in function calls, Header arguments in Org-mode properties, Using header arguments
11530 @subsubheading Code block specific header arguments
11531
11532 The most common way to assign values to header arguments is at the
11533 code block level. This can be done by listing a sequence of header
11534 arguments and their values as part of the @code{#+begin_src} line.
11535 Properties set in this way override both the values of
11536 @code{org-babel-default-header-args} and header arguments specified as
11537 properties. In the following example, the @code{:results} header argument
11538 is set to @code{silent}, meaning the results of execution will not be
11539 inserted in the buffer, and the @code{:exports} header argument is set to
11540 @code{code}, meaning only the body of the code block will be
11541 preserved on export to HTML or LaTeX.
11542
11543 @example
11544 #+source: factorial
11545 #+begin_src haskell :results silent :exports code :var n=0
11546 fac 0 = 1
11547 fac n = n * fac (n-1)
11548 #+end_src
11549 @end example
11550 Similarly, it is possible to set header arguments for inline code blocks:
11551
11552 @example
11553 src_haskell[:exports both]@{fac 5@}
11554 @end example
11555
11556 @node Header arguments in function calls, , Code block specific header arguments, Using header arguments
11557 @comment node-name, next, previous, up
11558 @subsubheading Header arguments in function calls
11559
11560 At the most specific level, header arguments for ``Library of Babel'' or
11561 function call lines can be set as shown below:
11562
11563 @example
11564 #+call: factorial(n=5) :exports results
11565 @end example
11566
11567 @node Specific header arguments, , Using header arguments, Header arguments
11568 @subsection Specific header arguments
11569 The following header arguments are defined:
11570
11571 @menu
11572 * var:: Pass arguments to code blocks
11573 * results:: Specify the type of results and how they will
11574 be collected and handled
11575 * file:: Specify a path for file output
11576 * dir:: Specify the default (possibly remote)
11577 directory for code block execution
11578 * exports:: Export code and/or results
11579 * tangle:: Toggle tangling and specify file name
11580 * comments:: Toggle insertion of comments in tangled
11581 code files
11582 * no-expand:: Turn off variable assignment and noweb
11583 expansion during tangling
11584 * session:: Preserve the state of code evaluation
11585 * noweb:: Toggle expansion of noweb references
11586 * cache:: Avoid re-evaluating unchanged code blocks
11587 * hlines:: Handle horizontal lines in tables
11588 * colnames:: Handle column names in tables
11589 * rownames:: Handle row names in tables
11590 * shebang:: Make tangled files executable
11591 * eval:: Limit evaluation of specific code blocks
11592 @end menu
11593
11594 @node var, results, Specific header arguments, Specific header arguments
11595 @subsubsection @code{:var}
11596 The @code{:var} header argument is used to pass arguments to code blocks.
11597 The specifics of how arguments are included in a code block vary by language;
11598 these are addressed in the language-specific documentation. However, the
11599 syntax used to specify arguments is the same across all languages. The
11600 values passed to arguments can be literal values, values from org-mode tables
11601 and literal example blocks, or the results of other code blocks.
11602
11603 These values can be indexed in a manner similar to arrays---see the
11604 ``indexable variable values'' heading below.
11605
11606 The following syntax is used to pass arguments to code blocks using the
11607 @code{:var} header argument.
11608
11609 @example
11610 :var name=assign
11611 @end example
11612
11613 where @code{assign} can take one of the following forms
11614
11615 @itemize @bullet
11616 @item literal value
11617 either a string @code{"string"} or a number @code{9}.
11618 @item reference
11619 a table name:
11620
11621 @example
11622 #+tblname: example-table
11623 | 1 |
11624 | 2 |
11625 | 3 |
11626 | 4 |
11627
11628 #+source: table-length
11629 #+begin_src emacs-lisp :var table=example-table
11630 (length table)
11631 #+end_src
11632
11633 #+results: table-length
11634 : 4
11635 @end example
11636
11637 a code block name, as assigned by @code{#+srcname:}, followed by
11638 parentheses:
11639
11640 @example
11641 #+begin_src emacs-lisp :var length=table-length()
11642 (* 2 length)
11643 #+end_src
11644
11645 #+results:
11646 : 8
11647 @end example
11648
11649 In addition, an argument can be passed to the code block referenced
11650 by @code{:var}. The argument is passed within the parentheses following the
11651 code block name:
11652
11653 @example
11654 #+source: double
11655 #+begin_src emacs-lisp :var input=8
11656 (* 2 input)
11657 #+end_src
11658
11659 #+results: double
11660 : 16
11661
11662 #+source: squared
11663 #+begin_src emacs-lisp :var input=double(input=1)
11664 (* input input)
11665 #+end_src
11666
11667 #+results: squared
11668 : 4
11669 @end example
11670 @end itemize
11671
11672 @subsubheading Alternate argument syntax
11673 It is also possible to specify arguments in a potentially more natural way
11674 using the @code{#+source:} line of a code block. As in the following
11675 example arguments can be packed inside of parenthesis, separated by commas,
11676 following the source name.
11677
11678 @example
11679 #+source: double(input=0, x=2)
11680 #+begin_src emacs-lisp
11681 (* 2 (+ input x))
11682 #+end_src
11683 @end example
11684
11685 @subsubheading Indexable variable values
11686 It is possible to reference portions of variable values by ``indexing'' into
11687 the variables. Indexes are 0 based with negative values counting back from
11688 the end. If an index is separated by @code{,}s then each subsequent section
11689 will index into the next deepest nesting or dimension of the value. The
11690 following example assigns the last cell of the first row the table
11691 @code{example-table} to the variable @code{data}:
11692
11693 @example
11694 #+results: example-table
11695 | 1 | a |
11696 | 2 | b |
11697 | 3 | c |
11698 | 4 | d |
11699
11700 #+begin_src emacs-lisp :var data=example-table[0,-1]
11701 data
11702 #+end_src
11703
11704 #+results:
11705 : a
11706 @end example
11707
11708 Ranges of variable values can be referenced using two integers separated by a
11709 @code{:}, in which case the entire inclusive range is referenced. For
11710 example the following assigns the middle three rows of @code{example-table}
11711 to @code{data}.
11712
11713 @example
11714 #+results: example-table
11715 | 1 | a |
11716 | 2 | b |
11717 | 3 | c |
11718 | 4 | d |
11719 | 5 | 3 |
11720
11721 #+begin_src emacs-lisp :var data=example-table[1:3]
11722 data
11723 #+end_src
11724
11725 #+results:
11726 | 2 | b |
11727 | 3 | c |
11728 | 4 | d |
11729 @end example
11730
11731 Additionally, an empty index, or the single character @code{*}, are both
11732 interpreted to mean the entire range and as such are equivalent to
11733 @code{0:-1}, as shown in the following example in which the entire first
11734 column is referenced.
11735
11736 @example
11737 #+results: example-table
11738 | 1 | a |
11739 | 2 | b |
11740 | 3 | c |
11741 | 4 | d |
11742
11743 #+begin_src emacs-lisp :var data=example-table[,0]
11744 data
11745 #+end_src
11746
11747 #+results:
11748 | 1 | 2 | 3 | 4 |
11749 @end example
11750
11751 It is possible to index into the results of code blocks as well as tables.
11752 Any number of dimensions can be indexed. Dimensions are separated from one
11753 another by commas, as shown in the following example.
11754
11755 @example
11756 #+source: 3D
11757 #+begin_src emacs-lisp
11758 '(((1 2 3) (4 5 6) (7 8 9))
11759 ((10 11 12) (13 14 15) (16 17 18))
11760 ((19 20 21) (22 23 24) (25 26 27)))
11761 #+end_src
11762
11763 #+begin_src emacs-lisp :var data=3D[1,,1]
11764 data
11765 #+end_src
11766
11767 #+results:
11768 | 11 | 14 | 17 |
11769 @end example
11770
11771 @node results, file, var, Specific header arguments
11772 @subsubsection @code{:results}
11773
11774 There are three classes of @code{:results} header argument. Only one option of
11775 each type may be supplied per code block.
11776
11777 @itemize @bullet
11778 @item
11779 @b{collection} header arguments specify how the results should be collected
11780 from the code block
11781 @item
11782 @b{type} header arguments specify what type of result the code block will
11783 return---which has implications for how they will be inserted into the
11784 Org-mode buffer
11785 @item
11786 @b{handling} header arguments specify how the results of evaluating the code
11787 block should be handled.
11788 @end itemize
11789
11790 @subsubheading Collection
11791 The following options are mutually exclusive, and specify how the results
11792 should be collected from the code block.
11793
11794 @itemize @bullet
11795 @item @code{value}
11796 This is the default. The result is the value of the last statement in the
11797 code block. This header argument places the evaluation in functional
11798 mode. Note that in some languages, e.g., python, use of this result type
11799 requires that a @code{return} statement be included in the body of the source
11800 code block. E.g., @code{:results value}.
11801 @item @code{output}
11802 The result is the collection of everything printed to STDOUT during the
11803 execution of the code block. This header argument places the
11804 evaluation in scripting mode. E.g., @code{:results output}.
11805 @end itemize
11806
11807 @subsubheading Type
11808
11809 The following options are mutually exclusive and specify what type of results
11810 the code block will return. By default, results are inserted as either a
11811 table or scalar depending on their value.
11812
11813 @itemize @bullet
11814 @item @code{table}, @code{vector}
11815 The results should be interpreted as an Org-mode table. If a single value is
11816 returned, it will be converted into a table with one row and one column.
11817 E.g., @code{:results value table}.
11818 @item @code{scalar}, @code{verbatim}
11819 The results should be interpreted literally---they will not be
11820 converted into a table. The results will be inserted into the Org-mode
11821 buffer as quoted text. E.g., @code{:results value verbatim}.
11822 @item @code{file}
11823 The results will be interpreted as the path to a file, and will be inserted
11824 into the Org-mode buffer as a file link. E.g., @code{:results value file}.
11825 @item @code{raw}, @code{org}
11826 The results are interpreted as raw Org-mode code and are inserted directly
11827 into the buffer. If the results look like a table they will be aligned as
11828 such by Org-mode. E.g., @code{:results value raw}.
11829 @item @code{html}
11830 Results are assumed to be HTML and will be enclosed in a @code{begin_html}
11831 block. E.g., @code{:results value html}.
11832 @item @code{latex}
11833 Results assumed to be LaTeX and are enclosed in a @code{begin_latex} block.
11834 E.g., @code{:results value latex}.
11835 @item @code{code}
11836 Result are assumed to be parseable code and are enclosed in a code block.
11837 E.g., @code{:results value code}.
11838 @item @code{pp}
11839 The result is converted to pretty-printed code and is enclosed in a code
11840 block. This option currently supports Emacs Lisp, python, and ruby. E.g.,
11841 @code{:results value pp}.
11842 @end itemize
11843
11844 @subsubheading Handling
11845 The following results options indicate what happens with the
11846 results once they are collected.
11847
11848 @itemize @bullet
11849 @item @code{silent}
11850 The results will be echoed in the minibuffer but will not be inserted into
11851 the Org-mode buffer. E.g., @code{:results output silent}.
11852 @item @code{replace}
11853 The default value. Any existing results will be removed, and the new results
11854 will be inserted into the Org-mode buffer in their place. E.g.,
11855 @code{:results output replace}.
11856 @item @code{append}
11857 If there are pre-existing results of the code block then the new results will
11858 be appended to the existing results. Otherwise the new results will be
11859 inserted as with @code{replace}.
11860 @item @code{prepend}
11861 If there are pre-existing results of the code block then the new results will
11862 be prepended to the existing results. Otherwise the new results will be
11863 inserted as with @code{replace}.
11864 @end itemize
11865
11866 @node file, dir, results, Specific header arguments
11867 @subsubsection @code{:file}
11868
11869 The header argument @code{:file} is used to specify a path for file output.
11870 An Org-mode style @code{file:} link is inserted into the buffer as the result
11871 (see @ref{Link format}). Common examples are graphical output from R,
11872 gnuplot, ditaa and LaTeX code blocks.
11873
11874 Note that for some languages, including R, gnuplot, LaTeX and ditaa,
11875 graphical output is sent to the specified file without the file being
11876 referenced explicitly in the code block. See the documentation for the
11877 individual languages for details. In contrast, general purpose languages such
11878 as python and ruby require that the code explicitly create output
11879 corresponding to the path indicated by @code{:file}.
11880
11881
11882 @node dir, exports, file, Specific header arguments
11883 @subsubsection @code{:dir} and remote execution
11884
11885 While the @code{:file} header argument can be used to specify the path to the
11886 output file, @code{:dir} specifies the default directory during code block
11887 execution. If it is absent, then the directory associated with the current
11888 buffer is used. In other words, supplying @code{:dir path} temporarily has
11889 the same effect as changing the current directory with @kbd{M-x cd path}, and
11890 then not supplying @code{:dir}. Under the surface, @code{:dir} simply sets
11891 the value of the Emacs variable @code{default-directory}.
11892
11893 When using @code{:dir}, you should supply a relative path for file output
11894 (e.g. @code{:file myfile.jpg} or @code{:file results/myfile.jpg}) in which
11895 case that path will be interpreted relative to the default directory.
11896
11897 In other words, if you want your plot to go into a folder called Work in your
11898 home directory, you could use
11899
11900 @example
11901 #+begin_src R :file myplot.png :dir ~/Work
11902 matplot(matrix(rnorm(100), 10), type="l")
11903 #+end_src
11904 @end example
11905
11906 @subsubheading Remote execution
11907 A directory on a remote machine can be specified using tramp file syntax, in
11908 which case the code will be evaluated on the remote machine. An example is
11909
11910 @example
11911 #+begin_src R :file plot.png :dir /dand@@yakuba.princeton.edu:
11912 plot(1:10, main=system("hostname", intern=TRUE))
11913 #+end_src
11914 @end example
11915
11916 Text results will be returned to the local Org-mode buffer as usual, and file
11917 output will be created on the remote machine with relative paths interpreted
11918 relative to the remote directory. An Org-mode link to the remote file will be
11919 created.
11920
11921 So, in the above example a plot will be created on the remote machine,
11922 and a link of the following form will be inserted in the org buffer:
11923
11924 @example
11925 [[file:/scp:dand@@yakuba.princeton.edu:/home/dand/plot.png][plot.png]]
11926 @end example
11927
11928 Most of this functionality follows immediately from the fact that @code{:dir}
11929 sets the value of the Emacs variable @code{default-directory}, thanks to
11930 tramp. Those using XEmacs, or GNU Emacs prior to version 23 may need to
11931 install tramp separately in order for the these features to work correctly.
11932
11933 @subsubheading Further points
11934
11935 @itemize @bullet
11936 @item
11937 If @code{:dir} is used in conjunction with @code{:session}, although it will
11938 determine the starting directory for a new session as expected, no attempt is
11939 currently made to alter the directory associated with an existing session.
11940 @item
11941 @code{:dir} should typically not be used to create files during export with
11942 @code{:exports results} or @code{:exports both}. The reason is that, in order
11943 to retain portability of exported material between machines, during export
11944 links inserted into the buffer will *not* be expanded against @code{default
11945 directory}. Therefore, if @code{default-directory} is altered using
11946 @code{:dir}, it is probable that the file will be created in a location to
11947 which the link does not point.
11948 @end itemize
11949
11950 @node exports, tangle, dir, Specific header arguments
11951 @subsubsection @code{:exports}
11952
11953 The @code{:exports} header argument specifies what should be included in HTML
11954 or LaTeX exports of the Org-mode file.
11955
11956 @itemize @bullet
11957 @item @code{code}
11958 The default. The body of code is included into the exported file. E.g.,
11959 @code{:exports code}.
11960 @item @code{results}
11961 The result of evaluating the code is included in the exported file. E.g.,
11962 @code{:exports results}.
11963 @item @code{both}
11964 Both the code and results are included in the exported file. E.g.,
11965 @code{:exports both}.
11966 @item @code{none}
11967 Nothing is included in the exported file. E.g., @code{:exports none}.
11968 @end itemize
11969
11970 @node tangle, comments, exports, Specific header arguments
11971 @subsubsection @code{:tangle}
11972
11973 The @code{:tangle} header argument specifies whether or not the code
11974 block should be included in tangled extraction of source code files.
11975
11976 @itemize @bullet
11977 @item @code{yes}
11978 The code block is exported to a source code file named after the
11979 basename (name w/o extension) of the Org-mode file. E.g., @code{:tangle
11980 yes}.
11981 @item @code{no}
11982 The default. The code block is not exported to a source code file.
11983 E.g., @code{:tangle no}.
11984 @item other
11985 Any other string passed to the @code{:tangle} header argument is interpreted
11986 as a file basename to which the block will be exported. E.g., @code{:tangle
11987 basename}.
11988 @end itemize
11989
11990 @node comments, no-expand, tangle, Specific header arguments
11991 @subsubsection @code{:comments}
11992 By default code blocks are tangled to source-code files without any insertion
11993 of comments beyond those which may already exist in the body of the code
11994 block. The @code{:comments} header argument can be set as follows to control
11995 the insertion of extra comments into the tangled code file.
11996
11997 @itemize @bullet
11998 @item @code{no}
11999 The default. No extra comments are inserted during tangling.
12000 @item @code{link}
12001 The code block is wrapped in comments which contain pointers back to the
12002 original Org file from which the code was tangled.
12003 @item @code{yes}
12004 A synonym for ``link'' to maintain backwards compatibility.
12005 @item @code{org}
12006 Include text from the org-mode file as a comment.
12007
12008 The text is picked from the leading context of the tangled code and is
12009 limited by the nearest headline or source block as the case may be.
12010 @item @code{both}
12011 Turns on both the ``link'' and ``org'' comment options.
12012 @end itemize
12013
12014 @node no-expand, session, comments, Specific header arguments
12015 @subsubsection @code{:no-expand}
12016
12017 By default, code blocks are expanded with @code{org-babel-expand-src-block}
12018 during tangling. This has the effect of assigning values to variables
12019 specified with @code{:var} (see @ref{var}), and of replacing ``noweb''
12020 references (see @ref{Noweb reference syntax}) with their targets. The
12021 @code{:no-expand} header argument can be used to turn off this behavior.
12022
12023 @node session, noweb, no-expand, Specific header arguments
12024 @subsubsection @code{:session}
12025
12026 The @code{:session} header argument starts a session for an interpreted
12027 language where state is preserved.
12028
12029 By default, a session is not started.
12030
12031 A string passed to the @code{:session} header argument will give the session
12032 a name. This makes it possible to run concurrent sessions for each
12033 interpreted language.
12034
12035 @node noweb, cache, session, Specific header arguments
12036 @subsubsection @code{:noweb}
12037
12038 The @code{:noweb} header argument controls expansion of ``noweb'' style (see
12039 @ref{Noweb reference syntax}) references in a code block. This header
12040 argument can have one of three values: @code{yes} @code{no} or @code{tangle}.
12041
12042 @itemize @bullet
12043 @item @code{yes}
12044 All ``noweb'' syntax references in the body of the code block will be
12045 expanded before the block is evaluated, tangled or exported.
12046 @item @code{no}
12047 The default. No ``noweb'' syntax specific action is taken on evaluating
12048 code blocks, However, noweb references will still be expanded during
12049 tangling.
12050 @item @code{yes}
12051 All ``noweb'' syntax references in the body of the code block will be
12052 expanded before the block is tangled, however ``noweb'' references will not
12053 be expanded when the block is evaluated or exported.
12054 @end itemize
12055
12056 @subsubheading Noweb prefix lines
12057 Noweb insertions are now placed behind the line prefix of the
12058 @code{<<reference>>}.
12059 This behavior is illustrated in the following example. Because the
12060 @code{<<example>>} noweb reference appears behind the SQL comment syntax,
12061 each line of the expanded noweb reference will be commented.
12062
12063 This code block:
12064
12065 @example
12066 -- <<example>>
12067 @end example
12068
12069
12070 expands to:
12071
12072 @example
12073 -- this is the
12074 -- multi-line body of example
12075 @end example
12076
12077 Note that noweb replacement text that does not contain any newlines will not
12078 be affected by this change, so it is still possible to use inline noweb
12079 references.
12080
12081 @node cache, hlines, noweb, Specific header arguments
12082 @subsubsection @code{:cache}
12083
12084 The @code{:cache} header argument controls the use of in-buffer caching of
12085 the results of evaluating code blocks. It can be used to avoid re-evaluating
12086 unchanged code blocks. This header argument can have one of two
12087 values: @code{yes} or @code{no}.
12088
12089 @itemize @bullet
12090 @item @code{no}
12091 The default. No caching takes place, and the code block will be evaluated
12092 every time it is called.
12093 @item @code{yes}
12094 Every time the code block is run a sha1 hash of the code and arguments
12095 passed to the block will be generated. This hash is packed into the
12096 @code{#+results:} line and will be checked on subsequent
12097 executions of the code block. If the code block has not
12098 changed since the last time it was evaluated, it will not be re-evaluated.
12099 @end itemize
12100
12101 @node hlines, colnames, cache, Specific header arguments
12102 @subsubsection @code{:hlines}
12103
12104 Tables are frequently represented with one or more horizontal lines, or
12105 hlines. The @code{:hlines} argument to a code block accepts the
12106 values @code{yes} or @code{no}, with a default value of @code{no}.
12107
12108 @itemize @bullet
12109 @item @code{no}
12110 Strips horizontal lines from the input table. In most languages this is the
12111 desired effect because an @code{hline} symbol is interpreted as an unbound
12112 variable and raises an error. Setting @code{:hlines no} or relying on the
12113 default value yields the following results.
12114
12115 @example
12116 #+tblname: many-cols
12117 | a | b | c |
12118 |---+---+---|
12119 | d | e | f |
12120 |---+---+---|
12121 | g | h | i |
12122
12123 #+source: echo-table
12124 #+begin_src python :var tab=many-cols
12125 return tab
12126 #+end_src
12127
12128 #+results: echo-table
12129 | a | b | c |
12130 | d | e | f |
12131 | g | h | i |
12132 @end example
12133
12134 @item @code{yes}
12135 Leaves hlines in the table. Setting @code{:hlines yes} has this effect.
12136
12137 @example
12138 #+tblname: many-cols
12139 | a | b | c |
12140 |---+---+---|
12141 | d | e | f |
12142 |---+---+---|
12143 | g | h | i |
12144
12145 #+source: echo-table
12146 #+begin_src python :var tab=many-cols :hlines yes
12147 return tab
12148 #+end_src
12149
12150 #+results: echo-table
12151 | a | b | c |
12152 |---+---+---|
12153 | d | e | f |
12154 |---+---+---|
12155 | g | h | i |
12156 @end example
12157 @end itemize
12158
12159 @node colnames, rownames, hlines, Specific header arguments
12160 @subsubsection @code{:colnames}
12161
12162 The @code{:colnames} header argument accepts the values @code{yes},
12163 @code{no}, or @code{nil} for unassigned. The default value is @code{nil}.
12164
12165 @itemize @bullet
12166 @item @code{nil}
12167 If an input table looks like it has column names
12168 (because its second row is an hline), then the column
12169 names will be removed from the table before
12170 processing, then reapplied to the results.
12171
12172 @example
12173 #+tblname: less-cols
12174 | a |
12175 |---|
12176 | b |
12177 | c |
12178
12179 #+srcname: echo-table-again
12180 #+begin_src python :var tab=less-cols
12181 return [[val + '*' for val in row] for row in tab]
12182 #+end_src
12183
12184 #+results: echo-table-again
12185 | a |
12186 |----|
12187 | b* |
12188 | c* |
12189 @end example
12190
12191 @item @code{no}
12192 No column name pre-processing takes place
12193
12194 @item @code{yes}
12195 Column names are removed and reapplied as with @code{nil} even if the table
12196 does not ``look like'' it has column names (i.e. the second row is not an
12197 hline)
12198 @end itemize
12199
12200 @node rownames, shebang, colnames, Specific header arguments
12201 @subsubsection @code{:rownames}
12202
12203 The @code{:rownames} header argument can take on the values @code{yes}
12204 or @code{no}, with a default value of @code{no}.
12205
12206 @itemize @bullet
12207 @item @code{no}
12208 No row name pre-processing will take place.
12209
12210 @item @code{yes}
12211 The first column of the table is removed from the table before processing,
12212 and is then reapplied to the results.
12213
12214 @example
12215 #+tblname: with-rownames
12216 | one | 1 | 2 | 3 | 4 | 5 |
12217 | two | 6 | 7 | 8 | 9 | 10 |
12218
12219 #+srcname: echo-table-once-again
12220 #+begin_src python :var tab=with-rownames :rownames yes
12221 return [[val + 10 for val in row] for row in tab]
12222 #+end_src
12223
12224 #+results: echo-table-once-again
12225 | one | 11 | 12 | 13 | 14 | 15 |
12226 | two | 16 | 17 | 18 | 19 | 20 |
12227 @end example
12228 @end itemize
12229
12230 @node shebang, eval, rownames, Specific header arguments
12231 @subsubsection @code{:shebang}
12232
12233 Setting the @code{:shebang} header argument to a string value
12234 (e.g. @code{:shebang "#!/bin/bash"}) causes the string to be inserted as the
12235 first line of any tangled file holding the code block, and the file
12236 permissions of the tangled file are set to make it executable.
12237
12238 @node eval, , shebang, Specific header arguments
12239 @subsubsection @code{:eval}
12240 The @code{:eval} header argument can be used to limit the evaluation of
12241 specific code blocks. @code{:eval} accepts two arguments ``never'' and
12242 ``query''. @code{:eval never} will ensure that a code block is never
12243 evaluated, this can be useful for protecting against the evaluation of
12244 dangerous code blocks. @code{:eval query} will require a query for every
12245 execution of a code block regardless of the value of the
12246 @code{org-confirm-babel-evaluate} variable.
12247
12248 @node Results of evaluation, Noweb reference syntax, Header arguments, Working With Source Code
12249 @section Results of evaluation
12250 @cindex code block, results of evaluation
12251 @cindex source code, results of evaluation
12252
12253 The way in which results are handled depends on whether a session is invoked,
12254 as well as on whether @code{:results value} or @code{:results output} is
12255 used. The following table shows the possibilities:
12256
12257 @multitable @columnfractions 0.26 0.33 0.41
12258 @item @tab @b{Non-session} @tab @b{Session}
12259 @item @code{:results value} @tab value of last expression @tab value of last expression
12260 @item @code{:results output} @tab contents of STDOUT @tab concatenation of interpreter output
12261 @end multitable
12262
12263 Note: With @code{:results value}, the result in both @code{:session} and
12264 non-session is returned to Org-mode as a table (a one- or two-dimensional
12265 vector of strings or numbers) when appropriate.
12266
12267 @subsection Non-session
12268 @subsubsection @code{:results value}
12269 This is the default. Internally, the value is obtained by wrapping the code
12270 in a function definition in the external language, and evaluating that
12271 function. Therefore, code should be written as if it were the body of such a
12272 function. In particular, note that python does not automatically return a
12273 value from a function unless a @code{return} statement is present, and so a
12274 @samp{return} statement will usually be required in python.
12275
12276 This is the only one of the four evaluation contexts in which the code is
12277 automatically wrapped in a function definition.
12278
12279 @subsubsection @code{:results output}
12280 The code is passed to the interpreter as an external process, and the
12281 contents of the standard output stream are returned as text. (In certain
12282 languages this also contains the error output stream; this is an area for
12283 future work.)
12284
12285 @subsection @code{:session}
12286 @subsubsection @code{:results value}
12287 The code is passed to the interpreter running as an interactive Emacs
12288 inferior process. The result returned is the result of the last evaluation
12289 performed by the interpreter. (This is obtained in a language-specific
12290 manner: the value of the variable @code{_} in python and ruby, and the value
12291 of @code{.Last.value} in R).
12292
12293 @subsubsection @code{:results output}
12294 The code is passed to the interpreter running as an interactive Emacs
12295 inferior process. The result returned is the concatenation of the sequence of
12296 (text) output from the interactive interpreter. Notice that this is not
12297 necessarily the same as what would be sent to @code{STDOUT} if the same code
12298 were passed to a non-interactive interpreter running as an external
12299 process. For example, compare the following two blocks:
12300
12301 @example
12302 #+begin_src python :results output
12303 print "hello"
12304 2
12305 print "bye"
12306 #+end_src
12307
12308 #+resname:
12309 : hello
12310 : bye
12311 @end example
12312
12313 In non-session mode, the '2' is not printed and does not appear.
12314 @example
12315 #+begin_src python :results output :session
12316 print "hello"
12317 2
12318 print "bye"
12319 #+end_src
12320
12321 #+resname:
12322 : hello
12323 : 2
12324 : bye
12325 @end example
12326
12327 But in @code{:session} mode, the interactive interpreter receives input '2'
12328 and prints out its value, '2'. (Indeed, the other print statements are
12329 unnecessary here).
12330
12331 @node Noweb reference syntax, Key bindings and useful functions, Results of evaluation, Working With Source Code
12332 @section Noweb reference syntax
12333 @cindex code block, noweb reference
12334 @cindex syntax, noweb
12335 @cindex source code, noweb reference
12336
12337 The ``noweb'' (see @uref{http://www.cs.tufts.edu/~nr/noweb/}) Literate
12338 Programming system allows named blocks of code to be referenced by using the
12339 familiar Noweb syntax:
12340
12341 @example
12342 <<code-block-name>>
12343 @end example
12344
12345 When a code block is tangled or evaluated, whether or not ``noweb''
12346 references are expanded depends upon the value of the @code{:noweb} header
12347 argument. If @code{:noweb yes}, then a Noweb reference is expanded before
12348 evaluation. If @code{:noweb no}, the default, then the reference is not
12349 expanded before evaluation.
12350
12351 Note: the default value, @code{:noweb no}, was chosen to ensure that
12352 correct code is not broken in a language, such as Ruby, where
12353 @code{<<arg>>} is a syntactically valid construct. If @code{<<arg>>} is not
12354 syntactically valid in languages that you use, then please consider setting
12355 the default value.
12356
12357 @node Key bindings and useful functions, Batch execution, Noweb reference syntax, Working With Source Code
12358 @section Key bindings and useful functions
12359 @cindex code block, key bindings
12360
12361 Many common Org-mode key sequences are re-bound depending on
12362 the context.
12363
12364 Within a code block, the following key bindings
12365 are active:
12366
12367 @multitable @columnfractions 0.25 0.75
12368 @kindex C-c C-c
12369 @item @kbd{C-c C-c} @tab org-babel-execute-src-block
12370 @kindex C-c C-o
12371 @item @kbd{C-c C-o} @tab org-babel-open-src-block-result
12372 @kindex C-up
12373 @item @kbd{C-@key{up}} @tab org-babel-load-in-session
12374 @kindex M-down
12375 @item @kbd{M-@key{down}} @tab org-babel-pop-to-session
12376 @end multitable
12377
12378 In an Org-mode buffer, the following key bindings are active:
12379
12380 @multitable @columnfractions 0.45 0.55
12381 @kindex C-c C-v a
12382 @kindex C-c C-v C-a
12383 @item @kbd{C-c C-v a} @ @ @r{or} @ @ @kbd{C-c C-v C-a} @tab org-babel-sha1-hash
12384 @kindex C-c C-v b
12385 @kindex C-c C-v C-b
12386 @item @kbd{C-c C-v b} @ @ @r{or} @ @ @kbd{C-c C-v C-b} @tab org-babel-execute-buffer
12387 @kindex C-c C-v f
12388 @kindex C-c C-v C-f
12389 @item @kbd{C-c C-v f} @ @ @r{or} @ @ @kbd{C-c C-v C-f} @tab org-babel-tangle-file
12390 @kindex C-c C-v g
12391 @item @kbd{C-c C-v g} @tab org-babel-goto-named-source-block
12392 @kindex C-c C-v h
12393 @item @kbd{C-c C-v h} @tab org-babel-describe-bindings
12394 @kindex C-c C-v l
12395 @kindex C-c C-v C-l
12396 @item @kbd{C-c C-v l} @ @ @r{or} @ @ @kbd{C-c C-v C-l} @tab org-babel-lob-ingest
12397 @kindex C-c C-v p
12398 @kindex C-c C-v C-p
12399 @item @kbd{C-c C-v p} @ @ @r{or} @ @ @kbd{C-c C-v C-p} @tab org-babel-expand-src-block
12400 @kindex C-c C-v s
12401 @kindex C-c C-v C-s
12402 @item @kbd{C-c C-v s} @ @ @r{or} @ @ @kbd{C-c C-v C-s} @tab org-babel-execute-subtree
12403 @kindex C-c C-v t
12404 @kindex C-c C-v C-t
12405 @item @kbd{C-c C-v t} @ @ @r{or} @ @ @kbd{C-c C-v C-t} @tab org-babel-tangle
12406 @kindex C-c C-v z
12407 @kindex C-c C-v C-z
12408 @item @kbd{C-c C-v z} @ @ @r{or} @ @ @kbd{C-c C-v C-z} @tab org-babel-switch-to-session
12409 @end multitable
12410
12411 @c When possible these keybindings were extended to work when the control key is
12412 @c kept pressed, resulting in the following additional keybindings.
12413
12414 @c @multitable @columnfractions 0.25 0.75
12415 @c @item @kbd{C-c C-v C-a} @tab org-babel-sha1-hash
12416 @c @item @kbd{C-c C-v C-b} @tab org-babel-execute-buffer
12417 @c @item @kbd{C-c C-v C-f} @tab org-babel-tangle-file
12418 @c @item @kbd{C-c C-v C-l} @tab org-babel-lob-ingest
12419 @c @item @kbd{C-c C-v C-p} @tab org-babel-expand-src-block
12420 @c @item @kbd{C-c C-v C-s} @tab org-babel-execute-subtree
12421 @c @item @kbd{C-c C-v C-t} @tab org-babel-tangle
12422 @c @item @kbd{C-c C-v C-z} @tab org-babel-switch-to-session
12423 @c @end multitable
12424
12425 @node Batch execution, , Key bindings and useful functions, Working With Source Code
12426 @section Batch execution
12427 @cindex code block, batch execution
12428 @cindex source code, batch execution
12429
12430 It is possible to call functions from the command line. This shell
12431 script calls @code{org-babel-tangle} on every one of its arguments.
12432
12433 Be sure to adjust the paths to fit your system.
12434
12435 @example
12436 #!/bin/sh
12437 # -*- mode: shell-script -*-
12438 #
12439 # tangle files with org-mode
12440 #
12441 DIR=`pwd`
12442 FILES=""
12443 ORGINSTALL="~/src/org/lisp/org-install.el"
12444
12445 # wrap each argument in the code required to call tangle on it
12446 for i in $@@; do
12447 FILES="$FILES \"$i\""
12448 done
12449
12450 emacs -Q --batch -l $ORGINSTALL \
12451 --eval "(progn
12452 (add-to-list 'load-path (expand-file-name \"~/src/org/lisp/\"))
12453 (add-to-list 'load-path (expand-file-name \"~/src/org/contrib/lisp/\"))
12454 (require 'org)(require 'org-exp)(require 'ob)(require 'ob-tangle)
12455 (mapc (lambda (file)
12456 (find-file (expand-file-name file \"$DIR\"))
12457 (org-babel-tangle)
12458 (kill-buffer)) '($FILES)))" 2>&1 |grep tangled
12459 @end example
12460
12461 @node Miscellaneous, Hacking, Working With Source Code, Top
12462 @chapter Miscellaneous
12463
12464 @menu
12465 * Completion:: M-TAB knows what you need
12466 * Easy Templates:: Quick insertion of structural elements
12467 * Speed keys:: Electric commands at the beginning of a headline
12468 * Code evaluation security:: Org mode files evaluate inline code
12469 * Customization:: Adapting Org to your taste
12470 * In-buffer settings:: Overview of the #+KEYWORDS
12471 * The very busy C-c C-c key:: When in doubt, press C-c C-c
12472 * Clean view:: Getting rid of leading stars in the outline
12473 * TTY keys:: Using Org on a tty
12474 * Interaction:: Other Emacs packages
12475 @end menu
12476
12477
12478 @node Completion, Easy Templates, Miscellaneous, Miscellaneous
12479 @section Completion
12480 @cindex completion, of @TeX{} symbols
12481 @cindex completion, of TODO keywords
12482 @cindex completion, of dictionary words
12483 @cindex completion, of option keywords
12484 @cindex completion, of tags
12485 @cindex completion, of property keys
12486 @cindex completion, of link abbreviations
12487 @cindex @TeX{} symbol completion
12488 @cindex TODO keywords completion
12489 @cindex dictionary word completion
12490 @cindex option keyword completion
12491 @cindex tag completion
12492 @cindex link abbreviations, completion of
12493
12494 Emacs would not be Emacs without completion, and Org-mode uses it whenever it
12495 makes sense. If you prefer an @i{iswitchb}- or @i{ido}-like interface for
12496 some of the completion prompts, you can specify your preference by setting at
12497 most one of the variables @code{org-completion-use-iswitchb}
12498 @code{org-completion-use-ido}.
12499
12500 Org supports in-buffer completion. This type of completion does
12501 not make use of the minibuffer. You simply type a few letters into
12502 the buffer and use the key to complete text right there.
12503
12504 @table @kbd
12505 @kindex M-@key{TAB}
12506 @item M-@key{TAB}
12507 Complete word at point
12508 @itemize @bullet
12509 @item
12510 At the beginning of a headline, complete TODO keywords.
12511 @item
12512 After @samp{\}, complete @TeX{} symbols supported by the exporter.
12513 @item
12514 After @samp{*}, complete headlines in the current buffer so that they
12515 can be used in search links like @samp{[[*find this headline]]}.
12516 @item
12517 After @samp{:} in a headline, complete tags. The list of tags is taken
12518 from the variable @code{org-tag-alist} (possibly set through the
12519 @samp{#+TAGS} in-buffer option, @pxref{Setting tags}), or it is created
12520 dynamically from all tags used in the current buffer.
12521 @item
12522 After @samp{:} and not in a headline, complete property keys. The list
12523 of keys is constructed dynamically from all keys used in the current
12524 buffer.
12525 @item
12526 After @samp{[}, complete link abbreviations (@pxref{Link abbreviations}).
12527 @item
12528 After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
12529 @samp{OPTIONS} which set file-specific options for Org-mode. When the
12530 option keyword is already complete, pressing @kbd{M-@key{TAB}} again
12531 will insert example settings for this keyword.
12532 @item
12533 In the line after @samp{#+STARTUP: }, complete startup keywords,
12534 i.e. valid keys for this line.
12535 @item
12536 Elsewhere, complete dictionary words using Ispell.
12537 @end itemize
12538 @end table
12539
12540 @node Easy Templates, Speed keys, Completion, Miscellaneous
12541 @section Easy Templates
12542 @cindex template insertion
12543 @cindex insertion, of templates
12544
12545 Org-mode supports insertion of empty structural elements (like
12546 @code{#+BEGIN_SRC} and @code{#+END_SRC} pairs) with just a few key
12547 strokes. This is achieved through a native template expansion mechanism.
12548 Note that Emacs has several other template mechanisms which could be used in
12549 a similar way, for example @file{yasnippet}.
12550
12551 To insert a structural element, type a @samp{<}, followed by a template
12552 selector and @kbd{@key{TAB}}. Completion takes effect only when the above
12553 keystrokes are typed on a line by itself.
12554
12555 The following template selectors are currently supported.
12556
12557 @multitable @columnfractions 0.1 0.9
12558 @item @kbd{s} @tab @code{#+begin_src ... #+end_src}
12559 @item @kbd{e} @tab @code{#+begin_example ... #+end_example}
12560 @item @kbd{q} @tab @code{#+begin_quote ... #+end_quote}
12561 @item @kbd{v} @tab @code{#+begin_verse ... #+end_verse}
12562 @item @kbd{c} @tab @code{#+begin_center ... #+end_center}
12563 @item @kbd{l} @tab @code{#+begin_latex ... #+end_latex}
12564 @item @kbd{L} @tab @code{#+latex:}
12565 @item @kbd{h} @tab @code{#+begin_html ... #+end_html}
12566 @item @kbd{H} @tab @code{#+html:}
12567 @item @kbd{a} @tab @code{#+begin_ascii ... #+end_ascii}
12568 @item @kbd{A} @tab @code{#+ascii:}
12569 @item @kbd{i} @tab @code{#+include:} line
12570 @end multitable
12571
12572 For example, on an empty line, typing "<e" and then pressing TAB, will expand
12573 into a complete EXAMPLE template.
12574
12575 You can install additional templates by customizing the variable
12576 @code{org-structure-template-alist}. Refer docstring of the variable for
12577 additional details.
12578
12579 @node Speed keys, Code evaluation security, Easy Templates, Miscellaneous
12580 @section Speed keys
12581 @cindex speed keys
12582 @vindex org-use-speed-commands
12583 @vindex org-speed-commands-user
12584
12585 Single keys can be made to execute commands when the cursor is at the
12586 beginning of a headline, i.e. before the first star. Configure the variable
12587 @code{org-use-speed-commands} to activate this feature. There is a
12588 pre-defined list of commands, and you can add more such commands using the
12589 variable @code{org-speed-commands-user}. Speed keys do not only speed up
12590 navigation and other commands, but they also provide an alternative way to
12591 execute commands bound to keys that are not or not easily available on a tty,
12592 or on a small mobile device with a limited keyboard.
12593
12594 To see which commands are available, activate the feature and press @kbd{?}
12595 with the cursor at the beginning of a headline.
12596
12597 @node Code evaluation security, Customization, Speed keys, Miscellaneous
12598 @section Code evaluation and security issues
12599
12600 Org provides tools to work with the code snippets, including evaluating them.
12601
12602 Running code on your machine always comes with a security risk. Badly
12603 written or malicious code can be executed on purpose or by accident. Org has
12604 default settings which will only evaluate such code if you give explicit
12605 permission to do so, and as a casual user of these features you should leave
12606 these precautions intact.
12607
12608 For people who regularly work with such code, the confirmation prompts can
12609 become annoying, and you might want to turn them off. This can be done, but
12610 you must be aware of the risks that are involved.
12611
12612 Code evaluation can happen under the following circumstances:
12613
12614 @table @i
12615 @item Source code blocks
12616 Source code blocks can be evaluated during export, or when pressing @kbd{C-c
12617 C-c} in the block. The most important thing to realize here is that Org mode
12618 files which contain code snippets are, in a certain sense, like executable
12619 files. So you should accept them and load them into Emacs only from trusted
12620 sources - just like you would do with a program you install on your computer.
12621
12622 Make sure you know what you are doing before customizing the variables
12623 which take off the default security brakes.
12624
12625 @defopt org-confirm-babel-evaluate
12626 When set to t user is queried before code block evaluation
12627 @end defopt
12628
12629 @item Following @code{shell} and @code{elisp} links
12630 Org has two link types that can directly evaluate code (@pxref{External
12631 links}). These links can be problematic because the code to be evaluated is
12632 not visible.
12633
12634 @defopt org-confirm-shell-link-function
12635 Function to queries user about shell link execution.
12636 @end defopt
12637 @defopt org-confirm-elisp-link-function
12638 Functions to query user for Emacs Lisp link execution.
12639 @end defopt
12640
12641 @item Formulas in tables
12642 Formulas in tables (@pxref{The spreadsheet}) are code that is evaluated
12643 either by the @i{calc} interpreter, or by the @i{Emacs Lisp} interpreter.
12644 @end table
12645
12646 @node Customization, In-buffer settings, Code evaluation security, Miscellaneous
12647 @section Customization
12648 @cindex customization
12649 @cindex options, for customization
12650 @cindex variables, for customization
12651
12652 There are more than 180 variables that can be used to customize
12653 Org. For the sake of compactness of the manual, I am not
12654 describing the variables here. A structured overview of customization
12655 variables is available with @kbd{M-x org-customize}. Or select
12656 @code{Browse Org Group} from the @code{Org->Customization} menu. Many
12657 settings can also be activated on a per-file basis, by putting special
12658 lines into the buffer (@pxref{In-buffer settings}).
12659
12660 @node In-buffer settings, The very busy C-c C-c key, Customization, Miscellaneous
12661 @section Summary of in-buffer settings
12662 @cindex in-buffer settings
12663 @cindex special keywords
12664
12665 Org-mode uses special lines in the buffer to define settings on a
12666 per-file basis. These lines start with a @samp{#+} followed by a
12667 keyword, a colon, and then individual words defining a setting. Several
12668 setting words can be in the same line, but you can also have multiple
12669 lines for the keyword. While these settings are described throughout
12670 the manual, here is a summary. After changing any of those lines in the
12671 buffer, press @kbd{C-c C-c} with the cursor still in the line to
12672 activate the changes immediately. Otherwise they become effective only
12673 when the file is visited again in a new Emacs session.
12674
12675 @vindex org-archive-location
12676 @table @kbd
12677 @item #+ARCHIVE: %s_done::
12678 This line sets the archive location for the agenda file. It applies for
12679 all subsequent lines until the next @samp{#+ARCHIVE} line, or the end
12680 of the file. The first such line also applies to any entries before it.
12681 The corresponding variable is @code{org-archive-location}.
12682 @item #+CATEGORY:
12683 This line sets the category for the agenda file. The category applies
12684 for all subsequent lines until the next @samp{#+CATEGORY} line, or the
12685 end of the file. The first such line also applies to any entries before it.
12686 @item #+COLUMNS: %25ITEM .....
12687 @cindex property, COLUMNS
12688 Set the default format for columns view. This format applies when
12689 columns view is invoked in locations where no @code{COLUMNS} property
12690 applies.
12691 @item #+CONSTANTS: name1=value1 ...
12692 @vindex org-table-formula-constants
12693 @vindex org-table-formula
12694 Set file-local values for constants to be used in table formulas. This
12695 line set the local variable @code{org-table-formula-constants-local}.
12696 The global version of this variable is
12697 @code{org-table-formula-constants}.
12698 @item #+FILETAGS: :tag1:tag2:tag3:
12699 Set tags that can be inherited by any entry in the file, including the
12700 top-level entries.
12701 @item #+DRAWERS: NAME1 .....
12702 @vindex org-drawers
12703 Set the file-local set of drawers. The corresponding global variable is
12704 @code{org-drawers}.
12705 @item #+LINK: linkword replace
12706 @vindex org-link-abbrev-alist
12707 These lines (several are allowed) specify link abbreviations.
12708 @xref{Link abbreviations}. The corresponding variable is
12709 @code{org-link-abbrev-alist}.
12710 @item #+PRIORITIES: highest lowest default
12711 @vindex org-highest-priority
12712 @vindex org-lowest-priority
12713 @vindex org-default-priority
12714 This line sets the limits and the default for the priorities. All three
12715 must be either letters A-Z or numbers 0-9. The highest priority must
12716 have a lower ASCII number that the lowest priority.
12717 @item #+PROPERTY: Property_Name Value
12718 This line sets a default inheritance value for entries in the current
12719 buffer, most useful for specifying the allowed values of a property.
12720 @cindex #+SETUPFILE
12721 @item #+SETUPFILE: file
12722 This line defines a file that holds more in-buffer setup. Normally this is
12723 entirely ignored. Only when the buffer is parsed for option-setting lines
12724 (i.e. when starting Org-mode for a file, when pressing @kbd{C-c C-c} in a
12725 settings line, or when exporting), then the contents of this file are parsed
12726 as if they had been included in the buffer. In particular, the file can be
12727 any other Org-mode file with internal setup. You can visit the file the
12728 cursor is in the line with @kbd{C-c '}.
12729 @item #+STARTUP:
12730 @cindex #+STARTUP:
12731 This line sets options to be used at startup of Org-mode, when an
12732 Org file is being visited.
12733
12734 The first set of options deals with the initial visibility of the outline
12735 tree. The corresponding variable for global default settings is
12736 @code{org-startup-folded}, with a default value @code{t}, which means
12737 @code{overview}.
12738 @vindex org-startup-folded
12739 @cindex @code{overview}, STARTUP keyword
12740 @cindex @code{content}, STARTUP keyword
12741 @cindex @code{showall}, STARTUP keyword
12742 @cindex @code{showeverything}, STARTUP keyword
12743 @example
12744 overview @r{top-level headlines only}
12745 content @r{all headlines}
12746 showall @r{no folding of any entries}
12747 showeverything @r{show even drawer contents}
12748 @end example
12749
12750 @vindex org-startup-indented
12751 @cindex @code{indent}, STARTUP keyword
12752 @cindex @code{noindent}, STARTUP keyword
12753 Dynamic virtual indentation is controlled by the variable
12754 @code{org-startup-indented}@footnote{Emacs 23 and Org-mode 6.29 are required}
12755 @example
12756 indent @r{start with @code{org-indent-mode} turned on}
12757 noindent @r{start with @code{org-indent-mode} turned off}
12758 @end example
12759
12760 @vindex org-startup-align-all-tables
12761 Then there are options for aligning tables upon visiting a file. This
12762 is useful in files containing narrowed table columns. The corresponding
12763 variable is @code{org-startup-align-all-tables}, with a default value
12764 @code{nil}.
12765 @cindex @code{align}, STARTUP keyword
12766 @cindex @code{noalign}, STARTUP keyword
12767 @example
12768 align @r{align all tables}
12769 noalign @r{don't align tables on startup}
12770 @end example
12771
12772 @vindex org-startup-with-inline-images
12773 When visiting a file, inline images can be automatically displayed. The
12774 corresponding variable is @code{org-startup-with-inline-images}, with a
12775 default value @code{nil} to avoid delays when visiting a file.
12776 @cindex @code{inlineimages}, STARTUP keyword
12777 @cindex @code{noinlineimages}, STARTUP keyword
12778 @example
12779 inlineimages @r{show inline images}
12780 noinlineimages @r{don't show inline images on startup}
12781 @end example
12782
12783 @vindex org-log-done
12784 @vindex org-log-note-clock-out
12785 @vindex org-log-repeat
12786 Logging the closing and reopening of TODO items and clock intervals can be
12787 configured using these options (see variables @code{org-log-done},
12788 @code{org-log-note-clock-out} and @code{org-log-repeat})
12789 @cindex @code{logdone}, STARTUP keyword
12790 @cindex @code{lognotedone}, STARTUP keyword
12791 @cindex @code{nologdone}, STARTUP keyword
12792 @cindex @code{lognoteclock-out}, STARTUP keyword
12793 @cindex @code{nolognoteclock-out}, STARTUP keyword
12794 @cindex @code{logrepeat}, STARTUP keyword
12795 @cindex @code{lognoterepeat}, STARTUP keyword
12796 @cindex @code{nologrepeat}, STARTUP keyword
12797 @cindex @code{logreschedule}, STARTUP keyword
12798 @cindex @code{lognotereschedule}, STARTUP keyword
12799 @cindex @code{nologreschedule}, STARTUP keyword
12800 @cindex @code{logredeadline}, STARTUP keyword
12801 @cindex @code{lognoteredeadline}, STARTUP keyword
12802 @cindex @code{nologredeadline}, STARTUP keyword
12803 @cindex @code{logrefile}, STARTUP keyword
12804 @cindex @code{lognoterefile}, STARTUP keyword
12805 @cindex @code{nologrefile}, STARTUP keyword
12806 @example
12807 logdone @r{record a timestamp when an item is marked DONE}
12808 lognotedone @r{record timestamp and a note when DONE}
12809 nologdone @r{don't record when items are marked DONE}
12810 logrepeat @r{record a time when reinstating a repeating item}
12811 lognoterepeat @r{record a note when reinstating a repeating item}
12812 nologrepeat @r{do not record when reinstating repeating item}
12813 lognoteclock-out @r{record a note when clocking out}
12814 nolognoteclock-out @r{don't record a note when clocking out}
12815 logreschedule @r{record a timestamp when scheduling time changes}
12816 lognotereschedule @r{record a note when scheduling time changes}
12817 nologreschedule @r{do not record when a scheduling date changes}
12818 logredeadline @r{record a timestamp when deadline changes}
12819 lognoteredeadline @r{record a note when deadline changes}
12820 nologredeadline @r{do not record when a deadline date changes}
12821 logrefile @r{record a timestamp when refiling}
12822 lognoterefile @r{record a note when refiling}
12823 nologrefile @r{do not record when refiling}
12824 @end example
12825 @vindex org-hide-leading-stars
12826 @vindex org-odd-levels-only
12827 Here are the options for hiding leading stars in outline headings, and for
12828 indenting outlines. The corresponding variables are
12829 @code{org-hide-leading-stars} and @code{org-odd-levels-only}, both with a
12830 default setting @code{nil} (meaning @code{showstars} and @code{oddeven}).
12831 @cindex @code{hidestars}, STARTUP keyword
12832 @cindex @code{showstars}, STARTUP keyword
12833 @cindex @code{odd}, STARTUP keyword
12834 @cindex @code{even}, STARTUP keyword
12835 @example
12836 hidestars @r{make all but one of the stars starting a headline invisible.}
12837 showstars @r{show all stars starting a headline}
12838 indent @r{virtual indentation according to outline level}
12839 noindent @r{no virtual indentation according to outline level}
12840 odd @r{allow only odd outline levels (1,3,...)}
12841 oddeven @r{allow all outline levels}
12842 @end example
12843 @vindex org-put-time-stamp-overlays
12844 @vindex org-time-stamp-overlay-formats
12845 To turn on custom format overlays over timestamps (variables
12846 @code{org-put-time-stamp-overlays} and
12847 @code{org-time-stamp-overlay-formats}), use
12848 @cindex @code{customtime}, STARTUP keyword
12849 @example
12850 customtime @r{overlay custom time format}
12851 @end example
12852 @vindex constants-unit-system
12853 The following options influence the table spreadsheet (variable
12854 @code{constants-unit-system}).
12855 @cindex @code{constcgs}, STARTUP keyword
12856 @cindex @code{constSI}, STARTUP keyword
12857 @example
12858 constcgs @r{@file{constants.el} should use the c-g-s unit system}
12859 constSI @r{@file{constants.el} should use the SI unit system}
12860 @end example
12861 @vindex org-footnote-define-inline
12862 @vindex org-footnote-auto-label
12863 @vindex org-footnote-auto-adjust
12864 To influence footnote settings, use the following keywords. The
12865 corresponding variables are @code{org-footnote-define-inline},
12866 @code{org-footnote-auto-label}, and @code{org-footnote-auto-adjust}.
12867 @cindex @code{fninline}, STARTUP keyword
12868 @cindex @code{nofninline}, STARTUP keyword
12869 @cindex @code{fnlocal}, STARTUP keyword
12870 @cindex @code{fnprompt}, STARTUP keyword
12871 @cindex @code{fnauto}, STARTUP keyword
12872 @cindex @code{fnconfirm}, STARTUP keyword
12873 @cindex @code{fnplain}, STARTUP keyword
12874 @cindex @code{fnadjust}, STARTUP keyword
12875 @cindex @code{nofnadjust}, STARTUP keyword
12876 @example
12877 fninline @r{define footnotes inline}
12878 fnnoinline @r{define footnotes in separate section}
12879 fnlocal @r{define footnotes near first reference, but not inline}
12880 fnprompt @r{prompt for footnote labels}
12881 fnauto @r{create [fn:1]-like labels automatically (default)}
12882 fnconfirm @r{offer automatic label for editing or confirmation}
12883 fnplain @r{create [1]-like labels automatically}
12884 fnadjust @r{automatically renumber and sort footnotes}
12885 nofnadjust @r{do not renumber and sort automatically}
12886 @end example
12887 @cindex org-hide-block-startup
12888 To hide blocks on startup, use these keywords. The corresponding variable is
12889 @code{org-hide-block-startup}.
12890 @cindex @code{hideblocks}, STARTUP keyword
12891 @cindex @code{nohideblocks}, STARTUP keyword
12892 @example
12893 hideblocks @r{Hide all begin/end blocks on startup}
12894 nohideblocks @r{Do not hide blocks on startup}
12895 @end example
12896 @cindex org-pretty-entities
12897 The the display of entities as UTF8 characters is governed by the variable
12898 @code{org-pretty-entities} and the keywords
12899 @cindex @code{entitiespretty}, STARTUP keyword
12900 @cindex @code{entitiesplain}, STARTUP keyword
12901 @example
12902 entitiespretty @r{Show entities as UTF8 characters where possible}
12903 entitiesplain @r{Leave entities plain}
12904 @end example
12905 @item #+TAGS: TAG1(c1) TAG2(c2)
12906 @vindex org-tag-alist
12907 These lines (several such lines are allowed) specify the valid tags in
12908 this file, and (potentially) the corresponding @emph{fast tag selection}
12909 keys. The corresponding variable is @code{org-tag-alist}.
12910 @item #+TBLFM:
12911 This line contains the formulas for the table directly above the line.
12912 @item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+DATE:,
12913 @itemx #+OPTIONS:, #+BIND:, #+XSLT:,
12914 @itemx #+DESCRIPTION:, #+KEYWORDS:,
12915 @itemx #+LATEX_HEADER:, #+STYLE:, #+LINK_UP:, #+LINK_HOME:,
12916 @itemx #+EXPORT_SELECT_TAGS:, #+EXPORT_EXCLUDE_TAGS:
12917 These lines provide settings for exporting files. For more details see
12918 @ref{Export options}.
12919 @item #+TODO: #+SEQ_TODO: #+TYP_TODO:
12920 @vindex org-todo-keywords
12921 These lines set the TODO keywords and their interpretation in the
12922 current file. The corresponding variable is @code{org-todo-keywords}.
12923 @end table
12924
12925 @node The very busy C-c C-c key, Clean view, In-buffer settings, Miscellaneous
12926 @section The very busy C-c C-c key
12927 @kindex C-c C-c
12928 @cindex C-c C-c, overview
12929
12930 The key @kbd{C-c C-c} has many purposes in Org, which are all
12931 mentioned scattered throughout this manual. One specific function of
12932 this key is to add @emph{tags} to a headline (@pxref{Tags}). In many
12933 other circumstances it means something like @emph{``Hey Org, look
12934 here and update according to what you see here''}. Here is a summary of
12935 what this means in different contexts.
12936
12937 @itemize @minus
12938 @item
12939 If there are highlights in the buffer from the creation of a sparse
12940 tree, or from clock display, remove these highlights.
12941 @item
12942 If the cursor is in one of the special @code{#+KEYWORD} lines, this
12943 triggers scanning the buffer for these lines and updating the
12944 information.
12945 @item
12946 If the cursor is inside a table, realign the table. This command
12947 works even if the automatic table editor has been turned off.
12948 @item
12949 If the cursor is on a @code{#+TBLFM} line, re-apply the formulas to
12950 the entire table.
12951 @item
12952 If the current buffer is a capture buffer, close the note and file it.
12953 With a prefix argument, file it, without further interaction, to the
12954 default location.
12955 @item
12956 If the cursor is on a @code{<<<target>>>}, update radio targets and
12957 corresponding links in this buffer.
12958 @item
12959 If the cursor is in a property line or at the start or end of a property
12960 drawer, offer property commands.
12961 @item
12962 If the cursor is at a footnote reference, go to the corresponding
12963 definition, and vice versa.
12964 @item
12965 If the cursor is on a statistics cookie, update it.
12966 @item
12967 If the cursor is in a plain list item with a checkbox, toggle the status
12968 of the checkbox.
12969 @item
12970 If the cursor is on a numbered item in a plain list, renumber the
12971 ordered list.
12972 @item
12973 If the cursor is on the @code{#+BEGIN} line of a dynamic block, the
12974 block is updated.
12975 @end itemize
12976
12977 @node Clean view, TTY keys, The very busy C-c C-c key, Miscellaneous
12978 @section A cleaner outline view
12979 @cindex hiding leading stars
12980 @cindex dynamic indentation
12981 @cindex odd-levels-only outlines
12982 @cindex clean outline view
12983
12984 Some people find it noisy and distracting that the Org headlines start with a
12985 potentially large number of stars, and that text below the headlines is not
12986 indented. While this is no problem when writing a @emph{book-like} document
12987 where the outline headings are really section headings, in a more
12988 @emph{list-oriented} outline, indented structure is a lot cleaner:
12989
12990 @example
12991 @group
12992 * Top level headline | * Top level headline
12993 ** Second level | * Second level
12994 *** 3rd level | * 3rd level
12995 some text | some text
12996 *** 3rd level | * 3rd level
12997 more text | more text
12998 * Another top level headline | * Another top level headline
12999 @end group
13000 @end example
13001
13002 @noindent
13003
13004 If you are using at least Emacs 23.2@footnote{Emacs 23.1 can actually crash
13005 with @code{org-indent-mode}} and version 6.29 of Org, this kind of view can
13006 be achieved dynamically at display time using @code{org-indent-mode}. In
13007 this minor mode, all lines are prefixed for display with the necessary amount
13008 of space@footnote{@code{org-indent-mode} also sets the @code{wrap-prefix}
13009 property, such that @code{visual-line-mode} (or purely setting
13010 @code{word-wrap}) wraps long lines (including headlines) correctly indented.
13011 }. Also headlines are prefixed with additional stars, so that the amount of
13012 indentation shifts by two@footnote{See the variable
13013 @code{org-indent-indentation-per-level}.} spaces per level. All headline
13014 stars but the last one are made invisible using the @code{org-hide}
13015 face@footnote{Turning on @code{org-indent-mode} sets
13016 @code{org-hide-leading-stars} to @code{t} and @code{org-adapt-indentation} to
13017 @code{nil}.} - see below under @samp{2.} for more information on how this
13018 works. You can turn on @code{org-indent-mode} for all files by customizing
13019 the variable @code{org-startup-indented}, or you can turn it on for
13020 individual files using
13021
13022 @example
13023 #+STARTUP: indent
13024 @end example
13025
13026 If you want a similar effect in earlier version of Emacs and/or Org, or if
13027 you want the indentation to be hard space characters so that the plain text
13028 file looks as similar as possible to the Emacs display, Org supports you in
13029 the following way:
13030
13031 @enumerate
13032 @item
13033 @emph{Indentation of text below headlines}@*
13034 You may indent text below each headline to make the left boundary line up
13035 with the headline, like
13036
13037 @example
13038 *** 3rd level
13039 more text, now indented
13040 @end example
13041
13042 @vindex org-adapt-indentation
13043 Org supports this with paragraph filling, line wrapping, and structure
13044 editing@footnote{See also the variable @code{org-adapt-indentation}.},
13045 preserving or adapting the indentation as appropriate.
13046
13047 @item
13048 @vindex org-hide-leading-stars
13049 @emph{Hiding leading stars}@* You can modify the display in such a way that
13050 all leading stars become invisible. To do this in a global way, configure
13051 the variable @code{org-hide-leading-stars} or change this on a per-file basis
13052 with
13053
13054 @example
13055 #+STARTUP: hidestars
13056 #+STARTUP: showstars
13057 @end example
13058
13059 With hidden stars, the tree becomes:
13060
13061 @example
13062 @group
13063 * Top level headline
13064 * Second level
13065 * 3rd level
13066 ...
13067 @end group
13068 @end example
13069
13070 @noindent
13071 @vindex org-hide @r{(face)}
13072 The leading stars are not truly replaced by whitespace, they are only
13073 fontified with the face @code{org-hide} that uses the background color as
13074 font color. If you are not using either white or black background, you may
13075 have to customize this face to get the wanted effect. Another possibility is
13076 to set this font such that the extra stars are @i{almost} invisible, for
13077 example using the color @code{grey90} on a white background.
13078
13079 @item
13080 @vindex org-odd-levels-only
13081 Things become cleaner still if you skip all the even levels and use only odd
13082 levels 1, 3, 5..., effectively adding two stars to go from one outline level
13083 to the next@footnote{When you need to specify a level for a property search
13084 or refile targets, @samp{LEVEL=2} will correspond to 3 stars, etc@.}. In this
13085 way we get the outline view shown at the beginning of this section. In order
13086 to make the structure editing and export commands handle this convention
13087 correctly, configure the variable @code{org-odd-levels-only}, or set this on
13088 a per-file basis with one of the following lines:
13089
13090 @example
13091 #+STARTUP: odd
13092 #+STARTUP: oddeven
13093 @end example
13094
13095 You can convert an Org file from single-star-per-level to the
13096 double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels
13097 RET} in that file. The reverse operation is @kbd{M-x
13098 org-convert-to-oddeven-levels}.
13099 @end enumerate
13100
13101 @node TTY keys, Interaction, Clean view, Miscellaneous
13102 @section Using Org on a tty
13103 @cindex tty key bindings
13104
13105 Because Org contains a large number of commands, by default many of
13106 Org's core commands are bound to keys that are generally not
13107 accessible on a tty, such as the cursor keys (@key{left}, @key{right},
13108 @key{up}, @key{down}), @key{TAB} and @key{RET}, in particular when used
13109 together with modifiers like @key{Meta} and/or @key{Shift}. To access
13110 these commands on a tty when special keys are unavailable, the following
13111 alternative bindings can be used. The tty bindings below will likely be
13112 more cumbersome; you may find for some of the bindings below that a
13113 customized workaround suits you better. For example, changing a timestamp
13114 is really only fun with @kbd{S-@key{cursor}} keys, whereas on a
13115 tty you would rather use @kbd{C-c .} to re-insert the timestamp.
13116
13117 @multitable @columnfractions 0.15 0.2 0.1 0.2
13118 @item @b{Default} @tab @b{Alternative 1} @tab @b{Speed key} @tab @b{Alternative 2}
13119 @item @kbd{S-@key{TAB}} @tab @kbd{C-u @key{TAB}} @tab @kbd{C} @tab
13120 @item @kbd{M-@key{left}} @tab @kbd{C-c C-x l} @tab @kbd{l} @tab @kbd{@key{Esc} @key{left}}
13121 @item @kbd{M-S-@key{left}} @tab @kbd{C-c C-x L} @tab @kbd{L} @tab
13122 @item @kbd{M-@key{right}} @tab @kbd{C-c C-x r} @tab @kbd{r} @tab @kbd{@key{Esc} @key{right}}
13123 @item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R} @tab @kbd{R} @tab
13124 @item @kbd{M-@key{up}} @tab @kbd{C-c C-x u} @tab @kbd{ } @tab @kbd{@key{Esc} @key{up}}
13125 @item @kbd{M-S-@key{up}} @tab @kbd{C-c C-x U} @tab @kbd{U} @tab
13126 @item @kbd{M-@key{down}} @tab @kbd{C-c C-x d} @tab @kbd{ } @tab @kbd{@key{Esc} @key{down}}
13127 @item @kbd{M-S-@key{down}} @tab @kbd{C-c C-x D} @tab @kbd{D} @tab
13128 @item @kbd{S-@key{RET}} @tab @kbd{C-c C-x c} @tab @kbd{ } @tab
13129 @item @kbd{M-@key{RET}} @tab @kbd{C-c C-x m} @tab @kbd{ } @tab @kbd{@key{Esc} @key{RET}}
13130 @item @kbd{M-S-@key{RET}} @tab @kbd{C-c C-x M} @tab @kbd{ } @tab
13131 @item @kbd{S-@key{left}} @tab @kbd{C-c @key{left}} @tab @kbd{ } @tab
13132 @item @kbd{S-@key{right}} @tab @kbd{C-c @key{right}} @tab @kbd{ } @tab
13133 @item @kbd{S-@key{up}} @tab @kbd{C-c @key{up}} @tab @kbd{ } @tab
13134 @item @kbd{S-@key{down}} @tab @kbd{C-c @key{down}} @tab @kbd{ } @tab
13135 @item @kbd{C-S-@key{left}} @tab @kbd{C-c C-x @key{left}} @tab @kbd{ } @tab
13136 @item @kbd{C-S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab @kbd{ } @tab
13137 @end multitable
13138
13139
13140 @node Interaction, , TTY keys, Miscellaneous
13141 @section Interaction with other packages
13142 @cindex packages, interaction with other
13143 Org lives in the world of GNU Emacs and interacts in various ways
13144 with other code out there.
13145
13146 @menu
13147 * Cooperation:: Packages Org cooperates with
13148 * Conflicts:: Packages that lead to conflicts
13149 @end menu
13150
13151 @node Cooperation, Conflicts, Interaction, Interaction
13152 @subsection Packages that Org cooperates with
13153
13154 @table @asis
13155 @cindex @file{calc.el}
13156 @cindex Gillespie, Dave
13157 @item @file{calc.el} by Dave Gillespie
13158 Org uses the Calc package for implementing spreadsheet
13159 functionality in its tables (@pxref{The spreadsheet}). Org
13160 checks for the availability of Calc by looking for the function
13161 @code{calc-eval} which will have been autoloaded during setup if Calc has
13162 been installed properly. As of Emacs 22, Calc is part of the Emacs
13163 distribution. Another possibility for interaction between the two
13164 packages is using Calc for embedded calculations. @xref{Embedded Mode,
13165 , Embedded Mode, Calc, GNU Emacs Calc Manual}.
13166 @item @file{constants.el} by Carsten Dominik
13167 @cindex @file{constants.el}
13168 @cindex Dominik, Carsten
13169 @vindex org-table-formula-constants
13170 In a table formula (@pxref{The spreadsheet}), it is possible to use
13171 names for natural constants or units. Instead of defining your own
13172 constants in the variable @code{org-table-formula-constants}, install
13173 the @file{constants} package which defines a large number of constants
13174 and units, and lets you use unit prefixes like @samp{M} for
13175 @samp{Mega}, etc@. You will need version 2.0 of this package, available
13176 at @url{http://www.astro.uva.nl/~dominik/Tools}. Org checks for
13177 the function @code{constants-get}, which has to be autoloaded in your
13178 setup. See the installation instructions in the file
13179 @file{constants.el}.
13180 @item @file{cdlatex.el} by Carsten Dominik
13181 @cindex @file{cdlatex.el}
13182 @cindex Dominik, Carsten
13183 Org-mode can make use of the CDLa@TeX{} package to efficiently enter
13184 La@TeX{} fragments into Org files. See @ref{CDLaTeX mode}.
13185 @item @file{imenu.el} by Ake Stenhoff and Lars Lindberg
13186 @cindex @file{imenu.el}
13187 Imenu allows menu access to an index of items in a file. Org-mode
13188 supports Imenu---all you need to do to get the index is the following:
13189 @lisp
13190 (add-hook 'org-mode-hook
13191 (lambda () (imenu-add-to-menubar "Imenu")))
13192 @end lisp
13193 @vindex org-imenu-depth
13194 By default the index is two levels deep---you can modify the depth using
13195 the option @code{org-imenu-depth}.
13196 @item @file{remember.el} by John Wiegley
13197 @cindex @file{remember.el}
13198 @cindex Wiegley, John
13199 Org used to use this package for capture, but no longer does.
13200 @item @file{speedbar.el} by Eric M. Ludlam
13201 @cindex @file{speedbar.el}
13202 @cindex Ludlam, Eric M.
13203 Speedbar is a package that creates a special frame displaying files and
13204 index items in files. Org-mode supports Speedbar and allows you to
13205 drill into Org files directly from the Speedbar. It also allows you to
13206 restrict the scope of agenda commands to a file or a subtree by using
13207 the command @kbd{<} in the Speedbar frame.
13208 @cindex @file{table.el}
13209 @item @file{table.el} by Takaaki Ota
13210 @kindex C-c C-c
13211 @cindex table editor, @file{table.el}
13212 @cindex @file{table.el}
13213 @cindex Ota, Takaaki
13214
13215 Complex ASCII tables with automatic line wrapping, column- and row-spanning,
13216 and alignment can be created using the Emacs table package by Takaaki Ota
13217 (@uref{http://sourceforge.net/projects/table}, and also part of Emacs 22).
13218 Org-mode will recognize these tables and export them properly. Because of
13219 interference with other Org-mode functionality, you unfortunately cannot edit
13220 these tables directly in the buffer. Instead, you need to use the command
13221 @kbd{C-c '} to edit them, similar to source code snippets.
13222
13223 @table @kbd
13224 @kindex C-c '
13225 @item C-c '
13226 Edit a @file{table.el} table. Works when the cursor is in a table.el table.
13227 @c
13228 @kindex C-c ~
13229 @item C-c ~
13230 Insert a @file{table.el} table. If there is already a table at point, this
13231 command converts it between the @file{table.el} format and the Org-mode
13232 format. See the documentation string of the command
13233 @code{org-convert-table} for the restrictions under which this is
13234 possible.
13235 @end table
13236 @file{table.el} is part of Emacs since Emacs 22.
13237 @item @file{footnote.el} by Steven L. Baur
13238 @cindex @file{footnote.el}
13239 @cindex Baur, Steven L.
13240 Org-mode recognizes numerical footnotes as provided by this package.
13241 However, Org-mode also has its own footnote support (@pxref{Footnotes}),
13242 which makes using @file{footnote.el} unnecessary.
13243 @end table
13244
13245 @node Conflicts, , Cooperation, Interaction
13246 @subsection Packages that lead to conflicts with Org-mode
13247
13248 @table @asis
13249
13250 @cindex @code{shift-selection-mode}
13251 @vindex org-support-shift-select
13252 In Emacs 23, @code{shift-selection-mode} is on by default, meaning that
13253 cursor motions combined with the shift key should start or enlarge regions.
13254 This conflicts with the use of @kbd{S-@key{cursor}} commands in Org to change
13255 timestamps, TODO keywords, priorities, and item bullet types if the cursor is
13256 at such a location. By default, @kbd{S-@key{cursor}} commands outside
13257 special contexts don't do anything, but you can customize the variable
13258 @code{org-support-shift-select}. Org-mode then tries to accommodate shift
13259 selection by (i) using it outside of the special contexts where special
13260 commands apply, and by (ii) extending an existing active region even if the
13261 cursor moves across a special context.
13262
13263 @item @file{CUA.el} by Kim. F. Storm
13264 @cindex @file{CUA.el}
13265 @cindex Storm, Kim. F.
13266 @vindex org-replace-disputed-keys
13267 Key bindings in Org conflict with the @kbd{S-<cursor>} keys used by CUA mode
13268 (as well as @code{pc-select-mode} and @code{s-region-mode}) to select and extend the
13269 region. In fact, Emacs 23 has this built-in in the form of
13270 @code{shift-selection-mode}, see previous paragraph. If you are using Emacs
13271 23, you probably don't want to use another package for this purpose. However,
13272 if you prefer to leave these keys to a different package while working in
13273 Org-mode, configure the variable @code{org-replace-disputed-keys}. When set,
13274 Org will move the following key bindings in Org files, and in the agenda
13275 buffer (but not during date selection).
13276
13277 @example
13278 S-UP -> M-p S-DOWN -> M-n
13279 S-LEFT -> M-- S-RIGHT -> M-+
13280 C-S-LEFT -> M-S-- C-S-RIGHT -> M-S-+
13281 @end example
13282
13283 @vindex org-disputed-keys
13284 Yes, these are unfortunately more difficult to remember. If you want
13285 to have other replacement keys, look at the variable
13286 @code{org-disputed-keys}.
13287
13288 @item @file{yasnippet.el}
13289 @cindex @file{yasnippet.el}
13290 The way Org-mode binds the TAB key (binding to @code{[tab]} instead of
13291 @code{"\t"}) overrules yasnippets' access to this key. The following code
13292 fixed this problem:
13293
13294 @lisp
13295 (add-hook 'org-mode-hook
13296 (lambda ()
13297 (org-set-local 'yas/trigger-key [tab])
13298 (define-key yas/keymap [tab] 'yas/next-field-group)))
13299 @end lisp
13300
13301 @item @file{windmove.el} by Hovav Shacham
13302 @cindex @file{windmove.el}
13303 This package also uses the @kbd{S-<cursor>} keys, so everything written
13304 in the paragraph above about CUA mode also applies here. If you want make
13305 the windmove function active in locations where Org-mode does not have
13306 special functionality on @kbd{S-@key{cursor}}, add this to your
13307 configuration:
13308
13309 @lisp
13310 ;; Make windmove work in org-mode:
13311 (add-hook 'org-shiftup-final-hook 'windmove-up)
13312 (add-hook 'org-shiftleft-final-hook 'windmove-left)
13313 (add-hook 'org-shiftdown-final-hook 'windmove-down)
13314 (add-hook 'org-shiftright-final-hook 'windmove-right)
13315 @end lisp
13316
13317 @item @file{viper.el} by Michael Kifer
13318 @cindex @file{viper.el}
13319 @kindex C-c /
13320 Viper uses @kbd{C-c /} and therefore makes this key not access the
13321 corresponding Org-mode command @code{org-sparse-tree}. You need to find
13322 another key for this command, or override the key in
13323 @code{viper-vi-global-user-map} with
13324
13325 @lisp
13326 (define-key viper-vi-global-user-map "C-c /" 'org-sparse-tree)
13327 @end lisp
13328
13329 @end table
13330
13331
13332 @node Hacking, MobileOrg, Miscellaneous, Top
13333 @appendix Hacking
13334 @cindex hacking
13335
13336 This appendix covers some aspects where users can extend the functionality of
13337 Org.
13338
13339 @menu
13340 * Hooks:: Who to reach into Org's internals
13341 * Add-on packages:: Available extensions
13342 * Adding hyperlink types:: New custom link types
13343 * Context-sensitive commands:: How to add functionality to such commands
13344 * Tables in arbitrary syntax:: Orgtbl for La@TeX{} and other programs
13345 * Dynamic blocks:: Automatically filled blocks
13346 * Special agenda views:: Customized views
13347 * Extracting agenda information:: Postprocessing of agenda information
13348 * Using the property API:: Writing programs that use entry properties
13349 * Using the mapping API:: Mapping over all or selected entries
13350 @end menu
13351
13352 @node Hooks, Add-on packages, Hacking, Hacking
13353 @section Hooks
13354 @cindex hooks
13355
13356 Org has a large number of hook variables that can be used to add
13357 functionality. This appendix about hacking is going to illustrate the
13358 use of some of them. A complete list of all hooks with documentation is
13359 maintained by the Worg project and can be found at
13360 @uref{http://orgmode.org/worg/org-configs/org-hooks.php}.
13361
13362 @node Add-on packages, Adding hyperlink types, Hooks, Hacking
13363 @section Add-on packages
13364 @cindex add-on packages
13365
13366 A large number of add-on packages have been written by various authors.
13367 These packages are not part of Emacs, but they are distributed as contributed
13368 packages with the separate release available at the Org-mode home page at
13369 @uref{http://orgmode.org}. The list of contributed packages, along with
13370 documentation about each package, is maintained by the Worg project at
13371 @uref{http://orgmode.org/worg/org-contrib/}.
13372
13373
13374
13375 @node Adding hyperlink types, Context-sensitive commands, Add-on packages, Hacking
13376 @section Adding hyperlink types
13377 @cindex hyperlinks, adding new types
13378
13379 Org has a large number of hyperlink types built-in
13380 (@pxref{Hyperlinks}). If you would like to add new link types, Org
13381 provides an interface for doing so. Let's look at an example file,
13382 @file{org-man.el}, that will add support for creating links like
13383 @samp{[[man:printf][The printf manpage]]} to show Unix manual pages inside
13384 Emacs:
13385
13386 @lisp
13387 ;;; org-man.el - Support for links to manpages in Org
13388
13389 (require 'org)
13390
13391 (org-add-link-type "man" 'org-man-open)
13392 (add-hook 'org-store-link-functions 'org-man-store-link)
13393
13394 (defcustom org-man-command 'man
13395 "The Emacs command to be used to display a man page."
13396 :group 'org-link
13397 :type '(choice (const man) (const woman)))
13398
13399 (defun org-man-open (path)
13400 "Visit the manpage on PATH.
13401 PATH should be a topic that can be thrown at the man command."
13402 (funcall org-man-command path))
13403
13404 (defun org-man-store-link ()
13405 "Store a link to a manpage."
13406 (when (memq major-mode '(Man-mode woman-mode))
13407 ;; This is a man page, we do make this link
13408 (let* ((page (org-man-get-page-name))
13409 (link (concat "man:" page))
13410 (description (format "Manpage for %s" page)))
13411 (org-store-link-props
13412 :type "man"
13413 :link link
13414 :description description))))
13415
13416 (defun org-man-get-page-name ()
13417 "Extract the page name from the buffer name."
13418 ;; This works for both `Man-mode' and `woman-mode'.
13419 (if (string-match " \\(\\S-+\\)\\*" (buffer-name))
13420 (match-string 1 (buffer-name))
13421 (error "Cannot create link to this man page")))
13422
13423 (provide 'org-man)
13424
13425 ;;; org-man.el ends here
13426 @end lisp
13427
13428 @noindent
13429 You would activate this new link type in @file{.emacs} with
13430
13431 @lisp
13432 (require 'org-man)
13433 @end lisp
13434
13435 @noindent
13436 Let's go through the file and see what it does.
13437 @enumerate
13438 @item
13439 It does @code{(require 'org)} to make sure that @file{org.el} has been
13440 loaded.
13441 @item
13442 The next line calls @code{org-add-link-type} to define a new link type
13443 with prefix @samp{man}. The call also contains the name of a function
13444 that will be called to follow such a link.
13445 @item
13446 @vindex org-store-link-functions
13447 The next line adds a function to @code{org-store-link-functions}, in
13448 order to allow the command @kbd{C-c l} to record a useful link in a
13449 buffer displaying a man page.
13450 @end enumerate
13451
13452 The rest of the file defines the necessary variables and functions.
13453 First there is a customization variable that determines which Emacs
13454 command should be used to display man pages. There are two options,
13455 @code{man} and @code{woman}. Then the function to follow a link is
13456 defined. It gets the link path as an argument---in this case the link
13457 path is just a topic for the manual command. The function calls the
13458 value of @code{org-man-command} to display the man page.
13459
13460 Finally the function @code{org-man-store-link} is defined. When you try
13461 to store a link with @kbd{C-c l}, this function will be called to
13462 try to make a link. The function must first decide if it is supposed to
13463 create the link for this buffer type; we do this by checking the value
13464 of the variable @code{major-mode}. If not, the function must exit and
13465 return the value @code{nil}. If yes, the link is created by getting the
13466 manual topic from the buffer name and prefixing it with the string
13467 @samp{man:}. Then it must call the command @code{org-store-link-props}
13468 and set the @code{:type} and @code{:link} properties. Optionally you
13469 can also set the @code{:description} property to provide a default for
13470 the link description when the link is later inserted into an Org
13471 buffer with @kbd{C-c C-l}.
13472
13473 When is makes sense for your new link type, you may also define a function
13474 @code{org-PREFIX-complete-link} that implements special (e.g. completion)
13475 support for inserting such a link with @kbd{C-c C-l}. Such a function should
13476 not accept any arguments, and return the full link with prefix.
13477
13478 @node Context-sensitive commands, Tables in arbitrary syntax, Adding hyperlink types, Hacking
13479 @section Context-sensitive commands
13480 @cindex context-sensitive commands, hooks
13481 @cindex add-ons, context-sensitive commands
13482 @vindex org-ctrl-c-ctrl-c-hook
13483
13484 Org has several commands that act differently depending on context. The most
13485 important example it the @kbd{C-c C-c} (@pxref{The very busy C-c C-c key}).
13486 Also the @kbd{M-cursor} and @kbd{M-S-cursor} keys have this property.
13487
13488 Add-ons can tap into this functionality by providing a function that detects
13489 special context for that add-on and executes functionality appropriate for
13490 the context. Here is an example from Dan Davison's @file{org-R.el} which
13491 allows you to evaluate commands based on the @file{R} programming language
13492 @footnote{@file{org-R.el} has been replaced by the org-mode functionality
13493 described in @ref{Working With Source Code} and is now obsolete.}. For this
13494 package, special contexts are lines that start with @code{#+R:} or
13495 @code{#+RR:}.
13496
13497 @lisp
13498 (defun org-R-apply-maybe ()
13499 "Detect if this is context for org-R and execute R commands."
13500 (if (save-excursion
13501 (beginning-of-line 1)
13502 (looking-at "#\\+RR?:"))
13503 (progn (call-interactively 'org-R-apply)
13504 t) ;; to signal that we took action
13505 nil)) ;; to signal that we did not
13506
13507 (add-hook 'org-ctrl-c-ctrl-c-hook 'org-R-apply-maybe)
13508 @end lisp
13509
13510 The function first checks if the cursor is in such a line. If that is the
13511 case, @code{org-R-apply} is called and the function returns @code{t} to
13512 signal that action was taken, and @kbd{C-c C-c} will stop looking for other
13513 contexts. If the function finds it should do nothing locally, it returns @code{nil} so that other, similar functions can have a try.
13514
13515
13516 @node Tables in arbitrary syntax, Dynamic blocks, Context-sensitive commands, Hacking
13517 @section Tables and lists in arbitrary syntax
13518 @cindex tables, in other modes
13519 @cindex lists, in other modes
13520 @cindex Orgtbl mode
13521
13522 Since Orgtbl mode can be used as a minor mode in arbitrary buffers, a
13523 frequent feature request has been to make it work with native tables in
13524 specific languages, for example La@TeX{}. However, this is extremely
13525 hard to do in a general way, would lead to a customization nightmare,
13526 and would take away much of the simplicity of the Orgtbl-mode table
13527 editor.
13528
13529 This appendix describes a different approach. We keep the Orgtbl mode
13530 table in its native format (the @i{source table}), and use a custom
13531 function to @i{translate} the table to the correct syntax, and to
13532 @i{install} it in the right location (the @i{target table}). This puts
13533 the burden of writing conversion functions on the user, but it allows
13534 for a very flexible system.
13535
13536 Bastien added the ability to do the same with lists, in Orgstruct mode. You
13537 can use Org's facilities to edit and structure lists by turning
13538 @code{orgstruct-mode} on, then locally exporting such lists in another format
13539 (HTML, La@TeX{} or Texinfo.)
13540
13541
13542 @menu
13543 * Radio tables:: Sending and receiving radio tables
13544 * A LaTeX example:: Step by step, almost a tutorial
13545 * Translator functions:: Copy and modify
13546 * Radio lists:: Doing the same for lists
13547 @end menu
13548
13549 @node Radio tables, A LaTeX example, Tables in arbitrary syntax, Tables in arbitrary syntax
13550 @subsection Radio tables
13551 @cindex radio tables
13552
13553 To define the location of the target table, you first need to create two
13554 lines that are comments in the current mode, but contain magic words for
13555 Orgtbl mode to find. Orgtbl mode will insert the translated table
13556 between these lines, replacing whatever was there before. For example:
13557
13558 @example
13559 /* BEGIN RECEIVE ORGTBL table_name */
13560 /* END RECEIVE ORGTBL table_name */
13561 @end example
13562
13563 @noindent
13564 Just above the source table, we put a special line that tells
13565 Orgtbl mode how to translate this table and where to install it. For
13566 example:
13567 @cindex #+ORGTBL
13568 @example
13569 #+ORGTBL: SEND table_name translation_function arguments....
13570 @end example
13571
13572 @noindent
13573 @code{table_name} is the reference name for the table that is also used
13574 in the receiver lines. @code{translation_function} is the Lisp function
13575 that does the translation. Furthermore, the line can contain a list of
13576 arguments (alternating key and value) at the end. The arguments will be
13577 passed as a property list to the translation function for
13578 interpretation. A few standard parameters are already recognized and
13579 acted upon before the translation function is called:
13580
13581 @table @code
13582 @item :skip N
13583 Skip the first N lines of the table. Hlines do count as separate lines for
13584 this parameter!
13585
13586 @item :skipcols (n1 n2 ...)
13587 List of columns that should be skipped. If the table has a column with
13588 calculation marks, that column is automatically discarded as well.
13589 Please note that the translator function sees the table @emph{after} the
13590 removal of these columns, the function never knows that there have been
13591 additional columns.
13592 @end table
13593
13594 @noindent
13595 The one problem remaining is how to keep the source table in the buffer
13596 without disturbing the normal workings of the file, for example during
13597 compilation of a C file or processing of a La@TeX{} file. There are a
13598 number of different solutions:
13599
13600 @itemize @bullet
13601 @item
13602 The table could be placed in a block comment if that is supported by the
13603 language. For example, in C mode you could wrap the table between
13604 @samp{/*} and @samp{*/} lines.
13605 @item
13606 Sometimes it is possible to put the table after some kind of @i{END}
13607 statement, for example @samp{\bye} in @TeX{} and @samp{\end@{document@}}
13608 in La@TeX{}.
13609 @item
13610 You can just comment the table line-by-line whenever you want to process
13611 the file, and uncomment it whenever you need to edit the table. This
13612 only sounds tedious---the command @kbd{M-x orgtbl-toggle-comment}
13613 makes this comment-toggling very easy, in particular if you bind it to a
13614 key.
13615 @end itemize
13616
13617 @node A LaTeX example, Translator functions, Radio tables, Tables in arbitrary syntax
13618 @subsection A La@TeX{} example of radio tables
13619 @cindex La@TeX{}, and Orgtbl mode
13620
13621 The best way to wrap the source table in La@TeX{} is to use the
13622 @code{comment} environment provided by @file{comment.sty}. It has to be
13623 activated by placing @code{\usepackage@{comment@}} into the document
13624 header. Orgtbl mode can insert a radio table skeleton@footnote{By
13625 default this works only for La@TeX{}, HTML, and Texinfo. Configure the
13626 variable @code{orgtbl-radio-tables} to install templates for other
13627 modes.} with the command @kbd{M-x orgtbl-insert-radio-table}. You will
13628 be prompted for a table name, let's say we use @samp{salesfigures}. You
13629 will then get the following template:
13630
13631 @cindex #+ORGTBL, SEND
13632 @example
13633 % BEGIN RECEIVE ORGTBL salesfigures
13634 % END RECEIVE ORGTBL salesfigures
13635 \begin@{comment@}
13636 #+ORGTBL: SEND salesfigures orgtbl-to-latex
13637 | | |
13638 \end@{comment@}
13639 @end example
13640
13641 @noindent
13642 @vindex La@TeX{}-verbatim-environments
13643 The @code{#+ORGTBL: SEND} line tells Orgtbl mode to use the function
13644 @code{orgtbl-to-latex} to convert the table into La@TeX{} and to put it
13645 into the receiver location with name @code{salesfigures}. You may now
13646 fill in the table, feel free to use the spreadsheet features@footnote{If
13647 the @samp{#+TBLFM} line contains an odd number of dollar characters,
13648 this may cause problems with font-lock in La@TeX{} mode. As shown in the
13649 example you can fix this by adding an extra line inside the
13650 @code{comment} environment that is used to balance the dollar
13651 expressions. If you are using AUC@TeX{} with the font-latex library, a
13652 much better solution is to add the @code{comment} environment to the
13653 variable @code{LaTeX-verbatim-environments}.}:
13654
13655 @example
13656 % BEGIN RECEIVE ORGTBL salesfigures
13657 % END RECEIVE ORGTBL salesfigures
13658 \begin@{comment@}
13659 #+ORGTBL: SEND salesfigures orgtbl-to-latex
13660 | Month | Days | Nr sold | per day |
13661 |-------+------+---------+---------|
13662 | Jan | 23 | 55 | 2.4 |
13663 | Feb | 21 | 16 | 0.8 |
13664 | March | 22 | 278 | 12.6 |
13665 #+TBLFM: $4=$3/$2;%.1f
13666 % $ (optional extra dollar to keep font-lock happy, see footnote)
13667 \end@{comment@}
13668 @end example
13669
13670 @noindent
13671 When you are done, press @kbd{C-c C-c} in the table to get the converted
13672 table inserted between the two marker lines.
13673
13674 Now let's assume you want to make the table header by hand, because you
13675 want to control how columns are aligned, etc@. In this case we make sure
13676 that the table translator skips the first 2 lines of the source
13677 table, and tell the command to work as a @i{splice}, i.e. to not produce
13678 header and footer commands of the target table:
13679
13680 @example
13681 \begin@{tabular@}@{lrrr@}
13682 Month & \multicolumn@{1@}@{c@}@{Days@} & Nr.\ sold & per day\\
13683 % BEGIN RECEIVE ORGTBL salesfigures
13684 % END RECEIVE ORGTBL salesfigures
13685 \end@{tabular@}
13686 %
13687 \begin@{comment@}
13688 #+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2
13689 | Month | Days | Nr sold | per day |
13690 |-------+------+---------+---------|
13691 | Jan | 23 | 55 | 2.4 |
13692 | Feb | 21 | 16 | 0.8 |
13693 | March | 22 | 278 | 12.6 |
13694 #+TBLFM: $4=$3/$2;%.1f
13695 \end@{comment@}
13696 @end example
13697
13698 The La@TeX{} translator function @code{orgtbl-to-latex} is already part of
13699 Orgtbl mode. It uses a @code{tabular} environment to typeset the table
13700 and marks horizontal lines with @code{\hline}. Furthermore, it
13701 interprets the following parameters (see also @pxref{Translator functions}):
13702
13703 @table @code
13704 @item :splice nil/t
13705 When set to t, return only table body lines, don't wrap them into a
13706 tabular environment. Default is nil.
13707
13708 @item :fmt fmt
13709 A format to be used to wrap each field, it should contain @code{%s} for the
13710 original field value. For example, to wrap each field value in dollars,
13711 you could use @code{:fmt "$%s$"}. This may also be a property list with
13712 column numbers and formats. for example @code{:fmt (2 "$%s$" 4 "%s\\%%")}.
13713 A function of one argument can be used in place of the strings; the
13714 function must return a formatted string.
13715
13716 @item :efmt efmt
13717 Use this format to print numbers with exponentials. The format should
13718 have @code{%s} twice for inserting mantissa and exponent, for example
13719 @code{"%s\\times10^@{%s@}"}. The default is @code{"%s\\,(%s)"}. This
13720 may also be a property list with column numbers and formats, for example
13721 @code{:efmt (2 "$%s\\times10^@{%s@}$" 4 "$%s\\cdot10^@{%s@}$")}. After
13722 @code{efmt} has been applied to a value, @code{fmt} will also be
13723 applied. Similar to @code{fmt}, functions of two arguments can be
13724 supplied instead of strings.
13725 @end table
13726
13727 @node Translator functions, Radio lists, A LaTeX example, Tables in arbitrary syntax
13728 @subsection Translator functions
13729 @cindex HTML, and Orgtbl mode
13730 @cindex translator function
13731
13732 Orgtbl mode has several translator functions built-in: @code{orgtbl-to-csv}
13733 (comma-separated values), @code{orgtbl-to-tsv} (TAB-separated values)
13734 @code{orgtbl-to-latex}, @code{orgtbl-to-html}, and @code{orgtbl-to-texinfo}.
13735 Except for @code{orgtbl-to-html}@footnote{The HTML translator uses the same
13736 code that produces tables during HTML export.}, these all use a generic
13737 translator, @code{orgtbl-to-generic}. For example, @code{orgtbl-to-latex}
13738 itself is a very short function that computes the column definitions for the
13739 @code{tabular} environment, defines a few field and line separators and then
13740 hands processing over to the generic translator. Here is the entire code:
13741
13742 @lisp
13743 @group
13744 (defun orgtbl-to-latex (table params)
13745 "Convert the Orgtbl mode TABLE to LaTeX."
13746 (let* ((alignment (mapconcat (lambda (x) (if x "r" "l"))
13747 org-table-last-alignment ""))
13748 (params2
13749 (list
13750 :tstart (concat "\\begin@{tabular@}@{" alignment "@}")
13751 :tend "\\end@{tabular@}"
13752 :lstart "" :lend " \\\\" :sep " & "
13753 :efmt "%s\\,(%s)" :hline "\\hline")))
13754 (orgtbl-to-generic table (org-combine-plists params2 params))))
13755 @end group
13756 @end lisp
13757
13758 As you can see, the properties passed into the function (variable
13759 @var{PARAMS}) are combined with the ones newly defined in the function
13760 (variable @var{PARAMS2}). The ones passed into the function (i.e. the
13761 ones set by the @samp{ORGTBL SEND} line) take precedence. So if you
13762 would like to use the La@TeX{} translator, but wanted the line endings to
13763 be @samp{\\[2mm]} instead of the default @samp{\\}, you could just
13764 overrule the default with
13765
13766 @example
13767 #+ORGTBL: SEND test orgtbl-to-latex :lend " \\\\[2mm]"
13768 @end example
13769
13770 For a new language, you can either write your own converter function in
13771 analogy with the La@TeX{} translator, or you can use the generic function
13772 directly. For example, if you have a language where a table is started
13773 with @samp{!BTBL!}, ended with @samp{!ETBL!}, and where table lines are
13774 started with @samp{!BL!}, ended with @samp{!EL!}, and where the field
13775 separator is a TAB, you could call the generic translator like this (on
13776 a single line!):
13777
13778 @example
13779 #+ORGTBL: SEND test orgtbl-to-generic :tstart "!BTBL!" :tend "!ETBL!"
13780 :lstart "!BL! " :lend " !EL!" :sep "\t"
13781 @end example
13782
13783 @noindent
13784 Please check the documentation string of the function
13785 @code{orgtbl-to-generic} for a full list of parameters understood by
13786 that function, and remember that you can pass each of them into
13787 @code{orgtbl-to-latex}, @code{orgtbl-to-texinfo}, and any other function
13788 using the generic function.
13789
13790 Of course you can also write a completely new function doing complicated
13791 things the generic translator cannot do. A translator function takes
13792 two arguments. The first argument is the table, a list of lines, each
13793 line either the symbol @code{hline} or a list of fields. The second
13794 argument is the property list containing all parameters specified in the
13795 @samp{#+ORGTBL: SEND} line. The function must return a single string
13796 containing the formatted table. If you write a generally useful
13797 translator, please post it on @email{emacs-orgmode@@gnu.org} so that
13798 others can benefit from your work.
13799
13800 @node Radio lists, , Translator functions, Tables in arbitrary syntax
13801 @subsection Radio lists
13802 @cindex radio lists
13803 @cindex org-list-insert-radio-list
13804
13805 Sending and receiving radio lists works exactly the same way than sending and
13806 receiving radio tables (@pxref{Radio tables}). As for radio tables, you can
13807 insert radio lists templates in HTML, La@TeX{} and Texinfo modes by calling
13808 @code{org-list-insert-radio-list}.
13809
13810 Here are the differences with radio tables:
13811
13812 @itemize @minus
13813 @item
13814 Orgstruct mode must be active.
13815 @item
13816 Use the @code{ORGLST} keyword instead of @code{ORGTBL}.
13817 @item
13818 The available translation functions for radio lists don't take
13819 parameters.
13820 @item
13821 @kbd{C-c C-c} will work when pressed on the first item of the list.
13822 @end itemize
13823
13824 Here is a La@TeX{} example. Let's say that you have this in your
13825 La@TeX{} file:
13826
13827 @cindex #+ORGLST
13828 @example
13829 % BEGIN RECEIVE ORGLST to-buy
13830 % END RECEIVE ORGLST to-buy
13831 \begin@{comment@}
13832 #+ORGLST: SEND to-buy org-list-to-latex
13833 - a new house
13834 - a new computer
13835 + a new keyboard
13836 + a new mouse
13837 - a new life
13838 \end@{comment@}
13839 @end example
13840
13841 Pressing `C-c C-c' on @code{a new house} and will insert the converted
13842 La@TeX{} list between the two marker lines.
13843
13844 @node Dynamic blocks, Special agenda views, Tables in arbitrary syntax, Hacking
13845 @section Dynamic blocks
13846 @cindex dynamic blocks
13847
13848 Org documents can contain @emph{dynamic blocks}. These are
13849 specially marked regions that are updated by some user-written function.
13850 A good example for such a block is the clock table inserted by the
13851 command @kbd{C-c C-x C-r} (@pxref{Clocking work time}).
13852
13853 Dynamic block are enclosed by a BEGIN-END structure that assigns a name
13854 to the block and can also specify parameters for the function producing
13855 the content of the block.
13856
13857 #+BEGIN:dynamic block
13858 @example
13859 #+BEGIN: myblock :parameter1 value1 :parameter2 value2 ...
13860
13861 #+END:
13862 @end example
13863
13864 Dynamic blocks are updated with the following commands
13865
13866 @table @kbd
13867 @kindex C-c C-x C-u
13868 @item C-c C-x C-u
13869 Update dynamic block at point.
13870 @kindex C-u C-c C-x C-u
13871 @item C-u C-c C-x C-u
13872 Update all dynamic blocks in the current file.
13873 @end table
13874
13875 Updating a dynamic block means to remove all the text between BEGIN and
13876 END, parse the BEGIN line for parameters and then call the specific
13877 writer function for this block to insert the new content. If you want
13878 to use the original content in the writer function, you can use the
13879 extra parameter @code{:content}.
13880
13881 For a block with name @code{myblock}, the writer function is
13882 @code{org-dblock-write:myblock} with as only parameter a property list
13883 with the parameters given in the begin line. Here is a trivial example
13884 of a block that keeps track of when the block update function was last
13885 run:
13886
13887 @example
13888 #+BEGIN: block-update-time :format "on %m/%d/%Y at %H:%M"
13889
13890 #+END:
13891 @end example
13892
13893 @noindent
13894 The corresponding block writer function could look like this:
13895
13896 @lisp
13897 (defun org-dblock-write:block-update-time (params)
13898 (let ((fmt (or (plist-get params :format) "%d. %m. %Y")))
13899 (insert "Last block update at: "
13900 (format-time-string fmt (current-time)))))
13901 @end lisp
13902
13903 If you want to make sure that all dynamic blocks are always up-to-date,
13904 you could add the function @code{org-update-all-dblocks} to a hook, for
13905 example @code{before-save-hook}. @code{org-update-all-dblocks} is
13906 written in a way such that it does nothing in buffers that are not in
13907 @code{org-mode}.
13908
13909 @node Special agenda views, Extracting agenda information, Dynamic blocks, Hacking
13910 @section Special agenda views
13911 @cindex agenda views, user-defined
13912
13913 Org provides a special hook that can be used to narrow down the selection
13914 made by these agenda views: @code{todo}, @code{alltodo}, @code{tags}, @code{tags-todo},
13915 @code{tags-tree}. You may specify a function that is used at each match to verify
13916 if the match should indeed be part of the agenda view, and if not, how
13917 much should be skipped.
13918
13919 Let's say you want to produce a list of projects that contain a WAITING
13920 tag anywhere in the project tree. Let's further assume that you have
13921 marked all tree headings that define a project with the TODO keyword
13922 PROJECT. In this case you would run a TODO search for the keyword
13923 PROJECT, but skip the match unless there is a WAITING tag anywhere in
13924 the subtree belonging to the project line.
13925
13926 To achieve this, you must write a function that searches the subtree for
13927 the tag. If the tag is found, the function must return @code{nil} to
13928 indicate that this match should not be skipped. If there is no such
13929 tag, return the location of the end of the subtree, to indicate that
13930 search should continue from there.
13931
13932 @lisp
13933 (defun my-skip-unless-waiting ()
13934 "Skip trees that are not waiting"
13935 (let ((subtree-end (save-excursion (org-end-of-subtree t))))
13936 (if (re-search-forward ":waiting:" subtree-end t)
13937 nil ; tag found, do not skip
13938 subtree-end))) ; tag not found, continue after end of subtree
13939 @end lisp
13940
13941 Now you may use this function in an agenda custom command, for example
13942 like this:
13943
13944 @lisp
13945 (org-add-agenda-custom-command
13946 '("b" todo "PROJECT"
13947 ((org-agenda-skip-function 'my-skip-unless-waiting)
13948 (org-agenda-overriding-header "Projects waiting for something: "))))
13949 @end lisp
13950
13951 @vindex org-agenda-overriding-header
13952 Note that this also binds @code{org-agenda-overriding-header} to get a
13953 meaningful header in the agenda view.
13954
13955 @vindex org-odd-levels-only
13956 @vindex org-agenda-skip-function
13957 A general way to create custom searches is to base them on a search for
13958 entries with a certain level limit. If you want to study all entries with
13959 your custom search function, simply do a search for
13960 @samp{LEVEL>0}@footnote{Note that, when using @code{org-odd-levels-only}, a
13961 level number corresponds to order in the hierarchy, not to the number of
13962 stars.}, and then use @code{org-agenda-skip-function} to select the entries
13963 you really want to have.
13964
13965 You may also put a Lisp form into @code{org-agenda-skip-function}. In
13966 particular, you may use the functions @code{org-agenda-skip-entry-if}
13967 and @code{org-agenda-skip-subtree-if} in this form, for example:
13968
13969 @table @code
13970 @item '(org-agenda-skip-entry-if 'scheduled)
13971 Skip current entry if it has been scheduled.
13972 @item '(org-agenda-skip-entry-if 'notscheduled)
13973 Skip current entry if it has not been scheduled.
13974 @item '(org-agenda-skip-entry-if 'deadline)
13975 Skip current entry if it has a deadline.
13976 @item '(org-agenda-skip-entry-if 'scheduled 'deadline)
13977 Skip current entry if it has a deadline, or if it is scheduled.
13978 @item '(org-agenda-skip-entry-if 'todo '("TODO" "WAITING"))
13979 Skip current entry if the TODO keyword is TODO or WAITING.
13980 @item '(org-agenda-skip-entry-if 'todo 'done)
13981 Skip current entry if the TODO keyword marks a DONE state.
13982 @item '(org-agenda-skip-entry-if 'timestamp)
13983 Skip current entry if it has any timestamp, may also be deadline or scheduled.
13984 @item '(org-agenda-skip-entry 'regexp "regular expression")
13985 Skip current entry if the regular expression matches in the entry.
13986 @item '(org-agenda-skip-entry 'notregexp "regular expression")
13987 Skip current entry unless the regular expression matches.
13988 @item '(org-agenda-skip-subtree-if 'regexp "regular expression")
13989 Same as above, but check and skip the entire subtree.
13990 @end table
13991
13992 Therefore we could also have written the search for WAITING projects
13993 like this, even without defining a special function:
13994
13995 @lisp
13996 (org-add-agenda-custom-command
13997 '("b" todo "PROJECT"
13998 ((org-agenda-skip-function '(org-agenda-skip-subtree-if
13999 'regexp ":waiting:"))
14000 (org-agenda-overriding-header "Projects waiting for something: "))))
14001 @end lisp
14002
14003 @node Extracting agenda information, Using the property API, Special agenda views, Hacking
14004 @section Extracting agenda information
14005 @cindex agenda, pipe
14006 @cindex Scripts, for agenda processing
14007
14008 @vindex org-agenda-custom-commands
14009 Org provides commands to access agenda information for the command
14010 line in Emacs batch mode. This extracted information can be sent
14011 directly to a printer, or it can be read by a program that does further
14012 processing of the data. The first of these commands is the function
14013 @code{org-batch-agenda}, that produces an agenda view and sends it as
14014 ASCII text to STDOUT. The command takes a single string as parameter.
14015 If the string has length 1, it is used as a key to one of the commands
14016 you have configured in @code{org-agenda-custom-commands}, basically any
14017 key you can use after @kbd{C-c a}. For example, to directly print the
14018 current TODO list, you could use
14019
14020 @example
14021 emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
14022 @end example
14023
14024 If the parameter is a string with 2 or more characters, it is used as a
14025 tags/TODO match string. For example, to print your local shopping list
14026 (all items with the tag @samp{shop}, but excluding the tag
14027 @samp{NewYork}), you could use
14028
14029 @example
14030 emacs -batch -l ~/.emacs \
14031 -eval '(org-batch-agenda "+shop-NewYork")' | lpr
14032 @end example
14033
14034 @noindent
14035 You may also modify parameters on the fly like this:
14036
14037 @example
14038 emacs -batch -l ~/.emacs \
14039 -eval '(org-batch-agenda "a" \
14040 org-agenda-ndays 30 \
14041 org-agenda-include-diary nil \
14042 org-agenda-files (quote ("~/org/project.org")))' \
14043 | lpr
14044 @end example
14045
14046 @noindent
14047 which will produce a 30-day agenda, fully restricted to the Org file
14048 @file{~/org/projects.org}, not even including the diary.
14049
14050 If you want to process the agenda data in more sophisticated ways, you
14051 can use the command @code{org-batch-agenda-csv} to get a comma-separated
14052 list of values for each agenda item. Each line in the output will
14053 contain a number of fields separated by commas. The fields in a line
14054 are:
14055
14056 @example
14057 category @r{The category of the item}
14058 head @r{The headline, without TODO keyword, TAGS and PRIORITY}
14059 type @r{The type of the agenda entry, can be}
14060 todo @r{selected in TODO match}
14061 tagsmatch @r{selected in tags match}
14062 diary @r{imported from diary}
14063 deadline @r{a deadline}
14064 scheduled @r{scheduled}
14065 timestamp @r{appointment, selected by timestamp}
14066 closed @r{entry was closed on date}
14067 upcoming-deadline @r{warning about nearing deadline}
14068 past-scheduled @r{forwarded scheduled item}
14069 block @r{entry has date block including date}
14070 todo @r{The TODO keyword, if any}
14071 tags @r{All tags including inherited ones, separated by colons}
14072 date @r{The relevant date, like 2007-2-14}
14073 time @r{The time, like 15:00-16:50}
14074 extra @r{String with extra planning info}
14075 priority-l @r{The priority letter if any was given}
14076 priority-n @r{The computed numerical priority}
14077 @end example
14078
14079 @noindent
14080 Time and date will only be given if a timestamp (or deadline/scheduled)
14081 led to the selection of the item.
14082
14083 A CSV list like this is very easy to use in a post-processing script.
14084 For example, here is a Perl program that gets the TODO list from
14085 Emacs/Org and prints all the items, preceded by a checkbox:
14086
14087 @example
14088 #!/usr/bin/perl
14089
14090 # define the Emacs command to run
14091 $cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'";
14092
14093 # run it and capture the output
14094 $agenda = qx@{$cmd 2>/dev/null@};
14095
14096 # loop over all lines
14097 foreach $line (split(/\n/,$agenda)) @{
14098 # get the individual values
14099 ($category,$head,$type,$todo,$tags,$date,$time,$extra,
14100 $priority_l,$priority_n) = split(/,/,$line);
14101 # process and print
14102 print "[ ] $head\n";
14103 @}
14104 @end example
14105
14106 @node Using the property API, Using the mapping API, Extracting agenda information, Hacking
14107 @section Using the property API
14108 @cindex API, for properties
14109 @cindex properties, API
14110
14111 Here is a description of the functions that can be used to work with
14112 properties.
14113
14114 @defun org-entry-properties &optional pom which
14115 Get all properties of the entry at point-or-marker POM.@*
14116 This includes the TODO keyword, the tags, time strings for deadline,
14117 scheduled, and clocking, and any additional properties defined in the
14118 entry. The return value is an alist, keys may occur multiple times
14119 if the property key was used several times.@*
14120 POM may also be nil, in which case the current entry is used.
14121 If WHICH is nil or `all', get all properties. If WHICH is
14122 `special' or `standard', only get that subclass.
14123 @end defun
14124 @vindex org-use-property-inheritance
14125 @defun org-entry-get pom property &optional inherit
14126 Get value of PROPERTY for entry at point-or-marker POM. By default,
14127 this only looks at properties defined locally in the entry. If INHERIT
14128 is non-nil and the entry does not have the property, then also check
14129 higher levels of the hierarchy. If INHERIT is the symbol
14130 @code{selective}, use inheritance if and only if the setting of
14131 @code{org-use-property-inheritance} selects PROPERTY for inheritance.
14132 @end defun
14133
14134 @defun org-entry-delete pom property
14135 Delete the property PROPERTY from entry at point-or-marker POM.
14136 @end defun
14137
14138 @defun org-entry-put pom property value
14139 Set PROPERTY to VALUE for entry at point-or-marker POM.
14140 @end defun
14141
14142 @defun org-buffer-property-keys &optional include-specials
14143 Get all property keys in the current buffer.
14144 @end defun
14145
14146 @defun org-insert-property-drawer
14147 Insert a property drawer at point.
14148 @end defun
14149
14150 @defun org-entry-put-multivalued-property pom property &rest values
14151 Set PROPERTY at point-or-marker POM to VALUES. VALUES should be a list of
14152 strings. They will be concatenated, with spaces as separators.
14153 @end defun
14154
14155 @defun org-entry-get-multivalued-property pom property
14156 Treat the value of the property PROPERTY as a whitespace-separated list of
14157 values and return the values as a list of strings.
14158 @end defun
14159
14160 @defun org-entry-add-to-multivalued-property pom property value
14161 Treat the value of the property PROPERTY as a whitespace-separated list of
14162 values and make sure that VALUE is in this list.
14163 @end defun
14164
14165 @defun org-entry-remove-from-multivalued-property pom property value
14166 Treat the value of the property PROPERTY as a whitespace-separated list of
14167 values and make sure that VALUE is @emph{not} in this list.
14168 @end defun
14169
14170 @defun org-entry-member-in-multivalued-property pom property value
14171 Treat the value of the property PROPERTY as a whitespace-separated list of
14172 values and check if VALUE is in this list.
14173 @end defun
14174
14175 @defopt org-property-allowed-value-functions
14176 Hook for functions supplying allowed values for specific.
14177 The functions must take a single argument, the name of the property, and
14178 return a flat list of allowed values. If @samp{:ETC} is one of
14179 the values, use the values as completion help, but allow also other values
14180 to be entered. The functions must return @code{nil} if they are not
14181 responsible for this property.
14182 @end defopt
14183
14184 @node Using the mapping API, , Using the property API, Hacking
14185 @section Using the mapping API
14186 @cindex API, for mapping
14187 @cindex mapping entries, API
14188
14189 Org has sophisticated mapping capabilities to find all entries satisfying
14190 certain criteria. Internally, this functionality is used to produce agenda
14191 views, but there is also an API that can be used to execute arbitrary
14192 functions for each or selected entries. The main entry point for this API
14193 is:
14194
14195 @defun org-map-entries func &optional match scope &rest skip
14196 Call FUNC at each headline selected by MATCH in SCOPE.
14197
14198 FUNC is a function or a Lisp form. The function will be called without
14199 arguments, with the cursor positioned at the beginning of the headline.
14200 The return values of all calls to the function will be collected and
14201 returned as a list.
14202
14203 The call to FUNC will be wrapped into a save-excursion form, so FUNC
14204 does not need to preserve point. After evaluation, the cursor will be
14205 moved to the end of the line (presumably of the headline of the
14206 processed entry) and search continues from there. Under some
14207 circumstances, this may not produce the wanted results. For example,
14208 if you have removed (e.g. archived) the current (sub)tree it could
14209 mean that the next entry will be skipped entirely. In such cases, you
14210 can specify the position from where search should continue by making
14211 FUNC set the variable `org-map-continue-from' to the desired buffer
14212 position.
14213
14214 MATCH is a tags/property/todo match as it is used in the agenda match view.
14215 Only headlines that are matched by this query will be considered during
14216 the iteration. When MATCH is nil or t, all headlines will be
14217 visited by the iteration.
14218
14219 SCOPE determines the scope of this command. It can be any of:
14220
14221 @example
14222 nil @r{the current buffer, respecting the restriction if any}
14223 tree @r{the subtree started with the entry at point}
14224 file @r{the current buffer, without restriction}
14225 file-with-archives
14226 @r{the current buffer, and any archives associated with it}
14227 agenda @r{all agenda files}
14228 agenda-with-archives
14229 @r{all agenda files with any archive files associated with them}
14230 (file1 file2 ...)
14231 @r{if this is a list, all files in the list will be scanned}
14232 @end example
14233 @noindent
14234 The remaining args are treated as settings for the skipping facilities of
14235 the scanner. The following items can be given here:
14236
14237 @vindex org-agenda-skip-function
14238 @example
14239 archive @r{skip trees with the archive tag}
14240 comment @r{skip trees with the COMMENT keyword}
14241 function or Lisp form
14242 @r{will be used as value for @code{org-agenda-skip-function},}
14243 @r{so whenever the function returns t, FUNC}
14244 @r{will not be called for that entry and search will}
14245 @r{continue from the point where the function leaves it}
14246 @end example
14247 @end defun
14248
14249 The function given to that mapping routine can really do anything you like.
14250 It can use the property API (@pxref{Using the property API}) to gather more
14251 information about the entry, or in order to change metadata in the entry.
14252 Here are a couple of functions that might be handy:
14253
14254 @defun org-todo &optional arg
14255 Change the TODO state of the entry, see the docstring of the functions for
14256 the many possible values for the argument ARG.
14257 @end defun
14258
14259 @defun org-priority &optional action
14260 Change the priority of the entry, see the docstring of this function for the
14261 possible values for ACTION.
14262 @end defun
14263
14264 @defun org-toggle-tag tag &optional onoff
14265 Toggle the tag TAG in the current entry. Setting ONOFF to either @code{on}
14266 or @code{off} will not toggle tag, but ensure that it is either on or off.
14267 @end defun
14268
14269 @defun org-promote
14270 Promote the current entry.
14271 @end defun
14272
14273 @defun org-demote
14274 Demote the current entry.
14275 @end defun
14276
14277 Here is a simple example that will turn all entries in the current file with
14278 a tag @code{TOMORROW} into TODO entries with the keyword @code{UPCOMING}.
14279 Entries in comment trees and in archive trees will be ignored.
14280
14281 @lisp
14282 (org-map-entries
14283 '(org-todo "UPCOMING")
14284 "+TOMORROW" 'file 'archive 'comment)
14285 @end lisp
14286
14287 The following example counts the number of entries with TODO keyword
14288 @code{WAITING}, in all agenda files.
14289
14290 @lisp
14291 (length (org-map-entries t "/+WAITING" 'agenda))
14292 @end lisp
14293
14294 @node MobileOrg, History and Acknowledgments, Hacking, Top
14295 @appendix MobileOrg
14296 @cindex iPhone
14297 @cindex MobileOrg
14298
14299 @uref{http://mobileorg.ncogni.to/, MobileOrg} is an application for the
14300 @i{iPhone/iPod Touch} series of devices, developed by Richard Moreland.
14301 @i{MobileOrg} offers offline viewing and capture support for an Org-mode
14302 system rooted on a ``real'' computer. It does also allow you to record
14303 changes to existing entries. Android users should check out
14304 @uref{http://wiki.github.com/matburt/mobileorg-android/, MobileOrg Android}
14305 by Matt Jones.
14306
14307 This appendix describes the support Org has for creating agenda views in a
14308 format that can be displayed by @i{MobileOrg}, and for integrating notes
14309 captured and changes made by @i{MobileOrg} into the main system.
14310
14311 For changing tags and TODO states in MobileOrg, you should have set up the
14312 customization variables @code{org-todo-keywords} and @code{org-tags-alist} to
14313 cover all important tags and TODO keywords, even if individual files use only
14314 part of these. MobileOrg will also offer you states and tags set up with
14315 in-buffer settings, but it will understand the logistics of TODO state
14316 @i{sets} (@pxref{Per-file keywords}) and @i{mutually exclusive} tags
14317 (@pxref{Setting tags}) only for those set in these variables.
14318
14319 @menu
14320 * Setting up the staging area:: Where to interact with the mobile device
14321 * Pushing to MobileOrg:: Uploading Org files and agendas
14322 * Pulling from MobileOrg:: Integrating captured and flagged items
14323 @end menu
14324
14325 @node Setting up the staging area, Pushing to MobileOrg, MobileOrg, MobileOrg
14326 @section Setting up the staging area
14327
14328 MobileOrg needs to interact with Emacs through directory on a server. If you
14329 are using a public server, you should consider to encrypt the files that are
14330 uploaded to the server. This can be done with Org-mode 7.02 and with
14331 @i{MobileOrg 1.5} (iPhone version), and you need an @file{openssl}
14332 installation on your system. To turn on encryption, set a password in
14333 @i{MobileOrg} and, on the Emacs side, configure the variable
14334 @code{org-mobile-use-encryption}@footnote{If you can safely store the
14335 password in your Emacs setup, you might also want to configure
14336 @code{org-mobile-encryption-password}. Please read the docstring of that
14337 variable. Note that encryption will apply only to the contents of the
14338 @file{.org} files. The file names themselves will remain visible.}.
14339
14340 The easiest way to create that directory is to use a free
14341 @uref{http://dropbox.com,Dropbox.com} account@footnote{If you cannot use
14342 Dropbox, or if your version of MobileOrg does not support it, you can use a
14343 webdav server. For more information, check out the the documentation of
14344 MobileOrg and also this
14345 @uref{http://orgmode.org/worg/org-faq.php#mobileorg_webdav, FAQ entry}.}.
14346 When MobileOrg first connects to your Dropbox, it will create a directory
14347 @i{MobileOrg} inside the Dropbox. After the directory has been created, tell
14348 Emacs about it:
14349
14350 @lisp
14351 (setq org-mobile-directory "~/Dropbox/MobileOrg")
14352 @end lisp
14353
14354 Org-mode has commands to put files for @i{MobileOrg} into that directory,
14355 and to read captured notes from there.
14356
14357 @node Pushing to MobileOrg, Pulling from MobileOrg, Setting up the staging area, MobileOrg
14358 @section Pushing to MobileOrg
14359
14360 This operation copies all files currently listed in @code{org-mobile-files}
14361 to the directory @code{org-mobile-directory}. By default this list contains
14362 all agenda files (as listed in @code{org-agenda-files}), but additional files
14363 can be included by customizing @code{org-mobiles-files}. File names will be
14364 staged with path relative to @code{org-directory}, so all files should be
14365 inside this directory. The push operation also creates a special Org file
14366 @file{agendas.org} with all custom agenda view defined by the
14367 user@footnote{While creating the agendas, Org-mode will force ID properties
14368 on all referenced entries, so that these entries can be uniquely identified
14369 if @i{MobileOrg} flags them for further action. If you do not want to get
14370 these properties in so many entries, you can set the variable
14371 @code{org-mobile-force-id-on-agenda-items} to @code{nil}. Org mode will then
14372 rely on outline paths, in the hope that these will be unique enough.}.
14373 Finally, Org writes the file @file{index.org}, containing links to all other
14374 files. @i{MobileOrg} first reads this file from the server, and then
14375 downloads all agendas and Org files listed in it. To speed up the download,
14376 MobileOrg will only read files whose checksums@footnote{stored automatically
14377 in the file @file{checksums.dat}} have changed.
14378
14379 @node Pulling from MobileOrg, , Pushing to MobileOrg, MobileOrg
14380 @section Pulling from MobileOrg
14381
14382 When @i{MobileOrg} synchronizes with the server, it not only pulls the Org
14383 files for viewing. It also appends captured entries and pointers to flagged
14384 and changed entries to the file @file{mobileorg.org} on the server. Org has
14385 a @emph{pull} operation that integrates this information into an inbox file
14386 and operates on the pointers to flagged entries. Here is how it works:
14387
14388 @enumerate
14389 @item
14390 Org moves all entries found in
14391 @file{mobileorg.org}@footnote{@file{mobileorg.org} will be empty after this
14392 operation.} and appends them to the file pointed to by the variable
14393 @code{org-mobile-inbox-for-pull}. Each captured entry and each editing event
14394 will be a top-level entry in the inbox file.
14395 @item
14396 After moving the entries, Org will attempt to implement the changes made in
14397 @i{MobileOrg}. Some changes are applied directly and without user
14398 interaction. Examples are all changes to tags, TODO state, headline and body
14399 text that can be cleanly applied. Entries that have been flagged for further
14400 action will receive a tag @code{:FLAGGED:}, so that they can be easily found
14401 again. When there is a problem finding an entry or applying the change, the
14402 pointer entry will remain in the inbox and will be marked with an error
14403 message. You need to later resolve these issues by hand.
14404 @item
14405 Org will then generate an agenda view with all flagged entries. The user
14406 should then go through these entries and do whatever actions are necessary.
14407 If a note has been stored while flagging an entry in @i{MobileOrg}, that note
14408 will be displayed in the echo area when the cursor is on the corresponding
14409 agenda line.
14410 @table @kbd
14411 @kindex ?
14412 @item ?
14413 Pressing @kbd{?} in that special agenda will display the full flagging note in
14414 another window and also push it onto the kill ring. So you could use @kbd{?
14415 z C-y C-c C-c} to store that flagging note as a normal note in the entry.
14416 Pressing @kbd{?} twice in succession will offer to remove the
14417 @code{:FLAGGED:} tag along with the recorded flagging note (which is stored
14418 in a property). In this way you indicate, that the intended processing for
14419 this flagged entry is finished.
14420 @end table
14421 @end enumerate
14422
14423 @kindex C-c a ?
14424 If you are not able to process all flagged entries directly, you can always
14425 return to this agenda view@footnote{Note, however, that there is a subtle
14426 difference. The view created automatically by @kbd{M-x org-mobile-pull
14427 @key{RET}} is guaranteed to search all files that have been addressed by the
14428 last pull. This might include a file that is not currently in your list of
14429 agenda files. If you later use @kbd{C-c a ?} to regenerate the view, only
14430 the current agenda files will be searched.} using @kbd{C-c a ?}.
14431
14432 @node History and Acknowledgments, Main Index, MobileOrg, Top
14433 @appendix History and acknowledgments
14434 @cindex acknowledgments
14435 @cindex history
14436 @cindex thanks
14437
14438 Org was born in 2003, out of frustration over the user interface of the Emacs
14439 Outline mode. I was trying to organize my notes and projects, and using
14440 Emacs seemed to be the natural way to go. However, having to remember eleven
14441 different commands with two or three keys per command, only to hide and show
14442 parts of the outline tree, that seemed entirely unacceptable to me. Also,
14443 when using outlines to take notes, I constantly wanted to restructure the
14444 tree, organizing it parallel to my thoughts and plans. @emph{Visibility
14445 cycling} and @emph{structure editing} were originally implemented in the
14446 package @file{outline-magic.el}, but quickly moved to the more general
14447 @file{org.el}. As this environment became comfortable for project planning,
14448 the next step was adding @emph{TODO entries}, basic @emph{timestamps}, and
14449 @emph{table support}. These areas highlighted the two main goals that Org
14450 still has today: to be a new, outline-based, plain text mode with innovative
14451 and intuitive editing features, and to incorporate project planning
14452 functionality directly into a notes file.
14453
14454 Since the first release, literally thousands of emails to me or to
14455 @email{emacs-orgmode@@gnu.org} have provided a constant stream of bug
14456 reports, feedback, new ideas, and sometimes patches and add-on code.
14457 Many thanks to everyone who has helped to improve this package. I am
14458 trying to keep here a list of the people who had significant influence
14459 in shaping one or more aspects of Org. The list may not be
14460 complete, if I have forgotten someone, please accept my apologies and
14461 let me know.
14462
14463 Before I get to this list, a few special mentions are in order:
14464
14465 @table @i
14466 @item Bastien Guerry
14467 Bastien has written a large number of extensions to Org (most of them
14468 integrated into the core by now), including the LaTeX exporter and the plain
14469 list parser. His support during the early days, when he basically acted as
14470 co-maintainer, was central to the success of this project. Bastien also
14471 invented Worg, helped establishing the Web presence of Org, and sponsors
14472 hosting costs for the orgmode.org website.
14473 @item Eric Schulte and Dan Davison
14474 Eric and Dan are jointly responsible for the Org-babel system, which turns
14475 Org into a multi-language environment for evaluating code and doing literate
14476 programming and reproducible research.
14477 @item John Wiegley
14478 John has also contributed a number of great ideas and patches
14479 directly to Org, including the attachment system (@file{org-attach.el}),
14480 integration with Apple Mail (@file{org-mac-message.el}), hierarchical
14481 dependencies of TODO items, habit tracking (@file{org-habits.el}), and
14482 encryption (@file{org-crypt.el}). Also, the capture system is really an
14483 extended copy of his great @file{remember.el}.
14484 @item Sebastian Rose
14485 Without Sebastian, the HTML/XHTML publishing of Org would be the pitiful work
14486 of an ignorant amateur. Sebastian has pushed this part of Org onto a much
14487 higher level. He also wrote @file{org-info.js}, a Java script for displaying
14488 webpages derived from Org using an Info-like or a folding interface with
14489 single-key navigation.
14490 @end table
14491
14492 @noindent OK, now to the full list of contributions! Again, please let me
14493 know what I am missing here!
14494
14495 @itemize @bullet
14496
14497 @item
14498 @i{Russel Adams} came up with the idea for drawers.
14499 @item
14500 @i{Thomas Baumann} wrote @file{org-bbdb.el} and @file{org-mhe.el}.
14501 @item
14502 @i{Christophe Bataillon} created the great unicorn logo that we use on the
14503 Org-mode website.
14504 @item
14505 @i{Alex Bochannek} provided a patch for rounding timestamps.
14506 @item
14507 @i{Jan Böcker} wrote @file{org-docview.el}.
14508 @item
14509 @i{Brad Bozarth} showed how to pull RSS feed data into Org-mode files.
14510 @item
14511 @i{Tom Breton} wrote @file{org-choose.el}.
14512 @item
14513 @i{Charles Cave}'s suggestion sparked the implementation of templates
14514 for Remember, which are now templates for capture.
14515 @item
14516 @i{Pavel Chalmoviansky} influenced the agenda treatment of items with
14517 specified time.
14518 @item
14519 @i{Gregory Chernov} patched support for Lisp forms into table
14520 calculations and improved XEmacs compatibility, in particular by porting
14521 @file{nouline.el} to XEmacs.
14522 @item
14523 @i{Sacha Chua} suggested copying some linking code from Planner.
14524 @item
14525 @i{Baoqiu Cui} contributed the DocBook exporter.
14526 @item
14527 @i{Eddward DeVilla} proposed and tested checkbox statistics. He also
14528 came up with the idea of properties, and that there should be an API for
14529 them.
14530 @item
14531 @i{Nick Dokos} tracked down several nasty bugs.
14532 @item
14533 @i{Kees Dullemond} used to edit projects lists directly in HTML and so
14534 inspired some of the early development, including HTML export. He also
14535 asked for a way to narrow wide table columns.
14536 @item
14537 @i{Thomas S. Dye} contributed documentation on Worg and helped integrating
14538 the Org-Babel documentation into the manual.
14539 @item
14540 @i{Christian Egli} converted the documentation into Texinfo format,
14541 patched CSS formatting into the HTML exporter, and inspired the agenda.
14542 @item
14543 @i{David Emery} provided a patch for custom CSS support in exported
14544 HTML agendas.
14545 @item
14546 @i{Nic Ferrier} contributed mailcap and XOXO support.
14547 @item
14548 @i{Miguel A. Figueroa-Villanueva} implemented hierarchical checkboxes.
14549 @item
14550 @i{John Foerch} figured out how to make incremental search show context
14551 around a match in a hidden outline tree.
14552 @item
14553 @i{Raimar Finken} wrote @file{org-git-line.el}.
14554 @item
14555 @i{Mikael Fornius} works as a mailing list moderator.
14556 @item
14557 @i{Austin Frank} works as a mailing list moderator.
14558 @item
14559 @i{Niels Giesen} had the idea to automatically archive DONE trees.
14560 @item
14561 @i{Nicolas Goaziou} rewrote much of the plain list code.
14562 @item
14563 @i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
14564 @item
14565 @i{Bernt Hansen} has driven much of the support for auto-repeating tasks,
14566 task state change logging, and the clocktable. His clear explanations have
14567 been critical when we started to adopt the Git version control system.
14568 @item
14569 @i{Manuel Hermenegildo} has contributed various ideas, small fixes and
14570 patches.
14571 @item
14572 @i{Phil Jackson} wrote @file{org-irc.el}.
14573 @item
14574 @i{Scott Jaderholm} proposed footnotes, control over whitespace between
14575 folded entries, and column view for properties.
14576 @item
14577 @i{Matt Jones} wrote @i{MobileOrg Android}.
14578 @item
14579 @i{Tokuya Kameshima} wrote @file{org-wl.el} and @file{org-mew.el}.
14580 @item
14581 @i{Shidai Liu} ("Leo") asked for embedded La@TeX{} and tested it. He also
14582 provided frequent feedback and some patches.
14583 @item
14584 @i{Matt Lundin} has proposed last-row references for table formulas and named
14585 invisible anchors. He has also worked a lot on the FAQ.
14586 @item
14587 @i{David Maus} wrote @file{org-atom.el}, maintains the issues file for Org,
14588 and is a prolific contributor on the mailing list with competent replies,
14589 small fixes and patches.
14590 @item
14591 @i{Jason F. McBrayer} suggested agenda export to CSV format.
14592 @item
14593 @i{Max Mikhanosha} came up with the idea of refiling.
14594 @item
14595 @i{Dmitri Minaev} sent a patch to set priority limits on a per-file
14596 basis.
14597 @item
14598 @i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler
14599 happy.
14600 @item
14601 @i{Richard Moreland} wrote @i{MobileOrg} for the iPhone.
14602 @item
14603 @i{Rick Moynihan} proposed allowing multiple TODO sequences in a file
14604 and being able to quickly restrict the agenda to a subtree.
14605 @item
14606 @i{Todd Neal} provided patches for links to Info files and Elisp forms.
14607 @item
14608 @i{Greg Newman} refreshed the unicorn logo into its current form.
14609 @item
14610 @i{Tim O'Callaghan} suggested in-file links, search options for general
14611 file links, and TAGS.
14612 @item
14613 @i{Osamu Okano} wrote @file{orgcard2ref.pl}, a perl program to create a text
14614 version of the reference card.
14615 @item
14616 @i{Takeshi Okano} translated the manual and David O'Toole's tutorial
14617 into Japanese.
14618 @item
14619 @i{Oliver Oppitz} suggested multi-state TODO items.
14620 @item
14621 @i{Scott Otterson} sparked the introduction of descriptive text for
14622 links, among other things.
14623 @item
14624 @i{Pete Phillips} helped during the development of the TAGS feature, and
14625 provided frequent feedback.
14626 @item
14627 @i{Martin Pohlack} provided the code snippet to bundle character insertion
14628 into bundles of 20 for undo.
14629 @item
14630 @i{T.V. Raman} reported bugs and suggested improvements.
14631 @item
14632 @i{Matthias Rempe} (Oelde) provided ideas, Windows support, and quality
14633 control.
14634 @item
14635 @i{Paul Rivier} provided the basic implementation of named footnotes. He
14636 also acted as mailing list moderator for some time.
14637 @item
14638 @i{Kevin Rogers} contributed code to access VM files on remote hosts.
14639 @item
14640 @i{Frank Ruell} solved the mystery of the @code{keymapp nil} bug, a
14641 conflict with @file{allout.el}.
14642 @item
14643 @i{Jason Riedy} generalized the send-receive mechanism for Orgtbl tables with
14644 extensive patches.
14645 @item
14646 @i{Philip Rooke} created the Org reference card, provided lots
14647 of feedback, developed and applied standards to the Org documentation.
14648 @item
14649 @i{Christian Schlauer} proposed angular brackets around links, among
14650 other things.
14651 @item
14652 @i{Paul Sexton} wrote @file{org-ctags.el}.
14653 @item
14654 Linking to VM/BBDB/Gnus was first inspired by @i{Tom Shannon}'s
14655 @file{organizer-mode.el}.
14656 @item
14657 @i{Ilya Shlyakhter} proposed the Archive Sibling, line numbering in literal
14658 examples, and remote highlighting for referenced code lines.
14659 @item
14660 @i{Stathis Sideris} wrote the @file{ditaa.jar} ASCII to PNG converter that is
14661 now packaged into Org's @file{contrib} directory.
14662 @item
14663 @i{Daniel Sinder} came up with the idea of internal archiving by locking
14664 subtrees.
14665 @item
14666 @i{Dale Smith} proposed link abbreviations.
14667 @item
14668 @i{James TD Smith} has contributed a large number of patches for useful
14669 tweaks and features.
14670 @item
14671 @i{Adam Spiers} asked for global linking commands, inspired the link
14672 extension system, added support for mairix, and proposed the mapping API.
14673 @item
14674 @i{Ulf Stegemann} created the table to translate special symbols to HTML,
14675 LaTeX, UTF-8, Latin-1 and ASCII.
14676 @item
14677 @i{Andy Stewart} contributed code to @file{org-w3m.el}, to copy HTML content
14678 with links transformation to Org syntax.
14679 @item
14680 @i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
14681 chapter about publishing.
14682 @item
14683 @i{Stefan Vollmar} organized a video-recorded talk at the
14684 Max-Planck-Institute for Neurology. He also inspired the creation of a
14685 concept index for HTML export.
14686 @item
14687 @i{J@"urgen Vollmer} contributed code generating the table of contents
14688 in HTML output.
14689 @item
14690 @i{Samuel Wales} has provided important feedback and bug reports.
14691 @item
14692 @i{Chris Wallace} provided a patch implementing the @samp{QUOTE}
14693 keyword.
14694 @item
14695 @i{David Wainberg} suggested archiving, and improvements to the linking
14696 system.
14697 @item
14698 @i{Carsten Wimmer} suggested some changes and helped fix a bug in
14699 linking to Gnus.
14700 @item
14701 @i{Roland Winkler} requested additional key bindings to make Org
14702 work on a tty.
14703 @item
14704 @i{Piotr Zielinski} wrote @file{org-mouse.el}, proposed agenda blocks
14705 and contributed various ideas and code snippets.
14706 @end itemize
14707
14708
14709 @node Main Index, Key Index, History and Acknowledgments, Top
14710 @unnumbered Concept index
14711
14712 @printindex cp
14713
14714 @node Key Index, Command and Function Index, Main Index, Top
14715 @unnumbered Key index
14716
14717 @printindex ky
14718
14719 @node Command and Function Index, Variable Index, Key Index, Top
14720 @unnumbered Command and function index
14721
14722 @printindex fn
14723
14724 @node Variable Index, , Command and Function Index, Top
14725 @unnumbered Variable index
14726
14727 This is not a complete index of variables and faces, only the ones that are
14728 mentioned in the manual. For a more complete list, use @kbd{M-x
14729 org-customize @key{RET}} and then click yourself through the tree.
14730
14731 @printindex vr
14732
14733 @bye
14734
14735 @ignore
14736 arch-tag: 7893d1Fe-cc57-4d13-b5e5-f494a1CBC7ac
14737 @end ignore
14738
14739 @c Local variables:
14740 @c fill-column: 77
14741 @c indent-tabs-mode: nil
14742 @c End:
14743
14744
14745 @c LocalWords: webdavhost pre