]> code.delx.au - gnu-emacs/blobdiff - man/org.texi
(Frandom, Flength, Fsafe_length, Fstring_bytes, Fstring_equal, Fcompare_strings,
[gnu-emacs] / man / org.texi
index 3bd9ad697624d5cdcdb9716a5b2467ae640025bc..acd55e895ce4c13439db0f1105a5aac2656300b8 100644 (file)
@@ -1,24 +1,22 @@
 \input texinfo
-
 @c %**start of header
-@setfilename org
 @setfilename ../info/org
-@c @settitle Org Mode Manual
+@settitle Org Mode Manual
 
-@set VERSION 4.34
-@set DATE May 2006
+@set VERSION 4.54
+@set DATE November 2006
 
 @dircategory Emacs
 @direntry
-* Org Mode: (org).     outline-based notes management and organizer
+* Org Mode: (org).      outline-based notes management and organizer
 @end direntry
 
 @c Version and Contact Info
 @set MAINTAINERSITE @uref{http://www.astro.uva.nl/~dominik/Tools/org/,maintainers webpage}
 @set AUTHOR Carsten Dominik
 @set MAINTAINER Carsten Dominik
-@set MAINTAINEREMAIL @email{dominik@@science.uva.nl}
-@set MAINTAINERCONTACT @uref{mailto:dominik@@science.uva.nl,contact the maintainer}
+@set MAINTAINEREMAIL @email{dominik at science dot uva dot nl}
+@set MAINTAINERCONTACT @uref{mailto:dominik at science dot uva dot nl,contact the maintainer}
 @c %**end of header
 @finalout
 
@@ -85,9 +83,12 @@ Software Foundation raise funds for GNU development.''
 * Timestamps::                  Assign date and time to items
 * Tags::                        Tagging headlines and matching sets of tags
 * Agenda views::                Collecting information into views
+* Embedded LaTeX::              LaTeX fragments and formulas
 * Exporting::                   Sharing and publishing of notes
 * Publishing::                  Create a web site of linked Org-mode files
 * Miscellaneous::               All the rest which did not fit elsewhere
+* Extensions and Hacking::      It is possible to write add-on code
+* History and Acknowledgments::  How Org-mode came into being 
 * Index::                       The fast road to specific information
 * Key Index::                   Key bindings and where they are described
 
@@ -97,7 +98,8 @@ Software Foundation raise funds for GNU development.''
 Introduction
 
 * Summary::                     Brief summary of what Org-mode does
-* Installation and activation::  How to install Org-mode
+* Installation::                How to install a downloaded version of Org-mode
+* Activation::                  How to activate Org-mode for certain buffers.
 * Feedback::                    Bug reports, ideas, patches etc.
 
 Document Structure
@@ -109,7 +111,12 @@ Document Structure
 * Structure editing::           Changing sequence and level of headlines
 * Archiving::                   Move done task trees to a different place
 * Sparse trees::                Matches embedded in context
-* Plain lists::                 Editing hand-formatted lists
+* Plain lists::                 Additional structure within an entry
+
+Archiving
+
+* ARCHIVE tag::                 Marking a tree as inactive
+* Moving subtrees::             Moving a tree to an archive file
 
 Tables
 
@@ -135,6 +142,7 @@ Hyperlinks
 * Internal links::              Links to other places in the current file
 * External links::              URL-like links to the world
 * Handling links::              Creating, inserting and following
+* Link abbreviations::          Shortcuts for writing complex links
 * Search options::              Linking to a specific location
 * Custom searches::             When the default search is not enough
 * Remember::                    Org-trees store quick notes
@@ -147,9 +155,10 @@ Internal links
 TODO items
 
 * TODO basics::                 Marking and displaying TODO entries
-* Progress logging::            Document your productivity
 * TODO extensions::             Workflow and assignments
 * Priorities::                  Some things are more important than others
+* Breaking down tasks::         Splitting a task into managable pieces
+* Checkboxes::                  Tick-off lists
 
 Extended use of TODO keywords
 
@@ -161,6 +170,17 @@ Timestamps
 
 * Time stamps::                 Assigning a time to a tree entry
 * Creating timestamps::         Commands which insert timestamps
+* Custom time format::          If you cannot work with the ISO format
+* Progress logging::            Documenting when what work was done.
+
+Creating timestamps
+
+* The date/time prompt::        How org-mode helps you entring date and time
+
+Progress Logging
+
+* Closing items::               When was this entry marked DONE?
+* Clocking work time::          When exactly did you work on this item?
 
 Tags
 
@@ -176,15 +196,35 @@ Agenda Views
 * Global TODO list::            All unfinished action items
 * Matching headline tags::      Structured information with fine-tuned search
 * Timeline::                    Time-sorted view for single file
+* Presentation and sorting::    How agenda items are prepared for display
 * Agenda commands::             Remote editing of org trees
+* Custom agenda views::         Defining special searches and views
 
 The weekly/daily agenda
 
+* Calendar/Diary integration::  Integrating Anniversaries and more
+
+Presentation and sorting
+
 * Categories::                  Not all tasks are equal
 * Time-of-day specifications::  How the agenda knows the time
-* Calendar/Diary integration::  Integrating Anniversaries and more
 * Sorting of agenda items::     The order of things
 
+Custom agenda views
+
+* Storing searches::            Type once, use often
+* Block agenda::                All the stuff you need in a single buffer
+* Setting Options::             Changing the rules
+* Batch processing::            Agenda views from the command line
+
+Embedded LaTeX
+
+* Math symbols::                TeX macros for symbols and Greek letters
+* Subscripts and Superscripts::  Simple syntax for raising/lowering text
+* LaTeX fragments::             Complex formulas made easy
+* Processing LaTeX fragments::  Previewing LaTeX processing
+* CDLaTeX mode::                Speed up entering of formulas
+
 Exporting
 
 * ASCII export::                Exporting to plain ASCII
@@ -208,7 +248,7 @@ Publishing
 Configuration
 
 * Project alist::               The central configuration variable
-* File sources and destinations::  From here to there
+* Sources and destinations::    From here to there
 * Selecting files::             What files are part of the project?
 * Publishing action::           Setting the function doing the publishing
 * Publishing options::          Tweaking HTML export
@@ -224,21 +264,23 @@ Miscellaneous
 
 * Completion::                  M-TAB knows what you need
 * Customization::               Adapting Org-mode to your taste
-* Summary of in-buffer settings::  Using special lines to set options
+* In-buffer settings::          Overview of the #+KEYWORDS
 * The very busy C-c C-c key::   When in doubt, press C-c C-c
 * Clean view::                  Getting rid of leading stars in the outline
 * TTY keys::                    Using Org-mode on a tty
-* FAQ::                         Frequently asked questions
 * Interaction::                 Other Emacs packages
 * Bugs::                        Things which do not work perfectly
-* Acknowledgments::             These people provided feedback and more
 
 Interaction with other packages
 
-* Extensions::                  Third-party extensions for Org-mode
 * Cooperation::                 Packages Org-mode cooperates with
 * Conflicts::                   Packages that lead to conflicts
 
+Extensions, Hooks and Hacking
+
+* Extensions::                  Existing 3rd-part extensions
+* Dynamic blocks::              Automatically filled blocks
+
 @end detailmenu
 @end menu
 
@@ -248,11 +290,12 @@ Interaction with other packages
 
 @menu
 * Summary::                     Brief summary of what Org-mode does
-* Installation and activation::  How to install Org-mode
+* Installation::                How to install a downloaded version of Org-mode
+* Activation::                  How to activate Org-mode for certain buffers.
 * Feedback::                    Bug reports, ideas, patches etc.
 @end menu
 
-@node Summary, Installation and activation, Introduction, Introduction
+@node Summary, Installation, Introduction, Introduction
 @section Summary
 @cindex summary
 
@@ -274,6 +317,15 @@ structured ASCII file, as HTML, or (todo and agenda items only) as an
 iCalendar file.  It can also serve as a publishing tool for a set of
 linked webpages.
 
+An important design aspect that distinguishes Org-mode from other
+packages like Planner/Muse is that it encougages to store every piece of
+information only once.  In Planner, you have project pages, day pages
+and possibly other files, duplicating some information such as tasks.
+In Org-mode, you only have notes files.  In your notes you mark entries
+as tasks, label them with tags and timestamps.  All necessary lists like
+a schedule for the day, the agenda for a meeting, tasks lists selected
+by tags etc are created dynamically when you need them.
+
 Org-mode keeps simple things simple.  When first fired up, it should
 feel like a straightforward, easy to use outliner.  Complexity is not
 imposed, but a large amount of functionality is available when you need
@@ -286,32 +338,84 @@ example:
 @r{@bullet{} as an ASCII table editor with spreadsheet-like capabilities}
 @r{@bullet{} as a TODO list editor}
 @r{@bullet{} as a full agenda and planner with deadlines and work scheduling}
+@r{@bullet{} as an environment to implement David Allen's GTD system}
 @r{@bullet{} as a simple hypertext system, with HTML export}
 @r{@bullet{} as a publishing tool to create a set of interlinked webpages}
 @end example
 
-The Org-mode table editor can be integrated into any major mode by
-activating the minor Orgtbl-mode.
+Org-mode's automatic, context sensitive table editor can be integrated
+into any major mode by activating the minor Orgtbl-mode.
 
+@cindex FAQ
 There is a website for Org-mode which provides links to the newest
-version of Org-mode, as well as additional information, screen shots
-and example files.  This page is located at
+version of Org-mode, as well as additional information, frequently asked
+questions (FAQ), links to tutorials etc.  This page is located at
 @uref{http://www.astro.uva.nl/~dominik/Tools/org/}.
 
 @page
 
-@node Installation and activation, Feedback, Summary, Introduction
-@section Installation and Activation
+@node Installation, Activation, Summary, Introduction
+@section Installation
 @cindex installation
+@cindex XEmacs
+
+@b{Important:} If Org-mode is part of the Emacs distribution or an
+XEmacs package, please skip this section and go directly to
+@ref{Activation}.
+
+If you have downloaded Org-mode from the Web, you must take the
+following steps to install it: Go into the Org-mode distribution
+directory and edit the top section of the file @file{Makefile}.  You
+must set the name of the Emacs binary (likely either @file{emacs} or
+@file{xemacs}), and the paths to the directories where local Lisp and
+Info files are kept.  If you don't have access to the system-wide
+directories, create your own two directories for these files, enter them
+into the Makefile, and make sure Emacs finds the Lisp files by adding
+the following line to @file{.emacs}:
+
+@example
+(setq load-path (cons "~/path/to/lispdir" load-path))
+@end example
+
+@b{XEmacs users now need to install the file @file{noutline.el} from
+the @file{xemacs} subdirectory of the Org-mode distribution.  Use the
+command:}
+
+@example
+@b{make install-noutline}
+@end example
+
+@noindent Now byte-compile and install the Lisp files with the shell
+commands:
+
+@example
+make
+make install
+@end example
+
+@noindent If you want to install the info documentation, use this command:
+
+@example
+make install-info
+@end example
+
+@noindent Then add to @file{.emacs}:
+
+@lisp
+;; This line only if org-mode is not part of the X/Emacs distribution.
+(require 'org-install)
+@end lisp
+
+@node Activation, Feedback, Installation, Introduction
+@section Activation
+@cindex activation
 @cindex autoload
 @cindex global keybindings
 @cindex keybindings, global
 
-If Org-mode is part of the Emacs distribution or an XEmacs package,
-you only need to copy the following lines to your @file{.emacs} file.
-The last two lines define @emph{global} keys for the commands
-@command{org-store-link} and @command{org-agenda} - please
-choose suitable keys yourself.
+Add the following lines to your @file{.emacs} file.  The last two lines
+define @emph{global} keys for the commands @command{org-store-link} and
+@command{org-agenda} - please choose suitable keys yourself.
 
 @lisp
 ;; The following lines are always needed.  Choose your own keys.
@@ -322,26 +426,17 @@ choose suitable keys yourself.
 
 Furthermore, you must activate @code{font-lock-mode} in org-mode
 buffers, because significant functionality depends on font-locking being
-active.  You can do this with either one of the following two lines:
+active.  You can do this with either one of the following two lines
+(XEmacs user must use the second option):
 @lisp
 (global-font-lock-mode 1)                     ; for all buffers
 (add-hook 'org-mode-hook 'turn-on-font-lock)  ; org-mode buffers only
 @end lisp
 
-If you have downloaded Org-mode from the Web, you must take additional
-action:  Byte-compile @file{org.el} and @file{org-publish.el} and put
-them together with @file{org-install.el} on your load path.  Then add to
-@file{.emacs}:
-
-@lisp
-;; This line only if org-mode is not part of the X/Emacs distribution.
-(require 'org-install)
-@end lisp
-
 @cindex org-mode, turning on
-With this setup, all files with extension @samp{.org} will be put into
-Org-mode.  As an alternative, make the first line of a file look like
-this:
+With this setup, all files with extension @samp{.org} will be put
+into Org-mode.  As an alternative, make the first line of a file look
+like this:
 
 @example
 MY PROJECTS    -*- mode: org; -*-
@@ -351,7 +446,7 @@ MY PROJECTS    -*- mode: org; -*-
 the file's name is.  See also the variable
 @code{org-insert-mode-line-in-empty-file}.
 
-@node Feedback,  , Installation and activation, Introduction
+@node Feedback,  , Activation, Introduction
 @section Feedback
 @cindex feedback
 @cindex bug reports
@@ -366,8 +461,8 @@ For bug reports, please provide as much information as possible,
 including the version information of Emacs (@kbd{C-h v emacs-version
 @key{RET}}) and Org-mode (@kbd{C-h v org-version @key{RET}}), as well as
 the Org-mode related setup in @file{.emacs}.  If an error occurs, a
-traceback can be very useful.  Often a small example file helps, along
-with clear information about:
+backtrace can be very useful (see below on how to create one).  Often a
+small example file helps, along with clear information about:
 
 @enumerate
 @item What exactly did you do?
@@ -376,6 +471,38 @@ with clear information about:
 @end enumerate
 @noindent Thank you for helping to improve this mode.
 
+@subsubheading How to create a useful backtrace
+
+@cindex backtrace of an error
+If working with Org-mode produces an error with a message you don't
+understand, you may have hit a bug.  The best way to report this is by
+providing, in addition to what was mentioned above, a @emph{Backtrace}.
+This is information from the built-in debugger about where and how the
+error occurred.  Here is how to produce a useful backtrace:
+
+@enumerate
+@item
+Start a fresh Emacs or XEmacs, and make sure that it will load the
+original Lisp code in @file{org.el} instead of the compiled version in
+@file{org.elc}.  The backtrace contains much more information if it is
+produced with uncompiled code.  To do this, either rename @file{org.elc}
+to something else before starting Emacs, or ask Emacs explicitly to load
+@file{org.el} by using the command line
+@example
+emacs -l /path/to/org.el
+@end example
+@item
+Go to the @code{Options} menu and select @code{Enter Debugger on Error}
+(XEmacs has this option in the @code{Troubleshooting} sub-menu).
+@item
+Do whatever you have to do to hit the error.  Don't forget to to
+document the steps you take.
+@item
+When you hit the error, a @file{*Backtrace*} buffer will appear on the
+screen.  Safe this buffer to a file (for example using @kbd{C-x C-w} and
+attach) it to your bug report.
+@end enumerate
+
 @node Document structure, Tables, Introduction, Top
 @chapter Document Structure
 @cindex document structure
@@ -392,7 +519,7 @@ edit the structure of the document.
 * Structure editing::           Changing sequence and level of headlines
 * Archiving::                   Move done task trees to a different place
 * Sparse trees::                Matches embedded in context
-* Plain lists::                 Editing hand-formatted lists
+* Plain lists::                 Additional structure within an entry
 @end menu
 
 @node Outlines, Headlines, Document structure, Document structure
@@ -488,6 +615,12 @@ Note that inside tables, @kbd{S-@key{TAB}} jumps to the previous field.
 @kindex C-c C-a
 @item C-c C-a
 Show all.
+@kindex C-c C-r
+@item C-c C-r
+Reveal context around point, showing the current entry, the following
+heading and the hierarchy above.  Useful for working near a location
+exposed by a sparse tree command (@pxref{Sparse trees}) or an agenda
+command (@pxref{Agenda commands}).
 @end table
 
 When Emacs first visits an Org-mode file, the global state is set to
@@ -558,7 +691,9 @@ the middle of a line, the line is split and the rest of the line becomes
 the new headline.  If the command is used at the beginning of a
 headline, the new headline is created before the current line.  If at
 the beginning of any other line, the content of that line is made the
-new heading.
+new heading.  If the command is used at the end of a folded subtree
+(i.e. behind the ellipses at the end of a headline), then a headline
+like the current one will be inserted after the end of the subtree.
 @kindex M-S-@key{RET}
 @item M-S-@key{RET}
 Insert new TODO entry with same level as current heading.
@@ -611,26 +746,93 @@ functionality.
 @node Archiving, Sparse trees, Structure editing, Document structure
 @section Archiving
 @cindex archiving
-@cindex filing subtrees
 
 When a project represented by a (sub)tree is finished, you may want
-to move the tree to an archive place, either in the same file under a
-special top-level heading, or even to a different file.
+to move the tree out of the way and to stop it from contributing to the
+agenda.  Org-mode knows two ways of archiving.  You can mark a tree with
+the ARCHIVE tag, or you can move an entire (sub)tree to a different
+location.
+
+@menu
+* ARCHIVE tag::                 Marking a tree as inactive
+* Moving subtrees::             Moving a tree to an archive file
+@end menu
+
+@node ARCHIVE tag, Moving subtrees, Archiving, Archiving
+@subsection The ARCHIVE tag
+@cindex internal archiving
+
+A headline that is marked with the ARCHIVE tag (@pxref{Tags}) stays at
+its location in the outline tree, but behaves in the following way:
+@itemize @minus
+@item
+It does not open when you attempt to do so with a visibility cycling
+command (@pxref{Visibility cycling}).  You can force cycling archived
+subtrees with @kbd{C-@key{TAB}}, or by setting the option
+@code{org-cycle-open-archived-trees}.  Also normal outline commands like
+@code{show-all} will open archived subtrees.
+@item
+During sparse tree construction (@pxref{Sparse trees}), matches in
+archived subtrees are not exposed, unless you configure the option
+@code{org-sparse-tree-open-archived-trees}.
+@item
+During agenda view construction (@pxref{Agenda views}), the content of
+archived trees is ignored unless you configure the option
+@code{org-agenda-skip-archived-trees}.
+@item
+Archived trees are not exported (@pxref{Exporting}), only the headline
+is.  Configure the details using the variable
+@code{org-export-with-archived-trees}.
+@end itemize
+
+The following commands help managing the ARCHIVE tag:
+
+@table @kbd
+@kindex C-c C-x C-a
+@item C-c C-x C-a
+Toggle the ARCHIVE tag for the current headline.  When the tag is set,
+the headline changes to a shadowish face, and the subtree below it is
+hidden.
+@kindex C-u C-c C-x C-a
+@item C-u C-c C-x C-a
+Check if any direct children of the current headline should be archived.
+To do this, each subtree is checked for open TODO entries.  If none are
+found, the command offers to set the ARCHIVE tag for the child.  If the
+cursor is @emph{not} on a headline when this command is invoked, the
+level 1 trees will be checked.
+@kindex C-@kbd{TAB}
+@item C-@kbd{TAB}
+Cycle a tree even if it is tagged with ARCHIVE.
+@end table
+
+@node Moving subtrees,  , ARCHIVE tag, Archiving
+@subsection Moving subtrees
+@cindex external archiving
+
+Once an entire project is finished, you may want to move it to a
+different location, either in the current file, or even in a different
+file, the archive file.
+
 @table @kbd
 @kindex C-c $
-@item @kbd{C-c $}
+@item C-c $
 Archive the subtree starting at the cursor position to the location
 given by @code{org-archive-location}.
+@kindex C-u C-c $
+@item C-u C-c $
+Check if any direct children of the current headline could be moved to
+the archive.  To do this, each subtree is checked for open TODO entries.
+If none are found, the command offers to move it to the archive
+location.  If the cursor is @emph{not} on a headline when this command
+is invoked, the level 1 trees will be checked.
 @end table
 
 @cindex archive locations
-The default archive is a file in the same directory as the current
-file, with the name derived by appending @file{_archive} to the
-current file name.  For information and examples on how to change
-this, see the documentation string of the variable
-@code{org-archive-location}.  If you are also using the Org-mode
-agenda, archiving to a different file is a good way to keep archived
-trees from contributing agenda items.
+The default archive location is a file in the same directory as the
+current file, with the name derived by appending @file{_archive} to the
+current file name.  For information and examples on how to change this,
+see the documentation string of the variable
+@code{org-archive-location}.
 
 @node Sparse trees, Plain lists, Archiving, Document structure
 @section Sparse trees
@@ -660,7 +862,9 @@ match is in the body of an entry, headline and body are made visible.
 In order to provide minimal context, also the full hierarchy of
 headlines above the match is shown, as well as the headline following
 the match.  Each match is also highlighted; the highlights disappear
-when the buffer is changed with an editing command.
+when the bufer is changes an editing command, or by pressing @kbd{C-c
+C-c}.  When called with a @kbd{C-u} prefix argument, previous highlights
+are kept, so several calls to this command can be stacked.
 @end table
 @noindent
 For frequently used sparse trees of specific search strings, you can
@@ -680,17 +884,16 @@ a sparse tree matching the string @samp{FIXME}.
 Other commands use sparse trees as well.  For example @kbd{C-c
 C-v} creates a sparse TODO tree (@pxref{TODO basics}).
 
-@kindex C-c C-x v
+@kindex C-c C-e v
 @cindex printing sparse trees
 @cindex visible text, printing
 To print a sparse tree, you can use the Emacs command
 @code{ps-print-buffer-with-faces} which does not print invisible parts
 of the document @footnote{This does not work under XEmacs, because
 XEmacs uses selective display for outlining, not text properties.}.
-Or you can use the command @kbd{C-c C-x v} to export only the visible
+Or you can use the command @kbd{C-c C-e v} to export only the visible
 part of the document and print the resulting file.
 
-
 @node Plain lists,  , Sparse trees, Document structure
 @section Plain lists
 @cindex plain lists
@@ -698,12 +901,10 @@ part of the document and print the resulting file.
 @cindex lists, ordered
 @cindex ordered lists
 
-Headlines define both the structure of the Org-mode file, and also lists
-(for example, TODO items (@pxref{TODO items}) should be created using
-headline levels).  When taking notes, however, the plain text is
-sometimes easier to read with hand-formatted lists.  Org-mode supports
-editing such lists, and the HTML exporter (@pxref{Exporting}) does
-parse and format them.
+Within an entry of the outline tree, hand-formatted lists can provide
+additional structure.  They also provide a way to create lists of
+checkboxes (@pxref{Checkboxes}).  Org-mode supports editing such lists,
+and the HTML exporter (@pxref{Exporting}) does parse and format them.
 
 Org-mode knows ordered and unordered lists.  Unordered list items start
 with @samp{-}, @samp{+}, or @samp{*}@footnote{When using @samp{*} as a
@@ -723,32 +924,26 @@ less.  For example:
 @example
 @group
 ** Lord of the Rings
-My favorite scenes are (in this order)
-1. Eowyns fight with the witch king
-   + this was already my favorite scene in the book
-   + I really like Miranda Otto.
-2. The attack of the Rohirrim
-3. Peter Jackson being shot by Legolas
-    - on DVD only
-   He makes a really funny face when it happens.
-But in the end, not individual scenes matter but the film as a whole.
+   My favorite scenes are (in this order)
+   1. The attack of the Rohirrim
+   2. Eowyns fight with the witch king
+      + this was already my favorite scene in the book
+      + I really like Miranda Otto.
+   3. Peter Jackson being shot by Legolas
+       - on DVD only
+      He makes a really funny face when it happens.
+   But in the end, not individual scenes matter but the film as a whole.
 @end group
 @end example
 
-Org-mode supports these lists by tuning filling and wrapping commands
-to deal with them correctly.  
-
-@cindex checkboxes
-Every item in a plain list can be made a checkbox by starting it with
-the string @samp{[ ]}.  The checkbox status can conveniently be toggled
-with @kbd{C-c C-c}.
-
+Org-mode supports these lists by tuning filling and wrapping commands to
+deal with them correctly@footnote{Org-mode only changes the filling
+settings for Emacs.  For XEmacs, you should use Kyle E. Jones'
+@file{filladapt.el}.  To turn is on,  put into @file{.emacs}:
 @example
-* Stupid mistakes when distributing a new version
-  - [ ] update also Emacs CVS
-  - [X] forget to update index.html on the website
-  - [X] leaving a `(debug)' form in the code
+(require 'filladapt)
 @end example
+}.
 
 The following commands act on items when the cursor is in the first line
 of an item (the line with the bullet or number).
@@ -773,7 +968,7 @@ an item but does not contain the bullet, a bullet is added to the
 current line.
 @kindex M-S-@key{RET}
 @item M-S-@key{RET}
-Insert a new item with a checkbox.
+Insert a new item with a checkbox (@pxref{Checkboxes}).
 @kindex S-@key{up}
 @kindex S-@key{down}
 @item S-@key{up}
@@ -798,9 +993,9 @@ would imply a different hierarchy.  To use the new hierarchy, break
 the command chain with a cursor motion or so.
 @kindex C-c C-c
 @item C-c C-c
-If there is a checkbox in the item line, toggle the state of the
-checkbox.  Otherwise, if this is an ordered list, renumber the ordered
-list at the cursor.
+If there is a checkbox (@pxref{Checkboxes}) in the item line, toggle the
+state of the checkbox.  Otherwise, if this is an ordered list, renumber
+the ordered list at the cursor.
 @end table
 
 @node Tables, Hyperlinks, Document structure, Top
@@ -846,7 +1041,7 @@ expanded on the next re-align to span the whole table width.  So, to
 create the above table, you would only type
 
 @example
-|Name|Phone|Age
+|Name|Phone|Age|
 |-
 @end example
 
@@ -1243,7 +1438,7 @@ Instead of typing an equation into the field, you may also use the
 command @kbd{C-c =}.  It prompts for a formula (with default taken
 from the @samp{#+TBLFM:} line) and applies it to the current field.  A
 numerical prefix (e.g. @kbd{C-5 C-c =}) will apply it to that many
-subsequent fields in the current column.
+consecutive fields in the current column.
 
 @cindex recomputing table fields
 To recompute all the fields in a line, use the command @kbd{C-c *}.
@@ -1462,6 +1657,7 @@ links to other files, Usenet articles, emails, and much more.
 * Internal links::              Links to other places in the current file
 * External links::              URL-like links to the world
 * Handling links::              Creating, inserting and following
+* Link abbreviations::          Shortcuts for writing complex links
 * Search options::              Linking to a specific location
 * Custom searches::             When the default search is not enough
 * Remember::                    Org-trees store quick notes
@@ -1485,7 +1681,7 @@ of @samp{[[link][description]]} and @samp{link} is displayed instead of
 @samp{[[link]]}.  Links will be highlighted in the face @code{org-link},
 which by default is an underlined face.  You can directly edit the
 visible part of a link.  Note that this can be either the @samp{link}
-part (if there is not description) or the @samp{description} part.  To
+part (if there is no description) or the @samp{description} part.  To
 edit also the invisible @samp{link} part, use @kbd{C-c C-l} with the
 cursor on the link.
 
@@ -1502,6 +1698,7 @@ internal structure of all links, use the menu entry
 @cindex internal links
 @cindex links, internal
 @cindex CamelCase links
+@cindex targets, for links
 
 If the link does not look like a URL, it is considered to be internal in
 the current file.  Links such as @samp{[[My Target]]} or @samp{[[My
@@ -1552,6 +1749,9 @@ earlier.
 
 @node Radio targets, CamelCase links, Internal links, Internal links
 @subsection Radio targets
+@cindex radio targets
+@cindex targets, radio
+@cindex links, radio targets
 
 You can configure Org-mode to link any occurrences of certain target
 names in normal text.  So without explicitly creating a link, the text
@@ -1570,10 +1770,11 @@ loaded into Emacs.  To update the target list during editing, press
 
 Org-mode also supports CamelCase words as links.  This feature is not
 turned on by default because of the inconsistencies this system suffers
-from.  To activate CamelCase words as links, you need to customize
-the option @code{org-activate-links}.  A CamelCase word then leads to a
-text search such that @samp{CamelCaseLink} is equivalent to
-@samp{[[camel case link]]}.
+from.  It is also possible that this feature will disappear entirely in
+a future version of Org-mode.  To activate CamelCase words as links, you
+need to customize the option @code{org-activate-links}.  A CamelCase
+word then leads to a text search such that @samp{CamelCaseLink} is
+equivalent to @samp{[[camel case link]]}.
 
 @node External links, Handling links, Internal links, Hyperlinks
 @section External links
@@ -1636,8 +1837,9 @@ as links.  If spaces must be part of the link (for example in
 @samp{bbdb:Richard Stallman}), or you need to remove ambiguities about the end of
 the link, enclose them in angular brackets.
 
-@node Handling links, Search options, External links, Hyperlinks
+@node Handling links, Link abbreviations, External links, Hyperlinks
 @section Handling links
+@cindex links, handling
 
 Org-mode provides methods to create a link in the correct syntax, to
 insert it into an org-mode file, and to follow the link.
@@ -1660,8 +1862,7 @@ selected words will form the basis of the search string.  If the
 automatically created link is not working correctly or accurately
 enough, you can write custom functions to select the search string and
 to do the search for particular file types - see @ref{Custom searches}.
-The key binding @kbd{C-c l} is only a suggestion - see @ref{Installation
-and activation}.
+The key binding @kbd{C-c l} is only a suggestion - see @ref{Installation}.
 
 @kindex C-c C-l
 @cindex link completion
@@ -1671,7 +1872,11 @@ and activation}.
 Insert a link.  This prompts for a link to be inserted into the buffer.
 You can just type a link, using text for an internal link, or one of the
 link type prefixes mentioned in the examples above.  Through completion,
-all links stored during the current session can be accessed.  The link
+all links stored during the current session can be
+accessed@footnote{After insertion of a stored link, the link will be
+removed from the list of stored links.  To keep it in the list later
+use, use a triple @kbd{C-u} prefix to @kbd{C-c C-l}, or configure the
+option @code{org-keep-stored-link-after-insertion}.}.  The link
 will be inserted into the buffer, along with a descriptive text.  Note
 that you don't have to use this command to insert a link.  Links in
 Org-mode are plain text, and you can type or paste them straight into
@@ -1708,11 +1913,11 @@ When the cursor is on an internal link, this commands runs the
 corresponding search.  When the cursor is on a TAG list in a headline,
 it creates the corresponding TAGS view.  If the cursor is on a time
 stamp, it compiles the agenda for that date.  Furthermore, it will visit
-text files in @samp{file:} links with Emacs and select a suitable
-application for non-text files.  Classification of files is based on
-file extension only.  See option @code{org-file-apps}.  If you want to
-override the default application and visit the file with Emacs, use a
-@kbd{C-u} prefix.
+text and remote files in @samp{file:} links with Emacs and select a
+suitable application for local non-text files.  Classification of files
+is based on file extension only.  See option @code{org-file-apps}.  If
+you want to override the default application and visit the file with
+Emacs, use a @kbd{C-u} prefix.
 
 @kindex mouse-2
 @kindex mouse-1
@@ -1723,7 +1928,9 @@ would.  Under Emacs 22, also @kbd{mouse-1} will follow a link.
 
 @kindex mouse-3
 @item mouse-3
-Like @kbd{mouse-2}, but force file links to be opened with Emacs.
+Like @kbd{mouse-2}, but force file links to be opened with Emacs, and
+internal links to be displayed in another window@footnote{See the
+variable @code{org-display-internal-link-with-indirect-buffer}}.
 
 @cindex mark ring
 @kindex C-c %
@@ -1740,8 +1947,57 @@ command several times in direct succession moves through a ring of
 previously recorded positions.
 @end table
 
+@node Link abbreviations, Search options, Handling links, Hyperlinks
+@section Link abbreviatons
+@cindex link abbreviations
+@cindex abbreviation, links
+
+Long URLs can be cumbersome to type, and often many similar links are
+needed in a document.  For this you can use link abbreviations.  An
+abbreviated link looks like this
+
+@example
+[[linkword::tag][description]]
+@end example
+
+@noindent
+where the tag is optional.  Such abbreviations are resolved according to
+the information in the variable @code{org-link-abbrev-alist} that
+relates the linkwords to replacement text.  Here is an example:
+
+@lisp
+@group
+(setq org-link-abbrev-alist
+  '(("bugzilla" . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
+    ("google"   . "http://www.google.com/search?q=")
+    ("ads"      . "http://adsabs.harvard.edu/cgi-bin/
+                   nph-abs_connect?author=%s&db_key=AST")))
+@end group
+@end lisp
+
+If the replacement text contains the string @samp{%s}, it will be
+replaced with the tag.  Otherwise the tag will be appended to the string
+in order to create the link.  You may also specify a function that will
+be called with the tag as the only argument to create the link.
+
+With the above setting, you could link to a specific bug with
+@code{[[bugzilla::129]]}, search the web for OrgMode with
+@code{[[google::OrgMode]]} and find out what the Org-mode author is
+doing besides Emacs hacking with @code{[[ads::Dominik,C]]}.
+
+If you need special abbreviations just for a single Org-mode buffer, you
+can define them in the file with
+
+@example
+#+LINK: bugzilla  http://10.1.2.9/bugzilla/show_bug.cgi?id=
+#+LINK: google    http://www.google.com/search?q=%s
+@end example
+
+@noindent
+In-buffer completion @pxref{Completion} can be used after @samp{[} to
+complete link abbreviations.
 
-@node Search options, Custom searches, Handling links, Hyperlinks
+@node Search options, Custom searches, Link abbreviations, Hyperlinks
 @section Search options in file links
 @cindex search option in file links
 @cindex file links, searching
@@ -1793,6 +2049,7 @@ a search for @samp{find me} in the current file, just as
 @node Custom searches, Remember, Search options, Hyperlinks
 @section Custom Searches
 @cindex custom search strings
+@cindex search strings, custom
 
 The default mechanism for creating search strings and for doing the
 actual search related to a file link may not work correctly in all
@@ -1922,12 +2179,13 @@ things you have to do.
 
 @menu
 * TODO basics::                 Marking and displaying TODO entries
-* Progress logging::            Document your productivity
 * TODO extensions::             Workflow and assignments
 * Priorities::                  Some things are more important than others
+* Breaking down tasks::         Splitting a task into managable pieces
+* Checkboxes::                  Tick-off lists
 @end menu
 
-@node TODO basics, Progress logging, TODO items, TODO items
+@node TODO basics, TODO extensions, TODO items, TODO items
 @section Basic TODO functionality
 
 Any headline can become a TODO item by starting it with the word TODO,
@@ -1979,28 +2237,8 @@ the TODO entries directly from that buffer (@pxref{Agenda commands}).
 @c agenda, customize the variable @code{org-agenda-include-all-todo}.
 @end table
 
-@node Progress logging, TODO extensions, TODO basics, TODO items
-@section Progress Logging
-@cindex progress logging
-@cindex logging, of progress
-If you want to keep track of @emph{when} a certain TODO item was
-finished, turn on logging with
-
-@lisp
-(setq org-log-done t)
-@end lisp
-
-@noindent
-Then each time you turn a TODO entry into DONE using either @kbd{C-c
-C-t} in the Org-mode buffer or @kbd{t} in the agenda buffer, a line
-@samp{CLOSED: [timestamp]} will be inserted just after the headline.
-If you turn the entry back into a TODO item again through further
-state cycling, that line will be removed again.  In the timeline
-(@pxref{Timeline}) and in the agenda (@pxref{Weekly/Daily agenda}),
-you can then use the @kbd{L} key to display the TODO items closed on
-each day, giving you an overview of what has been done on a day.
 
-@node TODO extensions, Priorities, Progress logging, TODO items
+@node TODO extensions, Priorities, TODO basics, TODO items
 @section Extended use of TODO keywords
 @cindex extended TODO keywords
 
@@ -2108,8 +2346,7 @@ changing one of these lines, use @kbd{C-c C-c} with the cursor still
 in the line to make the changes known to Org-mode@footnote{Org-mode
 parses these lines only when Org-mode is activated after visiting a
 file.  @kbd{C-c C-c} with the cursor in a line starting with @samp{#+}
-is simply restarting Org-mode, making sure that these changes will be
-respected.}.
+is simply restarting Org-mode for the current buffer.}.
 
 If you want to use very many keywords, for example when working with a
 large group of people, you may split the names over several lines:
@@ -2121,7 +2358,7 @@ large group of people, you may split the names over several lines:
 #+TYP_TODO: DONE
 @end example
 
-@node Priorities,  , TODO extensions, TODO items
+@node Priorities, Breaking down tasks, TODO extensions, TODO items
 @section Priorities
 @cindex priorities
 
@@ -2158,8 +2395,96 @@ are also used to modify time stamps (@pxref{Creating timestamps}).
 Furthermore, these keys are also used by CUA-mode (@pxref{Conflicts}).
 @end table
 
+@node Breaking down tasks, Checkboxes, Priorities, TODO items
+@section Breaking tasks down into subtasks
+@cindex tasks, breaking down
+
+It is often advisable to break down large tasks into smaller, managable
+subtasks.  You can do this by creating an outline tree below a TODO
+item, with detailed subtasks on the tree@footnote{To keep subtasks out
+of the global TODO list, see the
+@code{org-agenda-todo-list-sublevels}.}.  Another possibility is the use
+of checkboxes to ideantify (a hierarchy of) a large number of subtasks
+(@pxref{Checkboxes}).
+
+
+@node Checkboxes,  , Breaking down tasks, TODO items
+@section Checkboxes
+@cindex checkboxes
+
+Every item in a plain list (@pxref{Plain lists}) can be made a checkbox
+by starting it with the string @samp{[ ]}.  This feature is similar to
+TODO items (@pxref{TODO items}), but more lightweight.  Checkboxes are
+not included into the global TODO list, so they are often great to split
+a task into a number of simple steps.  Or you can use them in a shopping
+list.  To toggle a checkbox, use @kbd{C-c C-c}, or try Piotr Zielinski's
+@file{org-mouse.el}.  Here is an example of a checkbox list.
+
+@example
+* TODO Organize party [3/6]
+  - call people [1/3]
+    - [ ] Peter
+    - [X] Sarah
+    - [ ] Sam
+  - [X] order food
+  - [ ] think about what music to play
+  - [X] talk to the neighbors
+@end example
+
+@cindex statistics, for checkboxes
+@cindex checkbox statistics
+The @samp{[3/6]} and @samp{[1/3]} in the first and second line are
+cookies indicating how many checkboxes are present in this entry, and
+how many of them have been checked off.  This can give you an idea on
+how many checkboxes remain, even without opening a folded entry.  The
+cookies can be placed into a headline or into (the first line of) a
+plain list item. Each cookie covers all checkboxes structurally below
+that headline/item.  You have to insert the cookie yourself by typing
+either @samp{[/]} or @samp{[%]}.  In the first case you get an @samp{n
+out of m} result, in the second case you get information about the
+percentage of checkboxes checked (in the above example, this would be
+@samp{[50%]} and @samp{[33%], respectively}).
+
+@noindent The following commands work with checkboxes:
+
+@table @kbd
+@kindex C-c C-c
+@item C-c C-c
+Toggle checkbox at point.
+@kindex C-c C-x C-b
+@item C-c C-x C-b
+Toggle checkbox at point.
+@itemize @minus
+@item
+If there is an active region, toggle the first checkbox in the region
+and set all remaining boxes to the same status as the first.  If you
+want to toggle all boxes in the region independently, use a prefix
+argument.
+@item
+If the cursor is in a headline, toggle checkboxes in the region between
+this headline and the next (so @emph{not} the entire subtree).
+@item
+If no active region, just toggle the checkbox at point.
+@end itemize
+@kindex M-S-@key{RET}
+@item M-S-@key{RET}
+Insert a new item with a checkbox.
+This works only if the cursor is already in a plain list item
+(@pxref{Plain lists}).
+@kindex C-c #
+@item C-c #
+Update the checkbox statistics in the current outline entry.  When
+called with a @kbd{C-u} prefix, update the entire file.  Checkbox
+statistic cookies are updated automatically if you toggle checkboxes
+with @kbd{C-c C-c} and make new ones with @kbd{M-S-@key{RET}}.  If you
+delete boxes or add/change them by hand, use this command to get things
+back into synch.  Or simply toggle any checkbox twice with @kbd{C-c C-c}.
+@end table
+
 @node Timestamps, Tags, TODO items, Top
 @chapter Timestamps
+@cindex time stamps
+@cindex date stamps
 
 Items can be labeled with timestamps to make them useful for project
 planning.
@@ -2167,6 +2492,8 @@ planning.
 @menu
 * Time stamps::                 Assigning a time to a tree entry
 * Creating timestamps::         Commands which insert timestamps
+* Custom time format::          If you cannot work with the ISO format
+* Progress logging::            Documenting when what work was done.
 @end menu
 
 
@@ -2179,20 +2506,37 @@ planning.
 @cindex scheduling
 
 A time stamp is a specification of a date (possibly with time) in a
-special format, either @samp{<2003-09-16 Tue>} or @samp{<2003-09-16
-Tue 09:39>}.  A time stamp can appear anywhere in the headline or body
-of an org-tree entry.  Its presence allows entries to be shown on specific
-dates in the agenda (@pxref{Weekly/Daily agenda}).  We distinguish:
+special format, either @samp{<2003-09-16 Tue>} or @samp{<2003-09-16 Tue
+09:39>}@footnote{This is the standard ISO date/time format.  If you
+cannot get used to these, see @ref{Custom time format}}.  A time stamp
+can appear anywhere in the headline or body of an org-tree entry.  Its
+presence allows entries to be shown on specific dates in the agenda
+(@pxref{Weekly/Daily agenda}).  We distinguish:
 
 @table @var
 @item Plain time stamp
 @cindex timestamp
 A simple time stamp just assigns a date/time to an item.  This is just
 like writing down an appointment in a paper agenda, or like writing down
-an event in a diary, when you want to take not of when something
+an event in a diary, when you want to take note of when something
 happened.  In the timeline and agenda displays, the headline of an entry
 associated with a plain time stamp will be shown exactly on that date.
 
+@example
+* Meet Peter at the movies <2006-11-01 Wed 19:15>
+@end example
+
+@item Inactive time stamp
+@cindex timestamp, inactive
+@cindex inactive timestamp
+Just like a plain time stamp, but with square brackets instead of
+angular ones.  These time stamps are inactive in the sense that thay do
+@emph{not} trigger an entry to show up in the agenda.
+
+@example
+* Gillian comes late for the fifth time [2006-11-01 Wed]
+@end example
+
 @item Time stamp range
 @cindex timerange
 Two time stamps connected by @samp{--} denote a time range.  The
@@ -2240,9 +2584,16 @@ When @code{org-log-done} is non-nil, Org-mode will automatically insert
 a special time stamp each time a TODO entry is marked done
 (@pxref{Progress logging}).  This time stamp is enclosed in square
 brackets instead of angular brackets.
+
+@item Time range with CLOCK keyword
+@cindex CLOCK keyword
+When using the clock to time the work that is being done on specific
+items, time ranges preceded by the CLOCK keyword are inserted
+automatically into the file.  The time stamps are enclosed in square
+brackets instead of angular brackets.  @xref{Clocking work time}.
 @end table
 
-@node Creating timestamps,  , Time stamps, Timestamps
+@node Creating timestamps, Custom time format, Time stamps, Timestamps
 @section Creating timestamps
 @cindex creating timestamps
 @cindex timestamps, creating
@@ -2281,8 +2632,8 @@ instead.
 
 @kindex C-c C-o
 @item C-c C-o
-Access the agenda for the date given by the time stamp at point
-(@pxref{Weekly/Daily agenda}).
+Access the agenda for the date given by the time stamp or -range at
+point (@pxref{Weekly/Daily agenda}).
 
 @kindex C-c C-d
 @item C-c C-d
@@ -2316,11 +2667,11 @@ CUA-mode (@pxref{Conflicts}).
 @kindex S-@key{down}
 @item S-@key{up}
 @itemx S-@key{down}
-Change the item under the cursor in a timestamp.  The cursor can be on
-a year, month, day, hour or minute.  Note that if the cursor is not at
-a time stamp, these same keys modify the priority of an item.
-(@pxref{Priorities}). The key bindings also conflict with CUA-mode
-(@pxref{Conflicts}).
+Change the item under the cursor in a timestamp.  The cursor can be on a
+year, month, day, hour or minute.  Note that if the cursor is in a
+headline and not at a time stamp, these same keys modify the priority of
+an item.  (@pxref{Priorities}). The key bindings also conflict with
+CUA-mode (@pxref{Conflicts}).
 
 
 @kindex C-c C-y
@@ -2331,15 +2682,42 @@ end.  With prefix arg, insert result after the time range (in a table:
 into the following column).
 @end table
 
+
+@menu
+* The date/time prompt::        How org-mode helps you entring date and time
+@end menu
+
+@node The date/time prompt,  , Creating timestamps, Creating timestamps
+@subsection The date/time prompt
 @cindex date, reading in minibuffer
 @cindex time, reading in minibuffer
+
+When Org-mode prompts for a date/time, the prompt suggests to enter an
+ISO date.  But it will in fact accept any string containing some date
+and/or time information.  You can, for example, use @kbd{C-y} to paste a
+(possibly multi-line) string copied from an email message.  Org-mode
+will find whatever information is in there and will replace anything not
+specified with the current date and time.  For example:
+
+@example
+  3-2-5         --> 2003-02-05
+  feb 15        --> currentyear-02-15
+  sep 12 9      --> 2009-09-12
+  12:45         --> today 12:45
+  22 sept 0:34  --> currentyear-09-22 0:34
+  12            --> currentyear-currentmonth-12
+  Fri           --> nearest Friday (today or later)
+@end example
+
+The function understands English month and weekday abbreviations.  If
+you want to use unabbreviated names and/or other languages, configure
+the variables @code{parse-time-months} and @code{parse-time-weekdays}.
+
 @cindex calendar, for selecting date
-When Org-mode prompts for a date/time, the function reading your input
-will replace anything you choose not to specify with the current date
-and time.  For details, see the documentation string of
-@command{org-read-date}.  Also, a calender will pop up to allow
-selecting a date.  The calendar can be fully controlled from the
-minibuffer, and a date can be selected with the following commands:
+Parallel to the minibuffer prompt, a calendar is popped up@footnote{If
+you don't need/want the calendar, configure the variable
+@code{org-popup-calendar-for-date-prompt}.}.  You can control the
+calendar fully from the minibuffer:
 
 @table @kbd
 @kindex <
@@ -2371,9 +2749,178 @@ One month forward.
 One month back.
 @kindex @key{RET}
 @item @key{RET}
-Choose date in calendar (only if nothing typed into minibuffer).
+Choose date in calendar (only if nothing was typed into minibuffer).
+@end table
+
+@node Custom time format, Progress logging, Creating timestamps, Timestamps
+@section Custom time format
+@cindex custom date/time format
+@cindex time format, custom
+@cindex date format, custom
+
+Org-mode uses the standard ISO notation for dates and times as it is
+defined in ISO 8601.  If you cannot get used to this and require another
+representation of date and time to keep you happy, you can get it by
+customizing the variables @code{org-display-custom-times} and
+@code{org-time-stamp-custom-formats}.
+
+@table @kbd
+@kindex C-c C-x C-t
+@item C-c C-x C-t
+Toggle the display of custom formats for dates and times.
+@end table
+
+@noindent
+Org-mode needs the default format for scanning, so the custom date/time
+format does not @emph{replace} the default format - instead it is put
+@emph{over} the default format using text properties.  This has the
+following consequences:
+@itemize @bullet
+@item 
+You cannot place the cursor onto a time stamp anymore, only before or
+after.
+@item
+The @kbd{S-@key{up}/@key{down}} keys can no longer be used to adjust
+each component of a time stamp.  If the cursor is at the beginning of
+the stamp, @kbd{S-@key{up}/@key{down}} will change the stamp by one day,
+just like @kbd{S-@key{left}/@key{right}}.  At the end of the stamp, the
+time will be changed by one minute.
+@item
+When you delete a time stamp character-by-character, it will only
+disappear from the buffer after @emph{all} (invisible) characters
+belonging to the ISO timestamp have been removed.
+@item
+If the custom time stamp format is longer than the default and you are
+using dates in tables, table alignment will be messed up.  If the custom
+format is shorter, things do work as expected.
+@end itemize
+
+@node Progress logging,  , Custom time format, Timestamps
+@section Progress Logging
+@cindex progress logging
+@cindex logging, of progress
+
+Org-mode can automatically record a time stamp when you mark a TODO item
+as DONE.  You can also measure precisely the time you spent on specific
+items in a project by starting and stopping a clock when you start and
+stop working on an aspect of a project.
+
+@menu
+* Closing items::               When was this entry marked DONE?
+* Clocking work time::          When exactly did you work on this item?
+@end menu
+
+@node Closing items, Clocking work time, Progress logging, Progress logging
+@subsection Closing items
+
+If you want to keep track of @emph{when} a certain TODO item was
+finished, turn on logging with
+
+@lisp
+(setq org-log-done t)
+@end lisp
+
+@noindent
+Then each time you turn a TODO entry into DONE using either @kbd{C-c
+C-t} in the Org-mode buffer or @kbd{t} in the agenda buffer, a line
+@samp{CLOSED: [timestamp]} will be inserted just after the headline.
+If you turn the entry back into a TODO item again through further
+state cycling, that line will be removed again.  In the timeline
+(@pxref{Timeline}) and in the agenda (@pxref{Weekly/Daily agenda}),
+you can then use the @kbd{l} key to display the TODO items closed on
+each day, giving you an overview of what has been done on a day.
+See the variable @code{org-log-done} for the possibility to record an
+additional note together with a timestamp.
+
+@node Clocking work time,  , Closing items, Progress logging
+@subsection Clocking work time
+
+Org-mode allows you to clock the time you spent on specific tasks in a
+project.  When you start working on an item, you can start the clock.
+When you stop working on that task, or when you mark the task done, the
+clock is stopped and the corresponding time interval is recorded.  It
+also computes the total time spent on each subtree of a project.
+
+@table @kbd
+@kindex C-c C-x C-i
+@item C-c C-x C-i
+Start the clock on the current item (clock-in).  This inserts the CLOCK
+keyword together with a timestamp.
+@kindex C-c C-x C-o
+@item C-c C-x C-o
+Stop the clock (clock-out).  The inserts another timestamp at the same
+location where the clock was last started.  It also directly computes
+the resulting time in inserts it after the time range as @samp{=>
+HH:MM}.  See the variable @code{org-log-done} for the possibility to
+record an additional note together with a the clock-out time stamp.
+@kindex C-c C-y
+@item C-c C-y
+Recompute the time interval after changing one of the time stamps.  This
+is only necessary if you edit the time stamps directly.  If you change
+them with @kbd{S-@key{cursor}} keys, the update is automatic.
+@kindex C-c C-t
+@item C-c C-t
+Changing the TODO state of an item to DONE automatically stops the clock
+if it is running in this same item.
+@kindex C-c C-x C-x
+@item C-c C-x C-x
+Cancel the current clock.  This is useful if a clock was started by
+mistake, or if you ended up working on something else.
+@kindex C-c C-x C-d
+@item C-c C-x C-d
+Display time summaries for each subtree in the current buffer.  This
+puts overlays at the end of each headline, showing the total time
+recorded under that heading, including the time of any subheadings. You
+can use visibility cycling to study the tree, but the overlays disappear
+when you change the buffer (see variable
+@code{org-remove-highlights-with-change}) or press @kbd{C-c C-c}.
+@kindex C-c C-x C-r
+@item C-c C-x C-r
+Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
+report as an org-mode table into the current file.
+@example
+#+BEGIN: clocktable :maxlevel 2 :emphasize nil
+
+#+END: clocktable
+@end example
+@noindent
+If such a block already exists, its content is replaced by the new
+table.  The @samp{BEGIN} line can specify options:
+@example
+:maxlevels   @r{Maximum level depth to which times are listed in the table.}
+:emphasize   @r{When @code{t}, emphasize level one and level two items}
+:block       @r{The time block to consider.  This block is specified relative}
+             @r{to the current time and may be any of these keywords:}
+             @r{@code{today}, @code{yesterday}, @code{thisweek}, @code{lastweek},}
+             @r{@code{thismonth}, @code{lastmonth}, @code{thisyear}, or @code{lastyear}}.
+:tstart      @r{A time string specifying when to start considering times}
+:tend        @r{A time string specifying when to stop considering times}
+@end example
+So to get a clock summary for the current day, you could write
+@example
+#+BEGIN: clocktable :maxlevel 2 :block today
+
+#+END: clocktable
+@end example
+and to use a specific time range you could write@footnote{Note that all
+parameters must be specified in a single line - the line is broken here
+only to fit it onto the manual.}
+@example
+#+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>" 
+                    :tend "<2006-08-10 Thu 12:00>"
+
+#+END: clocktable
+@end example
+@kindex C-u C-c C-x C-u
+@item C-u C-c C-x C-u
+Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
+you have several clocktable blocks in a buffer.
 @end table
 
+The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
+the agenda (@pxref{Weekly/Daily agenda}) to show which tasks have been
+worked on or closed during a day.
+
 @node Tags, Agenda views, Timestamps, Top
 @chapter Tags
 @cindex tags
@@ -2399,6 +2946,7 @@ Tags are normal words containing letters, numbers, @samp{_}, and
 @node Tag inheritance, Setting tags, Tags, Tags
 @section Tag inheritance
 @cindex inheritance, of tags
+@cindex sublevels, inclusion into tags match
 
 @i{Tags} make use of the hierarchical structure of outline trees.  If a
 heading has a certain tag, all subheadings will inherit the tag as
@@ -2423,6 +2971,7 @@ searching using the variables @code{org-use-tag-inheritance} and
 @node Setting tags, Tag searches, Tag inheritance, Tags
 @section Setting tags
 @cindex setting tags
+@cindex tags, setting
 
 @kindex M-@key{TAB}
 Tags can simply be typed into the buffer at the end of a headline.
@@ -2446,18 +2995,26 @@ Org will support tag insertion based on a @emph{list of tags}.  By
 default this list is constructed dynamically, containing all tags
 currently used in the buffer.  You may also globally specify a hard list
 of tags with the variable @code{org-tag-alist}.  Finally you can set
-the allowed tags for a given file with lines like
+the default tags for a given file with lines like
 
 @example
 #+TAGS: @@WORK @@HOME @@TENNISCLUB
 #+TAGS: Laptop Car PC Sailboat
 @end example
 
-The default method Org-mode uses to support setting tags is completion.
-However, it also implements a much better method: @emph{fast tag
+If you have globally defined your preferred set of tags using the
+variable @code{org-tag-alist}, but would like to use a dynamic tag list
+in a specific file: Just add an empty TAGS option line to that file:
+
+@example
+#+TAGS:
+@end example
+
+The default support method for entering tags is minibuffer completion.
+However, Org-mode also implements a much better method: @emph{fast tag
 selection}.  This method allows to select and deselect tags with a
-single key per tag.  To function efficiently, you need to assign unique
-keys to all tags.  This can be done globally with
+single key per tag.  To function efficiently, you should assign unique
+keys to most tags.  This can be done globally with
 
 @lisp
 (setq org-tag-alist '(("@@WORK" . ?w) ("@@HOME" . ?h) ("Laptop" . ?l)))
@@ -2466,37 +3023,79 @@ keys to all tags.  This can be done globally with
 @noindent or on a per-file basis with
 
 @example
-#+TAGS: @@WORK(w)  @@HOME(h)  @@TENNISCLUB(t)
-#+TAGS: Laptop(l)  Car(c)  PC(p) Sailboat(s)
+#+TAGS: @@WORK(w)  @@HOME(h)  @@TENNISCLUB(t)  Laptop(l)  PC(p)
+@end example
+
+@noindent
+You can also group together tags that are mutually exclusive.  With
+curly braces@footnote{In @code{org-mode-alist} use
+@code{'(:startgroup)} and @code{'(:endgroup)}, respectively.  Several
+groups are allowed.}
+
+@example
+#+TAGS: @{ @@WORK(w)  @@HOME(h)  @@TENNISCLUB(t) @}  Laptop(l)  PC(p)
 @end example
 
+@noindent you indicate that at most one of @samp{@@WORK}, @samp{@@HOME},
+and @samp{@@TENNISCLUB} should be selected.
+
 @noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
 these lines to activate any changes.
 
-If selection keys have been configured, pressing @kbd{C-c C-c} will
+If at least one tag has a selection key, pressing @kbd{C-c C-c} will
 automatically present you with a special interface, listing inherited
 tags, the tags of the current headline, and a list of all legal tags
-with corresponding keys.  Pressing keys for the tags will add or remove
-them from the list of tags in the current line.  @key{SPC} clears all
-tags for this line, @kbd{RET} accepts the modified set, and @kbd{C-g}
-aborts without installing changes.  This method lets you assing tags to
-a headline with very few keys.  With the above setup, you could clear
-the current tags and set @samp{@@HOME}, @samp{Laptop} and @samp{PC} tags
-with just the following keys: @kbd{C-c C-c @key{SPC} h l p @key{RET}}.
-
-What if you have globally defined your preferred set of tags using the
-variable @code{org-tag-alist}, but would like to use a dynamic tag list
-in a specific file?  Just add and empty TAGS option line to that file:
-
-@example
-#+TAGS:
-@end example
+with corresponding keys@footnote{Keys will automatically be assigned to
+tags which have no configured keys.}.  In this interface, you can use
+the following keys:
 
+@table @kbd
+@item a-z...
+Pressing keys assigned to tags will add or remove them from the list of
+tags in the current line.  Selecting a tag in a group of mutually
+exclusive tags will turn off any other tags from that group.
+@kindex @key{TAB}
+@item @key{TAB}
+Enter a tag in the minibuffer, even if the tag is not in the predefined
+list.  You will be able to complete on all tags present in the buffer.
+@kindex @key{SPC}
+@item @key{SPC}
+Clear all tags for this line.
+@kindex @key{RET}
+@item @key{RET}
+Accept the modified set.
+@item C-g
+Abort without installing changes.
+@item q
+If @kbd{q} is not assigned to a tag, it aborts like @kbd{C-g}.
+@item !
+Turn of groups of mutually exclusive tags.  Use this to (as an
+exception) assign several tags from such a group.
+@item C-c
+Toggle auto-exit after the next change (see below).
+@end table
 
+@noindent
+This method lets you assign tags to a headline with very few keys.  With
+the above setup, you could clear the current tags and set @samp{@@HOME},
+@samp{Laptop} and @samp{PC} tags with just the following keys: @kbd{C-c
+C-c @key{SPC} h l p @key{RET}}.  Switching from @samp{@@HOME} to
+@samp{@@WORK} would be done with @kbd{C-c C-c w @key{RET}} or
+alternatively with @kbd{C-c C-c C-c w}.  Adding the non-predefined tag
+@samp{Sarah} could be done with @kbd{C-c C-c @key{TAB} S a r a h
+@key{RET} @key{RET}}.
+
+If you find that most of the time, you need only a single keypress to
+modify your list of tags, set the variable
+@code{org-fast-tag-selection-single-key}.  Then you no longer have to
+press @key{RET} to exit fast tag selection - it will immediately exit
+after the first change.  If you then occasionally need more keys, press
+@kbd{C-c} to turn off auto-exit for the current tag selection process.
 
 @node Tag searches,  , Setting tags, Tags
 @section Tag searches
 @cindex tag searches
+@cindex searching for tags
 
 Once a tags system has been set up, it can be used to collect related
 information into special lists.
@@ -2516,19 +3115,47 @@ only TODO items and force checking subitems (see variable
 @code{org-tags-match-list-sublevels}).
 @end table
 
+@cindex Boolean logic, for tag searches
 A @i{tags} search string can use Boolean operators @samp{&} for AND and
 @samp{|} for OR.  @samp{&} binds more strongly than @samp{|}.
 Parenthesis are currently not implemented.  A tag may also be preceded
 by @samp{-}, to select against it, and @samp{+} is syntactic sugar for
 positive selection.  The AND operator @samp{&} is optional when @samp{+}
-or @samp{-} is present.  For example, @samp{+WORK-BOSS} would select all
-headlines that are tagged @samp{:WORK:}, but discard those also tagged
-@samp{:BOSS:}.  The search string @samp{WORK|LAPTOP} selects all lines
-tagged @samp{:WORK:} or @samp{:LAPTOP:}.  The string
-@samp{WORK|LAPTOP&NIGHT} requires that the @samp{:LAPTOP:} lines are
-also tagged @samp{NIGHT}.
-
-@node Agenda views, Exporting, Tags, Top
+or @samp{-} is present.  Examples:
+
+@table @samp
+@item +WORK-BOSS
+Select all headlines that are tagged @samp{:WORK:}, but discard those also tagged
+@samp{:BOSS:}.
+@item WORK|LAPTOP
+Selects lines tagged @samp{:WORK:} or @samp{:LAPTOP:}.
+@item WORK|LAPTOP&NIGHT
+Like the previous example, but require  the @samp{:LAPTOP:} lines to be
+tagged also @samp{NIGHT}.
+@end table
+
+@cindex TODO keyword matching, with tags search
+If you are using multi-state TODO keywords (@pxref{TODO extensions}), it
+can be useful to also match on the TODO keyword.  This can be done by
+adding a condition after a slash to a tags match.  The syntax is similar
+to the tag matches, but should be applied with consideration: For
+example, a positive selection on several TODO keywords can not
+meaningfully be combined with boolean AND.  However, @emph{negative
+selection} combined with AND can be meaningful.  Examples:
+
+@table @samp
+@item WORK/WAITING
+Select @samp{:WORK:}-tagged TODO lines with the specific TODO
+keyword @samp{WAITING}.
+@item WORK/-WAITING-NEXT
+Select @samp{:WORK:}-tagged TODO lines that are neither @samp{WAITING}
+nor @samp{NEXT}
+@item WORK/+WAITING|+NEXT
+Select @samp{:WORK:}-tagged TODO lines that are either @samp{WAITING} or
+@samp{NEXT}.
+@end table
+
+@node Agenda views, Embedded LaTeX, Tags, Top
 @chapter Agenda Views
 @cindex agenda views
 
@@ -2539,7 +3166,7 @@ are important for a particular date, this information must be collected,
 sorted and displayed in an organized way.
 
 Org-mode can select items based on various criteria, and display them
-in a separate buffer.  Three different views are provided:
+in a separate buffer.  Five different view types are provided:
 
 @itemize @bullet
 @item
@@ -2547,17 +3174,28 @@ an @emph{agenda} that is like a calendar and shows information
 for specific dates
 @item
 a @emph{TODO list} that covers all unfinished
-action items, and
+action items,
 @item
 a @emph{tags view} that shows information based on
-the tags associated with headlines in the outline tree.
+the tags associated with headlines in the outline tree,
+@item
+a @emph{timeline view} that shows all events in a single Org-mode file,
+in time-sorted view
+@item
+@emph{custom views} that are special tag and keyword searches and
+combinations of different views.
 @end itemize
 
 @noindent
 The extracted information is displayed in a special @emph{agenda
 buffer}.  This buffer is read-only, but provides commands to visit the
 corresponding locations in the original Org-mode files, and even to
-edit these files remotely.
+edit these files remotely.  
+
+Two variables control how the agenda buffer is displayed and whether the
+window configuration is restored when the agenda exits:
+@code{org-agenda-window-setup} and
+@code{org-agenda-restore-windows-after-quit}.
 
 @menu
 * Agenda files::                Files being searched for agenda information
@@ -2566,18 +3204,22 @@ edit these files remotely.
 * Global TODO list::            All unfinished action items
 * Matching headline tags::      Structured information with fine-tuned search
 * Timeline::                    Time-sorted view for single file
+* Presentation and sorting::    How agenda items are prepared for display
 * Agenda commands::             Remote editing of org trees
+* Custom agenda views::         Defining special searches and views
 @end menu
 
 @node Agenda files, Agenda dispatcher, Agenda views, Agenda views
 @section Agenda files
+@cindex agenda files
+@cindex files for agenda
 
 The information to be shown is collected from all @emph{agenda files},
 the files listed in the variable @code{org-agenda-files}@footnote{If the
 value of that variable is not a list, but a single file name, then the
 list of agenda files will be maintained in that external file.}.  Thus even
 if you only work with a single Org-mode file, this file should be put
-into that list@footnote{When using the dispatcher pressing @kbd{1}
+into that list@footnote{When using the dispatcher, pressing @kbd{1}
 before selecting a command will actually limit the command to the
 current file, and ignore @code{org-agenda-files} until the next
 dispatcher command.}.  You can customize @code{org-agenda-files}, but
@@ -2606,15 +3248,12 @@ to visit any of them.
 @section The agenda dispatcher
 @cindex agenda dispatcher
 @cindex dispatching agenda commands
-@cindex custom agenda commands
-@cindex agenda commands, custom
 The views are created through a dispatcher that should be bound to a
-global key, for example @kbd{C-c a} (@pxref{Installation and
-activation}).  In the following we will assume that @kbd{C-c a} is
-indeed how the dispatcher is accessed and list keyboard access to
-commands accordingly.  After pressing @kbd{C-c a}, an additional
-letter is required to execute a command.  The dispatcher offers the
-following default commands:
+global key, for example @kbd{C-c a} (@pxref{Installation}).  In the
+following we will assume that @kbd{C-c a} is indeed how the dispatcher
+is accessed and list keyboard access to commands accordingly.  After
+pressing @kbd{C-c a}, an additional letter is required to execute a
+command.  The dispatcher offers the following default commands:
 @table @kbd
 @item a
 Create the calendar-like agenda (@pxref{Weekly/Daily agenda}).
@@ -2623,44 +3262,32 @@ Create a list of all TODO items (@pxref{Global TODO list}).
 @item m / M
 Create a list of headlines matching a TAGS expression (@pxref{Matching
 headline tags}).
+@item L
+Create the timeline view for the current buffer (@pxref{Timeline}).
+@item 1
+Restrict an agenda command to the current buffer.  After pressing
+@kbd{1}, you still need to press the character selecting the command.
+@item 0
+If there is an active region, restrict the following agenda command to
+the region.  Otherwise, restrict it to the current subtree.  After
+pressing @kbd{0}, you still need to press the character selecting the
+command.
 @end table
 
-You can also define custom commands that will be accessible through
-the dispatcher, just like the default commands.  Custom commands are
-global searches for tags and specific TODO keywords, or a variety of
-sparse tree creating commands (@pxref{Sparse trees}).  As sparse trees
-are only defined for a single org-mode file, these latter commands act
-on the current buffer instead of the list of agenda files.
-
-@kindex C-c a C
-Custom commands are configured in the variable
-@code{org-agenda-custom-commands}.  You can customize this variable,
-for example by pressing @kbd{C-c a C}.  You can also directly set it
-with Emacs Lisp in @file{.emacs}.  For example:
-
-@lisp
-(setq org-agenda-custom-commands
-      '(("w" todo "WAITING")
-        ("u" tags "+BOSS-URGENT")
-        ("U" tags-tree "+BOSS-URGENT")
-        ("f" occur-tree "\\<FIXME\\>")))
-@end lisp
-
-@noindent will define @kbd{C-c a w} as a global search for
-TODO entries with @samp{WAITING} as the TODO keyword, @kbd{C-c a u} as a
-global tags search for headlines marked @samp{:BOSS:} but not
-@samp{:URGENT:}, @kbd{C-c a U} to do the same search but only in the
-current buffer and display the result as a sparse tree, and @kbd{C-c a
-f} to create a sparse tree with all entries containing the word
-@samp{FIXME}.  For more information, look at the documentation string
-of the variable @code{org-agenda-custom-commands}.
+You can also define custom commands that will be accessible through the
+dispatcher, just like the default commands.  This includes the
+possibility to create extended agenda buffers that contain several
+blocks together, for example the weekly agenda, the global TODO list and
+a number of special tags matches.  @xref{Custom agenda views}.
 
 @node Weekly/Daily agenda, Global TODO list, Agenda dispatcher, Agenda views
 @section The weekly/daily agenda
 @cindex agenda
+@cindex weekly agenda
+@cindex daily agenda
 
-The purpose of the weekly/daily @emph{agenda} is to act like a page of
-paper agenda, showing all the tasks for the current week or day.
+The purpose of the weekly/daily @emph{agenda} is to act like a page of a
+paper agenda, showing all the tasks for the current week or day.
 
 @table @kbd
 @cindex org-agenda, command
@@ -2679,78 +3306,11 @@ The commands available in the Agenda buffer are listed in @ref{Agenda
 commands}.
 
 @menu
-* Categories::                  Not all tasks are equal
-* Time-of-day specifications::  How the agenda knows the time
 * Calendar/Diary integration::  Integrating Anniversaries and more
-* Sorting of agenda items::     The order of things
 @end menu
 
-@node Categories, Time-of-day specifications, Weekly/Daily agenda, Weekly/Daily agenda
-@subsection Categories
-
-@cindex category
-In the agenda buffer, each entry is preceded by a @emph{category},
-which is derived from the file name.  The category can also be set
-with a special line anywhere in the buffer, looking like this:
-
-@example
-#+CATEGORY: Thesis
-@end example
-
-If there are several such lines in a file, each specifies the category
-for the text below it (but the first category also applies to any text
-before the first CATEGORY line).  The display in the agenda buffer looks
-best if the category is not longer than 10 characters.
 
-@node Time-of-day specifications, Calendar/Diary integration, Categories, Weekly/Daily agenda
-@subsection Time-of-Day Specifications
-
-Org-mode checks each agenda item for a time-of-day specification.  The
-time can be part of the time stamp that triggered inclusion into the
-agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}.  Time
-ranges can be specified with two time stamps, like
-@c
-@w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
-
-In the headline of the entry itself, a time(range) may also appear as
-plain text (like @samp{12:45} or a @samp{8:30-1pm}.  If the agenda
-integrates the Emacs diary (@pxref{Calendar/Diary integration}), time
-specifications in diary entries are recognized as well.
-
-For agenda display, Org-mode extracts the time and displays it in a
-standard 24 hour format as part of the prefix.  The example times in
-the previous paragraphs would end up in the agenda like this:
-
-@example
-    8:30-13:00 Arthur Dent lies in front of the bulldozer
-   12:45...... Ford Prefect arrives and takes Arthur to the pub
-   19:00...... The Vogon reads his poem
-   20:30-22:15 Marwin escorts the Hitchhikers to the bridge
-@end example
-
-If the agenda is in single-day mode, or for the display of today, the
-timed entries are embedded in a time grid, like
-
-@example
-    8:00...... ------------------
-    8:30-13:00 Arthur Dent lies in front of the bulldozer
-   10:00...... ------------------
-   12:00...... ------------------
-   12:45...... Ford Prefect arrives and takes Arthur to the pub
-   14:00...... ------------------
-   16:00...... ------------------
-   18:00...... ------------------
-   19:00...... The Vogon reads his poem
-   20:00...... ------------------
-   20:30-22:15 Marwin escorts the Hitchhikers to the bridge
-@end example
-
-The time grid can be turned on and off with the variable
-@code{org-agenda-use-time-grid}, and can be configured with
-@code{org-agenda-time-grid}.
-
-
-@node Calendar/Diary integration, Sorting of agenda items, Time-of-day specifications, Weekly/Daily agenda
+@node Calendar/Diary integration,  , Weekly/Daily agenda, Weekly/Daily agenda
 @subsection Calendar/Diary integration
 @cindex calendar integration
 @cindex diary integration
@@ -2781,24 +3341,6 @@ Sunrise/Sunset times, show lunar phases and to convert to other
 calendars, respectively.  @kbd{c} can be used to switch back and forth
 between calendar and agenda.
 
-@node Sorting of agenda items,  , Calendar/Diary integration, Weekly/Daily agenda
-@subsection Sorting of agenda items
-@cindex sorting, of agenda items
-@cindex priorities, of agenda items
-The entries for each day are sorted.  The default order is to first
-collect all items containing an explicit time-of-day specification.
-These entries will be shown at the beginning of the list, as a
-@emph{schedule} for the day.  After that, items remain grouped in
-categories, in the sequence given by @code{org-agenda-files}.  Within
-each category, items are sorted by priority (@pxref{Priorities}).
-
-The priority is a numerical quantity composed of the base priority
-(2000 for priority @samp{A}, 1000 for @samp{B}, and 0 for @samp{C}),
-plus additional increments for overdue scheduled or deadline items.
-
-Sorting can be customized using the variable
-@code{org-agenda-sorting-strategy}.
-
 
 @node Global TODO list, Matching headline tags, Weekly/Daily agenda, Agenda views
 @section The global TODO list
@@ -2817,6 +3359,7 @@ agenda files (@pxref{Agenda views}) into a single buffer.  The buffer is in
 the TODO entries directly from that buffer (@pxref{Agenda commands}).
 @kindex C-c a T
 @item C-c a T
+@cindex TODO keyword matching
 Like the above, but allows selection of a specific TODO keyword.  You can
 also do this by specifying a prefix argument to @kbd{C-c a t}.  With a
 @kbd{C-u} prefix you are prompted for a keyword.  With a numeric
@@ -2825,13 +3368,32 @@ prefix, the Nth keyword in @code{org-todo-keywords} is selected.
 The @kbd{r} key in the agenda buffer regenerates it, and you can give
 a prefix argument to this command to change the selected TODO keyword,
 for example @kbd{3 r}.  If you often need a search for a specific
-keyword, define a custom command for it (@pxref{Agenda dispatcher}).
+keyword, define a custom command for it (@pxref{Agenda dispatcher}).@*
+Matching specific TODO keywords can also be done as part of a tags
+search (@pxref{Tag searches}).
 @end table
 
 Remote editing of TODO items means that you can change the state of a
 TODO entry with a single key press.  The commands available in the
 TODO list are described in @ref{Agenda commands}.
 
+@cindex sublevels, inclusion into todo list
+Normally the global todo list simply shows all headlines with TODO
+keywords.  This list can become very long.  There are two ways to keep
+it more compact:
+@itemize @minus
+@item
+Some people view a TODO item that has been @emph{scheduled} for
+execution (@pxref{Time stamps}) as no longer @emph{open}.  Configure the
+variable @code{org-agenda-todo-ignore-scheduled} to exclude scheduled
+items from the global TODO list.
+@item
+TODO items may have sublevels to break up the task into subtasks.  In
+such cases it may be enough to list only the highest level TODO headline
+and omit the sublevels from the global list.  Configure the variable
+@code{org-agenda-todo-list-sublevels} to get this behavior.
+@end itemize
+
 @node Matching headline tags, Timeline, Global TODO list, Agenda views
 @section Matching headline tags
 @cindex matching, of tags
@@ -2853,29 +3415,25 @@ define a custom command for it (@pxref{Agenda dispatcher}).
 @item C-c a M
 Like @kbd{C-c a m}, but only select headlines that are also TODO items
 and force checking subitems (see variable
-@code{org-tags-match-list-sublevels}.
+@code{org-tags-match-list-sublevels}).  Matching specific todo keywords
+together with a tags match is also possible, see @ref{Tag searches}.
 @end table
 
 The commands available in the tags list are described in @ref{Agenda
 commands}.
 
-@node Timeline, Agenda commands, Matching headline tags, Agenda views
+@node Timeline, Presentation and sorting, Matching headline tags, Agenda views
 @section Timeline for a single file
-@cindex single file summary
-@cindex agenda, for single file
 @cindex timeline, single file
 @cindex time-sorted view
 
-The timeline is not really an agenda view, because it only summarizes
-items from a single Org-mode file.  But it also uses the agenda buffer
-and provides similar commands, so we discuss it here.  The timeline
-shows all time-stamped items in a single Org-mode file (or the
-selected part of it), in a @emph{time-sorted view}.  The main purpose of
-this command is to give an overview over events in a project.
+The timeline summarizes all time-stamped items from a single Org-mode
+file in a @emph{time-sorted view}.  The main purpose of this command is
+to give an overview over events in a project.
 
 @table @kbd
-@kindex C-c C-r
-@item C-c C-r
+@kindex C-a a L
+@item C-c a L
 Show a time-sorted view of the org file, with all time-stamped items.
 When called with a @kbd{C-u} prefix, all unfinished TODO entries
 (scheduled or not) are also listed under the current date.
@@ -2885,7 +3443,122 @@ When called with a @kbd{C-u} prefix, all unfinished TODO entries
 The commands available in the timeline buffer are listed in
 @ref{Agenda commands}.
 
-@node Agenda commands,  , Timeline, Agenda views
+
+@node Presentation and sorting, Agenda commands, Timeline, Agenda views
+@section Presentation and sorting
+@cindex presentation, of agenda items
+
+Before displaying items in an agenda view, Org-mode visually prepares
+the items and sorts them.  Each item occupies a single line.  The line
+starts with a @emph{prefix} that contains the @emph{category}
+(@pxref{Categories}) of the item and other important information.  You can
+customize the prefix using the option @code{org-agenda-prefix-format}.
+The prefix is followed by a cleaned-up version of the outline headline
+associated with the item.
+
+@menu
+* Categories::                  Not all tasks are equal
+* Time-of-day specifications::  How the agenda knows the time
+* Sorting of agenda items::     The order of things
+@end menu
+
+@node Categories, Time-of-day specifications, Presentation and sorting, Presentation and sorting
+@subsection Categories
+
+@cindex category
+The category is a broad label assigned to each agenda item.  By default,
+the category is simply derived from the file name, but you can also
+specify it with a special line in the buffer, like this:
+
+@example
+#+CATEGORY: Thesis
+@end example
+
+If there are several such lines in a file, each specifies the category
+for the text below it (but the first category also applies to any text
+before the first CATEGORY line).  The display in the agenda buffer looks
+best if the category is not longer than 10 characters.
+
+@node Time-of-day specifications, Sorting of agenda items, Categories, Presentation and sorting
+@subsection Time-of-Day Specifications
+@cindex time-of-day specification
+
+Org-mode checks each agenda item for a time-of-day specification.  The
+time can be part of the time stamp that triggered inclusion into the
+agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}.  Time
+ranges can be specified with two time stamps, like
+@c
+@w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
+
+In the headline of the entry itself, a time(range) may also appear as
+plain text (like @samp{12:45} or a @samp{8:30-1pm}.  If the agenda
+integrates the Emacs diary (@pxref{Calendar/Diary integration}), time
+specifications in diary entries are recognized as well.
+
+For agenda display, Org-mode extracts the time and displays it in a
+standard 24 hour format as part of the prefix.  The example times in
+the previous paragraphs would end up in the agenda like this:
+
+@example
+    8:30-13:00 Arthur Dent lies in front of the bulldozer
+   12:45...... Ford Prefect arrives and takes Arthur to the pub
+   19:00...... The Vogon reads his poem
+   20:30-22:15 Marwin escorts the Hitchhikers to the bridge
+@end example
+
+@cindex time grid
+If the agenda is in single-day mode, or for the display of today, the
+timed entries are embedded in a time grid, like
+
+@example
+    8:00...... ------------------
+    8:30-13:00 Arthur Dent lies in front of the bulldozer
+   10:00...... ------------------
+   12:00...... ------------------
+   12:45...... Ford Prefect arrives and takes Arthur to the pub
+   14:00...... ------------------
+   16:00...... ------------------
+   18:00...... ------------------
+   19:00...... The Vogon reads his poem
+   20:00...... ------------------
+   20:30-22:15 Marwin escorts the Hitchhikers to the bridge
+@end example
+
+The time grid can be turned on and off with the variable
+@code{org-agenda-use-time-grid}, and can be configured with
+@code{org-agenda-time-grid}.
+
+@node Sorting of agenda items,  , Time-of-day specifications, Presentation and sorting
+@subsection Sorting of agenda items
+@cindex sorting, of agenda items
+@cindex priorities, of agenda items
+Before being inserted into a view, the items are sorted.  How this is
+done depends on the type of view.
+@itemize @bullet
+@item
+For the daily/weekly agenda, the items for each day are sorted.  The
+default order is to first collect all items containing an explicit
+time-of-day specification.  These entries will be shown at the beginning
+of the list, as a @emph{schedule} for the day.  After that, items remain
+grouped in categories, in the sequence given by @code{org-agenda-files}.
+Within each category, items are sorted by priority (@pxref{Priorities}),
+which is composed of the base priority (2000 for priority @samp{A}, 1000
+for @samp{B}, and 0 for @samp{C}), plus additional increments for
+overdue scheduled or deadline items.
+@item 
+For the TODO list, items remain in the order of categories, but within
+each category, sorting takes place according to priority
+(@pxref{Priorities}).
+@item
+For tags matches, items are not sorted at all, but just appear in the
+sequence in which they are found in the agenda files.
+@end itemize
+
+Sorting can be customized using the variable
+@code{org-agenda-sorting-strategy}.
+
+
+@node Agenda commands, Custom agenda views, Presentation and sorting, Agenda views
 @section Commands in the agenda buffer
 @cindex commands, in agenda buffer
 
@@ -2901,6 +3574,7 @@ the other commands, the cursor needs to be in the desired line.
 
 @table @kbd
 @tsubheading{Motion}
+@cindex motion commands in agenda
 @kindex n
 @item n
 Next line (same as @key{up}).
@@ -2942,9 +3616,11 @@ agenda buffers can be set with the variable
 @kindex l
 @item l
 Toggle Logbook mode.  In Logbook mode, entries that where marked DONE while
-logging was on (variable @code{org-log-done}) are shown in the agenda.
+logging was on (variable @code{org-log-done}) are shown in the agenda,
+as are entries that have been clocked on that day.
 
 @tsubheading{Change display}
+@cindex display changing, in agenda
 @kindex o
 @item o
 Delete other windows.
@@ -2974,6 +3650,10 @@ S-@key{right}.  When the buffer is the global todo list, a prefix
 argument is interpreted to create a selective list for a specific TODO
 keyword.
 
+@kindex s
+@item s
+Save all Org-mode buffers in the current Emacs session.
+
 @kindex @key{right}
 @item @key{right}
 Display the following @code{org-agenda-ndays} days.  For example, if
@@ -2989,6 +3669,7 @@ Display the previous dates.
 Goto today.
 
 @tsubheading{Remote editing}
+@cindex remote editing, from agenda
 
 @item 0-9
 Digit argument.
@@ -3007,6 +3688,10 @@ inheritance, this may be more than the tags listed in the line itself.
 @item :
 Set tags for the current headline.
 
+@kindex a
+@item a
+Toggle the ARCHIVE tag for the current headline.
+
 @kindex ,
 @item ,
 Set the priority for the current item.  Org-mode prompts for the
@@ -3059,15 +3744,19 @@ Change the time stamp associated with the current line to today.
 The key @kbd{>} has been chosen, because it is the same as @kbd{S-.}
 on my keyboard.
 
-@cindex diary entries, creating from agenda
-@kindex i
-@item i
-Insert a new entry into the diary.  Prompts for the type of entry
-(day, weekly, monthly, yearly, anniversary, cyclic) and creates a new
-entry in the diary, just as @kbd{i d} etc. would do in the calendar.
-The date is taken from the cursor position.
+@kindex I
+@item I
+Start the clock on the current item.  If a clock is running already, it
+is stopped first.
+@kindex O
+@item O
+Stop the previously started clock.
+@kindex X
+@item X
+Cancel the currently running clock.
 
 @tsubheading{Calendar commands}
+@cindex calendar commands, from agenda
 @kindex c
 @item c
 Open the Emacs calendar and move to the date at the agenda cursor.
@@ -3076,6 +3765,14 @@ Open the Emacs calendar and move to the date at the agenda cursor.
 When in the calendar, compute and show the Org-mode agenda for the
 date at the cursor.
 
+@cindex diary entries, creating from agenda
+@kindex i
+@item i
+Insert a new entry into the diary.  Prompts for the type of entry
+(day, weekly, monthly, yearly, anniversary, cyclic) and creates a new
+entry in the diary, just as @kbd{i d} etc. would do in the calendar.
+The date is taken from the cursor position.
+
 @kindex M
 @item M
 Show the phases of the moon for the three months around current date.
@@ -3094,6 +3791,7 @@ calendars.
 @item H
 Show holidays for three month around the cursor date.
 
+@c FIXME:  This should be a different key.
 @kindex C-c C-x C-c
 @item C-c C-x C-c
 Export a single iCalendar file containing entries from all agenda files.
@@ -3112,7 +3810,418 @@ visit org files will not be removed.
 
 @end table
 
-@node Exporting, Publishing, Agenda views, Top
+
+@node Custom agenda views,  , Agenda commands, Agenda views
+@section Custom agenda views
+@cindex custom agenda views
+@cindex agenda views, custom
+
+Custom agenda commands serve two purposes: to store and quickly access
+frequently used TODO and tags searches, and to create special composite
+agenda buffers.  Custom agenda commands will be accessible through the
+dispatcher (@pxref{Agenda dispatcher}), just like the default commands.
+
+@menu
+* Storing searches::            Type once, use often
+* Block agenda::                All the stuff you need in a single buffer
+* Setting Options::             Changing the rules
+* Batch processing::            Agenda views from the command line
+@end menu
+
+@node Storing searches, Block agenda, Custom agenda views, Custom agenda views
+@subsection Storing searches
+
+The first application of custom searches is the definition of keyboard
+shortcuts for frequently used searches, either creating an agenda
+buffer, or a sparse tree (the latter covering of course only the current
+buffer).
+@kindex C-c a C
+Custom commands are configured in the variable
+@code{org-agenda-custom-commands}.  You can customize this variable, for
+example by pressing @kbd{C-c a C}.  You can also directly set it with
+Emacs Lisp in @file{.emacs}.  The following example contains all valid
+search types:
+
+@lisp
+@group
+(setq org-agenda-custom-commands
+      '(("w" todo "WAITING")
+        ("W" todo-tree "WAITING")
+        ("u" tags "+BOSS-URGENT")
+        ("v" tags-todo "+BOSS-URGENT")
+        ("U" tags-tree "+BOSS-URGENT")
+        ("f" occur-tree "\\<FIXME\\>")))
+@end group
+@end lisp
+
+@noindent
+The initial single-character string in each entry defines the character
+you have to press after the dispatcher command @kbd{C-c a} in order to
+access the command.   The second parameter is the search type, followed
+by the string or regular expression to be used for the matching.  The
+example above will therefore define:
+
+@table @kbd
+@item C-c a w
+as a global search for TODO entries with @samp{WAITING} as the TODO
+keyword
+@item C-c a W
+as the same search, but only in the current buffer and displaying the
+results as a sparse tree
+@item C-c a u
+as a global tags search for headlines marked @samp{:BOSS:} but not
+@samp{:URGENT:}
+@item C-c a v
+as the same search as @kbd{C-c a u}, but limiting the search to
+headlines that are also TODO items
+@item C-c a U
+as the same search as @kbd{C-c a u}, but only in the current buffer and
+displaying the result as a sparse tree
+@item C-c a f
+to create a sparse tree (again: current buffer only) with all entries
+containing the word @samp{FIXME}.
+@end table
+
+@node Block agenda, Setting Options, Storing searches, Custom agenda views
+@subsection Block agenda
+@cindex block agenda
+@cindex agenda, with block views
+
+Another possibility is the construction of agenda views that comprise
+the results of @emph{several} commands, each of which creates a block in
+the agenda buffer.  The available commands include @code{agenda} for the
+daily or weekly agenda (as created with @kbd{C-c a a}), @code{alltodo}
+for the global todo list (as constructed with @kbd{C-c a t}), and the
+matching commands discussed above: @code{todo}, @code{tags}, and
+@code{tags-todo}.  Here are two examples:
+
+@lisp
+@group
+(setq org-agenda-custom-commands
+      '(("h" "Agenda and Home-related tasks"
+         ((agenda)
+          (tags-todo "HOME")
+          (tags "GARDEN")))
+        ("o" "Agenda and Office-related tasks"
+         ((agenda)
+          (tags-todo "WORK")
+          (tags "OFFICE")))))
+@end group
+@end lisp
+
+@noindent
+This will define @kbd{C-c a h} to create a multi-block view for stuff
+you need to attend to at home.  The resulting agenda buffer will contain
+your agenda for the current week, all TODO items that carry the tag
+@samp{HOME}, and also all lines tagged with @samp{GARDEN}.  Finally the
+command @kbd{C-c a o} provides a similar view for office tasks.
+
+
+@node Setting Options, Batch processing, Block agenda, Custom agenda views
+@subsection Setting Options for custom commands
+@cindex options, for custom agenda views
+
+Org-mode contains a number of variables regulating agenda construction
+and display.  The global variables define the behavior for all agenda
+commands, including the custom commands.  However, if you want to change
+some settings just for a single custom view, you can do so.  Setting
+options requires inserting a list of variable names and values at the
+right spot in @code{org-agenda-custom-commands}.  For example:
+
+@lisp
+@group
+(setq org-agenda-custom-commands
+      '(("w" todo "WAITING"
+         ((org-agenda-sorting-strategy '(priority-down))
+          (org-agenda-prefix-format "  Mixed: ")))
+        ("U" tags-tree "+BOSS-URGENT"
+         ((org-show-following-heading nil)
+          (org-show-hierarchy-above nil)))))
+@end group
+@end lisp
+
+@noindent
+Now the @kbd{C-c a w} command will sort the collected entries only by
+priority, and the prefix format is modified to just say @samp{  Mixed:}
+instead of giving the category of the entry.  The sparse tags tree of
+@kbd{C-c a U} will now turn out ultra-compact, because neither the
+headline hierarchy above the match, nor the headline following the match
+will be shown.
+
+For command sets creating a block agenda,
+@code{org-agenda-custom-commands} has two separate spots for setting
+options.  You can add options that should be valid for just a single
+command in the set, and options that should be valid for all commands in
+the set.  The former are just added to the command entry, the latter
+must come after the list of command entries.  Going back to the block
+agenda example (@pxref{Block agenda}), let's change the sorting strategy
+for the @kbd{C-c a h} commands to @code{priority-down}, but let's sort
+the results for GARDEN tags query in the opposite order,
+@code{priority-up}.  This would look like this:
+
+@lisp
+@group
+(setq org-agenda-custom-commands
+      '(("h" "Agenda and Home-related tasks"
+         ((agenda)
+          (tags-todo "HOME")
+          (tags "GARDEN" ((org-agenda-sorting-strategy '(priority-up)))))
+         ((org-agenda-sorting-strategy '(priority-down))))
+        ("o" "Agenda and Office-related tasks"
+         ((agenda)
+          (tags-todo "WORK")
+          (tags "OFFICE")))))
+@end group
+@end lisp
+
+As you see, the values and parenthesis setting is a little complex.
+When in doubt, use the customize interface to set this variable - it
+fully supports its structure.  Just one caveat: When setting options in
+this interface, the @emph{values} are just lisp expressions.  So if the
+value is a string, you need to add the double quotes around the value
+yourself.
+
+@node Batch processing,  , Setting Options, Custom agenda views
+@subsection Creating agenda views in batch processing
+@cindex agenda, batch production
+
+If you want to print or otherwise reprocess agenda views, it can be
+useful to create an agenda from the command line.  This is the purpose
+of the function @code{org-batch-agenda}.  It takes as a parameter one of
+the strings that are the keys in @code{org-agenda-custom-commands}.  For
+example, to directly print the current TODO list, you could use
+
+@example
+emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
+@end example
+
+@noindent
+You may also modify parameters on the fly like this:
+
+@example
+emacs -batch -l ~/.emacs                                      \
+   -eval '(org-batch-agenda "a"                               \
+            org-agenda-ndays 300                              \
+            org-agenda-include-diary nil                      \
+            org-agenda-files (quote ("~/org/project.org")))'  \
+   | lpr
+@end example
+
+@noindent
+which will produce a 300 day agenda, fully restricted to the Org file
+@file{~/org/projects.org}, not even including the diary.
+
+@node Embedded LaTeX, Exporting, Agenda views, Top
+@chapter Embedded LaTeX
+@cindex @TeX{} interpretation
+@cindex La@TeX{} interpretation
+
+Plain ASCII is normally sufficient for almost all note taking.  One
+exception, however, are scientific notes which need to be able to
+contain mathematical symbols and the occasional formula.
+La@TeX{}@footnote{La@TeX{} is a macro system based on Donald E. Knuth's
+@TeX{} system.  Many of the features described here as ``La@TeX{}'' are
+really from @TeX{}, but for simplicity I am blurring this distinction.}
+is widely used to typeset scientific documents. Org-mode supports
+embedding La@TeX{} code into its files, because many academics are used
+to read La@TeX{} source code, and because it can be readily processed
+into images for HTML production.
+
+It is not necessary to mark La@TeX{} macros and code in any special way.
+If you observe a few conventions, Org-mode knows how to find it and what
+to do with it.
+
+@menu
+* Math symbols::                TeX macros for symbols and Greek letters
+* Subscripts and Superscripts::  Simple syntax for raising/lowering text
+* LaTeX fragments::             Complex formulas made easy
+* Processing LaTeX fragments::  Previewing LaTeX processing
+* CDLaTeX mode::                Speed up entering of formulas
+@end menu
+
+@node Math symbols, Subscripts and Superscripts, Embedded LaTeX, Embedded LaTeX
+@section Math symbols
+@cindex math symbols
+@cindex TeX macros
+
+You can use La@TeX{} macros to insert special symbols like @samp{\alpha}
+to indicate the Greek letter, or @samp{\to} to indicate an arrow.
+Completion for these macros is available, just type @samp{\} and maybe a
+few letters, and press @kbd{M-@key{TAB}} to see possible completions.
+Unlike La@TeX{} code, Org-mode allows these macros to be present
+without surrounding math delimiters, for example:
+
+@example
+Angles are written as Greek letters \alpha, \beta and \gamma.
+@end example
+
+During HTML export (@pxref{HTML export}), these symbols are translated
+into the proper syntax for HTML, for the above examples this is
+@samp{&alpha;} and @samp{&rarr;}, respectively.
+
+@node Subscripts and Superscripts, LaTeX fragments, Math symbols, Embedded LaTeX
+@section Subscripts and Superscripts
+@cindex subscript
+@cindex superscript
+
+Just like in La@TeX{}, @samp{^} and @samp{_} are used to indicate super-
+and subscripts.  Again, these can be used without embedding them in
+math-mode delimiters.  To increase the readability of ASCII text, it is
+not necessary (but OK) to surround multi-character sub- and superscripts
+with curly braces.  For example
+
+@example
+The mass if the sun is M_sun = 1.989 x 10^30 kg.  The radius of
+the sun is R_@{sun@} = 6.96 x 10^8 m.
+@end example
+
+To avoid interpretation as raised or lowered text, you can quote
+@samp{^} and @samp{_} with a backslash: @samp{\_} and @samp{\^}.
+
+During HTML export (@pxref{HTML export}), subscript and superscripts
+are surrounded with @code{<sub>} and @code{<sup>} tags, respectively.
+
+@node LaTeX fragments, Processing LaTeX fragments, Subscripts and Superscripts, Embedded LaTeX
+@section LaTeX fragments
+@cindex LaTeX fragments
+
+With symbols, sub- and superscripts, HTML is pretty much at its end when
+it comes to representing mathematical formulas@footnote{Yes, there is
+MathML, but that is not yet fully supported by many browsers, and there
+is no decent converter for turning LaTeX of ASCII representations of
+formulas into MathML.  So for the time being, converting formulas into
+images seems the way to go.}.  More complex
+expressions need a dedicated formula processor.  To this end, Org-mode
+can contain arbitrary La@TeX{} fragments.  It provides commands to
+preview the typeset result of these fragments, and upon export to HTML,
+all fragments will be converted to images and inlined into the HTML
+document.  For this to work you need to be on a system with a working
+La@TeX{} installation.  You also need the @file{dvipng} program,
+available at @url{http://sourceforge.net/projects/dvipng/}.
+
+La@TeX{} fragments don't need any special marking at all.  The following
+snippets will be identified as LaTeX source code:
+@itemize @bullet
+@item
+Environments of any kind.  The only requirement is that the
+@code{\begin} statement appears on a new line, preceded by only
+whitespace.
+@item
+Text within the usual La@TeX{} math delimiters.  To avoid conflicts with
+currency specifications, single @samp{$} characters are only recognized
+as math delimiters if the enclosed text contains at most two line breaks,
+is directly attached to the @samp{$} characters with no whitespace in
+between, and if the closing @samp{$} is followed by whitespace or
+punctuation.  For the other delimiters, there is no such restriction, so
+when in doubt, use @samp{\(...\)} as inline math delimiters.
+@end itemize
+
+@noindent For example:
+
+@example
+\begin@{equation@}                          % arbitrary environments,
+x=\sqrt@{b@}                                % even tables, figures
+\end@{equation@}                            % etc
+
+If $a^2=b$ and \( b=2 \), then the solution must be
+either $$ a=+\sqrt@{2@} $$ or \[ a=-\sqrt@{2@} \].
+@end example
+
+@noindent
+If you need any of the delimiter ASCII sequences for other purposes, you
+can configure the option @code{org-format-latex-options} to deselect the
+ones you do not wish to have interpreted by the La@TeX{} converter.
+
+@node Processing LaTeX fragments, CDLaTeX mode, LaTeX fragments, Embedded LaTeX
+@section Processing LaTeX fragments
+@cindex LaTeX fragments, preview
+
+La@TeX{} fragments can be processed to produce a preview images of the
+typeset expressions:
+
+@table @kbd
+@kindex C-c C-x C-l
+@item C-c C-x C-l
+Produce a preview image of the La@TeX{} fragment at point and overlay it
+over the source code.  If there is no fragment at point, process all
+fragments in the current entry (between two headlines).  When called
+with a prefix argument, process the entire subtree.  When called with
+two prefix arguments, or when the cursor is before the first headline,
+process the entire buffer.
+@kindex C-c C-c
+@item C-c C-c
+Remove the overlay preview images.
+@end table
+
+During HTML export (@pxref{HTML export}), all La@TeX{} fragments are
+converted into images and inlined into the document if the following
+setting is active:
+
+@lisp
+(setq org-export-with-LaTeX-fragments t)
+@end lisp
+
+@node CDLaTeX mode,  , Processing LaTeX fragments, Embedded LaTeX
+@section Using CDLaTeX to enter math
+@cindex CDLaTeX
+
+CDLaTeX-mode is a minor mode that is normally used in combination with a
+major LaTeX mode like AUCTeX in order to speed-up insertion of
+environments and math templates.  Inside Org-mode, you can make use of
+some of the features of cdlatex-mode.  You need to install
+@file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
+AUCTeX) from @url{http://www.astro.uva.nl/~dominik/Tools/cdlatex}.
+Don't turn cdlatex-mode itself under Org-mode, but use the light
+version @code{org-cdlatex-mode} that comes as part of Org-mode.  Turn it
+on for the current buffer with @code{M-x org-cdlatex-mode}, or for all
+Org-mode files with
+
+@lisp
+(add-hook 'org-mode-hook 'turn-on-org-cdlatex)
+@end lisp
+
+When this mode is enabled, the following features are present (for more
+details see the documentation of cdlatex-mode):
+@itemize @bullet
+@kindex C-c @{
+@item
+Environment templates can be inserted with @kbd{C-c @{}.
+@item
+@kindex @key{TAB}
+The @key{TAB} key will do template expansion if the cursor is inside a
+LaTeX fragment@footnote{Org-mode has a method to test if the cursor is
+inside such a fragment, see the documentation of the function
+@code{org-inside-LaTeX-fragment-p}.}.  For example, @key{TAB} will
+expand @code{fr} to @code{\frac@{@}@{@}} and position the cursor
+correctly inside the first brace.  Another @key{TAB} will get you into
+the second brace.  Even outside fragments, @key{TAB} will expand
+environment abbreviations at the beginning of a line.  For example, if
+you write @samp{equ} at the beginning of a line and press @key{TAB},
+this abbreviation will be expanded to an @code{equation} environment.
+To get a list of all abbreviations, type @kbd{M-x cdlatex-command-help}.
+@item
+@kindex _
+@kindex ^
+Pressing @kbd{_} and @kbd{^} inside a LaTeX fragment will insert these
+characters together with a pair of braces.  If you use @key{TAB} to move
+out of the braces, and if the braces surround only a single character or
+macro, they are removed again (depending on the variable
+@code{cdlatex-simplify-sub-super-scripts}).
+@item
+@kindex `
+Pressing the backquote @kbd{`} followed by a character inserts math
+macros, also outside LaTeX fragments.  If you wait more than 1.5 seconds
+after the backquote, a help window will pop up.
+@item
+@kindex '
+Pressing the normal quote @kbd{'} followed by another character modifies
+the symbol before point with an accent or a font.  If you wait more than
+1.5 seconds after the backquote, a help window will pop up.  Character
+modification will work only inside La@TeX{} fragments, outside the quote
+is normal.
+@end itemize
+
+@node Exporting, Publishing, Embedded LaTeX, Top
 @chapter Exporting
 @cindex exporting
 
@@ -3129,6 +4238,14 @@ import of these different formats.
 When exporting, Org-mode uses special conventions to enrich the output
 produced.  @xref{Text interpretation}, for more details.
 
+@table @kbd
+@kindex C-c C-e
+@item C-c C-e
+Dispatcher for export and publishing commands.  Displays a help-window
+listing the additional key(s) needed to launch an export or publishing
+command.
+@end table
+
 @menu
 * ASCII export::                Exporting to plain ASCII
 * HTML export::                 Exporting to HTML
@@ -3141,21 +4258,21 @@ produced.  @xref{Text interpretation}, for more details.
 @section ASCII export
 @cindex ASCII export
 
-ASCII export produces an simple and very readable version of an Org-mode
+ASCII export produces a simple and very readable version of an Org-mode
 file.
 
 @cindex region, active
 @cindex active region
 @cindex transient-mark-mode
 @table @kbd
-@kindex C-c C-x a
-@item C-c C-x a
+@kindex C-c C-e a
+@item C-c C-e a
 Export as ASCII file.  If there is an active region, only the region
 will be exported.  For an org file @file{myfile.org}, the ASCII file
 will be @file{myfile.txt}.  The file will be overwritten without
 warning.
-@kindex C-c C-x v a
-@item C-c C-x v a
+@kindex C-c C-e v a
+@item C-c C-e v a
 Export only the visible part of the document.
 @end table
 
@@ -3166,34 +4283,40 @@ will be exported as itemized lists.  If you want that transition to occur
 at a different level, specify it with a prefix argument.  For example,
 
 @example
-@kbd{C-1 C-c C-x a}
+@kbd{C-1 C-c C-e a}
 @end example
 
 @noindent
-creates only top level headlines and does the rest as items.
+creates only top level headlines and does the rest as items.  When
+headlines are converted to items, the indentation of the text following
+the headline is changed to fit nicely under the item.  This is done with
+the assumption that the first bodyline indicates the base indentation of
+the body text.  Any indentation larger than this is adjusted to preserve
+the layout relative to the first line.  Should there be lines with less
+indentation than the first, these are left alone.
 
 @node HTML export, XOXO export, ASCII export, Exporting
 @section HTML export
 @cindex HTML export
 
-Org-mode contains an HTML exporter with extensive HTML formatting, in
-ways similar to John Grubers @emph{markdown} language, but with
-additional support for tables.
+Org-mode contains an HTML (XHTML 1.0 strict) exporter with extensive
+HTML formatting, in ways similar to John Grubers @emph{markdown}
+language, but with additional support for tables.
 
 @cindex region, active
 @cindex active region
 @cindex transient-mark-mode
 @table @kbd
-@kindex C-c C-x h
-@item C-c C-x h
+@kindex C-c C-e h
+@item C-c C-e h
 Export as HTML file @file{myfile.html}.
-@kindex C-c C-x b
-@item C-c C-x b
+@kindex C-c C-e b
+@item C-c C-e b
 Export as HTML file and open it with a browser.
-@kindex C-c C-x v h
-@kindex C-c C-x v b
-@item C-c C-x v h
-@item C-c C-x v b
+@kindex C-c C-e v h
+@kindex C-c C-e v b
+@item C-c C-e v h
+@item C-c C-e v b
 Export only the visible part of the document.
 @end table
 
@@ -3204,7 +4327,7 @@ will be exported as itemized lists.  If you want that transition to occur
 at a different level, specify it with a prefix argument.  For example,
 
 @example
-@kbd{C-2 C-c C-x b}
+@kbd{C-2 C-c C-e b}
 @end example
 
 @noindent
@@ -3273,11 +4396,11 @@ Currently, this exporter only handles the general outline structure and
 does not interpret any additional Org-mode features.
 
 @table @kbd
-@kindex C-c C-x C-x
-@item C-c C-x C-x
+@kindex C-c C-x
+@item C-c C-x
 Export as XOXO file @file{myfile.html}.
-@kindex C-c C-x v
-@item C-c C-x v x
+@kindex C-c C-e v
+@item C-c C-e v x
 Export only the visible part of the document.
 @end table
 
@@ -3293,17 +4416,17 @@ application.  Org-mode can export calendar information in the standard
 iCalendar format.
 
 @table @kbd
-@kindex C-c C-x i
-@item C-c C-x i
+@kindex C-c C-e i
+@item C-c C-e i
 Create iCalendar entries for the current file and store them in the same
 directory, using a file extension @file{.ics}.
-@kindex C-c C-x C-i
-@item C-c C-x C-i
-Like @kbd{C-c C-x i}, but do this for all files in
+@kindex C-c C-e I
+@item C-c C-e I
+Like @kbd{C-c C-e i}, but do this for all files in
 @code{org-agenda-files}.  For each of these files, a separate iCalendar
 file will be written.
-@kindex C-c C-x c
-@item C-c C-x c
+@kindex C-c C-e c
+@item C-c C-e c
 Create a single large iCalendar file from all files in
 @code{org-agenda-files} and write it to the file given by
 @code{org-combined-agenda-icalendar-file}.
@@ -3312,7 +4435,7 @@ Create a single large iCalendar file from all files in
 How this calendar is best read and updated, depends on the application
 you are using.  For example, when using iCal under Apple MacOS X, you
 could create a new calendar @samp{OrgMode} (the default name for the
-calendar created by @kbd{C-c C-x c}, see the variables
+calendar created by @kbd{C-c C-e c}, see the variables
 @code{org-icalendar-combined-name} and
 @code{org-combined-agenda-icalendar-file}).  Then set Org-mode to
 overwrite the corresponding file
@@ -3358,8 +4481,6 @@ the first headline will not be exported either.
 Toggle the COMMENT keyword at the beginning of an entry.
 @end table
 
-
-
 @node Enhancing text, Export options, Comment lines, Text interpretation
 @subsection Enhancing text for export
 @cindex enhancing text
@@ -3370,7 +4491,6 @@ formatting, this is true in particular for the HTML backend.  Org-mode
 has a number of typing conventions that allow to produce a richly
 formatted output.
 
-
 @itemize @bullet
 
 @cindex hand-formatted lists
@@ -3384,22 +4504,14 @@ backend supports lists.  See @xref{Plain lists}.
 @cindex bold text
 @cindex italic text
 @item
-You can make words @b{*bold*}, @i{/italic/}, and _underlined_
+You can make words @b{*bold*}, @i{/italic/}, _underlined_,
+@code{=code=}, and @samp{+strikethrough+}.
 
-@cindex @TeX{} interpretation
+@cindex LaTeX fragments, export
+@cindex TeX macros, export
 @item
-Simple @TeX{}-like math constructs are interpreted:
-
-@cindex completion, of @TeX{} symbols
-@itemize @minus
-@item
-@samp{10^22} and @samp{J_n} are super- and subscripts.  You can quote
-@samp{^} and @samp{_} with a backslash: @samp{\_} and @samp{\^}
-@item
-@samp{\alpha} indicates a Greek letter, @samp{\to} an arrow.  You can
-use completion for these macros, just type @samp{\} and maybe a few
-letters, and press @kbd{M-@key{TAB}} to see possible completions.
-@end itemize
+Many @TeX{} macros and entire La@TeX{} fragments are converted into HTML
+entities or images (@pxref{Embedded LaTeX}).
 
 @cindex tables, export
 @item
@@ -3418,6 +4530,11 @@ fixed-width font.
 @item C-c :
 Toggle fixed-width for entry (QUOTE) or region, see below.
 @end table
+
+@cindex linebreak, forced
+@item 
+A double backslash @emph{at the end of a line} enforces a line break at
+this position.
 @end itemize
 
 If these conversions conflict with your habits of typing ASCII text,
@@ -3426,6 +4543,7 @@ customization group @code{org-export-general}, and the following section
 which explains how to set export options with special lines in a
 buffer.
 
+
 @node Export options,  , Enhancing text, Text interpretation
 @subsection Export options
 @cindex options, for export
@@ -3434,13 +4552,13 @@ buffer.
 The exporter recognizes special lines in the buffer which provide
 additional information.  These lines may be put anywhere in the file.
 The whole set of lines can be inserted into the buffer with @kbd{C-c
-C-x t}.  For individual lines, a good way to make sure the keyword is
+C-e t}.  For individual lines, a good way to make sure the keyword is
 correct is to type @samp{#+} and then use @kbd{M-@key{TAB}} completion
 (@pxref{Completion}).
 
 @table @kbd
-@kindex C-c C-x t
-@item C-c C-x t
+@kindex C-c C-e t
+@item C-c C-e t
 Insert template with export options, see example below.
 @end table
 
@@ -3451,7 +4569,7 @@ Insert template with export options, see example below.
 #+LANGUAGE:  language for HTML, e.g. @samp{en} (@code{org-export-default-language})
 #+TEXT:      Some descriptive text to be inserted at the beginning.
 #+TEXT:      Several lines may be given.
-#+OPTIONS:   H:2  num:t  toc:t  \n:nil  @:t  ::t  |:t  ^:t  *:nil  TeX:t
+#+OPTIONS:   H:2 num:t toc:t \n:nil @@:t ::t |:t ^:t *:nil TeX:t LaTeX:t
 @end example
 
 @noindent
@@ -3467,6 +4585,7 @@ you can:
 @cindex @TeX{}-like syntax for sub- and superscripts
 @cindex emphasized text
 @cindex @TeX{} macros
+@cindex La@TeX{} fragments
 @example
 H:      @r{set the number of headline levels for export}
 num:    @r{turn on/off section-numbers}
@@ -3477,14 +4596,16 @@ toc:    @r{turn on/off table of contents}
 |:      @r{turn on/off tables}
 ^:      @r{turn on/off @TeX{}-like syntax for sub- and superscripts.}
 *:      @r{turn on/off emphasized text (bold, italic, underlined)}
-TeX:    @r{turn on/off @TeX{} macros}
+TeX:    @r{turn on/off simple @TeX{} macros in plain text}
+LaTeX:  @r{turn on/off La@TeX{} fragments}
 @end example
 
 @node Publishing, Miscellaneous, Exporting, Top
 @chapter Publishing
+@cindex publishing
 
 Org-mode includes@footnote{@file{org-publish.el} is not yet part of
-emacs, so if you are using @file{org.el} as it comes with Emacs, you
+Emacs, so if you are using @file{org.el} as it comes with Emacs, you
 need to download this file separately.  Also make sure org.el is at
 least version 4.27.} a publishing management system
 that allows you to configure automatic HTML conversion of
@@ -3510,7 +4631,7 @@ and many other properties of a project.
 
 @menu
 * Project alist::               The central configuration variable
-* File sources and destinations::  From here to there
+* Sources and destinations::    From here to there
 * Selecting files::             What files are part of the project?
 * Publishing action::           Setting the function doing the publishing
 * Publishing options::          Tweaking HTML export
@@ -3518,8 +4639,10 @@ and many other properties of a project.
 * Project page index::          Publishing a list of project files
 @end menu
 
-@node Project alist, File sources and destinations, Configuration, Configuration
+@node Project alist, Sources and destinations, Configuration, Configuration
 @subsection The variable @code{org-publish-project-alist}
+@cindex org-publish-project-alist
+@cindex projects, for publishing
 
 Org-publish is configured almost entirely through setting the value of
 one variable, called @code{org-publish-project-alist}.
@@ -3531,21 +4654,22 @@ the two following forms:
 
 @r{or} 
  
-("project-name"  
-    ("component1" :property value :property value ...)
-    ("component2" :property value :property value ...)
-    ...)
+("project-name"  :components ("project-name" "project-name" ...))
+
 @end lisp
 
 In both cases, projects are configured by specifying property values.
 A project defines the set of files that will be published, as well as
-the publishing configuration to use when publishing those files. 
-When a project takes the second form listed above, the individual
-property lists are taken to be "components" of the project, which
-group together files requiring different publishing options. 
-
-@node File sources and destinations, Selecting files, Project alist, Configuration
+the publishing configuration to use when publishing those files.  When
+a project takes the second form listed above, the individual members
+of the ``components'' property are taken to be components of the
+project, which group together files requiring different publishing
+options. When you publish such a ``meta-project'' all the components
+will also publish.
+
+@node Sources and destinations, Selecting files, Project alist, Configuration
 @subsection Sources and destinations for files
+@cindex directories, for publishing
 
 Most properties are optional, but some should always be set. In
 particular, org-publish needs to know where to look for source files,
@@ -3556,11 +4680,15 @@ and where to put published files.
 @tab Directory containing publishing source files
 @item @code{:publishing-directory}
 @tab Directory (possibly remote) where output files will be published.
+@item @code{:preparation-function}
+@tab Function called before starting publishing process, for example to
+run @code{make} for updating files to be published.
 @end multitable
 @noindent
 
-@node Selecting files, Publishing action, File sources and destinations, Configuration
+@node Selecting files, Publishing action, Sources and destinations, Configuration
 @subsection Selecting files
+@cindex files, selecting for publishing
 
 By default, all files with extension @file{.org} in the base directory
 are considered part of the project.  This can be modified by setting the
@@ -3582,6 +4710,7 @@ and @code{:exclude}.
 
 @node Publishing action, Publishing options, Selecting files, Configuration
 @subsection Publishing Action
+@cindex action, for publishing
 
 Publishing means that a file is copied to the destination directory and
 possibly transformed in the process.  The default transformation is to
@@ -3593,12 +4722,13 @@ specify the publishing function.
 
 @multitable @columnfractions 0.3 0.7
 @item @code{:publishing-function}
-@tab Function executing the publication of a file.
+@tab Function executing the publication of a file.  This may also be a
+list of functions, which will all be called in turn.
 @end multitable
 
 The function must accept two arguments: a property list containing at
 least a @code{:publishing-directory} property, and the name of the file
-to be published.  I should take the specified file, make the necessary
+to be published.  It should take the specified file, make the necessary
 transformation (if any) and place the result into the destination folder.
 You can write your own publishing function, but @code{org-publish}
 provides one for attachments (files that only need to be copied):
@@ -3606,6 +4736,7 @@ provides one for attachments (files that only need to be copied):
 
 @node Publishing options, Publishing links, Publishing action, Configuration
 @subsection Options for the HTML exporter
+@cindex options, for publishing
 
 The property list can be used to set many export options for the HTML
 exporter.  In most cases, these properties correspond to user variables
@@ -3618,9 +4749,11 @@ respective variable for details.
 @item @code{:headline-levels}       @tab @code{org-export-headline-levels}
 @item @code{:section-numbers}       @tab @code{org-export-with-section-numbers}
 @item @code{:table-of-contents}     @tab @code{org-export-with-toc}
+@item @code{:archived-trees}        @tab @code{org-export-with-archived-trees}
 @item @code{:emphasize}             @tab @code{org-export-with-emphasize}
 @item @code{:sub-superscript}       @tab @code{org-export-with-sub-superscripts}
 @item @code{:TeX-macros}            @tab @code{org-export-with-TeX-macros}
+@item @code{:LaTeX-fragments}       @tab @code{org-export-with-LaTeX-fragments}
 @item @code{:fixed-width}           @tab @code{org-export-with-fixed-width}
 @item @code{:timestamps}           .@tab @code{org-export-with-timestamps}
 @item @code{:tags}                 .@tab @code{org-export-with-tags}
@@ -3647,6 +4780,7 @@ options}), however, override everything.
 
 @node Publishing links, Project page index, Publishing options, Configuration
 @subsection Links between published files
+@cindex links, publishing
 
 To create a link from one Org-mode file to another, you would use
 something like @samp{[[file:foo.org][The foo]]} or simply
@@ -3660,8 +4794,27 @@ careful with relative pathnames, and provided you have also configured
 org-publish to upload the related files, these links will work
 too. @ref{Complex example} for an example of this usage.
 
+Sometime an Org-mode file to be published may contain links that are
+only valid in your production environment, but not in the publishing
+location.  In this case, use the property 
+
+@multitable @columnfractions 0.4 0.6
+@item @code{:link-validation-function}
+@tab Function to validate links
+@end multitable
+
+@noindent
+to define a function for checking link validity.  This function must
+accept two arguments, the file name and a directory relative to which
+the file name is interpreted in the production environment.  If this
+function returns @code{nil}, then the HTML generator will only insert a
+description into the HTML file, but no link.  One option for this
+function is @code{org-publish-validate-link} which checks if the given
+file is part of any project in @code{org-publish-project-alist}.
+
 @node Project page index,  , Publishing links, Configuration
 @subsection Project page index
+@cindex index, of published pages
 
 The following properties may be used to control publishing of an
 index of files or summary page for a given project.
@@ -3737,8 +4890,7 @@ right place on the webserver, and publishing images to it.
 
 @lisp
 (setq org-publish-project-alist
-      '(("website"
-         ("orgfiles"
+      '(("orgfiles"
           :base-directory "~/org/"
           :base-extension "org"
           :publishing-directory "/ssh:user@@host:~/html/notebook/"
@@ -3762,7 +4914,8 @@ right place on the webserver, and publishing images to it.
           :base-directory "~/other/"
           :base-extension "css\\|el"
           :publishing-directory "/ssh:user@@host:~/html/other/"
-          :publishing-function org-publish-attachment))))
+          :publishing-function org-publish-attachment)
+         ("website" :components ("orgfiles" "images" "other"))))
 @end lisp
 
 @node Triggering publication,  , Sample configuration, Publishing
@@ -3773,33 +4926,31 @@ following functions:
 
 @table @kbd
 @item C-c C-e c
-Prompts for a specific project to publish.
+Prompt for a specific project and publish all files that belong to it.
 @item C-c C-e p
-Publishes the project the current file is part of. 
+Publish the project containing the current file.
 @item C-c C-e f
-Publishes only the current file.
+Publish only the current file.
 @item C-c C-e a
 Publish all projects.
 @end table
 
 Org uses timestamps to track when a file has changed. The above
 functions normally only publish changed files. You can override this and
-force publishing of all files by giving a prefix argument. 
+force publishing of all files by giving a prefix argument.
 
-@node Miscellaneous, Index, Publishing, Top
+@node Miscellaneous, Extensions and Hacking, Publishing, Top
 @chapter Miscellaneous
 
 @menu
 * Completion::                  M-TAB knows what you need
 * Customization::               Adapting Org-mode to your taste
-* Summary of in-buffer settings::  Using special lines to set options
+* In-buffer settings::          Overview of the #+KEYWORDS
 * The very busy C-c C-c key::   When in doubt, press C-c C-c
 * Clean view::                  Getting rid of leading stars in the outline
 * TTY keys::                    Using Org-mode on a tty
-* FAQ::                         Frequently asked questions
 * Interaction::                 Other Emacs packages
 * Bugs::                        Things which do not work perfectly
-* Acknowledgments::             These people provided feedback and more
 @end menu
 
 @node Completion, Customization, Miscellaneous, Miscellaneous
@@ -3831,22 +4982,29 @@ At the beginning of a headline, complete TODO keywords.
 @item
 After @samp{\}, complete @TeX{} symbols supported by the exporter.
 @item
-After @samp{*}, complete CamelCase versions of all headlines in the
-buffer.
+After @samp{*}, complete headlines in the current buffer so that they
+can be used in search links like @samp{[[*find this headline]]}.
+@item
+After @samp{:}, complete tags.  The list of tags is taken from the
+variable @code{org-tag-alist} (possibly set through the @samp{#+TAGS}
+in-buffer option, @pxref{Setting tags}), or it is created dynamically
+from all tags used in the current buffer.
 @item
-After @samp{:}, complete tags used elsewhere in the buffer.
+After @samp{[}, complete link abbreviations (@pxref{Link abbreviations}).
 @item
 After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
 @samp{OPTIONS} which set file-specific options for Org-mode.  When the
 option keyword is already complete, pressing @kbd{M-@key{TAB}} again
 will insert example settings for this keyword.
 @item
+In the line after @samp{#+STARTUP: }, complete startup keywords,
+i.e. valid keys for this line.
+@item
 Elsewhere, complete dictionary words using ispell.
 @end itemize
 @end table
 
-
-@node Customization, Summary of in-buffer settings, Completion, Miscellaneous
+@node Customization, In-buffer settings, Completion, Miscellaneous
 @section Customization
 @cindex customization
 @cindex options, for customization
@@ -3858,9 +5016,9 @@ describing the variables here.  A structured overview of customization
 variables is available with @kbd{M-x org-customize}.  Or select
 @code{Browse Org Group} from the @code{Org->Customization} menu.  Many
 settings can also be activated on a per-file basis, by putting special
-lines into the buffer (@pxref{Summary of in-buffer settings}).
+lines into the buffer (@pxref{In-buffer settings}).
 
-@node Summary of in-buffer settings, The very busy C-c C-c key, Customization, Miscellaneous
+@node In-buffer settings, The very busy C-c C-c key, Customization, Miscellaneous
 @section Summary of in-buffer settings
 @cindex in-buffer settings
 @cindex special keywords
@@ -3911,14 +5069,24 @@ showstars  @r{show all stars starting a headline}
 odd        @r{allow only odd outline levels (1,3,...)}
 oddeven    @r{allow all outline levels}
 @end example
+To turn on custom format overlayes over time stamps (variables
+@code{org-put-time-stamp-overlays} and
+@code{org-time-stamp-overlay-formats}), use
+@example
+customtime @r{overlay custom time format}
+@end example
 @item #+SEQ_TODO:   #+TYP_TODO:
 These lines set the TODO keywords and their interpretation in the
 current file.  The corresponding variables are @code{org-todo-keywords}
 and @code{org-todo-interpretation}.
 @item #+TAGS:  TAG1(c1) TAG2(c2)
 These lines (several such lines are allowed) specify the legal tags in
-this file, and (potionally) the corresponding @emph{fast tag selection}
+this file, and (potentially) the corresponding @emph{fast tag selection}
 keys.  The corresponding variable is @code{org-tag-alist}.
+@item #+LINK:  linkword replace
+These lines (several are allowed) specify link abbreviations.
+@xref{Link abbreviations}.  The corresponding variable is
+@code{org-link-abbrev-alist}.
 @item #+CATEGORY:
 This line sets the category for the agenda file.  The category applies
 for all subsequent lines until the next @samp{#+CATEGORY} line, or the
@@ -3926,26 +5094,26 @@ end of the file.
 @item #+TBLFM:
 This line contains the formulas for the table directly above the line.
 @item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+OPTIONS:
-These lines provide setting for exporting files.  For more details see
+These lines provide settings for exporting files.  For more details see
 @ref{Export options}.
 @end table
 
-@node The very busy C-c C-c key, Clean view, Summary of in-buffer settings, Miscellaneous
+@node The very busy C-c C-c key, Clean view, In-buffer settings, Miscellaneous
 @section The very busy C-c C-c key
 @kindex C-c C-c
+@cindex C-c C-c, overview
 
 The key @kbd{C-c C-c} has many purposes in org-mode, which are all
 mentioned scattered throughout this manual.  One specific function of
 this key is to add @emph{tags} to a headline (@pxref{Tags}).  In many
 other circumstances it means something like @emph{Hey Org-mode, look
-here and update according to what you see here}.  Here is a summary of what
-this means in different contexts.
+here and update according to what you see here}.  Here is a summary of
+what this means in different contexts.
 
 @itemize @minus
-@c @item
-@c If the cursor is in a headline, prompt for tags and insert them
-@c into the current line, aligned to `org-tags-column'.  When called
-@c with prefix arg, realign all tags in the current buffer.
+@item
+If there are highlights in the buffer from the creation of a sparse
+tree, or from clock display, remove these highlights.
 @item
 If the cursor is in one of the special @code{#+KEYWORD} lines, this
 triggers scanning the buffer for these lines and updating the
@@ -3960,9 +5128,9 @@ the entire table.
 If the cursor is inside a table created by the @file{table.el} package,
 activate that table.
 @item
-If the current buffer is a remember buffer, close note and file it.
-with a prefix argument, file it without further interaction to the default
-location.
+If the current buffer is a remember buffer, close the note and file it.
+With a prefix argument, file it, without further interaction, to the
+default location.
 @item
 If the cursor is on a @code{<<<target>>>}, update radio targets and
 corresponding links in this buffer.
@@ -4075,7 +5243,7 @@ double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels
 RET} in that file.  The reverse operation is @kbd{M-x
 org-convert-to-oddeven-levels}.
 
-@node TTY keys, FAQ, Clean view, Miscellaneous
+@node TTY keys, Interaction, Clean view, Miscellaneous
 @section Using org-mode on a tty
 @cindex tty keybindings
 
@@ -4112,257 +5280,18 @@ rather use @kbd{C-c .}  to re-insert the timestamp.
 @item @kbd{S-@key{down}}    @tab @kbd{C-c C-x @key{down}}  @tab
 @end multitable
 
-@node FAQ, Interaction, TTY keys, Miscellaneous
-@section Frequently asked questions
-@cindex FAQ
-
-@enumerate
-@cindex @code{keymapp nil} error
-@item @b{When I try to use Org-mode, I always get
-@code{(wrong-type-argument keymapp nil)}}.@*
-@cindex allout.el, conflict with
-This is a conflict with an outdated version of the @file{allout.el}.
-See @ref{Conflicts}.
-
-@item @b{Org-mode seems to be a useful default mode for the various
-@file{README} files I have scattered through my directories.  How do I
-turn it on for all @file{README} files?}
-
-@lisp
-(add-to-list 'auto-mode-alist '("README$" . org-mode))
-@end lisp
-
-@item @b{I would like to use editing features of org-mode in other
-modes, is his possible?}@*
-@c
-Not really.  For tables there is @code{orgtbl-mode} which implements the
-table editor as a minor mode.  For other features you need to switch to
-Org-mode temporarily, or prepare text in a different buffer.
-
-@item @b{Can I get the visibility-cycling features in outline-mode and
-outline-minor-mode?}@* 
-@c
-Yes, these functions are written in a way that they are independent of
-the outline setup.  The following setup provides standard Org-mode
-functionality in outline-mode on @key{TAB} and @kbd{S-@key{TAB}}.  For
-outline-minor-mode, we use @kbd{C-@key{TAB}} instead of @key{TAB},
-because @key{TAB} usually has mode-specific tasks.
-@lisp
-(add-hook 'outline-minor-mode-hook
-  (lambda ()
-    (define-key outline-minor-mode-map [(control tab)] 'org-cycle)
-    (define-key outline-minor-mode-map [(shift tab)] 'org-global-cycle)))
-(add-hook 'outline-mode-hook
-  (lambda ()
-    (define-key outline-mode-map [(tab)] 'org-cycle)
-    (define-key outline-mode-map [(shift tab)] 'org-global-cycle)))
-@end lisp
-
-Or check out @file{outline-magic.el}, which does this and also provides
-promotion and demotion functionality.  @file{outline-magic.el} is
-available at @url{http://www.astro.uva.nl/~dominik/Tools/OutlineMagic}.
-
-@item @b{Some of my links stopped working after I upgraded to a version
-4.20 or later.  Why is this, and how can I fix it?}@*
-@c
-These must be links in plain text, containing white space, such as
-@samp{bbdb:Richard Stallman}.  You need to protect these links by
-putting double brackets around them, like @samp{[[bbdb:Richard
-Stallman]]}.
-
-@item @b{I see that Org-mode now creates links using the double bracket
-convention that hides the link part and the brackets, only showing the
-description part.  How can I convert my old links to this new format?}@*
-@c
-Execute once in each Org-mode file: @kbd{M-x org-upgrade-old-links}.
-This replaces angular brackets with the new link format.
-
-@item @b{I don't care if you find the new bracket links great, I am
-attached to the old style using angular brackets and no hiding of the
-link text.  Please give them back to me, don't tell me it is not
-possible!}@*
-@c
-Would I let you down like that?  If you must, you can do this
-
-@lisp
-(setq org-link-style 'plain
-      org-link-format "<%s>")
-@end lisp
-
-@item @b{When I am executing shell/elisp links I always get a 
-confirmation prompt and need to type @kbd{yes @key{RET}}, that's 4 key
-presses!  Can I get rid of this?}@*
-@c
-@cindex shell links, confirmation
-@cindex dangerous commands
-The confirmation is there to protect you from unwantingly execute
-potentially dangerous commands.  For example, imagine a link
-@samp{[[shell:rm -rf ~/*][Google Search]]}.  In an Org-mode buffer, this
-command would look like @samp{Google Search}, but really it would remove
-your home directory.  If you wish, you can make it easier to respond to
-the query by setting @code{org-confirm-shell-link-function} and/or
-@code{org-confirm-elisp-link-function} to @code{y-or-n-p}.  Then a
-single @kbd{y} keypress will be enough to confirm those links.  It is
-also possible to turn off this check entirely, but I do not recommend to
-do this.  Be warned.
-
-@item @b{All these stars are driving me mad, I just find the Emacs
-outlines unreadable. Can't you just put white space and a single star as a
-starter for headlines?}@*
-@c
-See @ref{Clean view}.
-
-@item @b{I would like to have two windows on the same Org-mode
-file, but with different outline visibility.  Is that possible?}@*
-@c
-@cindex @code{make-indirect-buffer}
-@cindex indirect buffers
-In GNU Emacs, you may use @emph{indirect buffers} which do exactly this.
-See the documentation on the command @code{make-indirect-buffer}.  In
-XEmacs, this is currently not possible because of the different outline
-implementation.
-
-@item @b{When I export my TODO list, every TODO item becomes a
-separate section.  How do I enforce these items to be exported as an
-itemized list?}@*
-@c
-If you plan to use ASCII or HTML export, make sure things you want to
-be exported as item lists are level 4 at least, even if that does mean
-there is a level jump.  For example:
-
-@example
-* Todays top priorities
-**** TODO write a letter to xyz
-**** TODO Finish the paper
-**** Pick up kids at the school
-@end example
-
-Alternatively, if you need a specific value for the heading/item
-transition in a particular file, use the @samp{+OPTIONS} line to
-configure the @samp{H} switch.
-
-@example
-+OPTIONS:   H:2; ...
-@end example
-
-@item @b{I would like to export only a subtree of my file to HTML.
-How?}@*
-@c
-@cindex exporting a subtree
-If you want to export a subtree, mark the subtree as region and then
-export.  Marking can be done with @kbd{C-c @@ C-x C-x}, for example.
-
-@item @b{Org-mode takes over the S-cursor keys.  I also want to use
-CUA-mode, is there a way to fix this conflict?}@*
-Yes, see @ref{Conflicts}.
-
-@item @b{One of my table columns has started to fill up with
-@samp{#ERROR}.  What is going on?}@*
-@c
-Org-mode tried to compute the column from other fields using a
-formula stored in the @samp{#+TBLFM:} line just below the table, and
-the evaluation of the formula fails.  Fix the fields used in the
-formula, or fix the formula, or remove it!
-
-@item @b{When I am in the last column of a table and just above a
-horizontal line in the table, pressing TAB creates a new table line
-@i{before} the horizontal line.  How can I quickly move to the line
-@i{below} the horizontal line instead?}@*
-@c
-Press @key{down} (to get on the separator line) and then @key{TAB}.
-Or configure the variable @code{org-table-tab-jumps-over-hlines}.
-
-@item @b{How can I change the indentation of an entire table without
-fixing every line by hand?}@*
-@c
-@cindex indentation, of tables
-The indentation of a table is set by the first line.  So just fix the
-indentation of the first line and realign with @key{TAB}.
-
-@item @b{Is it possible to include entries from org-mode files into my
-emacs diary?}@*
-@c
-Since the org-mode agenda is much more powerful and can contain the
-diary (@pxref{Calendar/Diary integration}), you should think twice
-before deciding to do this.  Integrating Org-mode information into the
-diary is, however, possible.  You need to turn on @emph{fancy diary
-display} by setting in @file{.emacs}:
-
-@lisp
-(add-hook 'diary-display-hook 'fancy-diary-display)
-@end lisp
-
-Then include the following line into your @file{~/diary} file, in
-order to get the entries from all files listed in the variable
-@code{org-agenda-files}:
-
-@example
-&%%(org-diary)
-@end example
-@noindent
-You may also select specific files with
-
-@example
-&%%(org-diary) ~/path/to/some/org-file.org
-&%%(org-diary) ~/path/to/another/org-file.org
-@end example
-
-If you now launch the calendar and press @kbd{d} to display a diary, the
-headlines of entries containing a timestamp, date range, schedule, or
-deadline referring to the selected date will be listed.  Just like
-Org-mode's agenda view, the diary for @emph{today} contains additional
-entries for overdue deadlines and scheduled items.  See also the
-documentation of the @command{org-diary} function.  Under XEmacs, it is
-not possible to jump back from the diary to the org, this works only in
-the agenda buffer.
-
-@end enumerate
-
-
-@node Interaction, Bugs, FAQ, Miscellaneous
+@node Interaction, Bugs, TTY keys, Miscellaneous
 @section Interaction with other packages
 @cindex packages, interaction with other
 Org-mode lives in the world of GNU Emacs and interacts in various ways
 with other code out there.
 
 @menu
-* Extensions::                  Third-party extensions for Org-mode
 * Cooperation::                 Packages Org-mode cooperates with
 * Conflicts::                   Packages that lead to conflicts
 @end menu
 
-@node Extensions, Cooperation, Interaction, Interaction
-@subsection Third-party extensions for Org-mode
-
-The following extensions for Org-mode have been written by other people:
-
-@table @asis
-@cindex @file{org-checklet.el}
-@item @file{org-checklet.el} by Frank Ruell
-Provides checklist of items which can be either checked or unchecked.
-This is similar to the TODO functionality in Org-mode, but never shows
-up in the agenda.  @file{org-checklet} is freely available at
-@url{http://www.emacswiki.org/cgi-bin/emacs/org-checklet.el}.
-@cindex @file{org-mouse.el}
-@item @file{org-mouse.el} by Piotr Zielinski
-This package implements extended mouse functionality for Org-mode.  It
-allows you to cycle visibility and to edit the document structure with
-the mouse.  Best of all, it provides a context-sensitive menu on
-@key{mouse-3} that changes depending on the context of a mouse-click.
-@file{org-mouse.el} is freely available at @url{http://www.cl.cam.ac.uk/~pz215/files/org-mouse.el}.
-@cindex @file{org-publish.el}
-@item @file{org-publish.el} by David O'Toole
-This package provides facilities for publishing related sets of Org-mode
-files together with linked files like images as a webpages.  It is
-highly configurable and can be used for other publishing purposes as
-well.  As of Org-mode version 4.30, @file{org-publish.el} is part of
-the Org-mode distribution.  It is not yet part of Emacs, however, due to
-a pending copyright assignment.  In the mean time, @file{org-publish.el}
-can be downloaded from David's site:
-@url{http://dto.freeshell.org/e/org-publish.el}.
-@end table
-
-@node Cooperation, Conflicts, Extensions, Interaction
+@node Cooperation, Conflicts, Interaction, Interaction
 @subsection Packages that Org-mode cooperates with
 
 @table @asis
@@ -4388,6 +5317,10 @@ at @url{http://www.astro.uva.nl/~dominik/Tools}. Org-mode checks for
 the function @code{constants-get}, which has to be autoloaded in your
 setup.  See the installation instructions in the file
 @file{constants.el}.
+@item @file{cdlatex.el} by Carsten Dominik
+@cindex @file{cdlatex.el}
+Org-mode can make use of the cdlatex package to efficiently enter
+La@TeX{} fragments into Org-mode files. See @ref{CDLaTeX mode}.
 @item @file{remember.el} by John Wiegley
 @cindex @file{remember.el}
 Org mode cooperates with remember, see @ref{Remember}.
@@ -4439,7 +5372,7 @@ in the paragraph above about CUA mode also applies here.
 @end table
 
 
-@node Bugs, Acknowledgments, Interaction, Miscellaneous
+@node Bugs,  , Interaction, Miscellaneous
 @section Bugs
 @cindex bugs
 
@@ -4465,10 +5398,6 @@ When the application called by @kbd{C-c C-o} to open a file link fails
 (for example because the application does not exist or refuses to open
 the file), it does so silently.  No error message is displayed.
 @item
-Plain list items should be able to hold a TODO item.  Unfortunately this
-has so many technical problems that I will only consider this change for
-the next major release (5.0).
-@item
 The remote-editing commands in the agenda buffer cannot be undone with
 @code{undo} called from within the agenda buffer.  But you can go to
 the corresponding buffer (using @key{TAB} or @key{RET} and execute
@@ -4478,22 +5407,147 @@ Recalculating a table line applies the formulas from left to right.
 If a formula uses @emph{calculated} fields further down the row,
 multiple recalculation may be needed to get all fields consistent.
 @item
-Several words in a row may @b{*be made bold*}, but this does not work if
-the string is distributed over two lines.
+A single letter cannot be made bold, for example @samp{*a*}.
 @item
 The exporters work well, but could be made more efficient.
 @end itemize
 
-@node Acknowledgments,  , Bugs, Miscellaneous
-@section Acknowledgments
+
+@node Extensions and Hacking, History and Acknowledgments, Miscellaneous, Top
+@appendix Extensions, Hooks and Hacking
+
+This appendix lists extensions for Org-mode written by other authors.
+It also covers some aspects where users can easily extend the
+functionality of Org-mode.
+
+@menu
+* Extensions::                  Existing 3rd-part extensions
+* Dynamic blocks::              Automatically filled blocks
+@end menu
+
+@node Extensions, Dynamic blocks, Extensions and Hacking, Extensions and Hacking
+@section Third-party extensions for Org-mode
+
+The following extensions for Org-mode have been written by other people:
+
+@table @asis
+@cindex @file{org-publish.el}
+@item @file{org-publish.el} by David O'Toole
+This package provides facilities for publishing related sets of Org-mode
+files together with linked files like images as a webpages.  It is
+highly configurable and can be used for other publishing purposes as
+well.  As of Org-mode version 4.30, @file{org-publish.el} is part of the
+Org-mode distribution.  It is not yet part of Emacs, however, a delay
+caused by the preparations for the 22.1 release.  In the mean time,
+@file{org-publish.el} can be downloaded from David's site:
+@url{http://dto.freeshell.org/e/org-publish.el}.
+@cindex @file{org-mouse.el}
+@item @file{org-mouse.el} by Piotr Zielinski
+This package implements extended mouse functionality for Org-mode.  It
+allows you to cycle visibility and to edit the document structure with
+the mouse.  Best of all, it provides a context-sensitive menu on
+@key{mouse-3} that changes depending on the context of a mouse-click.
+As of Org-mode version 4.53, @file{org-mouse.el} is part of the
+Org-mode distribution.  It is not yet part of Emacs, however, a delay
+caused by the preparations for the 22.1 release.  In the mean time,
+@file{org-mouse.el} can be downloaded from Piotr's site:
+@url{http://www.cl.cam.ac.uk/~pz215/files/org-mouse.el}.
+@cindex @file{org-blog.el}
+@item @file{org-blog.el} by David O'Toole
+A blogging plug-in for @file{org-publish.el}.@*
+@url{http://dto.freeshell.org/notebook/OrgMode.html}.
+@cindex @file{org-blogging.el}
+@item @file{org-blogging.el} by  Bastien Guerry
+Publish Org-mode files as
+blogs. @url{http://www.cognition.ens.fr/~guerry/org-blogging.html}.
+@end table
+
+@node Dynamic blocks,  , Extensions, Extensions and Hacking
+@section Dynamic blocks
+
+Org-mode documents can contain @emph{dynamic blocks}.  These are
+specially marked regions that are updated by some user-written
+function.  A good example for such a block is the clock table inserted
+by the command @kbd{C-c C-x C-r} (@pxref{Clocking work time}).
+
+Dynamic block are enclosed by a BEGIN-END structure that assigns a name
+to the block and can also specify parameters for the function producing
+the content of the block.
+
+@example
+#+BEGIN: myblock :parameter1 value1 :parameter2 value2 ...
+
+#+END:
+@end example
+
+Dynamic blocks are updated with the following commands
+
+@table @kbd
+@kindex C-c C-x C-u
+@item C-c C-x C-u
+Update dynamic block at point.
+@kindex C-u C-c C-x C-u
+@item C-u C-c C-x C-u
+Update all dynamic blocks in the current file.
+@end table
+
+Updating a dynamic block means to remove all the text between BEGIN and
+END, parse the BEGIN line for parameters and then call the specific
+writer function for this block to insert the new content.  For a block
+with name @code{myblock}, the writer function is
+@code{org-dblock-write:myblock} with as only parameter a property list
+with the parameters given in the begin line.  Here is a trivial example
+of a block that keeps track of when the block update function was last
+run:
+
+@example
+#+BEGIN: block-update-time :format "on %m/%d/%Y at %H:%M"
+
+#+END:
+@end example
+
+@noindent
+The corresponding block writer function could look like this:
+
+@lisp
+(defun org-dblock-write:block-update-time (params)
+   (let ((fmt (or (plist-get params :format) "%d. %m. %Y")))
+     (insert "Last block update at: "
+             (format-time-string fmt (current-time)))))
+@end lisp
+
+If you want to make sure that all dynamic blocks are always up-to-date,
+you could add the function @code{org-update-all-dblocks} to a hook, for
+example @code{before-save-hook}.  @code{org-update-all-dblocks} is
+written in a way that is does nothing in buffers that are not in Org-mode.
+
+@node History and Acknowledgments, Index, Extensions and Hacking, Top
+@appendix History and Acknowledgments
 @cindex acknowledgments
+@cindex history
 @cindex thanks
 
-Org-mode was created by @value{AUTHOR}, who still maintains it at the
-Org-mode homepage @uref{http://www.astro.uva.nl/~dominik/Tools/org/}.
-The following people (in alphabetic order) have helped the development
-along with ideas, suggestions and patches.  Many thanks to all of you,
-Org-mode would not be what it is without your input.
+Org-mode was borne in 2003, out of frustration over the user interface
+of the Emacs outline-mode.  All I wanted was to make working with an
+outline tree possible without having to remember more than 10 commands
+just for hiding and unhiding parts of the outline tree, and to allow to
+restructure a tree easily.  Visibility cycling and structure editing
+were originally implemented in the package @file{outline-magic.el}, but
+quickly moved to the more general @file{org.el}.  TODO entries, basic
+time stamps, and table support were added next, and highlight the two
+main goals that Org-mode still has today: To create a new,
+outline-based, plain text mode with innovative and intuitive editing
+features, and to incorporate project planning functionality directly
+into a notes file.
+
+Since the first release, hundreds of emails to me or on
+@code{emacs-orgmode@@gnu.org} have provided a constant stream of bug
+reports, feedback, new ideas, and sometimes even patches and add-on
+code.  Many thanks to everyone who has helped to improve this package.
+I am trying to keep here a list of the people who had significant
+influence in shaping one or more aspects of Org-mode.  The list may not
+be complete, if I have forgotten someone, please accept my apologies and
+let me know.
 
 @itemize @bullet
 @item
@@ -4508,11 +5562,14 @@ for Remember.
 @i{Pavel Chalmoviansky} influenced the agenda treatment of items with
 specified time.
 @item
-@i{Gregory Chenov} patched support for lisp forms into table
-calculations and improved XEmacs compatibility.
+@i{Gregory Chernov} patched support for lisp forms into table
+calculations and improved XEmacs compatibility, in particular by porting
+@file{nouline.el} to XEmacs.
 @item
 @i{Sacha Chua} suggested to copy some linking code from Planner.
 @item
+@i{Eddward DeVilla} proposed and tested checkbox statistics.
+@item
 @i{Kees Dullemond} inspired the use of narrowed tabled columns.
 @item
 @i{Christian Egli} converted the documentation into TeXInfo format,
@@ -4520,8 +5577,13 @@ patched CSS formatting into the HTML exporter, and inspired the agenda.
 @item
 @i{Nic Ferrier} contributed mailcap and XOXO support.
 @item
-@i{Kai Grossjohann} pointed out key-binding conflicts caused by
-Org-mode.
+@i{Niels Giessen} had the idea to automatically archive DONE trees.
+@item
+@i{Bastien Guerry} provided extensive feedback.
+@item
+@i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
+@item
+@i{Leon Liu} asked for embedded LaTeX and tested it.
 @item
 @i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler
 happy.
@@ -4536,7 +5598,8 @@ file links, and TAGS.
 @i{Scott Otterson} sparked the introduction of descriptive text for
 links, among other things.
 @item
-@i{Pete Phillips} helped the development of the TAGS feature.
+@i{Pete Phillips} helped during the development of the TAGS feature, and
+provided frequent feedback.
 @item
 @i{T.V. Raman} reported bugs and suggested improvements.
 @item
@@ -4548,6 +5611,8 @@ control.
 @i{Frank Ruell} solved the mystery of the @code{keymapp nil} bug, a
 conflict with @file{allout.el}.
 @item
+@i{Jason Riedy} sent a patch to fix a bug with export of TODO keywerds.
+@item
 @i{Philip Rooke} created the Org-mode reference card and provided lots
 of feedback.
 @item
@@ -4557,8 +5622,13 @@ other things.
 Linking to VM/BBDB/GNUS was inspired by @i{Tom Shannon}'s
 @file{organizer-mode.el}.
 @item
-@i{David O'Toole} wrote @file{org-publish.el} and came up with lots is
-ideas for small changes.
+@i{Daniel Sinder} came up with the idea of internal archiving by locking
+subtrees.
+@item
+@i{Dale Smith} proposed link abbreviations.
+@item
+@i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
+chapter about publishing.
 @item
 @i{J@"urgen Vollmer} contributed code generating the table of contents
 in HTML output.
@@ -4582,17 +5652,18 @@ linking to GNUS.
 @i{Roland Winkler} requested additional keybindings to make Org-mode
 work on a tty.
 @item
-@i{Piotr Zielinski} wrote @file{org-mouse.el} and showed how to follow
-links with mouse-1.
+@i{Piotr Zielinski} wrote @file{org-mouse.el}, proposed angenda blocks
+and contributed various ideas and code snippets.
 @end itemize
-@node Index, Key Index, Miscellaneous, Top
-@chapter Index
+
+
+@node Index, Key Index, History and Acknowledgments, Top
+@unnumbered Index
 
 @printindex cp
 
 @node Key Index,  , Index, Top
-@chapter Key Index
+@unnumbered Key Index
 
 @printindex ky