Include GFDL in org.texi
[bpt/emacs.git] / doc / misc / org.texi
CommitLineData
4009494e
GM
1\input texinfo
2@c %**start of header
311f0356 3@setfilename ../../info/org
a7808fba 4@settitle The Org Manual
8223b1d2 5@set VERSION 7.9.2 (GNU Emacs 24.3)
86fbb8ca
CD
6
7@c Use proper quote and backtick for code sections in PDF output
8@c Cf. Texinfo manual 14.2
9@set txicodequoteundirected
10@set txicodequotebacktick
4009494e 11
4009494e 12@c Version and Contact Info
dbc28aaa 13@set MAINTAINERSITE @uref{http://orgmode.org,maintainers webpage}
4009494e
GM
14@set AUTHOR Carsten Dominik
15@set MAINTAINER Carsten Dominik
dbc28aaa
CD
16@set MAINTAINEREMAIL @email{carsten at orgmode dot org}
17@set MAINTAINERCONTACT @uref{mailto:carsten at orgmode dot org,contact the maintainer}
4009494e
GM
18@c %**end of header
19@finalout
20
acedf35c
CD
21
22@c -----------------------------------------------------------------------------
23
24@c Macro definitions for commands and keys
25@c =======================================
26
27@c The behavior of the key/command macros will depend on the flag cmdnames
28@c When set, commands names are shown. When clear, they are not shown.
29
30@set cmdnames
31
32@c Below we define the following macros for Org key tables:
33
ce57c2fe 34@c orgkey{key} A key item
acedf35c 35@c orgcmd{key,cmd} Key with command name
27e428e7 36@c xorgcmd{key,cmd} Key with command name as @itemx
acedf35c
CD
37@c orgcmdnki{key,cmd} Like orgcmd, but do not index the key
38@c orgcmdtkc{text,key,cmd} Like orgcmd,special text instead of key
39@c orgcmdkkc{key1,key2,cmd} Two keys with one command name, use "or"
40@c orgcmdkxkc{key1,key2,cmd} Two keys with one command name, but
41@c different functions, so format as @itemx
42@c orgcmdkskc{key1,key2,cmd} Same as orgcmdkkc, but use "or short"
43@c xorgcmdkskc{key1,key2,cmd} Same as previous, but use @itemx
44@c orgcmdkkcc{key1,key2,cmd1,cmd2} Two keys and two commands
45
46@c a key but no command
47@c Inserts: @item key
48@macro orgkey{key}
49@kindex \key\
50@item @kbd{\key\}
51@end macro
52
53@macro xorgkey{key}
54@kindex \key\
55@itemx @kbd{\key\}
56@end macro
57
58@c one key with a command
59@c Inserts: @item KEY COMMAND
afe98dfa 60@macro orgcmd{key,command}
acedf35c 61@ifset cmdnames
afe98dfa
CD
62@kindex \key\
63@findex \command\
acedf35c 64@iftex
afe98dfa
CD
65@item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
66@end iftex
67@ifnottex
acedf35c
CD
68@item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
69@end ifnottex
70@end ifset
71@ifclear cmdnames
72@kindex \key\
73@item @kbd{\key\}
74@end ifclear
75@end macro
76
77@c One key with one command, formatted using @itemx
78@c Inserts: @itemx KEY COMMAND
79@macro xorgcmd{key,command}
80@ifset cmdnames
81@kindex \key\
82@findex \command\
83@iftex
84@itemx @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
85@end iftex
86@ifnottex
87@itemx @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
88@end ifnottex
89@end ifset
90@ifclear cmdnames
afe98dfa 91@kindex \key\
acedf35c
CD
92@itemx @kbd{\key\}
93@end ifclear
94@end macro
95
96@c one key with a command, bit do not index the key
97@c Inserts: @item KEY COMMAND
98@macro orgcmdnki{key,command}
99@ifset cmdnames
afe98dfa 100@findex \command\
acedf35c
CD
101@iftex
102@item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
103@end iftex
104@ifnottex
afe98dfa
CD
105@item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
106@end ifnottex
acedf35c
CD
107@end ifset
108@ifclear cmdnames
109@item @kbd{\key\}
110@end ifclear
afe98dfa
CD
111@end macro
112
acedf35c
CD
113@c one key with a command, and special text to replace key in item
114@c Inserts: @item TEXT COMMAND
115@macro orgcmdtkc{text,key,command}
116@ifset cmdnames
afe98dfa 117@kindex \key\
acedf35c
CD
118@findex \command\
119@iftex
120@item @kbd{\text\} @hskip 0pt plus 1filll @code{\command\}
121@end iftex
122@ifnottex
123@item @kbd{\text\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
124@end ifnottex
125@end ifset
126@ifclear cmdnames
127@kindex \key\
128@item @kbd{\text\}
129@end ifclear
afe98dfa
CD
130@end macro
131
acedf35c
CD
132@c two keys with one command
133@c Inserts: @item KEY1 or KEY2 COMMAND
134@macro orgcmdkkc{key1,key2,command}
135@ifset cmdnames
136@kindex \key1\
137@kindex \key2\
138@findex \command\
c8d0cf5c 139@iftex
acedf35c 140@item @kbd{\key1\} @ @r{or} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
c8d0cf5c 141@end iftex
acedf35c
CD
142@ifnottex
143@item @kbd{\key1\} @ @r{or} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
144@end ifnottex
145@end ifset
146@ifclear cmdnames
147@kindex \key1\
148@kindex \key2\
149@item @kbd{\key1\} @ @r{or} @ @kbd{\key2\}
150@end ifclear
c8d0cf5c 151@end macro
acedf35c
CD
152
153@c Two keys with one command name, but different functions, so format as
154@c @itemx
155@c Inserts: @item KEY1
156@c @itemx KEY2 COMMAND
157@macro orgcmdkxkc{key1,key2,command}
158@ifset cmdnames
159@kindex \key1\
160@kindex \key2\
161@findex \command\
162@iftex
163@item @kbd{\key1\}
164@itemx @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
165@end iftex
166@ifnottex
167@item @kbd{\key1\}
168@itemx @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
169@end ifnottex
170@end ifset
171@ifclear cmdnames
172@kindex \key1\
173@kindex \key2\
174@item @kbd{\key1\}
175@itemx @kbd{\key2\}
176@end ifclear
c8d0cf5c 177@end macro
acedf35c
CD
178
179@c Same as previous, but use "or short"
180@c Inserts: @item KEY1 or short KEY2 COMMAND
181@macro orgcmdkskc{key1,key2,command}
182@ifset cmdnames
183@kindex \key1\
184@kindex \key2\
185@findex \command\
186@iftex
187@item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
188@end iftex
189@ifnottex
190@item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
191@end ifnottex
192@end ifset
193@ifclear cmdnames
194@kindex \key1\
195@kindex \key2\
196@item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\}
197@end ifclear
c8d0cf5c 198@end macro
acedf35c
CD
199
200@c Same as previous, but use @itemx
201@c Inserts: @itemx KEY1 or short KEY2 COMMAND
202@macro xorgcmdkskc{key1,key2,command}
203@ifset cmdnames
204@kindex \key1\
205@kindex \key2\
206@findex \command\
207@iftex
208@itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
209@end iftex
210@ifnottex
211@itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
212@end ifnottex
213@end ifset
214@ifclear cmdnames
215@kindex \key1\
216@kindex \key2\
217@itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\}
218@end ifclear
c8d0cf5c 219@end macro
4009494e 220
acedf35c
CD
221@c two keys with two commands
222@c Inserts: @item KEY1 COMMAND1
223@c @itemx KEY2 COMMAND2
224@macro orgcmdkkcc{key1,key2,command1,command2}
225@ifset cmdnames
226@kindex \key1\
227@kindex \key2\
228@findex \command1\
229@findex \command2\
230@iftex
231@item @kbd{\key1\} @hskip 0pt plus 1filll @code{\command1\}
232@itemx @kbd{\key2\} @hskip 0pt plus 1filll @code{\command2\}
233@end iftex
234@ifnottex
235@item @kbd{\key1\} @tie{}@tie{}@tie{}@tie{}(@code{\command1\})
236@itemx @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command2\})
237@end ifnottex
238@end ifset
239@ifclear cmdnames
240@kindex \key1\
241@kindex \key2\
242@item @kbd{\key1\}
243@itemx @kbd{\key2\}
244@end ifclear
245@end macro
246@c -----------------------------------------------------------------------------
247
248@iftex
249@c @hyphenation{time-stamp time-stamps time-stamp-ing time-stamp-ed}
250@end iftex
251
4009494e
GM
252@c Subheadings inside a table.
253@macro tsubheading{text}
254@ifinfo
255@subsubheading \text\
256@end ifinfo
257@ifnotinfo
258@item @b{\text\}
259@end ifnotinfo
260@end macro
261
262@copying
c8d0cf5c 263This manual is for Org version @value{VERSION}.
4009494e 264
257b2c7d 265Copyright @copyright{} 2004-2012 Free Software Foundation, Inc.
4009494e
GM
266
267@quotation
268Permission is granted to copy, distribute and/or modify this document
d60b1ba1 269under the terms of the GNU Free Documentation License, Version 1.3 or
4009494e
GM
270any later version published by the Free Software Foundation; with no
271Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
47271179
GM
272and with the Back-Cover Texts as in (a) below. A copy of the license
273is included in the section entitled ``GNU Free Documentation License.''
4009494e 274
6f093307
GM
275(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
276modify this GNU manual. Buying copies from the FSF supports it in
277developing GNU and promoting software freedom.''
4009494e
GM
278@end quotation
279@end copying
280
9e7a4bcf 281@dircategory Emacs editing modes
5dc584b5 282@direntry
86fbb8ca 283* Org Mode: (org). Outline-based notes management and organizer
5dc584b5
KB
284@end direntry
285
4009494e 286@titlepage
a7808fba 287@title The Org Manual
4009494e
GM
288
289@subtitle Release @value{VERSION}
290@author by Carsten Dominik
e66ba1df 291with contributions by David O'Toole, Bastien Guerry, Philip Rooke, Dan Davison, Eric Schulte, Thomas Dye and Jambunathan K.
4009494e
GM
292
293@c The following two commands start the copyright page.
294@page
295@vskip 0pt plus 1filll
296@insertcopying
297@end titlepage
298
299@c Output the table of contents at the beginning.
300@contents
301
302@ifnottex
257b2c7d
GM
303@c FIXME These hand-written next,prev,up node pointers make editing a lot
304@c harder. There should be no need for them, makeinfo can do it
305@c automatically for any document with a normal structure.
4009494e
GM
306@node Top, Introduction, (dir), (dir)
307@top Org Mode Manual
308
309@insertcopying
310@end ifnottex
311
312@menu
c0468714
GM
313* Introduction:: Getting started
314* Document Structure:: A tree works like your brain
315* Tables:: Pure magic for quick formatting
316* Hyperlinks:: Notes in context
317* TODO Items:: Every tree branch can be a TODO item
318* Tags:: Tagging headlines and matching sets of tags
319* Properties and Columns:: Storing information about an entry
320* Dates and Times:: Making items useful for planning
321* Capture - Refile - Archive:: The ins and outs for projects
322* Agenda Views:: Collecting information into views
323* Markup:: Prepare text for rich export
324* Exporting:: Sharing and publishing of notes
325* Publishing:: Create a web site of linked Org files
326* Working With Source Code:: Export, evaluate, and tangle code blocks
327* Miscellaneous:: All the rest which did not fit elsewhere
328* Hacking:: How to hack your way around
329* MobileOrg:: Viewing and capture on a mobile device
330* History and Acknowledgments:: How Org came into being
257b2c7d 331* GNU Free Documentation License:: The license for this documentation.
c0468714
GM
332* Main Index:: An index of Org's concepts and features
333* Key Index:: Key bindings and where they are described
afe98dfa 334* Command and Function Index:: Command names and some internal functions
c0468714 335* Variable Index:: Variables mentioned in the manual
4009494e
GM
336
337@detailmenu
338 --- The Detailed Node Listing ---
339
340Introduction
341
c0468714
GM
342* Summary:: Brief summary of what Org does
343* Installation:: How to install a downloaded version of Org
344* Activation:: How to activate Org for certain buffers
345* Feedback:: Bug reports, ideas, patches etc.
8223b1d2 346* Conventions:: Typesetting conventions in the manual
86fbb8ca
CD
347
348Document structure
349
c0468714
GM
350* Outlines:: Org is based on Outline mode
351* Headlines:: How to typeset Org tree headlines
352* Visibility cycling:: Show and hide, much simplified
353* Motion:: Jumping to other headlines
354* Structure editing:: Changing sequence and level of headlines
355* Sparse trees:: Matches embedded in context
356* Plain lists:: Additional structure within an entry
357* Drawers:: Tucking stuff away
358* Blocks:: Folding blocks
359* Footnotes:: How footnotes are defined in Org's syntax
360* Orgstruct mode:: Structure editing outside Org
4009494e 361
4009494e
GM
362Tables
363
c0468714
GM
364* Built-in table editor:: Simple tables
365* Column width and alignment:: Overrule the automatic settings
366* Column groups:: Grouping to trigger vertical lines
367* Orgtbl mode:: The table editor as minor mode
368* The spreadsheet:: The table editor has spreadsheet capabilities
369* Org-Plot:: Plotting from org tables
4009494e
GM
370
371The spreadsheet
372
c0468714
GM
373* References:: How to refer to another field or range
374* Formula syntax for Calc:: Using Calc to compute stuff
375* Formula syntax for Lisp:: Writing formulas in Emacs Lisp
ce57c2fe
BG
376* Durations and time values:: How to compute durations and time values
377* Field and range formulas:: Formula for specific (ranges of) fields
c0468714 378* Column formulas:: Formulas valid for an entire column
4009494e 379* Editing and debugging formulas:: Fixing formulas
c0468714 380* Updating the table:: Recomputing all dependent fields
e66ba1df 381* Advanced features:: Field and column names, parameters and automatic recalc
4009494e
GM
382
383Hyperlinks
384
c0468714
GM
385* Link format:: How links in Org are formatted
386* Internal links:: Links to other places in the current file
387* External links:: URL-like links to the world
388* Handling links:: Creating, inserting and following
389* Using links outside Org:: Linking from my C source code?
390* Link abbreviations:: Shortcuts for writing complex links
391* Search options:: Linking to a specific location
392* Custom searches:: When the default search is not enough
4009494e
GM
393
394Internal links
395
c0468714 396* Radio targets:: Make targets trigger links in plain text
4009494e 397
86fbb8ca 398TODO items
4009494e 399
c0468714
GM
400* TODO basics:: Marking and displaying TODO entries
401* TODO extensions:: Workflow and assignments
402* Progress logging:: Dates and notes for progress
403* Priorities:: Some things are more important than others
404* Breaking down tasks:: Splitting a task into manageable pieces
405* Checkboxes:: Tick-off lists
4009494e
GM
406
407Extended use of TODO keywords
408
c0468714
GM
409* Workflow states:: From TODO to DONE in steps
410* TODO types:: I do this, Fred does the rest
411* Multiple sets in one file:: Mixing it all, and still finding your way
412* Fast access to TODO states:: Single letter selection of a state
413* Per-file keywords:: Different files, different requirements
414* Faces for TODO keywords:: Highlighting states
415* TODO dependencies:: When one task needs to wait for others
dbc28aaa 416
a7808fba 417Progress logging
dbc28aaa 418
c0468714
GM
419* Closing items:: When was this entry marked DONE?
420* Tracking TODO state changes:: When did the status change?
421* Tracking your habits:: How consistent have you been?
4009494e
GM
422
423Tags
424
c0468714
GM
425* Tag inheritance:: Tags use the tree structure of the outline
426* Setting tags:: How to assign tags to a headline
427* Tag searches:: Searching for combinations of tags
4009494e 428
86fbb8ca 429Properties and columns
4009494e 430
c0468714 431* Property syntax:: How properties are spelled out
e66ba1df 432* Special properties:: Access to other Org mode features
c0468714
GM
433* Property searches:: Matching property values
434* Property inheritance:: Passing values down the tree
435* Column view:: Tabular viewing and editing
436* Property API:: Properties for Lisp programmers
4009494e 437
a7808fba 438Column view
4009494e 439
c0468714
GM
440* Defining columns:: The COLUMNS format property
441* Using column view:: How to create and use column view
442* Capturing column view:: A dynamic block for column view
4009494e 443
a7808fba 444Defining columns
4009494e 445
c0468714
GM
446* Scope of column definitions:: Where defined, where valid?
447* Column attributes:: Appearance and content of a column
4009494e 448
86fbb8ca 449Dates and times
4009494e 450
c0468714
GM
451* Timestamps:: Assigning a time to a tree entry
452* Creating timestamps:: Commands which insert timestamps
453* Deadlines and scheduling:: Planning your work
454* Clocking work time:: Tracking how long you spend on a task
c0468714
GM
455* Effort estimates:: Planning work effort in advance
456* Relative timer:: Notes with a running timer
afe98dfa 457* Countdown timer:: Starting a countdown timer for a task
4009494e
GM
458
459Creating timestamps
460
e66ba1df 461* The date/time prompt:: How Org mode helps you entering date and time
c0468714 462* Custom time format:: Making dates look different
4009494e 463
a7808fba 464Deadlines and scheduling
4009494e 465
c0468714
GM
466* Inserting deadline/schedule:: Planning items
467* Repeated tasks:: Items that show up again and again
4009494e 468
acedf35c
CD
469Clocking work time
470
471* Clocking commands:: Starting and stopping a clock
472* The clock table:: Detailed reports
473* Resolving idle time:: Resolving time when you've been idle
474
a351880d 475Capture - Refile - Archive
864c9740 476
c0468714
GM
477* Capture:: Capturing new stuff
478* Attachments:: Add files to tasks
479* RSS Feeds:: Getting input from RSS feeds
1df7defd 480* Protocols:: External (e.g., Browser) access to Emacs and Org
c0468714
GM
481* Refiling notes:: Moving a tree from one place to another
482* Archiving:: What to do with finished projects
86fbb8ca
CD
483
484Capture
485
c0468714
GM
486* Setting up capture:: Where notes will be stored
487* Using capture:: Commands to invoke and terminate capture
488* Capture templates:: Define the outline of different note types
864c9740 489
86fbb8ca 490Capture templates
4009494e 491
c0468714
GM
492* Template elements:: What is needed for a complete template entry
493* Template expansion:: Filling in information about time and context
8223b1d2 494* Templates in contexts:: Only show a template in a specific context
a351880d
CD
495
496Archiving
497
c0468714
GM
498* Moving subtrees:: Moving a tree to an archive file
499* Internal archiving:: Switch off a tree but keep it in the file
4009494e 500
86fbb8ca 501Agenda views
4009494e 502
c0468714
GM
503* Agenda files:: Files being searched for agenda information
504* Agenda dispatcher:: Keyboard access to agenda views
505* Built-in agenda views:: What is available out of the box?
506* Presentation and sorting:: How agenda items are prepared for display
507* Agenda commands:: Remote editing of Org trees
508* Custom agenda views:: Defining special searches and views
509* Exporting Agenda Views:: Writing a view to a file
510* Agenda column view:: Using column view for collected entries
4009494e
GM
511
512The built-in agenda views
513
c0468714
GM
514* Weekly/daily agenda:: The calendar page with current tasks
515* Global TODO list:: All unfinished action items
4009494e 516* Matching tags and properties:: Structured information with fine-tuned search
c0468714
GM
517* Timeline:: Time-sorted view for single file
518* Search view:: Find entries by searching for text
519* Stuck projects:: Find projects you need to review
4009494e
GM
520
521Presentation and sorting
522
c0468714
GM
523* Categories:: Not all tasks are equal
524* Time-of-day specifications:: How the agenda knows the time
525* Sorting of agenda items:: The order of things
4009494e
GM
526
527Custom agenda views
528
c0468714
GM
529* Storing searches:: Type once, use often
530* Block agenda:: All the stuff you need in a single buffer
531* Setting Options:: Changing the rules
4009494e 532
a351880d
CD
533Markup for rich export
534
c0468714
GM
535* Structural markup elements:: The basic structure as seen by the exporter
536* Images and tables:: Tables and Images will be included
537* Literal examples:: Source code examples with special formatting
538* Include files:: Include additional files into a document
539* Index entries:: Making an index
540* Macro replacement:: Use macros to create complex output
e66ba1df 541* Embedded @LaTeX{}:: LaTeX can be freely used inside Org documents
a351880d
CD
542
543Structural markup elements
544
c0468714
GM
545* Document title:: Where the title is taken from
546* Headings and sections:: The document structure as seen by the exporter
547* Table of contents:: The if and where of the table of contents
548* Initial text:: Text before the first heading?
549* Lists:: Lists
550* Paragraphs:: Paragraphs
551* Footnote markup:: Footnotes
552* Emphasis and monospace:: Bold, italic, etc.
553* Horizontal rules:: Make a line
554* Comment lines:: What will *not* be exported
a351880d 555
acedf35c 556Embedded @LaTeX{}
4009494e 557
c0468714
GM
558* Special symbols:: Greek letters and other symbols
559* Subscripts and superscripts:: Simple syntax for raising/lowering text
8223b1d2 560* @LaTeX{} fragments:: Complex formulas made easy
e66ba1df 561* Previewing @LaTeX{} fragments:: What will this snippet look like?
c0468714 562* CDLaTeX mode:: Speed up entering of formulas
4009494e
GM
563
564Exporting
565
c0468714
GM
566* Selective export:: Using tags to select and exclude trees
567* Export options:: Per-file export settings
568* The export dispatcher:: How to access exporter commands
569* ASCII/Latin-1/UTF-8 export:: Exporting to flat files with encoding
570* HTML export:: Exporting to HTML
e66ba1df 571* @LaTeX{} and PDF export:: Exporting to @LaTeX{}, and processing to PDF
c0468714 572* DocBook export:: Exporting to DocBook
e66ba1df 573* OpenDocument Text export:: Exporting to OpenDocument Text
c0468714
GM
574* TaskJuggler export:: Exporting to TaskJuggler
575* Freemind export:: Exporting to Freemind mind maps
576* XOXO export:: Exporting to XOXO
577* iCalendar export:: Exporting in iCalendar format
b349f79f 578
4009494e
GM
579HTML export
580
c0468714 581* HTML Export commands:: How to invoke HTML export
ce57c2fe 582* HTML preamble and postamble:: How to insert a preamble and a postamble
e66ba1df 583* Quoting HTML tags:: Using direct HTML in Org mode
c0468714
GM
584* Links in HTML export:: How links will be interpreted and formatted
585* Tables in HTML export:: How to modify the formatting of tables
586* Images in HTML export:: How to insert figures into HTML output
afe98dfa 587* Math formatting in HTML export:: Beautiful math also on the web
c0468714
GM
588* Text areas in HTML export:: An alternative way to show an example
589* CSS support:: Changing the appearance of the output
590* JavaScript support:: Info and Folding in a web browser
4009494e 591
acedf35c 592@LaTeX{} and PDF export
4009494e 593
e66ba1df 594* @LaTeX{}/PDF export commands::
c0468714 595* Header and sectioning:: Setting up the export file structure
e66ba1df
BG
596* Quoting @LaTeX{} code:: Incorporating literal @LaTeX{} code
597* Tables in @LaTeX{} export:: Options for exporting tables to @LaTeX{}
598* Images in @LaTeX{} export:: How to insert figures into @LaTeX{} output
c0468714 599* Beamer class export:: Turning the file into a presentation
c8d0cf5c
CD
600
601DocBook export
602
c0468714
GM
603* DocBook export commands:: How to invoke DocBook export
604* Quoting DocBook code:: Incorporating DocBook code in Org files
605* Recursive sections:: Recursive sections in DocBook
606* Tables in DocBook export:: Tables are exported as HTML tables
607* Images in DocBook export:: How to insert figures into DocBook output
608* Special characters:: How to handle special characters
4009494e 609
e66ba1df 610OpenDocument Text export
ce57c2fe 611
153ae947
BG
612* Pre-requisites for ODT export:: What packages ODT exporter relies on
613* ODT export commands:: How to invoke ODT export
614* Extending ODT export:: How to produce @samp{doc}, @samp{pdf} files
e66ba1df 615* Applying custom styles:: How to apply custom styles to the output
153ae947
BG
616* Links in ODT export:: How links will be interpreted and formatted
617* Tables in ODT export:: How Tables are exported
618* Images in ODT export:: How to insert images
619* Math formatting in ODT export:: How @LaTeX{} fragments are formatted
620* Labels and captions in ODT export:: How captions are rendered
621* Literal examples in ODT export:: How source and example blocks are formatted
622* Advanced topics in ODT export:: Read this if you are a power user
e66ba1df 623
153ae947 624Math formatting in ODT export
e66ba1df
BG
625
626* Working with @LaTeX{} math snippets:: How to embed @LaTeX{} math fragments
627* Working with MathML or OpenDocument formula files:: How to embed equations in native format
628
153ae947 629Advanced topics in ODT export
e66ba1df 630
153ae947 631* Configuring a document converter:: How to register a document converter
e66ba1df
BG
632* Working with OpenDocument style files:: Explore the internals
633* Creating one-off styles:: How to produce custom highlighting etc
153ae947 634* Customizing tables in ODT export:: How to define and use Table templates
e66ba1df 635* Validating OpenDocument XML:: How to debug corrupt OpenDocument files
ce57c2fe 636
4009494e
GM
637Publishing
638
c0468714
GM
639* Configuration:: Defining projects
640* Uploading files:: How to get files up on the server
641* Sample configuration:: Example projects
642* Triggering publication:: Publication commands
4009494e
GM
643
644Configuration
645
c0468714
GM
646* Project alist:: The central configuration variable
647* Sources and destinations:: From here to there
648* Selecting files:: What files are part of the project?
649* Publishing action:: Setting the function doing the publishing
ce57c2fe 650* Publishing options:: Tweaking HTML/@LaTeX{} export
c0468714
GM
651* Publishing links:: Which links keep working after publishing?
652* Sitemap:: Generating a list of all pages
653* Generating an index:: An index that reaches across pages
4009494e
GM
654
655Sample configuration
656
c0468714
GM
657* Simple example:: One-component publishing
658* Complex example:: A multi-component publishing example
86fbb8ca
CD
659
660Working with source code
661
c0468714
GM
662* Structure of code blocks:: Code block syntax described
663* Editing source code:: Language major-mode editing
664* Exporting code blocks:: Export contents and/or results
665* Extracting source code:: Create pure source code files
e66ba1df 666* Evaluating code blocks:: Place results of evaluation in the Org mode buffer
c0468714
GM
667* Library of Babel:: Use and contribute to a library of useful code blocks
668* Languages:: List of supported code block languages
669* Header arguments:: Configure code block functionality
670* Results of evaluation:: How evaluation results are handled
e66ba1df 671* Noweb reference syntax:: Literate programming in Org mode
86fbb8ca 672* Key bindings and useful functions:: Work quickly with code blocks
c0468714 673* Batch execution:: Call functions from the command line
86fbb8ca
CD
674
675Header arguments
676
c0468714
GM
677* Using header arguments:: Different ways to set header arguments
678* Specific header arguments:: List of header arguments
86fbb8ca
CD
679
680Using header arguments
681
682* System-wide header arguments:: Set global default values
c0468714 683* Language-specific header arguments:: Set default values by language
86fbb8ca 684* Buffer-wide header arguments:: Set default values for a specific buffer
e66ba1df 685* Header arguments in Org mode properties:: Set default values for a buffer or heading
86fbb8ca 686* Code block specific header arguments:: The most common way to set values
afe98dfa 687* Header arguments in function calls:: The most specific level
86fbb8ca
CD
688
689Specific header arguments
690
c0468714 691* var:: Pass arguments to code blocks
afe98dfa
CD
692* results:: Specify the type of results and how they will
693 be collected and handled
c0468714 694* file:: Specify a path for file output
8223b1d2 695* file-desc:: Specify a description for file results
afe98dfa
CD
696* dir:: Specify the default (possibly remote)
697 directory for code block execution
c0468714
GM
698* exports:: Export code and/or results
699* tangle:: Toggle tangling and specify file name
ce57c2fe
BG
700* mkdirp:: Toggle creation of parent directories of target
701 files during tangling
afe98dfa
CD
702* comments:: Toggle insertion of comments in tangled
703 code files
ce57c2fe
BG
704* padline:: Control insertion of padding lines in tangled
705 code files
afe98dfa
CD
706* no-expand:: Turn off variable assignment and noweb
707 expansion during tangling
c0468714
GM
708* session:: Preserve the state of code evaluation
709* noweb:: Toggle expansion of noweb references
ce57c2fe 710* noweb-ref:: Specify block's noweb reference resolution target
153ae947 711* noweb-sep:: String used to separate noweb references
c0468714 712* cache:: Avoid re-evaluating unchanged code blocks
ce57c2fe 713* sep:: Delimiter for writing tabular results outside Org
c0468714
GM
714* hlines:: Handle horizontal lines in tables
715* colnames:: Handle column names in tables
716* rownames:: Handle row names in tables
717* shebang:: Make tangled files executable
afe98dfa 718* eval:: Limit evaluation of specific code blocks
8223b1d2 719* wrap:: Mark source block evaluation results
4009494e
GM
720
721Miscellaneous
722
c0468714 723* Completion:: M-TAB knows what you need
afe98dfa 724* Easy Templates:: Quick insertion of structural elements
c0468714
GM
725* Speed keys:: Electric commands at the beginning of a headline
726* Code evaluation security:: Org mode files evaluate inline code
727* Customization:: Adapting Org to your taste
728* In-buffer settings:: Overview of the #+KEYWORDS
729* The very busy C-c C-c key:: When in doubt, press C-c C-c
730* Clean view:: Getting rid of leading stars in the outline
731* TTY keys:: Using Org on a tty
732* Interaction:: Other Emacs packages
ce57c2fe 733* org-crypt.el:: Encrypting Org files
4009494e
GM
734
735Interaction with other packages
736
c0468714
GM
737* Cooperation:: Packages Org cooperates with
738* Conflicts:: Packages that lead to conflicts
4009494e 739
b349f79f 740Hacking
4009494e 741
8223b1d2 742* Hooks:: How to reach into Org's internals
c0468714
GM
743* Add-on packages:: Available extensions
744* Adding hyperlink types:: New custom link types
745* Context-sensitive commands:: How to add functionality to such commands
acedf35c 746* Tables in arbitrary syntax:: Orgtbl for @LaTeX{} and other programs
c0468714
GM
747* Dynamic blocks:: Automatically filled blocks
748* Special agenda views:: Customized views
c8d0cf5c 749* Extracting agenda information:: Postprocessing of agenda information
c0468714
GM
750* Using the property API:: Writing programs that use entry properties
751* Using the mapping API:: Mapping over all or selected entries
4009494e 752
a7808fba 753Tables and lists in arbitrary syntax
4009494e 754
c0468714 755* Radio tables:: Sending and receiving radio tables
e66ba1df 756* A @LaTeX{} example:: Step by step, almost a tutorial
c0468714
GM
757* Translator functions:: Copy and modify
758* Radio lists:: Doing the same for lists
4009494e 759
7006d207
CD
760MobileOrg
761
c0468714
GM
762* Setting up the staging area:: Where to interact with the mobile device
763* Pushing to MobileOrg:: Uploading Org files and agendas
764* Pulling from MobileOrg:: Integrating captured and flagged items
7006d207 765
4009494e
GM
766@end detailmenu
767@end menu
768
a7808fba 769@node Introduction, Document Structure, Top, Top
4009494e
GM
770@chapter Introduction
771@cindex introduction
772
773@menu
c0468714
GM
774* Summary:: Brief summary of what Org does
775* Installation:: How to install a downloaded version of Org
776* Activation:: How to activate Org for certain buffers
777* Feedback:: Bug reports, ideas, patches etc.
8223b1d2 778* Conventions:: Typesetting conventions in the manual
4009494e
GM
779@end menu
780
781@node Summary, Installation, Introduction, Introduction
782@section Summary
783@cindex summary
784
a7808fba 785Org is a mode for keeping notes, maintaining TODO lists, and doing
4009494e
GM
786project planning with a fast and effective plain-text system.
787
a7808fba
CD
788Org develops organizational tasks around NOTES files that contain
789lists or information about projects as plain text. Org is
790implemented on top of Outline mode, which makes it possible to keep the
4009494e
GM
791content of large files well structured. Visibility cycling and
792structure editing help to work with the tree. Tables are easily created
a7808fba 793with a built-in table editor. Org supports TODO items, deadlines,
c8d0cf5c 794timestamps, and scheduling. It dynamically compiles entries into an
4009494e
GM
795agenda that utilizes and smoothly integrates much of the Emacs calendar
796and diary. Plain text URL-like links connect to websites, emails,
797Usenet messages, BBDB entries, and any files related to the projects.
a7808fba 798For printing and sharing of notes, an Org file can be exported as a
dbc28aaa 799structured ASCII file, as HTML, or (TODO and agenda items only) as an
4009494e 800iCalendar file. It can also serve as a publishing tool for a set of
a7808fba 801linked web pages.
4009494e 802
86fbb8ca
CD
803As a project planning environment, Org works by adding metadata to outline
804nodes. Based on this data, specific entries can be extracted in queries and
805create dynamic @i{agenda views}.
806
acedf35c
CD
807Org mode contains the Org Babel environment which allows you to work with
808embedded source code blocks in a file, to facilitate code evaluation,
ce57c2fe 809documentation, and literate programming techniques.
86fbb8ca
CD
810
811Org's automatic, context-sensitive table editor with spreadsheet
812capabilities can be integrated into any major mode by activating the
813minor Orgtbl mode. Using a translation step, it can be used to maintain
acedf35c 814tables in arbitrary file types, for example in @LaTeX{}. The structure
86fbb8ca
CD
815editing and list creation capabilities can be used outside Org with
816the minor Orgstruct mode.
4009494e 817
a7808fba 818Org keeps simple things simple. When first fired up, it should
4009494e
GM
819feel like a straightforward, easy to use outliner. Complexity is not
820imposed, but a large amount of functionality is available when you need
86fbb8ca
CD
821it. Org is a toolbox and can be used in different ways and for different
822ends, for example:
4009494e
GM
823
824@example
c8d0cf5c
CD
825@r{@bullet{} an outline extension with visibility cycling and structure editing}
826@r{@bullet{} an ASCII system and table editor for taking structured notes}
c8d0cf5c
CD
827@r{@bullet{} a TODO list editor}
828@r{@bullet{} a full agenda and planner with deadlines and work scheduling}
829@pindex GTD, Getting Things Done
86fbb8ca 830@r{@bullet{} an environment in which to implement David Allen's GTD system}
acedf35c 831@r{@bullet{} a simple hypertext system, with HTML and @LaTeX{} export}
c8d0cf5c 832@r{@bullet{} a publishing tool to create a set of interlinked webpages}
86fbb8ca 833@r{@bullet{} an environment for literate programming}
4009494e
GM
834@end example
835
4009494e 836@cindex FAQ
a7808fba
CD
837There is a website for Org which provides links to the newest
838version of Org, as well as additional information, frequently asked
1df7defd 839questions (FAQ), links to tutorials, etc. This page is located at
dbc28aaa 840@uref{http://orgmode.org}.
4009494e 841
ce57c2fe
BG
842@cindex print edition
843The version 7.3 of this manual is available as a
844@uref{http://www.network-theory.co.uk/org/manual/, paperback book from Network
845Theory Ltd.}
846
4009494e
GM
847@page
848
849
850@node Installation, Activation, Summary, Introduction
851@section Installation
852@cindex installation
853@cindex XEmacs
854
8223b1d2
BG
855@b{Important:} @i{If you the version of Org that comes with Emacs or as a
856XEmacs package, please skip this section and go directly to @ref{Activation}.
857If you downloaded Org as an ELPA package, please read the instructions on the
bdebdb64 858@uref{http://orgmode.org/elpa.html, Org ELPA page}. To see what version of Org
8223b1d2
BG
859(if any) is part of your Emacs distribution, type @kbd{M-x org-version} (if
860your Emacs distribution does not come with Org, this function will not be
861defined).}
4009494e 862
8223b1d2
BG
863Installation of Org mode uses a build system, which is described in more
864detail on @uref{http://orgmode.org/worg/dev/org-build-system.html, Worg}.
4009494e 865
8223b1d2
BG
866If you have downloaded Org from the Web as a distribution @file{.zip} or
867@file{.tar.gz} archive, take the following steps to install it:
a7808fba 868
8223b1d2
BG
869@itemize @bullet
870@item Unpack the distribution archive.
871@item Change into (@code{cd}) the Org directory.
872@item Run @code{make help config}
873and then check and edit the file @file{local.mk} if the default configuration
874does not match your system. Set the name of the Emacs binary (likely either
875@file{emacs} or @file{xemacs}), and the paths to the directories where local
876Lisp and Info files will be installed. If the Emacs binary is not in your
877path, give the full path to the executable. Avoid spaces in any path names.
878@item Run @code{make config}
879again to check the configuration.
8223b1d2
BG
880@item Run @code{make install} or @code{sudo make install}
881to build and install Org mode on your system.
882@end itemize
a7808fba 883
8223b1d2
BG
884If you use a cloned Git repository, then the procedure is slightly different.
885The following description assumes that you are using the @code{master} branch
886(where the development is done). You could also use the @code{maint} branch
887instead, where the release versions are published, just replace @code{master}
888with @code{maint} in the description below.
4009494e 889
8223b1d2
BG
890@itemize @bullet
891@item Change into (@code{cd}) the Org repository.
892@item Run @code{git checkout master}
893to switch to the @code{master} branch of the Org repository.
894@item Run @code{make help}
895and then check and edit the file @file{local.mk}. You must set the name of
896the Emacs binary (likely either @file{emacs} or @file{xemacs}), and the paths
897to the directories where local Lisp and Info files will be installed. If the
898Emacs binary is not in your path, you must give the full path to the
899executable. Avoid spaces in any path names.
900@item Run @code{make config}
901to check the configuration.
63aa0982
BG
902@item Optionally run @code{make test}
903to build Org mode and then run the full testsuite.
8223b1d2
BG
904@item Run @code{make update2} or @code{make up2}
905to update the Git repository and build and install Org mode. The latter
906invocation runs the complete test suite before installation and installs only
907if the build passes all tests.
908@end itemize
909
910If you don't have access to the system-wide directories and you don't want to
911install somewhere into your home directory, you can run Org directly from the
912distribution directory or Org repository by compiling Org mode in place:
913
914@itemize @bullet
915@item Change into (@code{cd}) the Org repository.
916@item Run @code{git checkout master}
917to switch to the @code{master} branch of the Org repository.
918@item Run @code{make compile}
919@end itemize
920
921Last but not least you can also run Org mode directly from an Org repository
922without any compilation. Simply replace the last step in the recipe above
923with @code{make uncompiled}.
924
925Then add the following line to @file{.emacs}:
4009494e
GM
926
927@example
8223b1d2 928(add-to-list 'load-path "~/path/to/orgdir/lisp")
4009494e
GM
929@end example
930
8223b1d2
BG
931@noindent
932If you plan to use code from the @file{contrib} subdirectory without
933compiling them, do a similar step for this directory:
4009494e
GM
934
935@example
8223b1d2 936(add-to-list 'load-path "~/path/to/orgdir/contrib/lisp" t)
c8d0cf5c
CD
937@end example
938
8223b1d2
BG
939If you want to include those files with the build and install, please
940customize the variable @code{ORG_ADD_CONTRIB} instead in your @code{local.mk}
941file, for more details please see this
942@uref{http://orgmode.org/worg/dev/org-build-system.html#sec-4-1-2,
943description on Worg}.
944
c8d0cf5c 945Installing Info files is system dependent, because of differences in the
8223b1d2
BG
946@file{install-info} program. The Info documentation is installed together
947with the rest of Org mode. If you don't install Org mode, it is possible to
1e20eeb7 948install the Info documentation separately (you need to have
8223b1d2
BG
949install-info@footnote{The output from install-info (if any) is system
950dependent. In particular Debian and its derivatives use two different
951versions of install-info and you may see the message:
ce57c2fe
BG
952
953@example
954This is not dpkg install-info anymore, but GNU install-info
955See the man page for ginstall-info for command line arguments
956@end example
957
8223b1d2
BG
958@noindent which can be safely ignored.}
959on your system).
c8d0cf5c
CD
960
961@example
4009494e
GM
962make install-info
963@end example
964
55e0839d 965Do not forget to activate Org as described in the following section.
7006d207 966@page
a7808fba 967
4009494e
GM
968@node Activation, Feedback, Installation, Introduction
969@section Activation
970@cindex activation
971@cindex autoload
8223b1d2 972@cindex ELPA
a7808fba
CD
973@cindex global key bindings
974@cindex key bindings, global
8223b1d2
BG
975@findex org-agenda
976@findex org-capture
977@findex org-store-link
978@findex org-iswitchb
979
980Since Emacs 22.2, files with the @file{.org} extension use Org mode by
981default. If you are using an earlier version of Emacs, add this line to your
982@file{.emacs} file:
4009494e 983
4009494e 984@lisp
4009494e 985(add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
ce57c2fe 986@end lisp
8223b1d2
BG
987
988Org mode buffers need font-lock to be turned on - this is the default in
989Emacs@footnote{If you don't use font-lock globally, turn it on in Org buffer
990with @code{(add-hook 'org-mode-hook 'turn-on-font-lock)}}.
991
992There are compatibility issues between Org mode and some other Elisp
993packages, please take the time to check the list (@pxref{Conflicts}).
ce57c2fe
BG
994
995The four Org commands @command{org-store-link}, @command{org-capture},
996@command{org-agenda}, and @command{org-iswitchb} should be accessible through
1df7defd 997global keys (i.e., anywhere in Emacs, not just in Org buffers). Here are
ce57c2fe
BG
998suggested bindings for these keys, please modify the keys to your own
999liking.
1000@lisp
4009494e 1001(global-set-key "\C-cl" 'org-store-link)
ce57c2fe 1002(global-set-key "\C-cc" 'org-capture)
4009494e 1003(global-set-key "\C-ca" 'org-agenda)
a7808fba 1004(global-set-key "\C-cb" 'org-iswitchb)
4009494e
GM
1005@end lisp
1006
e66ba1df 1007@cindex Org mode, turning on
4009494e 1008With this setup, all files with extension @samp{.org} will be put
e66ba1df 1009into Org mode. As an alternative, make the first line of a file look
4009494e
GM
1010like this:
1011
1012@example
1013MY PROJECTS -*- mode: org; -*-
1014@end example
1015
c8d0cf5c 1016@vindex org-insert-mode-line-in-empty-file
e66ba1df 1017@noindent which will select Org mode for this buffer no matter what
4009494e
GM
1018the file's name is. See also the variable
1019@code{org-insert-mode-line-in-empty-file}.
1020
c8d0cf5c
CD
1021Many commands in Org work on the region if the region is @i{active}. To make
1022use of this, you need to have @code{transient-mark-mode}
1023(@code{zmacs-regions} in XEmacs) turned on. In Emacs 23 this is the default,
1024in Emacs 22 you need to do this yourself with
b6cb4cd5
CD
1025@lisp
1026(transient-mark-mode 1)
1027@end lisp
c8d0cf5c
CD
1028@noindent If you do not like @code{transient-mark-mode}, you can create an
1029active region by using the mouse to select a region, or pressing
1030@kbd{C-@key{SPC}} twice before moving the cursor.
b6cb4cd5 1031
dbc28aaa 1032@node Feedback, Conventions, Activation, Introduction
4009494e
GM
1033@section Feedback
1034@cindex feedback
1035@cindex bug reports
1036@cindex maintainer
1037@cindex author
1038
b349f79f 1039If you find problems with Org, or if you have questions, remarks, or ideas
c8d0cf5c 1040about it, please mail to the Org mailing list @email{emacs-orgmode@@gnu.org}.
6eb02347 1041If you are not a member of the mailing list, your mail will be passed to the
afe98dfa
CD
1042list after a moderator has approved it@footnote{Please consider subscribing
1043to the mailing list, in order to minimize the work the mailing list
1044moderators have to do.}.
1045
1046For bug reports, please first try to reproduce the bug with the latest
acedf35c 1047version of Org available---if you are running an outdated version, it is
afe98dfa
CD
1048quite possible that the bug has been fixed already. If the bug persists,
1049prepare a report and provide as much information as possible, including the
1050version information of Emacs (@kbd{M-x emacs-version @key{RET}}) and Org
6eb02347
CD
1051(@kbd{M-x org-version @key{RET}}), as well as the Org related setup in
1052@file{.emacs}. The easiest way to do this is to use the command
1053@example
1054@kbd{M-x org-submit-bug-report}
1055@end example
1056@noindent which will put all this information into an Emacs mail buffer so
1057that you only need to add your description. If you re not sending the Email
1058from within Emacs, please copy and paste the content into your Email program.
1059
e66ba1df
BG
1060Sometimes you might face a problem due to an error in your Emacs or Org mode
1061setup. Before reporting a bug, it is very helpful to start Emacs with minimal
7bd20f91 1062customizations and reproduce the problem. Doing so often helps you determine
27e428e7 1063if the problem is with your customization or with Org mode itself. You can
e66ba1df
BG
1064start a typical minimal session with a command like the example below.
1065
1066@example
1067$ emacs -Q -l /path/to/minimal-org.el
1068@end example
1069
1070However if you are using Org mode as distributed with Emacs, a minimal setup
8223b1d2
BG
1071is not necessary. In that case it is sufficient to start Emacs as
1072@code{emacs -Q}. The @code{minimal-org.el} setup file can have contents as
1073shown below.
e66ba1df
BG
1074
1075@example
1076;;; Minimal setup to load latest `org-mode'
1077
1078;; activate debugging
1079(setq debug-on-error t
1080 debug-on-signal nil
1081 debug-on-quit nil)
1082
1083;; add latest org-mode to load path
1084(add-to-list 'load-path (expand-file-name "/path/to/org-mode/lisp"))
8223b1d2 1085(add-to-list 'load-path (expand-file-name "/path/to/org-mode/contrib/lisp" t))
e66ba1df
BG
1086@end example
1087
6eb02347
CD
1088If an error occurs, a backtrace can be very useful (see below on how to
1089create one). Often a small example file helps, along with clear information
1090about:
4009494e
GM
1091
1092@enumerate
1093@item What exactly did you do?
1094@item What did you expect to happen?
1095@item What happened instead?
1096@end enumerate
afe98dfa 1097@noindent Thank you for helping to improve this program.
4009494e
GM
1098
1099@subsubheading How to create a useful backtrace
1100
1101@cindex backtrace of an error
a7808fba 1102If working with Org produces an error with a message you don't
4009494e 1103understand, you may have hit a bug. The best way to report this is by
c8d0cf5c 1104providing, in addition to what was mentioned above, a @emph{backtrace}.
4009494e
GM
1105This is information from the built-in debugger about where and how the
1106error occurred. Here is how to produce a useful backtrace:
1107
1108@enumerate
1109@item
e66ba1df 1110Reload uncompiled versions of all Org mode Lisp files. The backtrace
c8d0cf5c
CD
1111contains much more information if it is produced with uncompiled code.
1112To do this, use
4009494e 1113@example
c8d0cf5c 1114C-u M-x org-reload RET
4009494e 1115@end example
c8d0cf5c
CD
1116@noindent
1117or select @code{Org -> Refresh/Reload -> Reload Org uncompiled} from the
1118menu.
4009494e
GM
1119@item
1120Go to the @code{Options} menu and select @code{Enter Debugger on Error}
1121(XEmacs has this option in the @code{Troubleshooting} sub-menu).
1122@item
1123Do whatever you have to do to hit the error. Don't forget to
1124document the steps you take.
1125@item
1126When you hit the error, a @file{*Backtrace*} buffer will appear on the
1127screen. Save this buffer to a file (for example using @kbd{C-x C-w}) and
1128attach it to your bug report.
1129@end enumerate
1130
dbc28aaa
CD
1131@node Conventions, , Feedback, Introduction
1132@section Typesetting conventions used in this manual
1133
8223b1d2
BG
1134@subsubheading TODO keywords, tags, properties, etc.
1135
1136Org mainly uses three types of keywords: TODO keywords, tags and property
dbc28aaa
CD
1137names. In this manual we use the following conventions:
1138
1139@table @code
1140@item TODO
1141@itemx WAITING
1142TODO keywords are written with all capitals, even if they are
1143user-defined.
1144@item boss
1145@itemx ARCHIVE
1146User-defined tags are written in lowercase; built-in tags with special
1147meaning are written with all capitals.
1148@item Release
1149@itemx PRIORITY
1150User-defined properties are capitalized; built-in properties with
1151special meaning are written with all capitals.
1152@end table
1153
8223b1d2
BG
1154Moreover, Org uses @i{option keywords} (like @code{#+TITLE} to set the title)
1155and @i{environment keywords} (like @code{#+BEGIN_HTML} to start a @code{HTML}
1156environment). They are written in uppercase in the manual to enhance its
1157readability, but you can use lowercase in your Org files@footnote{Easy
1158templates insert lowercase keywords and Babel dynamically inserts
1159@code{#+results}.}
1160
1161@subsubheading Keybindings and commands
1162@kindex C-c a
1163@findex org-agenda
1164@kindex C-c c
1165@findex org-capture
1166
1167The manual suggests two global keybindings: @kbd{C-c a} for @code{org-agenda}
1168and @kbd{C-c c} for @code{org-capture}. These are only suggestions, but the
1169rest of the manual assumes that you are using these keybindings.
1170
1171Also, the manual lists both the keys and the corresponding commands for
1172accessing a functionality. Org mode often uses the same key for different
1173functions, depending on context. The command that is bound to such keys has
1174a generic name, like @code{org-metaright}. In the manual we will, wherever
1175possible, give the function that is internally called by the generic command.
1176For example, in the chapter on document structure, @kbd{M-@key{right}} will
1177be listed to call @code{org-do-demote}, while in the chapter on tables, it
1178will be listed to call @code{org-table-move-column-right}. If you prefer,
1179you can compile the manual without the command names by unsetting the flag
1180@code{cmdnames} in @file{org.texi}.
acedf35c 1181
a7808fba 1182@node Document Structure, Tables, Introduction, Top
86fbb8ca 1183@chapter Document structure
4009494e
GM
1184@cindex document structure
1185@cindex structure of document
1186
c8d0cf5c 1187Org is based on Outline mode and provides flexible commands to
4009494e
GM
1188edit the structure of the document.
1189
1190@menu
c0468714
GM
1191* Outlines:: Org is based on Outline mode
1192* Headlines:: How to typeset Org tree headlines
1193* Visibility cycling:: Show and hide, much simplified
1194* Motion:: Jumping to other headlines
1195* Structure editing:: Changing sequence and level of headlines
1196* Sparse trees:: Matches embedded in context
1197* Plain lists:: Additional structure within an entry
1198* Drawers:: Tucking stuff away
1199* Blocks:: Folding blocks
1200* Footnotes:: How footnotes are defined in Org's syntax
1201* Orgstruct mode:: Structure editing outside Org
4009494e
GM
1202@end menu
1203
a7808fba 1204@node Outlines, Headlines, Document Structure, Document Structure
4009494e
GM
1205@section Outlines
1206@cindex outlines
a7808fba 1207@cindex Outline mode
4009494e 1208
a7808fba 1209Org is implemented on top of Outline mode. Outlines allow a
4009494e
GM
1210document to be organized in a hierarchical structure, which (at least
1211for me) is the best representation of notes and thoughts. An overview
1212of this structure is achieved by folding (hiding) large parts of the
1213document to show only the general document structure and the parts
a7808fba 1214currently being worked on. Org greatly simplifies the use of
4009494e 1215outlines by compressing the entire show/hide functionality into a single
c8d0cf5c 1216command, @command{org-cycle}, which is bound to the @key{TAB} key.
4009494e 1217
a7808fba 1218@node Headlines, Visibility cycling, Outlines, Document Structure
4009494e
GM
1219@section Headlines
1220@cindex headlines
1221@cindex outline tree
c8d0cf5c 1222@vindex org-special-ctrl-a/e
86fbb8ca
CD
1223@vindex org-special-ctrl-k
1224@vindex org-ctrl-k-protect-subtree
4009494e 1225
86fbb8ca
CD
1226Headlines define the structure of an outline tree. The headlines in Org
1227start with one or more stars, on the left margin@footnote{See the variables
1228@code{org-special-ctrl-a/e}, @code{org-special-ctrl-k}, and
1229@code{org-ctrl-k-protect-subtree} to configure special behavior of @kbd{C-a},
8223b1d2
BG
1230@kbd{C-e}, and @kbd{C-k} in headlines.} @footnote{Clocking only works with
1231headings indented less then 30 stars.}. For example:
4009494e
GM
1232
1233@example
1234* Top level headline
1235** Second level
1236*** 3rd level
1237 some text
1238*** 3rd level
1239 more text
1240
1241* Another top level headline
1242@end example
1243
1244@noindent Some people find the many stars too noisy and would prefer an
1245outline that has whitespace followed by a single star as headline
c8d0cf5c 1246starters. @ref{Clean view}, describes a setup to realize this.
4009494e 1247
c8d0cf5c 1248@vindex org-cycle-separator-lines
4009494e
GM
1249An empty line after the end of a subtree is considered part of it and
1250will be hidden when the subtree is folded. However, if you leave at
1251least two empty lines, one empty line will remain visible after folding
1252the subtree, in order to structure the collapsed view. See the
1253variable @code{org-cycle-separator-lines} to modify this behavior.
1254
a7808fba 1255@node Visibility cycling, Motion, Headlines, Document Structure
4009494e
GM
1256@section Visibility cycling
1257@cindex cycling, visibility
1258@cindex visibility cycling
1259@cindex trees, visibility
1260@cindex show hidden text
1261@cindex hide text
1262
1263Outlines make it possible to hide parts of the text in the buffer.
a7808fba 1264Org uses just two commands, bound to @key{TAB} and
4009494e
GM
1265@kbd{S-@key{TAB}} to change the visibility in the buffer.
1266
1267@cindex subtree visibility states
1268@cindex subtree cycling
1269@cindex folded, subtree visibility state
1270@cindex children, subtree visibility state
1271@cindex subtree, subtree visibility state
afe98dfa
CD
1272@table @asis
1273@orgcmd{@key{TAB},org-cycle}
4009494e
GM
1274@emph{Subtree cycling}: Rotate current subtree among the states
1275
1276@example
1277,-> FOLDED -> CHILDREN -> SUBTREE --.
1278'-----------------------------------'
1279@end example
1280
c8d0cf5c
CD
1281@vindex org-cycle-emulate-tab
1282@vindex org-cycle-global-at-bob
4009494e
GM
1283The cursor must be on a headline for this to work@footnote{see, however,
1284the option @code{org-cycle-emulate-tab}.}. When the cursor is at the
1285beginning of the buffer and the first line is not a headline, then
1286@key{TAB} actually runs global cycling (see below)@footnote{see the
1287option @code{org-cycle-global-at-bob}.}. Also when called with a prefix
1288argument (@kbd{C-u @key{TAB}}), global cycling is invoked.
1289
1290@cindex global visibility states
1291@cindex global cycling
1292@cindex overview, global visibility state
1293@cindex contents, global visibility state
1294@cindex show all, global visibility state
afe98dfa 1295@orgcmd{S-@key{TAB},org-global-cycle}
4009494e
GM
1296@itemx C-u @key{TAB}
1297@emph{Global cycling}: Rotate the entire buffer among the states
1298
1299@example
1300,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
1301'--------------------------------------'
1302@end example
1303
a7808fba
CD
1304When @kbd{S-@key{TAB}} is called with a numeric prefix argument N, the
1305CONTENTS view up to headlines of level N will be shown. Note that inside
1306tables, @kbd{S-@key{TAB}} jumps to the previous field.
4009494e
GM
1307
1308@cindex show all, command
afe98dfa 1309@orgcmd{C-u C-u C-u @key{TAB},show-all}
864c9740 1310Show all, including drawers.
8223b1d2 1311@cindex revealing context
afe98dfa 1312@orgcmd{C-c C-r,org-reveal}
a7808fba
CD
1313Reveal context around point, showing the current entry, the following heading
1314and the hierarchy above. Useful for working near a location that has been
1315exposed by a sparse tree command (@pxref{Sparse trees}) or an agenda command
1316(@pxref{Agenda commands}). With a prefix argument show, on each
27e428e7 1317level, all sibling headings. With a double prefix argument, also show the
e66ba1df 1318entire subtree of the parent.
8223b1d2 1319@cindex show branches, command
afe98dfa 1320@orgcmd{C-c C-k,show-branches}
86fbb8ca 1321Expose all the headings of the subtree, CONTENT view for just one subtree.
8223b1d2
BG
1322@cindex show children, command
1323@orgcmd{C-c @key{TAB},show-children}
1324Expose all direct children of the subtree. With a numeric prefix argument N,
1df7defd 1325expose all children down to level N@.
afe98dfa 1326@orgcmd{C-c C-x b,org-tree-to-indirect-buffer}
4009494e
GM
1327Show the current subtree in an indirect buffer@footnote{The indirect
1328buffer
1329@ifinfo
1330(@pxref{Indirect Buffers,,,emacs,GNU Emacs Manual})
1331@end ifinfo
1332@ifnotinfo
1333(see the Emacs manual for more information about indirect buffers)
1334@end ifnotinfo
1335will contain the entire buffer, but will be narrowed to the current
1336tree. Editing the indirect buffer will also change the original buffer,
a7808fba
CD
1337but without affecting visibility in that buffer.}. With a numeric
1338prefix argument N, go up to level N and then take that tree. If N is
1339negative then go up that many levels. With a @kbd{C-u} prefix, do not remove
4009494e 1340the previously used indirect buffer.
ce57c2fe
BG
1341@orgcmd{C-c C-x v,org-copy-visible}
1342Copy the @i{visible} text in the region into the kill ring.
4009494e
GM
1343@end table
1344
c8d0cf5c
CD
1345@vindex org-startup-folded
1346@cindex @code{overview}, STARTUP keyword
1347@cindex @code{content}, STARTUP keyword
1348@cindex @code{showall}, STARTUP keyword
7006d207 1349@cindex @code{showeverything}, STARTUP keyword
c8d0cf5c 1350
a7808fba 1351When Emacs first visits an Org file, the global state is set to
1df7defd 1352OVERVIEW, i.e., only the top level headlines are visible. This can be
4009494e
GM
1353configured through the variable @code{org-startup-folded}, or on a
1354per-file basis by adding one of the following lines anywhere in the
1355buffer:
1356
1357@example
1358#+STARTUP: overview
1359#+STARTUP: content
1360#+STARTUP: showall
7006d207 1361#+STARTUP: showeverything
4009494e
GM
1362@end example
1363
c8d0cf5c 1364@cindex property, VISIBILITY
b349f79f 1365@noindent
a50253cc 1366Furthermore, any entries with a @samp{VISIBILITY} property (@pxref{Properties
b349f79f
CD
1367and Columns}) will get their visibility adapted accordingly. Allowed values
1368for this property are @code{folded}, @code{children}, @code{content}, and
1369@code{all}.
afe98dfa
CD
1370@table @asis
1371@orgcmd{C-u C-u @key{TAB},org-set-startup-visibility}
1df7defd 1372Switch back to the startup visibility of the buffer, i.e., whatever is
b349f79f
CD
1373requested by startup options and @samp{VISIBILITY} properties in individual
1374entries.
1375@end table
1376
a7808fba 1377@node Motion, Structure editing, Visibility cycling, Document Structure
4009494e
GM
1378@section Motion
1379@cindex motion, between headlines
1380@cindex jumping, to headlines
1381@cindex headline navigation
1382The following commands jump to other headlines in the buffer.
1383
afe98dfa
CD
1384@table @asis
1385@orgcmd{C-c C-n,outline-next-visible-heading}
4009494e 1386Next heading.
afe98dfa 1387@orgcmd{C-c C-p,outline-previous-visible-heading}
4009494e 1388Previous heading.
afe98dfa 1389@orgcmd{C-c C-f,org-forward-same-level}
4009494e 1390Next heading same level.
afe98dfa 1391@orgcmd{C-c C-b,org-backward-same-level}
4009494e 1392Previous heading same level.
afe98dfa 1393@orgcmd{C-c C-u,outline-up-heading}
4009494e 1394Backward to higher level heading.
afe98dfa 1395@orgcmd{C-c C-j,org-goto}
4009494e
GM
1396Jump to a different place without changing the current outline
1397visibility. Shows the document structure in a temporary buffer, where
1398you can use the following keys to find your destination:
c8d0cf5c 1399@vindex org-goto-auto-isearch
4009494e
GM
1400@example
1401@key{TAB} @r{Cycle visibility.}
1402@key{down} / @key{up} @r{Next/previous visible headline.}
71d35b24
CD
1403@key{RET} @r{Select this location.}
1404@kbd{/} @r{Do a Sparse-tree search}
1405@r{The following keys work if you turn off @code{org-goto-auto-isearch}}
4009494e
GM
1406n / p @r{Next/previous visible headline.}
1407f / b @r{Next/previous headline same level.}
1408u @r{One level up.}
14090-9 @r{Digit argument.}
71d35b24 1410q @r{Quit}
4009494e 1411@end example
c8d0cf5c
CD
1412@vindex org-goto-interface
1413@noindent
1414See also the variable @code{org-goto-interface}.
4009494e
GM
1415@end table
1416
a351880d 1417@node Structure editing, Sparse trees, Motion, Document Structure
4009494e
GM
1418@section Structure editing
1419@cindex structure editing
1420@cindex headline, promotion and demotion
1421@cindex promotion, of subtrees
1422@cindex demotion, of subtrees
1423@cindex subtree, cut and paste
1424@cindex pasting, of subtrees
1425@cindex cutting, of subtrees
1426@cindex copying, of subtrees
6eb02347 1427@cindex sorting, of subtrees
4009494e
GM
1428@cindex subtrees, cut and paste
1429
afe98dfa
CD
1430@table @asis
1431@orgcmd{M-@key{RET},org-insert-heading}
c8d0cf5c 1432@vindex org-M-RET-may-split-line
ce57c2fe
BG
1433Insert new heading with same level as current. If the cursor is in a plain
1434list item, a new item is created (@pxref{Plain lists}). To force creation of
1435a new headline, use a prefix argument. When this command is used in the
1436middle of a line, the line is split and the rest of the line becomes the new
1437headline@footnote{If you do not want the line to be split, customize the
1438variable @code{org-M-RET-may-split-line}.}. If the command is used at the
1439beginning of a headline, the new headline is created before the current line.
1440If at the beginning of any other line, the content of that line is made the
1df7defd 1441new heading. If the command is used at the end of a folded subtree (i.e.,
ce57c2fe
BG
1442behind the ellipses at the end of a headline), then a headline like the
1443current one will be inserted after the end of the subtree.
afe98dfa 1444@orgcmd{C-@key{RET},org-insert-heading-respect-content}
71d35b24
CD
1445Just like @kbd{M-@key{RET}}, except when adding a new heading below the
1446current heading, the new heading is placed after the body instead of before
1447it. This command works from anywhere in the entry.
afe98dfa 1448@orgcmd{M-S-@key{RET},org-insert-todo-heading}
c8d0cf5c
CD
1449@vindex org-treat-insert-todo-heading-as-state-change
1450Insert new TODO entry with same level as current heading. See also the
1451variable @code{org-treat-insert-todo-heading-as-state-change}.
afe98dfa 1452@orgcmd{C-S-@key{RET},org-insert-todo-heading-respect-content}
864c9740
CD
1453Insert new TODO entry with same level as current heading. Like
1454@kbd{C-@key{RET}}, the new headline will be inserted after the current
1455subtree.
afe98dfa 1456@orgcmd{@key{TAB},org-cycle}
a351880d
CD
1457In a new entry with no text yet, the first @key{TAB} demotes the entry to
1458become a child of the previous one. The next @key{TAB} makes it a parent,
1459and so on, all the way to top level. Yet another @key{TAB}, and you are back
1460to the initial level.
afe98dfa 1461@orgcmd{M-@key{left},org-do-promote}
4009494e 1462Promote current heading by one level.
afe98dfa 1463@orgcmd{M-@key{right},org-do-demote}
4009494e 1464Demote current heading by one level.
afe98dfa 1465@orgcmd{M-S-@key{left},org-promote-subtree}
4009494e 1466Promote the current subtree by one level.
afe98dfa 1467@orgcmd{M-S-@key{right},org-demote-subtree}
4009494e 1468Demote the current subtree by one level.
afe98dfa 1469@orgcmd{M-S-@key{up},org-move-subtree-up}
4009494e
GM
1470Move subtree up (swap with previous subtree of same
1471level).
afe98dfa 1472@orgcmd{M-S-@key{down},org-move-subtree-down}
4009494e 1473Move subtree down (swap with next subtree of same level).
afe98dfa 1474@orgcmd{C-c C-x C-w,org-cut-subtree}
1df7defd 1475Kill subtree, i.e., remove it from buffer but save in kill ring.
a7808fba 1476With a numeric prefix argument N, kill N sequential subtrees.
afe98dfa 1477@orgcmd{C-c C-x M-w,org-copy-subtree}
a7808fba
CD
1478Copy subtree to kill ring. With a numeric prefix argument N, copy the N
1479sequential subtrees.
afe98dfa 1480@orgcmd{C-c C-x C-y,org-paste-subtree}
4009494e 1481Yank subtree from kill ring. This does modify the level of the subtree to
a7808fba
CD
1482make sure the tree fits in nicely at the yank position. The yank level can
1483also be specified with a numeric prefix argument, or by yanking after a
4009494e 1484headline marker like @samp{****}.
afe98dfa 1485@orgcmd{C-y,org-yank}
c8d0cf5c
CD
1486@vindex org-yank-adjusted-subtrees
1487@vindex org-yank-folded-subtrees
e45e3595
CD
1488Depending on the variables @code{org-yank-adjusted-subtrees} and
1489@code{org-yank-folded-subtrees}, Org's internal @code{yank} command will
1490paste subtrees folded and in a clever way, using the same command as @kbd{C-c
55033558
CD
1491C-x C-y}. With the default settings, no level adjustment will take place,
1492but the yanked tree will be folded unless doing so would swallow text
1493previously visible. Any prefix argument to this command will force a normal
1494@code{yank} to be executed, with the prefix passed along. A good way to
1495force a normal yank is @kbd{C-u C-y}. If you use @code{yank-pop} after a
1496yank, it will yank previous kill items plainly, without adjustment and
1497folding.
afe98dfa 1498@orgcmd{C-c C-x c,org-clone-subtree-with-time-shift}
c8d0cf5c
CD
1499Clone a subtree by making a number of sibling copies of it. You will be
1500prompted for the number of copies to make, and you can also specify if any
1501timestamps in the entry should be shifted. This can be useful, for example,
1502to create a number of tasks related to a series of lectures to prepare. For
1503more details, see the docstring of the command
1504@code{org-clone-subtree-with-time-shift}.
afe98dfa 1505@orgcmd{C-c C-w,org-refile}
e45e3595 1506Refile entry or region to a different location. @xref{Refiling notes}.
8223b1d2 1507@orgcmd{C-c ^,org-sort}
a7808fba
CD
1508Sort same-level entries. When there is an active region, all entries in the
1509region will be sorted. Otherwise the children of the current headline are
1510sorted. The command prompts for the sorting method, which can be
c8d0cf5c
CD
1511alphabetically, numerically, by time (first timestamp with active preferred,
1512creation time, scheduled time, deadline time), by priority, by TODO keyword
1513(in the sequence the keywords have been defined in the setup) or by the value
1514of a property. Reverse sorting is possible as well. You can also supply
1515your own function to extract the sorting key. With a @kbd{C-u} prefix,
153ae947 1516sorting will be case-sensitive.
afe98dfa 1517@orgcmd{C-x n s,org-narrow-to-subtree}
b349f79f 1518Narrow buffer to current subtree.
ce57c2fe
BG
1519@orgcmd{C-x n b,org-narrow-to-block}
1520Narrow buffer to current block.
afe98dfa 1521@orgcmd{C-x n w,widen}
c8d0cf5c 1522Widen buffer to remove narrowing.
afe98dfa 1523@orgcmd{C-c *,org-toggle-heading}
55e0839d
CD
1524Turn a normal line or plain list item into a headline (so that it becomes a
1525subheading at its location). Also turn a headline into a normal line by
1526removing the stars. If there is an active region, turn all lines in the
1527region into headlines. If the first line in the region was an item, turn
1528only the item lines into headlines. Finally, if the first line is a
28a16a1b 1529headline, remove the stars from all headlines in the region.
4009494e
GM
1530@end table
1531
1532@cindex region, active
1533@cindex active region
c8d0cf5c
CD
1534@cindex transient mark mode
1535When there is an active region (Transient Mark mode), promotion and
4009494e
GM
1536demotion work on all headlines in the region. To select a region of
1537headlines, it is best to place both point and mark at the beginning of a
1538line, mark at the beginning of the first headline, and point at the line
1539just after the last headline to change. Note that when the cursor is
1540inside a table (@pxref{Tables}), the Meta-Cursor keys have different
1541functionality.
1542
28a16a1b 1543
a351880d 1544@node Sparse trees, Plain lists, Structure editing, Document Structure
4009494e
GM
1545@section Sparse trees
1546@cindex sparse trees
1547@cindex trees, sparse
1548@cindex folding, sparse trees
1549@cindex occur, command
1550
c8d0cf5c
CD
1551@vindex org-show-hierarchy-above
1552@vindex org-show-following-heading
1553@vindex org-show-siblings
1554@vindex org-show-entry-below
e66ba1df 1555An important feature of Org mode is the ability to construct @emph{sparse
b349f79f
CD
1556trees} for selected information in an outline tree, so that the entire
1557document is folded as much as possible, but the selected information is made
1558visible along with the headline structure above it@footnote{See also the
1559variables @code{org-show-hierarchy-above}, @code{org-show-following-heading},
1560@code{org-show-siblings}, and @code{org-show-entry-below} for detailed
1561control on how much context is shown around each match.}. Just try it out
1562and you will see immediately how it works.
dbc28aaa 1563
e66ba1df 1564Org mode contains several commands creating such trees, all these
dbc28aaa 1565commands can be accessed through a dispatcher:
4009494e 1566
afe98dfa
CD
1567@table @asis
1568@orgcmd{C-c /,org-sparse-tree}
dbc28aaa 1569This prompts for an extra key to select a sparse-tree creating command.
acedf35c 1570@orgcmd{C-c / r,org-occur}
c8d0cf5c 1571@vindex org-remove-highlights-with-change
ce57c2fe 1572Prompts for a regexp and shows a sparse tree with all matches. If
b349f79f
CD
1573the match is in a headline, the headline is made visible. If the match is in
1574the body of an entry, headline and body are made visible. In order to
1575provide minimal context, also the full hierarchy of headlines above the match
1576is shown, as well as the headline following the match. Each match is also
1577highlighted; the highlights disappear when the buffer is changed by an
c8d0cf5c 1578editing command@footnote{This depends on the option
b349f79f
CD
1579@code{org-remove-highlights-with-change}}, or by pressing @kbd{C-c C-c}.
1580When called with a @kbd{C-u} prefix argument, previous highlights are kept,
1581so several calls to this command can be stacked.
ce57c2fe
BG
1582@orgcmdkkc{M-g n,M-g M-n,next-error}
1583Jump to the next sparse tree match in this buffer.
1584@orgcmdkkc{M-g p,M-g M-p,previous-error}
1585Jump to the previous sparse tree match in this buffer.
4009494e 1586@end table
dbc28aaa 1587
ce57c2fe 1588
4009494e 1589@noindent
c8d0cf5c 1590@vindex org-agenda-custom-commands
4009494e
GM
1591For frequently used sparse trees of specific search strings, you can
1592use the variable @code{org-agenda-custom-commands} to define fast
1593keyboard access to specific sparse trees. These commands will then be
1594accessible through the agenda dispatcher (@pxref{Agenda dispatcher}).
1595For example:
1596
1597@lisp
1598(setq org-agenda-custom-commands
1599 '(("f" occur-tree "FIXME")))
1600@end lisp
1601
1602@noindent will define the key @kbd{C-c a f} as a shortcut for creating
1603a sparse tree matching the string @samp{FIXME}.
1604
dbc28aaa
CD
1605The other sparse tree commands select headings based on TODO keywords,
1606tags, or properties and will be discussed later in this manual.
4009494e
GM
1607
1608@kindex C-c C-e v
1609@cindex printing sparse trees
1610@cindex visible text, printing
1611To print a sparse tree, you can use the Emacs command
1612@code{ps-print-buffer-with-faces} which does not print invisible parts
1613of the document @footnote{This does not work under XEmacs, because
1614XEmacs uses selective display for outlining, not text properties.}.
1615Or you can use the command @kbd{C-c C-e v} to export only the visible
1616part of the document and print the resulting file.
1617
a7808fba 1618@node Plain lists, Drawers, Sparse trees, Document Structure
4009494e
GM
1619@section Plain lists
1620@cindex plain lists
1621@cindex lists, plain
1622@cindex lists, ordered
1623@cindex ordered lists
1624
1625Within an entry of the outline tree, hand-formatted lists can provide
afe98dfa
CD
1626additional structure. They also provide a way to create lists of checkboxes
1627(@pxref{Checkboxes}). Org supports editing such lists, and every exporter
1628(@pxref{Exporting}) can parse and format them.
4009494e 1629
b349f79f
CD
1630Org knows ordered lists, unordered lists, and description lists.
1631@itemize @bullet
1632@item
1633@emph{Unordered} list items start with @samp{-}, @samp{+}, or
1634@samp{*}@footnote{When using @samp{*} as a bullet, lines must be indented or
1635they will be seen as top-level headlines. Also, when you are hiding leading
ce57c2fe
BG
1636stars to get a clean outline view, plain list items starting with a star may
1637be hard to distinguish from true headlines. In short: even though @samp{*}
1638is supported, it may be better to not use it for plain list items.} as
1639bullets.
b349f79f 1640@item
afe98dfa 1641@vindex org-plain-list-ordered-item-terminator
ce57c2fe 1642@vindex org-alphabetical-lists
b349f79f 1643@emph{Ordered} list items start with a numeral followed by either a period or
afe98dfa
CD
1644a right parenthesis@footnote{You can filter out any of them by configuring
1645@code{org-plain-list-ordered-item-terminator}.}, such as @samp{1.} or
ce57c2fe
BG
1646@samp{1)}@footnote{You can also get @samp{a.}, @samp{A.}, @samp{a)} and
1647@samp{A)} by configuring @code{org-alphabetical-lists}. To minimize
1648confusion with normal text, those are limited to one character only. Beyond
1649that limit, bullets will automatically fallback to numbers.}. If you want a
1df7defd 1650list to start with a different value (e.g., 20), start the text of the item
ce57c2fe
BG
1651with @code{[@@20]}@footnote{If there's a checkbox in the item, the cookie
1652must be put @emph{before} the checkbox. If you have activated alphabetical
1653lists, you can also use counters like @code{[@@b]}.}. Those constructs can
1654be used in any item of the list in order to enforce a particular numbering.
b349f79f 1655@item
a351880d 1656@emph{Description} list items are unordered list items, and contain the
ce57c2fe 1657separator @samp{ :: } to distinguish the description @emph{term} from the
a50253cc 1658description.
b349f79f
CD
1659@end itemize
1660
1661Items belonging to the same list must have the same indentation on the first
1662line. In particular, if an ordered list reaches number @samp{10.}, then the
16632--digit numbers must be written left-aligned with the other numbers in the
ce57c2fe
BG
1664list. An item ends before the next line that is less or equally indented
1665than its bullet/number.
afe98dfa 1666
afe98dfa 1667@vindex org-empty-line-terminates-plain-lists
153ae947
BG
1668A list ends whenever every item has ended, which means before any line less
1669or equally indented than items at top level. It also ends before two blank
ce57c2fe 1670lines@footnote{See also @code{org-empty-line-terminates-plain-lists}.}. In
153ae947 1671that case, all items are closed. Here is an example:
4009494e
GM
1672
1673@example
1674@group
1675** Lord of the Rings
1676 My favorite scenes are (in this order)
1677 1. The attack of the Rohirrim
a50253cc 1678 2. Eowyn's fight with the witch king
4009494e
GM
1679 + this was already my favorite scene in the book
1680 + I really like Miranda Otto.
1681 3. Peter Jackson being shot by Legolas
afe98dfa 1682 - on DVD only
ce57c2fe 1683 He makes a really funny face when it happens.
a50253cc 1684 But in the end, no individual scenes matter but the film as a whole.
b349f79f 1685 Important actors in this film are:
a50253cc 1686 - @b{Elijah Wood} :: He plays Frodo
ac20fddf 1687 - @b{Sean Austin} :: He plays Sam, Frodo's friend. I still remember
c8d0cf5c 1688 him very well from his role as Mikey Walsh in @i{The Goonies}.
4009494e
GM
1689@end group
1690@end example
1691
c8d0cf5c
CD
1692Org supports these lists by tuning filling and wrapping commands to deal with
1693them correctly@footnote{Org only changes the filling settings for Emacs. For
1694XEmacs, you should use Kyle E. Jones' @file{filladapt.el}. To turn this on,
1695put into @file{.emacs}: @code{(require 'filladapt)}}, and by exporting them
1696properly (@pxref{Exporting}). Since indentation is what governs the
1697structure of these lists, many structural constructs like @code{#+BEGIN_...}
ce57c2fe 1698blocks can be indented to signal that they belong to a particular item.
4009494e 1699
86fbb8ca 1700@vindex org-list-demote-modify-bullet
ce57c2fe 1701@vindex org-list-indent-offset
86fbb8ca
CD
1702If you find that using a different bullet for a sub-list (than that used for
1703the current list-level) improves readability, customize the variable
ce57c2fe
BG
1704@code{org-list-demote-modify-bullet}. To get a greater difference of
1705indentation between items and theirs sub-items, customize
1706@code{org-list-indent-offset}.
86fbb8ca 1707
afe98dfa
CD
1708@vindex org-list-automatic-rules
1709The following commands act on items when the cursor is in the first line of
1710an item (the line with the bullet or number). Some of them imply the
acedf35c 1711application of automatic rules to keep list structure intact. If some of
afe98dfa
CD
1712these actions get in your way, configure @code{org-list-automatic-rules}
1713to disable them individually.
4009494e 1714
afe98dfa
CD
1715@table @asis
1716@orgcmd{@key{TAB},org-cycle}
e66ba1df 1717@cindex cycling, in plain lists
c8d0cf5c
CD
1718@vindex org-cycle-include-plain-lists
1719Items can be folded just like headline levels. Normally this works only if
1720the cursor is on a plain list item. For more details, see the variable
acedf35c
CD
1721@code{org-cycle-include-plain-lists}. If this variable is set to
1722@code{integrate}, plain list items will be treated like low-level
e66ba1df
BG
1723headlines. The level of an item is then given by the indentation of the
1724bullet/number. Items are always subordinate to real headlines, however; the
1725hierarchies remain completely separated. In a new item with no text yet, the
1726first @key{TAB} demotes the item to become a child of the previous
1727one. Subsequent @key{TAB}s move the item to meaningful levels in the list
1728and eventually get it back to its initial position.
afe98dfa 1729@orgcmd{M-@key{RET},org-insert-heading}
c8d0cf5c 1730@vindex org-M-RET-may-split-line
afe98dfa 1731@vindex org-list-automatic-rules
a7808fba
CD
1732Insert new item at current level. With a prefix argument, force a new
1733heading (@pxref{Structure editing}). If this command is used in the middle
ce57c2fe
BG
1734of an item, that item is @emph{split} in two, and the second part becomes the
1735new item@footnote{If you do not want the item to be split, customize the
1736variable @code{org-M-RET-may-split-line}.}. If this command is executed
1737@emph{before item's body}, the new item is created @emph{before} the current
1738one.
e66ba1df
BG
1739@end table
1740
1741@table @kbd
4009494e 1742@kindex M-S-@key{RET}
e66ba1df 1743@item M-S-RET
4009494e 1744Insert a new item with a checkbox (@pxref{Checkboxes}).
4009494e 1745@kindex S-@key{down}
e66ba1df
BG
1746@item S-up
1747@itemx S-down
3da3282e 1748@cindex shift-selection-mode
c8d0cf5c 1749@vindex org-support-shift-select
ce57c2fe
BG
1750@vindex org-list-use-circular-motion
1751Jump to the previous/next item in the current list@footnote{If you want to
1752cycle around items that way, you may customize
1753@code{org-list-use-circular-motion}.}, but only if
3da3282e
CD
1754@code{org-support-shift-select} is off. If not, you can still use paragraph
1755jumping commands like @kbd{C-@key{up}} and @kbd{C-@key{down}} to quite
1756similar effect.
ce57c2fe
BG
1757@kindex M-@key{up}
1758@kindex M-@key{down}
e66ba1df
BG
1759@item M-up
1760@itemx M-down
ce57c2fe
BG
1761Move the item including subitems up/down@footnote{See
1762@code{org-liste-use-circular-motion} for a cyclic behavior.} (swap with
1763previous/next item of same indentation). If the list is ordered, renumbering
1764is automatic.
86fbb8ca
CD
1765@kindex M-@key{left}
1766@kindex M-@key{right}
e66ba1df
BG
1767@item M-left
1768@itemx M-right
86fbb8ca 1769Decrease/increase the indentation of an item, leaving children alone.
4009494e
GM
1770@kindex M-S-@key{left}
1771@kindex M-S-@key{right}
e66ba1df
BG
1772@item M-S-left
1773@itemx M-S-right
4009494e 1774Decrease/increase the indentation of the item, including subitems.
afe98dfa
CD
1775Initially, the item tree is selected based on current indentation. When
1776these commands are executed several times in direct succession, the initially
1777selected region is used, even if the new indentation would imply a different
1778hierarchy. To use the new hierarchy, break the command chain with a cursor
1779motion or so.
1780
1781As a special case, using this command on the very first item of a list will
1782move the whole list. This behavior can be disabled by configuring
1783@code{org-list-automatic-rules}. The global indentation of a list has no
1784influence on the text @emph{after} the list.
4009494e
GM
1785@kindex C-c C-c
1786@item C-c C-c
1787If there is a checkbox (@pxref{Checkboxes}) in the item line, toggle the
ce57c2fe
BG
1788state of the checkbox. In any case, verify bullets and indentation
1789consistency in the whole list.
4009494e 1790@kindex C-c -
afe98dfa 1791@vindex org-plain-list-ordered-item-terminator
4009494e 1792@item C-c -
a7808fba 1793Cycle the entire list level through the different itemize/enumerate bullets
afe98dfa
CD
1794(@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}) or a subset of them,
1795depending on @code{org-plain-list-ordered-item-terminator}, the type of list,
8223b1d2
BG
1796and its indentation. With a numeric prefix argument N, select the Nth bullet
1797from this list. If there is an active region when calling this, selected
1798text will be changed into an item. With a prefix argument, all lines will be
1799converted to list items. If the first line already was a list item, any item
1800marker will be removed from the list. Finally, even without an active
1801region, a normal line will be converted into a list item.
c8d0cf5c
CD
1802@kindex C-c *
1803@item C-c *
1804Turn a plain list item into a headline (so that it becomes a subheading at
ce57c2fe
BG
1805its location). @xref{Structure editing}, for a detailed explanation.
1806@kindex C-c C-*
1807@item C-c C-*
1808Turn the whole plain list into a subtree of the current heading. Checkboxes
1809(@pxref{Checkboxes}) will become TODO (resp. DONE) keywords when unchecked
1810(resp. checked).
64fb801f
CD
1811@kindex S-@key{left}
1812@kindex S-@key{right}
e66ba1df 1813@item S-left/right
c8d0cf5c 1814@vindex org-support-shift-select
3da3282e
CD
1815This command also cycles bullet styles when the cursor in on the bullet or
1816anywhere in an item line, details depending on
1817@code{org-support-shift-select}.
c8d0cf5c
CD
1818@kindex C-c ^
1819@item C-c ^
1820Sort the plain list. You will be prompted for the sorting method:
1821numerically, alphabetically, by time, or by custom function.
4009494e
GM
1822@end table
1823
c8d0cf5c 1824@node Drawers, Blocks, Plain lists, Document Structure
4009494e
GM
1825@section Drawers
1826@cindex drawers
c8d0cf5c 1827@cindex #+DRAWERS
4009494e
GM
1828@cindex visibility cycling, drawers
1829
c8d0cf5c 1830@vindex org-drawers
8223b1d2
BG
1831@cindex org-insert-drawer
1832@kindex C-c C-x d
4009494e 1833Sometimes you want to keep information associated with an entry, but you
e66ba1df 1834normally don't want to see it. For this, Org mode has @emph{drawers}.
dbc28aaa 1835Drawers need to be configured with the variable
8223b1d2
BG
1836@code{org-drawers}@footnote{You can define additional drawers on a
1837per-file basis with a line like @code{#+DRAWERS: HIDDEN STATE}}. Drawers
4009494e
GM
1838look like this:
1839
1840@example
1841** This is a headline
1842 Still outside the drawer
1843 :DRAWERNAME:
ce57c2fe 1844 This is inside the drawer.
4009494e
GM
1845 :END:
1846 After the drawer.
1847@end example
1848
8223b1d2
BG
1849You can interactively insert drawers at point by calling
1850@code{org-insert-drawer}, which is bound to @key{C-c C-x d}. With an active
1851region, this command will put the region inside the drawer. With a prefix
1852argument, this command calls @code{org-insert-property-drawer} and add a
1853property drawer right below the current headline. Completion over drawer
1854keywords is also possible using @key{M-TAB}.
1855
c8d0cf5c
CD
1856Visibility cycling (@pxref{Visibility cycling}) on the headline will hide and
1857show the entry, but keep the drawer collapsed to a single line. In order to
1858look inside the drawer, you need to move the cursor to the drawer line and
e66ba1df 1859press @key{TAB} there. Org mode uses the @code{PROPERTIES} drawer for
c8d0cf5c
CD
1860storing properties (@pxref{Properties and Columns}), and you can also arrange
1861for state change notes (@pxref{Tracking TODO state changes}) and clock times
ed21c5c8 1862(@pxref{Clocking work time}) to be stored in a drawer @code{LOGBOOK}. If you
acedf35c 1863want to store a quick note in the LOGBOOK drawer, in a similar way to state changes, use
ed21c5c8
CD
1864
1865@table @kbd
1866@kindex C-c C-z
1867@item C-c C-z
1868Add a time-stamped note to the LOGBOOK drawer.
1869@end table
c8d0cf5c
CD
1870
1871@node Blocks, Footnotes, Drawers, Document Structure
1872@section Blocks
1873
1874@vindex org-hide-block-startup
1875@cindex blocks, folding
e66ba1df 1876Org mode uses begin...end blocks for various purposes from including source
c8d0cf5c
CD
1877code examples (@pxref{Literal examples}) to capturing time logging
1878information (@pxref{Clocking work time}). These blocks can be folded and
1879unfolded by pressing TAB in the begin line. You can also get all blocks
1880folded at startup by configuring the variable @code{org-hide-block-startup}
1881or on a per-file basis by using
4009494e 1882
c8d0cf5c
CD
1883@cindex @code{hideblocks}, STARTUP keyword
1884@cindex @code{nohideblocks}, STARTUP keyword
1885@example
1886#+STARTUP: hideblocks
1887#+STARTUP: nohideblocks
1888@end example
1889
1890@node Footnotes, Orgstruct mode, Blocks, Document Structure
55e0839d
CD
1891@section Footnotes
1892@cindex footnotes
1893
e66ba1df
BG
1894Org mode supports the creation of footnotes. In contrast to the
1895@file{footnote.el} package, Org mode's footnotes are designed for work on a
55e0839d 1896larger document, not only for one-off documents like emails. The basic
1df7defd 1897syntax is similar to the one used by @file{footnote.el}, i.e., a footnote is
55e0839d
CD
1898defined in a paragraph that is started by a footnote marker in square
1899brackets in column 0, no indentation allowed. If you need a paragraph break
acedf35c 1900inside a footnote, use the @LaTeX{} idiom @samp{\par}. The footnote reference
55e0839d
CD
1901is simply the marker in square brackets, inside text. For example:
1902
1903@example
1904The Org homepage[fn:1] now looks a lot better than it used to.
1905...
1906[fn:1] The link is: http://orgmode.org
1907@end example
1908
e66ba1df 1909Org mode extends the number-based syntax to @emph{named} footnotes and
55e0839d
CD
1910optional inline definition. Using plain numbers as markers (as
1911@file{footnote.el} does) is supported for backward compatibility, but not
acedf35c 1912encouraged because of possible conflicts with @LaTeX{} snippets (@pxref{Embedded
e66ba1df 1913@LaTeX{}}). Here are the valid references:
55e0839d
CD
1914
1915@table @code
1916@item [1]
c8d0cf5c 1917A plain numeric footnote marker. Compatible with @file{footnote.el}, but not
86fbb8ca 1918recommended because something like @samp{[1]} could easily be part of a code
c8d0cf5c 1919snippet.
55e0839d
CD
1920@item [fn:name]
1921A named footnote reference, where @code{name} is a unique label word, or, for
1922simplicity of automatic creation, a number.
1923@item [fn:: This is the inline definition of this footnote]
acedf35c 1924A @LaTeX{}-like anonymous footnote where the definition is given directly at the
55e0839d
CD
1925reference point.
1926@item [fn:name: a definition]
1927An inline definition of a footnote, which also specifies a name for the note.
867d4bb3 1928Since Org allows multiple references to the same note, you can then use
55e0839d
CD
1929@code{[fn:name]} to create additional references.
1930@end table
1931
c8d0cf5c
CD
1932@vindex org-footnote-auto-label
1933Footnote labels can be created automatically, or you can create names yourself.
55e0839d 1934This is handled by the variable @code{org-footnote-auto-label} and its
acedf35c 1935corresponding @code{#+STARTUP} keywords. See the docstring of that variable
55e0839d
CD
1936for details.
1937
1938@noindent The following command handles footnotes:
1939
1940@table @kbd
1941@kindex C-c C-x f
1942@item C-c C-x f
1943The footnote action command.
1944
1945When the cursor is on a footnote reference, jump to the definition. When it
1946is at a definition, jump to the (first) reference.
1947
c8d0cf5c
CD
1948@vindex org-footnote-define-inline
1949@vindex org-footnote-section
1950@vindex org-footnote-auto-adjust
55e0839d
CD
1951Otherwise, create a new footnote. Depending on the variable
1952@code{org-footnote-define-inline}@footnote{The corresponding in-buffer
1953setting is: @code{#+STARTUP: fninline} or @code{#+STARTUP: nofninline}}, the
1954definition will be placed right into the text as part of the reference, or
1955separately into the location determined by the variable
1956@code{org-footnote-section}.
1957
1958When this command is called with a prefix argument, a menu of additional
1959options is offered:
1960@example
1961s @r{Sort the footnote definitions by reference sequence. During editing,}
1962 @r{Org makes no effort to sort footnote definitions into a particular}
1963 @r{sequence. If you want them sorted, use this command, which will}
c8d0cf5c
CD
1964 @r{also move entries according to @code{org-footnote-section}. Automatic}
1965 @r{sorting after each insertion/deletion can be configured using the}
1966 @r{variable @code{org-footnote-auto-adjust}.}
1967r @r{Renumber the simple @code{fn:N} footnotes. Automatic renumbering}
1968 @r{after each insertion/deletion can be configured using the variable}
1969 @r{@code{org-footnote-auto-adjust}.}
1970S @r{Short for first @code{r}, then @code{s} action.}
55e0839d
CD
1971n @r{Normalize the footnotes by collecting all definitions (including}
1972 @r{inline definitions) into a special section, and then numbering them}
1973 @r{in sequence. The references will then also be numbers. This is}
1df7defd 1974 @r{meant to be the final step before finishing a document (e.g., sending}
55e0839d
CD
1975 @r{off an email). The exporters do this automatically, and so could}
1976 @r{something like @code{message-send-hook}.}
1977d @r{Delete the footnote at point, and all definitions of and references}
1978 @r{to it.}
1979@end example
c8d0cf5c
CD
1980Depending on the variable @code{org-footnote-auto-adjust}@footnote{the
1981corresponding in-buffer options are @code{fnadjust} and @code{nofnadjust}.},
1982renumbering and sorting footnotes can be automatic after each insertion or
1983deletion.
1984
55e0839d
CD
1985@kindex C-c C-c
1986@item C-c C-c
1987If the cursor is on a footnote reference, jump to the definition. If it is a
1988the definition, jump back to the reference. When called at a footnote
1989location with a prefix argument, offer the same menu as @kbd{C-c C-x f}.
1990@kindex C-c C-o
1991@kindex mouse-1
1992@kindex mouse-2
c8d0cf5c 1993@item C-c C-o @r{or} mouse-1/2
55e0839d
CD
1994Footnote labels are also links to the corresponding definition/reference, and
1995you can use the usual commands to follow these links.
1996@end table
1997
1998@node Orgstruct mode, , Footnotes, Document Structure
4009494e 1999@section The Orgstruct minor mode
a7808fba 2000@cindex Orgstruct mode
4009494e
GM
2001@cindex minor mode for structure editing
2002
e66ba1df 2003If you like the intuitive way the Org mode structure editing and list
c8d0cf5c
CD
2004formatting works, you might want to use these commands in other modes like
2005Text mode or Mail mode as well. The minor mode @code{orgstruct-mode} makes
2006this possible. Toggle the mode with @kbd{M-x orgstruct-mode}, or
ce57c2fe 2007turn it on by default, for example in Message mode, with one of:
4009494e
GM
2008
2009@lisp
ce57c2fe
BG
2010(add-hook 'message-mode-hook 'turn-on-orgstruct)
2011(add-hook 'message-mode-hook 'turn-on-orgstruct++)
4009494e
GM
2012@end lisp
2013
c8d0cf5c
CD
2014When this mode is active and the cursor is on a line that looks to Org like a
2015headline or the first line of a list item, most structure editing commands
2016will work, even if the same keys normally have different functionality in the
2017major mode you are using. If the cursor is not in one of those special
acedf35c 2018lines, Orgstruct mode lurks silently in the shadows. When you use
c8d0cf5c
CD
2019@code{orgstruct++-mode}, Org will also export indentation and autofill
2020settings into that mode, and detect item context after the first line of an
2021item.
4009494e 2022
a7808fba 2023@node Tables, Hyperlinks, Document Structure, Top
4009494e
GM
2024@chapter Tables
2025@cindex tables
2026@cindex editing tables
2027
a7808fba 2028Org comes with a fast and intuitive table editor. Spreadsheet-like
acedf35c 2029calculations are supported using the Emacs @file{calc} package
153ae947 2030(@pxref{Top, Calc, , calc, Gnu Emacs Calculator Manual}).
4009494e
GM
2031
2032@menu
c0468714
GM
2033* Built-in table editor:: Simple tables
2034* Column width and alignment:: Overrule the automatic settings
2035* Column groups:: Grouping to trigger vertical lines
2036* Orgtbl mode:: The table editor as minor mode
2037* The spreadsheet:: The table editor has spreadsheet capabilities
2038* Org-Plot:: Plotting from org tables
4009494e
GM
2039@end menu
2040
c8d0cf5c 2041@node Built-in table editor, Column width and alignment, Tables, Tables
4009494e
GM
2042@section The built-in table editor
2043@cindex table editor, built-in
2044
1df7defd 2045Org makes it easy to format tables in plain ASCII@. Any line with @samp{|} as
ce57c2fe
BG
2046the first non-whitespace character is considered part of a table. @samp{|}
2047is also the column separator@footnote{To insert a vertical bar into a table
2048field, use @code{\vert} or, inside a word @code{abc\vert@{@}def}.}. A table
2049might look like this:
4009494e
GM
2050
2051@example
2052| Name | Phone | Age |
2053|-------+-------+-----|
2054| Peter | 1234 | 17 |
2055| Anna | 4321 | 25 |
2056@end example
2057
2058A table is re-aligned automatically each time you press @key{TAB} or
2059@key{RET} or @kbd{C-c C-c} inside the table. @key{TAB} also moves to
2060the next field (@key{RET} to the next row) and creates new table rows
2061at the end of the table or before horizontal lines. The indentation
2062of the table is set by the first line. Any line starting with
2063@samp{|-} is considered as a horizontal separator line and will be
2064expanded on the next re-align to span the whole table width. So, to
2065create the above table, you would only type
2066
2067@example
2068|Name|Phone|Age|
2069|-
2070@end example
2071
2072@noindent and then press @key{TAB} to align the table and start filling in
55e0839d
CD
2073fields. Even faster would be to type @code{|Name|Phone|Age} followed by
2074@kbd{C-c @key{RET}}.
4009494e 2075
c8d0cf5c
CD
2076@vindex org-enable-table-editor
2077@vindex org-table-auto-blank-field
a7808fba 2078When typing text into a field, Org treats @key{DEL},
4009494e
GM
2079@key{Backspace}, and all character keys in a special way, so that
2080inserting and deleting avoids shifting other fields. Also, when
2081typing @emph{immediately after the cursor was moved into a new field
2082with @kbd{@key{TAB}}, @kbd{S-@key{TAB}} or @kbd{@key{RET}}}, the
2083field is automatically made blank. If this behavior is too
2084unpredictable for you, configure the variables
2085@code{org-enable-table-editor} and @code{org-table-auto-blank-field}.
2086
2087@table @kbd
2088@tsubheading{Creation and conversion}
afe98dfa 2089@orgcmd{C-c |,org-table-create-or-convert-from-region}
ce57c2fe 2090Convert the active region to table. If every line contains at least one
4009494e 2091TAB character, the function assumes that the material is tab separated.
dbc28aaa 2092If every line contains a comma, comma-separated values (CSV) are assumed.
4009494e 2093If not, lines are split at whitespace into fields. You can use a prefix
dbc28aaa
CD
2094argument to force a specific separator: @kbd{C-u} forces CSV, @kbd{C-u
2095C-u} forces TAB, and a numeric argument N indicates that at least N
a7808fba 2096consecutive spaces, or alternatively a TAB will be the separator.
28a16a1b 2097@*
a7808fba 2098If there is no active region, this command creates an empty Org
ce57c2fe 2099table. But it is easier just to start typing, like
4009494e
GM
2100@kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
2101
2102@tsubheading{Re-aligning and field motion}
acedf35c 2103@orgcmd{C-c C-c,org-table-align}
4009494e
GM
2104Re-align the table without moving the cursor.
2105@c
acedf35c 2106@orgcmd{<TAB>,org-table-next-field}
4009494e
GM
2107Re-align the table, move to the next field. Creates a new row if
2108necessary.
2109@c
acedf35c 2110@orgcmd{S-@key{TAB},org-table-previous-field}
4009494e
GM
2111Re-align, move to previous field.
2112@c
acedf35c 2113@orgcmd{@key{RET},org-table-next-row}
4009494e
GM
2114Re-align the table and move down to next row. Creates a new row if
2115necessary. At the beginning or end of a line, @key{RET} still does
2116NEWLINE, so it can be used to split a table.
c8d0cf5c 2117@c
acedf35c 2118@orgcmd{M-a,org-table-beginning-of-field}
c8d0cf5c 2119Move to beginning of the current table field, or on to the previous field.
acedf35c 2120@orgcmd{M-e,org-table-end-of-field}
c8d0cf5c 2121Move to end of the current table field, or on to the next field.
4009494e
GM
2122
2123@tsubheading{Column and row editing}
acedf35c 2124@orgcmdkkcc{M-@key{left},M-@key{right},org-table-move-column-left,org-table-move-column-right}
4009494e
GM
2125Move the current column left/right.
2126@c
acedf35c 2127@orgcmd{M-S-@key{left},org-table-delete-column}
4009494e
GM
2128Kill the current column.
2129@c
acedf35c 2130@orgcmd{M-S-@key{right},org-table-insert-column}
4009494e
GM
2131Insert a new column to the left of the cursor position.
2132@c
acedf35c 2133@orgcmdkkcc{M-@key{up},M-@key{down},org-table-move-row-up,org-table-move-row-down}
4009494e
GM
2134Move the current row up/down.
2135@c
acedf35c 2136@orgcmd{M-S-@key{up},org-table-kill-row}
4009494e
GM
2137Kill the current row or horizontal line.
2138@c
acedf35c 2139@orgcmd{M-S-@key{down},org-table-insert-row}
a7808fba
CD
2140Insert a new row above the current row. With a prefix argument, the line is
2141created below the current one.
4009494e 2142@c
acedf35c 2143@orgcmd{C-c -,org-table-insert-hline}
2096a1b6 2144Insert a horizontal line below current row. With a prefix argument, the line
4009494e
GM
2145is created above the current line.
2146@c
acedf35c 2147@orgcmd{C-c @key{RET},org-table-hline-and-move}
2096a1b6 2148Insert a horizontal line below current row, and move the cursor into the row
55e0839d
CD
2149below that line.
2150@c
acedf35c 2151@orgcmd{C-c ^,org-table-sort-lines}
4009494e
GM
2152Sort the table lines in the region. The position of point indicates the
2153column to be used for sorting, and the range of lines is the range
2154between the nearest horizontal separator lines, or the entire table. If
2155point is before the first column, you will be prompted for the sorting
2156column. If there is an active region, the mark specifies the first line
2157and the sorting column, while point should be in the last line to be
2158included into the sorting. The command prompts for the sorting type
2159(alphabetically, numerically, or by time). When called with a prefix
2160argument, alphabetic sorting will be case-sensitive.
2161
2162@tsubheading{Regions}
acedf35c 2163@orgcmd{C-c C-x M-w,org-table-copy-region}
c8d0cf5c
CD
2164Copy a rectangular region from a table to a special clipboard. Point and
2165mark determine edge fields of the rectangle. If there is no active region,
2166copy just the current field. The process ignores horizontal separator lines.
4009494e 2167@c
acedf35c 2168@orgcmd{C-c C-x C-w,org-table-cut-region}
4009494e
GM
2169Copy a rectangular region from a table to a special clipboard, and
2170blank all fields in the rectangle. So this is the ``cut'' operation.
2171@c
acedf35c 2172@orgcmd{C-c C-x C-y,org-table-paste-rectangle}
4009494e 2173Paste a rectangular region into a table.
864c9740 2174The upper left corner ends up in the current field. All involved fields
4009494e
GM
2175will be overwritten. If the rectangle does not fit into the present table,
2176the table is enlarged as needed. The process ignores horizontal separator
2177lines.
2178@c
acedf35c
CD
2179@orgcmd{M-@key{RET},org-table-wrap-region}
2180Split the current field at the cursor position and move the rest to the line
2181below. If there is an active region, and both point and mark are in the same
2182column, the text in the column is wrapped to minimum width for the given
2183number of lines. A numeric prefix argument may be used to change the number
2184of desired lines. If there is no region, but you specify a prefix argument,
2185the current field is made blank, and the content is appended to the field
2186above.
4009494e
GM
2187
2188@tsubheading{Calculations}
2189@cindex formula, in tables
2190@cindex calculations, in tables
2191@cindex region, active
2192@cindex active region
c8d0cf5c 2193@cindex transient mark mode
acedf35c 2194@orgcmd{C-c +,org-table-sum}
4009494e
GM
2195Sum the numbers in the current column, or in the rectangle defined by
2196the active region. The result is shown in the echo area and can
2197be inserted with @kbd{C-y}.
2198@c
acedf35c 2199@orgcmd{S-@key{RET},org-table-copy-down}
c8d0cf5c 2200@vindex org-table-copy-increment
864c9740
CD
2201When current field is empty, copy from first non-empty field above. When not
2202empty, copy current field down to next row and move cursor along with it.
2203Depending on the variable @code{org-table-copy-increment}, integer field
2204values will be incremented during copy. Integers that are too large will not
a50253cc 2205be incremented. Also, a @code{0} prefix argument temporarily disables the
c8d0cf5c
CD
2206increment. This key is also used by shift-selection and related modes
2207(@pxref{Conflicts}).
4009494e
GM
2208
2209@tsubheading{Miscellaneous}
acedf35c 2210@orgcmd{C-c `,org-table-edit-field}
c8d0cf5c
CD
2211Edit the current field in a separate window. This is useful for fields that
2212are not fully visible (@pxref{Column width and alignment}). When called with
2213a @kbd{C-u} prefix, just make the full field visible, so that it can be
ce57c2fe
BG
2214edited in place. When called with two @kbd{C-u} prefixes, make the editor
2215window follow the cursor through the table and always show the current
2216field. The follow mode exits automatically when the cursor leaves the table,
2217or when you repeat this command with @kbd{C-u C-u C-c `}.
4009494e 2218@c
4009494e 2219@item M-x org-table-import
c8d0cf5c
CD
2220Import a file as a table. The table should be TAB or whitespace
2221separated. Use, for example, to import a spreadsheet table or data
dbc28aaa
CD
2222from a database, because these programs generally can write
2223TAB-separated text files. This command works by inserting the file into
2224the buffer and then converting the region to a table. Any prefix
2225argument is passed on to the converter, which uses it to determine the
2226separator.
acedf35c 2227@orgcmd{C-c |,org-table-create-or-convert-from-region}
a7808fba 2228Tables can also be imported by pasting tabular text into the Org
4009494e 2229buffer, selecting the pasted text with @kbd{C-x C-x} and then using the
44ce9197 2230@kbd{C-c |} command (see above under @i{Creation and conversion}).
4009494e
GM
2231@c
2232@item M-x org-table-export
acedf35c 2233@findex org-table-export
c8d0cf5c
CD
2234@vindex org-table-export-default-format
2235Export the table, by default as a TAB-separated file. Use for data
a7808fba
CD
2236exchange with, for example, spreadsheet or database programs. The format
2237used to export the file can be configured in the variable
2238@code{org-table-export-default-format}. You may also use properties
2239@code{TABLE_EXPORT_FILE} and @code{TABLE_EXPORT_FORMAT} to specify the file
b349f79f
CD
2240name and the format for table export in a subtree. Org supports quite
2241general formats for exported tables. The exporter format is the same as the
c8d0cf5c 2242format used by Orgtbl radio tables, see @ref{Translator functions}, for a
b349f79f 2243detailed description.
4009494e
GM
2244@end table
2245
2246If you don't like the automatic table editor because it gets in your
2247way on lines which you would like to start with @samp{|}, you can turn
2248it off with
2249
2250@lisp
2251(setq org-enable-table-editor nil)
2252@end lisp
2253
2254@noindent Then the only table command that still works is
2255@kbd{C-c C-c} to do a manual re-align.
2256
c8d0cf5c
CD
2257@node Column width and alignment, Column groups, Built-in table editor, Tables
2258@section Column width and alignment
4009494e 2259@cindex narrow columns in tables
c8d0cf5c
CD
2260@cindex alignment in tables
2261
2262The width of columns is automatically determined by the table editor. And
2263also the alignment of a column is determined automatically from the fraction
2264of number-like versus non-number fields in the column.
4009494e 2265
ed21c5c8
CD
2266Sometimes a single field or a few fields need to carry more text, leading to
2267inconveniently wide columns. Or maybe you want to make a table with several
2268columns having a fixed width, regardless of content. To set@footnote{This
2269feature does not work on XEmacs.} the width of a column, one field anywhere
2270in the column may contain just the string @samp{<N>} where @samp{N} is an
2271integer specifying the width of the column in characters. The next re-align
2272will then set the width of this column to this value.
4009494e
GM
2273
2274@example
2275@group
2276|---+------------------------------| |---+--------|
2277| | | | | <6> |
2278| 1 | one | | 1 | one |
2279| 2 | two | ----\ | 2 | two |
2280| 3 | This is a long chunk of text | ----/ | 3 | This=> |
2281| 4 | four | | 4 | four |
2282|---+------------------------------| |---+--------|
2283@end group
2284@end example
2285
2286@noindent
2287Fields that are wider become clipped and end in the string @samp{=>}.
acedf35c 2288Note that the full text is still in the buffer but is hidden.
c8d0cf5c 2289To see the full text, hold the mouse over the field---a tool-tip window
4009494e
GM
2290will show the full content. To edit such a field, use the command
2291@kbd{C-c `} (that is @kbd{C-c} followed by the backquote). This will
2292open a new window with the full field. Edit it and finish with @kbd{C-c
2293C-c}.
2294
c8d0cf5c 2295@vindex org-startup-align-all-tables
4009494e
GM
2296When visiting a file containing a table with narrowed columns, the
2297necessary character hiding has not yet happened, and the table needs to
2298be aligned before it looks nice. Setting the option
2299@code{org-startup-align-all-tables} will realign all tables in a file
2300upon visiting, but also slow down startup. You can also set this option
2301on a per-file basis with:
2302
2303@example
2304#+STARTUP: align
2305#+STARTUP: noalign
2306@end example
2307
c8d0cf5c 2308If you would like to overrule the automatic alignment of number-rich columns
acedf35c 2309to the right and of string-rich column to the left, you can use @samp{<r>},
8223b1d2 2310@samp{<c>}@footnote{Centering does not work inside Emacs, but it does have an
afe98dfa
CD
2311effect when exporting to HTML.} or @samp{<l>} in a similar fashion. You may
2312also combine alignment and field width like this: @samp{<l10>}.
c8d0cf5c 2313
86fbb8ca
CD
2314Lines which only contain these formatting cookies will be removed
2315automatically when exporting the document.
2316
c8d0cf5c 2317@node Column groups, Orgtbl mode, Column width and alignment, Tables
4009494e
GM
2318@section Column groups
2319@cindex grouping columns in tables
2320
a7808fba 2321When Org exports tables, it does so by default without vertical
4009494e
GM
2322lines because that is visually more satisfying in general. Occasionally
2323however, vertical lines can be useful to structure a table into groups
2324of columns, much like horizontal lines can do for groups of rows. In
2325order to specify column groups, you can use a special row where the
2326first field contains only @samp{/}. The further fields can either
2327contain @samp{<} to indicate that this column should start a group,
153ae947
BG
2328@samp{>} to indicate the end of a column, or @samp{<>} (no space between @samp{<}
2329and @samp{>}) to make a column
a7808fba 2330a group of its own. Boundaries between column groups will upon export be
4009494e
GM
2331marked with vertical lines. Here is an example:
2332
2333@example
86fbb8ca
CD
2334| N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
2335|---+-----+-----+-----+---------+------------|
2336| / | < | | > | < | > |
2337| 1 | 1 | 1 | 1 | 1 | 1 |
2338| 2 | 4 | 8 | 16 | 1.4142 | 1.1892 |
2339| 3 | 9 | 27 | 81 | 1.7321 | 1.3161 |
2340|---+-----+-----+-----+---------+------------|
2341#+TBLFM: $2=$1^2::$3=$1^3::$4=$1^4::$5=sqrt($1)::$6=sqrt(sqrt(($1)))
4009494e
GM
2342@end example
2343
a7808fba 2344It is also sufficient to just insert the column group starters after
86fbb8ca 2345every vertical line you would like to have:
4009494e
GM
2346
2347@example
2348| N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
2349|----+-----+-----+-----+---------+------------|
2350| / | < | | | < | |
2351@end example
2352
a7808fba 2353@node Orgtbl mode, The spreadsheet, Column groups, Tables
4009494e 2354@section The Orgtbl minor mode
a7808fba 2355@cindex Orgtbl mode
4009494e
GM
2356@cindex minor mode for tables
2357
a7808fba
CD
2358If you like the intuitive way the Org table editor works, you
2359might also want to use it in other modes like Text mode or Mail mode.
2360The minor mode Orgtbl mode makes this possible. You can always toggle
4009494e 2361the mode with @kbd{M-x orgtbl-mode}. To turn it on by default, for
ce57c2fe 2362example in Message mode, use
4009494e
GM
2363
2364@lisp
ce57c2fe 2365(add-hook 'message-mode-hook 'turn-on-orgtbl)
4009494e
GM
2366@end lisp
2367
2368Furthermore, with some special setup, it is possible to maintain tables
a7808fba 2369in arbitrary syntax with Orgtbl mode. For example, it is possible to
acedf35c 2370construct @LaTeX{} tables with the underlying ease and power of
a7808fba 2371Orgtbl mode, including spreadsheet capabilities. For details, see
4009494e
GM
2372@ref{Tables in arbitrary syntax}.
2373
c8d0cf5c 2374@node The spreadsheet, Org-Plot, Orgtbl mode, Tables
4009494e
GM
2375@section The spreadsheet
2376@cindex calculations, in tables
2377@cindex spreadsheet capabilities
2378@cindex @file{calc} package
2379
2380The table editor makes use of the Emacs @file{calc} package to implement
2381spreadsheet-like capabilities. It can also evaluate Emacs Lisp forms to
ed21c5c8
CD
2382derive fields from other fields. While fully featured, Org's implementation
2383is not identical to other spreadsheets. For example, Org knows the concept
2384of a @emph{column formula} that will be applied to all non-header fields in a
2385column without having to copy the formula to each relevant field. There is
2386also a formula debugger, and a formula editor with features for highlighting
2387fields in the table corresponding to the references at the point in the
2388formula, moving these references by arrow keys
4009494e
GM
2389
2390@menu
c0468714
GM
2391* References:: How to refer to another field or range
2392* Formula syntax for Calc:: Using Calc to compute stuff
2393* Formula syntax for Lisp:: Writing formulas in Emacs Lisp
ce57c2fe
BG
2394* Durations and time values:: How to compute durations and time values
2395* Field and range formulas:: Formula for specific (ranges of) fields
c0468714 2396* Column formulas:: Formulas valid for an entire column
4009494e 2397* Editing and debugging formulas:: Fixing formulas
c0468714 2398* Updating the table:: Recomputing all dependent fields
e66ba1df 2399* Advanced features:: Field and column names, parameters and automatic recalc
4009494e
GM
2400@end menu
2401
2402@node References, Formula syntax for Calc, The spreadsheet, The spreadsheet
2403@subsection References
2404@cindex references
2405
2406To compute fields in the table from other fields, formulas must
a7808fba 2407reference other fields or ranges. In Org, fields can be referenced
4009494e
GM
2408by name, by absolute coordinates, and by relative coordinates. To find
2409out what the coordinates of a field are, press @kbd{C-c ?} in that
2410field, or press @kbd{C-c @}} to toggle the display of a grid.
2411
2412@subsubheading Field references
2413@cindex field references
2414@cindex references, to fields
2415
2416Formulas can reference the value of another field in two ways. Like in
2417any other spreadsheet, you may reference fields with a letter/number
2418combination like @code{B3}, meaning the 2nd field in the 3rd row.
ce57c2fe
BG
2419@vindex org-table-use-standard-references
2420However, Org prefers@footnote{Org will understand references typed by the
2421user as @samp{B4}, but it will not use this syntax when offering a formula
2422for editing. You can customize this behavior using the variable
2423@code{org-table-use-standard-references}.} to use another, more general
2424representation that looks like this:
4009494e 2425@example
c8d0cf5c 2426@@@var{row}$@var{column}
4009494e
GM
2427@end example
2428
ce57c2fe 2429Column specifications can be absolute like @code{$1},
1df7defd 2430@code{$2},...@code{$@var{N}}, or relative to the current column (i.e., the
ce57c2fe
BG
2431column of the field which is being computed) like @code{$+1} or @code{$-2}.
2432@code{$<} and @code{$>} are immutable references to the first and last
2433column, respectively, and you can use @code{$>>>} to indicate the third
2434column from the right.
2435
2436The row specification only counts data lines and ignores horizontal separator
2437lines (hlines). Like with columns, you can use absolute row numbers
2438@code{@@1}, @code{@@2},...@code{@@@var{N}}, and row numbers relative to the
2439current row like @code{@@+3} or @code{@@-1}. @code{@@<} and @code{@@>} are
2440immutable references the first and last@footnote{For backward compatibility
2441you can also use special names like @code{$LR5} and @code{$LR12} to refer in
2442a stable way to the 5th and 12th field in the last row of the table.
2443However, this syntax is deprecated, it should not be used for new documents.
2444Use @code{@@>$} instead.} row in the table, respectively. You may also
2445specify the row relative to one of the hlines: @code{@@I} refers to the first
1df7defd 2446hline, @code{@@II} to the second, etc. @code{@@-I} refers to the first such
ce57c2fe
BG
2447line above the current line, @code{@@+I} to the first such line below the
2448current line. You can also write @code{@@III+2} which is the second data line
2449after the third hline in the table.
2450
2451@code{@@0} and @code{$0} refer to the current row and column, respectively,
1df7defd 2452i.e., to the row/column for the field being computed. Also, if you omit
ce57c2fe
BG
2453either the column or the row part of the reference, the current row/column is
2454implied.
4009494e 2455
a7808fba 2456Org's references with @emph{unsigned} numbers are fixed references
4009494e
GM
2457in the sense that if you use the same reference in the formula for two
2458different fields, the same field will be referenced each time.
a7808fba 2459Org's references with @emph{signed} numbers are floating
4009494e
GM
2460references because the same reference operator can reference different
2461fields depending on the field being calculated by the formula.
2462
2463Here are a few examples:
2464
2465@example
ce57c2fe
BG
2466@@2$3 @r{2nd row, 3rd column (same as @code{C2})}
2467$5 @r{column 5 in the current row (same as @code{E&})}
4009494e
GM
2468@@2 @r{current column, row 2}
2469@@-1$-3 @r{the field one row up, three columns to the left}
2470@@-I$2 @r{field just under hline above current row, column 2}
ce57c2fe 2471@@>$5 @r{field in the last row, in column 5}
4009494e
GM
2472@end example
2473
2474@subsubheading Range references
2475@cindex range references
2476@cindex references, to ranges
2477
2478You may reference a rectangular range of fields by specifying two field
2479references connected by two dots @samp{..}. If both fields are in the
2480current row, you may simply use @samp{$2..$7}, but if at least one field
2481is in a different row, you need to use the general @code{@@row$column}
2482format at least for the first field (i.e the reference must start with
2483@samp{@@} in order to be interpreted correctly). Examples:
2484
2485@example
ce57c2fe
BG
2486$1..$3 @r{first three fields in the current row}
2487$P..$Q @r{range, using column names (see under Advanced)}
2488$<<<..$>> @r{start in third column, continue to the one but last}
2489@@2$1..@@4$3 @r{6 fields between these two fields (same as @code{A2..C4})}
4009494e 2490@@-1$-2..@@-1 @r{3 numbers from the column to the left, 2 up to current row}
ce57c2fe 2491@@I..II @r{between first and second hline, short for @code{@@I..@@II}}
4009494e
GM
2492@end example
2493
2494@noindent Range references return a vector of values that can be fed
2495into Calc vector functions. Empty fields in ranges are normally
2496suppressed, so that the vector contains only the non-empty fields (but
2497see the @samp{E} mode switch below). If there are no non-empty fields,
2498@samp{[0]} is returned to avoid syntax errors in formulas.
2499
ed21c5c8
CD
2500@subsubheading Field coordinates in formulas
2501@cindex field coordinates
2502@cindex coordinates, of field
2503@cindex row, of field coordinates
2504@cindex column, of field coordinates
2505
2506For Calc formulas and Lisp formulas @code{@@#} and @code{$#} can be used to
2507get the row or column number of the field where the formula result goes.
2508The traditional Lisp formula equivalents are @code{org-table-current-dline}
2509and @code{org-table-current-column}. Examples:
2510
2511@example
2512if(@@# % 2, $#, string("")) @r{column number on odd lines only}
2513$3 = remote(FOO, @@@@#$2) @r{copy column 2 from table FOO into}
2514 @r{column 3 of the current table}
2515@end example
2516
2517@noindent For the second example, table FOO must have at least as many rows
ce57c2fe 2518as the current table. Note that this is inefficient@footnote{The computation time scales as
ed21c5c8
CD
2519O(N^2) because table FOO is parsed for each field to be copied.} for large
2520number of rows.
2521
4009494e
GM
2522@subsubheading Named references
2523@cindex named references
2524@cindex references, named
2525@cindex name, of column or field
2526@cindex constants, in calculations
c8d0cf5c 2527@cindex #+CONSTANTS
4009494e 2528
c8d0cf5c 2529@vindex org-table-formula-constants
4009494e
GM
2530@samp{$name} is interpreted as the name of a column, parameter or
2531constant. Constants are defined globally through the variable
2532@code{org-table-formula-constants}, and locally (for the file) through a
2533line like
2534
2535@example
2536#+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6
2537@end example
2538
2539@noindent
c8d0cf5c
CD
2540@vindex constants-unit-system
2541@pindex constants.el
a7808fba 2542Also properties (@pxref{Properties and Columns}) can be used as
c8d0cf5c 2543constants in table formulas: for a property @samp{:Xyz:} use the name
dbc28aaa 2544@samp{$PROP_Xyz}, and the property will be searched in the current
4009494e
GM
2545outline entry and in the hierarchy above it. If you have the
2546@file{constants.el} package, it will also be used to resolve constants,
2547including natural constants like @samp{$h} for Planck's constant, and
c8d0cf5c 2548units like @samp{$km} for kilometers@footnote{@file{constants.el} can
4009494e
GM
2549supply the values of constants in two different unit systems, @code{SI}
2550and @code{cgs}. Which one is used depends on the value of the variable
2551@code{constants-unit-system}. You can use the @code{#+STARTUP} options
2552@code{constSI} and @code{constcgs} to set this value for the current
2553buffer.}. Column names and parameters can be specified in special table
2554lines. These are described below, see @ref{Advanced features}. All
2555names must start with a letter, and further consist of letters and
2556numbers.
2557
55e0839d
CD
2558@subsubheading Remote references
2559@cindex remote references
2560@cindex references, remote
2561@cindex references, to a different table
2562@cindex name, of column or field
2563@cindex constants, in calculations
c8d0cf5c 2564@cindex #+TBLNAME
55e0839d
CD
2565
2566You may also reference constants, fields and ranges from a different table,
2567either in the current file or even in a different file. The syntax is
2568
2569@example
2570remote(NAME-OR-ID,REF)
2571@end example
2572
2573@noindent
2574where NAME can be the name of a table in the current file as set by a
2575@code{#+TBLNAME: NAME} line before the table. It can also be the ID of an
2576entry, even in a different file, and the reference then refers to the first
2577table in that entry. REF is an absolute field or range reference as
c8d0cf5c
CD
2578described above for example @code{@@3$3} or @code{$somename}, valid in the
2579referenced table.
55e0839d 2580
4009494e
GM
2581@node Formula syntax for Calc, Formula syntax for Lisp, References, The spreadsheet
2582@subsection Formula syntax for Calc
2583@cindex formula syntax, Calc
2584@cindex syntax, of formulas
2585
2586A formula can be any algebraic expression understood by the Emacs
2587@file{Calc} package. @b{Note that @file{calc} has the
2588non-standard convention that @samp{/} has lower precedence than
2589@samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.} Before
2590evaluation by @code{calc-eval} (@pxref{Calling Calc from
153ae947 2591Your Programs, calc-eval, Calling Calc from Your Lisp Programs, calc, GNU
4009494e 2592Emacs Calc Manual}),
4009494e
GM
2593variable substitution takes place according to the rules described above.
2594@cindex vectors, in table calculations
a7808fba 2595The range vectors can be directly fed into the Calc vector functions
4009494e
GM
2596like @samp{vmean} and @samp{vsum}.
2597
2598@cindex format specifier
2599@cindex mode, for @file{calc}
c8d0cf5c 2600@vindex org-calc-default-modes
4009494e
GM
2601A formula can contain an optional mode string after a semicolon. This
2602string consists of flags to influence Calc and other modes during
a7808fba 2603execution. By default, Org uses the standard Calc modes (precision
44ce9197 260412, angular units degrees, fraction and symbolic modes off). The display
c8d0cf5c 2605format, however, has been changed to @code{(float 8)} to keep tables
4009494e
GM
2606compact. The default settings can be configured using the variable
2607@code{org-calc-default-modes}.
2608
2609@example
ed21c5c8
CD
2610p20 @r{set the internal Calc calculation precision to 20 digits}
2611n3 s3 e2 f4 @r{Normal, scientific, engineering, or fixed}
2612 @r{format of the result of Calc passed back to Org.}
2613 @r{Calc formatting is unlimited in precision as}
2614 @r{long as the Calc calculation precision is greater.}
4009494e
GM
2615D R @r{angle modes: degrees, radians}
2616F S @r{fraction and symbolic modes}
2617N @r{interpret all fields as numbers, use 0 for non-numbers}
4009494e 2618E @r{keep empty fields in ranges}
c8d0cf5c 2619L @r{literal}
4009494e
GM
2620@end example
2621
2622@noindent
ed21c5c8
CD
2623Unless you use large integer numbers or high-precision-calculation
2624and -display for floating point numbers you may alternatively provide a
2625@code{printf} format specifier to reformat the Calc result after it has been
2626passed back to Org instead of letting Calc already do the
2627formatting@footnote{The @code{printf} reformatting is limited in precision
2628because the value passed to it is converted into an @code{integer} or
2629@code{double}. The @code{integer} is limited in size by truncating the
2630signed value to 32 bits. The @code{double} is limited in precision to 64
2631bits overall which leaves approximately 16 significant decimal digits.}.
2632A few examples:
4009494e
GM
2633
2634@example
2635$1+$2 @r{Sum of first and second field}
2636$1+$2;%.2f @r{Same, format result to two decimals}
2637exp($2)+exp($1) @r{Math functions can be used}
2638$0;%.1f @r{Reformat current cell to 1 decimal}
2639($3-32)*5/9 @r{Degrees F -> C conversion}
2640$c/$1/$cm @r{Hz -> cm conversion, using @file{constants.el}}
2641tan($1);Dp3s1 @r{Compute in degrees, precision 3, display SCI 1}
2642sin($1);Dp3%.1e @r{Same, but use printf specifier for display}
2643vmean($2..$7) @r{Compute column range mean, using vector function}
2644vmean($2..$7);EN @r{Same, but treat empty fields as 0}
acedf35c 2645taylor($3,x=7,2) @r{Taylor series of $3, at x=7, second degree}
4009494e
GM
2646@end example
2647
2648Calc also contains a complete set of logical operations. For example
2649
2650@example
ce57c2fe 2651if($1<20,teen,string("")) @r{"teen" if age $1 less than 20, else empty}
4009494e
GM
2652@end example
2653
ce57c2fe
BG
2654Note that you can also use two org-specific flags @code{T} and @code{t} for
2655durations computations @ref{Durations and time values}.
2656
2657@node Formula syntax for Lisp, Durations and time values, Formula syntax for Calc, The spreadsheet
4009494e
GM
2658@subsection Emacs Lisp forms as formulas
2659@cindex Lisp forms, as table formulas
2660
8223b1d2 2661It is also possible to write a formula in Emacs Lisp. This can be useful
735135f9
PE
2662for string manipulation and control structures, if Calc's functionality is
2663not enough.
8223b1d2
BG
2664
2665If a formula starts with a single-quote followed by an opening parenthesis,
2666then it is evaluated as a Lisp form. The evaluation should return either a
2667string or a number. Just as with @file{calc} formulas, you can specify modes
735135f9 2668and a printf format after a semicolon.
8223b1d2
BG
2669
2670With Emacs Lisp forms, you need to be conscious about the way field
2671references are interpolated into the form. By default, a reference will be
2672interpolated as a Lisp string (in double-quotes) containing the field. If
2673you provide the @samp{N} mode switch, all referenced elements will be numbers
2674(non-number fields will be zero) and interpolated as Lisp numbers, without
2675quotes. If you provide the @samp{L} flag, all fields will be interpolated
2676literally, without quotes. I.e., if you want a reference to be interpreted
2677as a string by the Lisp form, enclose the reference operator itself in
2678double-quotes, like @code{"$3"}. Ranges are inserted as space-separated
2679fields, so you can embed them in list or vector syntax.
2680
2681Here are a few examples---note how the @samp{N} mode is used when we do
2682computations in Lisp:
4009494e
GM
2683
2684@example
2685@r{Swap the first two characters of the content of column 1}
2686 '(concat (substring $1 1 2) (substring $1 0 1) (substring $1 2))
2096a1b6 2687@r{Add columns 1 and 2, equivalent to Calc's @code{$1+$2}}
4009494e
GM
2688 '(+ $1 $2);N
2689@r{Compute the sum of columns 1-4, like Calc's @code{vsum($1..$4)}}
2690 '(apply '+ '($1..$4));N
2691@end example
2692
ce57c2fe
BG
2693@node Durations and time values, Field and range formulas, Formula syntax for Lisp, The spreadsheet
2694@subsection Durations and time values
2695@cindex Duration, computing
2696@cindex Time, computing
2697@vindex org-table-duration-custom-format
2698
2699If you want to compute time values use the @code{T} flag, either in Calc
2700formulas or Elisp formulas:
2701
2702@example
2703@group
2704 | Task 1 | Task 2 | Total |
2705 |---------+----------+----------|
2706 | 2:12 | 1:47 | 03:59:00 |
2707 | 3:02:20 | -2:07:00 | 0.92 |
2708 #+TBLFM: @@2$3=$1+$2;T::@@3$3=$1+$2;t
2709@end group
2710@end example
2711
2712Input duration values must be of the form @code{[HH:MM[:SS]}, where seconds
2713are optional. With the @code{T} flag, computed durations will be displayed
8c8b834f 2714as @code{HH:MM:SS} (see the first formula above). With the @code{t} flag,
ce57c2fe
BG
2715computed durations will be displayed according to the value of the variable
2716@code{org-table-duration-custom-format}, which defaults to @code{'hours} and
2717will display the result as a fraction of hours (see the second formula in the
2718example above).
2719
2720Negative duration values can be manipulated as well, and integers will be
2721considered as seconds in addition and subtraction.
2722
2723@node Field and range formulas, Column formulas, Durations and time values, The spreadsheet
2724@subsection Field and range formulas
4009494e 2725@cindex field formula
ce57c2fe 2726@cindex range formula
4009494e 2727@cindex formula, for individual table field
ce57c2fe 2728@cindex formula, for range of fields
4009494e 2729
ce57c2fe
BG
2730To assign a formula to a particular field, type it directly into the field,
2731preceded by @samp{:=}, for example @samp{:=vsum(@@II..III)}. When you press
2732@key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the field,
2733the formula will be stored as the formula for this field, evaluated, and the
2734current field will be replaced with the result.
4009494e 2735
c8d0cf5c 2736@cindex #+TBLFM
ce57c2fe
BG
2737Formulas are stored in a special line starting with @samp{#+TBLFM:} directly
2738below the table. If you type the equation in the 4th field of the 3rd data
2739line in the table, the formula will look like @samp{@@3$4=$1+$2}. When
2740inserting/deleting/swapping column and rows with the appropriate commands,
2741@i{absolute references} (but not relative ones) in stored formulas are
2742modified in order to still reference the same field. To avoid this from
2743happening, in particular in range references, anchor ranges at the table
2744borders (using @code{@@<}, @code{@@>}, @code{$<}, @code{$>}), or at hlines
2745using the @code{@@I} notation. Automatic adaptation of field references does
8223b1d2 2746of course not happen if you edit the table structure with normal editing
ce57c2fe
BG
2747commands---then you must fix the equations yourself.
2748
2749Instead of typing an equation into the field, you may also use the following
2750command
4009494e
GM
2751
2752@table @kbd
acedf35c 2753@orgcmd{C-u C-c =,org-table-eval-formula}
4009494e 2754Install a new formula for the current field. The command prompts for a
c8d0cf5c
CD
2755formula with default taken from the @samp{#+TBLFM:} line, applies
2756it to the current field, and stores it.
4009494e
GM
2757@end table
2758
ce57c2fe
BG
2759The left-hand side of a formula can also be a special expression in order to
2760assign the formula to a number of different fields. There is no keyboard
2761shortcut to enter such range formulas. To add them, use the formula editor
2762(@pxref{Editing and debugging formulas}) or edit the @code{#+TBLFM:} line
2763directly.
2764
2765@table @code
2766@item $2=
2767Column formula, valid for the entire column. This is so common that Org
2768treats these formulas in a special way, see @ref{Column formulas}.
2769@item @@3=
2770Row formula, applies to all fields in the specified row. @code{@@>=} means
2771the last row.
2772@item @@1$2..@@4$3=
2773Range formula, applies to all fields in the given rectangular range. This
2774can also be used to assign a formula to some but not all fields in a row.
2775@item $name=
2776Named field, see @ref{Advanced features}.
2777@end table
2778
2779@node Column formulas, Editing and debugging formulas, Field and range formulas, The spreadsheet
4009494e
GM
2780@subsection Column formulas
2781@cindex column formula
2782@cindex formula, for table column
2783
ce57c2fe
BG
2784When you assign a formula to a simple column reference like @code{$3=}, the
2785same formula will be used in all fields of that column, with the following
2786very convenient exceptions: (i) If the table contains horizontal separator
2787hlines, everything before the first such line is considered part of the table
2788@emph{header} and will not be modified by column formulas. (ii) Fields that
2789already get a value from a field/range formula will be left alone by column
2790formulas. These conditions make column formulas very easy to use.
4009494e
GM
2791
2792To assign a formula to a column, type it directly into any field in the
2793column, preceded by an equal sign, like @samp{=$1+$2}. When you press
c8d0cf5c
CD
2794@key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the field,
2795the formula will be stored as the formula for the current column, evaluated
2796and the current field replaced with the result. If the field contains only
2797@samp{=}, the previously stored formula for this column is used. For each
2798column, Org will only remember the most recently used formula. In the
ce57c2fe
BG
2799@samp{#+TBLFM:} line, column formulas will look like @samp{$4=$1+$2}. The
2800left-hand side of a column formula can not be the name of column, it must be
2801the numeric column reference or @code{$>}.
4009494e
GM
2802
2803Instead of typing an equation into the field, you may also use the
2804following command:
2805
2806@table @kbd
acedf35c 2807@orgcmd{C-c =,org-table-eval-formula}
a7808fba
CD
2808Install a new formula for the current column and replace current field with
2809the result of the formula. The command prompts for a formula, with default
2810taken from the @samp{#+TBLFM} line, applies it to the current field and
1df7defd 2811stores it. With a numeric prefix argument(e.g., @kbd{C-5 C-c =}) the command
4009494e
GM
2812will apply it to that many consecutive fields in the current column.
2813@end table
2814
4009494e 2815@node Editing and debugging formulas, Updating the table, Column formulas, The spreadsheet
a7808fba 2816@subsection Editing and debugging formulas
4009494e
GM
2817@cindex formula editing
2818@cindex editing, of table formulas
2819
c8d0cf5c 2820@vindex org-table-use-standard-references
4009494e 2821You can edit individual formulas in the minibuffer or directly in the
a7808fba
CD
2822field. Org can also prepare a special buffer with all active
2823formulas of a table. When offering a formula for editing, Org
4009494e
GM
2824converts references to the standard format (like @code{B3} or @code{D&})
2825if possible. If you prefer to only work with the internal format (like
2826@code{@@3$2} or @code{$4}), configure the variable
2827@code{org-table-use-standard-references}.
2828
2829@table @kbd
acedf35c 2830@orgcmdkkc{C-c =,C-u C-c =,org-table-eval-formula}
4009494e 2831Edit the formula associated with the current column/field in the
ce57c2fe 2832minibuffer. See @ref{Column formulas}, and @ref{Field and range formulas}.
acedf35c 2833@orgcmd{C-u C-u C-c =,org-table-eval-formula}
4009494e
GM
2834Re-insert the active formula (either a
2835field formula, or a column formula) into the current field, so that you
2836can edit it directly in the field. The advantage over editing in the
2837minibuffer is that you can use the command @kbd{C-c ?}.
acedf35c 2838@orgcmd{C-c ?,org-table-field-info}
4009494e
GM
2839While editing a formula in a table field, highlight the field(s)
2840referenced by the reference at the cursor position in the formula.
2841@kindex C-c @}
acedf35c 2842@findex org-table-toggle-coordinate-overlays
4009494e 2843@item C-c @}
acedf35c
CD
2844Toggle the display of row and column numbers for a table, using overlays
2845(@command{org-table-toggle-coordinate-overlays}). These are updated each
2846time the table is aligned; you can force it with @kbd{C-c C-c}.
4009494e 2847@kindex C-c @{
acedf35c 2848@findex org-table-toggle-formula-debugger
4009494e 2849@item C-c @{
acedf35c
CD
2850Toggle the formula debugger on and off
2851(@command{org-table-toggle-formula-debugger}). See below.
2852@orgcmd{C-c ',org-table-edit-formulas}
4009494e
GM
2853Edit all formulas for the current table in a special buffer, where the
2854formulas will be displayed one per line. If the current field has an
2855active formula, the cursor in the formula editor will mark it.
a7808fba 2856While inside the special buffer, Org will automatically highlight
4009494e
GM
2857any field or range reference at the cursor position. You may edit,
2858remove and add formulas, and use the following commands:
2859@table @kbd
acedf35c 2860@orgcmdkkc{C-c C-c,C-x C-s,org-table-fedit-finish}
4009494e
GM
2861Exit the formula editor and store the modified formulas. With @kbd{C-u}
2862prefix, also apply the new formulas to the entire table.
acedf35c 2863@orgcmd{C-c C-q,org-table-fedit-abort}
4009494e 2864Exit the formula editor without installing changes.
acedf35c 2865@orgcmd{C-c C-r,org-table-fedit-toggle-ref-type}
4009494e
GM
2866Toggle all references in the formula editor between standard (like
2867@code{B3}) and internal (like @code{@@3$2}).
acedf35c 2868@orgcmd{@key{TAB},org-table-fedit-lisp-indent}
c8d0cf5c
CD
2869Pretty-print or indent Lisp formula at point. When in a line containing
2870a Lisp formula, format the formula according to Emacs Lisp rules.
4009494e 2871Another @key{TAB} collapses the formula back again. In the open
c8d0cf5c 2872formula, @key{TAB} re-indents just like in Emacs Lisp mode.
acedf35c 2873@orgcmd{M-@key{TAB},lisp-complete-symbol}
c8d0cf5c 2874Complete Lisp symbols, just like in Emacs Lisp mode.
4009494e
GM
2875@kindex S-@key{up}
2876@kindex S-@key{down}
2877@kindex S-@key{left}
2878@kindex S-@key{right}
acedf35c
CD
2879@findex org-table-fedit-ref-up
2880@findex org-table-fedit-ref-down
2881@findex org-table-fedit-ref-left
2882@findex org-table-fedit-ref-right
4009494e
GM
2883@item S-@key{up}/@key{down}/@key{left}/@key{right}
2884Shift the reference at point. For example, if the reference is
2885@code{B3} and you press @kbd{S-@key{right}}, it will become @code{C3}.
c8d0cf5c 2886This also works for relative references and for hline references.
acedf35c 2887@orgcmdkkcc{M-S-@key{up},M-S-@key{down},org-table-fedit-line-up,org-table-fedit-line-down}
a7808fba 2888Move the test line for column formulas in the Org buffer up and
4009494e 2889down.
acedf35c 2890@orgcmdkkcc{M-@key{up},M-@key{down},org-table-fedit-scroll-down,org-table-fedit-scroll-up}
4009494e
GM
2891Scroll the window displaying the table.
2892@kindex C-c @}
acedf35c 2893@findex org-table-toggle-coordinate-overlays
4009494e
GM
2894@item C-c @}
2895Turn the coordinate grid in the table on and off.
2896@end table
2897@end table
2898
2899Making a table field blank does not remove the formula associated with
c8d0cf5c
CD
2900the field, because that is stored in a different line (the @samp{#+TBLFM}
2901line)---during the next recalculation the field will be filled again.
4009494e
GM
2902To remove a formula from a field, you have to give an empty reply when
2903prompted for the formula, or to edit the @samp{#+TBLFM} line.
2904
2905@kindex C-c C-c
2906You may edit the @samp{#+TBLFM} directly and re-apply the changed
c8d0cf5c 2907equations with @kbd{C-c C-c} in that line or with the normal
4009494e
GM
2908recalculation commands in the table.
2909
2910@subsubheading Debugging formulas
2911@cindex formula debugging
2912@cindex debugging, of table formulas
2913When the evaluation of a formula leads to an error, the field content
2914becomes the string @samp{#ERROR}. If you would like see what is going
2915on during variable substitution and calculation in order to find a bug,
2916turn on formula debugging in the @code{Tbl} menu and repeat the
2917calculation, for example by pressing @kbd{C-u C-u C-c = @key{RET}} in a
2918field. Detailed information will be displayed.
2919
2920@node Updating the table, Advanced features, Editing and debugging formulas, The spreadsheet
a7808fba 2921@subsection Updating the table
4009494e
GM
2922@cindex recomputing table fields
2923@cindex updating, table
2924
2925Recalculation of a table is normally not automatic, but needs to be
c8d0cf5c
CD
2926triggered by a command. See @ref{Advanced features}, for a way to make
2927recalculation at least semi-automatic.
4009494e
GM
2928
2929In order to recalculate a line of a table or the entire table, use the
2930following commands:
2931
2932@table @kbd
acedf35c 2933@orgcmd{C-c *,org-table-recalculate}
4009494e 2934Recalculate the current row by first applying the stored column formulas
ce57c2fe 2935from left to right, and all field/range formulas in the current row.
4009494e
GM
2936@c
2937@kindex C-u C-c *
2938@item C-u C-c *
2939@kindex C-u C-c C-c
2940@itemx C-u C-c C-c
2941Recompute the entire table, line by line. Any lines before the first
2942hline are left alone, assuming that these are part of the table header.
2943@c
acedf35c 2944@orgcmdkkc{C-u C-u C-c *,C-u C-u C-c C-c,org-table-iterate}
4009494e
GM
2945Iterate the table by recomputing it until no further changes occur.
2946This may be necessary if some computed fields use the value of other
2947fields that are computed @i{later} in the calculation sequence.
86fbb8ca 2948@item M-x org-table-recalculate-buffer-tables
acedf35c 2949@findex org-table-recalculate-buffer-tables
86fbb8ca
CD
2950Recompute all tables in the current buffer.
2951@item M-x org-table-iterate-buffer-tables
acedf35c 2952@findex org-table-iterate-buffer-tables
86fbb8ca
CD
2953Iterate all tables in the current buffer, in order to converge table-to-table
2954dependencies.
4009494e
GM
2955@end table
2956
2957@node Advanced features, , Updating the table, The spreadsheet
2958@subsection Advanced features
2959
e66ba1df
BG
2960If you want the recalculation of fields to happen automatically, or if you
2961want to be able to assign @i{names}@footnote{Such names must start by an
2962alphabetic character and use only alphanumeric/underscore characters.} to
2963fields and columns, you need to reserve the first column of the table for
2964special marking characters.
ce57c2fe 2965
4009494e 2966@table @kbd
acedf35c 2967@orgcmd{C-#,org-table-rotate-recalc-marks}
a351880d 2968Rotate the calculation mark in first column through the states @samp{ },
864c9740
CD
2969@samp{#}, @samp{*}, @samp{!}, @samp{$}. When there is an active region,
2970change all marks in the region.
4009494e
GM
2971@end table
2972
2973Here is an example of a table that collects exam results of students and
2974makes use of these features:
2975
2976@example
2977@group
2978|---+---------+--------+--------+--------+-------+------|
2979| | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
2980|---+---------+--------+--------+--------+-------+------|
2981| ! | | P1 | P2 | P3 | Tot | |
2982| # | Maximum | 10 | 15 | 25 | 50 | 10.0 |
2983| ^ | | m1 | m2 | m3 | mt | |
2984|---+---------+--------+--------+--------+-------+------|
2985| # | Peter | 10 | 8 | 23 | 41 | 8.2 |
4009494e
GM
2986| # | Sam | 2 | 4 | 3 | 9 | 1.8 |
2987|---+---------+--------+--------+--------+-------+------|
8223b1d2 2988| | Average | | | | 25.0 | |
4009494e
GM
2989| ^ | | | | | at | |
2990| $ | max=50 | | | | | |
2991|---+---------+--------+--------+--------+-------+------|
2992#+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(@@-II..@@-I);%.1f
2993@end group
2994@end example
2995
c8d0cf5c 2996@noindent @b{Important}: please note that for these special tables,
4009494e
GM
2997recalculating the table with @kbd{C-u C-c *} will only affect rows that
2998are marked @samp{#} or @samp{*}, and fields that have a formula assigned
2999to the field itself. The column formulas are not applied in rows with
3000empty first field.
3001
3002@cindex marking characters, tables
3003The marking characters have the following meaning:
3004@table @samp
3005@item !
3006The fields in this line define names for the columns, so that you may
3007refer to a column as @samp{$Tot} instead of @samp{$6}.
3008@item ^
3009This row defines names for the fields @emph{above} the row. With such
3010a definition, any formula in the table may use @samp{$m1} to refer to
3011the value @samp{10}. Also, if you assign a formula to a names field, it
3012will be stored as @samp{$name=...}.
3013@item _
3014Similar to @samp{^}, but defines names for the fields in the row
3015@emph{below}.
3016@item $
3017Fields in this row can define @emph{parameters} for formulas. For
3018example, if a field in a @samp{$} row contains @samp{max=50}, then
3019formulas in this table can refer to the value 50 using @samp{$max}.
3020Parameters work exactly like constants, only that they can be defined on
3021a per-table basis.
3022@item #
3023Fields in this row are automatically recalculated when pressing
3024@key{TAB} or @key{RET} or @kbd{S-@key{TAB}} in this row. Also, this row
3025is selected for a global recalculation with @kbd{C-u C-c *}. Unmarked
3026lines will be left alone by this command.
3027@item *
3028Selects this line for global recalculation with @kbd{C-u C-c *}, but
3029not for automatic recalculation. Use this when automatic
3030recalculation slows down editing too much.
3031@item
3032Unmarked lines are exempt from recalculation with @kbd{C-u C-c *}.
3033All lines that should be recalculated should be marked with @samp{#}
3034or @samp{*}.
3035@item /
3036Do not export this line. Useful for lines that contain the narrowing
6eb02347 3037@samp{<N>} markers or column group markers.
4009494e
GM
3038@end table
3039
c8d0cf5c
CD
3040Finally, just to whet your appetite for what can be done with the
3041fantastic @file{calc.el} package, here is a table that computes the Taylor
28a16a1b
CD
3042series of degree @code{n} at location @code{x} for a couple of
3043functions.
4009494e
GM
3044
3045@example
3046@group
3047|---+-------------+---+-----+--------------------------------------|
3048| | Func | n | x | Result |
3049|---+-------------+---+-----+--------------------------------------|
3050| # | exp(x) | 1 | x | 1 + x |
3051| # | exp(x) | 2 | x | 1 + x + x^2 / 2 |
3052| # | exp(x) | 3 | x | 1 + x + x^2 / 2 + x^3 / 6 |
3053| # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
3054| # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2 |
3055| * | tan(x) | 3 | x | 0.0175 x + 1.77e-6 x^3 |
3056|---+-------------+---+-----+--------------------------------------|
3057#+TBLFM: $5=taylor($2,$4,$3);n3
3058@end group
3059@end example
3060
c8d0cf5c
CD
3061@node Org-Plot, , The spreadsheet, Tables
3062@section Org-Plot
864c9740 3063@cindex graph, in tables
86fbb8ca 3064@cindex plot tables using Gnuplot
c8d0cf5c 3065@cindex #+PLOT
864c9740 3066
c8d0cf5c 3067Org-Plot can produce 2D and 3D graphs of information stored in org tables
71d35b24
CD
3068using @file{Gnuplot} @uref{http://www.gnuplot.info/} and @file{gnuplot-mode}
3069@uref{http://cars9.uchicago.edu/~ravel/software/gnuplot-mode.html}. To see
c8d0cf5c 3070this in action, ensure that you have both Gnuplot and Gnuplot mode installed
71d35b24 3071on your system, then call @code{org-plot/gnuplot} on the following table.
864c9740
CD
3072
3073@example
3074@group
3075#+PLOT: title:"Citas" ind:1 deps:(3) type:2d with:histograms set:"yrange [0:]"
3076| Sede | Max cites | H-index |
3077|-----------+-----------+---------|
3078| Chile | 257.72 | 21.39 |
3079| Leeds | 165.77 | 19.68 |
3080| Sao Paolo | 71.00 | 11.50 |
3081| Stockholm | 134.19 | 14.33 |
3082| Morelia | 257.56 | 17.67 |
3083@end group
3084@end example
3085
c8d0cf5c 3086Notice that Org Plot is smart enough to apply the table's headers as labels.
864c9740 3087Further control over the labels, type, content, and appearance of plots can
c8d0cf5c
CD
3088be exercised through the @code{#+PLOT:} lines preceding a table. See below
3089for a complete list of Org-plot options. For more information and examples
3090see the Org-plot tutorial at
ce57c2fe 3091@uref{http://orgmode.org/worg/org-tutorials/org-plot.html}.
864c9740
CD
3092
3093@subsubheading Plot Options
3094
3095@table @code
3096@item set
c8d0cf5c 3097Specify any @command{gnuplot} option to be set when graphing.
864c9740
CD
3098
3099@item title
3100Specify the title of the plot.
3101
3102@item ind
3103Specify which column of the table to use as the @code{x} axis.
3104
3105@item deps
c8d0cf5c 3106Specify the columns to graph as a Lisp style list, surrounded by parentheses
71d35b24 3107and separated by spaces for example @code{dep:(3 4)} to graph the third and
c8d0cf5c 3108fourth columns (defaults to graphing all other columns aside from the @code{ind}
71d35b24 3109column).
864c9740
CD
3110
3111@item type
3112Specify whether the plot will be @code{2d}, @code{3d}, or @code{grid}.
3113
3114@item with
3115Specify a @code{with} option to be inserted for every col being plotted
1df7defd 3116(e.g., @code{lines}, @code{points}, @code{boxes}, @code{impulses}, etc...).
223b43fa 3117Defaults to @code{lines}.
864c9740
CD
3118
3119@item file
c8d0cf5c 3120If you want to plot to a file, specify @code{"@var{path/to/desired/output-file}"}.
864c9740
CD
3121
3122@item labels
acedf35c
CD
3123List of labels to be used for the @code{deps} (defaults to the column headers
3124if they exist).
864c9740
CD
3125
3126@item line
c8d0cf5c 3127Specify an entire line to be inserted in the Gnuplot script.
864c9740
CD
3128
3129@item map
3130When plotting @code{3d} or @code{grid} types, set this to @code{t} to graph a
3131flat mapping rather than a @code{3d} slope.
3132
e45e3595 3133@item timefmt
e66ba1df 3134Specify format of Org mode timestamps as they will be parsed by Gnuplot.
223b43fa 3135Defaults to @samp{%Y-%m-%d-%H:%M:%S}.
e45e3595 3136
864c9740 3137@item script
c8d0cf5c
CD
3138If you want total control, you can specify a script file (place the file name
3139between double-quotes) which will be used to plot. Before plotting, every
864c9740 3140instance of @code{$datafile} in the specified script will be replaced with
c8d0cf5c 3141the path to the generated data file. Note: even if you set this option, you
864c9740
CD
3142may still want to specify the plot type, as that can impact the content of
3143the data file.
3144@end table
3145
a7808fba 3146@node Hyperlinks, TODO Items, Tables, Top
4009494e
GM
3147@chapter Hyperlinks
3148@cindex hyperlinks
3149
a7808fba 3150Like HTML, Org provides links inside a file, external links to
dbc28aaa 3151other files, Usenet articles, emails, and much more.
4009494e
GM
3152
3153@menu
c0468714
GM
3154* Link format:: How links in Org are formatted
3155* Internal links:: Links to other places in the current file
3156* External links:: URL-like links to the world
3157* Handling links:: Creating, inserting and following
3158* Using links outside Org:: Linking from my C source code?
3159* Link abbreviations:: Shortcuts for writing complex links
3160* Search options:: Linking to a specific location
3161* Custom searches:: When the default search is not enough
4009494e
GM
3162@end menu
3163
3164@node Link format, Internal links, Hyperlinks, Hyperlinks
3165@section Link format
3166@cindex link format
3167@cindex format, of links
3168
a7808fba 3169Org will recognize plain URL-like links and activate them as
4009494e
GM
3170clickable links. The general link format, however, looks like this:
3171
3172@example
28a16a1b 3173[[link][description]] @r{or alternatively} [[link]]
4009494e
GM
3174@end example
3175
c8d0cf5c 3176@noindent
a7808fba 3177Once a link in the buffer is complete (all brackets present), Org
4009494e
GM
3178will change the display so that @samp{description} is displayed instead
3179of @samp{[[link][description]]} and @samp{link} is displayed instead of
3180@samp{[[link]]}. Links will be highlighted in the face @code{org-link},
3181which by default is an underlined face. You can directly edit the
3182visible part of a link. Note that this can be either the @samp{link}
3183part (if there is no description) or the @samp{description} part. To
3184edit also the invisible @samp{link} part, use @kbd{C-c C-l} with the
3185cursor on the link.
3186
3187If you place the cursor at the beginning or just behind the end of the
3188displayed text and press @key{BACKSPACE}, you will remove the
3189(invisible) bracket at that location. This makes the link incomplete
3190and the internals are again displayed as plain text. Inserting the
3191missing bracket hides the link internals again. To show the
3192internal structure of all links, use the menu entry
3193@code{Org->Hyperlinks->Literal links}.
3194
3195@node Internal links, External links, Link format, Hyperlinks
3196@section Internal links
3197@cindex internal links
3198@cindex links, internal
3199@cindex targets, for links
3200
c8d0cf5c
CD
3201@cindex property, CUSTOM_ID
3202If the link does not look like a URL, it is considered to be internal in the
3203current file. The most important case is a link like
3204@samp{[[#my-custom-id]]} which will link to the entry with the
3205@code{CUSTOM_ID} property @samp{my-custom-id}. Such custom IDs are very good
3206for HTML export (@pxref{HTML export}) where they produce pretty section
3207links. You are responsible yourself to make sure these custom IDs are unique
3208in a file.
3209
3210Links such as @samp{[[My Target]]} or @samp{[[My Target][Find my target]]}
3211lead to a text search in the current file.
3212
3213The link can be followed with @kbd{C-c C-o} when the cursor is on the link,
3214or with a mouse click (@pxref{Handling links}). Links to custom IDs will
3215point to the corresponding headline. The preferred match for a text link is
3216a @i{dedicated target}: the same string in double angular brackets. Targets
3217may be located anywhere; sometimes it is convenient to put them into a
ce57c2fe 3218comment line. For example
4009494e
GM
3219
3220@example
3221# <<My Target>>
3222@end example
3223
3224@noindent In HTML export (@pxref{HTML export}), such targets will become
64fb801f
CD
3225named anchors for direct access through @samp{http} links@footnote{Note that
3226text before the first headline is usually not exported, so the first such
3227target should be after the first headline, or in the line directly before the
3228first headline.}.
4009494e 3229
afe98dfa
CD
3230If no dedicated target exists, Org will search for a headline that is exactly
3231the link text but may also include a TODO keyword and tags@footnote{To insert
3232a link targeting a headline, in-buffer completion can be used. Just type a
3233star followed by a few optional letters into the buffer and press
3234@kbd{M-@key{TAB}}. All headlines in the current buffer will be offered as
3235completions.}. In non-Org files, the search will look for the words in the
acedf35c 3236link text. In the above example the search would be for @samp{my target}.
4009494e 3237
a7808fba 3238Following a link pushes a mark onto Org's own mark ring. You can
4009494e
GM
3239return to the previous position with @kbd{C-c &}. Using this command
3240several times in direct succession goes back to positions recorded
3241earlier.
3242
3243@menu
c0468714 3244* Radio targets:: Make targets trigger links in plain text
4009494e
GM
3245@end menu
3246
3247@node Radio targets, , Internal links, Internal links
3248@subsection Radio targets
3249@cindex radio targets
3250@cindex targets, radio
3251@cindex links, radio targets
3252
a7808fba 3253Org can automatically turn any occurrences of certain target names
4009494e
GM
3254in normal text into a link. So without explicitly creating a link, the
3255text connects to the target radioing its position. Radio targets are
3256enclosed by triple angular brackets. For example, a target @samp{<<<My
3257Target>>>} causes each occurrence of @samp{my target} in normal text to
a7808fba 3258become activated as a link. The Org file is scanned automatically
4009494e
GM
3259for radio targets only when the file is first loaded into Emacs. To
3260update the target list during editing, press @kbd{C-c C-c} with the
3261cursor on or at a target.
3262
3263@node External links, Handling links, Internal links, Hyperlinks
3264@section External links
3265@cindex links, external
3266@cindex external links
3267@cindex links, external
a7808fba 3268@cindex Gnus links
4009494e 3269@cindex BBDB links
28a16a1b 3270@cindex IRC links
4009494e
GM
3271@cindex URL links
3272@cindex file links
3273@cindex VM links
3274@cindex RMAIL links
3275@cindex WANDERLUST links
3276@cindex MH-E links
3277@cindex USENET links
3278@cindex SHELL links
3279@cindex Info links
c8d0cf5c 3280@cindex Elisp links
4009494e 3281
a7808fba 3282Org supports links to files, websites, Usenet and email messages,
28a16a1b
CD
3283BBDB database entries and links to both IRC conversations and their
3284logs. External links are URL-like locators. They start with a short
3285identifying string followed by a colon. There can be no space after
3286the colon. The following list shows examples for each link type.
4009494e
GM
3287
3288@example
a7808fba 3289http://www.astro.uva.nl/~dominik @r{on the web}
86fbb8ca 3290doi:10.1000/182 @r{DOI for an electronic resource}
4009494e 3291file:/home/dominik/images/jupiter.jpg @r{file, absolute path}
44ce9197 3292/home/dominik/images/jupiter.jpg @r{same as above}
4009494e 3293file:papers/last.pdf @r{file, relative path}
44ce9197 3294./papers/last.pdf @r{same as above}
ed21c5c8
CD
3295file:/myself@@some.where:papers/last.pdf @r{file, path on remote machine}
3296/myself@@some.where:papers/last.pdf @r{same as above}
e66ba1df 3297file:sometextfile::NNN @r{file, jump to line number}
c8d0cf5c 3298file:projects.org @r{another Org file}
e66ba1df
BG
3299file:projects.org::some words @r{text search in Org file}@footnote{
3300The actual behavior of the search will depend on the value of
3301the variable @code{org-link-search-must-match-exact-headline}. If its value
3302is nil, then a fuzzy text search will be done. If it is t, then only the
3303exact headline will be matched. If the value is @code{'query-to-create},
3304then an exact headline will be searched; if it is not found, then the user
3305will be queried to create it.}
c8d0cf5c 3306file:projects.org::*task title @r{heading search in Org file}
e66ba1df
BG
3307file+sys:/path/to/file @r{open via OS, like double-click}
3308file+emacs:/path/to/file @r{force opening by Emacs}
3309docview:papers/last.pdf::NNN @r{open in doc-view mode at page}
55e0839d 3310id:B7423F4D-2E8A-471B-8810-C40F074717E9 @r{Link to heading by ID}
4009494e 3311news:comp.emacs @r{Usenet link}
55e0839d 3312mailto:adent@@galaxy.net @r{Mail link}
4009494e
GM
3313vm:folder @r{VM folder link}
3314vm:folder#id @r{VM message link}
55e0839d 3315vm://myself@@some.where.org/folder#id @r{VM on remote machine}
8223b1d2
BG
3316vm-imap:account:folder @r{VM IMAP folder link}
3317vm-imap:account:folder#id @r{VM IMAP message link}
4009494e
GM
3318wl:folder @r{WANDERLUST folder link}
3319wl:folder#id @r{WANDERLUST message link}
3320mhe:folder @r{MH-E folder link}
3321mhe:folder#id @r{MH-E message link}
3322rmail:folder @r{RMAIL folder link}
3323rmail:folder#id @r{RMAIL message link}
a7808fba
CD
3324gnus:group @r{Gnus group link}
3325gnus:group#id @r{Gnus article link}
64fb801f 3326bbdb:R.*Stallman @r{BBDB link (with regexp)}
28a16a1b 3327irc:/irc.com/#emacs/bob @r{IRC link}
e66ba1df 3328info:org#External links @r{Info node link}
4009494e 3329shell:ls *.org @r{A shell command}
c8d0cf5c 3330elisp:org-agenda @r{Interactive Elisp command}
64fb801f 3331elisp:(find-file-other-frame "Elisp.org") @r{Elisp form to evaluate}
4009494e
GM
3332@end example
3333
ce57c2fe
BG
3334For customizing Org to add new link types @ref{Adding hyperlink types}.
3335
4009494e 3336A link should be enclosed in double brackets and may contain a
a7808fba 3337descriptive text to be displayed instead of the URL (@pxref{Link
4009494e
GM
3338format}), for example:
3339
3340@example
3341[[http://www.gnu.org/software/emacs/][GNU Emacs]]
3342@end example
3343
3344@noindent
3345If the description is a file name or URL that points to an image, HTML
3346export (@pxref{HTML export}) will inline the image as a clickable
3347button. If there is no description at all and the link points to an
3348image,
3349that image will be inlined into the exported HTML file.
3350
c8d0cf5c 3351@cindex square brackets, around links
4009494e 3352@cindex plain text external links
a7808fba 3353Org also finds external links in the normal text and activates them
4009494e
GM
3354as links. If spaces must be part of the link (for example in
3355@samp{bbdb:Richard Stallman}), or if you need to remove ambiguities
c8d0cf5c 3356about the end of the link, enclose them in square brackets.
4009494e 3357
a7808fba 3358@node Handling links, Using links outside Org, External links, Hyperlinks
4009494e
GM
3359@section Handling links
3360@cindex links, handling
3361
a7808fba
CD
3362Org provides methods to create a link in the correct syntax, to
3363insert it into an Org file, and to follow the link.
4009494e
GM
3364
3365@table @kbd
acedf35c 3366@orgcmd{C-c l,org-store-link}
4009494e 3367@cindex storing links
55e0839d
CD
3368Store a link to the current location. This is a @emph{global} command (you
3369must create the key binding yourself) which can be used in any buffer to
3370create a link. The link will be stored for later insertion into an Org
c8d0cf5c
CD
3371buffer (see below). What kind of link will be created depends on the current
3372buffer:
55e0839d 3373
e66ba1df 3374@b{Org mode buffers}@*
55e0839d 3375For Org files, if there is a @samp{<<target>>} at the cursor, the link points
c8d0cf5c 3376to the target. Otherwise it points to the current headline, which will also
ce57c2fe
BG
3377be the description@footnote{If the headline contains a timestamp, it will be
3378removed from the link and result in a wrong link -- you should avoid putting
3379timestamp in the headline.}.
c8d0cf5c
CD
3380
3381@vindex org-link-to-org-use-id
3382@cindex property, CUSTOM_ID
3383@cindex property, ID
3384If the headline has a @code{CUSTOM_ID} property, a link to this custom ID
3385will be stored. In addition or alternatively (depending on the value of
3386@code{org-link-to-org-use-id}), a globally unique @code{ID} property will be
3387created and/or used to construct a link. So using this command in Org
3388buffers will potentially create two links: a human-readable from the custom
3389ID, and one that is globally unique and works even if the entry is moved from
3390file to file. Later, when inserting the link, you need to decide which one
3391to use.
3392
3393@b{Email/News clients: VM, Rmail, Wanderlust, MH-E, Gnus}@*
3394Pretty much all Emacs mail clients are supported. The link will point to the
3395current article, or, in some GNUS buffers, to the group. The description is
3396constructed from the author and the subject.
3397
3398@b{Web browsers: W3 and W3M}@*
3399Here the link will be the current URL, with the page title as description.
3400
3401@b{Contacts: BBDB}@*
3402Links created in a BBDB buffer will point to the current entry.
3403
3404@b{Chat: IRC}@*
3405@vindex org-irc-link-to-logs
3406For IRC links, if you set the variable @code{org-irc-link-to-logs} to
3407@code{t}, a @samp{file:/} style link to the relevant point in the logs for
3408the current conversation is created. Otherwise an @samp{irc:/} style link to
3409the user/channel/server under the point will be stored.
3410
3411@b{Other files}@*
55e0839d
CD
3412For any other files, the link will point to the file, with a search string
3413(@pxref{Search options}) pointing to the contents of the current line. If
3414there is an active region, the selected words will form the basis of the
3415search string. If the automatically created link is not working correctly or
3416accurately enough, you can write custom functions to select the search string
c8d0cf5c
CD
3417and to do the search for particular file types---see @ref{Custom searches}.
3418The key binding @kbd{C-c l} is only a suggestion---see @ref{Installation}.
7006d207
CD
3419
3420@b{Agenda view}@*
3421When the cursor is in an agenda view, the created link points to the
3422entry referenced by the current line.
3423
4009494e 3424@c
acedf35c 3425@orgcmd{C-c C-l,org-insert-link}
4009494e
GM
3426@cindex link completion
3427@cindex completion, of links
3428@cindex inserting links
c8d0cf5c
CD
3429@vindex org-keep-stored-link-after-insertion
3430Insert a link@footnote{ Note that you don't have to use this command to
3431insert a link. Links in Org are plain text, and you can type or paste them
3432straight into the buffer. By using this command, the links are automatically
3433enclosed in double brackets, and you will be asked for the optional
3434descriptive text.}. This prompts for a link to be inserted into the buffer.
3435You can just type a link, using text for an internal link, or one of the link
3436type prefixes mentioned in the examples above. The link will be inserted
3437into the buffer@footnote{After insertion of a stored link, the link will be
3438removed from the list of stored links. To keep it in the list later use, use
3439a triple @kbd{C-u} prefix argument to @kbd{C-c C-l}, or configure the option
a7808fba
CD
3440@code{org-keep-stored-link-after-insertion}.}, along with a descriptive text.
3441If some text was selected when this command is called, the selected text
c8d0cf5c
CD
3442becomes the default description.
3443
3444@b{Inserting stored links}@*
3445All links stored during the
3446current session are part of the history for this prompt, so you can access
3447them with @key{up} and @key{down} (or @kbd{M-p/n}).
3448
3449@b{Completion support}@* Completion with @key{TAB} will help you to insert
3450valid link prefixes like @samp{http:} or @samp{ftp:}, including the prefixes
3451defined through link abbreviations (@pxref{Link abbreviations}). If you
3452press @key{RET} after inserting only the @var{prefix}, Org will offer
3453specific completion support for some link types@footnote{This works by
3454calling a special function @code{org-PREFIX-complete-link}.} For
3455example, if you type @kbd{file @key{RET}}, file name completion (alternative
3456access: @kbd{C-u C-c C-l}, see below) will be offered, and after @kbd{bbdb
3457@key{RET}} you can complete contact names.
acedf35c 3458@orgkey C-u C-c C-l
4009494e
GM
3459@cindex file name completion
3460@cindex completion, of file names
4009494e
GM
3461When @kbd{C-c C-l} is called with a @kbd{C-u} prefix argument, a link to
3462a file will be inserted and you may use file name completion to select
3463the name of the file. The path to the file is inserted relative to the
c8d0cf5c 3464directory of the current Org file, if the linked file is in the current
a7808fba 3465directory or in a sub-directory of it, or if the path is written relative
4009494e
GM
3466to the current directory using @samp{../}. Otherwise an absolute path
3467is used, if possible with @samp{~/} for your home directory. You can
3468force an absolute path with two @kbd{C-u} prefixes.
3469@c
86fbb8ca 3470@item C-c C-l @ @r{(with cursor on existing link)}
4009494e
GM
3471When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the
3472link and description parts of the link.
3473@c
3474@cindex following links
acedf35c 3475@orgcmd{C-c C-o,org-open-at-point}
c8d0cf5c 3476@vindex org-file-apps
e66ba1df 3477@vindex org-link-frame-setup
4009494e 3478Open link at point. This will launch a web browser for URLs (using
864c9740
CD
3479@command{browse-url-at-point}), run VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for
3480the corresponding links, and execute the command in a shell link. When the
04d3bb6c 3481cursor is on an internal link, this command runs the corresponding search.
864c9740 3482When the cursor is on a TAG list in a headline, it creates the corresponding
c8d0cf5c 3483TAGS view. If the cursor is on a timestamp, it compiles the agenda for that
864c9740
CD
3484date. Furthermore, it will visit text and remote files in @samp{file:} links
3485with Emacs and select a suitable application for local non-text files.
3486Classification of files is based on file extension only. See option
3487@code{org-file-apps}. If you want to override the default application and
e45e3595 3488visit the file with Emacs, use a @kbd{C-u} prefix. If you want to avoid
6eb02347
CD
3489opening in Emacs, use a @kbd{C-u C-u} prefix.@*
3490If the cursor is on a headline, but not on a link, offer all links in the
e66ba1df
BG
3491headline and entry text. If you want to setup the frame configuration for
3492following links, customize @code{org-link-frame-setup}.
3493
acedf35c
CD
3494@orgkey @key{RET}
3495@vindex org-return-follows-link
3496When @code{org-return-follows-link} is set, @kbd{@key{RET}} will also follow
3497the link at point.
4009494e
GM
3498@c
3499@kindex mouse-2
3500@kindex mouse-1
3501@item mouse-2
3502@itemx mouse-1
3503On links, @kbd{mouse-2} will open the link just as @kbd{C-c C-o}
acedf35c 3504would. Under Emacs 22 and later, @kbd{mouse-1} will also follow a link.
4009494e
GM
3505@c
3506@kindex mouse-3
3507@item mouse-3
c8d0cf5c 3508@vindex org-display-internal-link-with-indirect-buffer
4009494e
GM
3509Like @kbd{mouse-2}, but force file links to be opened with Emacs, and
3510internal links to be displayed in another window@footnote{See the
3511variable @code{org-display-internal-link-with-indirect-buffer}}.
3512@c
acedf35c 3513@orgcmd{C-c C-x C-v,org-toggle-inline-images}
86fbb8ca
CD
3514@cindex inlining images
3515@cindex images, inlining
afe98dfa
CD
3516@vindex org-startup-with-inline-images
3517@cindex @code{inlineimages}, STARTUP keyword
3518@cindex @code{noinlineimages}, STARTUP keyword
86fbb8ca 3519Toggle the inline display of linked images. Normally this will only inline
1df7defd 3520images that have no description part in the link, i.e., images that will also
86fbb8ca 3521be inlined during export. When called with a prefix argument, also display
afe98dfa
CD
3522images that do have a link description. You can ask for inline images to be
3523displayed at startup by configuring the variable
3524@code{org-startup-with-inline-images}@footnote{with corresponding
3525@code{#+STARTUP} keywords @code{inlineimages} and @code{inlineimages}}.
acedf35c 3526@orgcmd{C-c %,org-mark-ring-push}
4009494e 3527@cindex mark ring
4009494e 3528Push the current position onto the mark ring, to be able to return
ce57c2fe 3529easily. Commands following an internal link do this automatically.
4009494e 3530@c
acedf35c 3531@orgcmd{C-c &,org-mark-ring-goto}
4009494e 3532@cindex links, returning to
4009494e
GM
3533Jump back to a recorded position. A position is recorded by the
3534commands following internal links, and by @kbd{C-c %}. Using this
3535command several times in direct succession moves through a ring of
3536previously recorded positions.
3537@c
acedf35c 3538@orgcmdkkcc{C-c C-x C-n,C-c C-x C-p,org-next-link,org-previous-link}
4009494e 3539@cindex links, finding next/previous
4009494e
GM
3540Move forward/backward to the next link in the buffer. At the limit of
3541the buffer, the search fails once, and then wraps around. The key
acedf35c 3542bindings for this are really too long; you might want to bind this also
4009494e
GM
3543to @kbd{C-n} and @kbd{C-p}
3544@lisp
3545(add-hook 'org-load-hook
3546 (lambda ()
ce57c2fe
BG
3547 (define-key org-mode-map "\C-n" 'org-next-link)
3548 (define-key org-mode-map "\C-p" 'org-previous-link)))
4009494e
GM
3549@end lisp
3550@end table
3551
a7808fba
CD
3552@node Using links outside Org, Link abbreviations, Handling links, Hyperlinks
3553@section Using links outside Org
4009494e 3554
a7808fba
CD
3555You can insert and follow links that have Org syntax not only in
3556Org, but in any Emacs buffer. For this, you should create two
4009494e
GM
3557global commands, like this (please select suitable global keys
3558yourself):
3559
3560@lisp
3561(global-set-key "\C-c L" 'org-insert-link-global)
3562(global-set-key "\C-c o" 'org-open-at-point-global)
3563@end lisp
3564
a7808fba 3565@node Link abbreviations, Search options, Using links outside Org, Hyperlinks
4009494e
GM
3566@section Link abbreviations
3567@cindex link abbreviations
3568@cindex abbreviation, links
3569
3570Long URLs can be cumbersome to type, and often many similar links are
3571needed in a document. For this you can use link abbreviations. An
3572abbreviated link looks like this
3573
3574@example
3575[[linkword:tag][description]]
3576@end example
3577
3578@noindent
c8d0cf5c 3579@vindex org-link-abbrev-alist
86fbb8ca
CD
3580where the tag is optional.
3581The @i{linkword} must be a word, starting with a letter, followed by
3582letters, numbers, @samp{-}, and @samp{_}. Abbreviations are resolved
c8d0cf5c
CD
3583according to the information in the variable @code{org-link-abbrev-alist}
3584that relates the linkwords to replacement text. Here is an example:
4009494e 3585
afe98dfa 3586@smalllisp
4009494e
GM
3587@group
3588(setq org-link-abbrev-alist
8223b1d2
BG
3589 '(("bugzilla" . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
3590 ("url-to-ja" . "http://translate.google.fr/translate?sl=en&tl=ja&u=%h")
3591 ("google" . "http://www.google.com/search?q=")
3592 ("gmap" . "http://maps.google.com/maps?q=%s")
3593 ("omap" . "http://nominatim.openstreetmap.org/search?q=%s&polygon=1")
3594 ("ads" . "http://adsabs.harvard.edu/cgi-bin/nph-abs_connect?author=%s&db_key=AST")))
4009494e 3595@end group
afe98dfa 3596@end smalllisp
4009494e
GM
3597
3598If the replacement text contains the string @samp{%s}, it will be
8223b1d2
BG
3599replaced with the tag. Using @samp{%h} instead of @samp{%s} will
3600url-encode the tag (see the example above, where we need to encode
3601the URL parameter.) Using @samp{%(my-function)} will pass the tag
3602to a custom function, and replace it by the resulting string.
3603
3604If the replacement text don't contain any specifier, it will simply
3605be appended to the string in order to create the link.
3606
3607Instead of a string, you may also specify a function that will be
3608called with the tag as the only argument to create the link.
4009494e
GM
3609
3610With the above setting, you could link to a specific bug with
3611@code{[[bugzilla:129]]}, search the web for @samp{OrgMode} with
afe98dfa
CD
3612@code{[[google:OrgMode]]}, show the map location of the Free Software
3613Foundation @code{[[gmap:51 Franklin Street, Boston]]} or of Carsten office
3614@code{[[omap:Science Park 904, Amsterdam, The Netherlands]]} and find out
3615what the Org author is doing besides Emacs hacking with
3616@code{[[ads:Dominik,C]]}.
4009494e 3617
a7808fba 3618If you need special abbreviations just for a single Org buffer, you
4009494e
GM
3619can define them in the file with
3620
c8d0cf5c 3621@cindex #+LINK
4009494e
GM
3622@example
3623#+LINK: bugzilla http://10.1.2.9/bugzilla/show_bug.cgi?id=
3624#+LINK: google http://www.google.com/search?q=%s
3625@end example
3626
3627@noindent
c8d0cf5c
CD
3628In-buffer completion (@pxref{Completion}) can be used after @samp{[} to
3629complete link abbreviations. You may also define a function
1df7defd 3630@code{org-PREFIX-complete-link} that implements special (e.g., completion)
c8d0cf5c
CD
3631support for inserting such a link with @kbd{C-c C-l}. Such a function should
3632not accept any arguments, and return the full link with prefix.
4009494e
GM
3633
3634@node Search options, Custom searches, Link abbreviations, Hyperlinks
3635@section Search options in file links
3636@cindex search option in file links
3637@cindex file links, searching
3638
3639File links can contain additional information to make Emacs jump to a
3640particular location in the file when following a link. This can be a
3641line number or a search option after a double@footnote{For backward
ce57c2fe 3642compatibility, line numbers can also follow a single colon.} colon. For
4009494e
GM
3643example, when the command @kbd{C-c l} creates a link (@pxref{Handling
3644links}) to a file, it encodes the words in the current line as a search
3645string that can be used to find this line back later when following the
28a16a1b 3646link with @kbd{C-c C-o}.
4009494e
GM
3647
3648Here is the syntax of the different ways to attach a search to a file
3649link, together with an explanation:
3650
3651@example
3652[[file:~/code/main.c::255]]
3653[[file:~/xx.org::My Target]]
3654[[file:~/xx.org::*My Target]]
ed21c5c8 3655[[file:~/xx.org::#my-custom-id]]
4009494e
GM
3656[[file:~/xx.org::/regexp/]]
3657@end example
3658
3659@table @code
3660@item 255
3661Jump to line 255.
3662@item My Target
3663Search for a link target @samp{<<My Target>>}, or do a text search for
3664@samp{my target}, similar to the search in internal links, see
3665@ref{Internal links}. In HTML export (@pxref{HTML export}), such a file
8223b1d2 3666link will become a HTML reference to the corresponding named anchor in
4009494e
GM
3667the linked file.
3668@item *My Target
a7808fba 3669In an Org file, restrict search to headlines.
ed21c5c8
CD
3670@item #my-custom-id
3671Link to a heading with a @code{CUSTOM_ID} property
4009494e
GM
3672@item /regexp/
3673Do a regular expression search for @code{regexp}. This uses the Emacs
3674command @code{occur} to list all matches in a separate window. If the
e66ba1df 3675target file is in Org mode, @code{org-occur} is used to create a
4009494e
GM
3676sparse tree with the matches.
3677@c If the target file is a directory,
3678@c @code{grep} will be used to search all files in the directory.
3679@end table
3680
3681As a degenerate case, a file link with an empty file name can be used
3682to search the current file. For example, @code{[[file:::find me]]} does
3683a search for @samp{find me} in the current file, just as
3684@samp{[[find me]]} would.
3685
dbc28aaa 3686@node Custom searches, , Search options, Hyperlinks
4009494e
GM
3687@section Custom Searches
3688@cindex custom search strings
3689@cindex search strings, custom
3690
3691The default mechanism for creating search strings and for doing the
3692actual search related to a file link may not work correctly in all
c8d0cf5c 3693cases. For example, Bib@TeX{} database files have many entries like
4009494e 3694@samp{year="1993"} which would not result in good search strings,
c8d0cf5c 3695because the only unique identification for a Bib@TeX{} entry is the
4009494e
GM
3696citation key.
3697
c8d0cf5c
CD
3698@vindex org-create-file-search-functions
3699@vindex org-execute-file-search-functions
4009494e
GM
3700If you come across such a problem, you can write custom functions to set
3701the right search string for a particular file type, and to do the search
3702for the string in the file. Using @code{add-hook}, these functions need
3703to be added to the hook variables
3704@code{org-create-file-search-functions} and
3705@code{org-execute-file-search-functions}. See the docstring for these
a7808fba 3706variables for more information. Org actually uses this mechanism
4009494e 3707for Bib@TeX{} database files, and you can use the corresponding code as
44ce9197 3708an implementation example. See the file @file{org-bibtex.el}.
4009494e 3709
a7808fba 3710@node TODO Items, Tags, Hyperlinks, Top
86fbb8ca 3711@chapter TODO items
4009494e
GM
3712@cindex TODO items
3713
e66ba1df 3714Org mode does not maintain TODO lists as separate documents@footnote{Of
a50253cc 3715course, you can make a document that contains only long lists of TODO items,
44ce9197
CD
3716but this is not required.}. Instead, TODO items are an integral part of the
3717notes file, because TODO items usually come up while taking notes! With Org
3718mode, simply mark any entry in a tree as being a TODO item. In this way,
3719information is not duplicated, and the entire context from which the TODO
3720item emerged is always present.
4009494e 3721
dbc28aaa 3722Of course, this technique for managing TODO items scatters them
e66ba1df 3723throughout your notes file. Org mode compensates for this by providing
dbc28aaa 3724methods to give you an overview of all the things that you have to do.
4009494e
GM
3725
3726@menu
c0468714
GM
3727* TODO basics:: Marking and displaying TODO entries
3728* TODO extensions:: Workflow and assignments
3729* Progress logging:: Dates and notes for progress
3730* Priorities:: Some things are more important than others
3731* Breaking down tasks:: Splitting a task into manageable pieces
3732* Checkboxes:: Tick-off lists
4009494e
GM
3733@end menu
3734
a7808fba 3735@node TODO basics, TODO extensions, TODO Items, TODO Items
4009494e
GM
3736@section Basic TODO functionality
3737
dbc28aaa
CD
3738Any headline becomes a TODO item when it starts with the word
3739@samp{TODO}, for example:
4009494e
GM
3740
3741@example
3742*** TODO Write letter to Sam Fortune
3743@end example
3744
3745@noindent
3746The most important commands to work with TODO entries are:
3747
3748@table @kbd
acedf35c 3749@orgcmd{C-c C-t,org-todo}
4009494e 3750@cindex cycling, of TODO states
4009494e
GM
3751Rotate the TODO state of the current item among
3752
3753@example
3754,-> (unmarked) -> TODO -> DONE --.
3755'--------------------------------'
3756@end example
3757
3758The same rotation can also be done ``remotely'' from the timeline and
3759agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
dbc28aaa 3760
acedf35c 3761@orgkey{C-u C-c C-t}
dbc28aaa 3762Select a specific keyword using completion or (if it has been set up)
28a16a1b 3763the fast selection interface. For the latter, you need to assign keys
c8d0cf5c 3764to TODO states, see @ref{Per-file keywords}, and @ref{Setting tags}, for
28a16a1b 3765more information.
dbc28aaa 3766
4009494e
GM
3767@kindex S-@key{right}
3768@kindex S-@key{left}
acedf35c 3769@item S-@key{right} @ @r{/} @ S-@key{left}
c8d0cf5c 3770@vindex org-treat-S-cursor-todo-selection-as-state-change
dbc28aaa
CD
3771Select the following/preceding TODO state, similar to cycling. Useful
3772mostly if more than two TODO states are possible (@pxref{TODO
c8d0cf5c
CD
3773extensions}). See also @ref{Conflicts}, for a discussion of the interaction
3774with @code{shift-selection-mode}. See also the variable
3775@code{org-treat-S-cursor-todo-selection-as-state-change}.
bdebdb64 3776@orgcmd{C-c / t,org-show-todo-tree}
4009494e 3777@cindex sparse tree, for TODO
c8d0cf5c
CD
3778@vindex org-todo-keywords
3779View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}). Folds the
86fbb8ca
CD
3780entire buffer, but shows all TODO items (with not-DONE state) and the
3781headings hierarchy above them. With a prefix argument (or by using @kbd{C-c
1df7defd 3782/ T}), search for a specific TODO@. You will be prompted for the keyword, and
86fbb8ca 3783you can also give a list of keywords like @code{KWD1|KWD2|...} to list
ce57c2fe 3784entries that match any one of these keywords. With a numeric prefix argument
86fbb8ca
CD
3785N, show the tree for the Nth keyword in the variable
3786@code{org-todo-keywords}. With two prefix arguments, find all TODO states,
3787both un-done and done.
acedf35c 3788@orgcmd{C-c a t,org-todo-list}
86fbb8ca
CD
3789Show the global TODO list. Collects the TODO items (with not-DONE states)
3790from all agenda files (@pxref{Agenda Views}) into a single buffer. The new
3791buffer will be in @code{agenda-mode}, which provides commands to examine and
3792manipulate the TODO entries from the new buffer (@pxref{Agenda commands}).
3793@xref{Global TODO list}, for more information.
acedf35c 3794@orgcmd{S-M-@key{RET},org-insert-todo-heading}
4009494e
GM
3795Insert a new TODO entry below the current one.
3796@end table
3797
71d35b24 3798@noindent
c8d0cf5c 3799@vindex org-todo-state-tags-triggers
71d35b24
CD
3800Changing a TODO state can also trigger tag changes. See the docstring of the
3801option @code{org-todo-state-tags-triggers} for details.
3802
a7808fba 3803@node TODO extensions, Progress logging, TODO basics, TODO Items
4009494e
GM
3804@section Extended use of TODO keywords
3805@cindex extended TODO keywords
3806
c8d0cf5c 3807@vindex org-todo-keywords
dbc28aaa 3808By default, marked TODO entries have one of only two states: TODO and
1df7defd 3809DONE@. Org mode allows you to classify TODO items in more complex ways
dbc28aaa
CD
3810with @emph{TODO keywords} (stored in @code{org-todo-keywords}). With
3811special setup, the TODO keyword system can work differently in different
3812files.
4009494e
GM
3813
3814Note that @i{tags} are another way to classify headlines in general and
3815TODO items in particular (@pxref{Tags}).
3816
3817@menu
c0468714
GM
3818* Workflow states:: From TODO to DONE in steps
3819* TODO types:: I do this, Fred does the rest
3820* Multiple sets in one file:: Mixing it all, and still finding your way
3821* Fast access to TODO states:: Single letter selection of a state
3822* Per-file keywords:: Different files, different requirements
3823* Faces for TODO keywords:: Highlighting states
3824* TODO dependencies:: When one task needs to wait for others
4009494e
GM
3825@end menu
3826
3827@node Workflow states, TODO types, TODO extensions, TODO extensions
3828@subsection TODO keywords as workflow states
3829@cindex TODO workflow
3830@cindex workflow states as TODO keywords
3831
3832You can use TODO keywords to indicate different @emph{sequential} states
3833in the process of working on an item, for example@footnote{Changing
e66ba1df 3834this variable only becomes effective after restarting Org mode in a
4009494e
GM
3835buffer.}:
3836
3837@lisp
3838(setq org-todo-keywords
3839 '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
3840@end lisp
3841
3842The vertical bar separates the TODO keywords (states that @emph{need
44ce9197 3843action}) from the DONE states (which need @emph{no further action}). If
4009494e
GM
3844you don't provide the separator bar, the last state is used as the DONE
3845state.
3846@cindex completion, of TODO keywords
3847With this setup, the command @kbd{C-c C-t} will cycle an entry from TODO
1df7defd 3848to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED@. You may
a7808fba 3849also use a numeric prefix argument to quickly select a specific state. For
1df7defd 3850example @kbd{C-3 C-c C-t} will change the state immediately to VERIFY@.
560bb6ea 3851Or you can use @kbd{S-@key{left}} to go backward through the sequence. If you
28a16a1b
CD
3852define many keywords, you can use in-buffer completion
3853(@pxref{Completion}) or even a special one-key selection scheme
3854(@pxref{Fast access to TODO states}) to insert these words into the
a7808fba 3855buffer. Changing a TODO state can be logged with a timestamp, see
c8d0cf5c 3856@ref{Tracking TODO state changes}, for more information.
4009494e
GM
3857
3858@node TODO types, Multiple sets in one file, Workflow states, TODO extensions
3859@subsection TODO keywords as types
3860@cindex TODO types
3861@cindex names as TODO keywords
3862@cindex types as TODO keywords
3863
3864The second possibility is to use TODO keywords to indicate different
3865@emph{types} of action items. For example, you might want to indicate
3866that items are for ``work'' or ``home''. Or, when you work with several
3867people on a single project, you might want to assign action items
3868directly to persons, by using their names as TODO keywords. This would
3869be set up like this:
3870
3871@lisp
3872(setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
3873@end lisp
3874
3875In this case, different keywords do not indicate a sequence, but rather
3876different types. So the normal work flow would be to assign a task to a
1df7defd 3877person, and later to mark it DONE@. Org mode supports this style by adapting
a7808fba
CD
3878the workings of the command @kbd{C-c C-t}@footnote{This is also true for the
3879@kbd{t} command in the timeline and agenda buffers.}. When used several
3880times in succession, it will still cycle through all names, in order to first
3881select the right type for a task. But when you return to the item after some
3882time and execute @kbd{C-c C-t} again, it will switch from any name directly
1df7defd 3883to DONE@. Use prefix arguments or completion to quickly select a specific
a7808fba 3884name. You can also review the items of a specific TODO type in a sparse tree
86fbb8ca
CD
3885by using a numeric prefix to @kbd{C-c / t}. For example, to see all things
3886Lucy has to do, you would use @kbd{C-3 C-c / t}. To collect Lucy's items
a7808fba 3887from all agenda files into a single buffer, you would use the numeric prefix
86fbb8ca 3888argument as well when creating the global TODO list: @kbd{C-3 C-c a t}.
4009494e 3889
dbc28aaa 3890@node Multiple sets in one file, Fast access to TODO states, TODO types, TODO extensions
4009494e 3891@subsection Multiple keyword sets in one file
a7808fba 3892@cindex TODO keyword sets
4009494e
GM
3893
3894Sometimes you may want to use different sets of TODO keywords in
3895parallel. For example, you may want to have the basic
3896@code{TODO}/@code{DONE}, but also a workflow for bug fixing, and a
3897separate state indicating that an item has been canceled (so it is not
3898DONE, but also does not require action). Your setup would then look
3899like this:
3900
3901@lisp
3902(setq org-todo-keywords
3903 '((sequence "TODO" "|" "DONE")
3904 (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
3905 (sequence "|" "CANCELED")))
3906@end lisp
3907
e66ba1df 3908The keywords should all be different, this helps Org mode to keep track
4009494e
GM
3909of which subsequence should be used for a given entry. In this setup,
3910@kbd{C-c C-t} only operates within a subsequence, so it switches from
3911@code{DONE} to (nothing) to @code{TODO}, and from @code{FIXED} to
3912(nothing) to @code{REPORT}. Therefore you need a mechanism to initially
3913select the correct sequence. Besides the obvious ways like typing a
3914keyword or using completion, you may also apply the following commands:
3915
3916@table @kbd
3917@kindex C-S-@key{right}
3918@kindex C-S-@key{left}
3da3282e
CD
3919@kindex C-u C-u C-c C-t
3920@item C-u C-u C-c C-t
3921@itemx C-S-@key{right}
4009494e
GM
3922@itemx C-S-@key{left}
3923These keys jump from one TODO subset to the next. In the above example,
3da3282e
CD
3924@kbd{C-u C-u C-c C-t} or @kbd{C-S-@key{right}} would jump from @code{TODO} or
3925@code{DONE} to @code{REPORT}, and any of the words in the second row to
3926@code{CANCELED}. Note that the @kbd{C-S-} key binding conflict with
3927@code{shift-selection-mode} (@pxref{Conflicts}).
4009494e
GM
3928@kindex S-@key{right}
3929@kindex S-@key{left}
3930@item S-@key{right}
3931@itemx S-@key{left}
3da3282e
CD
3932@kbd{S-@key{<left>}} and @kbd{S-@key{<right>}} and walk through @emph{all}
3933keywords from all sets, so for example @kbd{S-@key{<right>}} would switch
3934from @code{DONE} to @code{REPORT} in the example above. See also
c8d0cf5c 3935@ref{Conflicts}, for a discussion of the interaction with
3da3282e 3936@code{shift-selection-mode}.
4009494e
GM
3937@end table
3938
dbc28aaa
CD
3939@node Fast access to TODO states, Per-file keywords, Multiple sets in one file, TODO extensions
3940@subsection Fast access to TODO states
3941
3942If you would like to quickly change an entry to an arbitrary TODO state
8223b1d2
BG
3943instead of cycling through the states, you can set up keys for single-letter
3944access to the states. This is done by adding the selection character after
3945each keyword, in parentheses@footnote{All characters are allowed except
3946@code{@@^!}, which have a special meaning here.}. For example:
dbc28aaa
CD
3947
3948@lisp
3949(setq org-todo-keywords
3950 '((sequence "TODO(t)" "|" "DONE(d)")
3951 (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
3952 (sequence "|" "CANCELED(c)")))
3953@end lisp
3954
c8d0cf5c 3955@vindex org-fast-tag-selection-include-todo
ce57c2fe
BG
3956If you then press @kbd{C-c C-t} followed by the selection key, the entry
3957will be switched to this state. @kbd{SPC} can be used to remove any TODO
55033558 3958keyword from an entry.@footnote{Check also the variable
c8d0cf5c 3959@code{org-fast-tag-selection-include-todo}, it allows you to change the TODO
55033558
CD
3960state through the tags interface (@pxref{Setting tags}), in case you like to
3961mingle the two concepts. Note that this means you need to come up with
3962unique keys across both sets of keywords.}
dbc28aaa
CD
3963
3964@node Per-file keywords, Faces for TODO keywords, Fast access to TODO states, TODO extensions
4009494e
GM
3965@subsection Setting up keywords for individual files
3966@cindex keyword options
dbc28aaa 3967@cindex per-file keywords
c8d0cf5c
CD
3968@cindex #+TODO
3969@cindex #+TYP_TODO
3970@cindex #+SEQ_TODO
4009494e
GM
3971
3972It can be very useful to use different aspects of the TODO mechanism in
3973different files. For file-local settings, you need to add special lines
3974to the file which set the keywords and interpretation for that file
3975only. For example, to set one of the two examples discussed above, you
3976need one of the following lines, starting in column zero anywhere in the
3977file:
3978
3979@example
c8d0cf5c 3980#+TODO: TODO FEEDBACK VERIFY | DONE CANCELED
4009494e 3981@end example
c8d0cf5c
CD
3982@noindent (you may also write @code{#+SEQ_TODO} to be explicit about the
3983interpretation, but it means the same as @code{#+TODO}), or
4009494e
GM
3984@example
3985#+TYP_TODO: Fred Sara Lucy Mike | DONE
3986@end example
3987
3988A setup for using several sets in parallel would be:
3989
3990@example
c8d0cf5c
CD
3991#+TODO: TODO | DONE
3992#+TODO: REPORT BUG KNOWNCAUSE | FIXED
3993#+TODO: | CANCELED
4009494e
GM
3994@end example
3995
3996@cindex completion, of option keywords
3997@kindex M-@key{TAB}
3998@noindent To make sure you are using the correct keyword, type
3999@samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
4000
4001@cindex DONE, final TODO keyword
4002Remember that the keywords after the vertical bar (or the last keyword
4003if no bar is there) must always mean that the item is DONE (although you
4004may use a different word). After changing one of these lines, use
4005@kbd{C-c C-c} with the cursor still in the line to make the changes
e66ba1df
BG
4006known to Org mode@footnote{Org mode parses these lines only when
4007Org mode is activated after visiting a file. @kbd{C-c C-c} with the
4008cursor in a line starting with @samp{#+} is simply restarting Org mode
4009494e
GM
4009for the current buffer.}.
4010
7ddb1b5f 4011@node Faces for TODO keywords, TODO dependencies, Per-file keywords, TODO extensions
dbc28aaa
CD
4012@subsection Faces for TODO keywords
4013@cindex faces, for TODO keywords
4014
c8d0cf5c
CD
4015@vindex org-todo @r{(face)}
4016@vindex org-done @r{(face)}
4017@vindex org-todo-keyword-faces
e66ba1df 4018Org mode highlights TODO keywords with special faces: @code{org-todo}
dbc28aaa
CD
4019for keywords indicating that an item still has to be acted upon, and
4020@code{org-done} for keywords indicating that an item is finished. If
4021you are using more than 2 different states, you might want to use
4022special faces for some of them. This can be done using the variable
4023@code{org-todo-keyword-faces}. For example:
4024
4025@lisp
96c8522a 4026@group
dbc28aaa 4027(setq org-todo-keyword-faces
ed21c5c8
CD
4028 '(("TODO" . org-warning) ("STARTED" . "yellow")
4029 ("CANCELED" . (:foreground "blue" :weight bold))))
96c8522a 4030@end group
dbc28aaa
CD
4031@end lisp
4032
ed21c5c8 4033While using a list with face properties as shown for CANCELED @emph{should}
27e428e7 4034work, this does not always seem to be the case. If necessary, define a
ed21c5c8
CD
4035special face and use that. A string is interpreted as a color. The variable
4036@code{org-faces-easy-properties} determines if that color is interpreted as a
4037foreground or a background color.
28a16a1b 4038
7ddb1b5f
CD
4039@node TODO dependencies, , Faces for TODO keywords, TODO extensions
4040@subsection TODO dependencies
2e461fc1
CD
4041@cindex TODO dependencies
4042@cindex dependencies, of TODO states
7ddb1b5f 4043
c8d0cf5c
CD
4044@vindex org-enforce-todo-dependencies
4045@cindex property, ORDERED
7ddb1b5f
CD
4046The structure of Org files (hierarchy and lists) makes it easy to define TODO
4047dependencies. Usually, a parent TODO task should not be marked DONE until
1df7defd 4048all subtasks (defined as children tasks) are marked as DONE@. And sometimes
7ddb1b5f
CD
4049there is a logical sequence to a number of (sub)tasks, so that one task
4050cannot be acted upon before all siblings above it are done. If you customize
4051the variable @code{org-enforce-todo-dependencies}, Org will block entries
1df7defd 4052from changing state to DONE while they have children that are not DONE@.
2e461fc1 4053Furthermore, if an entry has a property @code{ORDERED}, each of its children
1df7defd 4054will be blocked until all earlier siblings are marked DONE@. Here is an
2e461fc1 4055example:
7ddb1b5f
CD
4056
4057@example
4058* TODO Blocked until (two) is done
4059** DONE one
4060** TODO two
4061
4062* Parent
4063 :PROPERTIES:
ce57c2fe 4064 :ORDERED: t
7ddb1b5f
CD
4065 :END:
4066** TODO a
4067** TODO b, needs to wait for (a)
4068** TODO c, needs to wait for (a) and (b)
4069@end example
4070
bc283609 4071@table @kbd
acedf35c 4072@orgcmd{C-c C-x o,org-toggle-ordered-property}
c8d0cf5c
CD
4073@vindex org-track-ordered-property-with-tag
4074@cindex property, ORDERED
4075Toggle the @code{ORDERED} property of the current entry. A property is used
4076for this behavior because this should be local to the current entry, not
4077inherited like a tag. However, if you would like to @i{track} the value of
4078this property with a tag for better visibility, customize the variable
4079@code{org-track-ordered-property-with-tag}.
acedf35c 4080@orgkey{C-u C-u C-u C-c C-t}
c8d0cf5c 4081Change TODO state, circumventing any state blocking.
bc283609
CD
4082@end table
4083
c8d0cf5c 4084@vindex org-agenda-dim-blocked-tasks
7ddb1b5f
CD
4085If you set the variable @code{org-agenda-dim-blocked-tasks}, TODO entries
4086that cannot be closed because of such dependencies will be shown in a dimmed
4087font or even made invisible in agenda views (@pxref{Agenda Views}).
4088
2e461fc1 4089@cindex checkboxes and TODO dependencies
c8d0cf5c 4090@vindex org-enforce-todo-dependencies
2e461fc1
CD
4091You can also block changes of TODO states by looking at checkboxes
4092(@pxref{Checkboxes}). If you set the variable
4093@code{org-enforce-todo-checkbox-dependencies}, an entry that has unchecked
4094checkboxes will be blocked from switching to DONE.
4095
7ddb1b5f
CD
4096If you need more complex dependency structures, for example dependencies
4097between entries in different trees or files, check out the contributed
4098module @file{org-depend.el}.
4099
dbc28aaa 4100@page
a7808fba
CD
4101@node Progress logging, Priorities, TODO extensions, TODO Items
4102@section Progress logging
dbc28aaa
CD
4103@cindex progress logging
4104@cindex logging, of progress
4105
e66ba1df 4106Org mode can automatically record a timestamp and possibly a note when
28a16a1b
CD
4107you mark a TODO item as DONE, or even each time you change the state of
4108a TODO item. This system is highly configurable, settings can be on a
4109per-keyword basis and can be localized to a file or even a subtree. For
4110information on how to clock working time for a task, see @ref{Clocking
4111work time}.
dbc28aaa
CD
4112
4113@menu
c0468714
GM
4114* Closing items:: When was this entry marked DONE?
4115* Tracking TODO state changes:: When did the status change?
4116* Tracking your habits:: How consistent have you been?
dbc28aaa
CD
4117@end menu
4118
4119@node Closing items, Tracking TODO state changes, Progress logging, Progress logging
4120@subsection Closing items
4121
28a16a1b
CD
4122The most basic logging is to keep track of @emph{when} a certain TODO
4123item was finished. This is achieved with@footnote{The corresponding
acedf35c 4124in-buffer setting is: @code{#+STARTUP: logdone}}
dbc28aaa
CD
4125
4126@lisp
28a16a1b 4127(setq org-log-done 'time)
dbc28aaa
CD
4128@end lisp
4129
4130@noindent
28a16a1b
CD
4131Then each time you turn an entry from a TODO (not-done) state into any
4132of the DONE states, a line @samp{CLOSED: [timestamp]} will be inserted
4133just after the headline. If you turn the entry back into a TODO item
4134through further state cycling, that line will be removed again. If you
4135want to record a note along with the timestamp, use@footnote{The
4136corresponding in-buffer setting is: @code{#+STARTUP: lognotedone}}
dbc28aaa
CD
4137
4138@lisp
28a16a1b 4139(setq org-log-done 'note)
dbc28aaa
CD
4140@end lisp
4141
28a16a1b
CD
4142@noindent
4143You will then be prompted for a note, and that note will be stored below
4144the entry with a @samp{Closing Note} heading.
4145
4146In the timeline (@pxref{Timeline}) and in the agenda
a7808fba 4147(@pxref{Weekly/daily agenda}), you can then use the @kbd{l} key to
28a16a1b
CD
4148display the TODO items with a @samp{CLOSED} timestamp on each day,
4149giving you an overview of what has been done.
4150
a351880d 4151@node Tracking TODO state changes, Tracking your habits, Closing items, Progress logging
dbc28aaa 4152@subsection Tracking TODO state changes
c8d0cf5c
CD
4153@cindex drawer, for state change recording
4154
4155@vindex org-log-states-order-reversed
4156@vindex org-log-into-drawer
4157@cindex property, LOG_INTO_DRAWER
4158When TODO keywords are used as workflow states (@pxref{Workflow states}), you
4159might want to keep track of when a state change occurred and maybe take a
4160note about this change. You can either record just a timestamp, or a
4161time-stamped note for a change. These records will be inserted after the
4162headline as an itemized list, newest first@footnote{See the variable
4163@code{org-log-states-order-reversed}}. When taking a lot of notes, you might
4164want to get the notes out of the way into a drawer (@pxref{Drawers}).
8223b1d2
BG
4165Customize the variable @code{org-log-into-drawer} to get this behavior---the
4166recommended drawer for this is called @code{LOGBOOK}@footnote{Note that the
4167@code{LOGBOOK} drawer is unfolded when pressing @key{SPC} in the agenda to
4168show an entry---use @key{C-u SPC} to keep it folded here}. You can also
4169overrule the setting of this variable for a subtree by setting a
c8d0cf5c
CD
4170@code{LOG_INTO_DRAWER} property.
4171
e66ba1df 4172Since it is normally too much to record a note for every state, Org mode
c8d0cf5c 4173expects configuration on a per-keyword basis for this. This is achieved by
e66ba1df
BG
4174adding special markers @samp{!} (for a timestamp) or @samp{@@} (for a note
4175with timestamp) in parentheses after each keyword. For example, with the
4176setting
dbc28aaa
CD
4177
4178@lisp
28a16a1b
CD
4179(setq org-todo-keywords
4180 '((sequence "TODO(t)" "WAIT(w@@/!)" "|" "DONE(d!)" "CANCELED(c@@)")))
dbc28aaa
CD
4181@end lisp
4182
e66ba1df
BG
4183To record a timestamp without a note for TODO keywords configured with
4184@samp{@@}, just type @kbd{C-c C-c} to enter a blank note when prompted.
4185
dbc28aaa 4186@noindent
c8d0cf5c 4187@vindex org-log-done
28a16a1b 4188you not only define global TODO keywords and fast access keys, but also
c8d0cf5c 4189request that a time is recorded when the entry is set to
e66ba1df 4190DONE@footnote{It is possible that Org mode will record two timestamps
28a16a1b 4191when you are using both @code{org-log-done} and state change logging.
c8d0cf5c 4192However, it will never prompt for two notes---if you have configured
28a16a1b
CD
4193both, the state change recording note will take precedence and cancel
4194the @samp{Closing Note}.}, and that a note is recorded when switching to
1df7defd 4195WAIT or CANCELED@. The setting for WAIT is even more special: the
28a16a1b 4196@samp{!} after the slash means that in addition to the note taken when
c8d0cf5c 4197entering the state, a timestamp should be recorded when @i{leaving} the
28a16a1b
CD
4198WAIT state, if and only if the @i{target} state does not configure
4199logging for entering it. So it has no effect when switching from WAIT
4200to DONE, because DONE is configured to record a timestamp only. But
4201when switching from WAIT back to TODO, the @samp{/!} in the WAIT
4202setting now triggers a timestamp even though TODO has no logging
4203configured.
4204
4205You can use the exact same syntax for setting logging preferences local
4206to a buffer:
4207@example
c8d0cf5c 4208#+TODO: TODO(t) WAIT(w@@/!) | DONE(d!) CANCELED(c@@)
28a16a1b
CD
4209@end example
4210
c8d0cf5c 4211@cindex property, LOGGING
28a16a1b
CD
4212In order to define logging settings that are local to a subtree or a
4213single item, define a LOGGING property in this entry. Any non-empty
4214LOGGING property resets all logging settings to nil. You may then turn
4215on logging for this specific tree using STARTUP keywords like
4216@code{lognotedone} or @code{logrepeat}, as well as adding state specific
4217settings like @code{TODO(!)}. For example
4218
4219@example
4220* TODO Log each state with only a time
4221 :PROPERTIES:
4222 :LOGGING: TODO(!) WAIT(!) DONE(!) CANCELED(!)
4223 :END:
4224* TODO Only log when switching to WAIT, and when repeating
4225 :PROPERTIES:
4226 :LOGGING: WAIT(@@) logrepeat
4227 :END:
4228* TODO No logging at all
4229 :PROPERTIES:
4230 :LOGGING: nil
4231 :END:
dbc28aaa
CD
4232@end example
4233
a351880d
CD
4234@node Tracking your habits, , Tracking TODO state changes, Progress logging
4235@subsection Tracking your habits
4236@cindex habits
4237
4238Org has the ability to track the consistency of a special category of TODOs,
4239called ``habits''. A habit has the following properties:
4240
4241@enumerate
4242@item
4243You have enabled the @code{habits} module by customizing the variable
4244@code{org-modules}.
4245@item
ce57c2fe 4246The habit is a TODO item, with a TODO keyword representing an open state.
a351880d
CD
4247@item
4248The property @code{STYLE} is set to the value @code{habit}.
4249@item
afe98dfa
CD
4250The TODO has a scheduled date, usually with a @code{.+} style repeat
4251interval. A @code{++} style may be appropriate for habits with time
4252constraints, e.g., must be done on weekends, or a @code{+} style for an
4253unusual habit that can have a backlog, e.g., weekly reports.
a351880d
CD
4254@item
4255The TODO may also have minimum and maximum ranges specified by using the
4256syntax @samp{.+2d/3d}, which says that you want to do the task at least every
4257three days, but at most every two days.
4258@item
8223b1d2
BG
4259You must also have state logging for the @code{DONE} state enabled
4260(@pxref{Tracking TODO state changes}), in order for historical data to be
4261represented in the consistency graph. If it is not enabled it is not an
4262error, but the consistency graphs will be largely meaningless.
a351880d
CD
4263@end enumerate
4264
4265To give you an idea of what the above rules look like in action, here's an
4266actual habit with some history:
4267
4268@example
4269** TODO Shave
4270 SCHEDULED: <2009-10-17 Sat .+2d/4d>
4271 - State "DONE" from "TODO" [2009-10-15 Thu]
4272 - State "DONE" from "TODO" [2009-10-12 Mon]
4273 - State "DONE" from "TODO" [2009-10-10 Sat]
4274 - State "DONE" from "TODO" [2009-10-04 Sun]
4275 - State "DONE" from "TODO" [2009-10-02 Fri]
4276 - State "DONE" from "TODO" [2009-09-29 Tue]
4277 - State "DONE" from "TODO" [2009-09-25 Fri]
4278 - State "DONE" from "TODO" [2009-09-19 Sat]
4279 - State "DONE" from "TODO" [2009-09-16 Wed]
4280 - State "DONE" from "TODO" [2009-09-12 Sat]
4281 :PROPERTIES:
4282 :STYLE: habit
4283 :LAST_REPEAT: [2009-10-19 Mon 00:36]
4284 :END:
4285@end example
4286
4287What this habit says is: I want to shave at most every 2 days (given by the
4288@code{SCHEDULED} date and repeat interval) and at least every 4 days. If
4289today is the 15th, then the habit first appears in the agenda on Oct 17,
4290after the minimum of 2 days has elapsed, and will appear overdue on Oct 19,
4291after four days have elapsed.
4292
4293What's really useful about habits is that they are displayed along with a
4294consistency graph, to show how consistent you've been at getting that task
4295done in the past. This graph shows every day that the task was done over the
4296past three weeks, with colors for each day. The colors used are:
4297
4298@table @code
4299@item Blue
4300If the task wasn't to be done yet on that day.
4301@item Green
4302If the task could have been done on that day.
4303@item Yellow
4304If the task was going to be overdue the next day.
4305@item Red
4306If the task was overdue on that day.
4307@end table
4308
86fbb8ca 4309In addition to coloring each day, the day is also marked with an asterisk if
a351880d
CD
4310the task was actually done that day, and an exclamation mark to show where
4311the current day falls in the graph.
4312
4313There are several configuration variables that can be used to change the way
4314habits are displayed in the agenda.
4315
4316@table @code
4317@item org-habit-graph-column
4318The buffer column at which the consistency graph should be drawn. This will
ce57c2fe 4319overwrite any text in that column, so it is a good idea to keep your habits'
a351880d
CD
4320titles brief and to the point.
4321@item org-habit-preceding-days
4322The amount of history, in days before today, to appear in consistency graphs.
4323@item org-habit-following-days
4324The number of days after today that will appear in consistency graphs.
4325@item org-habit-show-habits-only-for-today
4326If non-nil, only show habits in today's agenda view. This is set to true by
4327default.
4328@end table
4329
4330Lastly, pressing @kbd{K} in the agenda buffer will cause habits to
4331temporarily be disabled and they won't appear at all. Press @kbd{K} again to
4332bring them back. They are also subject to tag filtering, if you have habits
4333which should only be done in certain contexts, for example.
4334
a7808fba 4335@node Priorities, Breaking down tasks, Progress logging, TODO Items
4009494e
GM
4336@section Priorities
4337@cindex priorities
4338
e66ba1df 4339If you use Org mode extensively, you may end up with enough TODO items that
dbc28aaa 4340it starts to make sense to prioritize them. Prioritizing can be done by
86fbb8ca 4341placing a @emph{priority cookie} into the headline of a TODO item, like this
4009494e
GM
4342
4343@example
4344*** TODO [#A] Write letter to Sam Fortune
4345@end example
4346
4347@noindent
ed21c5c8 4348@vindex org-priority-faces
e66ba1df 4349By default, Org mode supports three priorities: @samp{A}, @samp{B}, and
ed21c5c8 4350@samp{C}. @samp{A} is the highest priority. An entry without a cookie is
afe98dfa
CD
4351treated just like priority @samp{B}. Priorities make a difference only for
4352sorting in the agenda (@pxref{Weekly/daily agenda}); outside the agenda, they
e66ba1df 4353have no inherent meaning to Org mode. The cookies can be highlighted with
afe98dfa 4354special faces by customizing the variable @code{org-priority-faces}.
dbc28aaa 4355
afe98dfa
CD
4356Priorities can be attached to any outline node; they do not need to be TODO
4357items.
4009494e
GM
4358
4359@table @kbd
4009494e 4360@item @kbd{C-c ,}
acedf35c
CD
4361@kindex @kbd{C-c ,}
4362@findex org-priority
4363Set the priority of the current headline (@command{org-priority}). The
4364command prompts for a priority character @samp{A}, @samp{B} or @samp{C}.
4365When you press @key{SPC} instead, the priority cookie is removed from the
4366headline. The priorities can also be changed ``remotely'' from the timeline
4367and agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
4009494e 4368@c
acedf35c 4369@orgcmdkkcc{S-@key{up},S-@key{down},org-priority-up,org-priority-down}
c8d0cf5c 4370@vindex org-priority-start-cycle-with-default
3da3282e 4371Increase/decrease priority of current headline@footnote{See also the option
c8d0cf5c
CD
4372@code{org-priority-start-cycle-with-default}.}. Note that these keys are
4373also used to modify timestamps (@pxref{Creating timestamps}). See also
4374@ref{Conflicts}, for a discussion of the interaction with
3da3282e 4375@code{shift-selection-mode}.
4009494e
GM
4376@end table
4377
c8d0cf5c
CD
4378@vindex org-highest-priority
4379@vindex org-lowest-priority
4380@vindex org-default-priority
4009494e
GM
4381You can change the range of allowed priorities by setting the variables
4382@code{org-highest-priority}, @code{org-lowest-priority}, and
4383@code{org-default-priority}. For an individual buffer, you may set
4384these values (highest, lowest, default) like this (please make sure that
4385the highest priority is earlier in the alphabet than the lowest
4386priority):
4387
c8d0cf5c 4388@cindex #+PRIORITIES
4009494e
GM
4389@example
4390#+PRIORITIES: A C B
4391@end example
4392
a7808fba 4393@node Breaking down tasks, Checkboxes, Priorities, TODO Items
4009494e
GM
4394@section Breaking tasks down into subtasks
4395@cindex tasks, breaking down
6eb02347 4396@cindex statistics, for TODO items
4009494e 4397
c8d0cf5c 4398@vindex org-agenda-todo-list-sublevels
4009494e 4399It is often advisable to break down large tasks into smaller, manageable
b349f79f
CD
4400subtasks. You can do this by creating an outline tree below a TODO item,
4401with detailed subtasks on the tree@footnote{To keep subtasks out of the
4402global TODO list, see the @code{org-agenda-todo-list-sublevels}.}. To keep
4403the overview over the fraction of subtasks that are already completed, insert
4404either @samp{[/]} or @samp{[%]} anywhere in the headline. These cookies will
86fbb8ca 4405be updated each time the TODO status of a child changes, or when pressing
6eb02347 4406@kbd{C-c C-c} on the cookie. For example:
b349f79f
CD
4407
4408@example
4409* Organize Party [33%]
4410** TODO Call people [1/2]
4411*** TODO Peter
4412*** DONE Sarah
4413** TODO Buy food
4414** DONE Talk to neighbor
4415@end example
4416
c8d0cf5c
CD
4417@cindex property, COOKIE_DATA
4418If a heading has both checkboxes and TODO children below it, the meaning of
4419the statistics cookie become ambiguous. Set the property
4420@code{COOKIE_DATA} to either @samp{checkbox} or @samp{todo} to resolve
4421this issue.
4422
6eb02347
CD
4423@vindex org-hierarchical-todo-statistics
4424If you would like to have the statistics cookie count any TODO entries in the
a351880d 4425subtree (not just direct children), configure the variable
6eb02347
CD
4426@code{org-hierarchical-todo-statistics}. To do this for a single subtree,
4427include the word @samp{recursive} into the value of the @code{COOKIE_DATA}
4428property.
4429
4430@example
4431* Parent capturing statistics [2/20]
4432 :PROPERTIES:
4433 :COOKIE_DATA: todo recursive
4434 :END:
4435@end example
4436
c8d0cf5c
CD
4437If you would like a TODO entry to automatically change to DONE
4438when all children are done, you can use the following setup:
b349f79f
CD
4439
4440@example
4441(defun org-summary-todo (n-done n-not-done)
4442 "Switch entry to DONE when all subentries are done, to TODO otherwise."
4443 (let (org-log-done org-log-states) ; turn off logging
4444 (org-todo (if (= n-not-done 0) "DONE" "TODO"))))
4445
4446(add-hook 'org-after-todo-statistics-hook 'org-summary-todo)
4447@end example
4448
4449
4450Another possibility is the use of checkboxes to identify (a hierarchy of) a
4451large number of subtasks (@pxref{Checkboxes}).
4009494e
GM
4452
4453
a7808fba 4454@node Checkboxes, , Breaking down tasks, TODO Items
4009494e
GM
4455@section Checkboxes
4456@cindex checkboxes
4457
afe98dfa
CD
4458@vindex org-list-automatic-rules
4459Every item in a plain list@footnote{With the exception of description
ce57c2fe 4460lists. But you can allow it by modifying @code{org-list-automatic-rules}
afe98dfa
CD
4461accordingly.} (@pxref{Plain lists}) can be made into a checkbox by starting
4462it with the string @samp{[ ]}. This feature is similar to TODO items
4463(@pxref{TODO Items}), but is more lightweight. Checkboxes are not included
4464into the global TODO list, so they are often great to split a task into a
4465number of simple steps. Or you can use them in a shopping list. To toggle a
4466checkbox, use @kbd{C-c C-c}, or use the mouse (thanks to Piotr Zielinski's
4467@file{org-mouse.el}).
dbc28aaa
CD
4468
4469Here is an example of a checkbox list.
4009494e
GM
4470
4471@example
28a16a1b
CD
4472* TODO Organize party [2/4]
4473 - [-] call people [1/3]
4009494e
GM
4474 - [ ] Peter
4475 - [X] Sarah
4476 - [ ] Sam
4477 - [X] order food
4478 - [ ] think about what music to play
4479 - [X] talk to the neighbors
4480@end example
4481
28a16a1b
CD
4482Checkboxes work hierarchically, so if a checkbox item has children that
4483are checkboxes, toggling one of the children checkboxes will make the
4484parent checkbox reflect if none, some, or all of the children are
4485checked.
4486
4009494e
GM
4487@cindex statistics, for checkboxes
4488@cindex checkbox statistics
c8d0cf5c 4489@cindex property, COOKIE_DATA
6eb02347 4490@vindex org-hierarchical-checkbox-statistics
c8d0cf5c
CD
4491The @samp{[2/4]} and @samp{[1/3]} in the first and second line are cookies
4492indicating how many checkboxes present in this entry have been checked off,
4493and the total number of checkboxes present. This can give you an idea on how
4494many checkboxes remain, even without opening a folded entry. The cookies can
4495be placed into a headline or into (the first line of) a plain list item.
4496Each cookie covers checkboxes of direct children structurally below the
4497headline/item on which the cookie appears@footnote{Set the variable
6eb02347 4498@code{org-hierarchical-checkbox-statistics} if you want such cookies to
ce57c2fe 4499count all checkboxes below the cookie, not just those belonging to direct
c8d0cf5c
CD
4500children.}. You have to insert the cookie yourself by typing either
4501@samp{[/]} or @samp{[%]}. With @samp{[/]} you get an @samp{n out of m}
4502result, as in the examples above. With @samp{[%]} you get information about
4503the percentage of checkboxes checked (in the above example, this would be
4504@samp{[50%]} and @samp{[33%]}, respectively). In a headline, a cookie can
4505count either checkboxes below the heading or TODO states of children, and it
4506will display whatever was changed last. Set the property @code{COOKIE_DATA}
4507to either @samp{checkbox} or @samp{todo} to resolve this issue.
4508
4509@cindex blocking, of checkboxes
4510@cindex checkbox blocking
4511@cindex property, ORDERED
4512If the current outline node has an @code{ORDERED} property, checkboxes must
4513be checked off in sequence, and an error will be thrown if you try to check
4514off a box while there are unchecked boxes above it.
4009494e
GM
4515
4516@noindent The following commands work with checkboxes:
4517
4518@table @kbd
acedf35c 4519@orgcmd{C-c C-c,org-toggle-checkbox}
27e428e7 4520Toggle checkbox status or (with prefix arg) checkbox presence at point.
e66ba1df
BG
4521With a single prefix argument, add an empty checkbox or remove the current
4522one@footnote{`C-u C-c C-c' on the @emph{first} item of a list with no checkbox
4523will add checkboxes to the rest of the list.}. With a double prefix argument, set it to @samp{[-]}, which is
4524considered to be an intermediate state.
acedf35c 4525@orgcmd{C-c C-x C-b,org-toggle-checkbox}
c8d0cf5c
CD
4526Toggle checkbox status or (with prefix arg) checkbox presence at point. With
4527double prefix argument, set it to @samp{[-]}, which is considered to be an
4528intermediate state.
4009494e
GM
4529@itemize @minus
4530@item
4531If there is an active region, toggle the first checkbox in the region
7ddb1b5f
CD
4532and set all remaining boxes to the same status as the first. With a prefix
4533arg, add or remove the checkbox for all items in the region.
4009494e
GM
4534@item
4535If the cursor is in a headline, toggle checkboxes in the region between
4536this headline and the next (so @emph{not} the entire subtree).
4537@item
4538If there is no active region, just toggle the checkbox at point.
4539@end itemize
acedf35c 4540@orgcmd{M-S-@key{RET},org-insert-todo-heading}
ce57c2fe
BG
4541Insert a new item with a checkbox. This works only if the cursor is already
4542in a plain list item (@pxref{Plain lists}).
acedf35c 4543@orgcmd{C-c C-x o,org-toggle-ordered-property}
c8d0cf5c
CD
4544@vindex org-track-ordered-property-with-tag
4545@cindex property, ORDERED
4546Toggle the @code{ORDERED} property of the entry, to toggle if checkboxes must
4547be checked off in sequence. A property is used for this behavior because
4548this should be local to the current entry, not inherited like a tag.
4549However, if you would like to @i{track} the value of this property with a tag
4550for better visibility, customize the variable
4551@code{org-track-ordered-property-with-tag}.
acedf35c 4552@orgcmd{C-c #,org-update-statistics-cookies}
6eb02347
CD
4553Update the statistics cookie in the current outline entry. When called with
4554a @kbd{C-u} prefix, update the entire file. Checkbox statistic cookies are
4555updated automatically if you toggle checkboxes with @kbd{C-c C-c} and make
4556new ones with @kbd{M-S-@key{RET}}. TODO statistics cookies update when
4557changing TODO states. If you delete boxes/entries or add/change them by
ce57c2fe 4558hand, use this command to get things back into sync.
4009494e
GM
4559@end table
4560
a7808fba 4561@node Tags, Properties and Columns, TODO Items, Top
4009494e
GM
4562@chapter Tags
4563@cindex tags
4564@cindex headline tagging
4565@cindex matching, tags
4566@cindex sparse tree, tag based
4567
dbc28aaa 4568An excellent way to implement labels and contexts for cross-correlating
e66ba1df 4569information is to assign @i{tags} to headlines. Org mode has extensive
dbc28aaa 4570support for tags.
4009494e 4571
c8d0cf5c 4572@vindex org-tag-faces
dbc28aaa 4573Every headline can contain a list of tags; they occur at the end of the
96c8522a 4574headline. Tags are normal words containing letters, numbers, @samp{_}, and
a351880d 4575@samp{@@}. Tags must be preceded and followed by a single colon, e.g.,
96c8522a 4576@samp{:work:}. Several tags can be specified, as in @samp{:work:urgent:}.
c8d0cf5c 4577Tags will by default be in bold face with the same color as the headline.
96c8522a 4578You may specify special faces for specific tags using the variable
c8d0cf5c 4579@code{org-tag-faces}, in much the same way as you can for TODO keywords
96c8522a 4580(@pxref{Faces for TODO keywords}).
4009494e
GM
4581
4582@menu
c0468714
GM
4583* Tag inheritance:: Tags use the tree structure of the outline
4584* Setting tags:: How to assign tags to a headline
4585* Tag searches:: Searching for combinations of tags
4009494e
GM
4586@end menu
4587
4588@node Tag inheritance, Setting tags, Tags, Tags
4589@section Tag inheritance
dbc28aaa 4590@cindex tag inheritance
4009494e
GM
4591@cindex inheritance, of tags
4592@cindex sublevels, inclusion into tags match
4593
4594@i{Tags} make use of the hierarchical structure of outline trees. If a
4595heading has a certain tag, all subheadings will inherit the tag as
4596well. For example, in the list
4597
4598@example
dbc28aaa
CD
4599* Meeting with the French group :work:
4600** Summary by Frank :boss:notes:
4601*** TODO Prepare slides for him :action:
4009494e
GM
4602@end example
4603
4604@noindent
dbc28aaa
CD
4605the final heading will have the tags @samp{:work:}, @samp{:boss:},
4606@samp{:notes:}, and @samp{:action:} even though the final heading is not
b349f79f 4607explicitly marked with those tags. You can also set tags that all entries in
c8d0cf5c 4608a file should inherit just as if these tags were defined in a hypothetical
7006d207
CD
4609level zero that surrounds the entire file. Use a line like this@footnote{As
4610with all these in-buffer settings, pressing @kbd{C-c C-c} activates any
4611changes in the line.}:
b349f79f 4612
c8d0cf5c 4613@cindex #+FILETAGS
b349f79f
CD
4614@example
4615#+FILETAGS: :Peter:Boss:Secret:
4616@end example
4617
4618@noindent
c8d0cf5c
CD
4619@vindex org-use-tag-inheritance
4620@vindex org-tags-exclude-from-inheritance
b349f79f 4621To limit tag inheritance to specific tags, or to turn it off entirely, use
96c8522a
CD
4622the variables @code{org-use-tag-inheritance} and
4623@code{org-tags-exclude-from-inheritance}.
b349f79f 4624
c8d0cf5c 4625@vindex org-tags-match-list-sublevels
b349f79f 4626When a headline matches during a tags search while tag inheritance is turned
96c8522a 4627on, all the sublevels in the same tree will (for a simple match form) match
07450bee 4628as well@footnote{This is only true if the search does not involve more
96c8522a
CD
4629complex tests including properties (@pxref{Property searches}).}. The list
4630of matches may then become very long. If you only want to see the first tags
4631match in a subtree, configure the variable
4632@code{org-tags-match-list-sublevels} (not recommended).
4009494e
GM
4633
4634@node Setting tags, Tag searches, Tag inheritance, Tags
4635@section Setting tags
4636@cindex setting tags
4637@cindex tags, setting
4638
4639@kindex M-@key{TAB}
4640Tags can simply be typed into the buffer at the end of a headline.
4641After a colon, @kbd{M-@key{TAB}} offers completion on tags. There is
4642also a special command for inserting tags:
4643
4644@table @kbd
acedf35c 4645@orgcmd{C-c C-q,org-set-tags-command}
4009494e 4646@cindex completion, of tags
c8d0cf5c 4647@vindex org-tags-column
e66ba1df 4648Enter new tags for the current headline. Org mode will either offer
4009494e
GM
4649completion or a special single-key interface for setting tags, see
4650below. After pressing @key{RET}, the tags will be inserted and aligned
4651to @code{org-tags-column}. When called with a @kbd{C-u} prefix, all
4652tags in the current buffer will be aligned to that column, just to make
4653things look nice. TAGS are automatically realigned after promotion,
4654demotion, and TODO state changes (@pxref{TODO basics}).
acedf35c 4655@orgcmd{C-c C-c,org-set-tags-command}
71d35b24 4656When the cursor is in a headline, this does the same as @kbd{C-c C-q}.
4009494e
GM
4657@end table
4658
c8d0cf5c 4659@vindex org-tag-alist
ce57c2fe 4660Org supports tag insertion based on a @emph{list of tags}. By
4009494e
GM
4661default this list is constructed dynamically, containing all tags
4662currently used in the buffer. You may also globally specify a hard list
4663of tags with the variable @code{org-tag-alist}. Finally you can set
4664the default tags for a given file with lines like
4665
c8d0cf5c 4666@cindex #+TAGS
4009494e 4667@example
dbc28aaa
CD
4668#+TAGS: @@work @@home @@tennisclub
4669#+TAGS: laptop car pc sailboat
4009494e
GM
4670@end example
4671
4672If you have globally defined your preferred set of tags using the
4673variable @code{org-tag-alist}, but would like to use a dynamic tag list
dbc28aaa 4674in a specific file, add an empty TAGS option line to that file:
4009494e
GM
4675
4676@example
4677#+TAGS:
4678@end example
4679
c8d0cf5c
CD
4680@vindex org-tag-persistent-alist
4681If you have a preferred set of tags that you would like to use in every file,
4682in addition to those defined on a per-file basis by TAGS option lines, then
4683you may specify a list of tags with the variable
4684@code{org-tag-persistent-alist}. You may turn this off on a per-file basis
4685by adding a STARTUP option line to that file:
4686
4687@example
4688#+STARTUP: noptag
4689@end example
4690
e66ba1df 4691By default Org mode uses the standard minibuffer completion facilities for
a7808fba
CD
4692entering tags. However, it also implements another, quicker, tag selection
4693method called @emph{fast tag selection}. This allows you to select and
4694deselect tags with just a single key press. For this to work well you should
4695assign unique letters to most of your commonly used tags. You can do this
4696globally by configuring the variable @code{org-tag-alist} in your
4697@file{.emacs} file. For example, you may find the need to tag many items in
4698different files with @samp{:@@home:}. In this case you can set something
4699like:
4009494e
GM
4700
4701@lisp
dbc28aaa 4702(setq org-tag-alist '(("@@work" . ?w) ("@@home" . ?h) ("laptop" . ?l)))
4009494e
GM
4703@end lisp
4704
c8d0cf5c
CD
4705@noindent If the tag is only relevant to the file you are working on, then you
4706can instead set the TAGS option line as:
4009494e
GM
4707
4708@example
dbc28aaa 4709#+TAGS: @@work(w) @@home(h) @@tennisclub(t) laptop(l) pc(p)
4009494e
GM
4710@end example
4711
c8d0cf5c
CD
4712@noindent The tags interface will show the available tags in a splash
4713window. If you want to start a new line after a specific tag, insert
4714@samp{\n} into the tag list
4715
4716@example
4717#+TAGS: @@work(w) @@home(h) @@tennisclub(t) \n laptop(l) pc(p)
4718@end example
4719
4720@noindent or write them in two lines:
4721
4722@example
4723#+TAGS: @@work(w) @@home(h) @@tennisclub(t)
4724#+TAGS: laptop(l) pc(p)
4725@end example
4726
4009494e 4727@noindent
c8d0cf5c 4728You can also group together tags that are mutually exclusive by using
a7808fba 4729braces, as in:
4009494e
GM
4730
4731@example
dbc28aaa 4732#+TAGS: @{ @@work(w) @@home(h) @@tennisclub(t) @} laptop(l) pc(p)
4009494e
GM
4733@end example
4734
dbc28aaa 4735@noindent you indicate that at most one of @samp{@@work}, @samp{@@home},
a7808fba 4736and @samp{@@tennisclub} should be selected. Multiple such groups are allowed.
4009494e
GM
4737
4738@noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
4739these lines to activate any changes.
4740
a7808fba 4741@noindent
c8d0cf5c 4742To set these mutually exclusive groups in the variable @code{org-tags-alist},
a7808fba 4743you must use the dummy tags @code{:startgroup} and @code{:endgroup} instead
c8d0cf5c
CD
4744of the braces. Similarly, you can use @code{:newline} to indicate a line
4745break. The previous example would be set globally by the following
a7808fba
CD
4746configuration:
4747
4748@lisp
4749(setq org-tag-alist '((:startgroup . nil)
4750 ("@@work" . ?w) ("@@home" . ?h)
4751 ("@@tennisclub" . ?t)
4752 (:endgroup . nil)
4753 ("laptop" . ?l) ("pc" . ?p)))
4754@end lisp
4755
4756If at least one tag has a selection key then pressing @kbd{C-c C-c} will
4757automatically present you with a special interface, listing inherited tags,
4758the tags of the current headline, and a list of all valid tags with
4759corresponding keys@footnote{Keys will automatically be assigned to tags which
4760have no configured keys.}. In this interface, you can use the following
4761keys:
4009494e
GM
4762
4763@table @kbd
4764@item a-z...
4765Pressing keys assigned to tags will add or remove them from the list of
4766tags in the current line. Selecting a tag in a group of mutually
4767exclusive tags will turn off any other tags from that group.
4768@kindex @key{TAB}
4769@item @key{TAB}
4770Enter a tag in the minibuffer, even if the tag is not in the predefined
4771list. You will be able to complete on all tags present in the buffer.
ce57c2fe
BG
4772You can also add several tags: just separate them with a comma.
4773
4009494e
GM
4774@kindex @key{SPC}
4775@item @key{SPC}
4776Clear all tags for this line.
4777@kindex @key{RET}
4778@item @key{RET}
4779Accept the modified set.
4780@item C-g
4781Abort without installing changes.
4782@item q
4783If @kbd{q} is not assigned to a tag, it aborts like @kbd{C-g}.
4784@item !
4785Turn off groups of mutually exclusive tags. Use this to (as an
4786exception) assign several tags from such a group.
4787@item C-c
4788Toggle auto-exit after the next change (see below).
4789If you are using expert mode, the first @kbd{C-c} will display the
4790selection window.
4791@end table
4792
4793@noindent
4794This method lets you assign tags to a headline with very few keys. With
dbc28aaa
CD
4795the above setup, you could clear the current tags and set @samp{@@home},
4796@samp{laptop} and @samp{pc} tags with just the following keys: @kbd{C-c
4797C-c @key{SPC} h l p @key{RET}}. Switching from @samp{@@home} to
4798@samp{@@work} would be done with @kbd{C-c C-c w @key{RET}} or
4009494e
GM
4799alternatively with @kbd{C-c C-c C-c w}. Adding the non-predefined tag
4800@samp{Sarah} could be done with @kbd{C-c C-c @key{TAB} S a r a h
4801@key{RET} @key{RET}}.
4802
c8d0cf5c
CD
4803@vindex org-fast-tag-selection-single-key
4804If you find that most of the time you need only a single key press to
4009494e
GM
4805modify your list of tags, set the variable
4806@code{org-fast-tag-selection-single-key}. Then you no longer have to
c8d0cf5c 4807press @key{RET} to exit fast tag selection---it will immediately exit
4009494e
GM
4808after the first change. If you then occasionally need more keys, press
4809@kbd{C-c} to turn off auto-exit for the current tag selection process
4810(in effect: start selection with @kbd{C-c C-c C-c} instead of @kbd{C-c
4811C-c}). If you set the variable to the value @code{expert}, the special
4812window is not even shown for single-key tag selection, it comes up only
4813when you press an extra @kbd{C-c}.
4814
4815@node Tag searches, , Setting tags, Tags
4816@section Tag searches
4817@cindex tag searches
4818@cindex searching for tags
4819
dbc28aaa 4820Once a system of tags has been set up, it can be used to collect related
4009494e
GM
4821information into special lists.
4822
4823@table @kbd
ce57c2fe 4824@orgcmdkkc{C-c / m,C-c \\,org-match-sparse-tree}
4009494e
GM
4825Create a sparse tree with all headlines matching a tags search. With a
4826@kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
acedf35c 4827@orgcmd{C-c a m,org-tags-view}
4009494e
GM
4828Create a global list of tag matches from all agenda files.
4829@xref{Matching tags and properties}.
acedf35c 4830@orgcmd{C-c a M,org-tags-view}
c8d0cf5c 4831@vindex org-tags-match-list-sublevels
4009494e
GM
4832Create a global list of tag matches from all agenda files, but check
4833only TODO items and force checking subitems (see variable
4834@code{org-tags-match-list-sublevels}).
4835@end table
4836
c8d0cf5c
CD
4837These commands all prompt for a match string which allows basic Boolean logic
4838like @samp{+boss+urgent-project1}, to find entries with tags @samp{boss} and
4839@samp{urgent}, but not @samp{project1}, or @samp{Kathy|Sally} to find entries
4840which are tagged, like @samp{Kathy} or @samp{Sally}. The full syntax of the search
4841string is rich and allows also matching against TODO keywords, entry levels
4842and properties. For a complete description with many examples, see
4843@ref{Matching tags and properties}.
dbc28aaa 4844
e45e3595 4845
a7808fba 4846@node Properties and Columns, Dates and Times, Tags, Top
86fbb8ca 4847@chapter Properties and columns
4009494e
GM
4848@cindex properties
4849
e66ba1df
BG
4850A property is a key-value pair associated with an entry. Properties can be
4851set so they are associated with a single entry, with every entry in a tree,
4852or with every entry in an Org mode file.
4853
4854There are two main applications for properties in Org mode. First,
4855properties are like tags, but with a value. Imagine maintaining a file where
c8d0cf5c 4856you document bugs and plan releases for a piece of software. Instead of
e66ba1df 4857using tags like @code{:release_1:}, @code{:release_2:}, you can use a
dbc28aaa 4858property, say @code{:Release:}, that in different subtrees has different
e66ba1df
BG
4859values, such as @code{1.0} or @code{2.0}. Second, you can use properties to
4860implement (very basic) database capabilities in an Org buffer. Imagine
4861keeping track of your music CDs, where properties could be things such as the
4862album, artist, date of release, number of tracks, and so on.
dbc28aaa 4863
28a16a1b 4864Properties can be conveniently edited and viewed in column view
dbc28aaa
CD
4865(@pxref{Column view}).
4866
4009494e 4867@menu
c0468714 4868* Property syntax:: How properties are spelled out
e66ba1df 4869* Special properties:: Access to other Org mode features
c0468714
GM
4870* Property searches:: Matching property values
4871* Property inheritance:: Passing values down the tree
4872* Column view:: Tabular viewing and editing
4873* Property API:: Properties for Lisp programmers
4009494e
GM
4874@end menu
4875
a7808fba
CD
4876@node Property syntax, Special properties, Properties and Columns, Properties and Columns
4877@section Property syntax
4009494e
GM
4878@cindex property syntax
4879@cindex drawer, for properties
4880
e66ba1df
BG
4881Properties are key-value pairs. When they are associated with a single entry
4882or with a tree they need to be inserted into a special
4009494e
GM
4883drawer (@pxref{Drawers}) with the name @code{PROPERTIES}. Each property
4884is specified on a single line, with the key (surrounded by colons)
4885first, and the value after it. Here is an example:
4886
4887@example
4888* CD collection
4889** Classic
4890*** Goldberg Variations
4891 :PROPERTIES:
4892 :Title: Goldberg Variations
4893 :Composer: J.S. Bach
28a16a1b 4894 :Artist: Glen Gould
c8d0cf5c 4895 :Publisher: Deutsche Grammophon
4009494e 4896 :NDisks: 1
28a16a1b 4897 :END:
4009494e
GM
4898@end example
4899
e66ba1df
BG
4900Depending on the value of @code{org-use-property-inheritance}, a property set
4901this way will either be associated with a single entry, or the sub-tree
4902defined by the entry, see @ref{Property inheritance}.
4903
dbc28aaa
CD
4904You may define the allowed values for a particular property @samp{:Xyz:}
4905by setting a property @samp{:Xyz_ALL:}. This special property is
4009494e
GM
4906@emph{inherited}, so if you set it in a level 1 entry, it will apply to
4907the entire tree. When allowed values are defined, setting the
4908corresponding property becomes easier and is less prone to typing
4909errors. For the example with the CD collection, we can predefine
4910publishers and the number of disks in a box like this:
4911
4912@example
4913* CD collection
4914 :PROPERTIES:
4915 :NDisks_ALL: 1 2 3 4
64fb801f 4916 :Publisher_ALL: "Deutsche Grammophon" Philips EMI
4009494e
GM
4917 :END:
4918@end example
4919
4920If you want to set properties that can be inherited by any entry in a
4921file, use a line like
c8d0cf5c
CD
4922@cindex property, _ALL
4923@cindex #+PROPERTY
4009494e
GM
4924@example
4925#+PROPERTY: NDisks_ALL 1 2 3 4
4926@end example
4927
e66ba1df
BG
4928If you want to add to the value of an existing property, append a @code{+} to
4929the property name. The following results in the property @code{var} having
4930the value ``foo=1 bar=2''.
4931@cindex property, +
4932@example
4933#+PROPERTY: var foo=1
4934#+PROPERTY: var+ bar=2
4935@end example
4936
4937It is also possible to add to the values of inherited properties. The
4938following results in the @code{genres} property having the value ``Classic
4939Baroque'' under the @code{Goldberg Variations} subtree.
4940@cindex property, +
4941@example
4942* CD collection
4943** Classic
4944 :PROPERTIES:
4945 :GENRES: Classic
4946 :END:
4947*** Goldberg Variations
4948 :PROPERTIES:
4949 :Title: Goldberg Variations
4950 :Composer: J.S. Bach
4951 :Artist: Glen Gould
4952 :Publisher: Deutsche Grammophon
4953 :NDisks: 1
4954 :GENRES+: Baroque
4955 :END:
4956@end example
4957Note that a property can only have one entry per Drawer.
4958
c8d0cf5c 4959@vindex org-global-properties
4009494e
GM
4960Property values set with the global variable
4961@code{org-global-properties} can be inherited by all entries in all
a7808fba 4962Org files.
4009494e
GM
4963
4964@noindent
4965The following commands help to work with properties:
4966
4967@table @kbd
ce57c2fe 4968@orgcmd{M-@key{TAB},pcomplete}
4009494e
GM
4969After an initial colon in a line, complete property keys. All keys used
4970in the current file will be offered as possible completions.
acedf35c 4971@orgcmd{C-c C-x p,org-set-property}
dbc28aaa
CD
4972Set a property. This prompts for a property name and a value. If
4973necessary, the property drawer is created as well.
8223b1d2
BG
4974@item C-u M-x org-insert-drawer
4975@cindex org-insert-drawer
4009494e
GM
4976Insert a property drawer into the current entry. The drawer will be
4977inserted early in the entry, but after the lines with planning
4978information like deadlines.
acedf35c 4979@orgcmd{C-c C-c,org-property-action}
4009494e 4980With the cursor in a property drawer, this executes property commands.
acedf35c 4981@orgcmd{C-c C-c s,org-set-property}
4009494e
GM
4982Set a property in the current entry. Both the property and the value
4983can be inserted using completion.
acedf35c 4984@orgcmdkkcc{S-@key{right},S-@key{left},org-property-next-allowed-value,org-property-previous-allowed-value}
4009494e 4985Switch property at point to the next/previous allowed value.
acedf35c 4986@orgcmd{C-c C-c d,org-delete-property}
4009494e 4987Remove a property from the current entry.
acedf35c 4988@orgcmd{C-c C-c D,org-delete-property-globally}
4009494e 4989Globally remove a property, from all entries in the current file.
acedf35c 4990@orgcmd{C-c C-c c,org-compute-property-at-point}
dbc28aaa
CD
4991Compute the property at point, using the operator and scope from the
4992nearest column format definition.
4009494e
GM
4993@end table
4994
a7808fba
CD
4995@node Special properties, Property searches, Property syntax, Properties and Columns
4996@section Special properties
4009494e
GM
4997@cindex properties, special
4998
e66ba1df 4999Special properties provide an alternative access method to Org mode features,
ce57c2fe
BG
5000like the TODO state or the priority of an entry, discussed in the previous
5001chapters. This interface exists so that you can include these states in a
5002column view (@pxref{Column view}), or to use them in queries. The following
5003property names are special and (except for @code{:CATEGORY:}) should not be
dbc28aaa 5004used as keys in the properties drawer:
4009494e 5005
8223b1d2 5006@cindex property, special, ID
c8d0cf5c
CD
5007@cindex property, special, TODO
5008@cindex property, special, TAGS
5009@cindex property, special, ALLTAGS
5010@cindex property, special, CATEGORY
5011@cindex property, special, PRIORITY
5012@cindex property, special, DEADLINE
5013@cindex property, special, SCHEDULED
5014@cindex property, special, CLOSED
5015@cindex property, special, TIMESTAMP
5016@cindex property, special, TIMESTAMP_IA
5017@cindex property, special, CLOCKSUM
8223b1d2 5018@cindex property, special, CLOCKSUM_T
ed21c5c8 5019@cindex property, special, BLOCKED
c8d0cf5c
CD
5020@c guessing that ITEM is needed in this area; also, should this list be sorted?
5021@cindex property, special, ITEM
ce57c2fe 5022@cindex property, special, FILE
4009494e 5023@example
8223b1d2
BG
5024ID @r{A globally unique ID used for synchronization during}
5025 @r{iCalendar or MobileOrg export.}
4009494e
GM
5026TODO @r{The TODO keyword of the entry.}
5027TAGS @r{The tags defined directly in the headline.}
5028ALLTAGS @r{All tags, including inherited ones.}
c8d0cf5c 5029CATEGORY @r{The category of an entry.}
4009494e
GM
5030PRIORITY @r{The priority of the entry, a string with a single letter.}
5031DEADLINE @r{The deadline time string, without the angular brackets.}
c8d0cf5c
CD
5032SCHEDULED @r{The scheduling timestamp, without the angular brackets.}
5033CLOSED @r{When was this entry closed?}
5034TIMESTAMP @r{The first keyword-less timestamp in the entry.}
5035TIMESTAMP_IA @r{The first inactive timestamp in the entry.}
dbc28aaa 5036CLOCKSUM @r{The sum of CLOCK intervals in the subtree. @code{org-clock-sum}}
ce57c2fe 5037 @r{must be run first to compute the values in the current buffer.}
8223b1d2
BG
5038CLOCKSUM_T @r{The sum of CLOCK intervals in the subtree for today.}
5039 @r{@code{org-clock-sum-today} must be run first to compute the}
5040 @r{values in the current buffer.}
ed21c5c8 5041BLOCKED @r{"t" if task is currently blocked by children or siblings}
8223b1d2 5042ITEM @r{The headline of the entry.}
ce57c2fe 5043FILE @r{The filename the entry is located in.}
4009494e
GM
5044@end example
5045
a7808fba 5046@node Property searches, Property inheritance, Special properties, Properties and Columns
4009494e
GM
5047@section Property searches
5048@cindex properties, searching
dbc28aaa 5049@cindex searching, of properties
4009494e 5050
a7808fba 5051To create sparse trees and special lists with selection based on properties,
c8d0cf5c
CD
5052the same commands are used as for tag searches (@pxref{Tag searches}).
5053@table @kbd
acedf35c 5054@orgcmdkkc{C-c / m,C-c \,org-match-sparse-tree}
c8d0cf5c
CD
5055Create a sparse tree with all matching entries. With a
5056@kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
acedf35c 5057@orgcmd{C-c a m,org-tags-view}
c8d0cf5c
CD
5058Create a global list of tag/property matches from all agenda files.
5059@xref{Matching tags and properties}.
acedf35c 5060@orgcmd{C-c a M,org-tags-view}
c8d0cf5c
CD
5061@vindex org-tags-match-list-sublevels
5062Create a global list of tag matches from all agenda files, but check
5063only TODO items and force checking of subitems (see variable
5064@code{org-tags-match-list-sublevels}).
5065@end table
a7808fba 5066
c8d0cf5c
CD
5067The syntax for the search string is described in @ref{Matching tags and
5068properties}.
dbc28aaa
CD
5069
5070There is also a special command for creating sparse trees based on a
5071single property:
5072
5073@table @kbd
acedf35c 5074@orgkey{C-c / p}
dbc28aaa
CD
5075Create a sparse tree based on the value of a property. This first
5076prompts for the name of a property, and then for a value. A sparse tree
5077is created with all entries that define this property with the given
acedf35c 5078value. If you enclose the value in curly braces, it is interpreted as
dbc28aaa
CD
5079a regular expression and matched against the property values.
5080@end table
5081
a7808fba 5082@node Property inheritance, Column view, Property searches, Properties and Columns
dbc28aaa 5083@section Property Inheritance
a7808fba
CD
5084@cindex properties, inheritance
5085@cindex inheritance, of properties
dbc28aaa 5086
c8d0cf5c 5087@vindex org-use-property-inheritance
e66ba1df 5088The outline structure of Org mode documents lends itself to an
c8d0cf5c 5089inheritance model of properties: if the parent in a tree has a certain
e66ba1df 5090property, the children can inherit this property. Org mode does not
dbc28aaa
CD
5091turn this on by default, because it can slow down property searches
5092significantly and is often not needed. However, if you find inheritance
5093useful, you can turn it on by setting the variable
c8d0cf5c 5094@code{org-use-property-inheritance}. It may be set to @code{t} to make
a7808fba
CD
5095all properties inherited from the parent, to a list of properties
5096that should be inherited, or to a regular expression that matches
86fbb8ca 5097inherited properties. If a property has the value @samp{nil}, this is
acedf35c 5098interpreted as an explicit undefine of the property, so that inheritance
86fbb8ca 5099search will stop at this value and return @code{nil}.
dbc28aaa 5100
e66ba1df 5101Org mode has a few properties for which inheritance is hard-coded, at
dbc28aaa
CD
5102least for the special applications for which they are used:
5103
c8d0cf5c 5104@cindex property, COLUMNS
dbc28aaa
CD
5105@table @code
5106@item COLUMNS
5107The @code{:COLUMNS:} property defines the format of column view
5108(@pxref{Column view}). It is inherited in the sense that the level
5109where a @code{:COLUMNS:} property is defined is used as the starting
5110point for a column view table, independently of the location in the
5111subtree from where columns view is turned on.
5112@item CATEGORY
c8d0cf5c 5113@cindex property, CATEGORY
dbc28aaa
CD
5114For agenda view, a category set through a @code{:CATEGORY:} property
5115applies to the entire subtree.
5116@item ARCHIVE
c8d0cf5c 5117@cindex property, ARCHIVE
dbc28aaa
CD
5118For archiving, the @code{:ARCHIVE:} property may define the archive
5119location for the entire subtree (@pxref{Moving subtrees}).
28a16a1b 5120@item LOGGING
c8d0cf5c 5121@cindex property, LOGGING
28a16a1b
CD
5122The LOGGING property may define logging settings for an entry or a
5123subtree (@pxref{Tracking TODO state changes}).
dbc28aaa
CD
5124@end table
5125
a7808fba
CD
5126@node Column view, Property API, Property inheritance, Properties and Columns
5127@section Column view
4009494e
GM
5128
5129A great way to view and edit properties in an outline tree is
c8d0cf5c 5130@emph{column view}. In column view, each outline node is turned into a
4009494e 5131table row. Columns in this table provide access to properties of the
e66ba1df 5132entries. Org mode implements columns by overlaying a tabular structure
4009494e
GM
5133over the headline of each item. While the headlines have been turned
5134into a table row, you can still change the visibility of the outline
5135tree. For example, you get a compact table by switching to CONTENTS
5136view (@kbd{S-@key{TAB} S-@key{TAB}}, or simply @kbd{c} while column view
5137is active), but you can still open, read, and edit the entry below each
5138headline. Or, you can switch to column view after executing a sparse
5139tree command and in this way get a table only for the selected items.
a7808fba 5140Column view also works in agenda buffers (@pxref{Agenda Views}) where
4009494e
GM
5141queries have collected selected items, possibly from a number of files.
5142
5143@menu
c0468714
GM
5144* Defining columns:: The COLUMNS format property
5145* Using column view:: How to create and use column view
5146* Capturing column view:: A dynamic block for column view
4009494e
GM
5147@end menu
5148
5149@node Defining columns, Using column view, Column view, Column view
a7808fba 5150@subsection Defining columns
4009494e
GM
5151@cindex column view, for properties
5152@cindex properties, column view
5153
5154Setting up a column view first requires defining the columns. This is
5155done by defining a column format line.
5156
5157@menu
c0468714
GM
5158* Scope of column definitions:: Where defined, where valid?
5159* Column attributes:: Appearance and content of a column
4009494e
GM
5160@end menu
5161
5162@node Scope of column definitions, Column attributes, Defining columns, Defining columns
5163@subsubsection Scope of column definitions
5164
5165To define a column format for an entire file, use a line like
5166
c8d0cf5c 5167@cindex #+COLUMNS
4009494e
GM
5168@example
5169#+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
5170@end example
5171
dbc28aaa
CD
5172To specify a format that only applies to a specific tree, add a
5173@code{:COLUMNS:} property to the top node of that tree, for example:
5174
4009494e
GM
5175@example
5176** Top node for columns view
5177 :PROPERTIES:
5178 :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
5179 :END:
5180@end example
5181
dbc28aaa 5182If a @code{:COLUMNS:} property is present in an entry, it defines columns
4009494e
GM
5183for the entry itself, and for the entire subtree below it. Since the
5184column definition is part of the hierarchical structure of the document,
5185you can define columns on level 1 that are general enough for all
5186sublevels, and more specific columns further down, when you edit a
5187deeper part of the tree.
5188
5189@node Column attributes, , Scope of column definitions, Defining columns
5190@subsubsection Column attributes
5191A column definition sets the attributes of a column. The general
5192definition looks like this:
5193
5194@example
c8d0cf5c 5195 %[@var{width}]@var{property}[(@var{title})][@{@var{summary-type}@}]
4009494e
GM
5196@end example
5197
5198@noindent
5199Except for the percent sign and the property name, all items are
5200optional. The individual parts have the following meaning:
5201
5202@example
c8d0cf5c 5203@var{width} @r{An integer specifying the width of the column in characters.}
72d803ad 5204 @r{If omitted, the width will be determined automatically.}
c8d0cf5c 5205@var{property} @r{The property that should be edited in this column.}
72d803ad
CD
5206 @r{Special properties representing meta data are allowed here}
5207 @r{as well (@pxref{Special properties})}
ce57c2fe 5208@var{title} @r{The header text for the column. If omitted, the property}
afe98dfa 5209 @r{name is used.}
c8d0cf5c 5210@{@var{summary-type}@} @r{The summary type. If specified, the column values for}
72d803ad
CD
5211 @r{parent nodes are computed from the children.}
5212 @r{Supported summary types are:}
5213 @{+@} @r{Sum numbers in this column.}
5214 @{+;%.1f@} @r{Like @samp{+}, but format result with @samp{%.1f}.}
5215 @{$@} @r{Currency, short for @samp{+;%.2f}.}
86fbb8ca 5216 @{:@} @r{Sum times, HH:MM, plain numbers are hours.}
72d803ad
CD
5217 @{X@} @r{Checkbox status, @samp{[X]} if all children are @samp{[X]}.}
5218 @{X/@} @r{Checkbox status, @samp{[n/m]}.}
5219 @{X%@} @r{Checkbox status, @samp{[n%]}.}
5220 @{min@} @r{Smallest number in column.}
5221 @{max@} @r{Largest number.}
5222 @{mean@} @r{Arithmetic mean of numbers.}
5223 @{:min@} @r{Smallest time value in column.}
5224 @{:max@} @r{Largest time value.}
5225 @{:mean@} @r{Arithmetic mean of time values.}
afe98dfa
CD
5226 @{@@min@} @r{Minimum age (in days/hours/mins/seconds).}
5227 @{@@max@} @r{Maximum age (in days/hours/mins/seconds).}
5228 @{@@mean@} @r{Arithmetic mean of ages (in days/hours/mins/seconds).}
5229 @{est+@} @r{Add low-high estimates.}
4009494e
GM
5230@end example
5231
5232@noindent
a351880d 5233Be aware that you can only have one summary type for any property you
ce57c2fe 5234include. Subsequent columns referencing the same property will all display the
a351880d
CD
5235same summary information.
5236
afe98dfa
CD
5237The @code{est+} summary type requires further explanation. It is used for
5238combining estimates, expressed as low-high ranges. For example, instead
5239of estimating a particular task will take 5 days, you might estimate it as
acedf35c 52405-6 days if you're fairly confident you know how much work is required, or
afe98dfa
CD
52411-10 days if you don't really know what needs to be done. Both ranges
5242average at 5.5 days, but the first represents a more predictable delivery.
5243
5244When combining a set of such estimates, simply adding the lows and highs
ce57c2fe 5245produces an unrealistically wide result. Instead, @code{est+} adds the
afe98dfa
CD
5246statistical mean and variance of the sub-tasks, generating a final estimate
5247from the sum. For example, suppose you had ten tasks, each of which was
5248estimated at 0.5 to 2 days of work. Straight addition produces an estimate
5249of 5 to 20 days, representing what to expect if everything goes either
ce57c2fe 5250extremely well or extremely poorly. In contrast, @code{est+} estimates the
afe98dfa
CD
5251full job more realistically, at 10-15 days.
5252
4009494e
GM
5253Here is an example for a complete columns definition, along with allowed
5254values.
5255
5256@example
7006d207 5257:COLUMNS: %25ITEM %9Approved(Approved?)@{X@} %Owner %11Status \@footnote{Please note that the COLUMNS definition must be on a single line---it is wrapped here only because of formatting constraints.}
8223b1d2 5258 %10Time_Estimate@{:@} %CLOCKSUM %CLOCKSUM_T
4009494e
GM
5259:Owner_ALL: Tammy Mark Karl Lisa Don
5260:Status_ALL: "In progress" "Not started yet" "Finished" ""
5261:Approved_ALL: "[ ]" "[X]"
5262@end example
5263
c8d0cf5c 5264@noindent
4009494e 5265The first column, @samp{%25ITEM}, means the first 25 characters of the
1df7defd 5266item itself, i.e., of the headline. You probably always should start the
28a16a1b
CD
5267column definition with the @samp{ITEM} specifier. The other specifiers
5268create columns @samp{Owner} with a list of names as allowed values, for
4009494e
GM
5269@samp{Status} with four different possible values, and for a checkbox
5270field @samp{Approved}. When no width is given after the @samp{%}
5271character, the column will be exactly as wide as it needs to be in order
5272to fully display all values. The @samp{Approved} column does have a
5273modified title (@samp{Approved?}, with a question mark). Summaries will
dbc28aaa 5274be created for the @samp{Time_Estimate} column by adding time duration
4009494e 5275expressions like HH:MM, and for the @samp{Approved} column, by providing
dbc28aaa 5276an @samp{[X]} status if all children have been checked. The
8223b1d2
BG
5277@samp{CLOCKSUM} and @samp{CLOCKSUM_T} columns are special, they lists the
5278sums of CLOCK intervals in the subtree, either for all clocks or just for
5279today.
4009494e 5280
a7808fba
CD
5281@node Using column view, Capturing column view, Defining columns, Column view
5282@subsection Using column view
4009494e
GM
5283
5284@table @kbd
5285@tsubheading{Turning column view on and off}
acedf35c 5286@orgcmd{C-c C-x C-c,org-columns}
c8d0cf5c
CD
5287@vindex org-columns-default-format
5288Turn on column view. If the cursor is before the first headline in the file,
5289column view is turned on for the entire file, using the @code{#+COLUMNS}
a351880d 5290definition. If the cursor is somewhere inside the outline, this command
c8d0cf5c
CD
5291searches the hierarchy, up from point, for a @code{:COLUMNS:} property that
5292defines a format. When one is found, the column view table is established
5293for the tree starting at the entry that contains the @code{:COLUMNS:}
5294property. If no such property is found, the format is taken from the
5295@code{#+COLUMNS} line or from the variable @code{org-columns-default-format},
5296and column view is established for the current entry and its subtree.
acedf35c 5297@orgcmd{r,org-columns-redo}
a7808fba 5298Recreate the column view, to include recent changes made in the buffer.
acedf35c 5299@orgcmd{g,org-columns-redo}
28a16a1b 5300Same as @kbd{r}.
acedf35c 5301@orgcmd{q,org-columns-quit}
4009494e
GM
5302Exit column view.
5303@tsubheading{Editing values}
5304@item @key{left} @key{right} @key{up} @key{down}
5305Move through the column view from field to field.
5306@kindex S-@key{left}
5307@kindex S-@key{right}
5308@item S-@key{left}/@key{right}
5309Switch to the next/previous allowed value of the field. For this, you
5310have to have specified allowed values for a property.
b349f79f 5311@item 1..9,0
acedf35c
CD
5312Directly select the Nth allowed value, @kbd{0} selects the 10th value.
5313@orgcmdkkcc{n,p,org-columns-next-allowed-value,org-columns-previous-allowed-value}
4009494e 5314Same as @kbd{S-@key{left}/@key{right}}
acedf35c 5315@orgcmd{e,org-columns-edit-value}
4009494e
GM
5316Edit the property at point. For the special properties, this will
5317invoke the same interface that you normally use to change that
5318property. For example, when editing a TAGS property, the tag completion
5319or fast selection interface will pop up.
acedf35c 5320@orgcmd{C-c C-c,org-columns-set-tags-or-toggle}
dbc28aaa 5321When there is a checkbox at point, toggle it.
acedf35c 5322@orgcmd{v,org-columns-show-value}
4009494e
GM
5323View the full value of this property. This is useful if the width of
5324the column is smaller than that of the value.
acedf35c 5325@orgcmd{a,org-columns-edit-allowed}
4009494e
GM
5326Edit the list of allowed values for this property. If the list is found
5327in the hierarchy, the modified values is stored there. If no list is
5328found, the new value is stored in the first entry that is part of the
5329current column view.
5330@tsubheading{Modifying the table structure}
acedf35c 5331@orgcmdkkcc{<,>,org-columns-narrow,org-columns-widen}
4009494e 5332Make the column narrower/wider by one character.
acedf35c 5333@orgcmd{S-M-@key{right},org-columns-new}
864c9740 5334Insert a new column, to the left of the current column.
acedf35c 5335@orgcmd{S-M-@key{left},org-columns-delete}
4009494e
GM
5336Delete the current column.
5337@end table
5338
a7808fba
CD
5339@node Capturing column view, , Using column view, Column view
5340@subsection Capturing column view
dbc28aaa
CD
5341
5342Since column view is just an overlay over a buffer, it cannot be
5343exported or printed directly. If you want to capture a column view, use
c8d0cf5c 5344a @code{columnview} dynamic block (@pxref{Dynamic blocks}). The frame
28a16a1b 5345of this block looks like this:
dbc28aaa 5346
c8d0cf5c 5347@cindex #+BEGIN, columnview
dbc28aaa
CD
5348@example
5349* The column view
5350#+BEGIN: columnview :hlines 1 :id "label"
5351
5352#+END:
5353@end example
5354
5355@noindent This dynamic block has the following parameters:
5356
5357@table @code
5358@item :id
c8d0cf5c 5359This is the most important parameter. Column view is a feature that is
dbc28aaa 5360often localized to a certain (sub)tree, and the capture block might be
c8d0cf5c
CD
5361at a different location in the file. To identify the tree whose view to
5362capture, you can use 4 values:
5363@cindex property, ID
dbc28aaa
CD
5364@example
5365local @r{use the tree in which the capture block is located}
5366global @r{make a global view, including all headings in the file}
c8d0cf5c 5367"file:@var{path-to-file}"
55e0839d 5368 @r{run column view at the top of this file}
c8d0cf5c 5369"@var{ID}" @r{call column view in the tree that has an @code{:ID:}}
b349f79f
CD
5370 @r{property with the value @i{label}. You can use}
5371 @r{@kbd{M-x org-id-copy} to create a globally unique ID for}
5372 @r{the current entry and copy it to the kill-ring.}
dbc28aaa
CD
5373@end example
5374@item :hlines
c8d0cf5c
CD
5375When @code{t}, insert an hline after every line. When a number @var{N}, insert
5376an hline before each headline with level @code{<= @var{N}}.
dbc28aaa 5377@item :vlines
c8d0cf5c 5378When set to @code{t}, force column groups to get vertical lines.
28a16a1b
CD
5379@item :maxlevel
5380When set to a number, don't capture entries below this level.
5381@item :skip-empty-rows
c8d0cf5c 5382When set to @code{t}, skip rows where the only non-empty specifier of the
28a16a1b
CD
5383column view is @code{ITEM}.
5384
dbc28aaa
CD
5385@end table
5386
5387@noindent
5388The following commands insert or update the dynamic block:
5389
5390@table @kbd
acedf35c 5391@orgcmd{C-c C-x i,org-insert-columns-dblock}
dbc28aaa 5392Insert a dynamic block capturing a column view. You will be prompted
c8d0cf5c 5393for the scope or ID of the view.
acedf35c 5394@orgcmdkkc{C-c C-c,C-c C-x C-u,org-dblock-update}
c8d0cf5c 5395Update dynamic block at point. The cursor needs to be in the
dbc28aaa 5396@code{#+BEGIN} line of the dynamic block.
acedf35c 5397@orgcmd{C-u C-c C-x C-u,org-update-all-dblocks}
dbc28aaa 5398Update all dynamic blocks (@pxref{Dynamic blocks}). This is useful if
acedf35c
CD
5399you have several clock table blocks, column-capturing blocks or other dynamic
5400blocks in a buffer.
dbc28aaa
CD
5401@end table
5402
864c9740 5403You can add formulas to the column view table and you may add plotting
c8d0cf5c 5404instructions in front of the table---these will survive an update of the
864c9740
CD
5405block. If there is a @code{#+TBLFM:} after the table, the table will
5406actually be recalculated automatically after an update.
5407
c8d0cf5c
CD
5408An alternative way to capture and process property values into a table is
5409provided by Eric Schulte's @file{org-collector.el} which is a contributed
5410package@footnote{Contributed packages are not part of Emacs, but are
5411distributed with the main distribution of Org (visit
5412@uref{http://orgmode.org}).}. It provides a general API to collect
5413properties from entries in a certain scope, and arbitrary Lisp expressions to
5414process these values before inserting them into a table or a dynamic block.
5415
a7808fba 5416@node Property API, , Column view, Properties and Columns
4009494e
GM
5417@section The Property API
5418@cindex properties, API
5419@cindex API, for properties
5420
5421There is a full API for accessing and changing properties. This API can
5422be used by Emacs Lisp programs to work with properties and to implement
5423features based on them. For more information see @ref{Using the
5424property API}.
5425
a351880d 5426@node Dates and Times, Capture - Refile - Archive, Properties and Columns, Top
86fbb8ca 5427@chapter Dates and times
dbc28aaa
CD
5428@cindex dates
5429@cindex times
c8d0cf5c
CD
5430@cindex timestamp
5431@cindex date stamp
4009494e 5432
dbc28aaa
CD
5433To assist project planning, TODO items can be labeled with a date and/or
5434a time. The specially formatted string carrying the date and time
e66ba1df 5435information is called a @emph{timestamp} in Org mode. This may be a
dbc28aaa 5436little confusing because timestamp is often used as indicating when
e66ba1df 5437something was created or last changed. However, in Org mode this term
dbc28aaa 5438is used in a much wider sense.
4009494e
GM
5439
5440@menu
c0468714
GM
5441* Timestamps:: Assigning a time to a tree entry
5442* Creating timestamps:: Commands which insert timestamps
5443* Deadlines and scheduling:: Planning your work
5444* Clocking work time:: Tracking how long you spend on a task
c0468714
GM
5445* Effort estimates:: Planning work effort in advance
5446* Relative timer:: Notes with a running timer
afe98dfa 5447* Countdown timer:: Starting a countdown timer for a task
4009494e
GM
5448@end menu
5449
5450
a7808fba 5451@node Timestamps, Creating timestamps, Dates and Times, Dates and Times
c8d0cf5c
CD
5452@section Timestamps, deadlines, and scheduling
5453@cindex timestamps
4009494e
GM
5454@cindex ranges, time
5455@cindex date stamps
5456@cindex deadlines
5457@cindex scheduling
5458
7006d207 5459A timestamp is a specification of a date (possibly with a time or a range of
e66ba1df
BG
5460times) in a special format, either @samp{<2003-09-16 Tue>}@footnote{In this
5461simplest form, the day name is optional when you type the date yourself.
5462However, any dates inserted or modified by Org will add that day name, for
5463reading convenience.} or @samp{<2003-09-16 Tue 09:39>} or @samp{<2003-09-16
5464Tue 12:00-12:30>}@footnote{This is inspired by the standard ISO 8601
5465date/time format. To use an alternative format, see @ref{Custom time
5466format}.}. A timestamp can appear anywhere in the headline or body of an Org
5467tree entry. Its presence causes entries to be shown on specific dates in the
5468agenda (@pxref{Weekly/daily agenda}). We distinguish:
4009494e
GM
5469
5470@table @var
c8d0cf5c 5471@item Plain timestamp; Event; Appointment
4009494e 5472@cindex timestamp
e66ba1df 5473@cindex appointment
c8d0cf5c 5474A simple timestamp just assigns a date/time to an item. This is just
dbc28aaa
CD
5475like writing down an appointment or event in a paper agenda. In the
5476timeline and agenda displays, the headline of an entry associated with a
c8d0cf5c 5477plain timestamp will be shown exactly on that date.
4009494e
GM
5478
5479@example
8223b1d2
BG
5480* Meet Peter at the movies
5481 <2006-11-01 Wed 19:15>
5482* Discussion on climate change
5483 <2006-11-02 Thu 20:00-22:00>
4009494e
GM
5484@end example
5485
c8d0cf5c 5486@item Timestamp with repeater interval
4009494e 5487@cindex timestamp, with repeater interval
c8d0cf5c 5488A timestamp may contain a @emph{repeater interval}, indicating that it
4009494e 5489applies not only on the given date, but again and again after a certain
c8d0cf5c 5490interval of N days (d), weeks (w), months (m), or years (y). The
4009494e
GM
5491following will show up in the agenda every Wednesday:
5492
5493@example
8223b1d2
BG
5494* Pick up Sam at school
5495 <2007-05-16 Wed 12:30 +1w>
4009494e
GM
5496@end example
5497
5498@item Diary-style sexp entries
e66ba1df 5499For more complex date specifications, Org mode supports using the special
ce57c2fe
BG
5500sexp diary entries implemented in the Emacs calendar/diary
5501package@footnote{When working with the standard diary sexp functions, you
5502need to be very careful with the order of the arguments. That order depend
5503evilly on the variable @code{calendar-date-style} (or, for older Emacs
5504versions, @code{european-calendar-style}). For example, to specify a date
5505December 12, 2005, the call might look like @code{(diary-date 12 1 2005)} or
5506@code{(diary-date 1 12 2005)} or @code{(diary-date 2005 12 1)}, depending on
e66ba1df 5507the settings. This has been the source of much confusion. Org mode users
ce57c2fe
BG
5508can resort to special versions of these functions like @code{org-date} or
5509@code{org-anniversary}. These work just like the corresponding @code{diary-}
5510functions, but with stable ISO order of arguments (year, month, day) wherever
153ae947
BG
5511applicable, independent of the value of @code{calendar-date-style}.}. For
5512example with optional time
4009494e
GM
5513
5514@example
153ae947 5515* 22:00-23:00 The nerd meeting on every 2nd Thursday of the month
ce57c2fe 5516 <%%(org-float t 4 2)>
4009494e
GM
5517@end example
5518
5519@item Time/Date range
5520@cindex timerange
5521@cindex date range
c8d0cf5c 5522Two timestamps connected by @samp{--} denote a range. The headline
4009494e
GM
5523will be shown on the first and last day of the range, and on any dates
5524that are displayed and fall in the range. Here is an example:
5525
5526@example
5527** Meeting in Amsterdam
5528 <2004-08-23 Mon>--<2004-08-26 Thu>
5529@end example
5530
c8d0cf5c 5531@item Inactive timestamp
4009494e
GM
5532@cindex timestamp, inactive
5533@cindex inactive timestamp
c8d0cf5c
CD
5534Just like a plain timestamp, but with square brackets instead of
5535angular ones. These timestamps are inactive in the sense that they do
4009494e
GM
5536@emph{not} trigger an entry to show up in the agenda.
5537
5538@example
8223b1d2
BG
5539* Gillian comes late for the fifth time
5540 [2006-11-01 Wed]
4009494e
GM
5541@end example
5542
5543@end table
5544
a7808fba 5545@node Creating timestamps, Deadlines and scheduling, Timestamps, Dates and Times
4009494e
GM
5546@section Creating timestamps
5547@cindex creating timestamps
5548@cindex timestamps, creating
5549
e66ba1df 5550For Org mode to recognize timestamps, they need to be in the specific
c8d0cf5c 5551format. All commands listed below produce timestamps in the correct
4009494e
GM
5552format.
5553
5554@table @kbd
afe98dfa 5555@orgcmd{C-c .,org-time-stamp}
c8d0cf5c
CD
5556Prompt for a date and insert a corresponding timestamp. When the cursor is
5557at an existing timestamp in the buffer, the command is used to modify this
864c9740
CD
5558timestamp instead of inserting a new one. When this command is used twice in
5559succession, a time range is inserted.
4009494e 5560@c
afe98dfa 5561@orgcmd{C-c !,org-time-stamp-inactive}
c8d0cf5c 5562Like @kbd{C-c .}, but insert an inactive timestamp that will not cause
4009494e
GM
5563an agenda entry.
5564@c
c8d0cf5c
CD
5565@kindex C-u C-c .
5566@kindex C-u C-c !
5567@item C-u C-c .
5568@itemx C-u C-c !
5569@vindex org-time-stamp-rounding-minutes
5570Like @kbd{C-c .} and @kbd{C-c !}, but use the alternative format which
5571contains date and time. The default time can be rounded to multiples of 5
5572minutes, see the option @code{org-time-stamp-rounding-minutes}.
5573@c
e66ba1df
BG
5574@orgkey{C-c C-c}
5575Normalize timestamp, insert/fix day name if missing or wrong.
5576@c
afe98dfa 5577@orgcmd{C-c <,org-date-from-calendar}
c8d0cf5c 5578Insert a timestamp corresponding to the cursor date in the Calendar.
4009494e 5579@c
afe98dfa 5580@orgcmd{C-c >,org-goto-calendar}
4009494e 5581Access the Emacs calendar for the current date. If there is a
a7808fba 5582timestamp in the current line, go to the corresponding date
4009494e
GM
5583instead.
5584@c
afe98dfa 5585@orgcmd{C-c C-o,org-open-at-point}
c8d0cf5c 5586Access the agenda for the date given by the timestamp or -range at
a7808fba 5587point (@pxref{Weekly/daily agenda}).
4009494e 5588@c
acedf35c 5589@orgcmdkkcc{S-@key{left},S-@key{right},org-timestamp-down-day,org-timestamp-up-day}
4009494e 5590Change date at cursor by one day. These key bindings conflict with
c8d0cf5c 5591shift-selection and related modes (@pxref{Conflicts}).
4009494e 5592@c
acedf35c 5593@orgcmdkkcc{S-@key{up},S-@key{down},org-timestamp-up,org-timestamp-down-down}
4009494e 5594Change the item under the cursor in a timestamp. The cursor can be on a
c8d0cf5c
CD
5595year, month, day, hour or minute. When the timestamp contains a time range
5596like @samp{15:30-16:30}, modifying the first time will also shift the second,
5597shifting the time block with constant length. To change the length, modify
5598the second time. Note that if the cursor is in a headline and not at a
5599timestamp, these same keys modify the priority of an item.
ce57c2fe 5600(@pxref{Priorities}). The key bindings also conflict with shift-selection and
c8d0cf5c 5601related modes (@pxref{Conflicts}).
4009494e 5602@c
acedf35c 5603@orgcmd{C-c C-y,org-evaluate-time-range}
4009494e 5604@cindex evaluate time range
a7808fba
CD
5605Evaluate a time range by computing the difference between start and end.
5606With a prefix argument, insert result after the time range (in a table: into
5607the following column).
4009494e
GM
5608@end table
5609
5610
5611@menu
e66ba1df 5612* The date/time prompt:: How Org mode helps you entering date and time
c0468714 5613* Custom time format:: Making dates look different
4009494e
GM
5614@end menu
5615
5616@node The date/time prompt, Custom time format, Creating timestamps, Creating timestamps
5617@subsection The date/time prompt
5618@cindex date, reading in minibuffer
5619@cindex time, reading in minibuffer
5620
c8d0cf5c 5621@vindex org-read-date-prefer-future
e66ba1df 5622When Org mode prompts for a date/time, the default is shown in default
7006d207
CD
5623date/time format, and the prompt therefore seems to ask for a specific
5624format. But it will in fact accept any string containing some date and/or
5625time information, and it is really smart about interpreting your input. You
dbc28aaa 5626can, for example, use @kbd{C-y} to paste a (possibly multi-line) string
e66ba1df 5627copied from an email message. Org mode will find whatever information is in
7006d207
CD
5628there and derive anything you have not specified from the @emph{default date
5629and time}. The default is usually the current date and time, but when
5630modifying an existing timestamp, or when entering the second stamp of a
5631range, it is taken from the stamp in the buffer. When filling in
e66ba1df 5632information, Org mode assumes that most of the time you will want to enter a
7006d207
CD
5633date in the future: if you omit the month/year and the given day/month is
5634@i{before} today, it will assume that you mean a future date@footnote{See the
a351880d
CD
5635variable @code{org-read-date-prefer-future}. You may set that variable to
5636the symbol @code{time} to even make a time before now shift the date to
5637tomorrow.}. If the date has been automatically shifted into the future, the
5638time prompt will show this with @samp{(=>F).}
dbc28aaa 5639
07450bee 5640For example, let's assume that today is @b{June 13, 2006}. Here is how
e66ba1df 5641various inputs will be interpreted, the items filled in by Org mode are
dbc28aaa
CD
5642in @b{bold}.
5643
5644@example
ce57c2fe
BG
56453-2-5 @result{} 2003-02-05
56462/5/3 @result{} 2003-02-05
564714 @result{} @b{2006}-@b{06}-14
564812 @result{} @b{2006}-@b{07}-12
56492/5 @result{} @b{2007}-02-05
5650Fri @result{} nearest Friday (default date or later)
5651sep 15 @result{} @b{2006}-09-15
5652feb 15 @result{} @b{2007}-02-15
5653sep 12 9 @result{} 2009-09-12
565412:45 @result{} @b{2006}-@b{06}-@b{13} 12:45
565522 sept 0:34 @result{} @b{2006}-09-22 0:34
5656w4 @result{} ISO week for of the current year @b{2006}
56572012 w4 fri @result{} Friday of ISO week 4 in 2012
56582012-w04-5 @result{} Same as above
dbc28aaa
CD
5659@end example
5660
5661Furthermore you can specify a relative date by giving, as the
5662@emph{first} thing in the input: a plus/minus sign, a number and a
c8d0cf5c 5663letter ([dwmy]) to indicate change in days, weeks, months, or years. With a
dbc28aaa
CD
5664single plus or minus, the date is always relative to today. With a
5665double plus or minus, it is relative to the default date. If instead of
5666a single letter, you use the abbreviation of day name, the date will be
1df7defd 5667the Nth such day, e.g.:
dbc28aaa
CD
5668
5669@example
ce57c2fe
BG
5670+0 @result{} today
5671. @result{} today
5672+4d @result{} four days from today
5673+4 @result{} same as above
5674+2w @result{} two weeks from today
5675++5 @result{} five days from default date
5676+2tue @result{} second Tuesday from now.
4009494e
GM
5677@end example
5678
c8d0cf5c
CD
5679@vindex parse-time-months
5680@vindex parse-time-weekdays
4009494e
GM
5681The function understands English month and weekday abbreviations. If
5682you want to use unabbreviated names and/or other languages, configure
5683the variables @code{parse-time-months} and @code{parse-time-weekdays}.
5684
ce57c2fe
BG
5685@vindex org-read-date-force-compatible-dates
5686Not all dates can be represented in a given Emacs implementation. By default
5687Org mode forces dates into the compatibility range 1970--2037 which works on
5688all Emacs implementations. If you want to use dates outside of this range,
5689read the docstring of the variable
5690@code{org-read-date-force-compatible-dates}.
5691
afe98dfa 5692You can specify a time range by giving start and end times or by giving a
ce57c2fe
BG
5693start time and a duration (in HH:MM format). Use one or two dash(es) as the
5694separator in the former case and use '+' as the separator in the latter
1df7defd 5695case, e.g.:
afe98dfa
CD
5696
5697@example
ce57c2fe
BG
569811am-1:15pm @result{} 11:00-13:15
569911am--1:15pm @result{} same as above
570011am+2:15 @result{} same as above
afe98dfa
CD
5701@end example
5702
4009494e 5703@cindex calendar, for selecting date
c8d0cf5c 5704@vindex org-popup-calendar-for-date-prompt
4009494e
GM
5705Parallel to the minibuffer prompt, a calendar is popped up@footnote{If
5706you don't need/want the calendar, configure the variable
5707@code{org-popup-calendar-for-date-prompt}.}. When you exit the date
5708prompt, either by clicking on a date in the calendar, or by pressing
5709@key{RET}, the date selected in the calendar will be combined with the
5710information entered at the prompt. You can control the calendar fully
5711from the minibuffer:
5712
4009494e 5713@kindex <
4009494e 5714@kindex >
86fbb8ca
CD
5715@kindex M-v
5716@kindex C-v
4009494e 5717@kindex mouse-1
4009494e 5718@kindex S-@key{right}
4009494e 5719@kindex S-@key{left}
4009494e 5720@kindex S-@key{down}
4009494e 5721@kindex S-@key{up}
4009494e 5722@kindex M-S-@key{right}
4009494e 5723@kindex M-S-@key{left}
4009494e 5724@kindex @key{RET}
dbc28aaa 5725@example
86fbb8ca 5726@key{RET} @r{Choose date at cursor in calendar.}
dbc28aaa
CD
5727mouse-1 @r{Select date by clicking on it.}
5728S-@key{right}/@key{left} @r{One day forward/backward.}
5729S-@key{down}/@key{up} @r{One week forward/backward.}
5730M-S-@key{right}/@key{left} @r{One month forward/backward.}
86fbb8ca
CD
5731> / < @r{Scroll calendar forward/backward by one month.}
5732M-v / C-v @r{Scroll calendar forward/backward by 3 months.}
dbc28aaa
CD
5733@end example
5734
c8d0cf5c 5735@vindex org-read-date-display-live
a7808fba
CD
5736The actions of the date/time prompt may seem complex, but I assure you they
5737will grow on you, and you will start getting annoyed by pretty much any other
5738way of entering a date/time out there. To help you understand what is going
5739on, the current interpretation of your input will be displayed live in the
5740minibuffer@footnote{If you find this distracting, turn the display of with
5741@code{org-read-date-display-live}.}.
4009494e
GM
5742
5743@node Custom time format, , The date/time prompt, Creating timestamps
5744@subsection Custom time format
5745@cindex custom date/time format
5746@cindex time format, custom
5747@cindex date format, custom
5748
c8d0cf5c
CD
5749@vindex org-display-custom-times
5750@vindex org-time-stamp-custom-formats
e66ba1df 5751Org mode uses the standard ISO notation for dates and times as it is
4009494e
GM
5752defined in ISO 8601. If you cannot get used to this and require another
5753representation of date and time to keep you happy, you can get it by
5754customizing the variables @code{org-display-custom-times} and
5755@code{org-time-stamp-custom-formats}.
5756
5757@table @kbd
acedf35c 5758@orgcmd{C-c C-x C-t,org-toggle-time-stamp-overlays}
4009494e
GM
5759Toggle the display of custom formats for dates and times.
5760@end table
5761
5762@noindent
e66ba1df 5763Org mode needs the default format for scanning, so the custom date/time
c8d0cf5c 5764format does not @emph{replace} the default format---instead it is put
4009494e
GM
5765@emph{over} the default format using text properties. This has the
5766following consequences:
5767@itemize @bullet
28a16a1b 5768@item
c8d0cf5c 5769You cannot place the cursor onto a timestamp anymore, only before or
4009494e
GM
5770after.
5771@item
5772The @kbd{S-@key{up}/@key{down}} keys can no longer be used to adjust
c8d0cf5c 5773each component of a timestamp. If the cursor is at the beginning of
4009494e
GM
5774the stamp, @kbd{S-@key{up}/@key{down}} will change the stamp by one day,
5775just like @kbd{S-@key{left}/@key{right}}. At the end of the stamp, the
5776time will be changed by one minute.
5777@item
c8d0cf5c 5778If the timestamp contains a range of clock times or a repeater, these
acedf35c 5779will not be overlaid, but remain in the buffer as they were.
4009494e 5780@item
c8d0cf5c 5781When you delete a timestamp character-by-character, it will only
4009494e
GM
5782disappear from the buffer after @emph{all} (invisible) characters
5783belonging to the ISO timestamp have been removed.
5784@item
c8d0cf5c 5785If the custom timestamp format is longer than the default and you are
4009494e
GM
5786using dates in tables, table alignment will be messed up. If the custom
5787format is shorter, things do work as expected.
5788@end itemize
5789
5790
a7808fba
CD
5791@node Deadlines and scheduling, Clocking work time, Creating timestamps, Dates and Times
5792@section Deadlines and scheduling
4009494e 5793
c8d0cf5c 5794A timestamp may be preceded by special keywords to facilitate planning:
4009494e
GM
5795
5796@table @var
5797@item DEADLINE
5798@cindex DEADLINE keyword
dbc28aaa
CD
5799
5800Meaning: the task (most likely a TODO item, though not necessarily) is supposed
5801to be finished on that date.
5802
c8d0cf5c 5803@vindex org-deadline-warning-days
dbc28aaa
CD
5804On the deadline date, the task will be listed in the agenda. In
5805addition, the agenda for @emph{today} will carry a warning about the
5806approaching or missed deadline, starting
5807@code{org-deadline-warning-days} before the due date, and continuing
1df7defd 5808until the entry is marked DONE@. An example:
4009494e
GM
5809
5810@example
5811*** TODO write article about the Earth for the Guide
4009494e 5812 DEADLINE: <2004-02-29 Sun>
801a68c8 5813 The editor in charge is [[bbdb:Ford Prefect]]
4009494e
GM
5814@end example
5815
5816You can specify a different lead time for warnings for a specific
5817deadlines using the following syntax. Here is an example with a warning
5818period of 5 days @code{DEADLINE: <2004-02-29 Sun -5d>}.
5819
5820@item SCHEDULED
5821@cindex SCHEDULED keyword
dbc28aaa
CD
5822
5823Meaning: you are planning to start working on that task on the given
5824date.
5825
c8d0cf5c 5826@vindex org-agenda-skip-scheduled-if-done
dbc28aaa 5827The headline will be listed under the given date@footnote{It will still
1df7defd 5828be listed on that date after it has been marked DONE@. If you don't like
4009494e
GM
5829this, set the variable @code{org-agenda-skip-scheduled-if-done}.}. In
5830addition, a reminder that the scheduled date has passed will be present
1df7defd 5831in the compilation for @emph{today}, until the entry is marked DONE, i.e.,
acedf35c 5832the task will automatically be forwarded until completed.
4009494e
GM
5833
5834@example
5835*** TODO Call Trillian for a date on New Years Eve.
5836 SCHEDULED: <2004-12-25 Sat>
5837@end example
dbc28aaa
CD
5838
5839@noindent
e66ba1df 5840@b{Important:} Scheduling an item in Org mode should @i{not} be
dbc28aaa
CD
5841understood in the same way that we understand @i{scheduling a meeting}.
5842Setting a date for a meeting is just a simple appointment, you should
c8d0cf5c
CD
5843mark this entry with a simple plain timestamp, to get this item shown
5844on the date where it applies. This is a frequent misunderstanding by
e66ba1df 5845Org users. In Org mode, @i{scheduling} means setting a date when you
dbc28aaa 5846want to start working on an action item.
4009494e
GM
5847@end table
5848
c8d0cf5c 5849You may use timestamps with repeaters in scheduling and deadline
e66ba1df 5850entries. Org mode will issue early and late warnings based on the
c8d0cf5c 5851assumption that the timestamp represents the @i{nearest instance} of
dbc28aaa
CD
5852the repeater. However, the use of diary sexp entries like
5853@c
ce57c2fe 5854@code{<%%(org-float t 42)>}
dbc28aaa 5855@c
e66ba1df 5856in scheduling and deadline timestamps is limited. Org mode does not
dbc28aaa
CD
5857know enough about the internals of each sexp function to issue early and
5858late warnings. However, it will show the item on each day where the
5859sexp entry matches.
5860
4009494e 5861@menu
c0468714
GM
5862* Inserting deadline/schedule:: Planning items
5863* Repeated tasks:: Items that show up again and again
4009494e
GM
5864@end menu
5865
5866@node Inserting deadline/schedule, Repeated tasks, Deadlines and scheduling, Deadlines and scheduling
a7808fba 5867@subsection Inserting deadlines or schedules
4009494e 5868
ce57c2fe
BG
5869The following commands allow you to quickly insert@footnote{The @samp{SCHEDULED} and
5870@samp{DEADLINE} dates are inserted on the line right below the headline. Don't put
5871any text between this line and the headline.} a deadline or to schedule
4009494e
GM
5872an item:
5873
5874@table @kbd
5875@c
acedf35c 5876@orgcmd{C-c C-d,org-deadline}
a351880d 5877Insert @samp{DEADLINE} keyword along with a stamp. The insertion will happen
ce57c2fe 5878in the line directly following the headline. Any CLOSED timestamp will be
91af3942 5879removed. When called with a prefix arg, an existing deadline will be removed
ce57c2fe 5880from the entry. Depending on the variable @code{org-log-redeadline}@footnote{with corresponding
a351880d
CD
5881@code{#+STARTUP} keywords @code{logredeadline}, @code{lognoteredeadline},
5882and @code{nologredeadline}}, a note will be taken when changing an existing
5883deadline.
ce57c2fe 5884
acedf35c 5885@orgcmd{C-c C-s,org-schedule}
4009494e 5886Insert @samp{SCHEDULED} keyword along with a stamp. The insertion will
a351880d
CD
5887happen in the line directly following the headline. Any CLOSED timestamp
5888will be removed. When called with a prefix argument, remove the scheduling
5889date from the entry. Depending on the variable
5890@code{org-log-reschedule}@footnote{with corresponding @code{#+STARTUP}
ce57c2fe
BG
5891keywords @code{logreschedule}, @code{lognotereschedule}, and
5892@code{nologreschedule}}, a note will be taken when changing an existing
a351880d 5893scheduling time.
b349f79f 5894@c
acedf35c 5895@orgcmd{C-c C-x C-k,org-mark-entry-for-agenda-action}
b349f79f
CD
5896@kindex k a
5897@kindex k s
b349f79f
CD
5898Mark the current entry for agenda action. After you have marked the entry
5899like this, you can open the agenda or the calendar to find an appropriate
5900date. With the cursor on the selected date, press @kbd{k s} or @kbd{k d} to
5901schedule the marked item.
c8d0cf5c 5902@c
acedf35c 5903@orgcmd{C-c / d,org-check-deadlines}
c8d0cf5c 5904@cindex sparse tree, for deadlines
c8d0cf5c
CD
5905@vindex org-deadline-warning-days
5906Create a sparse tree with all deadlines that are either past-due, or
5907which will become due within @code{org-deadline-warning-days}.
5908With @kbd{C-u} prefix, show all deadlines in the file. With a numeric
5909prefix, check that many days. For example, @kbd{C-1 C-c / d} shows
5910all deadlines due tomorrow.
5911@c
acedf35c 5912@orgcmd{C-c / b,org-check-before-date}
c8d0cf5c
CD
5913Sparse tree for deadlines and scheduled items before a given date.
5914@c
acedf35c 5915@orgcmd{C-c / a,org-check-after-date}
c8d0cf5c 5916Sparse tree for deadlines and scheduled items after a given date.
4009494e
GM
5917@end table
5918
ce57c2fe 5919Note that @code{org-schedule} and @code{org-deadline} supports
1df7defd 5920setting the date by indicating a relative time: e.g., +1d will set
ce57c2fe
BG
5921the date to the next day after today, and --1w will set the date
5922to the previous week before any current timestamp.
5923
4009494e 5924@node Repeated tasks, , Inserting deadline/schedule, Deadlines and scheduling
a7808fba 5925@subsection Repeated tasks
c8d0cf5c
CD
5926@cindex tasks, repeated
5927@cindex repeated tasks
4009494e 5928
e66ba1df 5929Some tasks need to be repeated again and again. Org mode helps to
28a16a1b 5930organize such tasks using a so-called repeater in a DEADLINE, SCHEDULED,
c8d0cf5c 5931or plain timestamp. In the following example
4009494e
GM
5932@example
5933** TODO Pay the rent
5934 DEADLINE: <2005-10-01 Sat +1m>
5935@end example
c8d0cf5c
CD
5936@noindent
5937the @code{+1m} is a repeater; the intended interpretation is that the task
5938has a deadline on <2005-10-01> and repeats itself every (one) month starting
8223b1d2
BG
5939from that time. You can use yearly, monthly, weekly, daily and hourly repeat
5940cookies by using the @code{y/w/m/d/h} letters. If you need both a repeater
5941and a special warning period in a deadline entry, the repeater should come
5942first and the warning period last: @code{DEADLINE: <2005-10-01 Sat +1m -3d>}.
4009494e 5943
86fbb8ca
CD
5944@vindex org-todo-repeat-to-state
5945Deadlines and scheduled items produce entries in the agenda when they are
5946over-due, so it is important to be able to mark such an entry as completed
5947once you have done so. When you mark a DEADLINE or a SCHEDULE with the TODO
5948keyword DONE, it will no longer produce entries in the agenda. The problem
5949with this is, however, that then also the @emph{next} instance of the
e66ba1df 5950repeated entry will not be active. Org mode deals with this in the following
86fbb8ca
CD
5951way: When you try to mark such an entry DONE (using @kbd{C-c C-t}), it will
5952shift the base date of the repeating timestamp by the repeater interval, and
5953immediately set the entry state back to TODO@footnote{In fact, the target
5954state is taken from, in this sequence, the @code{REPEAT_TO_STATE} property or
5955the variable @code{org-todo-repeat-to-state}. If neither of these is
5956specified, the target state defaults to the first state of the TODO state
5957sequence.}. In the example above, setting the state to DONE would actually
5958switch the date like this:
4009494e
GM
5959
5960@example
5961** TODO Pay the rent
5962 DEADLINE: <2005-11-01 Tue +1m>
5963@end example
5964
c8d0cf5c 5965@vindex org-log-repeat
a7808fba
CD
5966A timestamp@footnote{You can change this using the option
5967@code{org-log-repeat}, or the @code{#+STARTUP} options @code{logrepeat},
5968@code{lognoterepeat}, and @code{nologrepeat}. With @code{lognoterepeat}, you
a50253cc 5969will also be prompted for a note.} will be added under the deadline, to keep
a7808fba 5970a record that you actually acted on the previous instance of this deadline.
4009494e
GM
5971
5972As a consequence of shifting the base date, this entry will no longer be
5973visible in the agenda when checking past dates, but all future instances
5974will be visible.
5975
28a16a1b 5976With the @samp{+1m} cookie, the date shift will always be exactly one
c8d0cf5c 5977month. So if you have not paid the rent for three months, marking this
28a16a1b
CD
5978entry DONE will still keep it as an overdue deadline. Depending on the
5979task, this may not be the best way to handle it. For example, if you
acedf35c 5980forgot to call your father for 3 weeks, it does not make sense to call
a7808fba 5981him 3 times in a single day to make up for it. Finally, there are tasks
28a16a1b 5982like changing batteries which should always repeat a certain time
e66ba1df 5983@i{after} the last time you did it. For these tasks, Org mode has
acedf35c 5984special repeaters @samp{++} and @samp{.+}. For example:
28a16a1b
CD
5985
5986@example
5987** TODO Call Father
5988 DEADLINE: <2008-02-10 Sun ++1w>
5989 Marking this DONE will shift the date by at least one week,
5990 but also by as many weeks as it takes to get this date into
5991 the future. However, it stays on a Sunday, even if you called
5992 and marked it done on Saturday.
5993** TODO Check the batteries in the smoke detectors
5994 DEADLINE: <2005-11-01 Tue .+1m>
5995 Marking this DONE will shift the date to one month after
5996 today.
5997@end example
5998
4009494e 5999You may have both scheduling and deadline information for a specific
c8d0cf5c
CD
6000task---just make sure that the repeater intervals on both are the same.
6001
6002An alternative to using a repeater is to create a number of copies of a task
6003subtree, with dates shifted in each copy. The command @kbd{C-c C-x c} was
6004created for this purpose, it is described in @ref{Structure editing}.
6005
4009494e 6006
acedf35c 6007@node Clocking work time, Effort estimates, Deadlines and scheduling, Dates and Times
dbc28aaa 6008@section Clocking work time
acedf35c
CD
6009@cindex clocking time
6010@cindex time clocking
4009494e 6011
e66ba1df 6012Org mode allows you to clock the time you spend on specific tasks in a
8223b1d2
BG
6013project. When you start working on an item, you can start the clock. When
6014you stop working on that task, or when you mark the task done, the clock is
6015stopped and the corresponding time interval is recorded. It also computes
6016the total time spent on each subtree@footnote{Clocking only works if all
6017headings are indented with less than 30 stars. This is a hardcoded
6018limitation of `lmax' in `org-clock-sum'.} of a project. And it remembers a
6019history or tasks recently clocked, to that you can jump quickly between a
6020number of tasks absorbing your time.
c8d0cf5c 6021
a351880d 6022To save the clock history across Emacs sessions, use
c8d0cf5c 6023@lisp
a351880d 6024(setq org-clock-persist 'history)
c8d0cf5c
CD
6025(org-clock-persistence-insinuate)
6026@end lisp
a351880d
CD
6027When you clock into a new task after resuming Emacs, the incomplete
6028clock@footnote{To resume the clock under the assumption that you have worked
6029on this task while outside Emacs, use @code{(setq org-clock-persist t)}.}
6030will be found (@pxref{Resolving idle time}) and you will be prompted about
6031what to do with it.
c8d0cf5c 6032
acedf35c
CD
6033@menu
6034* Clocking commands:: Starting and stopping a clock
6035* The clock table:: Detailed reports
6036* Resolving idle time:: Resolving time when you've been idle
6037@end menu
6038
6039@node Clocking commands, The clock table, Clocking work time, Clocking work time
6040@subsection Clocking commands
6041
4009494e 6042@table @kbd
acedf35c 6043@orgcmd{C-c C-x C-i,org-clock-in}
c8d0cf5c 6044@vindex org-clock-into-drawer
8223b1d2 6045@vindex org-clock-continuously
ce57c2fe 6046@cindex property, LOG_INTO_DRAWER
4009494e 6047Start the clock on the current item (clock-in). This inserts the CLOCK
dbc28aaa
CD
6048keyword together with a timestamp. If this is not the first clocking of
6049this item, the multiple CLOCK lines will be wrapped into a
c8d0cf5c 6050@code{:LOGBOOK:} drawer (see also the variable
ce57c2fe
BG
6051@code{org-clock-into-drawer}). You can also overrule
6052the setting of this variable for a subtree by setting a
6053@code{CLOCK_INTO_DRAWER} or @code{LOG_INTO_DRAWER} property.
6054When called with a @kbd{C-u} prefix argument,
a7808fba 6055select the task from a list of recently clocked tasks. With two @kbd{C-u
8223b1d2
BG
6056C-u} prefixes, clock into the task at point and mark it as the default task;
6057the default task will then always be available with letter @kbd{d} when
6058selecting a clocking task. With three @kbd{C-u C-u C-u} prefixes, force
6059continuous clocking by starting the clock when the last clock stopped.@*
c8d0cf5c
CD
6060@cindex property: CLOCK_MODELINE_TOTAL
6061@cindex property: LAST_REPEAT
6062@vindex org-clock-modeline-total
6063While the clock is running, the current clocking time is shown in the mode
6064line, along with the title of the task. The clock time shown will be all
6065time ever clocked for this task and its children. If the task has an effort
6066estimate (@pxref{Effort estimates}), the mode line displays the current
6067clocking time against it@footnote{To add an effort estimate ``on the fly'',
6068hook a function doing this to @code{org-clock-in-prepare-hook}.} If the task
6069is a repeating one (@pxref{Repeated tasks}), only the time since the last
6070reset of the task @footnote{as recorded by the @code{LAST_REPEAT} property}
6071will be shown. More control over what time is shown can be exercised with
6072the @code{CLOCK_MODELINE_TOTAL} property. It may have the values
6073@code{current} to show only the current clocking instance, @code{today} to
6074show all time clocked on this tasks today (see also the variable
6075@code{org-extend-today-until}), @code{all} to include all time, or
6076@code{auto} which is the default@footnote{See also the variable
6077@code{org-clock-modeline-total}.}.@* Clicking with @kbd{mouse-1} onto the
6078mode line entry will pop up a menu with clocking options.
acedf35c
CD
6079@c
6080@orgcmd{C-c C-x C-o,org-clock-out}
c8d0cf5c 6081@vindex org-log-note-clock-out
a20d3598 6082Stop the clock (clock-out). This inserts another timestamp at the same
4009494e
GM
6083location where the clock was last started. It also directly computes
6084the resulting time in inserts it after the time range as @samp{=>
28a16a1b
CD
6085HH:MM}. See the variable @code{org-log-note-clock-out} for the
6086possibility to record an additional note together with the clock-out
c8d0cf5c 6087timestamp@footnote{The corresponding in-buffer setting is:
28a16a1b 6088@code{#+STARTUP: lognoteclock-out}}.
8223b1d2
BG
6089@orgcmd{C-c C-x C-x,org-clock-in-last}
6090@vindex org-clock-continuously
6091Reclock the last clocked task. With one @kbd{C-u} prefix argument,
6092select the task from the clock history. With two @kbd{C-u} prefixes,
6093force continuous clocking by starting the clock when the last clock
6094stopped.
acedf35c 6095@orgcmd{C-c C-x C-e,org-clock-modify-effort-estimate}
c8d0cf5c 6096Update the effort estimate for the current clock task.
4009494e 6097@kindex C-c C-y
c8d0cf5c 6098@kindex C-c C-c
acedf35c 6099@orgcmdkkc{C-c C-c,C-c C-y,org-evaluate-time-range}
c8d0cf5c
CD
6100Recompute the time interval after changing one of the timestamps. This
6101is only necessary if you edit the timestamps directly. If you change
4009494e 6102them with @kbd{S-@key{cursor}} keys, the update is automatic.
ce57c2fe 6103@orgcmd{C-S-@key{up/down},org-clock-timestamps-up/down}
8223b1d2 6104On @code{CLOCK} log lines, increase/decrease both timestamps so that the
735135f9 6105clock duration keeps the same.
8223b1d2
BG
6106@orgcmd{S-M-@key{up/down},org-timestamp-up/down}
6107On @code{CLOCK} log lines, increase/decrease the timestamp at point and
6108the one of the previous (or the next clock) timestamp by the same duration.
6109For example, if you hit @kbd{S-M-@key{up}} to increase a clocked-out timestamp
6110by five minutes, then the clocked-in timestamp of the next clock will be
6111increased by five minutes.
acedf35c 6112@orgcmd{C-c C-t,org-todo}
4009494e
GM
6113Changing the TODO state of an item to DONE automatically stops the clock
6114if it is running in this same item.
8223b1d2 6115@orgcmd{C-c C-x C-q,org-clock-cancel}
4009494e
GM
6116Cancel the current clock. This is useful if a clock was started by
6117mistake, or if you ended up working on something else.
acedf35c 6118@orgcmd{C-c C-x C-j,org-clock-goto}
afe98dfa
CD
6119Jump to the headline of the currently clocked in task. With a @kbd{C-u}
6120prefix arg, select the target task from a list of recently clocked tasks.
acedf35c 6121@orgcmd{C-c C-x C-d,org-clock-display}
c8d0cf5c 6122@vindex org-remove-highlights-with-change
ce57c2fe
BG
6123Display time summaries for each subtree in the current buffer. This puts
6124overlays at the end of each headline, showing the total time recorded under
6125that heading, including the time of any subheadings. You can use visibility
6126cycling to study the tree, but the overlays disappear when you change the
6127buffer (see variable @code{org-remove-highlights-with-change}) or press
6128@kbd{C-c C-c}.
acedf35c
CD
6129@end table
6130
6131The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
6132the agenda (@pxref{Weekly/daily agenda}) to show which tasks have been
6133worked on or closed during a day.
6134
8223b1d2
BG
6135@strong{Important:} note that both @code{org-clock-out} and
6136@code{org-clock-in-last} can have a global keybinding and will not
6137modify the window disposition.
6138
acedf35c
CD
6139@node The clock table, Resolving idle time, Clocking commands, Clocking work time
6140@subsection The clock table
6141@cindex clocktable, dynamic block
6142@cindex report, of clocked time
6143
6144Org mode can produce quite complex reports based on the time clocking
6145information. Such a report is called a @emph{clock table}, because it is
6146formatted as one or several Org tables.
6147
6148@table @kbd
6149@orgcmd{C-c C-x C-r,org-clock-report}
4009494e 6150Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
e66ba1df 6151report as an Org mode table into the current file. When the cursor is
dbc28aaa
CD
6152at an existing clock table, just update it. When called with a prefix
6153argument, jump to the first clock report in the current document and
e66ba1df
BG
6154update it. The clock table always includes also trees with
6155@code{:ARCHIVE:} tag.
acedf35c
CD
6156@orgcmdkkc{C-c C-c,C-c C-x C-u,org-dblock-update}
6157Update dynamic block at point. The cursor needs to be in the
6158@code{#+BEGIN} line of the dynamic block.
6159@orgkey{C-u C-c C-x C-u}
6160Update all dynamic blocks (@pxref{Dynamic blocks}). This is useful if
6161you have several clock table blocks in a buffer.
6162@orgcmdkxkc{S-@key{left},S-@key{right},org-clocktable-try-shift}
6163Shift the current @code{:block} interval and update the table. The cursor
6164needs to be in the @code{#+BEGIN: clocktable} line for this command. If
6165@code{:block} is @code{today}, it will be shifted to @code{today-1} etc.
6166@end table
6167
6168
6169Here is an example of the frame for a clock table as it is inserted into the
6170buffer with the @kbd{C-c C-x C-r} command:
6171
c8d0cf5c 6172@cindex #+BEGIN, clocktable
4009494e 6173@example
dbc28aaa 6174#+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
4009494e
GM
6175#+END: clocktable
6176@end example
6177@noindent
acedf35c
CD
6178@vindex org-clocktable-defaults
6179The @samp{BEGIN} line and specify a number of options to define the scope,
6180structure, and formatting of the report. Defaults for all these options can
6181be configured in the variable @code{org-clocktable-defaults}.
6182
6183@noindent First there are options that determine which clock entries are to
6184be selected:
4009494e 6185@example
dbc28aaa 6186:maxlevel @r{Maximum level depth to which times are listed in the table.}
acedf35c 6187 @r{Clocks at deeper levels will be summed into the upper level.}
dbc28aaa
CD
6188:scope @r{The scope to consider. This can be any of the following:}
6189 nil @r{the current buffer or narrowed region}
6190 file @r{the full current buffer}
6191 subtree @r{the subtree where the clocktable is located}
c8d0cf5c 6192 tree@var{N} @r{the surrounding level @var{N} tree, for example @code{tree3}}
dbc28aaa
CD
6193 tree @r{the surrounding level 1 tree}
6194 agenda @r{all agenda files}
6195 ("file"..) @r{scan these files}
a7808fba
CD
6196 file-with-archives @r{current file and its archives}
6197 agenda-with-archives @r{all agenda files, including archives}
6198:block @r{The time block to consider. This block is specified either}
6199 @r{absolute, or relative to the current time and may be any of}
6200 @r{these formats:}
6201 2007-12-31 @r{New year eve 2007}
6202 2007-12 @r{December 2007}
6203 2007-W50 @r{ISO-week 50 in 2007}
acedf35c 6204 2007-Q2 @r{2nd quarter in 2007}
a7808fba 6205 2007 @r{the year 2007}
c8d0cf5c
CD
6206 today, yesterday, today-@var{N} @r{a relative day}
6207 thisweek, lastweek, thisweek-@var{N} @r{a relative week}
6208 thismonth, lastmonth, thismonth-@var{N} @r{a relative month}
6209 thisyear, lastyear, thisyear-@var{N} @r{a relative year}
a7808fba 6210 @r{Use @kbd{S-@key{left}/@key{right}} keys to shift the time interval.}
c8d0cf5c
CD
6211:tstart @r{A time string specifying when to start considering times.}
6212:tend @r{A time string specifying when to stop considering times.}
a7808fba
CD
6213:step @r{@code{week} or @code{day}, to split the table into chunks.}
6214 @r{To use this, @code{:block} or @code{:tstart}, @code{:tend} are needed.}
acedf35c
CD
6215:stepskip0 @r{Do not show steps that have zero time.}
6216:fileskip0 @r{Do not show table sections from files which did not contribute.}
ce57c2fe
BG
6217:tags @r{A tags match to select entries that should contribute. See}
6218 @r{@ref{Matching tags and properties} for the match syntax.}
acedf35c
CD
6219@end example
6220
6221Then there are options which determine the formatting of the table. There
6222options are interpreted by the function @code{org-clocktable-write-default},
6223but you can specify your own function using the @code{:formatter} parameter.
6224@example
6225:emphasize @r{When @code{t}, emphasize level one and level two items.}
ce57c2fe 6226:lang @r{Language@footnote{Language terms can be set through the variable @code{org-clock-clocktable-language-setup}.} to use for descriptive cells like "Task".}
c8d0cf5c 6227:link @r{Link the item headlines in the table to their origins.}
acedf35c
CD
6228:narrow @r{An integer to limit the width of the headline column in}
6229 @r{the org table. If you write it like @samp{50!}, then the}
6230 @r{headline will also be shortened in export.}
6231:indent @r{Indent each headline field according to its level.}
6232:tcolumns @r{Number of columns to be used for times. If this is smaller}
6233 @r{than @code{:maxlevel}, lower levels will be lumped into one column.}
6234:level @r{Should a level number column be included?}
6235:compact @r{Abbreviation for @code{:level nil :indent t :narrow 40! :tcolumns 1}}
6236 @r{All are overwritten except if there is an explicit @code{:narrow}}
6237:timestamp @r{A timestamp for the entry, when available. Look for SCHEDULED,}
6238 @r{DEADLINE, TIMESTAMP and TIMESTAMP_IA, in this order.}
ce57c2fe
BG
6239:properties @r{List of properties that should be shown in the table. Each}
6240 @r{property will get its own column.}
6241:inherit-props @r{When this flag is @code{t}, the values for @code{:properties} will be inherited.}
e45e3595 6242:formula @r{Content of a @code{#+TBLFM} line to be added and evaluated.}
c8d0cf5c 6243 @r{As a special case, @samp{:formula %} adds a column with % time.}
acedf35c 6244 @r{If you do not specify a formula here, any existing formula}
e45e3595 6245 @r{below the clock table will survive updates and be evaluated.}
acedf35c 6246:formatter @r{A function to format clock data and insert it into the buffer.}
4009494e 6247@end example
c8d0cf5c 6248To get a clock summary of the current level 1 tree, for the current
dbc28aaa 6249day, you could write
4009494e 6250@example
a7808fba 6251#+BEGIN: clocktable :maxlevel 2 :block today :scope tree1 :link t
4009494e
GM
6252#+END: clocktable
6253@end example
c8d0cf5c 6254@noindent
4009494e 6255and to use a specific time range you could write@footnote{Note that all
c8d0cf5c
CD
6256parameters must be specified in a single line---the line is broken here
6257only to fit it into the manual.}
4009494e 6258@example
28a16a1b 6259#+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>"
4009494e 6260 :tend "<2006-08-10 Thu 12:00>"
4009494e
GM
6261#+END: clocktable
6262@end example
e45e3595
CD
6263A summary of the current subtree with % times would be
6264@example
6265#+BEGIN: clocktable :scope subtree :link t :formula %
6266#+END: clocktable
6267@end example
acedf35c
CD
6268A horizontally compact representation of everything clocked during last week
6269would be
6270@example
6271#+BEGIN: clocktable :scope agenda :block lastweek :compact t
6272#+END: clocktable
6273@end example
4009494e 6274
acedf35c 6275@node Resolving idle time, , The clock table, Clocking work time
8223b1d2
BG
6276@subsection Resolving idle time and continuous clocking
6277
6278@subsubheading Resolving idle time
a351880d
CD
6279@cindex resolve idle time
6280
6281@cindex idle, resolve, dangling
6282If you clock in on a work item, and then walk away from your
6283computer---perhaps to take a phone call---you often need to ``resolve'' the
6284time you were away by either subtracting it from the current clock, or
6285applying it to another one.
6286
6287@vindex org-clock-idle-time
6288By customizing the variable @code{org-clock-idle-time} to some integer, such
6289as 10 or 15, Emacs can alert you when you get back to your computer after
6290being idle for that many minutes@footnote{On computers using Mac OS X,
153ae947 6291idleness is based on actual user idleness, not just Emacs' idle time. For
a351880d 6292X11, you can install a utility program @file{x11idle.c}, available in the
8223b1d2
BG
6293@code{contrib/scripts} directory of the Org git distribution, to get the same
6294general treatment of idleness. On other systems, idle time refers to Emacs
6295idle time only.}, and ask what you want to do with the idle time. There will
6296be a question waiting for you when you get back, indicating how much idle
6297time has passed (constantly updated with the current amount), as well as a
6298set of choices to correct the discrepancy:
a351880d
CD
6299
6300@table @kbd
6301@item k
6302To keep some or all of the minutes and stay clocked in, press @kbd{k}. Org
6303will ask how many of the minutes to keep. Press @key{RET} to keep them all,
6304effectively changing nothing, or enter a number to keep that many minutes.
6305@item K
6306If you use the shift key and press @kbd{K}, it will keep however many minutes
6307you request and then immediately clock out of that task. If you keep all of
6308the minutes, this is the same as just clocking out of the current task.
6309@item s
6310To keep none of the minutes, use @kbd{s} to subtract all the away time from
6311the clock, and then check back in from the moment you returned.
6312@item S
6313To keep none of the minutes and just clock out at the start of the away time,
6314use the shift key and press @kbd{S}. Remember that using shift will always
6315leave you clocked out, no matter which option you choose.
6316@item C
6317To cancel the clock altogether, use @kbd{C}. Note that if instead of
86fbb8ca
CD
6318canceling you subtract the away time, and the resulting clock amount is less
6319than a minute, the clock will still be canceled rather than clutter up the
a351880d
CD
6320log with an empty entry.
6321@end table
6322
6323What if you subtracted those away minutes from the current clock, and now
6324want to apply them to a new clock? Simply clock in to any task immediately
6325after the subtraction. Org will notice that you have subtracted time ``on
6326the books'', so to speak, and will ask if you want to apply those minutes to
6327the next task you clock in on.
6328
6329There is one other instance when this clock resolution magic occurs. Say you
6330were clocked in and hacking away, and suddenly your cat chased a mouse who
6331scared a hamster that crashed into your UPS's power button! You suddenly
6332lose all your buffers, but thanks to auto-save you still have your recent Org
6333mode changes, including your last clock in.
6334
6335If you restart Emacs and clock into any task, Org will notice that you have a
6336dangling clock which was never clocked out from your last session. Using
6337that clock's starting time as the beginning of the unaccounted-for period,
6338Org will ask how you want to resolve that time. The logic and behavior is
ce57c2fe 6339identical to dealing with away time due to idleness; it is just happening due
a351880d
CD
6340to a recovery event rather than a set amount of idle time.
6341
6342You can also check all the files visited by your Org agenda for dangling
8223b1d2
BG
6343clocks at any time using @kbd{M-x org-resolve-clocks RET} (or @kbd{C-c C-x C-z}).
6344
6345@subsubheading Continuous clocking
6346@cindex continuous clocking
6347@vindex org-clock-continuously
6348
6349You may want to start clocking from the time when you clocked out the
6350previous task. To enable this systematically, set @code{org-clock-continuously}
6351to @code{t}. Each time you clock in, Org retrieves the clock-out time of the
6352last clocked entry for this session, and start the new clock from there.
6353
6354If you only want this from time to time, use three universal prefix arguments
6355with @code{org-clock-in} and two @kbd{C-u C-u} with @code{org-clock-in-last}.
a351880d 6356
acedf35c 6357@node Effort estimates, Relative timer, Clocking work time, Dates and Times
a7808fba 6358@section Effort estimates
96c8522a 6359@cindex effort estimates
a7808fba 6360
c8d0cf5c
CD
6361@cindex property, Effort
6362@vindex org-effort-property
a7808fba
CD
6363If you want to plan your work in a very detailed way, or if you need to
6364produce offers with quotations of the estimated work effort, you may want to
6365assign effort estimates to entries. If you are also clocking your work, you
6366may later want to compare the planned effort with the actual working time, a
6367great way to improve planning estimates. Effort estimates are stored in a
6368special property @samp{Effort}@footnote{You may change the property being
6eb02347
CD
6369used with the variable @code{org-effort-property}.}. You can set the effort
6370for an entry with the following commands:
6371
6372@table @kbd
acedf35c 6373@orgcmd{C-c C-x e,org-set-effort}
6eb02347 6374Set the effort estimate for the current entry. With a numeric prefix
acedf35c 6375argument, set it to the Nth allowed value (see below). This command is also
6eb02347 6376accessible from the agenda with the @kbd{e} key.
acedf35c 6377@orgcmd{C-c C-x C-e,org-clock-modify-effort-estimate}
6eb02347
CD
6378Modify the effort estimate of the item currently being clocked.
6379@end table
6380
6381Clearly the best way to work with effort estimates is through column view
6382(@pxref{Column view}). You should start by setting up discrete values for
6383effort estimates, and a @code{COLUMNS} format that displays these values
6384together with clock sums (if you want to clock your time). For a specific
6385buffer you can use
a7808fba
CD
6386
6387@example
ce57c2fe 6388#+PROPERTY: Effort_ALL 0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00
a7808fba
CD
6389#+COLUMNS: %40ITEM(Task) %17Effort(Estimated Effort)@{:@} %CLOCKSUM
6390@end example
6391
6392@noindent
c8d0cf5c
CD
6393@vindex org-global-properties
6394@vindex org-columns-default-format
71d35b24
CD
6395or, even better, you can set up these values globally by customizing the
6396variables @code{org-global-properties} and @code{org-columns-default-format}.
6397In particular if you want to use this setup also in the agenda, a global
6398setup may be advised.
a7808fba
CD
6399
6400The way to assign estimates to individual items is then to switch to column
6401mode, and to use @kbd{S-@key{right}} and @kbd{S-@key{left}} to change the
6402value. The values you enter will immediately be summed up in the hierarchy.
6403In the column next to it, any clocked time will be displayed.
6404
c8d0cf5c 6405@vindex org-agenda-columns-add-appointments-to-effort-sum
a7808fba
CD
6406If you switch to column view in the daily/weekly agenda, the effort column
6407will summarize the estimated work effort for each day@footnote{Please note
6408the pitfalls of summing hierarchical data in a flat list (@pxref{Agenda
b349f79f 6409column view}).}, and you can use this to find space in your schedule. To get
a7808fba
CD
6410an overview of the entire part of the day that is committed, you can set the
6411option @code{org-agenda-columns-add-appointments-to-effort-sum}. The
6412appointments on a day that take place over a specified time interval will
6413then also be added to the load estimate of the day.
6414
71d35b24
CD
6415Effort estimates can be used in secondary agenda filtering that is triggered
6416with the @kbd{/} key in the agenda (@pxref{Agenda commands}). If you have
6417these estimates defined consistently, two or three key presses will narrow
6418down the list to stuff that fits into an available time slot.
864c9740 6419
afe98dfa 6420@node Relative timer, Countdown timer, Effort estimates, Dates and Times
96c8522a
CD
6421@section Taking notes with a relative timer
6422@cindex relative timer
6423
6424When taking notes during, for example, a meeting or a video viewing, it can
6425be useful to have access to times relative to a starting time. Org provides
6426such a relative timer and make it easy to create timed notes.
6427
6428@table @kbd
acedf35c 6429@orgcmd{C-c C-x .,org-timer}
96c8522a
CD
6430Insert a relative time into the buffer. The first time you use this, the
6431timer will be started. When called with a prefix argument, the timer is
6432restarted.
acedf35c 6433@orgcmd{C-c C-x -,org-timer-item}
96c8522a
CD
6434Insert a description list item with the current relative time. With a prefix
6435argument, first reset the timer to 0.
acedf35c 6436@orgcmd{M-@key{RET},org-insert-heading}
377952e0 6437Once the timer list is started, you can also use @kbd{M-@key{RET}} to insert
96c8522a 6438new timer items.
acedf35c 6439@c for key sequences with a comma, command name macros fail :(
55e0839d
CD
6440@kindex C-c C-x ,
6441@item C-c C-x ,
acedf35c
CD
6442Pause the timer, or continue it if it is already paused
6443(@command{org-timer-pause-or-continue}).
c8d0cf5c 6444@c removed the sentence because it is redundant to the following item
55e0839d
CD
6445@kindex C-u C-c C-x ,
6446@item C-u C-c C-x ,
6447Stop the timer. After this, you can only start a new timer, not continue the
6448old one. This command also removes the timer from the mode line.
acedf35c 6449@orgcmd{C-c C-x 0,org-timer-start}
96c8522a
CD
6450Reset the timer without inserting anything into the buffer. By default, the
6451timer is reset to 0. When called with a @kbd{C-u} prefix, reset the timer to
6452specific starting offset. The user is prompted for the offset, with a
6453default taken from a timer string at point, if any, So this can be used to
6454restart taking notes after a break in the process. When called with a double
86fbb8ca 6455prefix argument @kbd{C-u C-u}, change all timer strings in the active region
96c8522a
CD
6456by a certain amount. This can be used to fix timer strings if the timer was
6457not started at exactly the right moment.
6458@end table
6459
afe98dfa
CD
6460@node Countdown timer, , Relative timer, Dates and Times
6461@section Countdown timer
6462@cindex Countdown timer
6463@kindex C-c C-x ;
6464@kindex ;
6465
e66ba1df 6466Calling @code{org-timer-set-timer} from an Org mode buffer runs a countdown
27e428e7 6467timer. Use @kbd{;} from agenda buffers, @key{C-c C-x ;} everywhere else.
afe98dfa
CD
6468
6469@code{org-timer-set-timer} prompts the user for a duration and displays a
6470countdown timer in the modeline. @code{org-timer-default-timer} sets the
6471default countdown value. Giving a prefix numeric argument overrides this
6472default value.
6473
a351880d
CD
6474@node Capture - Refile - Archive, Agenda Views, Dates and Times, Top
6475@chapter Capture - Refile - Archive
864c9740
CD
6476@cindex capture
6477
6478An important part of any organization system is the ability to quickly
6479capture new ideas and tasks, and to associate reference material with them.
86fbb8ca 6480Org does this using a process called @i{capture}. It also can store files
a351880d
CD
6481related to a task (@i{attachments}) in a special directory. Once in the
6482system, tasks and projects need to be moved around. Moving completed project
6483trees to an archive file keeps the system compact and fast.
864c9740
CD
6484
6485@menu
c0468714
GM
6486* Capture:: Capturing new stuff
6487* Attachments:: Add files to tasks
6488* RSS Feeds:: Getting input from RSS feeds
1df7defd 6489* Protocols:: External (e.g., Browser) access to Emacs and Org
c0468714
GM
6490* Refiling notes:: Moving a tree from one place to another
6491* Archiving:: What to do with finished projects
864c9740
CD
6492@end menu
6493
86fbb8ca
CD
6494@node Capture, Attachments, Capture - Refile - Archive, Capture - Refile - Archive
6495@section Capture
6496@cindex capture
dbc28aaa 6497
86fbb8ca
CD
6498Org's method for capturing new items is heavily inspired by John Wiegley
6499excellent remember package. Up to version 6.36 Org used a special setup
e66ba1df 6500for @file{remember.el}. @file{org-remember.el} is still part of Org mode for
86fbb8ca
CD
6501backward compatibility with existing setups. You can find the documentation
6502for org-remember at @url{http://orgmode.org/org-remember.pdf}.
6503
6504The new capturing setup described here is preferred and should be used by new
6505users. To convert your @code{org-remember-templates}, run the command
6506@example
6507@kbd{M-x org-capture-import-remember-templates @key{RET}}
6508@end example
6509@noindent and then customize the new variable with @kbd{M-x
6510customize-variable org-capture-templates}, check the result, and save the
6511customization. You can then use both remember and capture until
6512you are familiar with the new mechanism.
c8d0cf5c 6513
86fbb8ca
CD
6514Capture lets you quickly store notes with little interruption of your work
6515flow. The basic process of capturing is very similar to remember, but Org
6516does enhance it with templates and more.
dbc28aaa
CD
6517
6518@menu
c0468714
GM
6519* Setting up capture:: Where notes will be stored
6520* Using capture:: Commands to invoke and terminate capture
6521* Capture templates:: Define the outline of different note types
dbc28aaa
CD
6522@end menu
6523
86fbb8ca
CD
6524@node Setting up capture, Using capture, Capture, Capture
6525@subsection Setting up capture
dbc28aaa 6526
86fbb8ca
CD
6527The following customization sets a default target file for notes, and defines
6528a global key@footnote{Please select your own key, @kbd{C-c c} is only a
6529suggestion.} for capturing new material.
dbc28aaa 6530
afe98dfa 6531@vindex org-default-notes-file
dbc28aaa 6532@example
dbc28aaa 6533(setq org-default-notes-file (concat org-directory "/notes.org"))
86fbb8ca 6534(define-key global-map "\C-cc" 'org-capture)
dbc28aaa
CD
6535@end example
6536
86fbb8ca
CD
6537@node Using capture, Capture templates, Setting up capture, Capture
6538@subsection Using capture
28a16a1b 6539
86fbb8ca 6540@table @kbd
acedf35c
CD
6541@orgcmd{C-c c,org-capture}
6542Call the command @code{org-capture}. Note that this keybinding is global and
6543not active by default - you need to install it. If you have templates
ce57c2fe 6544@cindex date tree
acedf35c
CD
6545defined @pxref{Capture templates}, it will offer these templates for
6546selection or use a new Org outline node as the default template. It will
6547insert the template into the target file and switch to an indirect buffer
6548narrowed to this new node. You may then insert the information you want.
6549
6550@orgcmd{C-c C-c,org-capture-finalize}
6551Once you have finished entering information into the capture buffer, @kbd{C-c
6552C-c} will return you to the window configuration before the capture process,
6553so that you can resume your work without further distraction. When called
6554with a prefix arg, finalize and then jump to the captured item.
6555
6556@orgcmd{C-c C-w,org-capture-refile}
86fbb8ca 6557Finalize the capture process by refiling (@pxref{Refiling notes}) the note to
afe98dfa 6558a different place. Please realize that this is a normal refiling command
acedf35c 6559that will be executed---so the cursor position at the moment you run this
afe98dfa 6560command is important. If you have inserted a tree with a parent and
acedf35c
CD
6561children, first move the cursor back to the parent. Any prefix argument
6562given to this command will be passed on to the @code{org-refile} command.
86fbb8ca 6563
acedf35c 6564@orgcmd{C-c C-k,org-capture-kill}
86fbb8ca 6565Abort the capture process and return to the previous state.
acedf35c 6566
86fbb8ca
CD
6567@end table
6568
6569You can also call @code{org-capture} in a special way from the agenda, using
6570the @kbd{k c} key combination. With this access, any timestamps inserted by
6571the selected capture template will default to the cursor date in the agenda,
6572rather than to the current date.
6573
acedf35c
CD
6574To find the locations of the last stored capture, use @code{org-capture} with
6575prefix commands:
6576
6577@table @kbd
6578@orgkey{C-u C-c c}
ce57c2fe 6579Visit the target location of a capture template. You get to select the
acedf35c
CD
6580template in the usual way.
6581@orgkey{C-u C-u C-c c}
6582Visit the last stored capture item in its buffer.
6583@end table
6584
8223b1d2
BG
6585@vindex org-capture-bookmark
6586@cindex org-capture-last-stored
6587You can also jump to the bookmark @code{org-capture-last-stored}, which will
6588automatically be created unless you set @code{org-capture-bookmark} to
6589@code{nil}.
6590
6591To insert the capture at point in an Org buffer, call @code{org-capture} with
6592a @code{C-0} prefix argument.
6593
86fbb8ca
CD
6594@node Capture templates, , Using capture, Capture
6595@subsection Capture templates
6596@cindex templates, for Capture
6597
6598You can use templates for different types of capture items, and
6599for different target locations. The easiest way to create such templates is
6600through the customize interface.
6601
6602@table @kbd
acedf35c 6603@orgkey{C-c c C}
86fbb8ca
CD
6604Customize the variable @code{org-capture-templates}.
6605@end table
6606
6607Before we give the formal description of template definitions, let's look at
6608an example. Say you would like to use one template to create general TODO
6609entries, and you want to put these entries under the heading @samp{Tasks} in
6610your file @file{~/org/gtd.org}. Also, a date tree in the file
6611@file{journal.org} should capture journal entries. A possible configuration
6612would look like:
28a16a1b 6613
86fbb8ca
CD
6614@example
6615(setq org-capture-templates
6616 '(("t" "Todo" entry (file+headline "~/org/gtd.org" "Tasks")
6617 "* TODO %?\n %i\n %a")
6618 ("j" "Journal" entry (file+datetree "~/org/journal.org")
6619 "* %?\nEntered on %U\n %i\n %a")))
6620@end example
6621
6622@noindent If you then press @kbd{C-c c t}, Org will prepare the template
6623for you like this:
dbc28aaa
CD
6624@example
6625* TODO
86fbb8ca 6626 [[file:@var{link to where you initiated capture}]]
dbc28aaa
CD
6627@end example
6628
6629@noindent
86fbb8ca
CD
6630During expansion of the template, @code{%a} has been replaced by a link to
6631the location from where you called the capture command. This can be
6632extremely useful for deriving tasks from emails, for example. You fill in
6633the task definition, press @code{C-c C-c} and Org returns you to the same
6634place where you started the capture process.
6635
ce57c2fe
BG
6636To define special keys to capture to a particular template without going
6637through the interactive template selection, you can create your key binding
6638like this:
6639
6640@lisp
6641(define-key global-map "\C-cx"
6642 (lambda () (interactive) (org-capture nil "x")))
6643@end lisp
86fbb8ca
CD
6644
6645@menu
c0468714
GM
6646* Template elements:: What is needed for a complete template entry
6647* Template expansion:: Filling in information about time and context
8223b1d2 6648* Templates in contexts:: Only show a template in a specific context
86fbb8ca
CD
6649@end menu
6650
6651@node Template elements, Template expansion, Capture templates, Capture templates
6652@subsubsection Template elements
6653
e66ba1df 6654Now lets look at the elements of a template definition. Each entry in
ce57c2fe 6655@code{org-capture-templates} is a list with the following items:
86fbb8ca
CD
6656
6657@table @var
6658@item keys
6659The keys that will select the template, as a string, characters
6660only, for example @code{"a"} for a template to be selected with a
6661single key, or @code{"bt"} for selection with two keys. When using
ce57c2fe 6662several keys, keys using the same prefix key must be sequential
86fbb8ca
CD
6663in the list and preceded by a 2-element entry explaining the
6664prefix key, for example
dbc28aaa 6665@example
86fbb8ca
CD
6666 ("b" "Templates for marking stuff to buy")
6667@end example
6668@noindent If you do not define a template for the @kbd{C} key, this key will
6669be used to open the customize buffer for this complex variable.
6670
6671@item description
6672A short string describing the template, which will be shown during
6673selection.
6674
6675@item type
6676The type of entry, a symbol. Valid values are:
6677@table @code
6678@item entry
e66ba1df
BG
6679An Org mode node, with a headline. Will be filed as the child of the target
6680entry or as a top-level entry. The target file should be an Org mode file.
86fbb8ca
CD
6681@item item
6682A plain list item, placed in the first plain list at the target
6683location. Again the target file should be an Org file.
6684@item checkitem
6685A checkbox item. This only differs from the plain list item by the
6686default template.
6687@item table-line
6688a new line in the first table at the target location. Where exactly the
6689line will be inserted depends on the properties @code{:prepend} and
6690@code{:table-line-pos} (see below).
6691@item plain
6692Text to be inserted as it is.
6693@end table
6694
6695@item target
afe98dfa 6696@vindex org-default-notes-file
e66ba1df 6697Specification of where the captured item should be placed. In Org mode
afe98dfa 6698files, targets usually define a node. Entries will become children of this
acedf35c 6699node. Other types will be added to the table or list in the body of this
afe98dfa 6700node. Most target specifications contain a file name. If that file name is
ce57c2fe
BG
6701the empty string, it defaults to @code{org-default-notes-file}. A file can
6702also be given as a variable, function, or Emacs Lisp form.
86fbb8ca
CD
6703
6704Valid values are:
6705@table @code
6706@item (file "path/to/file")
6707Text will be placed at the beginning or end of that file.
6708
6709@item (id "id of existing org entry")
6710Filing as child of this entry, or in the body of the entry.
6711
6712@item (file+headline "path/to/file" "node headline")
6713Fast configuration if the target heading is unique in the file.
6714
6715@item (file+olp "path/to/file" "Level 1 heading" "Level 2" ...)
6716For non-unique headings, the full path is safer.
6717
6718@item (file+regexp "path/to/file" "regexp to find location")
6719Use a regular expression to position the cursor.
6720
6721@item (file+datetree "path/to/file")
acedf35c
CD
6722Will create a heading in a date tree for today's date.
6723
6724@item (file+datetree+prompt "path/to/file")
6725Will create a heading in a date tree, but will prompt for the date.
86fbb8ca
CD
6726
6727@item (file+function "path/to/file" function-finding-location)
6728A function to find the right location in the file.
6729
6730@item (clock)
6731File to the entry that is currently being clocked.
6732
6733@item (function function-finding-location)
6734Most general way, write your own function to find both
6735file and location.
6736@end table
6737
6738@item template
6739The template for creating the capture item. If you leave this empty, an
6740appropriate default template will be used. Otherwise this is a string with
6741escape codes, which will be replaced depending on time and context of the
6742capture call. The string with escapes may be loaded from a template file,
6743using the special syntax @code{(file "path/to/template")}. See below for
6744more details.
6745
6746@item properties
6747The rest of the entry is a property list of additional options.
6748Recognized properties are:
6749@table @code
6750@item :prepend
6751Normally new captured information will be appended at
6752the target location (last child, last table line, last list item...).
6753Setting this property will change that.
6754
6755@item :immediate-finish
6756When set, do not offer to edit the information, just
6757file it away immediately. This makes sense if the template only needs
6758information that can be added automatically.
6759
6760@item :empty-lines
6761Set this to the number of lines to insert
6762before and after the new item. Default 0, only common other value is 1.
6763
6764@item :clock-in
6765Start the clock in this item.
6766
ce57c2fe
BG
6767@item :clock-keep
6768Keep the clock running when filing the captured entry.
6769
86fbb8ca
CD
6770@item :clock-resume
6771If starting the capture interrupted a clock, restart that clock when finished
ce57c2fe
BG
6772with the capture. Note that @code{:clock-keep} has precedence over
6773@code{:clock-resume}. When setting both to @code{t}, the current clock will
6774run and the previous one will not be resumed.
86fbb8ca
CD
6775
6776@item :unnarrowed
6777Do not narrow the target buffer, simply show the full buffer. Default is to
6778narrow it so that you only see the new material.
afe98dfa 6779
ce57c2fe
BG
6780@item :table-line-pos
6781Specification of the location in the table where the new line should be
6782inserted. It should be a string like @code{"II-3"} meaning that the new
6783line should become the third line before the second horizontal separator
6784line.
6785
afe98dfa
CD
6786@item :kill-buffer
6787If the target file was not yet visited when capture was invoked, kill the
6788buffer again after capture is completed.
86fbb8ca
CD
6789@end table
6790@end table
6791
8223b1d2 6792@node Template expansion, Templates in contexts, Template elements, Capture templates
86fbb8ca
CD
6793@subsubsection Template expansion
6794
6795In the template itself, special @kbd{%}-escapes@footnote{If you need one of
8223b1d2 6796these sequences literally, escape the @kbd{%} with a backslash.} allow
e66ba1df 6797dynamic insertion of content. The templates are expanded in the order given here:
86fbb8ca 6798
86fbb8ca 6799@smallexample
8223b1d2
BG
6800%[@var{file}] @r{Insert the contents of the file given by @var{file}.}
6801%(@var{sexp}) @r{Evaluate Elisp @var{sexp} and replace with the result.}
6802 @r{The sexp must return a string.}
6803%<...> @r{The result of format-time-string on the ... format specification.}
6804%t @r{Timestamp, date only.}
6805%T @r{Timestamp, with date and time.}
6806%u, %U @r{Like the above, but inactive timestamps.}
6807%i @r{Initial content, the region when capture is called while the}
86fbb8ca 6808 @r{region is active.}
b349f79f 6809 @r{The entire text will be indented like @code{%i} itself.}
8223b1d2
BG
6810%a @r{Annotation, normally the link created with @code{org-store-link}.}
6811%A @r{Like @code{%a}, but prompt for the description part.}
6812%l @r{Like %a, but only insert the literal link.}
a7808fba
CD
6813%c @r{Current kill ring head.}
6814%x @r{Content of the X clipboard.}
8223b1d2
BG
6815%k @r{Title of the currently clocked task.}
6816%K @r{Link to the currently clocked task.}
6817%n @r{User name (taken from @code{user-full-name}).}
6818%f @r{File visited by current buffer when org-capture was called.}
6819%F @r{Full path of the file or directory visited by current buffer.}
6820%:keyword @r{Specific information for certain link types, see below.}
6821%^g @r{Prompt for tags, with completion on tags in target file.}
6822%^G @r{Prompt for tags, with completion all tags in all agenda files.}
6823%^t @r{Like @code{%t}, but prompt for date. Similarly @code{%^T}, @code{%^u}, @code{%^U}.}
ce57c2fe
BG
6824 @r{You may define a prompt like @code{%^@{Birthday@}t}.}
6825%^C @r{Interactive selection of which kill or clip to use.}
6826%^L @r{Like @code{%^C}, but insert as link.}
6827%^@{@var{prop}@}p @r{Prompt the user for a value for property @var{prop}.}
6828%^@{@var{prompt}@} @r{prompt the user for a string and replace this sequence with it.}
6829 @r{You may specify a default value and a completion table with}
6830 @r{%^@{prompt|default|completion2|completion3...@}.}
6831 @r{The arrow keys access a prompt-specific history.}
8223b1d2
BG
6832%\n @r{Insert the text entered at the nth %^@{@var{prompt}@}, where @code{n} is}
6833 @r{a number, starting from 1.}
6834%? @r{After completing the template, position cursor here.}
86fbb8ca 6835@end smallexample
dbc28aaa
CD
6836
6837@noindent
6838For specific link types, the following keywords will be
6839defined@footnote{If you define your own link types (@pxref{Adding
6840hyperlink types}), any property you store with
86fbb8ca 6841@code{org-store-link-props} can be accessed in capture templates in a
dbc28aaa
CD
6842similar way.}:
6843
c8d0cf5c 6844@vindex org-from-is-user-regexp
86fbb8ca 6845@smallexample
8223b1d2
BG
6846Link type | Available keywords
6847---------------------------------+----------------------------------------------
6848bbdb | %:name %:company
6849irc | %:server %:port %:nick
6850vm, vm-imap, wl, mh, mew, rmail | %:type %:subject %:message-id
6851 | %:from %:fromname %:fromaddress
6852 | %:to %:toname %:toaddress
6853 | %:date @r{(message date header field)}
6854 | %:date-timestamp @r{(date as active timestamp)}
6855 | %:date-timestamp-inactive @r{(date as inactive timestamp)}
6856 | %:fromto @r{(either "to NAME" or "from NAME")@footnote{This will always be the other, not the user. See the variable @code{org-from-is-user-regexp}.}}
6857gnus | %:group, @r{for messages also all email fields}
6858w3, w3m | %:url
6859info | %:file %:node
6860calendar | %:date
86fbb8ca 6861@end smallexample
dbc28aaa
CD
6862
6863@noindent
6864To place the cursor after template expansion use:
6865
86fbb8ca 6866@smallexample
dbc28aaa 6867%? @r{After completing the template, position cursor here.}
86fbb8ca 6868@end smallexample
dbc28aaa 6869
8223b1d2
BG
6870@node Templates in contexts, , Template expansion, Capture templates
6871@subsubsection Templates in contexts
6872
6873@vindex org-capture-templates-contexts
6874To control whether a capture template should be accessible from a specific
6875context, you can customize @var{org-capture-templates-contexts}. Let's say
6876for example that you have a capture template @code{"p"} for storing Gnus
6877emails containing patches. Then you would configure this option like this:
6878
6879@example
6880(setq org-capture-templates-contexts
6881 '(("p" (in-mode . "message-mode"))))
6882@end example
6883
6884You can also tell that the command key @code{"p"} should refer to another
6885template. In that case, add this command key like this:
6886
6887@example
6888(setq org-capture-templates-contexts
6889 '(("p" "q" (in-mode . "message-mode"))))
6890@end example
6891
6892See the docstring of the variable for more information.
c8d0cf5c 6893
86fbb8ca 6894@node Attachments, RSS Feeds, Capture, Capture - Refile - Archive
864c9740
CD
6895@section Attachments
6896@cindex attachments
6897
c8d0cf5c 6898@vindex org-attach-directory
864c9740
CD
6899It is often useful to associate reference material with an outline node/task.
6900Small chunks of plain text can simply be stored in the subtree of a project.
86fbb8ca 6901Hyperlinks (@pxref{Hyperlinks}) can establish associations with
864c9740
CD
6902files that live elsewhere on your computer or in the cloud, like emails or
6903source code files belonging to a project. Another method is @i{attachments},
6904which are files located in a directory belonging to an outline node. Org
6905uses directories named by the unique ID of each entry. These directories are
6906located in the @file{data} directory which lives in the same directory where
c8d0cf5c
CD
6907your Org file lives@footnote{If you move entries or Org files from one
6908directory to another, you may want to configure @code{org-attach-directory}
864c9740 6909to contain an absolute path.}. If you initialize this directory with
c8d0cf5c 6910@code{git init}, Org will automatically commit changes when it sees them.
864c9740
CD
6911The attachment system has been contributed to Org by John Wiegley.
6912
c8d0cf5c 6913In cases where it seems better to do so, you can also attach a directory of your
55e0839d
CD
6914choice to an entry. You can also make children inherit the attachment
6915directory from a parent, so that an entire subtree uses the same attached
6916directory.
6917
86fbb8ca 6918@noindent The following commands deal with attachments:
864c9740
CD
6919
6920@table @kbd
6921
acedf35c 6922@orgcmd{C-c C-a,org-attach}
864c9740 6923The dispatcher for commands related to the attachment system. After these
86fbb8ca 6924keys, a list of commands is displayed and you must press an additional key
864c9740
CD
6925to select a command:
6926
6927@table @kbd
acedf35c 6928@orgcmdtkc{a,C-c C-a a,org-attach-attach}
c8d0cf5c 6929@vindex org-attach-method
864c9740
CD
6930Select a file and move it into the task's attachment directory. The file
6931will be copied, moved, or linked, depending on @code{org-attach-method}.
6932Note that hard links are not supported on all systems.
6933
6934@kindex C-c C-a c
96c8522a
CD
6935@kindex C-c C-a m
6936@kindex C-c C-a l
864c9740
CD
6937@item c/m/l
6938Attach a file using the copy/move/link method.
6939Note that hard links are not supported on all systems.
6940
acedf35c 6941@orgcmdtkc{n,C-c C-a n,org-attach-new}
864c9740
CD
6942Create a new attachment as an Emacs buffer.
6943
acedf35c 6944@orgcmdtkc{z,C-c C-a z,org-attach-sync}
864c9740
CD
6945Synchronize the current task with its attachment directory, in case you added
6946attachments yourself.
6947
ce57c2fe 6948@orgcmdtkc{o,C-c C-a o,org-attach-open}
c8d0cf5c 6949@vindex org-file-apps
86fbb8ca 6950Open current task's attachment. If there is more than one, prompt for a
864c9740 6951file name first. Opening will follow the rules set by @code{org-file-apps}.
a50253cc 6952For more details, see the information on following hyperlinks
864c9740
CD
6953(@pxref{Handling links}).
6954
acedf35c 6955@orgcmdtkc{O,C-c C-a O,org-attach-open-in-emacs}
864c9740
CD
6956Also open the attachment, but force opening the file in Emacs.
6957
acedf35c 6958@orgcmdtkc{f,C-c C-a f,org-attach-reveal}
864c9740
CD
6959Open the current task's attachment directory.
6960
acedf35c 6961@orgcmdtkc{F,C-c C-a F,org-attach-reveal-in-emacs}
c8d0cf5c 6962Also open the directory, but force using @command{dired} in Emacs.
864c9740 6963
acedf35c 6964@orgcmdtkc{d,C-c C-a d,org-attach-delete-one}
864c9740
CD
6965Select and delete a single attachment.
6966
acedf35c 6967@orgcmdtkc{D,C-c C-a D,org-attach-delete-all}
864c9740 6968Delete all of a task's attachments. A safer way is to open the directory in
c8d0cf5c 6969@command{dired} and delete from there.
55e0839d 6970
acedf35c 6971@orgcmdtkc{s,C-c C-a s,org-attach-set-directory}
c8d0cf5c 6972@cindex property, ATTACH_DIR
55e0839d
CD
6973Set a specific directory as the entry's attachment directory. This works by
6974putting the directory path into the @code{ATTACH_DIR} property.
6975
acedf35c 6976@orgcmdtkc{i,C-c C-a i,org-attach-set-inherit}
c8d0cf5c 6977@cindex property, ATTACH_DIR_INHERIT
55e0839d 6978Set the @code{ATTACH_DIR_INHERIT} property, so that children will use the
c8d0cf5c 6979same directory for attachments as the parent does.
864c9740
CD
6980@end table
6981@end table
6982
a351880d 6983@node RSS Feeds, Protocols, Attachments, Capture - Refile - Archive
c8d0cf5c
CD
6984@section RSS feeds
6985@cindex RSS feeds
86fbb8ca 6986@cindex Atom feeds
c8d0cf5c 6987
86fbb8ca
CD
6988Org can add and change entries based on information found in RSS feeds and
6989Atom feeds. You could use this to make a task out of each new podcast in a
c8d0cf5c 6990podcast feed. Or you could use a phone-based note-creating service on the
86fbb8ca
CD
6991web to import tasks into Org. To access feeds, configure the variable
6992@code{org-feed-alist}. The docstring of this variable has detailed
c8d0cf5c
CD
6993information. Here is just an example:
6994
6995@example
6996(setq org-feed-alist
86fbb8ca 6997 '(("Slashdot"
c0468714
GM
6998 "http://rss.slashdot.org/Slashdot/slashdot"
6999 "~/txt/org/feeds.org" "Slashdot Entries")))
c8d0cf5c 7000@end example
86fbb8ca 7001
c8d0cf5c 7002@noindent
86fbb8ca
CD
7003will configure that new items from the feed provided by
7004@code{rss.slashdot.org} will result in new entries in the file
7005@file{~/org/feeds.org} under the heading @samp{Slashdot Entries}, whenever
7006the following command is used:
c8d0cf5c
CD
7007
7008@table @kbd
acedf35c 7009@orgcmd{C-c C-x g,org-feed-update-all}
c8d0cf5c
CD
7010@item C-c C-x g
7011Collect items from the feeds configured in @code{org-feed-alist} and act upon
7012them.
acedf35c 7013@orgcmd{C-c C-x G,org-feed-goto-inbox}
c8d0cf5c
CD
7014Prompt for a feed name and go to the inbox configured for this feed.
7015@end table
7016
7017Under the same headline, Org will create a drawer @samp{FEEDSTATUS} in which
7018it will store information about the status of items in the feed, to avoid
7019adding the same item several times. You should add @samp{FEEDSTATUS} to the
7020list of drawers in that file:
7021
7022@example
7023#+DRAWERS: LOGBOOK PROPERTIES FEEDSTATUS
7024@end example
7025
86fbb8ca
CD
7026For more information, including how to read atom feeds, see
7027@file{org-feed.el} and the docstring of @code{org-feed-alist}.
c8d0cf5c 7028
a351880d 7029@node Protocols, Refiling notes, RSS Feeds, Capture - Refile - Archive
c8d0cf5c
CD
7030@section Protocols for external access
7031@cindex protocols, for external access
7032@cindex emacsserver
7033
7034You can set up Org for handling protocol calls from outside applications that
7035are passed to Emacs through the @file{emacsserver}. For example, you can
7036configure bookmarks in your web browser to send a link to the current page to
86fbb8ca 7037Org and create a note from it using capture (@pxref{Capture}). Or you
c8d0cf5c
CD
7038could create a bookmark that will tell Emacs to open the local source file of
7039a remote website you are looking at with the browser. See
7040@uref{http://orgmode.org/worg/org-contrib/org-protocol.php} for detailed
7041documentation and setup instructions.
7042
a351880d
CD
7043@node Refiling notes, Archiving, Protocols, Capture - Refile - Archive
7044@section Refiling notes
7045@cindex refiling notes
c8d0cf5c 7046
a351880d
CD
7047When reviewing the captured data, you may want to refile some of the entries
7048into a different list, for example into a project. Cutting, finding the
7049right location, and then pasting the note is cumbersome. To simplify this
7050process, you can use the following special command:
4009494e 7051
a351880d 7052@table @kbd
acedf35c 7053@orgcmd{C-c C-w,org-refile}
a351880d
CD
7054@vindex org-reverse-note-order
7055@vindex org-refile-targets
7056@vindex org-refile-use-outline-path
7057@vindex org-outline-path-complete-in-steps
7058@vindex org-refile-allow-creating-parent-nodes
ed21c5c8 7059@vindex org-log-refile
86fbb8ca 7060@vindex org-refile-use-cache
a351880d
CD
7061Refile the entry or region at point. This command offers possible locations
7062for refiling the entry and lets you select one with completion. The item (or
7063all items in the region) is filed below the target heading as a subitem.
7064Depending on @code{org-reverse-note-order}, it will be either the first or
7065last subitem.@*
7066By default, all level 1 headlines in the current buffer are considered to be
7067targets, but you can have more complex definitions across a number of files.
7068See the variable @code{org-refile-targets} for details. If you would like to
7069select a location via a file-path-like completion along the outline path, see
7070the variables @code{org-refile-use-outline-path} and
7071@code{org-outline-path-complete-in-steps}. If you would like to be able to
045b9da7 7072create new nodes as new parents for refiling on the fly, check the
a351880d 7073variable @code{org-refile-allow-creating-parent-nodes}.
ed21c5c8
CD
7074When the variable @code{org-log-refile}@footnote{with corresponding
7075@code{#+STARTUP} keywords @code{logrefile}, @code{lognoterefile},
ce57c2fe 7076and @code{nologrefile}} is set, a timestamp or a note will be
ed21c5c8 7077recorded when an entry has been refiled.
acedf35c 7078@orgkey{C-u C-c C-w}
a351880d 7079Use the refile interface to jump to a heading.
acedf35c 7080@orgcmd{C-u C-u C-c C-w,org-refile-goto-last-stored}
a351880d
CD
7081Jump to the location where @code{org-refile} last moved a tree to.
7082@item C-2 C-c C-w
7083Refile as the child of the item currently being clocked.
acedf35c 7084@orgcmdtkc{C-0 C-c C-w @ @r{or} @ C-u C-u C-u C-c C-w,C-0 C-c C-w,org-refile-cache-clear}
86fbb8ca 7085Clear the target cache. Caching of refile targets can be turned on by
acedf35c 7086setting @code{org-refile-use-cache}. To make the command see new possible
86fbb8ca 7087targets, you have to clear the cache with this command.
a351880d 7088@end table
4009494e 7089
a351880d
CD
7090@node Archiving, , Refiling notes, Capture - Refile - Archive
7091@section Archiving
7092@cindex archiving
4009494e 7093
a351880d
CD
7094When a project represented by a (sub)tree is finished, you may want
7095to move the tree out of the way and to stop it from contributing to the
7096agenda. Archiving is important to keep your working files compact and global
7097searches like the construction of agenda views fast.
7098
7099@table @kbd
acedf35c 7100@orgcmd{C-c C-x C-a,org-archive-subtree-default}
a351880d
CD
7101@vindex org-archive-default-command
7102Archive the current entry using the command specified in the variable
7103@code{org-archive-default-command}.
7104@end table
7105
7106@menu
c0468714
GM
7107* Moving subtrees:: Moving a tree to an archive file
7108* Internal archiving:: Switch off a tree but keep it in the file
a351880d
CD
7109@end menu
7110
7111@node Moving subtrees, Internal archiving, Archiving, Archiving
7112@subsection Moving a tree to the archive file
7113@cindex external archiving
7114
7115The most common archiving action is to move a project tree to another file,
7116the archive file.
7117
7118@table @kbd
acedf35c 7119@orgcmdkskc{C-c C-x C-s,C-c $,org-archive-subtree}
a351880d
CD
7120@vindex org-archive-location
7121Archive the subtree starting at the cursor position to the location
7122given by @code{org-archive-location}.
acedf35c 7123@orgkey{C-u C-c C-x C-s}
a351880d
CD
7124Check if any direct children of the current headline could be moved to
7125the archive. To do this, each subtree is checked for open TODO entries.
7126If none are found, the command offers to move it to the archive
7127location. If the cursor is @emph{not} on a headline when this command
7128is invoked, the level 1 trees will be checked.
7129@end table
7130
7131@cindex archive locations
7132The default archive location is a file in the same directory as the
7133current file, with the name derived by appending @file{_archive} to the
8223b1d2
BG
7134current file name. You can also choose what heading to file archived
7135items under, with the possibility to add them to a datetree in a file.
7136For information and examples on how to specify the file and the heading,
a351880d 7137see the documentation string of the variable
8223b1d2
BG
7138@code{org-archive-location}.
7139
7140There is also an in-buffer option for setting this variable, for
7141example@footnote{For backward compatibility, the following also works:
7142If there are several such lines in a file, each specifies the archive
7143location for the text below it. The first such line also applies to any
7144text before its definition. However, using this method is
7145@emph{strongly} deprecated as it is incompatible with the outline
7146structure of the document. The correct method for setting multiple
7147archive locations in a buffer is using properties.}:
a351880d
CD
7148
7149@cindex #+ARCHIVE
7150@example
7151#+ARCHIVE: %s_done::
7152@end example
7153
7154@cindex property, ARCHIVE
7155@noindent
7156If you would like to have a special ARCHIVE location for a single entry
7157or a (sub)tree, give the entry an @code{:ARCHIVE:} property with the
7158location as the value (@pxref{Properties and Columns}).
7159
7160@vindex org-archive-save-context-info
7161When a subtree is moved, it receives a number of special properties that
7162record context information like the file from where the entry came, its
7163outline path the archiving time etc. Configure the variable
7164@code{org-archive-save-context-info} to adjust the amount of information
7165added.
7166
7167
7168@node Internal archiving, , Moving subtrees, Archiving
7169@subsection Internal archiving
7170
7171If you want to just switch off (for agenda views) certain subtrees without
7172moving them to a different file, you can use the @code{ARCHIVE tag}.
7173
7174A headline that is marked with the ARCHIVE tag (@pxref{Tags}) stays at
7175its location in the outline tree, but behaves in the following way:
7176@itemize @minus
7177@item
7178@vindex org-cycle-open-archived-trees
7179It does not open when you attempt to do so with a visibility cycling
7180command (@pxref{Visibility cycling}). You can force cycling archived
7181subtrees with @kbd{C-@key{TAB}}, or by setting the option
7182@code{org-cycle-open-archived-trees}. Also normal outline commands like
7183@code{show-all} will open archived subtrees.
7184@item
7185@vindex org-sparse-tree-open-archived-trees
7186During sparse tree construction (@pxref{Sparse trees}), matches in
7187archived subtrees are not exposed, unless you configure the option
7188@code{org-sparse-tree-open-archived-trees}.
7189@item
7190@vindex org-agenda-skip-archived-trees
7191During agenda view construction (@pxref{Agenda Views}), the content of
7192archived trees is ignored unless you configure the option
7193@code{org-agenda-skip-archived-trees}, in which case these trees will always
7194be included. In the agenda you can press @kbd{v a} to get archives
7195temporarily included.
7196@item
7197@vindex org-export-with-archived-trees
7198Archived trees are not exported (@pxref{Exporting}), only the headline
7199is. Configure the details using the variable
7200@code{org-export-with-archived-trees}.
7201@item
86fbb8ca 7202@vindex org-columns-skip-archived-trees
a351880d 7203Archived trees are excluded from column view unless the variable
86fbb8ca 7204@code{org-columns-skip-archived-trees} is configured to @code{nil}.
a351880d
CD
7205@end itemize
7206
86fbb8ca 7207The following commands help manage the ARCHIVE tag:
a351880d
CD
7208
7209@table @kbd
acedf35c 7210@orgcmd{C-c C-x a,org-toggle-archive-tag}
a351880d
CD
7211Toggle the ARCHIVE tag for the current headline. When the tag is set,
7212the headline changes to a shadowed face, and the subtree below it is
7213hidden.
acedf35c 7214@orgkey{C-u C-c C-x a}
a351880d
CD
7215Check if any direct children of the current headline should be archived.
7216To do this, each subtree is checked for open TODO entries. If none are
7217found, the command offers to set the ARCHIVE tag for the child. If the
7218cursor is @emph{not} on a headline when this command is invoked, the
7219level 1 trees will be checked.
acedf35c 7220@orgcmd{C-@kbd{TAB},org-force-cycle-archived}
a351880d 7221Cycle a tree even if it is tagged with ARCHIVE.
acedf35c 7222@orgcmd{C-c C-x A,org-archive-to-archive-sibling}
a351880d
CD
7223Move the current entry to the @emph{Archive Sibling}. This is a sibling of
7224the entry with the heading @samp{Archive} and the tag @samp{ARCHIVE}. The
7225entry becomes a child of that sibling and in this way retains a lot of its
7226original context, including inherited tags and approximate position in the
7227outline.
7228@end table
7229
7230
7231@node Agenda Views, Markup, Capture - Refile - Archive, Top
86fbb8ca 7232@chapter Agenda views
a351880d
CD
7233@cindex agenda views
7234
7235Due to the way Org works, TODO items, time-stamped items, and
7236tagged headlines can be scattered throughout a file or even a number of
7237files. To get an overview of open action items, or of events that are
7238important for a particular date, this information must be collected,
7239sorted and displayed in an organized way.
7240
7241Org can select items based on various criteria and display them
7242in a separate buffer. Seven different view types are provided:
7243
7244@itemize @bullet
7245@item
7246an @emph{agenda} that is like a calendar and shows information
7247for specific dates,
7248@item
7249a @emph{TODO list} that covers all unfinished
7250action items,
7251@item
7252a @emph{match view}, showings headlines based on the tags, properties, and
7253TODO state associated with them,
7254@item
7255a @emph{timeline view} that shows all events in a single Org file,
7256in time-sorted view,
7257@item
7258a @emph{text search view} that shows all entries from multiple files
7259that contain specified keywords,
7260@item
7261a @emph{stuck projects view} showing projects that currently don't move
7262along, and
7263@item
7264@emph{custom views} that are special searches and combinations of different
7265views.
4009494e
GM
7266@end itemize
7267
7268@noindent
7269The extracted information is displayed in a special @emph{agenda
7270buffer}. This buffer is read-only, but provides commands to visit the
a7808fba 7271corresponding locations in the original Org files, and even to
28a16a1b 7272edit these files remotely.
4009494e 7273
c8d0cf5c
CD
7274@vindex org-agenda-window-setup
7275@vindex org-agenda-restore-windows-after-quit
4009494e
GM
7276Two variables control how the agenda buffer is displayed and whether the
7277window configuration is restored when the agenda exits:
7278@code{org-agenda-window-setup} and
7279@code{org-agenda-restore-windows-after-quit}.
7280
7281@menu
c0468714
GM
7282* Agenda files:: Files being searched for agenda information
7283* Agenda dispatcher:: Keyboard access to agenda views
7284* Built-in agenda views:: What is available out of the box?
7285* Presentation and sorting:: How agenda items are prepared for display
7286* Agenda commands:: Remote editing of Org trees
7287* Custom agenda views:: Defining special searches and views
7288* Exporting Agenda Views:: Writing a view to a file
7289* Agenda column view:: Using column view for collected entries
4009494e
GM
7290@end menu
7291
a7808fba 7292@node Agenda files, Agenda dispatcher, Agenda Views, Agenda Views
4009494e
GM
7293@section Agenda files
7294@cindex agenda files
7295@cindex files for agenda
7296
c8d0cf5c 7297@vindex org-agenda-files
dbc28aaa
CD
7298The information to be shown is normally collected from all @emph{agenda
7299files}, the files listed in the variable
7300@code{org-agenda-files}@footnote{If the value of that variable is not a
7301list, but a single file name, then the list of agenda files will be
ce57c2fe 7302maintained in that external file.}. If a directory is part of this list,
dbc28aaa
CD
7303all files with the extension @file{.org} in this directory will be part
7304of the list.
7305
c8d0cf5c
CD
7306Thus, even if you only work with a single Org file, that file should
7307be put into the list@footnote{When using the dispatcher, pressing
dbc28aaa
CD
7308@kbd{<} before selecting a command will actually limit the command to
7309the current file, and ignore @code{org-agenda-files} until the next
4009494e
GM
7310dispatcher command.}. You can customize @code{org-agenda-files}, but
7311the easiest way to maintain it is through the following commands
7312
7313@cindex files, adding to agenda list
7314@table @kbd
ce57c2fe 7315@orgcmd{C-c [,org-agenda-file-to-front}
4009494e
GM
7316Add current file to the list of agenda files. The file is added to
7317the front of the list. If it was already in the list, it is moved to
a7808fba 7318the front. With a prefix argument, file is added/moved to the end.
acedf35c 7319@orgcmd{C-c ],org-remove-file}
4009494e
GM
7320Remove current file from the list of agenda files.
7321@kindex C-,
e66ba1df 7322@cindex cycling, of agenda files
acedf35c
CD
7323@orgcmd{C-',org-cycle-agenda-files}
7324@itemx C-,
4009494e 7325Cycle through agenda file list, visiting one file after the other.
a7808fba
CD
7326@kindex M-x org-iswitchb
7327@item M-x org-iswitchb
7328Command to use an @code{iswitchb}-like interface to switch to and between Org
7329buffers.
4009494e
GM
7330@end table
7331
7332@noindent
7333The Org menu contains the current list of files and can be used
7334to visit any of them.
7335
c8d0cf5c
CD
7336If you would like to focus the agenda temporarily on a file not in
7337this list, or on just one file in the list, or even on only a subtree in a
7338file, then this can be done in different ways. For a single agenda command,
dbc28aaa
CD
7339you may press @kbd{<} once or several times in the dispatcher
7340(@pxref{Agenda dispatcher}). To restrict the agenda scope for an
7341extended period, use the following commands:
7342
7343@table @kbd
acedf35c 7344@orgcmd{C-c C-x <,org-agenda-set-restriction-lock}
dbc28aaa
CD
7345Permanently restrict the agenda to the current subtree. When with a
7346prefix argument, or with the cursor before the first headline in a file,
7347the agenda scope is set to the entire file. This restriction remains in
7348effect until removed with @kbd{C-c C-x >}, or by typing either @kbd{<}
7349or @kbd{>} in the agenda dispatcher. If there is a window displaying an
7350agenda view, the new restriction takes effect immediately.
acedf35c 7351@orgcmd{C-c C-x >,org-agenda-remove-restriction-lock}
dbc28aaa
CD
7352Remove the permanent restriction created by @kbd{C-c C-x <}.
7353@end table
7354
7355@noindent
c8d0cf5c 7356When working with @file{speedbar.el}, you can use the following commands in
a7808fba 7357the Speedbar frame:
dbc28aaa 7358@table @kbd
acedf35c 7359@orgcmdtkc{< @r{in the speedbar frame},<,org-speedbar-set-agenda-restriction}
c8d0cf5c
CD
7360Permanently restrict the agenda to the item---either an Org file or a subtree
7361in such a file---at the cursor in the Speedbar frame.
dbc28aaa
CD
7362If there is a window displaying an agenda view, the new restriction takes
7363effect immediately.
acedf35c 7364@orgcmdtkc{> @r{in the speedbar frame},>,org-agenda-remove-restriction-lock}
c8d0cf5c 7365Lift the restriction.
dbc28aaa
CD
7366@end table
7367
a7808fba 7368@node Agenda dispatcher, Built-in agenda views, Agenda files, Agenda Views
4009494e
GM
7369@section The agenda dispatcher
7370@cindex agenda dispatcher
7371@cindex dispatching agenda commands
c8d0cf5c 7372The views are created through a dispatcher, which should be bound to a
ce57c2fe 7373global key---for example @kbd{C-c a} (@pxref{Activation}). In the
4009494e
GM
7374following we will assume that @kbd{C-c a} is indeed how the dispatcher
7375is accessed and list keyboard access to commands accordingly. After
7376pressing @kbd{C-c a}, an additional letter is required to execute a
7377command. The dispatcher offers the following default commands:
7378@table @kbd
7379@item a
a7808fba 7380Create the calendar-like agenda (@pxref{Weekly/daily agenda}).
4009494e
GM
7381@item t @r{/} T
7382Create a list of all TODO items (@pxref{Global TODO list}).
7383@item m @r{/} M
7384Create a list of headlines matching a TAGS expression (@pxref{Matching
7385tags and properties}).
7386@item L
7387Create the timeline view for the current buffer (@pxref{Timeline}).
28a16a1b
CD
7388@item s
7389Create a list of entries selected by a boolean expression of keywords
7390and/or regular expressions that must or must not occur in the entry.
dbc28aaa 7391@item /
c8d0cf5c 7392@vindex org-agenda-text-search-extra-files
dbc28aaa 7393Search for a regular expression in all agenda files and additionally in
c8d0cf5c 7394the files listed in @code{org-agenda-text-search-extra-files}. This
dbc28aaa
CD
7395uses the Emacs command @code{multi-occur}. A prefix argument can be
7396used to specify the number of context lines for each match, default is
73971.
28a16a1b
CD
7398@item # @r{/} !
7399Create a list of stuck projects (@pxref{Stuck projects}).
dbc28aaa
CD
7400@item <
7401Restrict an agenda command to the current buffer@footnote{For backward
7402compatibility, you can also press @kbd{1} to restrict to the current
7403buffer.}. After pressing @kbd{<}, you still need to press the character
7404selecting the command.
7405@item < <
4009494e 7406If there is an active region, restrict the following agenda command to
dbc28aaa
CD
7407the region. Otherwise, restrict it to the current subtree@footnote{For
7408backward compatibility, you can also press @kbd{0} to restrict to the
c8d0cf5c 7409current region/subtree.}. After pressing @kbd{< <}, you still need to press the
dbc28aaa 7410character selecting the command.
8223b1d2
BG
7411
7412@item *
7413@vindex org-agenda-sticky
7414Toggle sticky agenda views. By default, Org maintains only a single agenda
7415buffer and rebuilds it each time you change the view, to make sure everything
7416is always up to date. If you switch between views often and the build time
7417bothers you, you can turn on sticky agenda buffers (make this the default by
7418customizing the variable @code{org-agenda-sticky}). With sticky agendas, the
7419dispatcher only switches to the selected view, you need to update it by hand
7420with @kbd{r} or @kbd{g}. You can toggle sticky agenda view any time with
7421@code{org-toggle-sticky-agenda}.
4009494e
GM
7422@end table
7423
7424You can also define custom commands that will be accessible through the
7425dispatcher, just like the default commands. This includes the
7426possibility to create extended agenda buffers that contain several
7427blocks together, for example the weekly agenda, the global TODO list and
7428a number of special tags matches. @xref{Custom agenda views}.
7429
a7808fba 7430@node Built-in agenda views, Presentation and sorting, Agenda dispatcher, Agenda Views
4009494e
GM
7431@section The built-in agenda views
7432
7433In this section we describe the built-in views.
7434
7435@menu
c0468714
GM
7436* Weekly/daily agenda:: The calendar page with current tasks
7437* Global TODO list:: All unfinished action items
4009494e 7438* Matching tags and properties:: Structured information with fine-tuned search
c0468714
GM
7439* Timeline:: Time-sorted view for single file
7440* Search view:: Find entries by searching for text
7441* Stuck projects:: Find projects you need to review
4009494e
GM
7442@end menu
7443
a7808fba 7444@node Weekly/daily agenda, Global TODO list, Built-in agenda views, Built-in agenda views
4009494e
GM
7445@subsection The weekly/daily agenda
7446@cindex agenda
7447@cindex weekly agenda
7448@cindex daily agenda
7449
7450The purpose of the weekly/daily @emph{agenda} is to act like a page of a
7451paper agenda, showing all the tasks for the current week or day.
7452
7453@table @kbd
7454@cindex org-agenda, command
acedf35c 7455@orgcmd{C-c a a,org-agenda-list}
c8d0cf5c 7456Compile an agenda for the current week from a list of Org files. The agenda
864c9740
CD
7457shows the entries for each day. With a numeric prefix@footnote{For backward
7458compatibility, the universal prefix @kbd{C-u} causes all TODO entries to be
7459listed before the agenda. This feature is deprecated, use the dedicated TODO
7460list, or a block agenda instead (@pxref{Block agenda}).} (like @kbd{C-u 2 1
acedf35c 7461C-c a a}) you may set the number of days to be displayed.
4009494e
GM
7462@end table
7463
acedf35c
CD
7464@vindex org-agenda-span
7465@vindex org-agenda-ndays
7466The default number of days displayed in the agenda is set by the variable
7467@code{org-agenda-span} (or the obsolete @code{org-agenda-ndays}). This
7468variable can be set to any number of days you want to see by default in the
7469agenda, or to a span name, such a @code{day}, @code{week}, @code{month} or
7470@code{year}.
7471
4009494e
GM
7472Remote editing from the agenda buffer means, for example, that you can
7473change the dates of deadlines and appointments from the agenda buffer.
7474The commands available in the Agenda buffer are listed in @ref{Agenda
7475commands}.
7476
7477@subsubheading Calendar/Diary integration
7478@cindex calendar integration
7479@cindex diary integration
7480
7481Emacs contains the calendar and diary by Edward M. Reingold. The
7482calendar displays a three-month calendar with holidays from different
7483countries and cultures. The diary allows you to keep track of
7484anniversaries, lunar phases, sunrise/set, recurrent appointments
7485(weekly, monthly) and more. In this way, it is quite complementary to
a7808fba 7486Org. It can be very useful to combine output from Org with
4009494e
GM
7487the diary.
7488
e66ba1df 7489In order to include entries from the Emacs diary into Org mode's
4009494e
GM
7490agenda, you only need to customize the variable
7491
7492@lisp
7493(setq org-agenda-include-diary t)
7494@end lisp
7495
7496@noindent After that, everything will happen automatically. All diary
c8d0cf5c 7497entries including holidays, anniversaries, etc., will be included in the
e66ba1df 7498agenda buffer created by Org mode. @key{SPC}, @key{TAB}, and
4009494e
GM
7499@key{RET} can be used from the agenda buffer to jump to the diary
7500file in order to edit existing diary entries. The @kbd{i} command to
7501insert new entries for the current date works in the agenda buffer, as
7502well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
7503Sunrise/Sunset times, show lunar phases and to convert to other
7504calendars, respectively. @kbd{c} can be used to switch back and forth
7505between calendar and agenda.
7506
7507If you are using the diary only for sexp entries and holidays, it is
7508faster to not use the above setting, but instead to copy or even move
e66ba1df 7509the entries into an Org file. Org mode evaluates diary-style sexp
4009494e
GM
7510entries, and does it faster because there is no overhead for first
7511creating the diary display. Note that the sexp entries must start at
c8d0cf5c 7512the left margin, no whitespace is allowed before them. For example,
a7808fba 7513the following segment of an Org file will be processed and entries
4009494e
GM
7514will be made in the agenda:
7515
7516@example
7517* Birthdays and similar stuff
7518#+CATEGORY: Holiday
7519%%(org-calendar-holiday) ; special function for holiday names
7520#+CATEGORY: Ann
e4920bc9 7521%%(org-anniversary 1956 5 14)@footnote{@code{org-anniversary} is just like @code{diary-anniversary}, but the argument order is always according to ISO and therefore independent of the value of @code{calendar-date-style}.} Arthur Dent is %d years old
ce57c2fe 7522%%(org-anniversary 1869 10 2) Mahatma Gandhi would be %d years old
4009494e
GM
7523@end example
7524
c8d0cf5c
CD
7525@subsubheading Anniversaries from BBDB
7526@cindex BBDB, anniversaries
7527@cindex anniversaries, from BBDB
7528
7529If you are using the Big Brothers Database to store your contacts, you will
7530very likely prefer to store anniversaries in BBDB rather than in a
7531separate Org or diary file. Org supports this and will show BBDB
7532anniversaries as part of the agenda. All you need to do is to add the
5a5fa834 7533following to one of your agenda files:
c8d0cf5c
CD
7534
7535@example
7536* Anniversaries
7537 :PROPERTIES:
7538 :CATEGORY: Anniv
86fbb8ca 7539 :END:
c8d0cf5c
CD
7540%%(org-bbdb-anniversaries)
7541@end example
7542
7543You can then go ahead and define anniversaries for a BBDB record. Basically,
7544you need to press @kbd{C-o anniversary @key{RET}} with the cursor in a BBDB
ce57c2fe
BG
7545record and then add the date in the format @code{YYYY-MM-DD} or @code{MM-DD},
7546followed by a space and the class of the anniversary (@samp{birthday} or
7547@samp{wedding}, or a format string). If you omit the class, it will default to
7548@samp{birthday}. Here are a few examples, the header for the file
7549@file{org-bbdb.el} contains more detailed information.
c8d0cf5c
CD
7550
7551@example
75521973-06-22
ce57c2fe 755306-22
c8d0cf5c 75541955-08-02 wedding
e66ba1df 75552008-04-14 %s released version 6.01 of org mode, %d years ago
c8d0cf5c
CD
7556@end example
7557
7558After a change to BBDB, or for the first agenda display during an Emacs
7559session, the agenda display will suffer a short delay as Org updates its
7560hash with anniversaries. However, from then on things will be very fast---much
7561faster in fact than a long list of @samp{%%(diary-anniversary)} entries
7562in an Org or Diary file.
7563
dbc28aaa
CD
7564@subsubheading Appointment reminders
7565@cindex @file{appt.el}
7566@cindex appointment reminders
e66ba1df
BG
7567@cindex appointment
7568@cindex reminders
dbc28aaa 7569
8223b1d2
BG
7570Org can interact with Emacs appointments notification facility. To add the
7571appointments of your agenda files, use the command @code{org-agenda-to-appt}.
7572This command lets you filter through the list of your appointments and add
7573only those belonging to a specific category or matching a regular expression.
7574It also reads a @code{APPT_WARNTIME} property which will then override the
7575value of @code{appt-message-warning-time} for this appointment. See the
7576docstring for details.
dbc28aaa 7577
a7808fba 7578@node Global TODO list, Matching tags and properties, Weekly/daily agenda, Built-in agenda views
4009494e
GM
7579@subsection The global TODO list
7580@cindex global TODO list
7581@cindex TODO list, global
7582
c8d0cf5c 7583The global TODO list contains all unfinished TODO items formatted and
4009494e
GM
7584collected into a single place.
7585
7586@table @kbd
acedf35c 7587@orgcmd{C-c a t,org-todo-list}
86fbb8ca
CD
7588Show the global TODO list. This collects the TODO items from all agenda
7589files (@pxref{Agenda Views}) into a single buffer. By default, this lists
7590items with a state the is not a DONE state. The buffer is in
7591@code{agenda-mode}, so there are commands to examine and manipulate the TODO
7592entries directly from that buffer (@pxref{Agenda commands}).
acedf35c 7593@orgcmd{C-c a T,org-todo-list}
4009494e 7594@cindex TODO keyword matching
c8d0cf5c 7595@vindex org-todo-keywords
86fbb8ca
CD
7596Like the above, but allows selection of a specific TODO keyword. You can
7597also do this by specifying a prefix argument to @kbd{C-c a t}. You are
7598prompted for a keyword, and you may also specify several keywords by
7599separating them with @samp{|} as the boolean OR operator. With a numeric
acedf35c 7600prefix, the Nth keyword in @code{org-todo-keywords} is selected.
4009494e
GM
7601@kindex r
7602The @kbd{r} key in the agenda buffer regenerates it, and you can give
7603a prefix argument to this command to change the selected TODO keyword,
7604for example @kbd{3 r}. If you often need a search for a specific
7605keyword, define a custom command for it (@pxref{Agenda dispatcher}).@*
7606Matching specific TODO keywords can also be done as part of a tags
7607search (@pxref{Tag searches}).
7608@end table
7609
7610Remote editing of TODO items means that you can change the state of a
7611TODO entry with a single key press. The commands available in the
7612TODO list are described in @ref{Agenda commands}.
7613
a7808fba
CD
7614@cindex sublevels, inclusion into TODO list
7615Normally the global TODO list simply shows all headlines with TODO
4009494e
GM
7616keywords. This list can become very long. There are two ways to keep
7617it more compact:
7618@itemize @minus
7619@item
c8d0cf5c
CD
7620@vindex org-agenda-todo-ignore-scheduled
7621@vindex org-agenda-todo-ignore-deadlines
acedf35c 7622@vindex org-agenda-todo-ignore-timestamp
c8d0cf5c
CD
7623@vindex org-agenda-todo-ignore-with-date
7624Some people view a TODO item that has been @emph{scheduled} for execution or
7625have a @emph{deadline} (@pxref{Timestamps}) as no longer @emph{open}.
7626Configure the variables @code{org-agenda-todo-ignore-scheduled},
acedf35c
CD
7627@code{org-agenda-todo-ignore-deadlines},
7628@code{org-agenda-todo-ignore-timestamp} and/or
7629@code{org-agenda-todo-ignore-with-date} to exclude such items from the global
7630TODO list.
c8d0cf5c
CD
7631@item
7632@vindex org-agenda-todo-list-sublevels
4009494e
GM
7633TODO items may have sublevels to break up the task into subtasks. In
7634such cases it may be enough to list only the highest level TODO headline
7635and omit the sublevels from the global list. Configure the variable
7636@code{org-agenda-todo-list-sublevels} to get this behavior.
7637@end itemize
7638
7639@node Matching tags and properties, Timeline, Global TODO list, Built-in agenda views
a7808fba 7640@subsection Matching tags and properties
4009494e
GM
7641@cindex matching, of tags
7642@cindex matching, of properties
7643@cindex tags view
864c9740 7644@cindex match view
4009494e 7645
c8d0cf5c
CD
7646If headlines in the agenda files are marked with @emph{tags} (@pxref{Tags}),
7647or have properties (@pxref{Properties and Columns}), you can select headlines
7648based on this metadata and collect them into an agenda buffer. The match
7649syntax described here also applies when creating sparse trees with @kbd{C-c /
7650m}.
4009494e
GM
7651
7652@table @kbd
acedf35c 7653@orgcmd{C-c a m,org-tags-view}
4009494e
GM
7654Produce a list of all headlines that match a given set of tags. The
7655command prompts for a selection criterion, which is a boolean logic
dbc28aaa
CD
7656expression with tags, like @samp{+work+urgent-withboss} or
7657@samp{work|home} (@pxref{Tags}). If you often need a specific search,
4009494e 7658define a custom command for it (@pxref{Agenda dispatcher}).
acedf35c 7659@orgcmd{C-c a M,org-tags-view}
c8d0cf5c
CD
7660@vindex org-tags-match-list-sublevels
7661@vindex org-agenda-tags-todo-honor-ignore-options
86fbb8ca
CD
7662Like @kbd{C-c a m}, but only select headlines that are also TODO items in a
7663not-DONE state and force checking subitems (see variable
7664@code{org-tags-match-list-sublevels}). To exclude scheduled/deadline items,
7665see the variable @code{org-agenda-tags-todo-honor-ignore-options}. Matching
7666specific TODO keywords together with a tags match is also possible, see
7667@ref{Tag searches}.
4009494e
GM
7668@end table
7669
7670The commands available in the tags list are described in @ref{Agenda
7671commands}.
7672
c8d0cf5c 7673@subsubheading Match syntax
4009494e 7674
c8d0cf5c
CD
7675@cindex Boolean logic, for tag/property searches
7676A search string can use Boolean operators @samp{&} for AND and @samp{|} for
1df7defd 7677OR@. @samp{&} binds more strongly than @samp{|}. Parentheses are currently
c8d0cf5c
CD
7678not implemented. Each element in the search is either a tag, a regular
7679expression matching tags, or an expression like @code{PROPERTY OPERATOR
7680VALUE} with a comparison operator, accessing a property value. Each element
7681may be preceded by @samp{-}, to select against it, and @samp{+} is syntactic
7682sugar for positive selection. The AND operator @samp{&} is optional when
7683@samp{+} or @samp{-} is present. Here are some examples, using only tags.
4009494e 7684
c8d0cf5c
CD
7685@table @samp
7686@item +work-boss
7687Select headlines tagged @samp{:work:}, but discard those also tagged
7688@samp{:boss:}.
7689@item work|laptop
7690Selects lines tagged @samp{:work:} or @samp{:laptop:}.
7691@item work|laptop+night
7692Like before, but require the @samp{:laptop:} lines to be tagged also
7693@samp{:night:}.
4009494e
GM
7694@end table
7695
c8d0cf5c
CD
7696@cindex regular expressions, with tags search
7697Instead of a tag, you may also specify a regular expression enclosed in curly
7698braces. For example,
7699@samp{work+@{^boss.*@}} matches headlines that contain the tag
7700@samp{:work:} and any tag @i{starting} with @samp{boss}.
7701
7702@cindex TODO keyword matching, with tags search
7703@cindex level, require for tags/property match
7704@cindex category, require for tags/property match
7705@vindex org-odd-levels-only
7706You may also test for properties (@pxref{Properties and Columns}) at the same
7707time as matching tags. The properties may be real properties, or special
7708properties that represent other metadata (@pxref{Special properties}). For
7709example, the ``property'' @code{TODO} represents the TODO keyword of the
7710entry. Or, the ``property'' @code{LEVEL} represents the level of an entry.
7711So a search @samp{+LEVEL=3+boss-TODO="DONE"} lists all level three headlines
7712that have the tag @samp{boss} and are @emph{not} marked with the TODO keyword
1df7defd 7713DONE@. In buffers with @code{org-odd-levels-only} set, @samp{LEVEL} does not
c8d0cf5c 7714count the number of stars, but @samp{LEVEL=2} will correspond to 3 stars etc.
8223b1d2
BG
7715The ITEM special property cannot currently be used in tags/property
7716searches@footnote{But @pxref{x-agenda-skip-entry-regexp,
7717,skipping entries based on regexp}.}.
c8d0cf5c
CD
7718
7719Here are more examples:
7720@table @samp
7721@item work+TODO="WAITING"
7722Select @samp{:work:}-tagged TODO lines with the specific TODO
7723keyword @samp{WAITING}.
7724@item work+TODO="WAITING"|home+TODO="WAITING"
7725Waiting tasks both at work and at home.
7726@end table
7727
7728When matching properties, a number of different operators can be used to test
7729the value of a property. Here is a complex example:
7730
7731@example
7732+work-boss+PRIORITY="A"+Coffee="unlimited"+Effort<2 \
7733 +With=@{Sarah\|Denny@}+SCHEDULED>="<2008-10-11>"
7734@end example
7735
7736@noindent
7737The type of comparison will depend on how the comparison value is written:
7738@itemize @minus
7739@item
7740If the comparison value is a plain number, a numerical comparison is done,
7741and the allowed operators are @samp{<}, @samp{=}, @samp{>}, @samp{<=},
7742@samp{>=}, and @samp{<>}.
7743@item
7744If the comparison value is enclosed in double-quotes,
7745a string comparison is done, and the same operators are allowed.
7746@item
7747If the comparison value is enclosed in double-quotes @emph{and} angular
7748brackets (like @samp{DEADLINE<="<2008-12-24 18:30>"}), both values are
7749assumed to be date/time specifications in the standard Org way, and the
7750comparison will be done accordingly. Special values that will be recognized
7751are @code{"<now>"} for now (including time), and @code{"<today>"}, and
1df7defd 7752@code{"<tomorrow>"} for these days at 0:00 hours, i.e., without a time
c8d0cf5c
CD
7753specification. Also strings like @code{"<+5d>"} or @code{"<-2m>"} with units
7754@code{d}, @code{w}, @code{m}, and @code{y} for day, week, month, and year,
7755respectively, can be used.
7756@item
7757If the comparison value is enclosed
7758in curly braces, a regexp match is performed, with @samp{=} meaning that the
7759regexp matches the property value, and @samp{<>} meaning that it does not
7760match.
7761@end itemize
7762
7763So the search string in the example finds entries tagged @samp{:work:} but
7764not @samp{:boss:}, which also have a priority value @samp{A}, a
7765@samp{:Coffee:} property with the value @samp{unlimited}, an @samp{Effort}
7766property that is numerically smaller than 2, a @samp{:With:} property that is
7767matched by the regular expression @samp{Sarah\|Denny}, and that are scheduled
7768on or after October 11, 2008.
7769
7770Accessing TODO, LEVEL, and CATEGORY during a search is fast. Accessing any
7771other properties will slow down the search. However, once you have paid the
7772price by accessing one property, testing additional properties is cheap
7773again.
7774
e66ba1df 7775You can configure Org mode to use property inheritance during a search, but
c8d0cf5c
CD
7776beware that this can slow down searches considerably. See @ref{Property
7777inheritance}, for details.
7778
7779For backward compatibility, and also for typing speed, there is also a
7780different way to test TODO states in a search. For this, terminate the
7781tags/property part of the search string (which may include several terms
7782connected with @samp{|}) with a @samp{/} and then specify a Boolean
7783expression just for TODO keywords. The syntax is then similar to that for
86fbb8ca 7784tags, but should be applied with care: for example, a positive selection on
1df7defd 7785several TODO keywords cannot meaningfully be combined with boolean AND@.
86fbb8ca
CD
7786However, @emph{negative selection} combined with AND can be meaningful. To
7787make sure that only lines are checked that actually have any TODO keyword
7788(resulting in a speed-up), use @kbd{C-c a M}, or equivalently start the TODO
7789part after the slash with @samp{!}. Using @kbd{C-c a M} or @samp{/!} will
7790not match TODO keywords in a DONE state. Examples:
c8d0cf5c
CD
7791
7792@table @samp
7793@item work/WAITING
7794Same as @samp{work+TODO="WAITING"}
7795@item work/!-WAITING-NEXT
7796Select @samp{:work:}-tagged TODO lines that are neither @samp{WAITING}
7797nor @samp{NEXT}
7798@item work/!+WAITING|+NEXT
7799Select @samp{:work:}-tagged TODO lines that are either @samp{WAITING} or
7800@samp{NEXT}.
7801@end table
7802
a351880d 7803@node Timeline, Search view, Matching tags and properties, Built-in agenda views
c8d0cf5c
CD
7804@subsection Timeline for a single file
7805@cindex timeline, single file
7806@cindex time-sorted view
7807
e66ba1df 7808The timeline summarizes all time-stamped items from a single Org mode
c8d0cf5c
CD
7809file in a @emph{time-sorted view}. The main purpose of this command is
7810to give an overview over events in a project.
7811
7812@table @kbd
acedf35c 7813@orgcmd{C-c a L,org-timeline}
c8d0cf5c
CD
7814Show a time-sorted view of the Org file, with all time-stamped items.
7815When called with a @kbd{C-u} prefix, all unfinished TODO entries
7816(scheduled or not) are also listed under the current date.
7817@end table
7818
7819@noindent
7820The commands available in the timeline buffer are listed in
7821@ref{Agenda commands}.
7822
a351880d
CD
7823@node Search view, Stuck projects, Timeline, Built-in agenda views
7824@subsection Search view
7825@cindex search view
7826@cindex text search
7827@cindex searching, for text
c8d0cf5c 7828
e66ba1df 7829This agenda view is a general text search facility for Org mode entries.
c8d0cf5c 7830It is particularly useful to find notes.
28a16a1b
CD
7831
7832@table @kbd
acedf35c 7833@orgcmd{C-c a s,org-search-view}
a351880d
CD
7834This is a special search that lets you select entries by matching a substring
7835or specific words using a boolean logic.
7836@end table
7837For example, the search string @samp{computer equipment} will find entries
7838that contain @samp{computer equipment} as a substring. If the two words are
7839separated by more space or a line break, the search will still match.
7840Search view can also search for specific keywords in the entry, using Boolean
7841logic. The search string @samp{+computer +wifi -ethernet -@{8\.11[bg]@}}
28a16a1b
CD
7842will search for note entries that contain the keywords @code{computer}
7843and @code{wifi}, but not the keyword @code{ethernet}, and which are also
7844not matched by the regular expression @code{8\.11[bg]}, meaning to
ed21c5c8
CD
7845exclude both 8.11b and 8.11g. The first @samp{+} is necessary to turn on
7846word search, other @samp{+} characters are optional. For more details, see
7847the docstring of the command @code{org-search-view}.
28a16a1b 7848
c8d0cf5c 7849@vindex org-agenda-text-search-extra-files
28a16a1b
CD
7850Note that in addition to the agenda files, this command will also search
7851the files listed in @code{org-agenda-text-search-extra-files}.
28a16a1b 7852
a351880d 7853@node Stuck projects, , Search view, Built-in agenda views
4009494e 7854@subsection Stuck projects
ce57c2fe 7855@pindex GTD, Getting Things Done
4009494e
GM
7856
7857If you are following a system like David Allen's GTD to organize your
7858work, one of the ``duties'' you have is a regular review to make sure
7859that all projects move along. A @emph{stuck} project is a project that
7860has no defined next actions, so it will never show up in the TODO lists
e66ba1df 7861Org mode produces. During the review, you need to identify such
4009494e
GM
7862projects and define next actions for them.
7863
7864@table @kbd
acedf35c 7865@orgcmd{C-c a #,org-agenda-list-stuck-projects}
4009494e
GM
7866List projects that are stuck.
7867@kindex C-c a !
7868@item C-c a !
c8d0cf5c 7869@vindex org-stuck-projects
4009494e
GM
7870Customize the variable @code{org-stuck-projects} to define what a stuck
7871project is and how to find it.
7872@end table
7873
7874You almost certainly will have to configure this view before it will
7875work for you. The built-in default assumes that all your projects are
7876level-2 headlines, and that a project is not stuck if it has at least
a7808fba 7877one entry marked with a TODO keyword TODO or NEXT or NEXTACTION.
4009494e 7878
e66ba1df 7879Let's assume that you, in your own way of using Org mode, identify
a7808fba 7880projects with a tag PROJECT, and that you use a TODO keyword MAYBE to
864c9740 7881indicate a project that should not be considered yet. Let's further
a7808fba 7882assume that the TODO keyword DONE marks finished projects, and that NEXT
4009494e
GM
7883and TODO indicate next actions. The tag @@SHOP indicates shopping and
7884is a next action even without the NEXT tag. Finally, if the project
7885contains the special word IGNORE anywhere, it should not be listed
7886either. In this case you would start by identifying eligible projects
c8d0cf5c
CD
7887with a tags/todo match@footnote{@xref{Tag searches}.}
7888@samp{+PROJECT/-MAYBE-DONE}, and then check for TODO, NEXT, @@SHOP, and
7889IGNORE in the subtree to identify projects that are not stuck. The
7890correct customization for this is
4009494e
GM
7891
7892@lisp
7893(setq org-stuck-projects
7894 '("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@@SHOP")
7895 "\\<IGNORE\\>"))
7896@end lisp
7897
c8d0cf5c
CD
7898Note that if a project is identified as non-stuck, the subtree of this entry
7899will still be searched for stuck projects.
4009494e 7900
a7808fba 7901@node Presentation and sorting, Agenda commands, Built-in agenda views, Agenda Views
4009494e
GM
7902@section Presentation and sorting
7903@cindex presentation, of agenda items
7904
c8d0cf5c 7905@vindex org-agenda-prefix-format
ce57c2fe 7906@vindex org-agenda-tags-column
e66ba1df 7907Before displaying items in an agenda view, Org mode visually prepares the
ce57c2fe
BG
7908items and sorts them. Each item occupies a single line. The line starts
7909with a @emph{prefix} that contains the @emph{category} (@pxref{Categories})
7910of the item and other important information. You can customize in which
7911column tags will be displayed through @code{org-agenda-tags-column}. You can
7912also customize the prefix using the option @code{org-agenda-prefix-format}.
7913This prefix is followed by a cleaned-up version of the outline headline
4009494e
GM
7914associated with the item.
7915
7916@menu
c0468714
GM
7917* Categories:: Not all tasks are equal
7918* Time-of-day specifications:: How the agenda knows the time
7919* Sorting of agenda items:: The order of things
4009494e
GM
7920@end menu
7921
7922@node Categories, Time-of-day specifications, Presentation and sorting, Presentation and sorting
7923@subsection Categories
7924
7925@cindex category
afe98dfa 7926@cindex #+CATEGORY
4009494e
GM
7927The category is a broad label assigned to each agenda item. By default,
7928the category is simply derived from the file name, but you can also
dbc28aaa 7929specify it with a special line in the buffer, like this@footnote{For
c8d0cf5c 7930backward compatibility, the following also works: if there are several
dbc28aaa
CD
7931such lines in a file, each specifies the category for the text below it.
7932The first category also applies to any text before the first CATEGORY
7933line. However, using this method is @emph{strongly} deprecated as it is
7934incompatible with the outline structure of the document. The correct
7935method for setting multiple categories in a buffer is using a
7936property.}:
4009494e
GM
7937
7938@example
7939#+CATEGORY: Thesis
7940@end example
7941
dbc28aaa 7942@noindent
c8d0cf5c 7943@cindex property, CATEGORY
dbc28aaa 7944If you would like to have a special CATEGORY for a single entry or a
55e0839d
CD
7945(sub)tree, give the entry a @code{:CATEGORY:} property with the
7946special category you want to apply as the value.
dbc28aaa
CD
7947
7948@noindent
7949The display in the agenda buffer looks best if the category is not
7950longer than 10 characters.
4009494e 7951
acedf35c
CD
7952@noindent
7953You can set up icons for category by customizing the
7954@code{org-agenda-category-icon-alist} variable.
7955
4009494e 7956@node Time-of-day specifications, Sorting of agenda items, Categories, Presentation and sorting
a7808fba 7957@subsection Time-of-day specifications
4009494e
GM
7958@cindex time-of-day specification
7959
e66ba1df 7960Org mode checks each agenda item for a time-of-day specification. The
c8d0cf5c 7961time can be part of the timestamp that triggered inclusion into the
4009494e 7962agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}. Time
c8d0cf5c 7963ranges can be specified with two timestamps, like
4009494e
GM
7964@c
7965@w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
7966
7967In the headline of the entry itself, a time(range) may also appear as
44ce9197 7968plain text (like @samp{12:45} or a @samp{8:30-1pm}). If the agenda
a7808fba 7969integrates the Emacs diary (@pxref{Weekly/daily agenda}), time
4009494e
GM
7970specifications in diary entries are recognized as well.
7971
e66ba1df 7972For agenda display, Org mode extracts the time and displays it in a
4009494e
GM
7973standard 24 hour format as part of the prefix. The example times in
7974the previous paragraphs would end up in the agenda like this:
7975
7976@example
7977 8:30-13:00 Arthur Dent lies in front of the bulldozer
7978 12:45...... Ford Prefect arrives and takes Arthur to the pub
7979 19:00...... The Vogon reads his poem
a50253cc 7980 20:30-22:15 Marvin escorts the Hitchhikers to the bridge
4009494e
GM
7981@end example
7982
7983@cindex time grid
7984If the agenda is in single-day mode, or for the display of today, the
7985timed entries are embedded in a time grid, like
7986
7987@example
7988 8:00...... ------------------
7989 8:30-13:00 Arthur Dent lies in front of the bulldozer
7990 10:00...... ------------------
7991 12:00...... ------------------
7992 12:45...... Ford Prefect arrives and takes Arthur to the pub
7993 14:00...... ------------------
7994 16:00...... ------------------
7995 18:00...... ------------------
7996 19:00...... The Vogon reads his poem
7997 20:00...... ------------------
2096a1b6 7998 20:30-22:15 Marvin escorts the Hitchhikers to the bridge
4009494e
GM
7999@end example
8000
c8d0cf5c
CD
8001@vindex org-agenda-use-time-grid
8002@vindex org-agenda-time-grid
4009494e
GM
8003The time grid can be turned on and off with the variable
8004@code{org-agenda-use-time-grid}, and can be configured with
8005@code{org-agenda-time-grid}.
8006
8007@node Sorting of agenda items, , Time-of-day specifications, Presentation and sorting
8008@subsection Sorting of agenda items
8009@cindex sorting, of agenda items
8010@cindex priorities, of agenda items
8011Before being inserted into a view, the items are sorted. How this is
8012done depends on the type of view.
8013@itemize @bullet
8014@item
c8d0cf5c 8015@vindex org-agenda-files
4009494e
GM
8016For the daily/weekly agenda, the items for each day are sorted. The
8017default order is to first collect all items containing an explicit
8018time-of-day specification. These entries will be shown at the beginning
8019of the list, as a @emph{schedule} for the day. After that, items remain
8020grouped in categories, in the sequence given by @code{org-agenda-files}.
8021Within each category, items are sorted by priority (@pxref{Priorities}),
8022which is composed of the base priority (2000 for priority @samp{A}, 1000
8023for @samp{B}, and 0 for @samp{C}), plus additional increments for
8024overdue scheduled or deadline items.
28a16a1b 8025@item
4009494e
GM
8026For the TODO list, items remain in the order of categories, but within
8027each category, sorting takes place according to priority
c8d0cf5c
CD
8028(@pxref{Priorities}). The priority used for sorting derives from the
8029priority cookie, with additions depending on how close an item is to its due
8030or scheduled date.
4009494e
GM
8031@item
8032For tags matches, items are not sorted at all, but just appear in the
8033sequence in which they are found in the agenda files.
8034@end itemize
8035
c8d0cf5c 8036@vindex org-agenda-sorting-strategy
4009494e 8037Sorting can be customized using the variable
a7808fba 8038@code{org-agenda-sorting-strategy}, and may also include criteria based on
71d35b24 8039the estimated effort of an entry (@pxref{Effort estimates}).
4009494e 8040
a7808fba 8041@node Agenda commands, Custom agenda views, Presentation and sorting, Agenda Views
4009494e
GM
8042@section Commands in the agenda buffer
8043@cindex commands, in agenda buffer
8044
c8d0cf5c 8045Entries in the agenda buffer are linked back to the Org file or diary
4009494e
GM
8046file where they originate. You are not allowed to edit the agenda
8047buffer itself, but commands are provided to show and jump to the
c8d0cf5c 8048original entry location, and to edit the Org files ``remotely'' from
4009494e
GM
8049the agenda buffer. In this way, all information is stored only once,
8050removing the risk that your agenda and note files may diverge.
8051
8052Some commands can be executed with mouse clicks on agenda lines. For
8053the other commands, the cursor needs to be in the desired line.
8054
8055@table @kbd
8056@tsubheading{Motion}
8057@cindex motion commands in agenda
acedf35c 8058@orgcmd{n,org-agenda-next-line}
801a68c8 8059Next line (same as @key{down} and @kbd{C-n}).
acedf35c 8060@orgcmd{p,org-agenda-previous-line}
801a68c8 8061Previous line (same as @key{up} and @kbd{C-p}).
c8d0cf5c 8062@tsubheading{View/Go to Org file}
acedf35c 8063@orgcmdkkc{@key{SPC},mouse-3,org-agenda-show-and-scroll-up}
4009494e 8064Display the original location of the item in another window.
b6cb4cd5
CD
8065With prefix arg, make sure that the entire entry is made visible in the
8066outline, not only the heading.
4009494e 8067@c
acedf35c 8068@orgcmd{L,org-agenda-recenter}
4009494e
GM
8069Display original location and recenter that window.
8070@c
acedf35c
CD
8071@orgcmdkkc{@key{TAB},mouse-2,org-agenda-goto}
8072Go to the original location of the item in another window.
4009494e 8073@c
acedf35c 8074@orgcmd{@key{RET},org-agenda-switch-to}
4009494e
GM
8075Go to the original location of the item and delete other windows.
8076@c
acedf35c 8077@orgcmd{F,org-agenda-follow-mode}
c8d0cf5c 8078@vindex org-agenda-start-with-follow-mode
4009494e
GM
8079Toggle Follow mode. In Follow mode, as you move the cursor through
8080the agenda buffer, the other window always shows the corresponding
c8d0cf5c 8081location in the Org file. The initial setting for this mode in new
4009494e
GM
8082agenda buffers can be set with the variable
8083@code{org-agenda-start-with-follow-mode}.
8084@c
acedf35c 8085@orgcmd{C-c C-x b,org-agenda-tree-to-indirect-buffer}
a7808fba
CD
8086Display the entire subtree of the current item in an indirect buffer. With a
8087numeric prefix argument N, go up to level N and then take that tree. If N is
8088negative, go up that many levels. With a @kbd{C-u} prefix, do not remove the
8089previously used indirect buffer.
6eb02347 8090
acedf35c 8091@orgcmd{C-c C-o,org-agenda-open-link}
6eb02347
CD
8092Follow a link in the entry. This will offer a selection of any links in the
8093text belonging to the referenced Org node. If there is only one link, it
8094will be followed without a selection prompt.
4009494e
GM
8095
8096@tsubheading{Change display}
8097@cindex display changing, in agenda
ce57c2fe
BG
8098@kindex A
8099@item A
8100Interactively select another agenda view and append it to the current view.
8101@c
4009494e
GM
8102@kindex o
8103@item o
8104Delete other windows.
8105@c
e4920bc9 8106@orgcmdkskc{v d,d,org-agenda-day-view}
8c8b834f 8107@xorgcmdkskc{v w,w,org-agenda-week-view}
acedf35c 8108@xorgcmd{v m,org-agenda-month-view}
8c8b834f 8109@xorgcmd{v y,org-agenda-year-view}
ce57c2fe
BG
8110@xorgcmd{v SPC,org-agenda-reset-view}
8111@vindex org-agenda-span
8112Switch to day/week/month/year view. When switching to day or week view, this
8113setting becomes the default for subsequent agenda refreshes. Since month and
8114year views are slow to create, they do not become the default. A numeric
8115prefix argument may be used to jump directly to a specific day of the year,
8116ISO week, month, or year, respectively. For example, @kbd{32 d} jumps to
8117February 1st, @kbd{9 w} to ISO week number 9. When setting day, week, or
8118month view, a year may be encoded in the prefix argument as well. For
8119example, @kbd{200712 w} will jump to week 12 in 2007. If such a year
8120specification has only one or two digits, it will be mapped to the interval
81211938-2037. @kbd{v @key{SPC}} will reset to what is set in
8122@code{org-agenda-span}.
4009494e 8123@c
acedf35c
CD
8124@orgcmd{f,org-agenda-later}
8125Go forward in time to display the following @code{org-agenda-current-span} days.
6eb02347 8126For example, if the display covers a week, switch to the following week.
acedf35c 8127With prefix arg, go forward that many times @code{org-agenda-current-span} days.
6eb02347 8128@c
acedf35c 8129@orgcmd{b,org-agenda-earlier}
6eb02347
CD
8130Go backward in time to display earlier dates.
8131@c
acedf35c 8132@orgcmd{.,org-agenda-goto-today}
6eb02347
CD
8133Go to today.
8134@c
acedf35c 8135@orgcmd{j,org-agenda-goto-date}
6eb02347
CD
8136Prompt for a date and go there.
8137@c
acedf35c
CD
8138@orgcmd{J,org-agenda-clock-goto}
8139Go to the currently clocked-in task @i{in the agenda buffer}.
afe98dfa 8140@c
acedf35c 8141@orgcmd{D,org-agenda-toggle-diary}
a7808fba 8142Toggle the inclusion of diary entries. See @ref{Weekly/daily agenda}.
4009494e 8143@c
acedf35c 8144@orgcmdkskc{v l,l,org-agenda-log-mode}
ed21c5c8 8145@kindex v L
6eb02347
CD
8146@vindex org-log-done
8147@vindex org-agenda-log-mode-items
8148Toggle Logbook mode. In Logbook mode, entries that were marked DONE while
8149logging was on (variable @code{org-log-done}) are shown in the agenda, as are
8150entries that have been clocked on that day. You can configure the entry
8151types that should be included in log mode using the variable
8152@code{org-agenda-log-mode-items}. When called with a @kbd{C-u} prefix, show
8153all possible logbook entries, including state changes. When called with two
8154prefix args @kbd{C-u C-u}, show only logging information, nothing else.
ed21c5c8 8155@kbd{v L} is equivalent to @kbd{C-u v l}.
6eb02347 8156@c
acedf35c 8157@orgcmdkskc{v [,[,org-agenda-manipulate-query-add}
6eb02347
CD
8158Include inactive timestamps into the current view. Only for weekly/daily
8159agenda and timeline views.
8160@c
acedf35c
CD
8161@orgcmd{v a,org-agenda-archives-mode}
8162@xorgcmd{v A,org-agenda-archives-mode 'files}
6eb02347
CD
8163Toggle Archives mode. In Archives mode, trees that are marked
8164@code{ARCHIVED} are also scanned when producing the agenda. When you use the
8165capital @kbd{A}, even all archive files are included. To exit archives mode,
8166press @kbd{v a} again.
8167@c
acedf35c 8168@orgcmdkskc{v R,R,org-agenda-clockreport-mode}
6eb02347 8169@vindex org-agenda-start-with-clockreport-mode
e66ba1df 8170@vindex org-clock-report-include-clocking-task
6eb02347
CD
8171Toggle Clockreport mode. In Clockreport mode, the daily/weekly agenda will
8172always show a table with the clocked times for the timespan and file scope
8173covered by the current agenda view. The initial setting for this mode in new
8174agenda buffers can be set with the variable
acedf35c 8175@code{org-agenda-start-with-clockreport-mode}. By using a prefix argument
1df7defd 8176when toggling this mode (i.e., @kbd{C-u R}), the clock table will not show
acedf35c 8177contributions from entries that are hidden by agenda filtering@footnote{Only
e66ba1df
BG
8178tags filtering will be respected here, effort filtering is ignored.}. See
8179also the variable @code{org-clock-report-include-clocking-task}.
6eb02347 8180@c
ce57c2fe
BG
8181@orgkey{v c}
8182@vindex org-agenda-clock-consistency-checks
8183Show overlapping clock entries, clocking gaps, and other clocking problems in
8184the current agenda range. You can then visit clocking lines and fix them
8185manually. See the variable @code{org-agenda-clock-consistency-checks} for
8186information on how to customize the definition of what constituted a clocking
8187problem. To return to normal agenda display, press @kbd{l} to exit Logbook
8188mode.
8189@c
acedf35c 8190@orgcmdkskc{v E,E,org-agenda-entry-text-mode}
6eb02347
CD
8191@vindex org-agenda-start-with-entry-text-mode
8192@vindex org-agenda-entry-text-maxlines
8193Toggle entry text mode. In entry text mode, a number of lines from the Org
8194outline node referenced by an agenda line will be displayed below the line.
8195The maximum number of lines is given by the variable
8196@code{org-agenda-entry-text-maxlines}. Calling this command with a numeric
8197prefix argument will temporarily modify that number to the prefix value.
8198@c
acedf35c 8199@orgcmd{G,org-agenda-toggle-time-grid}
c8d0cf5c
CD
8200@vindex org-agenda-use-time-grid
8201@vindex org-agenda-time-grid
4009494e
GM
8202Toggle the time grid on and off. See also the variables
8203@code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
8204@c
ce57c2fe 8205@orgcmd{r,org-agenda-redo}
560bb6ea 8206Recreate the agenda buffer, for example to reflect the changes after
3bcfba17 8207modification of the timestamps of items with @kbd{S-@key{left}} and
560bb6ea 8208@kbd{S-@key{right}}. When the buffer is the global TODO list, a prefix
4009494e
GM
8209argument is interpreted to create a selective list for a specific TODO
8210keyword.
ce57c2fe 8211@orgcmd{g,org-agenda-redo}
28a16a1b 8212Same as @kbd{r}.
4009494e 8213@c
acedf35c 8214@orgcmdkskc{C-x C-s,s,org-save-all-org-buffers}
c8d0cf5c
CD
8215Save all Org buffers in the current Emacs session, and also the locations of
8216IDs.
4009494e 8217@c
acedf35c 8218@orgcmd{C-c C-x C-c,org-agenda-columns}
c8d0cf5c 8219@vindex org-columns-default-format
a7808fba
CD
8220Invoke column view (@pxref{Column view}) in the agenda buffer. The column
8221view format is taken from the entry at point, or (if there is no entry at
8222point), from the first entry in the agenda view. So whatever the format for
8223that entry would be in the original buffer (taken from a property, from a
8224@code{#+COLUMNS} line, or from the default variable
8225@code{org-columns-default-format}), will be used in the agenda.
4009494e 8226
acedf35c 8227@orgcmd{C-c C-x >,org-agenda-remove-restriction-lock}
c8d0cf5c
CD
8228Remove the restriction lock on the agenda, if it is currently restricted to a
8229file or subtree (@pxref{Agenda files}).
8230
864c9740 8231@tsubheading{Secondary filtering and query editing}
e66ba1df 8232@cindex filtering, by tag category and effort, in agenda
71d35b24 8233@cindex tag filtering, in agenda
e66ba1df 8234@cindex category filtering, in agenda
71d35b24 8235@cindex effort filtering, in agenda
28a16a1b
CD
8236@cindex query editing, in agenda
8237
e66ba1df
BG
8238@orgcmd{<,org-agenda-filter-by-category}
8239@vindex org-agenda-category-filter-preset
8240
8241Filter the current agenda view with respect to the category of the item at
8242point. Pressing @code{<} another time will remove this filter. You can add
8243a filter preset through the option @code{org-agenda-category-filter-preset}
8244(see below.)
8245
acedf35c 8246@orgcmd{/,org-agenda-filter-by-tag}
e66ba1df 8247@vindex org-agenda-tag-filter-preset
71d35b24 8248Filter the current agenda view with respect to a tag and/or effort estimates.
c8d0cf5c 8249The difference between this and a custom agenda command is that filtering is
71d35b24 8250very fast, so that you can switch quickly between different filters without
acedf35c 8251having to recreate the agenda.@footnote{Custom commands can preset a filter by
e66ba1df 8252binding the variable @code{org-agenda-tag-filter-preset} as an option. This
c8d0cf5c 8253filter will then be applied to the view and persist as a basic filter through
afe98dfa 8254refreshes and more secondary filtering. The filter is a global property of
acedf35c 8255the entire agenda view---in a block agenda, you should only set this in the
afe98dfa 8256global options section, not in the section of an individual block.}
71d35b24 8257
acedf35c 8258You will be prompted for a tag selection letter; @key{SPC} will mean any tag at
a351880d
CD
8259all. Pressing @key{TAB} at that prompt will offer use completion to select a
8260tag (including any tags that do not have a selection character). The command
8261then hides all entries that do not contain or inherit this tag. When called
8262with prefix arg, remove the entries that @emph{do} have the tag. A second
8263@kbd{/} at the prompt will turn off the filter and unhide any hidden entries.
8264If the first key you press is either @kbd{+} or @kbd{-}, the previous filter
8265will be narrowed by requiring or forbidding the selected additional tag.
8266Instead of pressing @kbd{+} or @kbd{-} after @kbd{/}, you can also
8267immediately use the @kbd{\} command.
71d35b24 8268
c8d0cf5c 8269@vindex org-sort-agenda-noeffort-is-high
acedf35c 8270In order to filter for effort estimates, you should set up allowed
71d35b24
CD
8271efforts globally, for example
8272@lisp
8273(setq org-global-properties
8274 '(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00")))
8275@end lisp
c8d0cf5c
CD
8276You can then filter for an effort by first typing an operator, one of
8277@kbd{<}, @kbd{>}, and @kbd{=}, and then the one-digit index of an effort
8278estimate in your array of allowed values, where @kbd{0} means the 10th value.
8279The filter will then restrict to entries with effort smaller-or-equal, equal,
8280or larger-or-equal than the selected value. If the digits 0-9 are not used
8281as fast access keys to tags, you can also simply press the index digit
8282directly without an operator. In this case, @kbd{<} will be assumed. For
8283application of the operator, entries without a defined effort will be treated
8284according to the value of @code{org-sort-agenda-noeffort-is-high}. To filter
8285for tasks without effort definition, press @kbd{?} as the operator.
71d35b24 8286
a351880d
CD
8287Org also supports automatic, context-aware tag filtering. If the variable
8288@code{org-agenda-auto-exclude-function} is set to a user-defined function,
8289that function can decide which tags should be excluded from the agenda
8290automatically. Once this is set, the @kbd{/} command then accepts @kbd{RET}
8291as a sub-option key and runs the auto exclusion logic. For example, let's
8292say you use a @code{Net} tag to identify tasks which need network access, an
8293@code{Errand} tag for errands in town, and a @code{Call} tag for making phone
8294calls. You could auto-exclude these tags based on the availability of the
8295Internet, and outside of business hours, with something like this:
8296
8297@lisp
8298@group
8299(defun org-my-auto-exclude-function (tag)
8300 (and (cond
c0468714
GM
8301 ((string= tag "Net")
8302 (/= 0 (call-process "/sbin/ping" nil nil nil
8303 "-c1" "-q" "-t1" "mail.gnu.org")))
8304 ((or (string= tag "Errand") (string= tag "Call"))
8305 (let ((hour (nth 2 (decode-time))))
8306 (or (< hour 8) (> hour 21)))))
a351880d
CD
8307 (concat "-" tag)))
8308
8309(setq org-agenda-auto-exclude-function 'org-my-auto-exclude-function)
8310@end group
8311@end lisp
8312
ce57c2fe 8313@orgcmd{\\,org-agenda-filter-by-tag-refine}
71d35b24
CD
8314Narrow the current agenda filter by an additional condition. When called with
8315prefix arg, remove the entries that @emph{do} have the tag, or that do match
8316the effort criterion. You can achieve the same effect by pressing @kbd{+} or
8317@kbd{-} as the first key after the @kbd{/} command.
864c9740 8318
acedf35c 8319@c
28a16a1b
CD
8320@kindex [
8321@kindex ]
8322@kindex @{
8323@kindex @}
8324@item [ ] @{ @}
6eb02347
CD
8325@table @i
8326@item @r{in} search view
8327add new search words (@kbd{[} and @kbd{]}) or new regular expressions
8328(@kbd{@{} and @kbd{@}}) to the query string. The opening bracket/brace will
8329add a positive search term prefixed by @samp{+}, indicating that this search
8330term @i{must} occur/match in the entry. The closing bracket/brace will add a
8331negative search term which @i{must not} occur/match in the entry for it to be
864c9740 8332selected.
6eb02347 8333@end table
28a16a1b 8334
4009494e
GM
8335@tsubheading{Remote editing}
8336@cindex remote editing, from agenda
8337
8338@item 0-9
8339Digit argument.
8340@c
8341@cindex undoing remote-editing events
8342@cindex remote editing, undo
acedf35c 8343@orgcmd{C-_,org-agenda-undo}
4009494e
GM
8344Undo a change due to a remote editing command. The change is undone
8345both in the agenda buffer and in the remote buffer.
8346@c
acedf35c 8347@orgcmd{t,org-agenda-todo}
4009494e
GM
8348Change the TODO state of the item, both in the agenda and in the
8349original org file.
8350@c
acedf35c
CD
8351@orgcmd{C-S-@key{right},org-agenda-todo-nextset}
8352@orgcmd{C-S-@key{left},org-agenda-todo-previousset}
a351880d
CD
8353Switch to the next/previous set of TODO keywords.
8354@c
acedf35c 8355@orgcmd{C-k,org-agenda-kill}
c8d0cf5c 8356@vindex org-agenda-confirm-kill
4009494e 8357Delete the current agenda item along with the entire subtree belonging
a7808fba 8358to it in the original Org file. If the text to be deleted remotely
4009494e
GM
8359is longer than one line, the kill needs to be confirmed by the user. See
8360variable @code{org-agenda-confirm-kill}.
8361@c
acedf35c 8362@orgcmd{C-c C-w,org-agenda-refile}
c8d0cf5c
CD
8363Refile the entry at point.
8364@c
acedf35c 8365@orgcmdkskc{C-c C-x C-a,a,org-agenda-archive-default-with-confirmation}
a351880d
CD
8366@vindex org-archive-default-command
8367Archive the subtree corresponding to the entry at point using the default
8368archiving command set in @code{org-archive-default-command}. When using the
8369@code{a} key, confirmation will be required.
8370@c
acedf35c 8371@orgcmd{C-c C-x a,org-agenda-toggle-archive-tag}
a7808fba
CD
8372Toggle the ARCHIVE tag for the current headline.
8373@c
acedf35c 8374@orgcmd{C-c C-x A,org-agenda-archive-to-archive-sibling}
c8d0cf5c
CD
8375Move the subtree corresponding to the current entry to its @emph{archive
8376sibling}.
a7808fba 8377@c
acedf35c 8378@orgcmdkskc{C-c C-x C-s,$,org-agenda-archive}
a7808fba 8379Archive the subtree corresponding to the current headline. This means the
b349f79f 8380entry will be moved to the configured archive location, most likely a
a7808fba 8381different file.
4009494e 8382@c
acedf35c 8383@orgcmd{T,org-agenda-show-tags}
c8d0cf5c 8384@vindex org-agenda-show-inherited-tags
96c8522a
CD
8385Show all tags associated with the current item. This is useful if you have
8386turned off @code{org-agenda-show-inherited-tags}, but still want to see all
8387tags of a headline occasionally.
4009494e 8388@c
acedf35c 8389@orgcmd{:,org-agenda-set-tags}
dbc28aaa
CD
8390Set tags for the current headline. If there is an active region in the
8391agenda, change a tag for all headings in the region.
4009494e 8392@c
4009494e
GM
8393@kindex ,
8394@item ,
acedf35c 8395Set the priority for the current item (@command{org-agenda-priority}).
e66ba1df 8396Org mode prompts for the priority character. If you reply with @key{SPC},
ce57c2fe 8397the priority cookie is removed from the entry.
4009494e 8398@c
acedf35c 8399@orgcmd{P,org-agenda-show-priority}
4009494e
GM
8400Display weighted priority of current item.
8401@c
acedf35c 8402@orgcmdkkc{+,S-@key{up},org-agenda-priority-up}
4009494e
GM
8403Increase the priority of the current item. The priority is changed in
8404the original buffer, but the agenda is not resorted. Use the @kbd{r}
8405key for this.
8406@c
acedf35c 8407@orgcmdkkc{-,S-@key{down},org-agenda-priority-down}
4009494e
GM
8408Decrease the priority of the current item.
8409@c
acedf35c 8410@orgcmdkkc{z,C-c C-z,org-agenda-add-note}
c8d0cf5c 8411@vindex org-log-into-drawer
acedf35c 8412Add a note to the entry. This note will be recorded, and then filed to the
c8d0cf5c 8413same location where state change notes are put. Depending on
acedf35c 8414@code{org-log-into-drawer}, this may be inside a drawer.
c8d0cf5c 8415@c
acedf35c 8416@orgcmd{C-c C-a,org-attach}
864c9740
CD
8417Dispatcher for all command related to attachments.
8418@c
acedf35c
CD
8419@orgcmd{C-c C-s,org-agenda-schedule}
8420Schedule this item. With prefix arg remove the scheduling timestamp
4009494e 8421@c
acedf35c
CD
8422@orgcmd{C-c C-d,org-agenda-deadline}
8423Set a deadline for this item. With prefix arg remove the deadline.
4009494e 8424@c
acedf35c 8425@orgcmd{S-@key{right},org-agenda-do-date-later}
c8d0cf5c 8426Change the timestamp associated with the current line by one day into the
e66ba1df
BG
8427future. If the date is in the past, the first call to this command will move
8428it to today.@*
8429With a numeric prefix argument, change it by that many days. For example,
8430@kbd{3 6 5 S-@key{right}} will change it by a year. With a @kbd{C-u} prefix,
8431change the time by one hour. If you immediately repeat the command, it will
8432continue to change hours even without the prefix arg. With a double @kbd{C-u
8433C-u} prefix, do the same for changing minutes.@*
8434The stamp is changed in the original Org file, but the change is not directly
8435reflected in the agenda buffer. Use @kbd{r} or @kbd{g} to update the buffer.
4009494e 8436@c
acedf35c 8437@orgcmd{S-@key{left},org-agenda-do-date-earlier}
c8d0cf5c 8438Change the timestamp associated with the current line by one day
4009494e
GM
8439into the past.
8440@c
acedf35c 8441@orgcmd{>,org-agenda-date-prompt}
ed21c5c8
CD
8442Change the timestamp associated with the current line. The key @kbd{>} has
8443been chosen, because it is the same as @kbd{S-.} on my keyboard.
4009494e 8444@c
acedf35c 8445@orgcmd{I,org-agenda-clock-in}
4009494e
GM
8446Start the clock on the current item. If a clock is running already, it
8447is stopped first.
8448@c
acedf35c 8449@orgcmd{O,org-agenda-clock-out}
4009494e
GM
8450Stop the previously started clock.
8451@c
acedf35c 8452@orgcmd{X,org-agenda-clock-cancel}
4009494e 8453Cancel the currently running clock.
acedf35c
CD
8454@c
8455@orgcmd{J,org-agenda-clock-goto}
dbc28aaa 8456Jump to the running clock in another window.
8223b1d2
BG
8457@c
8458@orgcmd{k,org-agenda-capture}
8459Like @code{org-capture}, but use the date at point as the default date for
8460the capture template. See @var{org-capture-use-agenda-date} to make this
8461the default behavior of @code{org-capture}.
8462@cindex capturing, from agenda
8463@vindex org-capture-use-agenda-date
dbc28aaa 8464
c8d0cf5c
CD
8465@tsubheading{Bulk remote editing selected entries}
8466@cindex remote editing, bulk, from agenda
8223b1d2
BG
8467@vindex org-agenda-bulk-persistent-marks
8468@vindex org-agenda-bulk-custom-functions
c8d0cf5c 8469
acedf35c
CD
8470@orgcmd{m,org-agenda-bulk-mark}
8471Mark the entry at point for bulk action. With prefix arg, mark that many
8472successive entries.
8473@c
ce57c2fe
BG
8474@orgcmd{%,org-agenda-bulk-mark-regexp}
8475Mark entries matching a regular expression for bulk action.
8476@c
acedf35c 8477@orgcmd{u,org-agenda-bulk-unmark}
c8d0cf5c 8478Unmark entry for bulk action.
acedf35c
CD
8479@c
8480@orgcmd{U,org-agenda-bulk-remove-all-marks}
c8d0cf5c 8481Unmark all marked entries for bulk action.
acedf35c
CD
8482@c
8483@orgcmd{B,org-agenda-bulk-action}
c8d0cf5c 8484Bulk action: act on all marked entries in the agenda. This will prompt for
ed21c5c8
CD
8485another key to select the action to be applied. The prefix arg to @kbd{B}
8486will be passed through to the @kbd{s} and @kbd{d} commands, to bulk-remove
8223b1d2
BG
8487these special timestamps. By default, marks are removed after the bulk. If
8488you want them to persist, set @code{org-agenda-bulk-persistent-marks} to
8489@code{t} or hit @kbd{p} at the prompt.
8490
c8d0cf5c 8491@example
8223b1d2 8492* @r{Toggle persistent marks.}
c8d0cf5c
CD
8493$ @r{Archive all selected entries.}
8494A @r{Archive entries by moving them to their respective archive siblings.}
8495t @r{Change TODO state. This prompts for a single TODO keyword and}
8496 @r{changes the state of all selected entries, bypassing blocking and}
ce57c2fe 8497 @r{suppressing logging notes (but not timestamps).}
c8d0cf5c
CD
8498+ @r{Add a tag to all selected entries.}
8499- @r{Remove a tag from all selected entries.}
8500s @r{Schedule all items to a new date. To shift existing schedule dates}
8501 @r{by a fixed number of days, use something starting with double plus}
8502 @r{at the prompt, for example @samp{++8d} or @samp{++2w}.}
8223b1d2
BG
8503d @r{Set deadline to a specific date.}
8504r @r{Prompt for a single refile target and move all entries. The entries}
8505 @r{will no longer be in the agenda; refresh (@kbd{g}) to bring them back.}
ce57c2fe
BG
8506S @r{Reschedule randomly into the coming N days. N will be prompted for.}
8507 @r{With prefix arg (@kbd{C-u B S}), scatter only across weekdays.}
8223b1d2 8508f @r{Apply a function@footnote{You can also create persistent custom functions through@code{org-agenda-bulk-custom-functions}.} to marked entries.}
ce57c2fe
BG
8509 @r{For example, the function below sets the CATEGORY property of the}
8510 @r{entries to web.}
8511 @r{(defun set-category ()}
8512 @r{ (interactive "P")}
8513 @r{ (let* ((marker (or (org-get-at-bol 'org-hd-marker)}
8514 @r{ (org-agenda-error)))}
8515 @r{ (buffer (marker-buffer marker)))}
8516 @r{ (with-current-buffer buffer}
8517 @r{ (save-excursion}
8518 @r{ (save-restriction}
8519 @r{ (widen)}
8520 @r{ (goto-char marker)}
8521 @r{ (org-back-to-heading t)}
8522 @r{ (org-set-property "CATEGORY" "web"))))))}
c8d0cf5c
CD
8523@end example
8524
8525
4009494e
GM
8526@tsubheading{Calendar commands}
8527@cindex calendar commands, from agenda
acedf35c
CD
8528
8529@orgcmd{c,org-agenda-goto-calendar}
4009494e
GM
8530Open the Emacs calendar and move to the date at the agenda cursor.
8531@c
acedf35c 8532@orgcmd{c,org-calendar-goto-agenda}
e66ba1df 8533When in the calendar, compute and show the Org mode agenda for the
4009494e
GM
8534date at the cursor.
8535@c
8536@cindex diary entries, creating from agenda
acedf35c 8537@orgcmd{i,org-agenda-diary-entry}
a351880d
CD
8538@vindex org-agenda-diary-file
8539Insert a new entry into the diary, using the date at the cursor and (for
8540block entries) the date at the mark. This will add to the Emacs diary
8541file@footnote{This file is parsed for the agenda when
8542@code{org-agenda-include-diary} is set.}, in a way similar to the @kbd{i}
8543command in the calendar. The diary file will pop up in another window, where
8544you can add the entry.
8545
e66ba1df
BG
8546If you configure @code{org-agenda-diary-file} to point to an Org mode file,
8547Org will create entries (in Org mode syntax) in that file instead. Most
a351880d
CD
8548entries will be stored in a date-based outline tree that will later make it
8549easy to archive appointments from previous months/years. The tree will be
86fbb8ca 8550built under an entry with a @code{DATE_TREE} property, or else with years as
acedf35c 8551top-level entries. Emacs will prompt you for the entry text---if you specify
a351880d
CD
8552it, the entry will be created in @code{org-agenda-diary-file} without further
8553interaction. If you directly press @key{RET} at the prompt without typing
8554text, the target file will be shown in another window for you to finish the
8555entry there. See also the @kbd{k r} command.
4009494e 8556@c
acedf35c 8557@orgcmd{M,org-agenda-phases-of-moon}
4009494e
GM
8558Show the phases of the moon for the three months around current date.
8559@c
acedf35c 8560@orgcmd{S,org-agenda-sunrise-sunset}
4009494e 8561Show sunrise and sunset times. The geographical location must be set
c8d0cf5c 8562with calendar variables, see the documentation for the Emacs calendar.
4009494e 8563@c
acedf35c 8564@orgcmd{C,org-agenda-convert-date}
4009494e
GM
8565Convert the date at cursor into many other cultural and historic
8566calendars.
8567@c
acedf35c 8568@orgcmd{H,org-agenda-holidays}
c8d0cf5c 8569Show holidays for three months around the cursor date.
a7808fba
CD
8570
8571@item M-x org-export-icalendar-combine-agenda-files
4009494e 8572Export a single iCalendar file containing entries from all agenda files.
a7808fba 8573This is a globally available command, and also available in the agenda menu.
4009494e
GM
8574
8575@tsubheading{Exporting to a file}
8223b1d2 8576@orgcmd{C-x C-w,org-agenda-write}
4009494e
GM
8577@cindex exporting agenda views
8578@cindex agenda views, exporting
c8d0cf5c
CD
8579@vindex org-agenda-exporter-settings
8580Write the agenda view to a file. Depending on the extension of the selected
8581file name, the view will be exported as HTML (extension @file{.html} or
e66ba1df 8582@file{.htm}), Postscript (extension @file{.ps}), PDF (extension @file{.pdf}),
a351880d
CD
8583and plain text (any other extension). When called with a @kbd{C-u} prefix
8584argument, immediately open the newly created file. Use the variable
8585@code{org-agenda-exporter-settings} to set options for @file{ps-print} and
8586for @file{htmlize} to be used during export.
4009494e
GM
8587
8588@tsubheading{Quit and Exit}
acedf35c 8589@orgcmd{q,org-agenda-quit}
4009494e
GM
8590Quit agenda, remove the agenda buffer.
8591@c
4009494e 8592@cindex agenda files, removing buffers
acedf35c 8593@orgcmd{x,org-agenda-exit}
4009494e
GM
8594Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
8595for the compilation of the agenda. Buffers created by the user to
c8d0cf5c 8596visit Org files will not be removed.
4009494e
GM
8597@end table
8598
8599
c8d0cf5c 8600@node Custom agenda views, Exporting Agenda Views, Agenda commands, Agenda Views
4009494e
GM
8601@section Custom agenda views
8602@cindex custom agenda views
8603@cindex agenda views, custom
8604
8605Custom agenda commands serve two purposes: to store and quickly access
8606frequently used TODO and tags searches, and to create special composite
8607agenda buffers. Custom agenda commands will be accessible through the
8608dispatcher (@pxref{Agenda dispatcher}), just like the default commands.
8609
8610@menu
c0468714
GM
8611* Storing searches:: Type once, use often
8612* Block agenda:: All the stuff you need in a single buffer
8613* Setting Options:: Changing the rules
4009494e
GM
8614@end menu
8615
8616@node Storing searches, Block agenda, Custom agenda views, Custom agenda views
8617@subsection Storing searches
8618
8619The first application of custom searches is the definition of keyboard
8620shortcuts for frequently used searches, either creating an agenda
8621buffer, or a sparse tree (the latter covering of course only the current
8622buffer).
8623@kindex C-c a C
c8d0cf5c 8624@vindex org-agenda-custom-commands
8223b1d2 8625
4009494e
GM
8626Custom commands are configured in the variable
8627@code{org-agenda-custom-commands}. You can customize this variable, for
8223b1d2
BG
8628example by pressing @kbd{C-c a C}. You can also directly set it with Emacs
8629Lisp in @file{.emacs}. The following example contains all valid search
8630types:
4009494e
GM
8631
8632@lisp
8633@group
8634(setq org-agenda-custom-commands
8635 '(("w" todo "WAITING")
8636 ("W" todo-tree "WAITING")
dbc28aaa
CD
8637 ("u" tags "+boss-urgent")
8638 ("v" tags-todo "+boss-urgent")
8639 ("U" tags-tree "+boss-urgent")
8640 ("f" occur-tree "\\<FIXME\\>")
8641 ("h" . "HOME+Name tags searches") ; description for "h" prefix
8642 ("hl" tags "+home+Lisa")
8643 ("hp" tags "+home+Peter")
8644 ("hk" tags "+home+Kim")))
4009494e
GM
8645@end group
8646@end lisp
8647
8648@noindent
dbc28aaa
CD
8649The initial string in each entry defines the keys you have to press
8650after the dispatcher command @kbd{C-c a} in order to access the command.
8651Usually this will be just a single character, but if you have many
8652similar commands, you can also define two-letter combinations where the
8653first character is the same in several combinations and serves as a
8654prefix key@footnote{You can provide a description for a prefix key by
8655inserting a cons cell with the prefix and the description.}. The second
8656parameter is the search type, followed by the string or regular
8657expression to be used for the matching. The example above will
8658therefore define:
4009494e
GM
8659
8660@table @kbd
8661@item C-c a w
8662as a global search for TODO entries with @samp{WAITING} as the TODO
8663keyword
8664@item C-c a W
8665as the same search, but only in the current buffer and displaying the
8666results as a sparse tree
8667@item C-c a u
dbc28aaa
CD
8668as a global tags search for headlines marked @samp{:boss:} but not
8669@samp{:urgent:}
4009494e
GM
8670@item C-c a v
8671as the same search as @kbd{C-c a u}, but limiting the search to
8672headlines that are also TODO items
8673@item C-c a U
8674as the same search as @kbd{C-c a u}, but only in the current buffer and
8675displaying the result as a sparse tree
8676@item C-c a f
8677to create a sparse tree (again: current buffer only) with all entries
dbc28aaa
CD
8678containing the word @samp{FIXME}
8679@item C-c a h
8680as a prefix command for a HOME tags search where you have to press an
8681additional key (@kbd{l}, @kbd{p} or @kbd{k}) to select a name (Lisa,
8682Peter, or Kim) as additional tag to match.
4009494e
GM
8683@end table
8684
8685@node Block agenda, Setting Options, Storing searches, Custom agenda views
8686@subsection Block agenda
8687@cindex block agenda
8688@cindex agenda, with block views
8689
8690Another possibility is the construction of agenda views that comprise
8691the results of @emph{several} commands, each of which creates a block in
8692the agenda buffer. The available commands include @code{agenda} for the
8693daily or weekly agenda (as created with @kbd{C-c a a}), @code{alltodo}
a7808fba 8694for the global TODO list (as constructed with @kbd{C-c a t}), and the
4009494e
GM
8695matching commands discussed above: @code{todo}, @code{tags}, and
8696@code{tags-todo}. Here are two examples:
8697
8698@lisp
8699@group
8700(setq org-agenda-custom-commands
8701 '(("h" "Agenda and Home-related tasks"
28a16a1b 8702 ((agenda "")
dbc28aaa
CD
8703 (tags-todo "home")
8704 (tags "garden")))
4009494e 8705 ("o" "Agenda and Office-related tasks"
28a16a1b 8706 ((agenda "")
dbc28aaa
CD
8707 (tags-todo "work")
8708 (tags "office")))))
4009494e
GM
8709@end group
8710@end lisp
8711
8712@noindent
8713This will define @kbd{C-c a h} to create a multi-block view for stuff
8714you need to attend to at home. The resulting agenda buffer will contain
8715your agenda for the current week, all TODO items that carry the tag
dbc28aaa 8716@samp{home}, and also all lines tagged with @samp{garden}. Finally the
4009494e
GM
8717command @kbd{C-c a o} provides a similar view for office tasks.
8718
c8d0cf5c 8719@node Setting Options, , Block agenda, Custom agenda views
a7808fba 8720@subsection Setting options for custom commands
4009494e
GM
8721@cindex options, for custom agenda views
8722
c8d0cf5c 8723@vindex org-agenda-custom-commands
e66ba1df 8724Org mode contains a number of variables regulating agenda construction
4009494e
GM
8725and display. The global variables define the behavior for all agenda
8726commands, including the custom commands. However, if you want to change
8727some settings just for a single custom view, you can do so. Setting
8728options requires inserting a list of variable names and values at the
8729right spot in @code{org-agenda-custom-commands}. For example:
8730
8731@lisp
8732@group
8733(setq org-agenda-custom-commands
8734 '(("w" todo "WAITING"
8735 ((org-agenda-sorting-strategy '(priority-down))
8736 (org-agenda-prefix-format " Mixed: ")))
dbc28aaa 8737 ("U" tags-tree "+boss-urgent"
4009494e 8738 ((org-show-following-heading nil)
28a16a1b
CD
8739 (org-show-hierarchy-above nil)))
8740 ("N" search ""
8741 ((org-agenda-files '("~org/notes.org"))
8742 (org-agenda-text-search-extra-files nil)))))
4009494e
GM
8743@end group
8744@end lisp
8745
8746@noindent
8747Now the @kbd{C-c a w} command will sort the collected entries only by
dbc28aaa 8748priority, and the prefix format is modified to just say @samp{ Mixed: }
4009494e
GM
8749instead of giving the category of the entry. The sparse tags tree of
8750@kbd{C-c a U} will now turn out ultra-compact, because neither the
8751headline hierarchy above the match, nor the headline following the match
28a16a1b
CD
8752will be shown. The command @kbd{C-c a N} will do a text search limited
8753to only a single file.
4009494e 8754
c8d0cf5c 8755@vindex org-agenda-custom-commands
4009494e
GM
8756For command sets creating a block agenda,
8757@code{org-agenda-custom-commands} has two separate spots for setting
8758options. You can add options that should be valid for just a single
8759command in the set, and options that should be valid for all commands in
acedf35c 8760the set. The former are just added to the command entry; the latter
4009494e
GM
8761must come after the list of command entries. Going back to the block
8762agenda example (@pxref{Block agenda}), let's change the sorting strategy
8763for the @kbd{C-c a h} commands to @code{priority-down}, but let's sort
8764the results for GARDEN tags query in the opposite order,
8765@code{priority-up}. This would look like this:
8766
8767@lisp
8768@group
8769(setq org-agenda-custom-commands
8770 '(("h" "Agenda and Home-related tasks"
8771 ((agenda)
dbc28aaa
CD
8772 (tags-todo "home")
8773 (tags "garden"
4009494e
GM
8774 ((org-agenda-sorting-strategy '(priority-up)))))
8775 ((org-agenda-sorting-strategy '(priority-down))))
8776 ("o" "Agenda and Office-related tasks"
8777 ((agenda)
dbc28aaa
CD
8778 (tags-todo "work")
8779 (tags "office")))))
4009494e
GM
8780@end group
8781@end lisp
8782
c8d0cf5c
CD
8783As you see, the values and parentheses setting is a little complex.
8784When in doubt, use the customize interface to set this variable---it
8785fully supports its structure. Just one caveat: when setting options in
8786this interface, the @emph{values} are just Lisp expressions. So if the
8787value is a string, you need to add the double-quotes around the value
4009494e
GM
8788yourself.
8789
8223b1d2
BG
8790@vindex org-agenda-custom-commands-contexts
8791To control whether an agenda command should be accessible from a specific
8792context, you can customize @var{org-agenda-custom-commands-contexts}. Let's
8793say for example that you have an agenda commands @code{"o"} displaying a view
8794that you only need when reading emails. Then you would configure this option
8795like this:
8796
8797@example
8798(setq org-agenda-custom-commands-contexts
8799 '(("o" (in-mode . "message-mode"))))
8800@end example
8801
8802You can also tell that the command key @code{"o"} should refer to another
8803command key @code{"r"}. In that case, add this command key like this:
8804
8805@example
8806(setq org-agenda-custom-commands-contexts
8807 '(("o" "r" (in-mode . "message-mode"))))
8808@end example
8809
8810See the docstring of the variable for more information.
4009494e 8811
c8d0cf5c
CD
8812@node Exporting Agenda Views, Agenda column view, Custom agenda views, Agenda Views
8813@section Exporting Agenda Views
4009494e
GM
8814@cindex agenda views, exporting
8815
3da3282e 8816If you are away from your computer, it can be very useful to have a printed
e66ba1df 8817version of some agenda views to carry around. Org mode can export custom
3da3282e 8818agenda views as plain text, HTML@footnote{You need to install Hrvoje Niksic's
e66ba1df 8819@file{htmlize.el}.}, Postscript, PDF@footnote{To create PDF output, the
c8d0cf5c 8820ghostscript @file{ps2pdf} utility must be installed on the system. Selecting
e66ba1df 8821a PDF file will also create the postscript file.}, and iCalendar files. If
c8d0cf5c 8822you want to do this only occasionally, use the command
4009494e
GM
8823
8824@table @kbd
8223b1d2 8825@orgcmd{C-x C-w,org-agenda-write}
4009494e
GM
8826@cindex exporting agenda views
8827@cindex agenda views, exporting
c8d0cf5c 8828@vindex org-agenda-exporter-settings
7006d207
CD
8829Write the agenda view to a file. Depending on the extension of the selected
8830file name, the view will be exported as HTML (extension @file{.html} or
e66ba1df 8831@file{.htm}), Postscript (extension @file{.ps}), iCalendar (extension
a351880d
CD
8832@file{.ics}), or plain text (any other extension). Use the variable
8833@code{org-agenda-exporter-settings} to set options for @file{ps-print} and
8834for @file{htmlize} to be used during export, for example
28a16a1b 8835
c8d0cf5c
CD
8836@vindex org-agenda-add-entry-text-maxlines
8837@vindex htmlize-output-type
8838@vindex ps-number-of-columns
8839@vindex ps-landscape-mode
4009494e
GM
8840@lisp
8841(setq org-agenda-exporter-settings
8842 '((ps-number-of-columns 2)
8843 (ps-landscape-mode t)
c8d0cf5c 8844 (org-agenda-add-entry-text-maxlines 5)
4009494e
GM
8845 (htmlize-output-type 'css)))
8846@end lisp
8847@end table
8848
8849If you need to export certain agenda views frequently, you can associate
8850any custom agenda command with a list of output file names
8851@footnote{If you want to store standard views like the weekly agenda
8852or the global TODO list as well, you need to define custom commands for
28a16a1b 8853them in order to be able to specify file names.}. Here is an example
c8d0cf5c
CD
8854that first defines custom commands for the agenda and the global
8855TODO list, together with a number of files to which to export them.
28a16a1b 8856Then we define two block agenda commands and specify file names for them
4009494e
GM
8857as well. File names can be relative to the current working directory,
8858or absolute.
8859
8860@lisp
8861@group
8862(setq org-agenda-custom-commands
8863 '(("X" agenda "" nil ("agenda.html" "agenda.ps"))
8864 ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
8865 ("h" "Agenda and Home-related tasks"
28a16a1b 8866 ((agenda "")
dbc28aaa
CD
8867 (tags-todo "home")
8868 (tags "garden"))
4009494e
GM
8869 nil
8870 ("~/views/home.html"))
8871 ("o" "Agenda and Office-related tasks"
8872 ((agenda)
dbc28aaa
CD
8873 (tags-todo "work")
8874 (tags "office"))
4009494e 8875 nil
28a16a1b 8876 ("~/views/office.ps" "~/calendars/office.ics"))))
4009494e
GM
8877@end group
8878@end lisp
8879
8880The extension of the file name determines the type of export. If it is
e66ba1df 8881@file{.html}, Org mode will use the @file{htmlize.el} package to convert
4009494e
GM
8882the buffer to HTML and save it to this file name. If the extension is
8883@file{.ps}, @code{ps-print-buffer-with-faces} is used to produce
e66ba1df 8884Postscript output. If the extension is @file{.ics}, iCalendar export is
28a16a1b 8885run export over all files that were used to construct the agenda, and
c8d0cf5c 8886limit the export to entries listed in the agenda. Any other
28a16a1b 8887extension produces a plain ASCII file.
4009494e
GM
8888
8889The export files are @emph{not} created when you use one of those
28a16a1b
CD
8890commands interactively because this might use too much overhead.
8891Instead, there is a special command to produce @emph{all} specified
8892files in one step:
4009494e
GM
8893
8894@table @kbd
acedf35c 8895@orgcmd{C-c a e,org-store-agenda-views}
28a16a1b 8896Export all agenda views that have export file names associated with
4009494e
GM
8897them.
8898@end table
8899
8900You can use the options section of the custom agenda commands to also
8901set options for the export commands. For example:
8902
8903@lisp
8904(setq org-agenda-custom-commands
8905 '(("X" agenda ""
8906 ((ps-number-of-columns 2)
8907 (ps-landscape-mode t)
8908 (org-agenda-prefix-format " [ ] ")
8909 (org-agenda-with-colors nil)
8910 (org-agenda-remove-tags t))
8911 ("theagenda.ps"))))
8912@end lisp
8913
8914@noindent
e66ba1df 8915This command sets two options for the Postscript exporter, to make it
c8d0cf5c 8916print in two columns in landscape format---the resulting page can be cut
4009494e
GM
8917in two and then used in a paper agenda. The remaining settings modify
8918the agenda prefix to omit category and scheduling information, and
8919instead include a checkbox to check off items. We also remove the tags
8920to make the lines compact, and we don't want to use colors for the
8921black-and-white printer. Settings specified in
8922@code{org-agenda-exporter-settings} will also apply, but the settings
8923in @code{org-agenda-custom-commands} take precedence.
8924
8925@noindent
8926From the command line you may also use
8927@example
e66ba1df 8928emacs -eval (org-batch-store-agenda-views) -kill
4009494e
GM
8929@end example
8930@noindent
c8d0cf5c
CD
8931or, if you need to modify some parameters@footnote{Quoting depends on the
8932system you use, please check the FAQ for examples.}
4009494e
GM
8933@example
8934emacs -eval '(org-batch-store-agenda-views \
e66ba1df 8935 org-agenda-span (quote month) \
dbc28aaa 8936 org-agenda-start-day "2007-11-01" \
4009494e
GM
8937 org-agenda-include-diary nil \
8938 org-agenda-files (quote ("~/org/project.org")))' \
8939 -kill
8940@end example
8941@noindent
8942which will create the agenda views restricted to the file
c8d0cf5c 8943@file{~/org/project.org}, without diary entries and with a 30-day
28a16a1b 8944extent.
4009494e 8945
c8d0cf5c
CD
8946You can also extract agenda information in a way that allows further
8947processing by other programs. See @ref{Extracting agenda information}, for
8948more information.
4009494e 8949
4009494e 8950
c8d0cf5c 8951@node Agenda column view, , Exporting Agenda Views, Agenda Views
a7808fba
CD
8952@section Using column view in the agenda
8953@cindex column view, in agenda
8954@cindex agenda, column view
8955
8956Column view (@pxref{Column view}) is normally used to view and edit
8957properties embedded in the hierarchical structure of an Org file. It can be
8958quite useful to use column view also from the agenda, where entries are
8959collected by certain criteria.
8960
8961@table @kbd
acedf35c 8962@orgcmd{C-c C-x C-c,org-agenda-columns}
a7808fba
CD
8963Turn on column view in the agenda.
8964@end table
8965
8966To understand how to use this properly, it is important to realize that the
8967entries in the agenda are no longer in their proper outline environment.
8968This causes the following issues:
8969
8970@enumerate
8971@item
c8d0cf5c
CD
8972@vindex org-columns-default-format
8973@vindex org-overriding-columns-format
a7808fba
CD
8974Org needs to make a decision which @code{COLUMNS} format to use. Since the
8975entries in the agenda are collected from different files, and different files
8976may have different @code{COLUMNS} formats, this is a non-trivial problem.
ce57c2fe 8977Org first checks if the variable @code{org-agenda-overriding-columns-format} is
c8d0cf5c 8978currently set, and if so, takes the format from there. Otherwise it takes
a7808fba 8979the format associated with the first item in the agenda, or, if that item
c8d0cf5c 8980does not have a specific format (defined in a property, or in its file), it
a7808fba
CD
8981uses @code{org-columns-default-format}.
8982@item
c8d0cf5c 8983@cindex property, special, CLOCKSUM
a7808fba
CD
8984If any of the columns has a summary type defined (@pxref{Column attributes}),
8985turning on column view in the agenda will visit all relevant agenda files and
8986make sure that the computations of this property are up to date. This is
8987also true for the special @code{CLOCKSUM} property. Org will then sum the
8988values displayed in the agenda. In the daily/weekly agenda, the sums will
acedf35c 8989cover a single day; in all other views they cover the entire block. It is
a7808fba
CD
8990vital to realize that the agenda may show the same entry @emph{twice} (for
8991example as scheduled and as a deadline), and it may show two entries from the
c8d0cf5c 8992same hierarchy (for example a @emph{parent} and its @emph{child}). In these
a7808fba
CD
8993cases, the summation in the agenda will lead to incorrect results because
8994some values will count double.
8995@item
8996When the column view in the agenda shows the @code{CLOCKSUM}, that is always
8997the entire clocked time for this item. So even in the daily/weekly agenda,
8998the clocksum listed in column view may originate from times outside the
8999current view. This has the advantage that you can compare these values with
c8d0cf5c 9000a column listing the planned total effort for a task---one of the major
a7808fba
CD
9001applications for column view in the agenda. If you want information about
9002clocked time in the displayed period use clock table mode (press @kbd{R} in
9003the agenda).
8223b1d2
BG
9004
9005@item
9006@cindex property, special, CLOCKSUM_T
9007When the column view in the agenda shows the @code{CLOCKSUM_T}, that is
9008always today's clocked time for this item. So even in the weekly agenda,
9009the clocksum listed in column view only originates from today. This lets
9010you compare the time you spent on a task for today, with the time already
9011spent (via @code{CLOCKSUM}) and with the planned total effort for it.
a7808fba
CD
9012@end enumerate
9013
9014
a351880d
CD
9015@node Markup, Exporting, Agenda Views, Top
9016@chapter Markup for rich export
4009494e 9017
e66ba1df 9018When exporting Org mode documents, the exporter tries to reflect the
a351880d 9019structure of the document as accurately as possible in the backend. Since
acedf35c 9020export targets like HTML, @LaTeX{}, or DocBook allow much richer formatting,
e66ba1df
BG
9021Org mode has rules on how to prepare text for rich export. This section
9022summarizes the markup rules used in an Org mode buffer.
4009494e 9023
a351880d 9024@menu
c0468714
GM
9025* Structural markup elements:: The basic structure as seen by the exporter
9026* Images and tables:: Tables and Images will be included
9027* Literal examples:: Source code examples with special formatting
9028* Include files:: Include additional files into a document
9029* Index entries:: Making an index
9030* Macro replacement:: Use macros to create complex output
e66ba1df 9031* Embedded @LaTeX{}:: LaTeX can be freely used inside Org documents
a351880d
CD
9032@end menu
9033
9034@node Structural markup elements, Images and tables, Markup, Markup
9035@section Structural markup elements
4009494e
GM
9036
9037@menu
c0468714
GM
9038* Document title:: Where the title is taken from
9039* Headings and sections:: The document structure as seen by the exporter
9040* Table of contents:: The if and where of the table of contents
9041* Initial text:: Text before the first heading?
9042* Lists:: Lists
9043* Paragraphs:: Paragraphs
9044* Footnote markup:: Footnotes
9045* Emphasis and monospace:: Bold, italic, etc.
9046* Horizontal rules:: Make a line
9047* Comment lines:: What will *not* be exported
4009494e
GM
9048@end menu
9049
a351880d
CD
9050@node Document title, Headings and sections, Structural markup elements, Structural markup elements
9051@subheading Document title
9052@cindex document title, markup rules
4009494e 9053
a351880d
CD
9054@noindent
9055The title of the exported document is taken from the special line
4009494e 9056
a351880d 9057@cindex #+TITLE
4009494e 9058@example
a351880d 9059#+TITLE: This is the title of the document
4009494e 9060@end example
a351880d 9061
c8d0cf5c 9062@noindent
a351880d
CD
9063If this line does not exist, the title is derived from the first non-empty,
9064non-comment line in the buffer. If no such line exists, or if you have
9065turned off exporting of the text before the first headline (see below), the
9066title will be the file name without extension.
4009494e 9067
a351880d
CD
9068@cindex property, EXPORT_TITLE
9069If you are exporting only a subtree by marking is as the region, the heading
9070of the subtree will become the title of the document. If the subtree has a
9071property @code{EXPORT_TITLE}, that will take precedence.
4009494e 9072
a351880d
CD
9073@node Headings and sections, Table of contents, Document title, Structural markup elements
9074@subheading Headings and sections
9075@cindex headings and sections, markup rules
9076
9077@vindex org-export-headline-levels
9078The outline structure of the document as described in @ref{Document
9079Structure}, forms the basis for defining sections of the exported document.
9080However, since the outline structure is also used for (for example) lists of
9081tasks, only the first three outline levels will be used as headings. Deeper
9082levels will become itemized lists. You can change the location of this
9083switch globally by setting the variable @code{org-export-headline-levels}, or on a
9084per-file basis with a line
4009494e 9085
a351880d 9086@cindex #+OPTIONS
4009494e 9087@example
a351880d 9088#+OPTIONS: H:4
4009494e
GM
9089@end example
9090
a351880d
CD
9091@node Table of contents, Initial text, Headings and sections, Structural markup elements
9092@subheading Table of contents
9093@cindex table of contents, markup rules
4009494e 9094
a351880d
CD
9095@vindex org-export-with-toc
9096The table of contents is normally inserted directly before the first headline
9097of the file. If you would like to get it to a different location, insert the
9098string @code{[TABLE-OF-CONTENTS]} on a line by itself at the desired
9099location. The depth of the table of contents is by default the same as the
9100number of headline levels, but you can choose a smaller number, or turn off
9101the table of contents entirely, by configuring the variable
9102@code{org-export-with-toc}, or on a per-file basis with a line like
b349f79f
CD
9103
9104@example
9105#+OPTIONS: toc:2 (only to two levels in TOC)
9106#+OPTIONS: toc:nil (no TOC at all)
9107@end example
9108
a351880d 9109@node Initial text, Lists, Table of contents, Structural markup elements
b349f79f
CD
9110@subheading Text before the first headline
9111@cindex text before first headline, markup rules
9112@cindex #+TEXT
9113
e66ba1df 9114Org mode normally exports the text before the first headline, and even uses
b349f79f 9115the first line as the document title. The text will be fully marked up. If
acedf35c 9116you need to include literal HTML, @LaTeX{}, or DocBook code, use the special
c8d0cf5c 9117constructs described below in the sections for the individual exporters.
b349f79f 9118
c8d0cf5c 9119@vindex org-export-skip-text-before-1st-heading
b349f79f
CD
9120Some people like to use the space before the first headline for setup and
9121internal links and therefore would like to control the exported text before
9122the first headline in a different way. You can do so by setting the variable
9123@code{org-export-skip-text-before-1st-heading} to @code{t}. On a per-file
9124basis, you can get the same effect with @samp{#+OPTIONS: skip:t}.
9125
9126@noindent
9127If you still want to have some text before the first headline, use the
9128@code{#+TEXT} construct:
9129
9130@example
9131#+OPTIONS: skip:t
9132#+TEXT: This text will go before the *first* headline.
9133#+TEXT: [TABLE-OF-CONTENTS]
ce57c2fe 9134#+TEXT: This goes between the table of contents and the *first* headline
b349f79f
CD
9135@end example
9136
a351880d 9137@node Lists, Paragraphs, Initial text, Structural markup elements
b349f79f
CD
9138@subheading Lists
9139@cindex lists, markup rules
9140
c8d0cf5c
CD
9141Plain lists as described in @ref{Plain lists}, are translated to the backend's
9142syntax for such lists. Most backends support unordered, ordered, and
b349f79f
CD
9143description lists.
9144
a351880d 9145@node Paragraphs, Footnote markup, Lists, Structural markup elements
b349f79f
CD
9146@subheading Paragraphs, line breaks, and quoting
9147@cindex paragraphs, markup rules
9148
9149Paragraphs are separated by at least one empty line. If you need to enforce
9150a line break within a paragraph, use @samp{\\} at the end of a line.
9151
9152To keep the line breaks in a region, but otherwise use normal formatting, you
9153can use this construct, which can also be used to format poetry.
9154
c8d0cf5c 9155@cindex #+BEGIN_VERSE
b349f79f
CD
9156@example
9157#+BEGIN_VERSE
864c9740
CD
9158 Great clouds overhead
9159 Tiny black birds rise and fall
9160 Snow covers Emacs
96c8522a 9161
864c9740 9162 -- AlexSchroeder
b349f79f
CD
9163#+END_VERSE
9164@end example
9165
9166When quoting a passage from another document, it is customary to format this
9167as a paragraph that is indented on both the left and the right margin. You
e66ba1df 9168can include quotations in Org mode documents like this:
b349f79f 9169
c8d0cf5c 9170@cindex #+BEGIN_QUOTE
b349f79f
CD
9171@example
9172#+BEGIN_QUOTE
9173Everything should be made as simple as possible,
9174but not any simpler -- Albert Einstein
9175#+END_QUOTE
9176@end example
9177
c8d0cf5c
CD
9178If you would like to center some text, do it like this:
9179@cindex #+BEGIN_CENTER
9180@example
9181#+BEGIN_CENTER
9182Everything should be made as simple as possible, \\
9183but not any simpler
9184#+END_CENTER
9185@end example
b349f79f 9186
a351880d
CD
9187
9188@node Footnote markup, Emphasis and monospace, Paragraphs, Structural markup elements
9189@subheading Footnote markup
9190@cindex footnotes, markup rules
9191@cindex @file{footnote.el}
9192
ce57c2fe
BG
9193Footnotes defined in the way described in @ref{Footnotes}, will be exported
9194by all backends. Org allows multiple references to the same note, and
9195multiple footnotes side by side.
a351880d
CD
9196
9197@node Emphasis and monospace, Horizontal rules, Footnote markup, Structural markup elements
9198@subheading Emphasis and monospace
9199
9200@cindex underlined text, markup rules
9201@cindex bold text, markup rules
9202@cindex italic text, markup rules
9203@cindex verbatim text, markup rules
9204@cindex code text, markup rules
9205@cindex strike-through text, markup rules
9206You can make words @b{*bold*}, @i{/italic/}, _underlined_, @code{=code=}
9207and @code{~verbatim~}, and, if you must, @samp{+strike-through+}. Text
e66ba1df 9208in the code and verbatim string is not processed for Org mode specific
acedf35c 9209syntax; it is exported verbatim.
a351880d
CD
9210
9211@node Horizontal rules, Comment lines, Emphasis and monospace, Structural markup elements
9212@subheading Horizontal rules
9213@cindex horizontal rules, markup rules
ce57c2fe
BG
9214A line consisting of only dashes, and at least 5 of them, will be exported as
9215a horizontal line (@samp{<hr/>} in HTML and @code{\hrule} in @LaTeX{}).
a351880d
CD
9216
9217@node Comment lines, , Horizontal rules, Structural markup elements
9218@subheading Comment lines
9219@cindex comment lines
9220@cindex exporting, not
9221@cindex #+BEGIN_COMMENT
9222
63aa0982
BG
9223Lines starting with zero or more whitespace characters followed by one
9224@samp{#} and a whitespace are treated as comments and will never be exported.
9225Also entire subtrees starting with the word @samp{COMMENT} will never be
9226exported. Finally, regions surrounded by @samp{#+BEGIN_COMMENT}
9227... @samp{#+END_COMMENT} will not be exported.
a351880d
CD
9228
9229@table @kbd
9230@kindex C-c ;
9231@item C-c ;
9232Toggle the COMMENT keyword at the beginning of an entry.
9233@end table
9234
9235
9236@node Images and tables, Literal examples, Structural markup elements, Markup
9237@section Images and Tables
9238
9239@cindex tables, markup rules
9240@cindex #+CAPTION
9241@cindex #+LABEL
e66ba1df
BG
9242Both the native Org mode tables (@pxref{Tables}) and tables formatted with
9243the @file{table.el} package will be exported properly. For Org mode tables,
a351880d
CD
9244the lines before the first horizontal separator line will become table header
9245lines. You can use the following lines somewhere before the table to assign
ed21c5c8
CD
9246a caption and a label for cross references, and in the text you can refer to
9247the object with @code{\ref@{tab:basic-data@}}:
a351880d
CD
9248
9249@example
9250#+CAPTION: This is the caption for the next table (or link)
8223b1d2 9251#+LABEL: tab:basic-data
a351880d
CD
9252 | ... | ...|
9253 |-----|----|
9254@end example
9255
ce57c2fe
BG
9256Optionally, the caption can take the form:
9257@example
9258#+CAPTION: [Caption for list of figures]@{Caption for table (or link).@}
9259@end example
9260
a351880d 9261@cindex inlined images, markup rules
acedf35c 9262Some backends (HTML, @LaTeX{}, and DocBook) allow you to directly include
a351880d
CD
9263images into the exported document. Org does this, if a link to an image
9264files does not have a description part, for example @code{[[./img/a.jpg]]}.
9265If you wish to define a caption for the image and maybe a label for internal
86fbb8ca
CD
9266cross references, make sure that the link is on a line by itself and precede
9267it with @code{#+CAPTION} and @code{#+LABEL} as follows:
a351880d
CD
9268
9269@example
9270#+CAPTION: This is the caption for the next figure link (or table)
9271#+LABEL: fig:SED-HR4049
9272[[./img/a.jpg]]
9273@end example
9274
9275You may also define additional attributes for the figure. As this is
9276backend-specific, see the sections about the individual backends for more
9277information.
9278
afe98dfa 9279@xref{Handling links,the discussion of image links}.
a351880d
CD
9280
9281@node Literal examples, Include files, Images and tables, Markup
9282@section Literal examples
b349f79f 9283@cindex literal examples, markup rules
c8d0cf5c 9284@cindex code line references, markup rules
b349f79f
CD
9285
9286You can include literal examples that should not be subjected to
9287markup. Such examples will be typeset in monospace, so this is well suited
9288for source code and similar examples.
9289@cindex #+BEGIN_EXAMPLE
9290
9291@example
9292#+BEGIN_EXAMPLE
9293Some example from a text file.
9294#+END_EXAMPLE
9295@end example
9296
c8d0cf5c
CD
9297Note that such blocks may be @i{indented} in order to align nicely with
9298indented text and in particular with plain list structure (@pxref{Plain
9299lists}). For simplicity when using small examples, you can also start the
9300example lines with a colon followed by a space. There may also be additional
55e0839d 9301whitespace before the colon:
b349f79f
CD
9302
9303@example
55e0839d
CD
9304Here is an example
9305 : Some example from a text file.
b349f79f
CD
9306@end example
9307
9308@cindex formatting source code, markup rules
9309If the example is source code from a programming language, or any other text
9310that can be marked up by font-lock in Emacs, you can ask for the example to
afe98dfa
CD
9311look like the fontified Emacs buffer@footnote{This works automatically for
9312the HTML backend (it requires version 1.34 of the @file{htmlize.el} package,
e66ba1df 9313which is distributed with Org). Fontified code chunks in @LaTeX{} can be
afe98dfa 9314achieved using either the listings or the
8223b1d2
BG
9315@url{http://code.google.com/p/minted, minted,} package. Refer to
9316@code{org-export-latex-listings} documentation for details.}. This is done
9317with the @samp{src} block, where you also need to specify the name of the
9318major mode that should be used to fontify the example@footnote{Code in
9319@samp{src} blocks may also be evaluated either interactively or on export.
9320See @pxref{Working With Source Code} for more information on evaluating code
9321blocks.}, see @ref{Easy Templates} for shortcuts to easily insert code
9322blocks.
b349f79f
CD
9323@cindex #+BEGIN_SRC
9324
9325@example
9326#+BEGIN_SRC emacs-lisp
86fbb8ca
CD
9327 (defun org-xor (a b)
9328 "Exclusive or."
9329 (if a (not b) b))
b349f79f
CD
9330#+END_SRC
9331@end example
9332
55e0839d
CD
9333Both in @code{example} and in @code{src} snippets, you can add a @code{-n}
9334switch to the end of the @code{BEGIN} line, to get the lines of the example
9335numbered. If you use a @code{+n} switch, the numbering from the previous
9336numbered snippet will be continued in the current one. In literal examples,
9337Org will interpret strings like @samp{(ref:name)} as labels, and use them as
1df7defd 9338targets for special hyperlinks like @code{[[(name)]]} (i.e., the reference name
c8d0cf5c
CD
9339enclosed in single parenthesis). In HTML, hovering the mouse over such a
9340link will remote-highlight the corresponding code line, which is kind of
9341cool.
9342
9343You can also add a @code{-r} switch which @i{removes} the labels from the
9344source code@footnote{Adding @code{-k} to @code{-n -r} will @i{keep} the
9345labels in the source code while using line numbers for the links, which might
e66ba1df 9346be useful to explain those in an Org mode example code.}. With the @code{-n}
c8d0cf5c
CD
9347switch, links to these references will be labeled by the line numbers from
9348the code listing, otherwise links will use the labels with no parentheses.
9349Here is an example:
55e0839d
CD
9350
9351@example
9352#+BEGIN_SRC emacs-lisp -n -r
9353(save-excursion (ref:sc)
9354 (goto-char (point-min)) (ref:jump)
c8d0cf5c
CD
9355#+END_SRC
9356In line [[(sc)]] we remember the current position. [[(jump)][Line (jump)]]
55e0839d
CD
9357jumps to point-min.
9358@end example
9359
c8d0cf5c 9360@vindex org-coderef-label-format
55e0839d
CD
9361If the syntax for the label format conflicts with the language syntax, use a
9362@code{-l} switch to change the format, for example @samp{#+BEGIN_SRC pascal
9363-n -r -l "((%s))"}. See also the variable @code{org-coderef-label-format}.
9364
ce57c2fe
BG
9365HTML export also allows examples to be published as text areas (@pxref{Text
9366areas in HTML export}).
9367
9368Because the @code{#+BEGIN_...} and @code{#+END_...} patterns need to be added
9369so often, shortcuts are provided using the Easy Templates facility
9370(@pxref{Easy Templates}).
55e0839d 9371
b349f79f
CD
9372@table @kbd
9373@kindex C-c '
9374@item C-c '
9375Edit the source code example at point in its native mode. This works by
c8d0cf5c 9376switching to a temporary buffer with the source code. You need to exit by
bdebdb64
BG
9377pressing @kbd{C-c '} again@footnote{Upon exit, lines starting with @samp{*},
9378@samp{,*}, @samp{#+} and @samp{,#+} will get a comma prepended, to keep them
9379from being interpreted by Org as outline nodes or special syntax. These
9380commas will be stripped for editing with @kbd{C-c '}, and also for export.}.
9381The edited version will then replace the old version in the Org buffer.
9382Fixed-width regions (where each line starts with a colon followed by a space)
9383will be edited using @code{artist-mode}@footnote{You may select
9384a different-mode with the variable @code{org-edit-fixed-width-region-mode}.}
9385to allow creating ASCII drawings easily. Using this command in an empty line
9386will create a new fixed-width region.
55e0839d
CD
9387@kindex C-c l
9388@item C-c l
9389Calling @code{org-store-link} while editing a source code example in a
acedf35c 9390temporary buffer created with @kbd{C-c '} will prompt for a label. Make sure
55e0839d
CD
9391that it is unique in the current buffer, and insert it with the proper
9392formatting like @samp{(ref:label)} at the end of the current line. Then the
9393label is stored as a link @samp{(label)}, for retrieval with @kbd{C-c C-l}.
b349f79f
CD
9394@end table
9395
9396
ed21c5c8 9397@node Include files, Index entries, Literal examples, Markup
a351880d 9398@section Include files
b349f79f
CD
9399@cindex include files, markup rules
9400
9401During export, you can include the content of another file. For example, to
c8d0cf5c 9402include your @file{.emacs} file, you could use:
b349f79f
CD
9403@cindex #+INCLUDE
9404
9405@example
9406#+INCLUDE: "~/.emacs" src emacs-lisp
9407@end example
c8d0cf5c 9408@noindent
1df7defd 9409The optional second and third parameter are the markup (e.g., @samp{quote},
b349f79f 9410@samp{example}, or @samp{src}), and, if the markup is @samp{src}, the
acedf35c 9411language for formatting the contents. The markup is optional; if it is not
e66ba1df 9412given, the text will be assumed to be in Org mode format and will be
44ce9197
CD
9413processed normally. The include line will also allow additional keyword
9414parameters @code{:prefix1} and @code{:prefix} to specify prefixes for the
acedf35c 9415first line and for each following line, @code{:minlevel} in order to get
e66ba1df 9416Org mode content demoted to a specified level, as well as any options
acedf35c
CD
9417accepted by the selected markup. For example, to include a file as an item,
9418use
44ce9197
CD
9419
9420@example
9421#+INCLUDE: "~/snippets/xx" :prefix1 " + " :prefix " "
9422@end example
b349f79f 9423
ce57c2fe
BG
9424You can also include a portion of a file by specifying a lines range using
9425the @code{:lines} parameter. The line at the upper end of the range will not
9426be included. The start and/or the end of the range may be omitted to use the
9427obvious defaults.
9428
9429@example
9430#+INCLUDE: "~/.emacs" :lines "5-10" @r{Include lines 5 to 10, 10 excluded}
9431#+INCLUDE: "~/.emacs" :lines "-10" @r{Include lines 1 to 10, 10 excluded}
9432#+INCLUDE: "~/.emacs" :lines "10-" @r{Include lines from 10 to EOF}
9433@end example
9434
b349f79f
CD
9435@table @kbd
9436@kindex C-c '
9437@item C-c '
9438Visit the include file at point.
9439@end table
9440
ed21c5c8 9441@node Index entries, Macro replacement, Include files, Markup
86fbb8ca 9442@section Index entries
ed21c5c8
CD
9443@cindex index entries, for publishing
9444
9445You can specify entries that will be used for generating an index during
9446publishing. This is done by lines starting with @code{#+INDEX}. An entry
9447the contains an exclamation mark will create a sub item. See @ref{Generating
9448an index} for more information.
9449
9450@example
86fbb8ca 9451* Curriculum Vitae
ed21c5c8
CD
9452#+INDEX: CV
9453#+INDEX: Application!CV
9454@end example
9455
9456
b349f79f 9457
ed21c5c8 9458
e66ba1df 9459@node Macro replacement, Embedded @LaTeX{}, Index entries, Markup
a351880d
CD
9460@section Macro replacement
9461@cindex macro replacement, during export
9462@cindex #+MACRO
9463
9464You can define text snippets with
9465
9466@example
9467#+MACRO: name replacement text $1, $2 are arguments
9468@end example
9469
9470@noindent which can be referenced anywhere in the document (even in
9471code examples) with @code{@{@{@{name(arg1,arg2)@}@}@}}. In addition to
9472defined macros, @code{@{@{@{title@}@}@}}, @code{@{@{@{author@}@}@}}, etc.,
9473will reference information set by the @code{#+TITLE:}, @code{#+AUTHOR:}, and
9474similar lines. Also, @code{@{@{@{date(@var{FORMAT})@}@}@}} and
9475@code{@{@{@{modification-time(@var{FORMAT})@}@}@}} refer to current date time
9476and to the modification time of the file being exported, respectively.
9477@var{FORMAT} should be a format string understood by
9478@code{format-time-string}.
9479
9480Macro expansion takes place during export, and some people use it to
9481construct complex HTML code.
9482
9483
e66ba1df 9484@node Embedded @LaTeX{}, , Macro replacement, Markup
acedf35c 9485@section Embedded @LaTeX{}
a351880d 9486@cindex @TeX{} interpretation
acedf35c
CD
9487@cindex @LaTeX{} interpretation
9488
9489Plain ASCII is normally sufficient for almost all note taking. Exceptions
9490include scientific notes, which often require mathematical symbols and the
9491occasional formula. @LaTeX{}@footnote{@LaTeX{} is a macro system based on
9492Donald E. Knuth's @TeX{} system. Many of the features described here as
9493``@LaTeX{}'' are really from @TeX{}, but for simplicity I am blurring this
e66ba1df 9494distinction.} is widely used to typeset scientific documents. Org mode
acedf35c
CD
9495supports embedding @LaTeX{} code into its files, because many academics are
9496used to writing and reading @LaTeX{} source code, and because it can be
9497readily processed to produce pretty output for a number of export backends.
a351880d
CD
9498
9499@menu
c0468714
GM
9500* Special symbols:: Greek letters and other symbols
9501* Subscripts and superscripts:: Simple syntax for raising/lowering text
8223b1d2 9502* @LaTeX{} fragments:: Complex formulas made easy
e66ba1df 9503* Previewing @LaTeX{} fragments:: What will this snippet look like?
c0468714 9504* CDLaTeX mode:: Speed up entering of formulas
a351880d
CD
9505@end menu
9506
e66ba1df 9507@node Special symbols, Subscripts and superscripts, Embedded @LaTeX{}, Embedded @LaTeX{}
a351880d
CD
9508@subsection Special symbols
9509@cindex math symbols
9510@cindex special symbols
9511@cindex @TeX{} macros
acedf35c 9512@cindex @LaTeX{} fragments, markup rules
a351880d 9513@cindex HTML entities
acedf35c 9514@cindex @LaTeX{} entities
a351880d 9515
acedf35c 9516You can use @LaTeX{} macros to insert special symbols like @samp{\alpha} to
a351880d
CD
9517indicate the Greek letter, or @samp{\to} to indicate an arrow. Completion
9518for these macros is available, just type @samp{\} and maybe a few letters,
acedf35c 9519and press @kbd{M-@key{TAB}} to see possible completions. Unlike @LaTeX{}
e66ba1df 9520code, Org mode allows these macros to be present without surrounding math
a351880d
CD
9521delimiters, for example:
9522
9523@example
9524Angles are written as Greek letters \alpha, \beta and \gamma.
9525@end example
9526
86fbb8ca 9527@vindex org-entities
a351880d
CD
9528During export, these symbols will be transformed into the native format of
9529the exporter backend. Strings like @code{\alpha} will be exported as
acedf35c 9530@code{&alpha;} in the HTML output, and as @code{$\alpha$} in the @LaTeX{}
a351880d 9531output. Similarly, @code{\nbsp} will become @code{&nbsp;} in HTML and
acedf35c 9532@code{~} in @LaTeX{}. If you need such a symbol inside a word, terminate it
a351880d
CD
9533like this: @samp{\Aacute@{@}stor}.
9534
9535A large number of entities is provided, with names taken from both HTML and
acedf35c 9536@LaTeX{}; see the variable @code{org-entities} for the complete list.
a351880d
CD
9537@samp{\-} is treated as a shy hyphen, and @samp{--}, @samp{---}, and
9538@samp{...} are all converted into special commands creating hyphens of
9539different lengths or a compact set of dots.
9540
afe98dfa 9541If you would like to see entities displayed as UTF8 characters, use the
86fbb8ca
CD
9542following command@footnote{You can turn this on by default by setting the
9543variable @code{org-pretty-entities}, or on a per-file base with the
9544@code{#+STARTUP} option @code{entitiespretty}.}:
9545
9546@table @kbd
9547@kindex C-c C-x \
9548@item C-c C-x \
acedf35c
CD
9549Toggle display of entities as UTF-8 characters. This does not change the
9550buffer content which remains plain ASCII, but it overlays the UTF-8 character
86fbb8ca
CD
9551for display purposes only.
9552@end table
9553
e66ba1df 9554@node Subscripts and superscripts, @LaTeX{} fragments, Special symbols, Embedded @LaTeX{}
a351880d
CD
9555@subsection Subscripts and superscripts
9556@cindex subscript
9557@cindex superscript
9558
acedf35c 9559Just like in @LaTeX{}, @samp{^} and @samp{_} are used to indicate super-
a351880d
CD
9560and subscripts. Again, these can be used without embedding them in
9561math-mode delimiters. To increase the readability of ASCII text, it is
9562not necessary (but OK) to surround multi-character sub- and superscripts
9563with curly braces. For example
67df9cfb
CD
9564
9565@example
acedf35c 9566The mass of the sun is M_sun = 1.989 x 10^30 kg. The radius of
a351880d 9567the sun is R_@{sun@} = 6.96 x 10^8 m.
67df9cfb
CD
9568@end example
9569
a351880d
CD
9570@vindex org-export-with-sub-superscripts
9571To avoid interpretation as raised or lowered text, you can quote @samp{^} and
9572@samp{_} with a backslash: @samp{\^} and @samp{\_}. If you write a text
9573where the underscore is often used in a different context, Org's convention
9574to always interpret these as subscripts can get in your way. Configure the
9575variable @code{org-export-with-sub-superscripts} to globally change this
9576convention, or use, on a per-file basis:
67df9cfb
CD
9577
9578@example
a351880d 9579#+OPTIONS: ^:@{@}
67df9cfb 9580@end example
b349f79f 9581
afe98dfa
CD
9582@noindent With this setting, @samp{a_b} will not be interpreted as a
9583subscript, but @samp{a_@{b@}} will.
9584
86fbb8ca
CD
9585@table @kbd
9586@kindex C-c C-x \
9587@item C-c C-x \
acedf35c 9588In addition to showing entities as UTF-8 characters, this command will also
86fbb8ca
CD
9589format sub- and superscripts in a WYSIWYM way.
9590@end table
67df9cfb 9591
e66ba1df 9592@node @LaTeX{} fragments, Previewing @LaTeX{} fragments, Subscripts and superscripts, Embedded @LaTeX{}
acedf35c
CD
9593@subsection @LaTeX{} fragments
9594@cindex @LaTeX{} fragments
b349f79f 9595
a351880d 9596@vindex org-format-latex-header
afe98dfa 9597Going beyond symbols and sub- and superscripts, a full formula language is
e66ba1df 9598needed. Org mode can contain @LaTeX{} math fragments, and it supports ways
acedf35c 9599to process these for several export backends. When exporting to @LaTeX{},
afe98dfa
CD
9600the code is obviously left as it is. When exporting to HTML, Org invokes the
9601@uref{http://www.mathjax.org, MathJax library} (@pxref{Math formatting in
9602HTML export}) to process and display the math@footnote{If you plan to use
9603this regularly or on pages with significant page views, you should install
acedf35c
CD
9604@file{MathJax} on your own
9605server in order to limit the load of our server.}. Finally, it can also
9606process the mathematical expressions into images@footnote{For this to work
ce57c2fe 9607you need to be on a system with a working @LaTeX{} installation. You also
8223b1d2
BG
9608need the @file{dvipng} program or the @file{convert}, respectively available
9609at @url{http://sourceforge.net/projects/dvipng/} and from the
9610@file{imagemagick} suite. The @LaTeX{} header that will be used when
9611processing a fragment can be configured with the variable
9612@code{org-format-latex-header}.} that can be displayed in a browser or in
afe98dfa 9613DocBook documents.
b349f79f 9614
acedf35c
CD
9615@LaTeX{} fragments don't need any special marking at all. The following
9616snippets will be identified as @LaTeX{} source code:
a351880d
CD
9617@itemize @bullet
9618@item
afe98dfa 9619Environments of any kind@footnote{When @file{MathJax} is used, only the
acedf35c
CD
9620environment recognized by @file{MathJax} will be processed. When
9621@file{dvipng} is used to create images, any @LaTeX{} environments will be
9622handled.}. The only requirement is that the @code{\begin} statement appears
9623on a new line, preceded by only whitespace.
a351880d 9624@item
acedf35c 9625Text within the usual @LaTeX{} math delimiters. To avoid conflicts with
a351880d
CD
9626currency specifications, single @samp{$} characters are only recognized as
9627math delimiters if the enclosed text contains at most two line breaks, is
9628directly attached to the @samp{$} characters with no whitespace in between,
9629and if the closing @samp{$} is followed by whitespace, punctuation or a dash.
9630For the other delimiters, there is no such restriction, so when in doubt, use
9631@samp{\(...\)} as inline math delimiters.
9632@end itemize
b349f79f 9633
a351880d 9634@noindent For example:
b349f79f 9635
a351880d
CD
9636@example
9637\begin@{equation@} % arbitrary environments,
9638x=\sqrt@{b@} % even tables, figures
9639\end@{equation@} % etc
b349f79f 9640
a351880d
CD
9641If $a^2=b$ and \( b=2 \), then the solution must be
9642either $$ a=+\sqrt@{2@} $$ or \[ a=-\sqrt@{2@} \].
9643@end example
b349f79f 9644
a351880d
CD
9645@noindent
9646@vindex org-format-latex-options
9647If you need any of the delimiter ASCII sequences for other purposes, you
9648can configure the option @code{org-format-latex-options} to deselect the
acedf35c 9649ones you do not wish to have interpreted by the @LaTeX{} converter.
b349f79f 9650
afe98dfa 9651@vindex org-export-with-LaTeX-fragments
e66ba1df 9652@LaTeX{} processing can be configured with the variable
afe98dfa
CD
9653@code{org-export-with-LaTeX-fragments}. The default setting is @code{t}
9654which means @file{MathJax} for HTML, and no processing for DocBook, ASCII and
e66ba1df 9655@LaTeX{} backends. You can also set this variable on a per-file basis using one
afe98dfa
CD
9656of these lines:
9657
9658@example
9659#+OPTIONS: LaTeX:t @r{Do the right thing automatically (MathJax)}
9660#+OPTIONS: LaTeX:dvipng @r{Force using dvipng images}
acedf35c 9661#+OPTIONS: LaTeX:nil @r{Do not process @LaTeX{} fragments at all}
afe98dfa
CD
9662#+OPTIONS: LaTeX:verbatim @r{Verbatim export, for jsMath or so}
9663@end example
9664
e66ba1df
BG
9665@node Previewing @LaTeX{} fragments, CDLaTeX mode, @LaTeX{} fragments, Embedded @LaTeX{}
9666@subsection Previewing @LaTeX{} fragments
9667@cindex @LaTeX{} fragments, preview
b349f79f 9668
acedf35c 9669If you have @file{dvipng} installed, @LaTeX{} fragments can be processed to
afe98dfa 9670produce preview images of the typeset expressions:
b349f79f
CD
9671
9672@table @kbd
a351880d
CD
9673@kindex C-c C-x C-l
9674@item C-c C-x C-l
acedf35c 9675Produce a preview image of the @LaTeX{} fragment at point and overlay it
a351880d
CD
9676over the source code. If there is no fragment at point, process all
9677fragments in the current entry (between two headlines). When called
9678with a prefix argument, process the entire subtree. When called with
9679two prefix arguments, or when the cursor is before the first headline,
9680process the entire buffer.
9681@kindex C-c C-c
9682@item C-c C-c
9683Remove the overlay preview images.
b349f79f
CD
9684@end table
9685
a351880d
CD
9686@vindex org-format-latex-options
9687You can customize the variable @code{org-format-latex-options} to influence
ce57c2fe 9688some aspects of the preview. In particular, the @code{:scale} (and for HTML
a351880d
CD
9689export, @code{:html-scale}) property can be used to adjust the size of the
9690preview images.
c8d0cf5c 9691
e66ba1df
BG
9692@node CDLaTeX mode, , Previewing @LaTeX{} fragments, Embedded @LaTeX{}
9693@subsection Using CD@LaTeX{} to enter math
9694@cindex CD@LaTeX{}
a351880d 9695
e66ba1df 9696CD@LaTeX{} mode is a minor mode that is normally used in combination with a
acedf35c 9697major @LaTeX{} mode like AUC@TeX{} in order to speed-up insertion of
e66ba1df
BG
9698environments and math templates. Inside Org mode, you can make use of
9699some of the features of CD@LaTeX{} mode. You need to install
a351880d
CD
9700@file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
9701AUC@TeX{}) from @url{http://www.astro.uva.nl/~dominik/Tools/cdlatex}.
e66ba1df
BG
9702Don't use CD@LaTeX{} mode itself under Org mode, but use the light
9703version @code{org-cdlatex-mode} that comes as part of Org mode. Turn it
a351880d
CD
9704on for the current buffer with @code{M-x org-cdlatex-mode}, or for all
9705Org files with
9706
9707@lisp
9708(add-hook 'org-mode-hook 'turn-on-org-cdlatex)
9709@end lisp
9710
9711When this mode is enabled, the following features are present (for more
e66ba1df 9712details see the documentation of CD@LaTeX{} mode):
a351880d
CD
9713@itemize @bullet
9714@kindex C-c @{
9715@item
9716Environment templates can be inserted with @kbd{C-c @{}.
9717@item
9718@kindex @key{TAB}
9719The @key{TAB} key will do template expansion if the cursor is inside a
e66ba1df 9720@LaTeX{} fragment@footnote{Org mode has a method to test if the cursor is
a351880d
CD
9721inside such a fragment, see the documentation of the function
9722@code{org-inside-LaTeX-fragment-p}.}. For example, @key{TAB} will
9723expand @code{fr} to @code{\frac@{@}@{@}} and position the cursor
9724correctly inside the first brace. Another @key{TAB} will get you into
9725the second brace. Even outside fragments, @key{TAB} will expand
9726environment abbreviations at the beginning of a line. For example, if
9727you write @samp{equ} at the beginning of a line and press @key{TAB},
9728this abbreviation will be expanded to an @code{equation} environment.
9729To get a list of all abbreviations, type @kbd{M-x cdlatex-command-help}.
9730@item
9731@kindex _
9732@kindex ^
9733@vindex cdlatex-simplify-sub-super-scripts
acedf35c 9734Pressing @kbd{_} and @kbd{^} inside a @LaTeX{} fragment will insert these
a351880d
CD
9735characters together with a pair of braces. If you use @key{TAB} to move
9736out of the braces, and if the braces surround only a single character or
9737macro, they are removed again (depending on the variable
9738@code{cdlatex-simplify-sub-super-scripts}).
9739@item
9740@kindex `
9741Pressing the backquote @kbd{`} followed by a character inserts math
acedf35c 9742macros, also outside @LaTeX{} fragments. If you wait more than 1.5 seconds
a351880d
CD
9743after the backquote, a help window will pop up.
9744@item
9745@kindex '
9746Pressing the single-quote @kbd{'} followed by another character modifies
9747the symbol before point with an accent or a font. If you wait more than
acedf35c
CD
97481.5 seconds after the single-quote, a help window will pop up. Character
9749modification will work only inside @LaTeX{} fragments; outside the quote
a351880d
CD
9750is normal.
9751@end itemize
9752
9753@node Exporting, Publishing, Markup, Top
9754@chapter Exporting
9755@cindex exporting
9756
e66ba1df 9757Org mode documents can be exported into a variety of other formats. For
a351880d
CD
9758printing and sharing of notes, ASCII export produces a readable and simple
9759version of an Org file. HTML export allows you to publish a notes file on
9760the web, while the XOXO format provides a solid base for exchange with a
e66ba1df 9761broad range of other applications. @LaTeX{} export lets you use Org mode and
acedf35c 9762its structured editing functions to easily create @LaTeX{} files. DocBook
a351880d 9763export makes it possible to convert Org files to many other formats using
801a68c8 9764DocBook tools. OpenDocument Text (ODT) export allows seamless
27e428e7 9765collaboration across organizational boundaries. For project management you
e66ba1df
BG
9766can create gantt and resource charts by using TaskJuggler export. To
9767incorporate entries with associated times like deadlines or appointments into
9768a desktop calendar program like iCal, Org mode can also produce extracts in
801a68c8 9769the iCalendar format. Currently, Org mode only supports export, not import of
e66ba1df 9770these different formats.
a351880d
CD
9771
9772Org supports export of selected regions when @code{transient-mark-mode} is
9773enabled (default in Emacs 23).
9774
9775@menu
c0468714
GM
9776* Selective export:: Using tags to select and exclude trees
9777* Export options:: Per-file export settings
9778* The export dispatcher:: How to access exporter commands
9779* ASCII/Latin-1/UTF-8 export:: Exporting to flat files with encoding
9780* HTML export:: Exporting to HTML
e66ba1df 9781* @LaTeX{} and PDF export:: Exporting to @LaTeX{}, and processing to PDF
c0468714 9782* DocBook export:: Exporting to DocBook
e66ba1df 9783* OpenDocument Text export:: Exporting to OpenDocument Text
c0468714
GM
9784* TaskJuggler export:: Exporting to TaskJuggler
9785* Freemind export:: Exporting to Freemind mind maps
9786* XOXO export:: Exporting to XOXO
9787* iCalendar export:: Exporting in iCalendar format
a351880d 9788@end menu
c8d0cf5c 9789
a351880d 9790@node Selective export, Export options, Exporting, Exporting
864c9740 9791@section Selective export
ce57c2fe 9792@cindex export, selective by tags or TODO keyword
864c9740 9793
c8d0cf5c
CD
9794@vindex org-export-select-tags
9795@vindex org-export-exclude-tags
ce57c2fe 9796@cindex org-export-with-tasks
864c9740
CD
9797You may use tags to select the parts of a document that should be exported,
9798or to exclude parts from export. This behavior is governed by two variables:
e66ba1df
BG
9799@code{org-export-select-tags} and @code{org-export-exclude-tags},
9800respectively defaulting to @code{'(:export:)} and @code{'(:noexport:)}.
864c9740 9801
ce57c2fe
BG
9802@enumerate
9803@item
9804Org first checks if any of the @emph{select} tags is present in the
9805buffer. If yes, all trees that do not carry one of these tags will be
9806excluded. If a selected tree is a subtree, the heading hierarchy above it
9807will also be selected for export, but not the text below those headings.
864c9740 9808
ce57c2fe 9809@item
864c9740
CD
9810If none of the select tags is found, the whole buffer will be selected for
9811export.
9812
ce57c2fe 9813@item
864c9740
CD
9814Finally, all subtrees that are marked by any of the @emph{exclude} tags will
9815be removed from the export buffer.
ce57c2fe
BG
9816@end enumerate
9817
9818The variable @code{org-export-with-tasks} can be configured to select which
9819kind of tasks should be included for export. See the docstring of the
9820variable for more information.
864c9740
CD
9821
9822@node Export options, The export dispatcher, Selective export, Exporting
b349f79f
CD
9823@section Export options
9824@cindex options, for export
9825
9826@cindex completion, of option keywords
9827The exporter recognizes special lines in the buffer which provide
9828additional information. These lines may be put anywhere in the file.
9829The whole set of lines can be inserted into the buffer with @kbd{C-c
9830C-e t}. For individual lines, a good way to make sure the keyword is
9831correct is to type @samp{#+} and then use @kbd{M-@key{TAB}} completion
c8d0cf5c
CD
9832(@pxref{Completion}). For a summary of other in-buffer settings not
9833specifically related to export, see @ref{In-buffer settings}.
9834In particular, note that you can place commonly-used (export) options in
9835a separate file which can be included using @code{#+SETUPFILE}.
b349f79f
CD
9836
9837@table @kbd
acedf35c 9838@orgcmd{C-c C-e t,org-insert-export-options-template}
b349f79f
CD
9839Insert template with export options, see example below.
9840@end table
9841
c8d0cf5c
CD
9842@cindex #+TITLE
9843@cindex #+AUTHOR
9844@cindex #+DATE
9845@cindex #+EMAIL
9846@cindex #+DESCRIPTION
9847@cindex #+KEYWORDS
9848@cindex #+LANGUAGE
9849@cindex #+TEXT
9850@cindex #+OPTIONS
9851@cindex #+BIND
9852@cindex #+LINK_UP
9853@cindex #+LINK_HOME
9854@cindex #+EXPORT_SELECT_TAGS
9855@cindex #+EXPORT_EXCLUDE_TAGS
86fbb8ca 9856@cindex #+XSLT
8223b1d2 9857@cindex #+LaTeX_HEADER
c8d0cf5c
CD
9858@vindex user-full-name
9859@vindex user-mail-address
9860@vindex org-export-default-language
e66ba1df 9861@vindex org-export-date-timestamp-format
c8d0cf5c
CD
9862@example
9863#+TITLE: the title to be shown (default is the buffer name)
9864#+AUTHOR: the author (default taken from @code{user-full-name})
e66ba1df 9865#+DATE: a date, an Org timestamp@footnote{@code{org-export-date-timestamp-format} defines how this timestamp will be exported.}, or a format string for @code{format-time-string}
c8d0cf5c 9866#+EMAIL: his/her email address (default from @code{user-mail-address})
1df7defd
PE
9867#+DESCRIPTION: the page description, e.g., for the XHTML meta tag
9868#+KEYWORDS: the page keywords, e.g., for the XHTML meta tag
9869#+LANGUAGE: language for HTML, e.g., @samp{en} (@code{org-export-default-language})
c8d0cf5c
CD
9870#+TEXT: Some descriptive text to be inserted at the beginning.
9871#+TEXT: Several lines may be given.
9872#+OPTIONS: H:2 num:t toc:t \n:nil @@:t ::t |:t ^:t f:t TeX:t ...
1df7defd 9873#+BIND: lisp-var lisp-val, e.g., @code{org-export-latex-low-levels itemize}
c8d0cf5c
CD
9874 @r{You need to confirm using these, or configure @code{org-export-allow-BIND}}
9875#+LINK_UP: the ``up'' link of an exported page
9876#+LINK_HOME: the ``home'' link of an exported page
8223b1d2 9877#+LaTeX_HEADER: extra line(s) for the @LaTeX{} header, like \usepackage@{xyz@}
864c9740
CD
9878#+EXPORT_SELECT_TAGS: Tags that select a tree for export
9879#+EXPORT_EXCLUDE_TAGS: Tags that exclude a tree from export
86fbb8ca 9880#+XSLT: the XSLT stylesheet used by DocBook exporter to generate FO file
b349f79f
CD
9881@end example
9882
9883@noindent
e66ba1df
BG
9884The @code{#+OPTIONS} line is a compact@footnote{If you want to configure many options
9885this way, you can use several @code{#+OPTIONS} lines.} form to specify export
acedf35c 9886settings. Here you can:
b349f79f
CD
9887@cindex headline levels
9888@cindex section-numbers
9889@cindex table of contents
9890@cindex line-break preservation
9891@cindex quoted HTML tags
9892@cindex fixed-width sections
9893@cindex tables
9894@cindex @TeX{}-like syntax for sub- and superscripts
9895@cindex footnotes
9896@cindex special strings
9897@cindex emphasized text
9898@cindex @TeX{} macros
acedf35c 9899@cindex @LaTeX{} fragments
b349f79f
CD
9900@cindex author info, in export
9901@cindex time info, in export
ce57c2fe
BG
9902@vindex org-export-plist-vars
9903@vindex org-export-author-info
9904@vindex org-export-creator-info
9905@vindex org-export-email-info
9906@vindex org-export-time-stamp-file
b349f79f
CD
9907@example
9908H: @r{set the number of headline levels for export}
9909num: @r{turn on/off section-numbers}
9910toc: @r{turn on/off table of contents, or set level limit (integer)}
ed21c5c8 9911\n: @r{turn on/off line-break-preservation (DOES NOT WORK)}
b349f79f
CD
9912@@: @r{turn on/off quoted HTML tags}
9913:: @r{turn on/off fixed-width sections}
9914|: @r{turn on/off tables}
9915^: @r{turn on/off @TeX{}-like syntax for sub- and superscripts. If}
9916 @r{you write "^:@{@}", @code{a_@{b@}} will be interpreted, but}
9917 @r{the simple @code{a_b} will be left as it is.}
9918-: @r{turn on/off conversion of special strings.}
9919f: @r{turn on/off footnotes like this[1].}
96c8522a 9920todo: @r{turn on/off inclusion of TODO keywords into exported text}
ce57c2fe
BG
9921tasks: @r{turn on/off inclusion of tasks (TODO items), can be nil to remove}
9922 @r{all tasks, @code{todo} to remove DONE tasks, or list of kwds to keep}
96c8522a
CD
9923pri: @r{turn on/off priority cookies}
9924tags: @r{turn on/off inclusion of tags, may also be @code{not-in-toc}}
9925<: @r{turn on/off inclusion of any time/date stamps like DEADLINES}
b349f79f
CD
9926*: @r{turn on/off emphasized text (bold, italic, underlined)}
9927TeX: @r{turn on/off simple @TeX{} macros in plain text}
acedf35c 9928LaTeX: @r{configure export of @LaTeX{} fragments. Default @code{auto}}
b349f79f
CD
9929skip: @r{turn on/off skipping the text before the first heading}
9930author: @r{turn on/off inclusion of author name/email into exported file}
ed21c5c8 9931email: @r{turn on/off inclusion of author email into exported file}
dd12e1c6 9932creator: @r{turn on/off inclusion of creator info into exported file}
b349f79f 9933timestamp: @r{turn on/off inclusion creation time into exported file}
8223b1d2 9934d: @r{turn on/off inclusion of drawers, or list drawers to include}
b349f79f 9935@end example
c8d0cf5c 9936@noindent
acedf35c 9937These options take effect in both the HTML and @LaTeX{} export, except for
ce57c2fe
BG
9938@code{TeX} and @code{LaTeX} options, which are respectively @code{t} and
9939@code{nil} for the @LaTeX{} export.
9940
9941The default values for these and many other options are given by a set of
9942variables. For a list of such variables, the corresponding OPTIONS keys and
9943also the publishing keys (@pxref{Project alist}), see the constant
9944@code{org-export-plist-vars}.
b349f79f
CD
9945
9946When exporting only a single subtree by selecting it with @kbd{C-c @@} before
9947calling an export command, the subtree can overrule some of the file's export
9948settings with properties @code{EXPORT_FILE_NAME}, @code{EXPORT_TITLE},
c8d0cf5c
CD
9949@code{EXPORT_TEXT}, @code{EXPORT_AUTHOR}, @code{EXPORT_DATE}, and
9950@code{EXPORT_OPTIONS}.
b349f79f 9951
ed21c5c8 9952@node The export dispatcher, ASCII/Latin-1/UTF-8 export, Export options, Exporting
b349f79f
CD
9953@section The export dispatcher
9954@cindex dispatcher, for export commands
9955
9956All export commands can be reached using the export dispatcher, which is a
9957prefix key that prompts for an additional key specifying the command.
9958Normally the entire file is exported, but if there is an active region that
9959contains one outline tree, the first heading is used as document title and
9960the subtrees are exported.
4009494e
GM
9961
9962@table @kbd
acedf35c 9963@orgcmd{C-c C-e,org-export}
c8d0cf5c 9964@vindex org-export-run-in-background
4009494e
GM
9965Dispatcher for export and publishing commands. Displays a help-window
9966listing the additional key(s) needed to launch an export or publishing
64fb801f
CD
9967command. The prefix arg is passed through to the exporter. A double prefix
9968@kbd{C-u C-u} causes most commands to be executed in the background, in a
c8d0cf5c 9969separate Emacs process@footnote{To make this behavior the default, customize
64fb801f 9970the variable @code{org-export-run-in-background}.}.
acedf35c 9971@orgcmd{C-c C-e v,org-export-visible}
b349f79f 9972Like @kbd{C-c C-e}, but only export the text that is currently visible
1df7defd 9973(i.e., not hidden by outline visibility).
acedf35c 9974@orgcmd{C-u C-u C-c C-e,org-export}
c8d0cf5c 9975@vindex org-export-run-in-background
acedf35c 9976Call the exporter, but reverse the setting of
1df7defd 9977@code{org-export-run-in-background}, i.e., request background processing if
c8d0cf5c 9978not set, or force processing in the current Emacs process if set.
4009494e
GM
9979@end table
9980
ed21c5c8
CD
9981@node ASCII/Latin-1/UTF-8 export, HTML export, The export dispatcher, Exporting
9982@section ASCII/Latin-1/UTF-8 export
4009494e 9983@cindex ASCII export
ed21c5c8
CD
9984@cindex Latin-1 export
9985@cindex UTF-8 export
4009494e 9986
e66ba1df 9987ASCII export produces a simple and very readable version of an Org mode
1df7defd 9988file, containing only plain ASCII@. Latin-1 and UTF-8 export augment the file
ed21c5c8 9989with special characters and symbols available in these encodings.
4009494e
GM
9990
9991@cindex region, active
9992@cindex active region
b6cb4cd5 9993@cindex transient-mark-mode
4009494e 9994@table @kbd
acedf35c 9995@orgcmd{C-c C-e a,org-export-as-ascii}
c8d0cf5c 9996@cindex property, EXPORT_FILE_NAME
8223b1d2 9997Export as an ASCII file. For an Org file, @file{myfile.org}, the ASCII file
4009494e 9998will be @file{myfile.txt}. The file will be overwritten without
c8d0cf5c
CD
9999warning. If there is an active region@footnote{This requires
10000@code{transient-mark-mode} be turned on.}, only the region will be
ce57c2fe 10001exported. If the selected region is a single tree@footnote{To select the
b349f79f 10002current subtree, use @kbd{C-c @@}.}, the tree head will
4009494e 10003become the document title. If the tree head entry has or inherits an
b349f79f 10004@code{EXPORT_FILE_NAME} property, that name will be used for the
28a16a1b 10005export.
acedf35c
CD
10006@orgcmd{C-c C-e A,org-export-as-ascii-to-buffer}
10007Export to a temporary buffer. Do not create a file.
10008@orgcmd{C-c C-e n,org-export-as-latin1}
10009@xorgcmd{C-c C-e N,org-export-as-latin1-to-buffer}
ed21c5c8 10010Like the above commands, but use Latin-1 encoding.
acedf35c
CD
10011@orgcmd{C-c C-e u,org-export-as-utf8}
10012@xorgcmd{C-c C-e U,org-export-as-utf8-to-buffer}
ed21c5c8 10013Like the above commands, but use UTF-8 encoding.
acedf35c 10014@item C-c C-e v a/n/u
4009494e
GM
10015Export only the visible part of the document.
10016@end table
10017
10018@cindex headline levels, for exporting
10019In the exported version, the first 3 outline levels will become
10020headlines, defining a general document structure. Additional levels
10021will be exported as itemized lists. If you want that transition to occur
10022at a different level, specify it with a prefix argument. For example,
10023
10024@example
10025@kbd{C-1 C-c C-e a}
10026@end example
10027
10028@noindent
8223b1d2 10029creates only top level headlines and exports the rest as items. When
4009494e
GM
10030headlines are converted to items, the indentation of the text following
10031the headline is changed to fit nicely under the item. This is done with
a7808fba 10032the assumption that the first body line indicates the base indentation of
4009494e
GM
10033the body text. Any indentation larger than this is adjusted to preserve
10034the layout relative to the first line. Should there be lines with less
8223b1d2 10035indentation than the first one, these are left alone.
4009494e 10036
c8d0cf5c
CD
10037@vindex org-export-ascii-links-to-notes
10038Links will be exported in a footnote-like style, with the descriptive part in
10039the text and the link in a note before the next heading. See the variable
10040@code{org-export-ascii-links-to-notes} for details and other options.
10041
e66ba1df 10042@node HTML export, @LaTeX{} and PDF export, ASCII/Latin-1/UTF-8 export, Exporting
4009494e
GM
10043@section HTML export
10044@cindex HTML export
10045
8223b1d2 10046Org mode contains a HTML (XHTML 1.0 strict) exporter with extensive
b6cb4cd5 10047HTML formatting, in ways similar to John Gruber's @emph{markdown}
4009494e
GM
10048language, but with additional support for tables.
10049
10050@menu
c0468714 10051* HTML Export commands:: How to invoke HTML export
ce57c2fe 10052* HTML preamble and postamble:: How to insert a preamble and a postamble
e66ba1df 10053* Quoting HTML tags:: Using direct HTML in Org mode
c0468714
GM
10054* Links in HTML export:: How links will be interpreted and formatted
10055* Tables in HTML export:: How to modify the formatting of tables
10056* Images in HTML export:: How to insert figures into HTML output
afe98dfa 10057* Math formatting in HTML export:: Beautiful math also on the web
c0468714
GM
10058* Text areas in HTML export:: An alternative way to show an example
10059* CSS support:: Changing the appearance of the output
10060* JavaScript support:: Info and Folding in a web browser
4009494e
GM
10061@end menu
10062
ce57c2fe 10063@node HTML Export commands, HTML preamble and postamble, HTML export, HTML export
4009494e
GM
10064@subsection HTML export commands
10065
10066@cindex region, active
10067@cindex active region
b6cb4cd5 10068@cindex transient-mark-mode
4009494e 10069@table @kbd
acedf35c 10070@orgcmd{C-c C-e h,org-export-as-html}
c8d0cf5c 10071@cindex property, EXPORT_FILE_NAME
8223b1d2 10072Export as a HTML file. For an Org file @file{myfile.org},
ce57c2fe 10073the HTML file will be @file{myfile.html}. The file will be overwritten
c8d0cf5c
CD
10074without warning. If there is an active region@footnote{This requires
10075@code{transient-mark-mode} be turned on.}, only the region will be
ce57c2fe 10076exported. If the selected region is a single tree@footnote{To select the
b349f79f 10077current subtree, use @kbd{C-c @@}.}, the tree head will become the document
b6cb4cd5 10078title. If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
b349f79f 10079property, that name will be used for the export.
acedf35c 10080@orgcmd{C-c C-e b,org-export-as-html-and-open}
8223b1d2 10081Export as a HTML file and immediately open it with a browser.
acedf35c
CD
10082@orgcmd{C-c C-e H,org-export-as-html-to-buffer}
10083Export to a temporary buffer. Do not create a file.
10084@orgcmd{C-c C-e R,org-export-region-as-html}
a7808fba
CD
10085Export the active region to a temporary buffer. With a prefix argument, do
10086not produce the file header and footer, but just the plain HTML section for
10087the region. This is good for cut-and-paste operations.
acedf35c 10088@item C-c C-e v h/b/H/R
4009494e
GM
10089Export only the visible part of the document.
10090@item M-x org-export-region-as-html
8223b1d2 10091Convert the region to HTML under the assumption that it was in Org mode
4009494e
GM
10092syntax before. This is a global command that can be invoked in any
10093buffer.
10094@item M-x org-replace-region-by-HTML
e66ba1df 10095Replace the active region (assumed to be in Org mode syntax) by HTML
4009494e
GM
10096code.
10097@end table
10098
10099@cindex headline levels, for exporting
a7808fba
CD
10100In the exported version, the first 3 outline levels will become headlines,
10101defining a general document structure. Additional levels will be exported as
10102itemized lists. If you want that transition to occur at a different level,
10103specify it with a numeric prefix argument. For example,
4009494e
GM
10104
10105@example
10106@kbd{C-2 C-c C-e b}
10107@end example
10108
10109@noindent
10110creates two levels of headings and does the rest as items.
10111
ce57c2fe
BG
10112
10113@node HTML preamble and postamble, Quoting HTML tags, HTML Export commands, HTML export
10114@subsection HTML preamble and postamble
10115@vindex org-export-html-preamble
10116@vindex org-export-html-postamble
10117@vindex org-export-html-preamble-format
10118@vindex org-export-html-postamble-format
10119@vindex org-export-html-validation-link
10120@vindex org-export-author-info
10121@vindex org-export-email-info
10122@vindex org-export-creator-info
10123@vindex org-export-time-stamp-file
10124
10125The HTML exporter lets you define a preamble and a postamble.
10126
10127The default value for @code{org-export-html-preamble} is @code{t}, which
8223b1d2
BG
10128means that the preamble is inserted depending on the relevant format string
10129in @code{org-export-html-preamble-format}.
ce57c2fe
BG
10130
10131Setting @code{org-export-html-preamble} to a string will override the default
8223b1d2 10132format string. Setting it to a function, will insert the output of the
ce57c2fe
BG
10133function, which must be a string; such a function takes no argument but you
10134can check against the value of @code{opt-plist}, which contains the list of
10135publishing properties for the current file. Setting to @code{nil} will not
10136insert any preamble.
10137
10138The default value for @code{org-export-html-postamble} is @code{'auto}, which
10139means that the HTML exporter will look for the value of
10140@code{org-export-author-info}, @code{org-export-email-info},
10141@code{org-export-creator-info} and @code{org-export-time-stamp-file},
10142@code{org-export-html-validation-link} and build the postamble from these
10143values. Setting @code{org-export-html-postamble} to @code{t} will insert the
8223b1d2 10144postamble from the relevant format string found in
ce57c2fe
BG
10145@code{org-export-html-postamble-format}. Setting it to @code{nil} will not
10146insert any postamble.
10147
10148@node Quoting HTML tags, Links in HTML export, HTML preamble and postamble, HTML export
4009494e
GM
10149@subsection Quoting HTML tags
10150
10151Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
10152@samp{&gt;} in HTML export. If you want to include simple HTML tags
10153which should be interpreted as such, mark them with @samp{@@} as in
10154@samp{@@<b>bold text@@</b>}. Note that this really works only for
10155simple tags. For more extensive HTML that should be copied verbatim to
10156the exported file use either
10157
c8d0cf5c
CD
10158@cindex #+HTML
10159@cindex #+BEGIN_HTML
4009494e
GM
10160@example
10161#+HTML: Literal HTML code for export
10162@end example
10163
10164@noindent or
b349f79f 10165@cindex #+BEGIN_HTML
4009494e
GM
10166
10167@example
10168#+BEGIN_HTML
10169All lines between these markers are exported literally
10170#+END_HTML
10171@end example
10172
10173
a351880d
CD
10174@node Links in HTML export, Tables in HTML export, Quoting HTML tags, HTML export
10175@subsection Links in HTML export
4009494e
GM
10176
10177@cindex links, in HTML export
10178@cindex internal links, in HTML export
10179@cindex external links, in HTML export
1df7defd 10180Internal links (@pxref{Internal links}) will continue to work in HTML@. This
c8d0cf5c 10181includes automatic links created by radio targets (@pxref{Radio
55e0839d
CD
10182targets}). Links to external files will still work if the target file is on
10183the same @i{relative} path as the published Org file. Links to other
10184@file{.org} files will be translated into HTML links under the assumption
8223b1d2 10185that a HTML version also exists of the linked file, at the same relative
55e0839d
CD
10186path. @samp{id:} links can then be used to jump to specific entries across
10187files. For information related to linking files while publishing them to a
10188publishing directory see @ref{Publishing links}.
4009494e 10189
44ce9197 10190If you want to specify attributes for links, you can do so using a special
a50253cc 10191@code{#+ATTR_HTML} line to define attributes that will be added to the
c8d0cf5c
CD
10192@code{<a>} or @code{<img>} tags. Here is an example that sets @code{title}
10193and @code{style} attributes for a link:
44ce9197 10194
c8d0cf5c 10195@cindex #+ATTR_HTML
44ce9197 10196@example
e66ba1df 10197#+ATTR_HTML: title="The Org mode homepage" style="color:red;"
c8d0cf5c
CD
10198[[http://orgmode.org]]
10199@end example
10200
a351880d 10201@node Tables in HTML export, Images in HTML export, Links in HTML export, HTML export
c8d0cf5c
CD
10202@subsection Tables
10203@cindex tables, in HTML
10204@vindex org-export-html-table-tag
10205
e66ba1df 10206Org mode tables are exported to HTML using the table tag defined in
c8d0cf5c
CD
10207@code{org-export-html-table-tag}. The default setting makes tables without
10208cell borders and frame. If you would like to change this for individual
86fbb8ca 10209tables, place something like the following before the table:
c8d0cf5c
CD
10210
10211@cindex #+CAPTION
a351880d 10212@cindex #+ATTR_HTML
c8d0cf5c
CD
10213@example
10214#+CAPTION: This is a table with lines around and between cells
e66ba1df 10215#+ATTR_HTML: border="2" rules="all" frame="border"
44ce9197
CD
10216@end example
10217
afe98dfa 10218@node Images in HTML export, Math formatting in HTML export, Tables in HTML export, HTML export
a351880d 10219@subsection Images in HTML export
4009494e
GM
10220
10221@cindex images, inline in HTML
10222@cindex inlining images in HTML
c8d0cf5c 10223@vindex org-export-html-inline-images
a7808fba 10224HTML export can inline images given as links in the Org file, and
4009494e 10225it can make an image the clickable part of a link. By
c8d0cf5c
CD
10226default@footnote{But see the variable
10227@code{org-export-html-inline-images}.}, images are inlined if a link does
4009494e
GM
10228not have a description. So @samp{[[file:myimg.jpg]]} will be inlined,
10229while @samp{[[file:myimg.jpg][the image]]} will just produce a link
10230@samp{the image} that points to the image. If the description part
10231itself is a @code{file:} link or a @code{http:} URL pointing to an
10232image, this image will be inlined and activated so that clicking on the
10233image will activate the link. For example, to include a thumbnail that
10234will link to a high resolution version of the image, you could use:
10235
10236@example
10237[[file:highres.jpg][file:thumb.jpg]]
10238@end example
10239
86fbb8ca 10240If you need to add attributes to an inlined image, use a @code{#+ATTR_HTML}.
a351880d
CD
10241In the example below we specify the @code{alt} and @code{title} attributes to
10242support text viewers and accessibility, and align it to the right.
c8d0cf5c
CD
10243
10244@cindex #+CAPTION
a351880d 10245@cindex #+ATTR_HTML
c8d0cf5c
CD
10246@example
10247#+CAPTION: A black cat stalking a spider
a351880d 10248#+ATTR_HTML: alt="cat/spider image" title="Action!" align="right"
c8d0cf5c
CD
10249[[./img/a.jpg]]
10250@end example
10251
4009494e 10252@noindent
ce57c2fe 10253You could use @code{http} addresses just as well.
4009494e 10254
afe98dfa
CD
10255@node Math formatting in HTML export, Text areas in HTML export, Images in HTML export, HTML export
10256@subsection Math formatting in HTML export
10257@cindex MathJax
10258@cindex dvipng
10259
e66ba1df 10260@LaTeX{} math snippets (@pxref{@LaTeX{} fragments}) can be displayed in two
afe98dfa
CD
10261different ways on HTML pages. The default is to use the
10262@uref{http://www.mathjax.org, MathJax system} which should work out of the
10263box with Org mode installation because @code{http://orgmode.org} serves
e66ba1df 10264@file{MathJax} for Org mode users for small applications and for testing
afe98dfa 10265purposes. @b{If you plan to use this regularly or on pages with significant
acedf35c
CD
10266page views, you should install@footnote{Installation instructions can be
10267found on the MathJax website, see
10268@uref{http://www.mathjax.org/resources/docs/?installation.html}.} MathJax on
10269your own server in order to limit the load of our server.} To configure
10270@file{MathJax}, use the variable @code{org-export-html-mathjax-options} or
10271insert something like the following into the buffer:
afe98dfa
CD
10272
10273@example
10274#+MATHJAX: align:"left" mathml:t path:"/MathJax/MathJax.js"
10275@end example
10276
10277@noindent See the docstring of the variable
10278@code{org-export-html-mathjax-options} for the meaning of the parameters in
10279this line.
10280
acedf35c
CD
10281If you prefer, you can also request that @LaTeX{} fragments are processed
10282into small images that will be inserted into the browser page. Before the
10283availability of MathJax, this was the default method for Org files. This
10284method requires that the @file{dvipng} program is available on your system.
10285You can still get this processing with
afe98dfa
CD
10286
10287@example
10288#+OPTIONS: LaTeX:dvipng
10289@end example
10290
10291@node Text areas in HTML export, CSS support, Math formatting in HTML export, HTML export
a351880d 10292@subsection Text areas in HTML export
55e0839d
CD
10293
10294@cindex text areas, in HTML
10295An alternative way to publish literal code examples in HTML is to use text
10296areas, where the example can even be edited before pasting it into an
10297application. It is triggered by a @code{-t} switch at an @code{example} or
10298@code{src} block. Using this switch disables any options for syntax and
10299label highlighting, and line numbering, which may be present. You may also
10300use @code{-h} and @code{-w} switches to specify the height and width of the
10301text area, which default to the number of lines in the example, and 80,
10302respectively. For example
10303
10304@example
10305#+BEGIN_EXAMPLE -t -w 40
86fbb8ca
CD
10306 (defun org-xor (a b)
10307 "Exclusive or."
10308 (if a (not b) b))
55e0839d
CD
10309#+END_EXAMPLE
10310@end example
10311
10312
86fbb8ca 10313@node CSS support, JavaScript support, Text areas in HTML export, HTML export
4009494e 10314@subsection CSS support
a7808fba
CD
10315@cindex CSS, for HTML export
10316@cindex HTML export, CSS
4009494e 10317
c8d0cf5c
CD
10318@vindex org-export-html-todo-kwd-class-prefix
10319@vindex org-export-html-tag-class-prefix
55e0839d 10320You can also give style information for the exported file. The HTML exporter
c8d0cf5c
CD
10321assigns the following special CSS classes@footnote{If the classes on TODO
10322keywords and tags lead to conflicts, use the variables
10323@code{org-export-html-todo-kwd-class-prefix} and
10324@code{org-export-html-tag-class-prefix} to make them unique.} to appropriate
10325parts of the document---your style specifications may change these, in
10326addition to any of the standard classes like for headlines, tables, etc.
10327@example
10328p.author @r{author information, including email}
10329p.date @r{publishing date}
e66ba1df 10330p.creator @r{creator info, about org mode version}
c8d0cf5c
CD
10331.title @r{document title}
10332.todo @r{TODO keywords, all not-done states}
ce57c2fe 10333.done @r{the DONE keywords, all states that count as done}
c8d0cf5c
CD
10334.WAITING @r{each TODO keyword also uses a class named after itself}
10335.timestamp @r{timestamp}
10336.timestamp-kwd @r{keyword associated with a timestamp, like SCHEDULED}
10337.timestamp-wrapper @r{span around keyword plus timestamp}
10338.tag @r{tag in a headline}
10339._HOME @r{each tag uses itself as a class, "@@" replaced by "_"}
10340.target @r{target for links}
10341.linenr @r{the line number in a code example}
10342.code-highlighted @r{for highlighting referenced code lines}
10343div.outline-N @r{div for outline level N (headline plus text))}
10344div.outline-text-N @r{extra div for text at outline level N}
10345.section-number-N @r{section number in headlines, different for each level}
10346div.figure @r{how to format an inlined image}
10347pre.src @r{formatted source code}
10348pre.example @r{normal example}
10349p.verse @r{verse paragraph}
10350div.footnotes @r{footnote section headline}
10351p.footnote @r{footnote definition paragraph, containing a footnote}
10352.footref @r{a footnote reference number (always a <sup>)}
10353.footnum @r{footnote number in footnote definition (always <sup>)}
10354@end example
10355
10356@vindex org-export-html-style-default
10357@vindex org-export-html-style-include-default
10358@vindex org-export-html-style
10359@vindex org-export-html-extra
10360@vindex org-export-html-style-default
10361Each exported file contains a compact default style that defines these
e45e3595
CD
10362classes in a basic way@footnote{This style is defined in the constant
10363@code{org-export-html-style-default}, which you should not modify. To turn
10364inclusion of these defaults off, customize
10365@code{org-export-html-style-include-default}}. You may overwrite these
10366settings, or add to them by using the variables @code{org-export-html-style}
10367(for Org-wide settings) and @code{org-export-html-style-extra} (for more
acedf35c 10368fine-grained settings, like file-local settings). To set the latter variable
e45e3595 10369individually for each file, you can use
4009494e 10370
c8d0cf5c 10371@cindex #+STYLE
4009494e 10372@example
864c9740 10373#+STYLE: <link rel="stylesheet" type="text/css" href="stylesheet.css" />
4009494e
GM
10374@end example
10375
864c9740 10376@noindent
e45e3595
CD
10377For longer style definitions, you can use several such lines. You could also
10378directly write a @code{<style>} @code{</style>} section in this way, without
10379referring to an external file.
4009494e 10380
afe98dfa
CD
10381In order to add styles to a subtree, use the @code{:HTML_CONTAINER_CLASS:}
10382property to assign a class to the tree. In order to specify CSS styles for a
10383particular headline, you can use the id specified in a @code{:CUSTOM_ID:}
10384property.
10385
4009494e
GM
10386@c FIXME: More about header and footer styles
10387@c FIXME: Talk about links and targets.
10388
86fbb8ca
CD
10389@node JavaScript support, , CSS support, HTML export
10390@subsection JavaScript supported display of web pages
a7808fba 10391
c8d0cf5c
CD
10392@cindex Rose, Sebastian
10393Sebastian Rose has written a JavaScript program especially designed to
a7808fba 10394enhance the web viewing experience of HTML files created with Org. This
55e0839d
CD
10395program allows you to view large files in two different ways. The first one
10396is an @emph{Info}-like mode where each section is displayed separately and
a7808fba
CD
10397navigation can be done with the @kbd{n} and @kbd{p} keys (and some other keys
10398as well, press @kbd{?} for an overview of the available keys). The second
55e0839d
CD
10399view type is a @emph{folding} view much like Org provides inside Emacs. The
10400script is available at @url{http://orgmode.org/org-info.js} and you can find
10401the documentation for it at @url{http://orgmode.org/worg/code/org-info-js/}.
c8d0cf5c 10402We host the script at our site, but if you use it a lot, you might
55e0839d
CD
10403not want to be dependent on @url{orgmode.org} and prefer to install a local
10404copy on your own web server.
a7808fba 10405
b349f79f 10406To use the script, you need to make sure that the @file{org-jsinfo.el} module
b6cb4cd5
CD
10407gets loaded. It should be loaded by default, but you can try @kbd{M-x
10408customize-variable @key{RET} org-modules @key{RET}} to convince yourself that
10409this is indeed the case. All it then takes to make use of the program is
10410adding a single line to the Org file:
a7808fba 10411
c8d0cf5c 10412@cindex #+INFOJS_OPT
a7808fba 10413@example
b349f79f 10414#+INFOJS_OPT: view:info toc:nil
a7808fba
CD
10415@end example
10416
10417@noindent
10418If this line is found, the HTML header will automatically contain the code
10419needed to invoke the script. Using the line above, you can set the following
10420viewing options:
10421
10422@example
10423path: @r{The path to the script. The default is to grab the script from}
10424 @r{@url{http://orgmode.org/org-info.js}, but you might want to have}
10425 @r{a local copy and use a path like @samp{../scripts/org-info.js}.}
8223b1d2 10426view: @r{Initial view when the website is first shown. Possible values are:}
a7808fba
CD
10427 info @r{Info-like interface with one section per page.}
10428 overview @r{Folding interface, initially showing only top-level.}
10429 content @r{Folding interface, starting with all headlines visible.}
10430 showall @r{Folding interface, all headlines and text visible.}
10431sdepth: @r{Maximum headline level that will still become an independent}
10432 @r{section for info and folding modes. The default is taken from}
7006d207
CD
10433 @r{@code{org-export-headline-levels} (= the @code{H} switch in @code{#+OPTIONS}).}
10434 @r{If this is smaller than in @code{org-export-headline-levels}, each}
c8d0cf5c 10435 @r{info/folding section can still contain child headlines.}
acedf35c 10436toc: @r{Should the table of contents @emph{initially} be visible?}
c8d0cf5c 10437 @r{Even when @code{nil}, you can always get to the "toc" with @kbd{i}.}
a7808fba 10438tdepth: @r{The depth of the table of contents. The defaults are taken from}
7006d207 10439 @r{the variables @code{org-export-headline-levels} and @code{org-export-with-toc}.}
acedf35c 10440ftoc: @r{Does the CSS of the page specify a fixed position for the "toc"?}
b349f79f 10441 @r{If yes, the toc will never be displayed as a section.}
a7808fba 10442ltoc: @r{Should there be short contents (children) in each section?}
c8d0cf5c 10443 @r{Make this @code{above} if the section should be above initial text.}
a7808fba
CD
10444mouse: @r{Headings are highlighted when the mouse is over them. Should be}
10445 @r{@samp{underline} (default) or a background color like @samp{#cccccc}.}
10446buttons: @r{Should view-toggle buttons be everywhere? When @code{nil} (the}
10447 @r{default), only one such button will be present.}
10448@end example
c8d0cf5c
CD
10449@noindent
10450@vindex org-infojs-options
10451@vindex org-export-html-use-infojs
a7808fba
CD
10452You can choose default values for these options by customizing the variable
10453@code{org-infojs-options}. If you always want to apply the script to your
10454pages, configure the variable @code{org-export-html-use-infojs}.
10455
e66ba1df 10456@node @LaTeX{} and PDF export, DocBook export, HTML export, Exporting
acedf35c
CD
10457@section @LaTeX{} and PDF export
10458@cindex @LaTeX{} export
71d35b24 10459@cindex PDF export
72d803ad 10460@cindex Guerry, Bastien
4009494e 10461
e66ba1df
BG
10462Org mode contains a @LaTeX{} exporter written by Bastien Guerry. With
10463further processing@footnote{The default @LaTeX{} output is designed for
10464processing with @code{pdftex} or @LaTeX{}. It includes packages that are not
10465compatible with @code{xetex} and possibly @code{luatex}. See the variables
ed21c5c8
CD
10466@code{org-export-latex-default-packages-alist} and
10467@code{org-export-latex-packages-alist}.}, this backend is also used to
acedf35c 10468produce PDF output. Since the @LaTeX{} output uses @file{hyperref} to
ed21c5c8 10469implement links and cross references, the PDF output file will be fully
ce57c2fe
BG
10470linked. Beware of the fact that your @code{org} file has to be properly
10471structured in order to be correctly exported: respect the hierarchy of
10472sections.
4009494e
GM
10473
10474@menu
e66ba1df 10475* @LaTeX{}/PDF export commands::
c0468714 10476* Header and sectioning:: Setting up the export file structure
e66ba1df
BG
10477* Quoting @LaTeX{} code:: Incorporating literal @LaTeX{} code
10478* Tables in @LaTeX{} export:: Options for exporting tables to @LaTeX{}
10479* Images in @LaTeX{} export:: How to insert figures into @LaTeX{} output
c0468714 10480* Beamer class export:: Turning the file into a presentation
4009494e
GM
10481@end menu
10482
e66ba1df 10483@node @LaTeX{}/PDF export commands, Header and sectioning, @LaTeX{} and PDF export, @LaTeX{} and PDF export
acedf35c 10484@subsection @LaTeX{} export commands
4009494e 10485
b6cb4cd5
CD
10486@cindex region, active
10487@cindex active region
10488@cindex transient-mark-mode
4009494e 10489@table @kbd
acedf35c 10490@orgcmd{C-c C-e l,org-export-as-latex}
c8d0cf5c 10491@cindex property EXPORT_FILE_NAME
8223b1d2 10492Export as a @LaTeX{} file. For an Org file
ce57c2fe 10493@file{myfile.org}, the @LaTeX{} file will be @file{myfile.tex}. The file will
c8d0cf5c
CD
10494be overwritten without warning. If there is an active region@footnote{This
10495requires @code{transient-mark-mode} be turned on.}, only the region will be
ce57c2fe 10496exported. If the selected region is a single tree@footnote{To select the
b6cb4cd5
CD
10497current subtree, use @kbd{C-c @@}.}, the tree head will become the document
10498title. If the tree head entry has or inherits an @code{EXPORT_FILE_NAME}
10499property, that name will be used for the export.
acedf35c
CD
10500@orgcmd{C-c C-e L,org-export-as-latex-to-buffer}
10501Export to a temporary buffer. Do not create a file.
ce57c2fe 10502@item C-c C-e v l/L
4009494e
GM
10503Export only the visible part of the document.
10504@item M-x org-export-region-as-latex
8223b1d2 10505Convert the region to @LaTeX{} under the assumption that it was in Org mode
4009494e
GM
10506syntax before. This is a global command that can be invoked in any
10507buffer.
10508@item M-x org-replace-region-by-latex
e66ba1df 10509Replace the active region (assumed to be in Org mode syntax) by @LaTeX{}
4009494e 10510code.
acedf35c
CD
10511@orgcmd{C-c C-e p,org-export-as-pdf}
10512Export as @LaTeX{} and then process to PDF.
10513@orgcmd{C-c C-e d,org-export-as-pdf-and-open}
10514Export as @LaTeX{} and then process to PDF, then open the resulting PDF file.
4009494e
GM
10515@end table
10516
10517@cindex headline levels, for exporting
c8d0cf5c 10518@vindex org-latex-low-levels
4009494e
GM
10519In the exported version, the first 3 outline levels will become
10520headlines, defining a general document structure. Additional levels
10521will be exported as description lists. The exporter can ignore them or
10522convert them to a custom string depending on
10523@code{org-latex-low-levels}.
10524
10525If you want that transition to occur at a different level, specify it
ce57c2fe 10526with a numeric prefix argument. For example,
4009494e
GM
10527
10528@example
10529@kbd{C-2 C-c C-e l}
10530@end example
10531
10532@noindent
10533creates two levels of headings and does the rest as items.
10534
e66ba1df 10535@node Header and sectioning, Quoting @LaTeX{} code, @LaTeX{}/PDF export commands, @LaTeX{} and PDF export
ed21c5c8 10536@subsection Header and sectioning structure
acedf35c
CD
10537@cindex @LaTeX{} class
10538@cindex @LaTeX{} sectioning structure
10539@cindex @LaTeX{} header
e66ba1df
BG
10540@cindex header, for @LaTeX{} files
10541@cindex sectioning structure, for @LaTeX{} export
ed21c5c8 10542
acedf35c 10543By default, the @LaTeX{} output uses the class @code{article}.
ed21c5c8
CD
10544
10545@vindex org-export-latex-default-class
10546@vindex org-export-latex-classes
10547@vindex org-export-latex-default-packages-alist
10548@vindex org-export-latex-packages-alist
8223b1d2
BG
10549@cindex #+LaTeX_HEADER
10550@cindex #+LaTeX_CLASS
10551@cindex #+LaTeX_CLASS_OPTIONS
10552@cindex property, LaTeX_CLASS
10553@cindex property, LaTeX_CLASS_OPTIONS
ed21c5c8
CD
10554You can change this globally by setting a different value for
10555@code{org-export-latex-default-class} or locally by adding an option like
10556@code{#+LaTeX_CLASS: myclass} in your file, or with a @code{:LaTeX_CLASS:}
10557property that applies when exporting a region containing only this (sub)tree.
10558The class must be listed in @code{org-export-latex-classes}. This variable
10559defines a header template for each class@footnote{Into which the values of
10560@code{org-export-latex-default-packages-alist} and
10561@code{org-export-latex-packages-alist} are spliced.}, and allows you to
10562define the sectioning structure for each class. You can also define your own
8223b1d2
BG
10563classes there. @code{#+LaTeX_CLASS_OPTIONS} or a @code{:LaTeX_CLASS_OPTIONS:}
10564property can specify the options for the @code{\documentclass} macro. The
10565options to documentclass have to be provided, as expected by @LaTeX{}, within
10566square brackets. You can also use @code{#+LaTeX_HEADER: \usepackage@{xyz@}}
10567to add lines to the header. See the docstring of
10568@code{org-export-latex-classes} for more information. An example is shown
10569below.
10570
10571@example
10572#+LaTeX_CLASS: article
10573#+LaTeX_CLASS_OPTIONS: [a4paper]
10574#+LaTeX_HEADER: \usepackage@{xyz@}
10575
10576* Headline 1
10577 some text
10578@end example
ed21c5c8 10579
e66ba1df 10580@node Quoting @LaTeX{} code, Tables in @LaTeX{} export, Header and sectioning, @LaTeX{} and PDF export
acedf35c 10581@subsection Quoting @LaTeX{} code
4009494e 10582
e66ba1df 10583Embedded @LaTeX{} as described in @ref{Embedded @LaTeX{}}, will be correctly
acedf35c 10584inserted into the @LaTeX{} file. This includes simple macros like
55e0839d 10585@samp{\ref@{LABEL@}} to create a cross reference to a figure. Furthermore,
acedf35c 10586you can add special code that should only be present in @LaTeX{} export with
55e0839d 10587the following constructs:
4009494e 10588
c8d0cf5c
CD
10589@cindex #+LaTeX
10590@cindex #+BEGIN_LaTeX
4009494e 10591@example
e66ba1df 10592#+LaTeX: Literal @LaTeX{} code for export
4009494e
GM
10593@end example
10594
10595@noindent or
b349f79f 10596@cindex #+BEGIN_LaTeX
4009494e
GM
10597
10598@example
10599#+BEGIN_LaTeX
10600All lines between these markers are exported literally
10601#+END_LaTeX
10602@end example
dbc28aaa 10603
dbc28aaa 10604
e66ba1df 10605@node Tables in @LaTeX{} export, Images in @LaTeX{} export, Quoting @LaTeX{} code, @LaTeX{} and PDF export
acedf35c
CD
10606@subsection Tables in @LaTeX{} export
10607@cindex tables, in @LaTeX{} export
67df9cfb 10608
ce57c2fe
BG
10609For @LaTeX{} export of a table, you can specify a label, a caption and
10610placement options (@pxref{Images and tables}). You can also use the
10611@code{ATTR_LaTeX} line to request a @code{longtable} environment for the
10612table, so that it may span several pages, or to change the default table
10613environment from @code{table} to @code{table*} or to change the default inner
10614tabular environment to @code{tabularx} or @code{tabulary}. Finally, you can
10615set the alignment string, and (with @code{tabularx} or @code{tabulary}) the
10616width:
67df9cfb 10617
c8d0cf5c
CD
10618@cindex #+CAPTION
10619@cindex #+LABEL
10620@cindex #+ATTR_LaTeX
67df9cfb
CD
10621@example
10622#+CAPTION: A long table
10623#+LABEL: tbl:long
c8d0cf5c 10624#+ATTR_LaTeX: longtable align=l|lp@{3cm@}r|l
67df9cfb
CD
10625| ..... | ..... |
10626| ..... | ..... |
10627@end example
10628
ce57c2fe
BG
10629or to specify a multicolumn table with @code{tabulary}
10630
10631@cindex #+CAPTION
10632@cindex #+LABEL
10633@cindex #+ATTR_LaTeX
10634@example
10635#+CAPTION: A wide table with tabulary
10636#+LABEL: tbl:wide
10637#+ATTR_LaTeX: table* tabulary width=\textwidth
10638| ..... | ..... |
10639| ..... | ..... |
10640@end example
67df9cfb 10641
e66ba1df 10642@node Images in @LaTeX{} export, Beamer class export, Tables in @LaTeX{} export, @LaTeX{} and PDF export
acedf35c
CD
10643@subsection Images in @LaTeX{} export
10644@cindex images, inline in @LaTeX{}
10645@cindex inlining images in @LaTeX{}
67df9cfb
CD
10646
10647Images that are linked to without a description part in the link, like
10648@samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]} will be inserted into the PDF
acedf35c 10649output file resulting from @LaTeX{} processing. Org will use an
67df9cfb 10650@code{\includegraphics} macro to insert the image. If you have specified a
a351880d
CD
10651caption and/or a label as described in @ref{Images and tables}, the figure
10652will be wrapped into a @code{figure} environment and thus become a floating
ce57c2fe
BG
10653element. You can use an @code{#+ATTR_LaTeX:} line to specify various other
10654options. You can ask org to export an image as a float without specifying
10655a label or a caption by using the keyword @code{float} in this line. Various
10656optional arguments to the @code{\includegraphics} macro can also be specified
10657in this fashion. To modify the placement option of the floating environment,
10658add something like @samp{placement=[h!]} to the attributes. It is to be noted
10659this option can be used with tables as well@footnote{One can also take
10660advantage of this option to pass other, unrelated options into the figure or
10661table environment. For an example see the section ``Exporting org files'' in
8223b1d2 10662@url{http://orgmode.org/worg/org-hacks.html}}.
a351880d 10663
86fbb8ca
CD
10664If you would like to let text flow around the image, add the word @samp{wrap}
10665to the @code{#+ATTR_LaTeX:} line, which will make the figure occupy the left
10666half of the page. To fine-tune, the @code{placement} field will be the set
10667of additional arguments needed by the @code{wrapfigure} environment. Note
10668that if you change the size of the image, you need to use compatible settings
10669for @code{\includegraphics} and @code{wrapfigure}.
67df9cfb 10670
c8d0cf5c
CD
10671@cindex #+CAPTION
10672@cindex #+LABEL
10673@cindex #+ATTR_LaTeX
67df9cfb
CD
10674@example
10675#+CAPTION: The black-body emission of the disk around HR 4049
10676#+LABEL: fig:SED-HR4049
10677#+ATTR_LaTeX: width=5cm,angle=90
10678[[./img/sed-hr4049.pdf]]
a351880d
CD
10679
10680#+ATTR_LaTeX: width=0.38\textwidth wrap placement=@{r@}@{0.4\textwidth@}
10681[[./img/hst.png]]
67df9cfb
CD
10682@end example
10683
ce57c2fe
BG
10684If you wish to include an image which spans multiple columns in a page, you
10685can use the keyword @code{multicolumn} in the @code{#+ATTR_LaTeX} line. This
10686will export the image wrapped in a @code{figure*} environment.
10687
55e0839d 10688If you need references to a label created in this way, write
acedf35c 10689@samp{\ref@{fig:SED-HR4049@}} just like in @LaTeX{}.
67df9cfb 10690
e66ba1df 10691@node Beamer class export, , Images in @LaTeX{} export, @LaTeX{} and PDF export
ed21c5c8
CD
10692@subsection Beamer class export
10693
e66ba1df
BG
10694The @LaTeX{} class @file{beamer} allows production of high quality presentations
10695using @LaTeX{} and pdf processing. Org mode has special support for turning an
10696Org mode file or tree into a @file{beamer} presentation.
ed21c5c8 10697
e66ba1df 10698When the @LaTeX{} class for the current buffer (as set with @code{#+LaTeX_CLASS:
ed21c5c8
CD
10699beamer}) or subtree (set with a @code{LaTeX_CLASS} property) is
10700@code{beamer}, a special export mode will turn the file or tree into a beamer
86fbb8ca 10701presentation. Any tree with not-too-deep level nesting should in principle be
ed21c5c8
CD
10702exportable as a beamer presentation. By default, the top-level entries (or
10703the first level below the selected subtree heading) will be turned into
10704frames, and the outline structure below this level will become itemize lists.
10705You can also configure the variable @code{org-beamer-frame-level} to a
acedf35c 10706different level---then the hierarchy above frames will produce the sectioning
ed21c5c8
CD
10707structure of the presentation.
10708
10709A template for useful in-buffer settings or properties can be inserted into
afe98dfa
CD
10710the buffer with @kbd{M-x org-insert-beamer-options-template}. Among other
10711things, this will install a column view format which is very handy for
10712editing special properties used by beamer.
ed21c5c8
CD
10713
10714You can influence the structure of the presentation using the following
10715properties:
10716
10717@table @code
10718@item BEAMER_env
10719The environment that should be used to format this entry. Valid environments
10720are defined in the constant @code{org-beamer-environments-default}, and you
10721can define more in @code{org-beamer-environments-extra}. If this property is
10722set, the entry will also get a @code{:B_environment:} tag to make this
10723visible. This tag has no semantic meaning, it is only a visual aid.
10724@item BEAMER_envargs
10725The beamer-special arguments that should be used for the environment, like
10726@code{[t]} or @code{[<+->]} of @code{<2-3>}. If the @code{BEAMER_col}
10727property is also set, something like @code{C[t]} can be added here as well to
10728set an options argument for the implied @code{columns} environment.
acedf35c
CD
10729@code{c[t]} or @code{c<2->} will set an options for the implied @code{column}
10730environment.
ed21c5c8
CD
10731@item BEAMER_col
10732The width of a column that should start with this entry. If this property is
10733set, the entry will also get a @code{:BMCOL:} property to make this visible.
86fbb8ca 10734Also this tag is only a visual aid. When this is a plain number, it will be
ed21c5c8
CD
10735interpreted as a fraction of @code{\textwidth}. Otherwise it will be assumed
10736that you have specified the units, like @samp{3cm}. The first such property
10737in a frame will start a @code{columns} environment to surround the columns.
10738This environment is closed when an entry has a @code{BEAMER_col} property
10739with value 0 or 1, or automatically at the end of the frame.
10740@item BEAMER_extra
10741Additional commands that should be inserted after the environment has been
10742opened. For example, when creating a frame, this can be used to specify
10743transitions.
10744@end table
10745
10746Frames will automatically receive a @code{fragile} option if they contain
10747source code that uses the verbatim environment. Special @file{beamer}
10748specific code can be inserted using @code{#+BEAMER:} and
8223b1d2 10749@code{#+BEGIN_BEAMER...#+END_BEAMER} constructs, similar to other export
ed21c5c8
CD
10750backends, but with the difference that @code{#+LaTeX:} stuff will be included
10751in the presentation as well.
10752
10753Outline nodes with @code{BEAMER_env} property value @samp{note} or
10754@samp{noteNH} will be formatted as beamer notes, i,e, they will be wrapped
10755into @code{\note@{...@}}. The former will include the heading as part of the
10756note text, the latter will ignore the heading of that node. To simplify note
10757generation, it is actually enough to mark the note with a @emph{tag} (either
10758@code{:B_note:} or @code{:B_noteNH:}) instead of creating the
10759@code{BEAMER_env} property.
10760
10761You can turn on a special minor mode @code{org-beamer-mode} for editing
10762support with
10763
10764@example
10765#+STARTUP: beamer
10766@end example
10767
10768@table @kbd
acedf35c 10769@orgcmd{C-c C-b,org-beamer-select-environment}
ed21c5c8
CD
10770In @code{org-beamer-mode}, this key offers fast selection of a beamer
10771environment or the @code{BEAMER_col} property.
10772@end table
10773
10774Column view provides a great way to set the environment of a node and other
10775important parameters. Make sure you are using a COLUMN format that is geared
10776toward this special purpose. The command @kbd{M-x
afe98dfa 10777org-insert-beamer-options-template} defines such a format.
ed21c5c8
CD
10778
10779Here is a simple example Org document that is intended for beamer export.
10780
10781@smallexample
10782#+LaTeX_CLASS: beamer
10783#+TITLE: Example Presentation
10784#+AUTHOR: Carsten Dominik
10785#+LaTeX_CLASS_OPTIONS: [presentation]
10786#+BEAMER_FRAME_LEVEL: 2
10787#+BEAMER_HEADER_EXTRA: \usetheme@{Madrid@}\usecolortheme@{default@}
10788#+COLUMNS: %35ITEM %10BEAMER_env(Env) %10BEAMER_envargs(Args) %4BEAMER_col(Col) %8BEAMER_extra(Ex)
10789
10790* This is the first structural section
86fbb8ca 10791
ed21c5c8
CD
10792** Frame 1 \\ with a subtitle
10793*** Thanks to Eric Fraga :BMCOL:B_block:
10794 :PROPERTIES:
10795 :BEAMER_env: block
10796 :BEAMER_envargs: C[t]
10797 :BEAMER_col: 0.5
10798 :END:
10799 for the first viable beamer setup in Org
10800*** Thanks to everyone else :BMCOL:B_block:
10801 :PROPERTIES:
10802 :BEAMER_col: 0.5
10803 :BEAMER_env: block
10804 :BEAMER_envargs: <2->
10805 :END:
10806 for contributing to the discussion
10807**** This will be formatted as a beamer note :B_note:
10808** Frame 2 \\ where we will not use columns
10809*** Request :B_block:
10810 Please test this stuff!
10811 :PROPERTIES:
10812 :BEAMER_env: block
10813 :END:
10814@end smallexample
10815
10816For more information, see the documentation on Worg.
10817
e66ba1df 10818@node DocBook export, OpenDocument Text export, @LaTeX{} and PDF export, Exporting
c8d0cf5c
CD
10819@section DocBook export
10820@cindex DocBook export
10821@cindex PDF export
86fbb8ca 10822@cindex Cui, Baoqiu
c8d0cf5c
CD
10823
10824Org contains a DocBook exporter written by Baoqiu Cui. Once an Org file is
10825exported to DocBook format, it can be further processed to produce other
10826formats, including PDF, HTML, man pages, etc., using many available DocBook
10827tools and stylesheets.
10828
10829Currently DocBook exporter only supports DocBook V5.0.
10830
10831@menu
c0468714
GM
10832* DocBook export commands:: How to invoke DocBook export
10833* Quoting DocBook code:: Incorporating DocBook code in Org files
10834* Recursive sections:: Recursive sections in DocBook
10835* Tables in DocBook export:: Tables are exported as HTML tables
10836* Images in DocBook export:: How to insert figures into DocBook output
10837* Special characters:: How to handle special characters
c8d0cf5c
CD
10838@end menu
10839
10840@node DocBook export commands, Quoting DocBook code, DocBook export, DocBook export
10841@subsection DocBook export commands
10842
10843@cindex region, active
10844@cindex active region
10845@cindex transient-mark-mode
10846@table @kbd
acedf35c 10847@orgcmd{C-c C-e D,org-export-as-docbook}
c8d0cf5c 10848@cindex property EXPORT_FILE_NAME
8223b1d2 10849Export as a DocBook file. For an Org file, @file{myfile.org}, the DocBook XML
c8d0cf5c
CD
10850file will be @file{myfile.xml}. The file will be overwritten without
10851warning. If there is an active region@footnote{This requires
10852@code{transient-mark-mode} to be turned on}, only the region will be
10853exported. If the selected region is a single tree@footnote{To select the
10854current subtree, use @kbd{C-c @@}.}, the tree head will become the document
10855title. If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
10856property, that name will be used for the export.
acedf35c 10857@orgcmd{C-c C-e V,org-export-as-docbook-pdf-and-open}
8223b1d2 10858Export as a DocBook file, process to PDF, then open the resulting PDF file.
c8d0cf5c
CD
10859
10860@vindex org-export-docbook-xslt-proc-command
10861@vindex org-export-docbook-xsl-fo-proc-command
8223b1d2
BG
10862Note that, in order to produce PDF output based on an exported DocBook file,
10863you need to have XSLT processor and XSL-FO processor software installed on your
c8d0cf5c
CD
10864system. Check variables @code{org-export-docbook-xslt-proc-command} and
10865@code{org-export-docbook-xsl-fo-proc-command}.
10866
86fbb8ca
CD
10867@vindex org-export-docbook-xslt-stylesheet
10868The stylesheet argument @code{%s} in variable
10869@code{org-export-docbook-xslt-proc-command} is replaced by the value of
10870variable @code{org-export-docbook-xslt-stylesheet}, which needs to be set by
10871the user. You can also overrule this global setting on a per-file basis by
10872adding an in-buffer setting @code{#+XSLT:} to the Org file.
10873
acedf35c 10874@orgkey{C-c C-e v D}
c8d0cf5c
CD
10875Export only the visible part of the document.
10876@end table
10877
10878@node Quoting DocBook code, Recursive sections, DocBook export commands, DocBook export
10879@subsection Quoting DocBook code
10880
10881You can quote DocBook code in Org files and copy it verbatim into exported
10882DocBook file with the following constructs:
10883
10884@cindex #+DOCBOOK
10885@cindex #+BEGIN_DOCBOOK
10886@example
10887#+DOCBOOK: Literal DocBook code for export
10888@end example
10889
10890@noindent or
10891@cindex #+BEGIN_DOCBOOK
10892
10893@example
10894#+BEGIN_DOCBOOK
10895All lines between these markers are exported by DocBook exporter
10896literally.
10897#+END_DOCBOOK
10898@end example
10899
10900For example, you can use the following lines to include a DocBook warning
10901admonition. As to what this warning says, you should pay attention to the
10902document context when quoting DocBook code in Org files. You may make
10903exported DocBook XML files invalid by not quoting DocBook code correctly.
10904
10905@example
10906#+BEGIN_DOCBOOK
10907<warning>
10908 <para>You should know what you are doing when quoting DocBook XML code
acedf35c 10909 in your Org file. Invalid DocBook XML may be generated by
c8d0cf5c
CD
10910 DocBook exporter if you are not careful!</para>
10911</warning>
10912#+END_DOCBOOK
10913@end example
10914
10915@node Recursive sections, Tables in DocBook export, Quoting DocBook code, DocBook export
10916@subsection Recursive sections
10917@cindex DocBook recursive sections
10918
10919DocBook exporter exports Org files as articles using the @code{article}
1df7defd 10920element in DocBook. Recursive sections, i.e., @code{section} elements, are
c8d0cf5c
CD
10921used in exported articles. Top level headlines in Org files are exported as
10922top level sections, and lower level headlines are exported as nested
10923sections. The entire structure of Org files will be exported completely, no
10924matter how many nested levels of headlines there are.
10925
10926Using recursive sections makes it easy to port and reuse exported DocBook
10927code in other DocBook document types like @code{book} or @code{set}.
10928
10929@node Tables in DocBook export, Images in DocBook export, Recursive sections, DocBook export
10930@subsection Tables in DocBook export
10931@cindex tables, in DocBook export
10932
10933Tables in Org files are exported as HTML tables, which have been supported since
10934DocBook V4.3.
10935
10936If a table does not have a caption, an informal table is generated using the
10937@code{informaltable} element; otherwise, a formal table will be generated
10938using the @code{table} element.
10939
10940@node Images in DocBook export, Special characters, Tables in DocBook export, DocBook export
10941@subsection Images in DocBook export
10942@cindex images, inline in DocBook
10943@cindex inlining images in DocBook
10944
10945Images that are linked to without a description part in the link, like
10946@samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]}, will be exported to DocBook
10947using @code{mediaobject} elements. Each @code{mediaobject} element contains
10948an @code{imageobject} that wraps an @code{imagedata} element. If you have
a351880d 10949specified a caption for an image as described in @ref{Images and tables}, a
c8d0cf5c
CD
10950@code{caption} element will be added in @code{mediaobject}. If a label is
10951also specified, it will be exported as an @code{xml:id} attribute of the
10952@code{mediaobject} element.
10953
10954@vindex org-export-docbook-default-image-attributes
10955Image attributes supported by the @code{imagedata} element, like @code{align}
10956or @code{width}, can be specified in two ways: you can either customize
10957variable @code{org-export-docbook-default-image-attributes} or use the
10958@code{#+ATTR_DOCBOOK:} line. Attributes specified in variable
10959@code{org-export-docbook-default-image-attributes} are applied to all inline
86fbb8ca 10960images in the Org file to be exported (unless they are overridden by image
c8d0cf5c
CD
10961attributes specified in @code{#+ATTR_DOCBOOK:} lines).
10962
10963The @code{#+ATTR_DOCBOOK:} line can be used to specify additional image
86fbb8ca 10964attributes or override default image attributes for individual images. If
c8d0cf5c
CD
10965the same attribute appears in both the @code{#+ATTR_DOCBOOK:} line and
10966variable @code{org-export-docbook-default-image-attributes}, the former
86fbb8ca 10967takes precedence. Here is an example about how image attributes can be
c8d0cf5c
CD
10968set:
10969
10970@cindex #+CAPTION
10971@cindex #+LABEL
10972@cindex #+ATTR_DOCBOOK
10973@example
e66ba1df 10974#+CAPTION: The logo of Org mode
c8d0cf5c
CD
10975#+LABEL: unicorn-svg
10976#+ATTR_DOCBOOK: scalefit="1" width="100%" depth="100%"
10977[[./img/org-mode-unicorn.svg]]
10978@end example
10979
10980@vindex org-export-docbook-inline-image-extensions
10981By default, DocBook exporter recognizes the following image file types:
10982@file{jpeg}, @file{jpg}, @file{png}, @file{gif}, and @file{svg}. You can
10983customize variable @code{org-export-docbook-inline-image-extensions} to add
10984more types to this list as long as DocBook supports them.
10985
10986@node Special characters, , Images in DocBook export, DocBook export
10987@subsection Special characters in DocBook export
10988@cindex Special characters in DocBook export
10989
10990@vindex org-export-docbook-doctype
86fbb8ca 10991@vindex org-entities
c8d0cf5c
CD
10992Special characters that are written in @TeX{}-like syntax, such as @code{\alpha},
10993@code{\Gamma}, and @code{\Zeta}, are supported by DocBook exporter. These
10994characters are rewritten to XML entities, like @code{&alpha;},
10995@code{&Gamma;}, and @code{&Zeta;}, based on the list saved in variable
86fbb8ca 10996@code{org-entities}. As long as the generated DocBook file includes the
c8d0cf5c
CD
10997corresponding entities, these special characters are recognized.
10998
10999You can customize variable @code{org-export-docbook-doctype} to include the
11000entities you need. For example, you can set variable
11001@code{org-export-docbook-doctype} to the following value to recognize all
11002special characters included in XHTML entities:
11003
11004@example
11005"<!DOCTYPE article [
11006<!ENTITY % xhtml1-symbol PUBLIC
11007\"-//W3C//ENTITIES Symbol for HTML//EN//XML\"
11008\"http://www.w3.org/2003/entities/2007/xhtml1-symbol.ent\"
11009>
11010%xhtml1-symbol;
11011]>
11012"
11013@end example
11014
ce57c2fe
BG
11015@c begin opendocument
11016
e66ba1df
BG
11017@node OpenDocument Text export, TaskJuggler export, DocBook export, Exporting
11018@section OpenDocument Text export
ce57c2fe 11019@cindex K, Jambunathan
e66ba1df
BG
11020@cindex ODT
11021@cindex OpenDocument
11022@cindex export, OpenDocument
11023@cindex LibreOffice
11024@cindex org-odt.el
11025@cindex org-modules
11026
8223b1d2 11027Org Mode@footnote{Versions 7.8 or later} supports export to OpenDocument Text
153ae947 11028(ODT) format using the @file{org-odt.el} module. Documents created
e66ba1df
BG
11029by this exporter use the @cite{OpenDocument-v1.2
11030specification}@footnote{@url{http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html,
11031Open Document Format for Office Applications (OpenDocument) Version 1.2}} and
11032are compatible with LibreOffice 3.4.
ce57c2fe
BG
11033
11034@menu
153ae947
BG
11035* Pre-requisites for ODT export:: What packages ODT exporter relies on
11036* ODT export commands:: How to invoke ODT export
11037* Extending ODT export:: How to produce @samp{doc}, @samp{pdf} files
e66ba1df 11038* Applying custom styles:: How to apply custom styles to the output
153ae947
BG
11039* Links in ODT export:: How links will be interpreted and formatted
11040* Tables in ODT export:: How Tables are exported
11041* Images in ODT export:: How to insert images
11042* Math formatting in ODT export:: How @LaTeX{} fragments are formatted
11043* Labels and captions in ODT export:: How captions are rendered
11044* Literal examples in ODT export:: How source and example blocks are formatted
11045* Advanced topics in ODT export:: Read this if you are a power user
ce57c2fe
BG
11046@end menu
11047
153ae947
BG
11048@node Pre-requisites for ODT export, ODT export commands, OpenDocument Text export, OpenDocument Text export
11049@subsection Pre-requisites for ODT export
e66ba1df 11050@cindex zip
153ae947 11051The ODT exporter relies on the @file{zip} program to create the final
e66ba1df
BG
11052output. Check the availability of this program before proceeding further.
11053
153ae947
BG
11054@node ODT export commands, Extending ODT export, Pre-requisites for ODT export, OpenDocument Text export
11055@subsection ODT export commands
e66ba1df 11056
153ae947 11057@subsubheading Exporting to ODT
e66ba1df 11058@anchor{x-export-to-odt}
ce57c2fe
BG
11059
11060@cindex region, active
11061@cindex active region
11062@cindex transient-mark-mode
11063@table @kbd
11064@orgcmd{C-c C-e o,org-export-as-odt}
11065@cindex property EXPORT_FILE_NAME
e66ba1df
BG
11066
11067Export as OpenDocument Text file.
153ae947 11068
e66ba1df
BG
11069@vindex org-export-odt-preferred-output-format
11070If @code{org-export-odt-preferred-output-format} is specified, automatically
153ae947
BG
11071convert the exported file to that format. @xref{x-export-to-other-formats, ,
11072Automatically exporting to other formats}.
e66ba1df 11073
153ae947 11074For an Org file @file{myfile.org}, the ODT file will be
e66ba1df
BG
11075@file{myfile.odt}. The file will be overwritten without warning. If there
11076is an active region,@footnote{This requires @code{transient-mark-mode} to be
11077turned on} only the region will be exported. If the selected region is a
11078single tree,@footnote{To select the current subtree, use @kbd{C-c @@}} the
11079tree head will become the document title. If the tree head entry has, or
11080inherits, an @code{EXPORT_FILE_NAME} property, that name will be used for the
11081export.
11082
ce57c2fe 11083@orgcmd{C-c C-e O,org-export-as-odt-and-open}
8223b1d2 11084Export as an OpenDocument Text file and open the resulting file.
153ae947 11085
e66ba1df
BG
11086@vindex org-export-odt-preferred-output-format
11087If @code{org-export-odt-preferred-output-format} is specified, open the
153ae947
BG
11088converted file instead. @xref{x-export-to-other-formats, , Automatically
11089exporting to other formats}.
ce57c2fe
BG
11090@end table
11091
153ae947
BG
11092@node Extending ODT export, Applying custom styles, ODT export commands, OpenDocument Text export
11093@subsection Extending ODT export
11094
11095The ODT exporter can interface with a variety of document
11096converters and supports popular converters out of the box. As a result, you
11097can use it to export to formats like @samp{doc} or convert a document from
11098one format (say @samp{csv}) to another format (say @samp{ods} or @samp{xls}).
11099
11100@cindex @file{unoconv}
11101@cindex LibreOffice
11102If you have a working installation of LibreOffice, a document converter is
11103pre-configured for you and you can use it right away. If you would like to
11104use @file{unoconv} as your preferred converter, customize the variable
801a68c8
BG
11105@code{org-export-odt-convert-process} to point to @code{unoconv}. You can
11106also use your own favorite converter or tweak the default settings of the
11107@file{LibreOffice} and @samp{unoconv} converters. @xref{Configuring a
11108document converter}.
153ae947
BG
11109
11110@subsubsection Automatically exporting to other formats
e66ba1df 11111@anchor{x-export-to-other-formats}
153ae947 11112
e66ba1df 11113@vindex org-export-odt-preferred-output-format
153ae947
BG
11114Very often, you will find yourself exporting to ODT format, only to
11115immediately save the exported document to other formats like @samp{doc},
11116@samp{docx}, @samp{rtf}, @samp{pdf} etc. In such cases, you can specify your
e66ba1df
BG
11117preferred output format by customizing the variable
11118@code{org-export-odt-preferred-output-format}. This way, the export commands
153ae947
BG
11119(@pxref{x-export-to-odt,,Exporting to ODT}) can be extended to export to a
11120format that is of immediate interest to you.
11121
11122@subsubsection Converting between document formats
11123@anchor{x-convert-to-other-formats}
11124
11125There are many document converters in the wild which support conversion to
11126and from various file formats, including, but not limited to the
11127ODT format. LibreOffice converter, mentioned above, is one such
11128converter. Once a converter is configured, you can interact with it using
11129the following command.
e66ba1df 11130
153ae947
BG
11131@vindex org-export-odt-convert
11132@table @kbd
11133
11134@item M-x org-export-odt-convert
11135Convert an existing document from one format to another. With a prefix
11136argument, also open the newly produced file.
11137@end table
11138
11139@node Applying custom styles, Links in ODT export, Extending ODT export, OpenDocument Text export
e66ba1df 11140@subsection Applying custom styles
ce57c2fe
BG
11141@cindex styles, custom
11142@cindex template, custom
11143
153ae947 11144The ODT exporter ships with a set of OpenDocument styles
e66ba1df
BG
11145(@pxref{Working with OpenDocument style files}) that ensure a well-formatted
11146output. These factory styles, however, may not cater to your specific
11147tastes. To customize the output, you can either modify the above styles
11148files directly, or generate the required styles using an application like
11149LibreOffice. The latter method is suitable for expert and non-expert
11150users alike, and is described here.
ce57c2fe 11151
e66ba1df 11152@subsubsection Applying custom styles - the easy way
ce57c2fe
BG
11153
11154@enumerate
11155@item
e66ba1df 11156Create a sample @file{example.org} file with the below settings and export it
153ae947 11157to ODT format.
e66ba1df
BG
11158
11159@example
11160#+OPTIONS: H:10 num:t
11161@end example
11162
11163@item
11164Open the above @file{example.odt} using LibreOffice. Use the @file{Stylist}
11165to locate the target styles - these typically have the @samp{Org} prefix -
11166and modify those to your taste. Save the modified file either as an
11167OpenDocument Text (@file{.odt}) or OpenDocument Template (@file{.ott}) file.
11168
ce57c2fe 11169@item
e66ba1df
BG
11170@cindex #+ODT_STYLES_FILE
11171@vindex org-export-odt-styles-file
11172Customize the variable @code{org-export-odt-styles-file} and point it to the
11173newly created file. For additional configuration options
11174@pxref{x-overriding-factory-styles,,Overriding factory styles}.
11175
11176If you would like to choose a style on a per-file basis, you can use the
11177@code{#+ODT_STYLES_FILE} option. A typical setting will look like
11178
11179@example
11180#+ODT_STYLES_FILE: "/path/to/example.ott"
11181@end example
11182
11183or
11184
11185@example
11186#+ODT_STYLES_FILE: ("/path/to/file.ott" ("styles.xml" "image/hdr.png"))
11187@end example
11188
ce57c2fe
BG
11189@end enumerate
11190
e66ba1df
BG
11191@subsubsection Using third-party styles and templates
11192
11193You can use third-party styles and templates for customizing your output.
11194This will produce the desired output only if the template provides all
11195style names that the @samp{ODT} exporter relies on. Unless this condition is
11196met, the output is going to be less than satisfactory. So it is highly
11197recommended that you only work with templates that are directly derived from
11198the factory settings.
11199
153ae947
BG
11200@node Links in ODT export, Tables in ODT export, Applying custom styles, OpenDocument Text export
11201@subsection Links in ODT export
e66ba1df
BG
11202@cindex tables, in DocBook export
11203
153ae947
BG
11204ODT exporter creates native cross-references for internal links. It creates
11205Internet-style links for all other links.
11206
11207A link with no description and destined to a regular (un-itemized) outline
11208heading is replaced with a cross-reference and section number of the heading.
e66ba1df 11209
153ae947 11210A @samp{\ref@{label@}}-style reference to an image, table etc. is replaced
7bd20f91 11211with a cross-reference and sequence number of the labeled entity.
153ae947
BG
11212@xref{Labels and captions in ODT export}.
11213
11214@node Tables in ODT export, Images in ODT export, Links in ODT export, OpenDocument Text export
11215@subsection Tables in ODT export
e66ba1df 11216@cindex tables, in DocBook export
ce57c2fe 11217
e66ba1df
BG
11218Export of native Org mode tables (@pxref{Tables}) and simple @file{table.el}
11219tables is supported. However, export of complex @file{table.el} tables -
11220tables that have column or row spans - is not supported. Such tables are
11221stripped from the exported document.
ce57c2fe 11222
153ae947
BG
11223By default, a table is exported with top and bottom frames and with rules
11224separating row and column groups (@pxref{Column groups}). Furthermore, all
11225tables are typeset to occupy the same width. If the table specifies
11226alignment and relative width for its columns (@pxref{Column width and
11227alignment}) then these are honored on export.@footnote{The column widths are
11228interpreted as weighted ratios with the default weight being 1}
e66ba1df
BG
11229
11230@cindex #+ATTR_ODT
153ae947
BG
11231You can control the width of the table by specifying @code{:rel-width}
11232property using an @code{#+ATTR_ODT} line.
11233
11234For example, consider the following table which makes use of all the rules
7bd20f91 11235mentioned above.
153ae947
BG
11236
11237@example
11238#+ATTR_ODT: :rel-width 50
11239| Area/Month | Jan | Feb | Mar | Sum |
11240|---------------+-------+-------+-------+-------|
11241| / | < | | | < |
11242| <l13> | <r5> | <r5> | <r5> | <r6> |
11243| North America | 1 | 21 | 926 | 948 |
11244| Middle East | 6 | 75 | 844 | 925 |
11245| Asia Pacific | 9 | 27 | 790 | 826 |
11246|---------------+-------+-------+-------+-------|
11247| Sum | 16 | 123 | 2560 | 2699 |
11248@end example
11249
11250On export, the table will occupy 50% of text area. The columns will be sized
11251(roughly) in the ratio of 13:5:5:5:6. The first column will be left-aligned
11252and rest of the columns will be right-aligned. There will be vertical rules
11253after separating the header and last columns from other columns. There will
11254be horizontal rules separating the header and last rows from other rows.
11255
11256If you are not satisfied with the above formatting options, you can create
11257custom table styles and associate them with a table using the
11258@code{#+ATTR_ODT} line. @xref{Customizing tables in ODT export}.
e66ba1df 11259
153ae947
BG
11260@node Images in ODT export, Math formatting in ODT export, Tables in ODT export, OpenDocument Text export
11261@subsection Images in ODT export
11262@cindex images, embedding in ODT
11263@cindex embedding images in ODT
e66ba1df
BG
11264
11265@subsubheading Embedding images
11266You can embed images within the exported document by providing a link to the
11267desired image file with no link description. For example, to embed
11268@samp{img.png} do either of the following:
11269
11270@example
11271[[file:img.png]]
11272@end example
11273
11274@example
11275[[./img.png]]
11276@end example
11277
11278@subsubheading Embedding clickable images
11279You can create clickable images by providing a link whose description is a
11280link to an image file. For example, to embed a image
11281@file{org-mode-unicorn.png} which when clicked jumps to
11282@uref{http://Orgmode.org} website, do the following
11283
11284@example
11285[[http://orgmode.org][./org-mode-unicorn.png]]
11286@end example
11287
11288@subsubheading Sizing and scaling of embedded images
11289
153ae947 11290@cindex #+ATTR_ODT
e66ba1df
BG
11291You can control the size and scale of the embedded images using the
11292@code{#+ATTR_ODT} attribute.
11293
153ae947 11294@cindex identify, ImageMagick
e66ba1df 11295@vindex org-export-odt-pixels-per-inch
153ae947
BG
11296The exporter specifies the desired size of the image in the final document in
11297units of centimeters. In order to scale the embedded images, the exporter
11298queries for pixel dimensions of the images using one of a) ImageMagick's
11299@file{identify} program or b) Emacs `create-image' and `image-size'
11300APIs.@footnote{Use of @file{ImageMagick} is only desirable. However, if you
11301routinely produce documents that have large images or you export your Org
11302files that has images using a Emacs batch script, then the use of
11303@file{ImageMagick} is mandatory.} The pixel dimensions are subsequently
11304converted in to units of centimeters using
e66ba1df
BG
11305@code{org-export-odt-pixels-per-inch}. The default value of this variable is
11306set to @code{display-pixels-per-inch}. You can tweak this variable to
11307achieve the best results.
11308
11309The examples below illustrate the various possibilities.
11310
11311@table @asis
e66ba1df
BG
11312@item Explicitly size the image
11313To embed @file{img.png} as a 10 cm x 10 cm image, do the following:
11314
11315@example
11316#+ATTR_ODT: :width 10 :height 10
11317[[./img.png]]
11318@end example
11319
11320@item Scale the image
11321To embed @file{img.png} at half its size, do the following:
11322
11323@example
11324#+ATTR_ODT: :scale 0.5
11325[[./img.png]]
11326@end example
11327
11328@item Scale the image to a specific width
11329To embed @file{img.png} with a width of 10 cm while retaining the original
11330height:width ratio, do the following:
11331
11332@example
11333#+ATTR_ODT: :width 10
11334[[./img.png]]
11335@end example
11336
11337@item Scale the image to a specific height
11338To embed @file{img.png} with a height of 10 cm while retaining the original
11339height:width ratio, do the following
11340
11341@example
11342#+ATTR_ODT: :height 10
11343[[./img.png]]
11344@end example
11345@end table
11346
153ae947
BG
11347@subsubheading Anchoring of images
11348
11349@cindex #+ATTR_ODT
11350You can control the manner in which an image is anchored by setting the
11351@code{:anchor} property of it's @code{#+ATTR_ODT} line. You can specify one
11352of the the following three values for the @code{:anchor} property -
11353@samp{"as-char"}, @samp{"paragraph"} and @samp{"page"}.
11354
11355To create an image that is anchored to a page, do the following:
11356@example
11357#+ATTR_ODT: :anchor "page"
11358[[./img.png]]
11359@end example
11360
11361@node Math formatting in ODT export, Labels and captions in ODT export, Images in ODT export, OpenDocument Text export
11362@subsection Math formatting in ODT export
e66ba1df 11363
153ae947 11364The ODT exporter has special support for handling math.
e66ba1df
BG
11365
11366@menu
11367* Working with @LaTeX{} math snippets:: How to embed @LaTeX{} math fragments
11368* Working with MathML or OpenDocument formula files:: How to embed equations in native format
11369@end menu
11370
153ae947 11371@node Working with @LaTeX{} math snippets, Working with MathML or OpenDocument formula files, Math formatting in ODT export, Math formatting in ODT export
e66ba1df
BG
11372@subsubsection Working with @LaTeX{} math snippets
11373
11374@LaTeX{} math snippets (@pxref{@LaTeX{} fragments}) can be embedded in the ODT
11375document in one of the following ways:
11376
11377@cindex MathML
11378@enumerate
11379@item MathML
11380
11381This option is activated on a per-file basis with
11382
11383@example
11384#+OPTIONS: LaTeX:t
11385@end example
11386
11387With this option, @LaTeX{} fragments are first converted into MathML
11388fragments using an external @LaTeX{}-to-MathML converter program. The
11389resulting MathML fragments are then embedded as an OpenDocument Formula in
11390the exported document.
11391
11392@vindex org-latex-to-mathml-convert-command
11393@vindex org-latex-to-mathml-jar-file
11394
11395You can specify the @LaTeX{}-to-MathML converter by customizing the variables
11396@code{org-latex-to-mathml-convert-command} and
11397@code{org-latex-to-mathml-jar-file}.
11398
11399If you prefer to use @file{MathToWeb}@footnote{See
11400@uref{http://www.mathtoweb.com/cgi-bin/mathtoweb_home.pl, MathToWeb}} as your
11401converter, you can configure the above variables as shown below.
11402
11403@lisp
11404(setq org-latex-to-mathml-convert-command
11405 "java -jar %j -unicode -force -df %o %I"
11406 org-latex-to-mathml-jar-file
11407 "/path/to/mathtoweb.jar")
11408@end lisp
11409
11410You can use the following commands to quickly verify the reliability of
11411the @LaTeX{}-to-MathML converter.
11412
11413@table @kbd
11414
11415@item M-x org-export-as-odf
8223b1d2 11416Convert a @LaTeX{} math snippet to an OpenDocument formula (@file{.odf}) file.
e66ba1df
BG
11417
11418@item M-x org-export-as-odf-and-open
8223b1d2
BG
11419Convert a @LaTeX{} math snippet to an OpenDocument formula (@file{.odf}) file
11420and open the formula file with the system-registered application.
e66ba1df
BG
11421@end table
11422
11423@cindex dvipng
11424@item PNG images
11425
11426This option is activated on a per-file basis with
11427
11428@example
11429#+OPTIONS: LaTeX:dvipng
11430@end example
11431
11432With this option, @LaTeX{} fragments are processed into PNG images and the
11433resulting images are embedded in the exported document. This method requires
11434that the @file{dvipng} program be available on your system.
11435@end enumerate
11436
153ae947 11437@node Working with MathML or OpenDocument formula files, , Working with @LaTeX{} math snippets, Math formatting in ODT export
e66ba1df
BG
11438@subsubsection Working with MathML or OpenDocument formula files
11439
11440For various reasons, you may find embedding @LaTeX{} math snippets in an
153ae947 11441ODT document less than reliable. In that case, you can embed a
801a68c8 11442math equation by linking to its MathML (@file{.mml}) source or its
e66ba1df
BG
11443OpenDocument formula (@file{.odf}) file as shown below:
11444
11445@example
11446[[./equation.mml]]
11447@end example
11448
11449or
11450
11451@example
11452[[./equation.odf]]
11453@end example
11454
153ae947
BG
11455@node Labels and captions in ODT export, Literal examples in ODT export, Math formatting in ODT export, OpenDocument Text export
11456@subsection Labels and captions in ODT export
e66ba1df 11457
153ae947
BG
11458You can label and caption various category of objects - an inline image, a
11459table, a @LaTeX{} fragment or a Math formula - using @code{#+LABEL} and
11460@code{#+CAPTION} lines. @xref{Images and tables}. ODT exporter enumerates
7bd20f91 11461each labeled or captioned object of a given category separately. As a
153ae947
BG
11462result, each such object is assigned a sequence number based on order of it's
11463appearance in the Org file.
e66ba1df 11464
153ae947
BG
11465In the exported document, a user-provided caption is augmented with the
11466category and sequence number. Consider the following inline image in an Org
11467file.
11468
11469@example
11470#+CAPTION: Bell curve
11471#+LABEL: fig:SED-HR4049
11472[[./img/a.png]]
11473@end example
e66ba1df 11474
153ae947 11475It could be rendered as shown below in the exported document.
e66ba1df 11476
153ae947
BG
11477@example
11478Figure 2: Bell curve
11479@end example
11480
11481@vindex org-export-odt-category-strings
11482You can modify the category component of the caption by customizing the
11483variable @code{org-export-odt-category-strings}. For example, to tag all
11484embedded images with the string @samp{Illustration} (instead of the default
11485@samp{Figure}) use the following setting.
11486
11487@lisp
11488(setq org-export-odt-category-strings
11489 '(("en" "Table" "Illustration" "Equation" "Equation")))
11490@end lisp
e66ba1df 11491
153ae947
BG
11492With this, previous image will be captioned as below in the exported
11493document.
e66ba1df 11494
153ae947
BG
11495@example
11496Illustration 2: Bell curve
11497@end example
11498
11499@node Literal examples in ODT export, Advanced topics in ODT export, Labels and captions in ODT export, OpenDocument Text export
11500@subsection Literal examples in ODT export
e66ba1df 11501
153ae947
BG
11502Export of literal examples (@pxref{Literal examples}) with full fontification
11503is supported. Internally, the exporter relies on @file{htmlfontify.el} to
11504generate all style definitions needed for a fancy listing.@footnote{Your
801a68c8 11505@file{htmlfontify.el} library must at least be at Emacs 24.1 levels for
153ae947
BG
11506fontification to be turned on.} The auto-generated styles have @samp{OrgSrc}
11507as prefix and inherit their color from the faces used by Emacs
11508@code{font-lock} library for the source language.
e66ba1df 11509
153ae947
BG
11510@vindex org-export-odt-fontify-srcblocks
11511If you prefer to use your own custom styles for fontification, you can do so
11512by customizing the variable
11513@code{org-export-odt-create-custom-styles-for-srcblocks}.
11514
11515@vindex org-export-odt-create-custom-styles-for-srcblocks
11516You can turn off fontification of literal examples by customizing the
11517variable @code{org-export-odt-fontify-srcblocks}.
11518
11519@node Advanced topics in ODT export, , Literal examples in ODT export, OpenDocument Text export
11520@subsection Advanced topics in ODT export
11521
11522If you rely heavily on ODT export, you may want to exploit the full
e66ba1df
BG
11523set of features that the exporter offers. This section describes features
11524that would be of interest to power users.
11525
11526@menu
153ae947 11527* Configuring a document converter:: How to register a document converter
e66ba1df
BG
11528* Working with OpenDocument style files:: Explore the internals
11529* Creating one-off styles:: How to produce custom highlighting etc
153ae947 11530* Customizing tables in ODT export:: How to define and use Table templates
e66ba1df
BG
11531* Validating OpenDocument XML:: How to debug corrupt OpenDocument files
11532@end menu
11533
153ae947
BG
11534@node Configuring a document converter, Working with OpenDocument style files, Advanced topics in ODT export, Advanced topics in ODT export
11535@subsubsection Configuring a document converter
ce57c2fe 11536@cindex convert
153ae947 11537@cindex doc, docx, rtf
e66ba1df 11538@cindex converter
ce57c2fe 11539
153ae947
BG
11540The ODT exporter can work with popular converters with little or no
11541extra configuration from your side. @xref{Extending ODT export}.
11542If you are using a converter that is not supported by default or if you would
11543like to tweak the default converter settings, proceed as below.
e66ba1df
BG
11544
11545@enumerate
11546@item Register the converter
11547
11548@vindex org-export-odt-convert-processes
11549Name your converter and add it to the list of known converters by customizing
11550the variable @code{org-export-odt-convert-processes}. Also specify how the
11551converter can be invoked via command-line to effect the conversion.
11552
11553@item Configure its capabilities
ce57c2fe 11554
801a68c8 11555@vindex org-export-odt-convert-capabilities
e66ba1df 11556@anchor{x-odt-converter-capabilities}
e66ba1df
BG
11557Specify the set of formats the converter can handle by customizing the
11558variable @code{org-export-odt-convert-capabilities}. Use the default value
11559for this variable as a guide for configuring your converter. As suggested by
11560the default setting, you can specify the full set of formats supported by the
11561converter and not limit yourself to specifying formats that are related to
11562just the OpenDocument Text format.
11563
11564@item Choose the converter
11565
11566@vindex org-export-odt-convert-process
11567Select the newly added converter as the preferred one by customizing the
11568variable @code{org-export-odt-convert-process}.
11569@end enumerate
11570
153ae947 11571@node Working with OpenDocument style files, Creating one-off styles, Configuring a document converter, Advanced topics in ODT export
e66ba1df
BG
11572@subsubsection Working with OpenDocument style files
11573@cindex styles, custom
11574@cindex template, custom
ce57c2fe 11575
153ae947 11576This section explores the internals of the ODT exporter and the
e66ba1df
BG
11577means by which it produces styled documents. Read this section if you are
11578interested in exploring the automatic and custom OpenDocument styles used by
11579the exporter.
11580
11581@anchor{x-factory-styles}
11582@subsubheading Factory styles
11583
153ae947 11584The ODT exporter relies on two files for generating its output.
e66ba1df
BG
11585These files are bundled with the distribution under the directory pointed to
11586by the variable @code{org-odt-styles-dir}. The two files are:
11587
11588@itemize
11589@anchor{x-orgodtstyles-xml}
11590@item
11591@file{OrgOdtStyles.xml}
11592
11593This file contributes to the @file{styles.xml} file of the final @samp{ODT}
11594document. This file gets modified for the following purposes:
11595@enumerate
11596
11597@item
11598To control outline numbering based on user settings.
11599
11600@item
11601To add styles generated by @file{htmlfontify.el} for fontification of code
11602blocks.
11603@end enumerate
11604
11605@anchor{x-orgodtcontenttemplate-xml}
11606@item
11607@file{OrgOdtContentTemplate.xml}
11608
11609This file contributes to the @file{content.xml} file of the final @samp{ODT}
11610document. The contents of the Org outline are inserted between the
11611@samp{<office:text>}@dots{}@samp{</office:text>} elements of this file.
11612
11613Apart from serving as a template file for the final @file{content.xml}, the
11614file serves the following purposes:
11615@enumerate
11616
11617@item
11618It contains automatic styles for formatting of tables which are referenced by
11619the exporter.
11620
11621@item
11622It contains @samp{<text:sequence-decl>}@dots{}@samp{</text:sequence-decl>}
11623elements that control how various entities - tables, images, equations etc -
11624are numbered.
11625@end enumerate
11626@end itemize
11627
11628@anchor{x-overriding-factory-styles}
11629@subsubheading Overriding factory styles
153ae947 11630The following two variables control the location from which the ODT
e66ba1df
BG
11631exporter picks up the custom styles and content template files. You can
11632customize these variables to override the factory styles used by the
11633exporter.
11634
11635@itemize
11636@anchor{x-org-export-odt-styles-file}
11637@item
11638@code{org-export-odt-styles-file}
11639
11640Use this variable to specify the @file{styles.xml} that will be used in the
11641final output. You can specify one of the following values:
11642
11643@enumerate
11644@item A @file{styles.xml} file
11645
11646Use this file instead of the default @file{styles.xml}
11647
11648@item A @file{.odt} or @file{.ott} file
11649
11650Use the @file{styles.xml} contained in the specified OpenDocument Text or
11651Template file
11652
11653@item A @file{.odt} or @file{.ott} file and a subset of files contained within them
11654
11655Use the @file{styles.xml} contained in the specified OpenDocument Text or
11656Template file. Additionally extract the specified member files and embed
11657those within the final @samp{ODT} document.
11658
11659Use this option if the @file{styles.xml} file references additional files
11660like header and footer images.
11661
11662@item @code{nil}
11663
11664Use the default @file{styles.xml}
11665@end enumerate
11666
11667@anchor{x-org-export-odt-content-template-file}
11668@item
11669@code{org-export-odt-content-template-file}
11670
11671Use this variable to specify the blank @file{content.xml} that will be used
11672in the final output.
11673@end itemize
11674
153ae947 11675@node Creating one-off styles, Customizing tables in ODT export, Working with OpenDocument style files, Advanced topics in ODT export
e66ba1df
BG
11676@subsubsection Creating one-off styles
11677
11678There are times when you would want one-off formatting in the exported
11679document. You can achieve this by embedding raw OpenDocument XML in the Org
11680file. The use of this feature is better illustrated with couple of examples.
11681
11682@enumerate
11683@item Embedding ODT tags as part of regular text
11684
11685You can include simple OpenDocument tags by prefixing them with
11686@samp{@@}. For example, to highlight a region of text do the following:
11687
11688@example
11689@@<text:span text:style-name="Highlight">This is a
11690highlighted text@@</text:span>. But this is a
11691regular text.
11692@end example
11693
11694@strong{Hint:} To see the above example in action, edit your
801a68c8 11695@file{styles.xml} (@pxref{x-orgodtstyles-xml,,Factory styles}) and add a
e66ba1df
BG
11696custom @samp{Highlight} style as shown below.
11697
11698@example
11699<style:style style:name="Highlight" style:family="text">
11700 <style:text-properties fo:background-color="#ff0000"/>
11701</style:style>
11702@end example
11703
11704@item Embedding a one-line OpenDocument XML
11705
11706You can add a simple OpenDocument one-liner using the @code{#+ODT:}
11707directive. For example, to force a page break do the following:
11708
11709@example
11710#+ODT: <text:p text:style-name="PageBreak"/>
11711@end example
11712
11713@strong{Hint:} To see the above example in action, edit your
801a68c8 11714@file{styles.xml} (@pxref{x-orgodtstyles-xml,,Factory styles}) and add a
e66ba1df
BG
11715custom @samp{PageBreak} style as shown below.
11716
11717@example
11718<style:style style:name="PageBreak" style:family="paragraph"
11719 style:parent-style-name="Text_20_body">
11720 <style:paragraph-properties fo:break-before="page"/>
11721</style:style>
11722@end example
11723
11724@item Embedding a block of OpenDocument XML
11725
11726You can add a large block of OpenDocument XML using the
11727@code{#+BEGIN_ODT}@dots{}@code{#+END_ODT} construct.
11728
11729For example, to create a one-off paragraph that uses bold text, do the
11730following:
11731
11732@example
11733#+BEGIN_ODT
11734<text:p text:style-name="Text_20_body_20_bold">
11735This paragraph is specially formatted and uses bold text.
11736</text:p>
11737#+END_ODT
11738@end example
11739
11740@end enumerate
11741
153ae947
BG
11742@node Customizing tables in ODT export, Validating OpenDocument XML, Creating one-off styles, Advanced topics in ODT export
11743@subsubsection Customizing tables in ODT export
e66ba1df
BG
11744@cindex tables, in ODT export
11745
11746@cindex #+ATTR_ODT
11747You can override the default formatting of the table by specifying a custom
11748table style with the @code{#+ATTR_ODT} line. For a discussion on default
153ae947 11749formatting of tables @pxref{Tables in ODT export}.
e66ba1df
BG
11750
11751This feature closely mimics the way table templates are defined in the
11752OpenDocument-v1.2
11753specification.@footnote{@url{http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html,
11754OpenDocument-v1.2 Specification}}
11755
11756
11757
11758@subsubheading Custom table styles - an illustration
11759
11760To have a quick preview of this feature, install the below setting and export
11761the table that follows.
11762
11763@lisp
11764(setq org-export-odt-table-styles
11765 (append org-export-odt-table-styles
11766 '(("TableWithHeaderRowAndColumn" "Custom"
11767 ((use-first-row-styles . t)
11768 (use-first-column-styles . t)))
11769 ("TableWithFirstRowandLastRow" "Custom"
11770 ((use-first-row-styles . t)
11771 (use-last-row-styles . t))))))
11772@end lisp
11773
11774@example
153ae947 11775#+ATTR_ODT: :style "TableWithHeaderRowAndColumn"
e66ba1df
BG
11776| Name | Phone | Age |
11777| Peter | 1234 | 17 |
11778| Anna | 4321 | 25 |
11779@end example
11780
11781In the above example, you used a template named @samp{Custom} and installed
11782two table styles with the names @samp{TableWithHeaderRowAndColumn} and
11783@samp{TableWithFirstRowandLastRow}. (@strong{Important:} The OpenDocument
11784styles needed for producing the above template have been pre-defined for you.
11785These styles are available under the section marked @samp{Custom Table
11786Template} in @file{OrgOdtContentTemplate.xml}
11787(@pxref{x-orgodtcontenttemplate-xml,,Factory styles}). If you need
11788additional templates you have to define these styles yourselves.
11789
11790@subsubheading Custom table styles - the nitty-gritty
11791To use this feature proceed as follows:
11792
11793@enumerate
11794@item
11795Create a table template@footnote{See the @code{<table:table-template>}
11796element of the OpenDocument-v1.2 specification}
11797
11798A table template is nothing but a set of @samp{table-cell} and
11799@samp{paragraph} styles for each of the following table cell categories:
11800
11801@itemize @minus
11802@item Body
11803@item First column
11804@item Last column
11805@item First row
11806@item Last row
11807@item Even row
11808@item Odd row
11809@item Even column
11810@item Odd Column
11811@end itemize
11812
11813The names for the above styles must be chosen based on the name of the table
11814template using a well-defined convention.
11815
11816The naming convention is better illustrated with an example. For a table
11817template with the name @samp{Custom}, the needed style names are listed in
11818the following table.
11819
11820@multitable {Table cell type} {CustomEvenColumnTableCell} {CustomEvenColumnTableParagraph}
11821@headitem Table cell type
11822@tab @code{table-cell} style
11823@tab @code{paragraph} style
11824@item
11825@tab
11826@tab
11827@item Body
11828@tab @samp{CustomTableCell}
11829@tab @samp{CustomTableParagraph}
11830@item First column
11831@tab @samp{CustomFirstColumnTableCell}
11832@tab @samp{CustomFirstColumnTableParagraph}
11833@item Last column
11834@tab @samp{CustomLastColumnTableCell}
11835@tab @samp{CustomLastColumnTableParagraph}
11836@item First row
11837@tab @samp{CustomFirstRowTableCell}
11838@tab @samp{CustomFirstRowTableParagraph}
11839@item Last row
11840@tab @samp{CustomLastRowTableCell}
11841@tab @samp{CustomLastRowTableParagraph}
11842@item Even row
11843@tab @samp{CustomEvenRowTableCell}
11844@tab @samp{CustomEvenRowTableParagraph}
11845@item Odd row
11846@tab @samp{CustomOddRowTableCell}
11847@tab @samp{CustomOddRowTableParagraph}
11848@item Even column
11849@tab @samp{CustomEvenColumnTableCell}
11850@tab @samp{CustomEvenColumnTableParagraph}
11851@item Odd column
11852@tab @samp{CustomOddColumnTableCell}
11853@tab @samp{CustomOddColumnTableParagraph}
11854@end multitable
11855
11856To create a table template with the name @samp{Custom}, define the above
11857styles in the
11858@code{<office:automatic-styles>}...@code{</office:automatic-styles>} element
11859of the content template file (@pxref{x-orgodtcontenttemplate-xml,,Factory
11860styles}).
11861
11862@item
11863Define a table style@footnote{See the attributes @code{table:template-name},
11864@code{table:use-first-row-styles}, @code{table:use-last-row-styles},
11865@code{table:use-first-column-styles}, @code{table:use-last-column-styles},
11866@code{table:use-banding-rows-styles}, and
11867@code{table:use-banding-column-styles} of the @code{<table:table>} element in
11868the OpenDocument-v1.2 specification}
11869
11870@vindex org-export-odt-table-styles
11871To define a table style, create an entry for the style in the variable
11872@code{org-export-odt-table-styles} and specify the following:
11873
11874@itemize @minus
11875@item the name of the table template created in step (1)
11876@item the set of cell styles in that template that are to be activated
11877@end itemize
11878
11879For example, the entry below defines two different table styles
153ae947
BG
11880@samp{TableWithHeaderRowAndColumn} and @samp{TableWithFirstRowandLastRow}
11881based on the same template @samp{Custom}. The styles achieve their intended
11882effect by selectively activating the individual cell styles in that template.
e66ba1df
BG
11883
11884@lisp
11885(setq org-export-odt-table-styles
11886 (append org-export-odt-table-styles
11887 '(("TableWithHeaderRowAndColumn" "Custom"
11888 ((use-first-row-styles . t)
11889 (use-first-column-styles . t)))
11890 ("TableWithFirstRowandLastRow" "Custom"
11891 ((use-first-row-styles . t)
11892 (use-last-row-styles . t))))))
11893@end lisp
11894
11895@item
11896Associate a table with the table style
11897
11898To do this, specify the table style created in step (2) as part of
11899the @code{ATTR_ODT} line as shown below.
11900
11901@example
153ae947 11902#+ATTR_ODT: :style "TableWithHeaderRowAndColumn"
e66ba1df
BG
11903| Name | Phone | Age |
11904| Peter | 1234 | 17 |
11905| Anna | 4321 | 25 |
11906@end example
11907@end enumerate
11908
153ae947 11909@node Validating OpenDocument XML, , Customizing tables in ODT export, Advanced topics in ODT export
e66ba1df
BG
11910@subsubsection Validating OpenDocument XML
11911
11912Occasionally, you will discover that the document created by the
153ae947 11913ODT exporter cannot be opened by your favorite application. One of
e66ba1df
BG
11914the common reasons for this is that the @file{.odt} file is corrupt. In such
11915cases, you may want to validate the document against the OpenDocument RELAX
11916NG Compact Syntax (RNC) schema.
11917
11918For de-compressing the @file{.odt} file@footnote{@file{.odt} files are
11919nothing but @samp{zip} archives}: @inforef{File Archives,,emacs}. For
11920general help with validation (and schema-sensitive editing) of XML files:
11921@inforef{Introduction,,nxml-mode}.
11922
11923@vindex org-export-odt-schema-dir
11924If you have ready access to OpenDocument @file{.rnc} files and the needed
11925schema-locating rules in a single folder, you can customize the variable
11926@code{org-export-odt-schema-dir} to point to that directory. The
153ae947 11927ODT exporter will take care of updating the
e66ba1df 11928@code{rng-schema-locating-files} for you.
ce57c2fe
BG
11929
11930@c end opendocument
11931
e66ba1df 11932@node TaskJuggler export, Freemind export, OpenDocument Text export, Exporting
86fbb8ca
CD
11933@section TaskJuggler export
11934@cindex TaskJuggler export
11935@cindex Project management
11936
11937@uref{http://www.taskjuggler.org/, TaskJuggler} is a project management tool.
11938It provides an optimizing scheduler that computes your project time lines and
11939resource assignments based on the project outline and the constraints that
11940you have provided.
11941
11942The TaskJuggler exporter is a bit different from other exporters, such as the
e66ba1df 11943@code{HTML} and @LaTeX{} exporters for example, in that it does not export all the
86fbb8ca
CD
11944nodes of a document or strictly follow the order of the nodes in the
11945document.
11946
11947Instead the TaskJuggler exporter looks for a tree that defines the tasks and
ce57c2fe 11948a optionally tree that defines the resources for this project. It then
86fbb8ca
CD
11949creates a TaskJuggler file based on these trees and the attributes defined in
11950all the nodes.
11951
11952@subsection TaskJuggler export commands
11953
11954@table @kbd
acedf35c 11955@orgcmd{C-c C-e j,org-export-as-taskjuggler}
8223b1d2 11956Export as a TaskJuggler file.
86fbb8ca 11957
acedf35c 11958@orgcmd{C-c C-e J,org-export-as-taskjuggler-and-open}
8223b1d2 11959Export as a TaskJuggler file and then open the file with TaskJugglerUI.
86fbb8ca
CD
11960@end table
11961
11962@subsection Tasks
11963
11964@vindex org-export-taskjuggler-project-tag
e66ba1df 11965Create your tasks as you usually do with Org mode. Assign efforts to each
ce57c2fe 11966task using properties (it is easiest to do this in the column view). You
86fbb8ca
CD
11967should end up with something similar to the example by Peter Jones in
11968@url{http://www.contextualdevelopment.com/static/artifacts/articles/2008/project-planning/project-planning.org}.
11969Now mark the top node of your tasks with a tag named
11970@code{:taskjuggler_project:} (or whatever you customized
ce57c2fe 11971@code{org-export-taskjuggler-project-tag} to). You are now ready to export
86fbb8ca
CD
11972the project plan with @kbd{C-c C-e J} which will export the project plan and
11973open a gantt chart in TaskJugglerUI.
11974
11975@subsection Resources
11976
11977@vindex org-export-taskjuggler-resource-tag
ce57c2fe
BG
11978Next you can define resources and assign those to work on specific tasks. You
11979can group your resources hierarchically. Tag the top node of the resources
86fbb8ca 11980with @code{:taskjuggler_resource:} (or whatever you customized
ce57c2fe 11981@code{org-export-taskjuggler-resource-tag} to). You can optionally assign an
86fbb8ca
CD
11982identifier (named @samp{resource_id}) to the resources (using the standard
11983Org properties commands, @pxref{Property syntax}) or you can let the exporter
11984generate identifiers automatically (the exporter picks the first word of the
acedf35c 11985headline as the identifier as long as it is unique---see the documentation of
ce57c2fe
BG
11986@code{org-taskjuggler-get-unique-id}). Using that identifier you can then
11987allocate resources to tasks. This is again done with the @samp{allocate}
11988property on the tasks. Do this in column view or when on the task type
86fbb8ca
CD
11989@kbd{C-c C-x p allocate @key{RET} <resource_id> @key{RET}}.
11990
11991Once the allocations are done you can again export to TaskJuggler and check
11992in the Resource Allocation Graph which person is working on what task at what
11993time.
11994
11995@subsection Export of properties
11996
1df7defd 11997The exporter also takes TODO state information into consideration, i.e., if a
86fbb8ca 11998task is marked as done it will have the corresponding attribute in
ce57c2fe 11999TaskJuggler (@samp{complete 100}). Also it will export any property on a task
86fbb8ca
CD
12000resource or resource node which is known to TaskJuggler, such as
12001@samp{limits}, @samp{vacation}, @samp{shift}, @samp{booking},
12002@samp{efficiency}, @samp{journalentry}, @samp{rate} for resources or
12003@samp{account}, @samp{start}, @samp{note}, @samp{duration}, @samp{end},
12004@samp{journalentry}, @samp{milestone}, @samp{reference}, @samp{responsible},
12005@samp{scheduling}, etc for tasks.
12006
12007@subsection Dependencies
12008
12009The exporter will handle dependencies that are defined in the tasks either
12010with the @samp{ORDERED} attribute (@pxref{TODO dependencies}), with the
acedf35c 12011@samp{BLOCKER} attribute (see @file{org-depend.el}) or alternatively with a
ce57c2fe 12012@samp{depends} attribute. Both the @samp{BLOCKER} and the @samp{depends}
86fbb8ca
CD
12013attribute can be either @samp{previous-sibling} or a reference to an
12014identifier (named @samp{task_id}) which is defined for another task in the
ce57c2fe
BG
12015project. @samp{BLOCKER} and the @samp{depends} attribute can define multiple
12016dependencies separated by either space or comma. You can also specify
12017optional attributes on the dependency by simply appending it. The following
86fbb8ca
CD
12018examples should illustrate this:
12019
12020@example
12021* Preparation
12022 :PROPERTIES:
12023 :task_id: preparation
12024 :ORDERED: t
12025 :END:
12026* Training material
12027 :PROPERTIES:
12028 :task_id: training_material
12029 :ORDERED: t
12030 :END:
12031** Markup Guidelines
12032 :PROPERTIES:
ce57c2fe 12033 :Effort: 2d
86fbb8ca
CD
12034 :END:
12035** Workflow Guidelines
12036 :PROPERTIES:
ce57c2fe 12037 :Effort: 2d
86fbb8ca
CD
12038 :END:
12039* Presentation
12040 :PROPERTIES:
ce57c2fe 12041 :Effort: 2d
86fbb8ca
CD
12042 :BLOCKER: training_material @{ gapduration 1d @} preparation
12043 :END:
12044@end example
12045
12046@subsection Reports
12047
12048@vindex org-export-taskjuggler-default-reports
1df7defd 12049TaskJuggler can produce many kinds of reports (e.g., gantt chart, resource
ce57c2fe
BG
12050allocation, etc). The user defines what kind of reports should be generated
12051for a project in the TaskJuggler file. The exporter will automatically insert
12052some default reports in the file. These defaults are defined in
12053@code{org-export-taskjuggler-default-reports}. They can be modified using
12054customize along with a number of other options. For a more complete list, see
86fbb8ca
CD
12055@kbd{M-x customize-group @key{RET} org-export-taskjuggler @key{RET}}.
12056
12057For more information and examples see the Org-taskjuggler tutorial at
ce57c2fe 12058@uref{http://orgmode.org/worg/org-tutorials/org-taskjuggler.html}.
86fbb8ca
CD
12059
12060@node Freemind export, XOXO export, TaskJuggler export, Exporting
a351880d
CD
12061@section Freemind export
12062@cindex Freemind export
12063@cindex mind map
12064
86fbb8ca 12065The Freemind exporter was written by Lennart Borgman.
a351880d
CD
12066
12067@table @kbd
acedf35c 12068@orgcmd{C-c C-e m,org-export-as-freemind}
8223b1d2 12069Export as a Freemind mind map. For an Org file @file{myfile.org}, the Freemind
ce57c2fe 12070file will be @file{myfile.mm}.
a351880d
CD
12071@end table
12072
12073@node XOXO export, iCalendar export, Freemind export, Exporting
4009494e
GM
12074@section XOXO export
12075@cindex XOXO export
12076
e66ba1df 12077Org mode contains an exporter that produces XOXO-style output.
4009494e 12078Currently, this exporter only handles the general outline structure and
e66ba1df 12079does not interpret any additional Org mode features.
4009494e
GM
12080
12081@table @kbd
acedf35c 12082@orgcmd{C-c C-e x,org-export-as-xoxo}
8223b1d2 12083Export as an XOXO file. For an Org file @file{myfile.org}, the XOXO file will be
ce57c2fe 12084@file{myfile.html}.
acedf35c 12085@orgkey{C-c C-e v x}
4009494e
GM
12086Export only the visible part of the document.
12087@end table
12088
b349f79f 12089@node iCalendar export, , XOXO export, Exporting
4009494e
GM
12090@section iCalendar export
12091@cindex iCalendar export
12092
c8d0cf5c
CD
12093@vindex org-icalendar-include-todo
12094@vindex org-icalendar-use-deadline
12095@vindex org-icalendar-use-scheduled
12096@vindex org-icalendar-categories
afe98dfa 12097@vindex org-icalendar-alarm-time
e66ba1df 12098Some people use Org mode for keeping track of projects, but still prefer a
c8d0cf5c
CD
12099standard calendar application for anniversaries and appointments. In this
12100case it can be useful to show deadlines and other time-stamped items in Org
e66ba1df 12101files in the calendar application. Org mode can export calendar information
c8d0cf5c
CD
12102in the standard iCalendar format. If you also want to have TODO entries
12103included in the export, configure the variable
12104@code{org-icalendar-include-todo}. Plain timestamps are exported as VEVENT,
1df7defd 12105and TODO items as VTODO@. It will also create events from deadlines that are
c8d0cf5c
CD
12106in non-TODO items. Deadlines and scheduling dates in TODO items will be used
12107to set the start and due dates for the TODO entry@footnote{See the variables
12108@code{org-icalendar-use-deadline} and @code{org-icalendar-use-scheduled}.}.
12109As categories, it will use the tags locally defined in the heading, and the
12110file/tree category@footnote{To add inherited tags or the TODO state,
afe98dfa
CD
12111configure the variable @code{org-icalendar-categories}.}. See the variable
12112@code{org-icalendar-alarm-time} for a way to assign alarms to entries with a
12113time.
c8d0cf5c
CD
12114
12115@vindex org-icalendar-store-UID
12116@cindex property, ID
b349f79f
CD
12117The iCalendar standard requires each entry to have a globally unique
12118identifier (UID). Org creates these identifiers during export. If you set
12119the variable @code{org-icalendar-store-UID}, the UID will be stored in the
12120@code{:ID:} property of the entry and re-used next time you report this
12121entry. Since a single entry can give rise to multiple iCalendar entries (as
12122a timestamp, a deadline, a scheduled item, and as a TODO item), Org adds
12123prefixes to the UID, depending on what triggered the inclusion of the entry.
12124In this way the UID remains unique, but a synchronization program can still
12125figure out from which entry all the different instances originate.
12126
4009494e 12127@table @kbd
acedf35c 12128@orgcmd{C-c C-e i,org-export-icalendar-this-file}
4009494e
GM
12129Create iCalendar entries for the current file and store them in the same
12130directory, using a file extension @file{.ics}.
acedf35c 12131@orgcmd{C-c C-e I, org-export-icalendar-all-agenda-files}
c8d0cf5c 12132@vindex org-agenda-files
4009494e
GM
12133Like @kbd{C-c C-e i}, but do this for all files in
12134@code{org-agenda-files}. For each of these files, a separate iCalendar
12135file will be written.
acedf35c 12136@orgcmd{C-c C-e c,org-export-icalendar-combine-agenda-files}
c8d0cf5c 12137@vindex org-combined-agenda-icalendar-file
4009494e
GM
12138Create a single large iCalendar file from all files in
12139@code{org-agenda-files} and write it to the file given by
12140@code{org-combined-agenda-icalendar-file}.
12141@end table
12142
c8d0cf5c
CD
12143@vindex org-use-property-inheritance
12144@vindex org-icalendar-include-body
12145@cindex property, SUMMARY
12146@cindex property, DESCRIPTION
12147@cindex property, LOCATION
96c8522a
CD
12148The export will honor SUMMARY, DESCRIPTION and LOCATION@footnote{The LOCATION
12149property can be inherited from higher in the hierarchy if you configure
12150@code{org-use-property-inheritance} accordingly.} properties if the selected
12151entries have them. If not, the summary will be derived from the headline,
12152and the description from the body (limited to
28a16a1b 12153@code{org-icalendar-include-body} characters).
dbc28aaa 12154
c8d0cf5c 12155How this calendar is best read and updated, depends on the application
4009494e
GM
12156you are using. The FAQ covers this issue.
12157
86fbb8ca 12158@node Publishing, Working With Source Code, Exporting, Top
4009494e
GM
12159@chapter Publishing
12160@cindex publishing
12161
c8d0cf5c
CD
12162Org includes a publishing management system that allows you to configure
12163automatic HTML conversion of @emph{projects} composed of interlinked org
12164files. You can also configure Org to automatically upload your exported HTML
12165pages and related attachments, such as images and source code files, to a web
12166server.
4009494e 12167
c8d0cf5c
CD
12168You can also use Org to convert files into PDF, or even combine HTML and PDF
12169conversion so that files are available in both formats on the server.
4009494e 12170
c8d0cf5c 12171Publishing has been contributed to Org by David O'Toole.
4009494e
GM
12172
12173@menu
c0468714
GM
12174* Configuration:: Defining projects
12175* Uploading files:: How to get files up on the server
12176* Sample configuration:: Example projects
12177* Triggering publication:: Publication commands
4009494e
GM
12178@end menu
12179
c8d0cf5c 12180@node Configuration, Uploading files, Publishing, Publishing
4009494e
GM
12181@section Configuration
12182
12183Publishing needs significant configuration to specify files, destination
12184and many other properties of a project.
12185
12186@menu
c0468714
GM
12187* Project alist:: The central configuration variable
12188* Sources and destinations:: From here to there
12189* Selecting files:: What files are part of the project?
12190* Publishing action:: Setting the function doing the publishing
ce57c2fe 12191* Publishing options:: Tweaking HTML/@LaTeX{} export
c0468714
GM
12192* Publishing links:: Which links keep working after publishing?
12193* Sitemap:: Generating a list of all pages
12194* Generating an index:: An index that reaches across pages
4009494e
GM
12195@end menu
12196
12197@node Project alist, Sources and destinations, Configuration, Configuration
12198@subsection The variable @code{org-publish-project-alist}
12199@cindex org-publish-project-alist
12200@cindex projects, for publishing
12201
c8d0cf5c
CD
12202@vindex org-publish-project-alist
12203Publishing is configured almost entirely through setting the value of one
12204variable, called @code{org-publish-project-alist}. Each element of the list
12205configures one project, and may be in one of the two following forms:
4009494e
GM
12206
12207@lisp
ce57c2fe 12208 ("project-name" :property value :property value ...)
1df7defd 12209 @r{i.e., a well-formed property list with alternating keys and values}
28a16a1b 12210@r{or}
c8d0cf5c 12211 ("project-name" :components ("project-name" "project-name" ...))
4009494e
GM
12212
12213@end lisp
12214
c8d0cf5c
CD
12215In both cases, projects are configured by specifying property values. A
12216project defines the set of files that will be published, as well as the
12217publishing configuration to use when publishing those files. When a project
12218takes the second form listed above, the individual members of the
12219@code{:components} property are taken to be sub-projects, which group
12220together files requiring different publishing options. When you publish such
12221a ``meta-project'', all the components will also be published, in the
12222sequence given.
4009494e
GM
12223
12224@node Sources and destinations, Selecting files, Project alist, Configuration
12225@subsection Sources and destinations for files
12226@cindex directories, for publishing
12227
c8d0cf5c
CD
12228Most properties are optional, but some should always be set. In
12229particular, Org needs to know where to look for source files,
4009494e
GM
12230and where to put published files.
12231
12232@multitable @columnfractions 0.3 0.7
12233@item @code{:base-directory}
12234@tab Directory containing publishing source files
12235@item @code{:publishing-directory}
c8d0cf5c
CD
12236@tab Directory where output files will be published. You can directly
12237publish to a webserver using a file name syntax appropriate for
12238the Emacs @file{tramp} package. Or you can publish to a local directory and
12239use external tools to upload your website (@pxref{Uploading files}).
4009494e 12240@item @code{:preparation-function}
ed21c5c8
CD
12241@tab Function or list of functions to be called before starting the
12242publishing process, for example, to run @code{make} for updating files to be
12243published. The project property list is scoped into this call as the
12244variable @code{project-plist}.
b349f79f 12245@item @code{:completion-function}
ed21c5c8
CD
12246@tab Function or list of functions called after finishing the publishing
12247process, for example, to change permissions of the resulting files. The
12248project property list is scoped into this call as the variable
12249@code{project-plist}.
4009494e
GM
12250@end multitable
12251@noindent
12252
12253@node Selecting files, Publishing action, Sources and destinations, Configuration
12254@subsection Selecting files
12255@cindex files, selecting for publishing
12256
12257By default, all files with extension @file{.org} in the base directory
12258are considered part of the project. This can be modified by setting the
28a16a1b 12259properties
4009494e
GM
12260@multitable @columnfractions 0.25 0.75
12261@item @code{:base-extension}
12262@tab Extension (without the dot!) of source files. This actually is a
c8d0cf5c
CD
12263regular expression. Set this to the symbol @code{any} if you want to get all
12264files in @code{:base-directory}, even without extension.
4009494e 12265
28a16a1b 12266@item @code{:exclude}
4009494e
GM
12267@tab Regular expression to match file names that should not be
12268published, even though they have been selected on the basis of their
12269extension.
12270
12271@item @code{:include}
12272@tab List of files to be included regardless of @code{:base-extension}
12273and @code{:exclude}.
acedf35c
CD
12274
12275@item @code{:recursive}
12276@tab Non-nil means, check base-directory recursively for files to publish.
4009494e
GM
12277@end multitable
12278
12279@node Publishing action, Publishing options, Selecting files, Configuration
a7808fba 12280@subsection Publishing action
4009494e
GM
12281@cindex action, for publishing
12282
12283Publishing means that a file is copied to the destination directory and
71d35b24
CD
12284possibly transformed in the process. The default transformation is to export
12285Org files as HTML files, and this is done by the function
12286@code{org-publish-org-to-html} which calls the HTML exporter (@pxref{HTML
c8d0cf5c 12287export}). But you also can publish your content as PDF files using
afe98dfa
CD
12288@code{org-publish-org-to-pdf}, or as @code{ascii}, @code{latin1} or
12289@code{utf8} encoded files using the corresponding functions. If you want to
12290publish the Org file itself, but with @i{archived}, @i{commented}, and
12291@i{tag-excluded} trees removed, use @code{org-publish-org-to-org} and set the
12292parameters @code{:plain-source} and/or @code{:htmlized-source}. This will
12293produce @file{file.org} and @file{file.org.html} in the publishing
c8d0cf5c
CD
12294directory@footnote{@file{file-source.org} and @file{file-source.org.html} if
12295source and publishing directories are equal. Note that with this kind of
12296setup, you need to add @code{:exclude "-source\\.org"} to the project
acedf35c
CD
12297definition in @code{org-publish-project-alist} to prevent the published
12298source files from being considered as new org files the next time the project
12299is published.}. Other files like images only need to be copied to the
12300publishing destination; for this you may use @code{org-publish-attachment}.
afe98dfa 12301For non-Org files, you always need to specify the publishing function:
4009494e
GM
12302
12303@multitable @columnfractions 0.3 0.7
12304@item @code{:publishing-function}
12305@tab Function executing the publication of a file. This may also be a
12306list of functions, which will all be called in turn.
c8d0cf5c
CD
12307@item @code{:plain-source}
12308@tab Non-nil means, publish plain source.
12309@item @code{:htmlized-source}
12310@tab Non-nil means, publish htmlized source.
4009494e
GM
12311@end multitable
12312
ed21c5c8
CD
12313The function must accept three arguments: a property list containing at least
12314a @code{:publishing-directory} property, the name of the file to be
12315published, and the path to the publishing directory of the output file. It
12316should take the specified file, make the necessary transformation (if any)
12317and place the result into the destination folder.
4009494e
GM
12318
12319@node Publishing options, Publishing links, Publishing action, Configuration
acedf35c 12320@subsection Options for the HTML/@LaTeX{} exporters
4009494e
GM
12321@cindex options, for publishing
12322
12323The property list can be used to set many export options for the HTML
acedf35c 12324and @LaTeX{} exporters. In most cases, these properties correspond to user
a7808fba 12325variables in Org. The table below lists these properties along
4009494e
GM
12326with the variable they belong to. See the documentation string for the
12327respective variable for details.
12328
c8d0cf5c
CD
12329@vindex org-export-html-link-up
12330@vindex org-export-html-link-home
12331@vindex org-export-default-language
12332@vindex org-display-custom-times
12333@vindex org-export-headline-levels
12334@vindex org-export-with-section-numbers
12335@vindex org-export-section-number-format
12336@vindex org-export-with-toc
12337@vindex org-export-preserve-breaks
12338@vindex org-export-with-archived-trees
12339@vindex org-export-with-emphasize
12340@vindex org-export-with-sub-superscripts
12341@vindex org-export-with-special-strings
12342@vindex org-export-with-footnotes
12343@vindex org-export-with-drawers
12344@vindex org-export-with-tags
12345@vindex org-export-with-todo-keywords
ce57c2fe
BG
12346@vindex org-export-with-tasks
12347@vindex org-export-with-done-tasks
c8d0cf5c
CD
12348@vindex org-export-with-priority
12349@vindex org-export-with-TeX-macros
12350@vindex org-export-with-LaTeX-fragments
12351@vindex org-export-skip-text-before-1st-heading
12352@vindex org-export-with-fixed-width
12353@vindex org-export-with-timestamps
12354@vindex org-export-author-info
ce57c2fe 12355@vindex org-export-email-info
c8d0cf5c 12356@vindex org-export-creator-info
ce57c2fe 12357@vindex org-export-time-stamp-file
c8d0cf5c
CD
12358@vindex org-export-with-tables
12359@vindex org-export-highlight-first-table-line
12360@vindex org-export-html-style-include-default
ce57c2fe 12361@vindex org-export-html-style-include-scripts
c8d0cf5c
CD
12362@vindex org-export-html-style
12363@vindex org-export-html-style-extra
12364@vindex org-export-html-link-org-files-as-html
12365@vindex org-export-html-inline-images
12366@vindex org-export-html-extension
12367@vindex org-export-html-table-tag
12368@vindex org-export-html-expand
12369@vindex org-export-html-with-timestamp
12370@vindex org-export-publishing-directory
12371@vindex org-export-html-preamble
12372@vindex org-export-html-postamble
c8d0cf5c
CD
12373@vindex user-full-name
12374@vindex user-mail-address
12375@vindex org-export-select-tags
12376@vindex org-export-exclude-tags
12377
96c8522a
CD
12378@multitable @columnfractions 0.32 0.68
12379@item @code{:link-up} @tab @code{org-export-html-link-up}
12380@item @code{:link-home} @tab @code{org-export-html-link-home}
4009494e 12381@item @code{:language} @tab @code{org-export-default-language}
96c8522a 12382@item @code{:customtime} @tab @code{org-display-custom-times}
4009494e
GM
12383@item @code{:headline-levels} @tab @code{org-export-headline-levels}
12384@item @code{:section-numbers} @tab @code{org-export-with-section-numbers}
96c8522a 12385@item @code{:section-number-format} @tab @code{org-export-section-number-format}
4009494e 12386@item @code{:table-of-contents} @tab @code{org-export-with-toc}
96c8522a 12387@item @code{:preserve-breaks} @tab @code{org-export-preserve-breaks}
4009494e
GM
12388@item @code{:archived-trees} @tab @code{org-export-with-archived-trees}
12389@item @code{:emphasize} @tab @code{org-export-with-emphasize}
12390@item @code{:sub-superscript} @tab @code{org-export-with-sub-superscripts}
dbc28aaa 12391@item @code{:special-strings} @tab @code{org-export-with-special-strings}
96c8522a
CD
12392@item @code{:footnotes} @tab @code{org-export-with-footnotes}
12393@item @code{:drawers} @tab @code{org-export-with-drawers}
12394@item @code{:tags} @tab @code{org-export-with-tags}
12395@item @code{:todo-keywords} @tab @code{org-export-with-todo-keywords}
ce57c2fe 12396@item @code{:tasks} @tab @code{org-export-with-tasks}
96c8522a 12397@item @code{:priority} @tab @code{org-export-with-priority}
4009494e
GM
12398@item @code{:TeX-macros} @tab @code{org-export-with-TeX-macros}
12399@item @code{:LaTeX-fragments} @tab @code{org-export-with-LaTeX-fragments}
6eb02347 12400@item @code{:latex-listings} @tab @code{org-export-latex-listings}
96c8522a 12401@item @code{:skip-before-1st-heading} @tab @code{org-export-skip-text-before-1st-heading}
4009494e 12402@item @code{:fixed-width} @tab @code{org-export-with-fixed-width}
44ce9197 12403@item @code{:timestamps} @tab @code{org-export-with-timestamps}
ce57c2fe
BG
12404@item @code{:author} @tab @code{user-full-name}
12405@item @code{:email} @tab @code{user-mail-address} : @code{addr;addr;..}
44ce9197 12406@item @code{:author-info} @tab @code{org-export-author-info}
ed21c5c8 12407@item @code{:email-info} @tab @code{org-export-email-info}
44ce9197 12408@item @code{:creator-info} @tab @code{org-export-creator-info}
4009494e
GM
12409@item @code{:tables} @tab @code{org-export-with-tables}
12410@item @code{:table-auto-headline} @tab @code{org-export-highlight-first-table-line}
e45e3595 12411@item @code{:style-include-default} @tab @code{org-export-html-style-include-default}
ce57c2fe 12412@item @code{:style-include-scripts} @tab @code{org-export-html-style-include-scripts}
4009494e 12413@item @code{:style} @tab @code{org-export-html-style}
44ce9197 12414@item @code{:style-extra} @tab @code{org-export-html-style-extra}
4009494e
GM
12415@item @code{:convert-org-links} @tab @code{org-export-html-link-org-files-as-html}
12416@item @code{:inline-images} @tab @code{org-export-html-inline-images}
96c8522a 12417@item @code{:html-extension} @tab @code{org-export-html-extension}
ce57c2fe
BG
12418@item @code{:html-preamble} @tab @code{org-export-html-preamble}
12419@item @code{:html-postamble} @tab @code{org-export-html-postamble}
c8d0cf5c 12420@item @code{:xml-declaration} @tab @code{org-export-html-xml-declaration}
96c8522a 12421@item @code{:html-table-tag} @tab @code{org-export-html-table-tag}
4009494e
GM
12422@item @code{:expand-quoted-html} @tab @code{org-export-html-expand}
12423@item @code{:timestamp} @tab @code{org-export-html-with-timestamp}
12424@item @code{:publishing-directory} @tab @code{org-export-publishing-directory}
864c9740
CD
12425@item @code{:select-tags} @tab @code{org-export-select-tags}
12426@item @code{:exclude-tags} @tab @code{org-export-exclude-tags}
c8d0cf5c 12427@item @code{:latex-image-options} @tab @code{org-export-latex-image-default-option}
4009494e
GM
12428@end multitable
12429
12430Most of the @code{org-export-with-*} variables have the same effect in
acedf35c 12431both HTML and @LaTeX{} exporters, except for @code{:TeX-macros} and
ce57c2fe
BG
12432@code{:LaTeX-fragments} options, respectively @code{nil} and @code{t} in the
12433@LaTeX{} export. See @code{org-export-plist-vars} to check this list of
12434options.
12435
12436
4009494e 12437
c8d0cf5c 12438@vindex org-publish-project-alist
dbc28aaa
CD
12439When a property is given a value in @code{org-publish-project-alist},
12440its setting overrides the value of the corresponding user variable (if
12441any) during publishing. Options set within a file (@pxref{Export
4009494e
GM
12442options}), however, override everything.
12443
ed21c5c8 12444@node Publishing links, Sitemap, Publishing options, Configuration
4009494e
GM
12445@subsection Links between published files
12446@cindex links, publishing
12447
a7808fba 12448To create a link from one Org file to another, you would use
4009494e 12449something like @samp{[[file:foo.org][The foo]]} or simply
c8d0cf5c 12450@samp{file:foo.org.} (@pxref{Hyperlinks}). When published, this link
4009494e
GM
12451becomes a link to @file{foo.html}. In this way, you can interlink the
12452pages of your "org web" project and the links will work as expected when
1df7defd 12453you publish them to HTML@. If you also publish the Org source file and want
c8d0cf5c
CD
12454to link to that, use an @code{http:} link instead of a @code{file:} link,
12455because @code{file:} links are converted to link to the corresponding
12456@file{html} file.
4009494e 12457
ce57c2fe 12458You may also link to related files, such as images. Provided you are careful
c8d0cf5c 12459with relative file names, and provided you have also configured Org to upload
ce57c2fe 12460the related files, these links will work too. See @ref{Complex example}, for
c8d0cf5c 12461an example of this usage.
4009494e 12462
c8d0cf5c 12463Sometimes an Org file to be published may contain links that are
4009494e 12464only valid in your production environment, but not in the publishing
28a16a1b 12465location. In this case, use the property
4009494e
GM
12466
12467@multitable @columnfractions 0.4 0.6
12468@item @code{:link-validation-function}
12469@tab Function to validate links
12470@end multitable
12471
12472@noindent
12473to define a function for checking link validity. This function must
12474accept two arguments, the file name and a directory relative to which
12475the file name is interpreted in the production environment. If this
12476function returns @code{nil}, then the HTML generator will only insert a
12477description into the HTML file, but no link. One option for this
12478function is @code{org-publish-validate-link} which checks if the given
12479file is part of any project in @code{org-publish-project-alist}.
12480
ed21c5c8
CD
12481@node Sitemap, Generating an index, Publishing links, Configuration
12482@subsection Generating a sitemap
12483@cindex sitemap, of published pages
4009494e 12484
86fbb8ca 12485The following properties may be used to control publishing of
ed21c5c8 12486a map of files for a given project.
4009494e 12487
86fbb8ca 12488@multitable @columnfractions 0.35 0.65
ed21c5c8
CD
12489@item @code{:auto-sitemap}
12490@tab When non-nil, publish a sitemap during @code{org-publish-current-project}
c8d0cf5c 12491or @code{org-publish-all}.
4009494e 12492
ed21c5c8 12493@item @code{:sitemap-filename}
ce57c2fe 12494@tab Filename for output of sitemap. Defaults to @file{sitemap.org} (which
c8d0cf5c 12495becomes @file{sitemap.html}).
4009494e 12496
ed21c5c8 12497@item @code{:sitemap-title}
ce57c2fe 12498@tab Title of sitemap page. Defaults to name of file.
4009494e 12499
ed21c5c8
CD
12500@item @code{:sitemap-function}
12501@tab Plug-in function to use for generation of the sitemap.
12502Defaults to @code{org-publish-org-sitemap}, which generates a plain list
4009494e 12503of links to all files in the project.
86fbb8ca
CD
12504
12505@item @code{:sitemap-sort-folders}
12506@tab Where folders should appear in the sitemap. Set this to @code{first}
12507(default) or @code{last} to display folders first or last,
12508respectively. Any other value will mix files and folders.
12509
ce57c2fe
BG
12510@item @code{:sitemap-sort-files}
12511@tab How the files are sorted in the site map. Set this to
12512@code{alphabetically} (default), @code{chronologically} or
12513@code{anti-chronologically}. @code{chronologically} sorts the files with
12514older date first while @code{anti-chronologically} sorts the files with newer
12515date first. @code{alphabetically} sorts the files alphabetically. The date of
12516a file is retrieved with @code{org-publish-find-date}.
86fbb8ca
CD
12517
12518@item @code{:sitemap-ignore-case}
12519@tab Should sorting be case-sensitive? Default @code{nil}.
12520
ce57c2fe 12521@item @code{:sitemap-file-entry-format}
c80e3b4a 12522@tab With this option one can tell how a sitemap's entry is formatted in the
ce57c2fe
BG
12523sitemap. This is a format string with some escape sequences: @code{%t} stands
12524for the title of the file, @code{%a} stands for the author of the file and
12525@code{%d} stands for the date of the file. The date is retrieved with the
c80e3b4a 12526@code{org-publish-find-date} function and formatted with
ce57c2fe
BG
12527@code{org-publish-sitemap-date-format}. Default @code{%t}.
12528
12529@item @code{:sitemap-date-format}
12530@tab Format string for the @code{format-time-string} function that tells how
c80e3b4a 12531a sitemap entry's date is to be formatted. This property bypasses
ce57c2fe
BG
12532@code{org-publish-sitemap-date-format} which defaults to @code{%Y-%m-%d}.
12533
12534@item @code{:sitemap-sans-extension}
12535@tab When non-nil, remove filenames' extensions from the generated sitemap.
12536Useful to have cool URIs (see @uref{http://www.w3.org/Provider/Style/URI}).
12537Defaults to @code{nil}.
12538
4009494e
GM
12539@end multitable
12540
ed21c5c8
CD
12541@node Generating an index, , Sitemap, Configuration
12542@subsection Generating an index
12543@cindex index, in a publishing project
12544
e66ba1df 12545Org mode can generate an index across the files of a publishing project.
ed21c5c8
CD
12546
12547@multitable @columnfractions 0.25 0.75
12548@item @code{:makeindex}
12549@tab When non-nil, generate in index in the file @file{theindex.org} and
12550publish it as @file{theindex.html}.
12551@end multitable
12552
ce57c2fe 12553The file will be created when first publishing a project with the
8223b1d2 12554@code{:makeindex} set. The file only contains a statement @code{#+INCLUDE:
ce57c2fe
BG
12555"theindex.inc"}. You can then build around this include statement by adding
12556a title, style information, etc.
ed21c5c8 12557
c8d0cf5c
CD
12558@node Uploading files, Sample configuration, Configuration, Publishing
12559@section Uploading files
12560@cindex rsync
12561@cindex unison
12562
12563For those people already utilizing third party sync tools such as
12564@command{rsync} or @command{unison}, it might be preferable not to use the built in
e66ba1df 12565@i{remote} publishing facilities of Org mode which rely heavily on
c8d0cf5c
CD
12566Tramp. Tramp, while very useful and powerful, tends not to be
12567so efficient for multiple file transfer and has been known to cause problems
12568under heavy usage.
12569
12570Specialized synchronization utilities offer several advantages. In addition
12571to timestamp comparison, they also do content and permissions/attribute
12572checks. For this reason you might prefer to publish your web to a local
12573directory (possibly even @i{in place} with your Org files) and then use
12574@file{unison} or @file{rsync} to do the synchronization with the remote host.
12575
12576Since Unison (for example) can be configured as to which files to transfer to
12577a certain remote destination, it can greatly simplify the project publishing
12578definition. Simply keep all files in the correct location, process your Org
12579files with @code{org-publish} and let the synchronization tool do the rest.
12580You do not need, in this scenario, to include attachments such as @file{jpg},
12581@file{css} or @file{gif} files in the project definition since the 3rd party
12582tool syncs them.
12583
12584Publishing to a local directory is also much faster than to a remote one, so
12585that you can afford more easily to republish entire projects. If you set
12586@code{org-publish-use-timestamps-flag} to @code{nil}, you gain the main
12587benefit of re-including any changed external files such as source example
8223b1d2 12588files you might include with @code{#+INCLUDE:}. The timestamp mechanism in
c8d0cf5c
CD
12589Org is not smart enough to detect if included files have been modified.
12590
12591@node Sample configuration, Triggering publication, Uploading files, Publishing
4009494e
GM
12592@section Sample configuration
12593
12594Below we provide two example configurations. The first one is a simple
a7808fba 12595project publishing only a set of Org files. The second example is
4009494e
GM
12596more complex, with a multi-component project.
12597
12598@menu
c0468714
GM
12599* Simple example:: One-component publishing
12600* Complex example:: A multi-component publishing example
4009494e
GM
12601@end menu
12602
12603@node Simple example, Complex example, Sample configuration, Sample configuration
12604@subsection Example: simple publishing configuration
12605
a7808fba 12606This example publishes a set of Org files to the @file{public_html}
4009494e
GM
12607directory on the local machine.
12608
12609@lisp
12610(setq org-publish-project-alist
28a16a1b 12611 '(("org"
4009494e
GM
12612 :base-directory "~/org/"
12613 :publishing-directory "~/public_html"
12614 :section-numbers nil
12615 :table-of-contents nil
e45e3595 12616 :style "<link rel=\"stylesheet\"
4009494e 12617 href=\"../other/mystyle.css\"
c8d0cf5c 12618 type=\"text/css\"/>")))
4009494e
GM
12619@end lisp
12620
12621@node Complex example, , Simple example, Sample configuration
12622@subsection Example: complex publishing configuration
12623
12624This more complicated example publishes an entire website, including
c8d0cf5c 12625Org files converted to HTML, image files, Emacs Lisp source code, and
ce57c2fe 12626style sheets. The publishing directory is remote and private files are
4009494e
GM
12627excluded.
12628
12629To ensure that links are preserved, care should be taken to replicate
12630your directory structure on the web server, and to use relative file
ce57c2fe 12631paths. For example, if your Org files are kept in @file{~/org} and your
86fbb8ca 12632publishable images in @file{~/images}, you would link to an image with
4009494e
GM
12633@c
12634@example
12635file:../images/myimage.png
12636@end example
12637@c
12638On the web server, the relative path to the image should be the
ce57c2fe 12639same. You can accomplish this by setting up an "images" folder in the
a7808fba 12640right place on the web server, and publishing images to it.
4009494e
GM
12641
12642@lisp
12643(setq org-publish-project-alist
12644 '(("orgfiles"
12645 :base-directory "~/org/"
12646 :base-extension "org"
12647 :publishing-directory "/ssh:user@@host:~/html/notebook/"
12648 :publishing-function org-publish-org-to-html
12649 :exclude "PrivatePage.org" ;; regexp
12650 :headline-levels 3
12651 :section-numbers nil
12652 :table-of-contents nil
e45e3595 12653 :style "<link rel=\"stylesheet\"
c8d0cf5c 12654 href=\"../other/mystyle.css\" type=\"text/css\"/>"
ce57c2fe 12655 :html-preamble t)
28a16a1b 12656
4009494e
GM
12657 ("images"
12658 :base-directory "~/images/"
12659 :base-extension "jpg\\|gif\\|png"
12660 :publishing-directory "/ssh:user@@host:~/html/images/"
12661 :publishing-function org-publish-attachment)
28a16a1b 12662
4009494e
GM
12663 ("other"
12664 :base-directory "~/other/"
12665 :base-extension "css\\|el"
12666 :publishing-directory "/ssh:user@@host:~/html/other/"
12667 :publishing-function org-publish-attachment)
12668 ("website" :components ("orgfiles" "images" "other"))))
12669@end lisp
12670
12671@node Triggering publication, , Sample configuration, Publishing
12672@section Triggering publication
12673
c8d0cf5c 12674Once properly configured, Org can publish with the following commands:
4009494e
GM
12675
12676@table @kbd
acedf35c 12677@orgcmd{C-c C-e X,org-publish}
4009494e 12678Prompt for a specific project and publish all files that belong to it.
acedf35c 12679@orgcmd{C-c C-e P,org-publish-current-project}
4009494e 12680Publish the project containing the current file.
acedf35c 12681@orgcmd{C-c C-e F,org-publish-current-file}
4009494e 12682Publish only the current file.
acedf35c 12683@orgcmd{C-c C-e E,org-publish-all}
c8d0cf5c 12684Publish every project.
4009494e
GM
12685@end table
12686
c8d0cf5c 12687@vindex org-publish-use-timestamps-flag
ce57c2fe
BG
12688Org uses timestamps to track when a file has changed. The above functions
12689normally only publish changed files. You can override this and force
c8d0cf5c
CD
12690publishing of all files by giving a prefix argument to any of the commands
12691above, or by customizing the variable @code{org-publish-use-timestamps-flag}.
12692This may be necessary in particular if files include other files via
12693@code{#+SETUPFILE:} or @code{#+INCLUDE:}.
4009494e 12694
86fbb8ca
CD
12695@comment node-name, next, previous, up
12696@comment Working With Source Code, Miscellaneous, Publishing, Top
12697
12698@node Working With Source Code, Miscellaneous, Publishing, Top
12699@chapter Working with source code
12700@cindex Schulte, Eric
12701@cindex Davison, Dan
12702@cindex source code, working with
12703
e66ba1df 12704Source code can be included in Org mode documents using a @samp{src} block,
1df7defd 12705e.g.:
86fbb8ca
CD
12706
12707@example
12708#+BEGIN_SRC emacs-lisp
12709 (defun org-xor (a b)
12710 "Exclusive or."
12711 (if a (not b) b))
12712#+END_SRC
12713@end example
12714
e66ba1df 12715Org mode provides a number of features for working with live source code,
86fbb8ca 12716including editing of code blocks in their native major-mode, evaluation of
ce57c2fe
BG
12717code blocks, converting code blocks into source files (known as @dfn{tangling}
12718in literate programming), and exporting code blocks and their
afe98dfa
CD
12719results in several formats. This functionality was contributed by Eric
12720Schulte and Dan Davison, and was originally named Org-babel.
86fbb8ca 12721
e66ba1df 12722The following sections describe Org mode's code block handling facilities.
4009494e
GM
12723
12724@menu
c0468714
GM
12725* Structure of code blocks:: Code block syntax described
12726* Editing source code:: Language major-mode editing
12727* Exporting code blocks:: Export contents and/or results
12728* Extracting source code:: Create pure source code files
e66ba1df 12729* Evaluating code blocks:: Place results of evaluation in the Org mode buffer
c0468714
GM
12730* Library of Babel:: Use and contribute to a library of useful code blocks
12731* Languages:: List of supported code block languages
12732* Header arguments:: Configure code block functionality
12733* Results of evaluation:: How evaluation results are handled
e66ba1df 12734* Noweb reference syntax:: Literate programming in Org mode
86fbb8ca 12735* Key bindings and useful functions:: Work quickly with code blocks
c0468714 12736* Batch execution:: Call functions from the command line
4009494e
GM
12737@end menu
12738
86fbb8ca
CD
12739@comment node-name, next, previous, up
12740@comment Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
c8d0cf5c 12741
86fbb8ca
CD
12742@node Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
12743@section Structure of code blocks
12744@cindex code block, structure
12745@cindex source code, block structure
e66ba1df
BG
12746@cindex #+NAME
12747@cindex #+BEGIN_SRC
4009494e 12748
e66ba1df
BG
12749Live code blocks can be specified with a @samp{src} block or
12750inline.@footnote{Note that @samp{src} blocks may be inserted using Org mode's
12751@ref{Easy Templates} system} The structure of a @samp{src} block is
6eb02347 12752
86fbb8ca 12753@example
e66ba1df
BG
12754#+NAME: <name>
12755#+BEGIN_SRC <language> <switches> <header arguments>
86fbb8ca 12756 <body>
e66ba1df 12757#+END_SRC
86fbb8ca 12758@end example
4009494e 12759
e66ba1df
BG
12760The @code{#+NAME:} line is optional, and can be used to name the code
12761block. Live code blocks require that a language be specified on the
12762@code{#+BEGIN_SRC} line. Switches and header arguments are optional.
12763@cindex source code, inline
12764
12765Live code blocks can also be specified inline using
afe98dfa
CD
12766
12767@example
12768src_<language>@{<body>@}
12769@end example
12770
12771or
12772
12773@example
12774src_<language>[<header arguments>]@{<body>@}
12775@end example
12776
86fbb8ca 12777@table @code
e66ba1df
BG
12778@item <#+NAME: name>
12779This line associates a name with the code block. This is similar to the
12780@code{#+TBLNAME: NAME} lines that can be used to name tables in Org mode
12781files. Referencing the name of a code block makes it possible to evaluate
12782the block from other places in the file, from other files, or from Org mode
12783table formulas (see @ref{The spreadsheet}). Names are assumed to be unique
12784and the behavior of Org mode when two or more blocks share the same name is
ce57c2fe 12785undefined.
e66ba1df 12786@cindex #+NAME
86fbb8ca 12787@item <language>
e66ba1df
BG
12788The language of the code in the block (see @ref{Languages}).
12789@cindex source code, language
86fbb8ca 12790@item <switches>
e66ba1df 12791Optional switches control code block export (see the discussion of switches in
86fbb8ca 12792@ref{Literal examples})
e66ba1df 12793@cindex source code, switches
86fbb8ca
CD
12794@item <header arguments>
12795Optional header arguments control many aspects of evaluation, export and
e66ba1df 12796tangling of code blocks (see @ref{Header arguments}).
ce57c2fe 12797Header arguments can also be set on a per-buffer or per-subtree
86fbb8ca 12798basis using properties.
e66ba1df 12799@item source code, header arguments
86fbb8ca 12800@item <body>
e66ba1df 12801Source code in the specified language.
4009494e
GM
12802@end table
12803
86fbb8ca
CD
12804@comment node-name, next, previous, up
12805@comment Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
17673adf 12806
86fbb8ca
CD
12807@node Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
12808@section Editing source code
12809@cindex code block, editing
12810@cindex source code, editing
17673adf 12811
86fbb8ca 12812@kindex C-c '
ce57c2fe 12813Use @kbd{C-c '} to edit the current code block. This brings up
86fbb8ca 12814a language major-mode edit buffer containing the body of the code
ce57c2fe
BG
12815block. Saving this buffer will write the new contents back to the Org
12816buffer. Use @kbd{C-c '} again to exit.
4009494e 12817
ce57c2fe 12818The @code{org-src-mode} minor mode will be active in the edit buffer. The
86fbb8ca 12819following variables can be used to configure the behavior of the edit
ce57c2fe 12820buffer. See also the customization group @code{org-edit-structure} for
86fbb8ca
CD
12821further configuration options.
12822
12823@table @code
12824@item org-src-lang-modes
12825If an Emacs major-mode named @code{<lang>-mode} exists, where
12826@code{<lang>} is the language named in the header line of the code block,
ce57c2fe 12827then the edit buffer will be placed in that major-mode. This variable
86fbb8ca
CD
12828can be used to map arbitrary language names to existing major modes.
12829@item org-src-window-setup
12830Controls the way Emacs windows are rearranged when the edit buffer is created.
12831@item org-src-preserve-indentation
12832This variable is especially useful for tangling languages such as
acedf35c 12833Python, in which whitespace indentation in the output is critical.
86fbb8ca 12834@item org-src-ask-before-returning-to-edit-buffer
ce57c2fe
BG
12835By default, Org will ask before returning to an open edit buffer. Set this
12836variable to nil to switch without asking.
86fbb8ca
CD
12837@end table
12838
ce57c2fe
BG
12839To turn on native code fontification in the @emph{Org} buffer, configure the
12840variable @code{org-src-fontify-natively}.
12841
86fbb8ca
CD
12842@comment node-name, next, previous, up
12843@comment Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
12844
12845@node Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
12846@section Exporting code blocks
12847@cindex code block, exporting
12848@cindex source code, exporting
12849
e66ba1df
BG
12850It is possible to export the @emph{code} of code blocks, the @emph{results}
12851of code block evaluation, @emph{both} the code and the results of code block
12852evaluation, or @emph{none}. For most languages, the default exports code.
1df7defd 12853However, for some languages (e.g., @code{ditaa}) the default exports the
e66ba1df
BG
12854results of code block evaluation. For information on exporting code block
12855bodies, see @ref{Literal examples}.
86fbb8ca
CD
12856
12857The @code{:exports} header argument can be used to specify export
12858behavior:
12859
12860@subsubheading Header arguments:
12861@table @code
12862@item :exports code
ce57c2fe 12863The default in most languages. The body of the code block is exported, as
86fbb8ca
CD
12864described in @ref{Literal examples}.
12865@item :exports results
12866The code block will be evaluated and the results will be placed in the
e66ba1df 12867Org mode buffer for export, either updating previous results of the code
86fbb8ca
CD
12868block located anywhere in the buffer or, if no previous results exist,
12869placing the results immediately after the code block. The body of the code
12870block will not be exported.
12871@item :exports both
12872Both the code block and its results will be exported.
12873@item :exports none
12874Neither the code block nor its results will be exported.
12875@end table
12876
12877It is possible to inhibit the evaluation of code blocks during export.
acedf35c 12878Setting the @code{org-export-babel-evaluate} variable to @code{nil} will
86fbb8ca 12879ensure that no code blocks are evaluated as part of the export process. This
e66ba1df
BG
12880can be useful in situations where potentially untrusted Org mode files are
12881exported in an automated fashion, for example when Org mode is used as the
86fbb8ca
CD
12882markup language for a wiki.
12883
12884@comment node-name, next, previous, up
12885@comment Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
12886@node Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
12887@section Extracting source code
ce57c2fe 12888@cindex tangling
86fbb8ca
CD
12889@cindex source code, extracting
12890@cindex code block, extracting source code
12891
12892Creating pure source code files by extracting code from source blocks is
12893referred to as ``tangling''---a term adopted from the literate programming
12894community. During ``tangling'' of code blocks their bodies are expanded
12895using @code{org-babel-expand-src-block} which can expand both variable and
12896``noweb'' style references (see @ref{Noweb reference syntax}).
12897
12898@subsubheading Header arguments
12899@table @code
12900@item :tangle no
12901The default. The code block is not included in the tangled output.
12902@item :tangle yes
ce57c2fe 12903Include the code block in the tangled output. The output file name is the
86fbb8ca
CD
12904name of the org file with the extension @samp{.org} replaced by the extension
12905for the block language.
12906@item :tangle filename
12907Include the code block in the tangled output to file @samp{filename}.
12908@end table
12909
12910@kindex C-c C-v t
12911@subsubheading Functions
12912@table @code
ce57c2fe 12913@item org-babel-tangle
afe98dfa 12914Tangle the current file. Bound to @kbd{C-c C-v t}.
86fbb8ca 12915@item org-babel-tangle-file
ce57c2fe 12916Choose a file to tangle. Bound to @kbd{C-c C-v f}.
86fbb8ca
CD
12917@end table
12918
12919@subsubheading Hooks
12920@table @code
12921@item org-babel-post-tangle-hook
12922This hook is run from within code files tangled by @code{org-babel-tangle}.
12923Example applications could include post-processing, compilation or evaluation
12924of tangled code files.
12925@end table
12926
12927@node Evaluating code blocks, Library of Babel, Extracting source code, Working With Source Code
12928@section Evaluating code blocks
12929@cindex code block, evaluating
12930@cindex source code, evaluating
153ae947 12931@cindex #+RESULTS
86fbb8ca
CD
12932
12933Code blocks can be evaluated@footnote{Whenever code is evaluated there is a
e66ba1df
BG
12934potential for that code to do harm. Org mode provides safeguards to ensure
12935that code is only evaluated after explicit confirmation from the user. For
12936information on these safeguards (and on how to disable them) see @ref{Code
12937evaluation security}.} and the results of evaluation optionally placed in the
153ae947
BG
12938Org mode buffer. The results of evaluation are placed following a line that
12939begins by default with @code{#+RESULTS} and optionally a cache identifier
12940and/or the name of the evaluated code block. The default value of
12941@code{#+RESULTS} can be changed with the customizable variable
12942@code{org-babel-results-keyword}.
12943
12944By default, the evaluation facility is only enabled for Lisp code blocks
8223b1d2 12945specified as @code{emacs-lisp}. However, source code blocks in many languages
153ae947
BG
12946can be evaluated within Org mode (see @ref{Languages} for a list of supported
12947languages and @ref{Structure of code blocks} for information on the syntax
12948used to define a code block).
86fbb8ca
CD
12949
12950@kindex C-c C-c
12951There are a number of ways to evaluate code blocks. The simplest is to press
12952@kbd{C-c C-c} or @kbd{C-c C-v e} with the point on a code block@footnote{The
12953@code{org-babel-no-eval-on-ctrl-c-ctrl-c} variable can be used to remove code
12954evaluation from the @kbd{C-c C-c} key binding.}. This will call the
12955@code{org-babel-execute-src-block} function to evaluate the block and insert
e66ba1df
BG
12956its results into the Org mode buffer.
12957@cindex #+CALL
86fbb8ca 12958
8223b1d2
BG
12959It is also possible to evaluate named code blocks from anywhere in an Org
12960mode buffer or an Org mode table. Live code blocks located in the current
e66ba1df
BG
12961Org mode buffer or in the ``Library of Babel'' (see @ref{Library of Babel})
12962can be executed. Named code blocks can be executed with a separate
12963@code{#+CALL:} line or inline within a block of text.
12964
12965The syntax of the @code{#+CALL:} line is
86fbb8ca
CD
12966
12967@example
e66ba1df
BG
12968#+CALL: <name>(<arguments>)
12969#+CALL: <name>[<inside header arguments>](<arguments>) <end header arguments>
ce57c2fe
BG
12970@end example
12971
e66ba1df 12972The syntax for inline evaluation of named code blocks is
ce57c2fe
BG
12973
12974@example
e66ba1df
BG
12975... call_<name>(<arguments>) ...
12976... call_<name>[<inside header arguments>](<arguments>)[<end header arguments>] ...
86fbb8ca
CD
12977@end example
12978
12979@table @code
12980@item <name>
e66ba1df 12981The name of the code block to be evaluated (see @ref{Structure of code blocks}).
86fbb8ca 12982@item <arguments>
ce57c2fe 12983Arguments specified in this section will be passed to the code block. These
e66ba1df
BG
12984arguments use standard function call syntax, rather than
12985header argument syntax. For example, a @code{#+CALL:} line that passes the
12986number four to a code block named @code{double}, which declares the header
12987argument @code{:var n=2}, would be written as @code{#+CALL: double(n=4)}.
12988@item <inside header arguments>
12989Inside header arguments are passed through and applied to the named code
12990block. These arguments use header argument syntax rather than standard
12991function call syntax. Inside header arguments affect how the code block is
12992evaluated. For example, @code{[:results output]} will collect the results of
12993everything printed to @code{STDOUT} during execution of the code block.
12994@item <end header arguments>
12995End header arguments are applied to the calling instance and do not affect
12996evaluation of the named code block. They affect how the results are
12997incorporated into the Org mode buffer and how the call line is exported. For
12998example, @code{:results html} will insert the results of the call line
12999evaluation in the Org buffer, wrapped in a @code{BEGIN_HTML:} block.
13000
13001For more examples of passing header arguments to @code{#+CALL:} lines see
ce57c2fe
BG
13002@ref{Header arguments in function calls}.
13003@end table
86fbb8ca
CD
13004
13005@node Library of Babel, Languages, Evaluating code blocks, Working With Source Code
13006@section Library of Babel
13007@cindex babel, library of
13008@cindex source code, library
13009@cindex code block, library
13010
e66ba1df
BG
13011The ``Library of Babel'' consists of code blocks that can be called from any
13012Org mode file. Code blocks defined in the ``Library of Babel'' can be called
13013remotely as if they were in the current Org mode buffer (see @ref{Evaluating
13014code blocks} for information on the syntax of remote code block evaluation).
13015
13016
13017The central repository of code blocks in the ``Library of Babel'' is housed
13018in an Org mode file located in the @samp{contrib} directory of Org mode.
13019
13020Users can add code blocks they believe to be generally useful to their
13021``Library of Babel.'' The code blocks can be stored in any Org mode file and
13022then loaded into the library with @code{org-babel-lob-ingest}.
86fbb8ca 13023
86fbb8ca 13024
afe98dfa 13025@kindex C-c C-v i
e66ba1df 13026Code blocks located in any Org mode file can be loaded into the ``Library of
86fbb8ca 13027Babel'' with the @code{org-babel-lob-ingest} function, bound to @kbd{C-c C-v
afe98dfa 13028i}.
86fbb8ca
CD
13029
13030@node Languages, Header arguments, Library of Babel, Working With Source Code
13031@section Languages
13032@cindex babel, languages
13033@cindex source code, languages
13034@cindex code block, languages
13035
13036Code blocks in the following languages are supported.
13037
13038@multitable @columnfractions 0.28 0.3 0.22 0.2
13039@item @b{Language} @tab @b{Identifier} @tab @b{Language} @tab @b{Identifier}
ce57c2fe
BG
13040@item Asymptote @tab asymptote @tab Awk @tab awk
13041@item Emacs Calc @tab calc @tab C @tab C
86fbb8ca 13042@item C++ @tab C++ @tab Clojure @tab clojure
acedf35c 13043@item CSS @tab css @tab ditaa @tab ditaa
86fbb8ca
CD
13044@item Graphviz @tab dot @tab Emacs Lisp @tab emacs-lisp
13045@item gnuplot @tab gnuplot @tab Haskell @tab haskell
ce57c2fe
BG
13046@item Java @tab java @tab @tab
13047@item Javascript @tab js @tab LaTeX @tab latex
13048@item Ledger @tab ledger @tab Lisp @tab lisp
13049@item Lilypond @tab lilypond @tab MATLAB @tab matlab
86fbb8ca 13050@item Mscgen @tab mscgen @tab Objective Caml @tab ocaml
e66ba1df 13051@item Octave @tab octave @tab Org mode @tab org
ce57c2fe
BG
13052@item Oz @tab oz @tab Perl @tab perl
13053@item Plantuml @tab plantuml @tab Python @tab python
86fbb8ca 13054@item R @tab R @tab Ruby @tab ruby
ce57c2fe
BG
13055@item Sass @tab sass @tab Scheme @tab scheme
13056@item GNU Screen @tab screen @tab shell @tab sh
13057@item SQL @tab sql @tab SQLite @tab sqlite
86fbb8ca
CD
13058@end multitable
13059
13060Language-specific documentation is available for some languages. If
13061available, it can be found at
8223b1d2 13062@uref{http://orgmode.org/worg/org-contrib/babel/languages.html}.
86fbb8ca
CD
13063
13064The @code{org-babel-load-languages} controls which languages are enabled for
13065evaluation (by default only @code{emacs-lisp} is enabled). This variable can
13066be set using the customization interface or by adding code like the following
13067to your emacs configuration.
13068
13069@quotation
13070The following disables @code{emacs-lisp} evaluation and enables evaluation of
13071@code{R} code blocks.
13072@end quotation
13073
13074@lisp
13075(org-babel-do-load-languages
13076 'org-babel-load-languages
13077 '((emacs-lisp . nil)
13078 (R . t)))
13079@end lisp
13080
13081It is also possible to enable support for a language by loading the related
13082elisp file with @code{require}.
13083
13084@quotation
13085The following adds support for evaluating @code{clojure} code blocks.
13086@end quotation
13087
13088@lisp
13089(require 'ob-clojure)
13090@end lisp
13091
13092@node Header arguments, Results of evaluation, Languages, Working With Source Code
13093@section Header arguments
13094@cindex code block, header arguments
13095@cindex source code, block header arguments
13096
13097Code block functionality can be configured with header arguments. This
13098section provides an overview of the use of header arguments, and then
13099describes each header argument in detail.
13100
13101@menu
c0468714
GM
13102* Using header arguments:: Different ways to set header arguments
13103* Specific header arguments:: List of header arguments
86fbb8ca
CD
13104@end menu
13105
13106@node Using header arguments, Specific header arguments, Header arguments, Header arguments
13107@subsection Using header arguments
13108
afe98dfa 13109The values of header arguments can be set in six different ways, each more
86fbb8ca
CD
13110specific (and having higher priority) than the last.
13111@menu
13112* System-wide header arguments:: Set global default values
c0468714 13113* Language-specific header arguments:: Set default values by language
86fbb8ca 13114* Buffer-wide header arguments:: Set default values for a specific buffer
e66ba1df 13115* Header arguments in Org mode properties:: Set default values for a buffer or heading
86fbb8ca 13116* Code block specific header arguments:: The most common way to set values
afe98dfa 13117* Header arguments in function calls:: The most specific level
86fbb8ca
CD
13118@end menu
13119
13120
13121@node System-wide header arguments, Language-specific header arguments, Using header arguments, Using header arguments
13122@subsubheading System-wide header arguments
13123@vindex org-babel-default-header-args
13124System-wide values of header arguments can be specified by customizing the
13125@code{org-babel-default-header-args} variable:
13126
13127@example
13128:session => "none"
13129:results => "replace"
13130:exports => "code"
13131:cache => "no"
13132:noweb => "no"
13133@end example
13134
13135@c @example
13136@c org-babel-default-header-args is a variable defined in `org-babel.el'.
13137@c Its value is
13138@c ((:session . "none")
13139@c (:results . "replace")
13140@c (:exports . "code")
13141@c (:cache . "no")
13142@c (:noweb . "no"))
13143
13144
13145@c Documentation:
13146@c Default arguments to use when evaluating a code block.
13147@c @end example
13148
13149For example, the following example could be used to set the default value of
13150@code{:noweb} header arguments to @code{yes}. This would have the effect of
13151expanding @code{:noweb} references by default when evaluating source code
13152blocks.
13153
13154@lisp
13155(setq org-babel-default-header-args
63aa0982
BG
13156 (cons '(:noweb . "yes")
13157 (assq-delete-all :noweb org-babel-default-header-args)))
86fbb8ca
CD
13158@end lisp
13159
13160@node Language-specific header arguments, Buffer-wide header arguments, System-wide header arguments, Using header arguments
13161@subsubheading Language-specific header arguments
13162Each language can define its own set of default header arguments. See the
13163language-specific documentation available online at
13164@uref{http://orgmode.org/worg/org-contrib/babel}.
13165
e66ba1df 13166@node Buffer-wide header arguments, Header arguments in Org mode properties, Language-specific header arguments, Using header arguments
86fbb8ca 13167@subsubheading Buffer-wide header arguments
e66ba1df
BG
13168Buffer-wide header arguments may be specified as properties through the use
13169of @code{#+PROPERTY:} lines placed anywhere in an Org mode file (see
13170@ref{Property syntax}).
86fbb8ca
CD
13171
13172For example the following would set @code{session} to @code{*R*}, and
13173@code{results} to @code{silent} for every code block in the buffer, ensuring
13174that all execution took place in the same session, and no results would be
13175inserted into the buffer.
13176
13177@example
e66ba1df
BG
13178#+PROPERTY: session *R*
13179#+PROPERTY: results silent
86fbb8ca
CD
13180@end example
13181
e66ba1df
BG
13182@node Header arguments in Org mode properties, Code block specific header arguments, Buffer-wide header arguments, Using header arguments
13183@subsubheading Header arguments in Org mode properties
86fbb8ca 13184
e66ba1df 13185Header arguments are also read from Org mode properties (see @ref{Property
ce57c2fe 13186syntax}), which can be set on a buffer-wide or per-heading basis. An example
86fbb8ca
CD
13187of setting a header argument for all code blocks in a buffer is
13188
13189@example
e66ba1df 13190#+PROPERTY: tangle yes
86fbb8ca
CD
13191@end example
13192
e66ba1df 13193@vindex org-use-property-inheritance
86fbb8ca 13194When properties are used to set default header arguments, they are looked up
e66ba1df
BG
13195with inheritance, regardless of the value of
13196@code{org-use-property-inheritance}. In the following example the value of
13197the @code{:cache} header argument will default to @code{yes} in all code
13198blocks in the subtree rooted at the following heading:
86fbb8ca
CD
13199
13200@example
13201* outline header
63aa0982
BG
13202 :PROPERTIES:
13203 :cache: yes
13204 :END:
86fbb8ca
CD
13205@end example
13206
13207@kindex C-c C-x p
13208@vindex org-babel-default-header-args
13209Properties defined in this way override the properties set in
13210@code{org-babel-default-header-args}. It is convenient to use the
13211@code{org-set-property} function bound to @kbd{C-c C-x p} to set properties
e66ba1df 13212in Org mode documents.
86fbb8ca 13213
e66ba1df 13214@node Code block specific header arguments, Header arguments in function calls, Header arguments in Org mode properties, Using header arguments
86fbb8ca
CD
13215@subsubheading Code block specific header arguments
13216
13217The most common way to assign values to header arguments is at the
13218code block level. This can be done by listing a sequence of header
e66ba1df 13219arguments and their values as part of the @code{#+BEGIN_SRC} line.
86fbb8ca
CD
13220Properties set in this way override both the values of
13221@code{org-babel-default-header-args} and header arguments specified as
13222properties. In the following example, the @code{:results} header argument
13223is set to @code{silent}, meaning the results of execution will not be
13224inserted in the buffer, and the @code{:exports} header argument is set to
13225@code{code}, meaning only the body of the code block will be
e66ba1df 13226preserved on export to HTML or @LaTeX{}.
86fbb8ca
CD
13227
13228@example
e66ba1df
BG
13229#+NAME: factorial
13230#+BEGIN_SRC haskell :results silent :exports code :var n=0
86fbb8ca
CD
13231fac 0 = 1
13232fac n = n * fac (n-1)
e66ba1df 13233#+END_SRC
86fbb8ca 13234@end example
e66ba1df 13235Similarly, it is possible to set header arguments for inline code blocks
86fbb8ca
CD
13236
13237@example
13238src_haskell[:exports both]@{fac 5@}
13239@end example
13240
e66ba1df
BG
13241Code block header arguments can span multiple lines using @code{#+HEADER:} or
13242@code{#+HEADERS:} lines preceding a code block or nested between the
13243@code{#+NAME:} line and the @code{#+BEGIN_SRC} line of a named code block.
13244@cindex #+HEADER:
13245@cindex #+HEADERS:
ce57c2fe
BG
13246
13247Multi-line header arguments on an un-named code block:
63aa0982 13248
ce57c2fe 13249@example
e66ba1df
BG
13250 #+HEADERS: :var data1=1
13251 #+BEGIN_SRC emacs-lisp :var data2=2
ce57c2fe 13252 (message "data1:%S, data2:%S" data1 data2)
e66ba1df 13253 #+END_SRC
ce57c2fe 13254
8223b1d2 13255 #+RESULTS:
ce57c2fe
BG
13256 : data1:1, data2:2
13257@end example
13258
13259Multi-line header arguments on a named code block:
63aa0982 13260
ce57c2fe 13261@example
e66ba1df
BG
13262 #+NAME: named-block
13263 #+HEADER: :var data=2
13264 #+BEGIN_SRC emacs-lisp
ce57c2fe 13265 (message "data:%S" data)
e66ba1df 13266 #+END_SRC
ce57c2fe 13267
8223b1d2 13268 #+RESULTS: named-block
ce57c2fe
BG
13269 : data:2
13270@end example
13271
afe98dfa
CD
13272@node Header arguments in function calls, , Code block specific header arguments, Using header arguments
13273@comment node-name, next, previous, up
13274@subsubheading Header arguments in function calls
13275
13276At the most specific level, header arguments for ``Library of Babel'' or
e66ba1df
BG
13277@code{#+CALL:} lines can be set as shown in the two examples below. For more
13278information on the structure of @code{#+CALL:} lines see @ref{Evaluating code
ce57c2fe 13279blocks}.
86fbb8ca 13280
ce57c2fe 13281The following will apply the @code{:exports results} header argument to the
e66ba1df 13282evaluation of the @code{#+CALL:} line.
63aa0982 13283
86fbb8ca 13284@example
e66ba1df 13285#+CALL: factorial(n=5) :exports results
86fbb8ca
CD
13286@end example
13287
ce57c2fe
BG
13288The following will apply the @code{:session special} header argument to the
13289evaluation of the @code{factorial} code block.
63aa0982 13290
ce57c2fe 13291@example
e66ba1df 13292#+CALL: factorial[:session special](n=5)
ce57c2fe
BG
13293@end example
13294
86fbb8ca
CD
13295@node Specific header arguments, , Using header arguments, Header arguments
13296@subsection Specific header arguments
e66ba1df
BG
13297Header arguments consist of an initial colon followed by the name of the
13298argument in lowercase letters. The following header arguments are defined:
86fbb8ca
CD
13299
13300@menu
c0468714
GM
13301* var:: Pass arguments to code blocks
13302* results:: Specify the type of results and how they will
86fbb8ca 13303 be collected and handled
c0468714 13304* file:: Specify a path for file output
8223b1d2 13305* file-desc:: Specify a description for file results
c0468714 13306* dir:: Specify the default (possibly remote)
86fbb8ca 13307 directory for code block execution
c0468714
GM
13308* exports:: Export code and/or results
13309* tangle:: Toggle tangling and specify file name
ce57c2fe
BG
13310* mkdirp:: Toggle creation of parent directories of target
13311 files during tangling
86fbb8ca
CD
13312* comments:: Toggle insertion of comments in tangled
13313 code files
ce57c2fe
BG
13314* padline:: Control insertion of padding lines in tangled
13315 code files
afe98dfa
CD
13316* no-expand:: Turn off variable assignment and noweb
13317 expansion during tangling
c0468714
GM
13318* session:: Preserve the state of code evaluation
13319* noweb:: Toggle expansion of noweb references
ce57c2fe 13320* noweb-ref:: Specify block's noweb reference resolution target
153ae947 13321* noweb-sep:: String used to separate noweb references
c0468714 13322* cache:: Avoid re-evaluating unchanged code blocks
ce57c2fe 13323* sep:: Delimiter for writing tabular results outside Org
c0468714
GM
13324* hlines:: Handle horizontal lines in tables
13325* colnames:: Handle column names in tables
13326* rownames:: Handle row names in tables
13327* shebang:: Make tangled files executable
86fbb8ca 13328* eval:: Limit evaluation of specific code blocks
8223b1d2 13329* wrap:: Mark source block evaluation results
86fbb8ca
CD
13330@end menu
13331
ce57c2fe
BG
13332Additional header arguments are defined on a language-specific basis, see
13333@ref{Languages}.
13334
86fbb8ca
CD
13335@node var, results, Specific header arguments, Specific header arguments
13336@subsubsection @code{:var}
13337The @code{:var} header argument is used to pass arguments to code blocks.
13338The specifics of how arguments are included in a code block vary by language;
ce57c2fe 13339these are addressed in the language-specific documentation. However, the
e66ba1df
BG
13340syntax used to specify arguments is the same across all languages. In every
13341case, variables require a default value when they are declared.
13342
13343The values passed to arguments can either be literal values, references, or
8223b1d2 13344Emacs Lisp code (see @ref{var, Emacs Lisp evaluation of variables}). References
e66ba1df
BG
13345include anything in the Org mode file that takes a @code{#+NAME:},
13346@code{#+TBLNAME:}, or @code{#+RESULTS:} line. This includes tables, lists,
13347@code{#+BEGIN_EXAMPLE} blocks, other code blocks, and the results of other
13348code blocks.
86fbb8ca 13349
e66ba1df
BG
13350Argument values can be indexed in a manner similar to arrays (see @ref{var,
13351Indexable variable values}).
86fbb8ca
CD
13352
13353The following syntax is used to pass arguments to code blocks using the
13354@code{:var} header argument.
13355
13356@example
13357:var name=assign
13358@end example
13359
e66ba1df
BG
13360The argument, @code{assign}, can either be a literal value, such as a string
13361@samp{"string"} or a number @samp{9}, or a reference to a table, a list, a
13362literal example, another code block (with or without arguments), or the
13363results of evaluating another code block.
86fbb8ca 13364
e66ba1df
BG
13365Here are examples of passing values by reference:
13366
13367@table @dfn
86fbb8ca 13368
e66ba1df
BG
13369@item table
13370an Org mode table named with either a @code{#+NAME:} or @code{#+TBLNAME:} line
63aa0982 13371
86fbb8ca 13372@example
e66ba1df 13373#+TBLNAME: example-table
86fbb8ca
CD
13374| 1 |
13375| 2 |
13376| 3 |
13377| 4 |
13378
e66ba1df
BG
13379#+NAME: table-length
13380#+BEGIN_SRC emacs-lisp :var table=example-table
86fbb8ca 13381(length table)
e66ba1df 13382#+END_SRC
86fbb8ca 13383
8223b1d2 13384#+RESULTS: table-length
86fbb8ca
CD
13385: 4
13386@end example
13387
e66ba1df
BG
13388@item list
13389a simple list named with a @code{#+NAME:} line (note that nesting is not
13390carried through to the source code block)
86fbb8ca
CD
13391
13392@example
e66ba1df
BG
13393#+NAME: example-list
13394 - simple
13395 - not
13396 - nested
13397 - list
13398
13399#+BEGIN_SRC emacs-lisp :var x=example-list
13400 (print x)
13401#+END_SRC
13402
8223b1d2 13403#+RESULTS:
e66ba1df
BG
13404| simple | list |
13405@end example
13406
13407@item code block without arguments
13408a code block name (from the example above), as assigned by @code{#+NAME:},
13409optionally followed by parentheses
13410
13411@example
13412#+BEGIN_SRC emacs-lisp :var length=table-length()
86fbb8ca 13413(* 2 length)
e66ba1df 13414#+END_SRC
86fbb8ca 13415
8223b1d2 13416#+RESULTS:
86fbb8ca
CD
13417: 8
13418@end example
13419
e66ba1df
BG
13420@item code block with arguments
13421a code block name, as assigned by @code{#+NAME:}, followed by parentheses and
13422optional arguments passed within the parentheses following the
13423code block name using standard function call syntax
86fbb8ca
CD
13424
13425@example
e66ba1df
BG
13426#+NAME: double
13427#+BEGIN_SRC emacs-lisp :var input=8
86fbb8ca 13428(* 2 input)
e66ba1df 13429#+END_SRC
86fbb8ca 13430
8223b1d2 13431#+RESULTS: double
86fbb8ca
CD
13432: 16
13433
e66ba1df
BG
13434#+NAME: squared
13435#+BEGIN_SRC emacs-lisp :var input=double(input=1)
86fbb8ca 13436(* input input)
e66ba1df 13437#+END_SRC
86fbb8ca 13438
8223b1d2 13439#+RESULTS: squared
86fbb8ca
CD
13440: 4
13441@end example
e66ba1df
BG
13442
13443@item literal example
13444a literal example block named with a @code{#+NAME:} line
13445
13446@example
13447#+NAME: literal-example
13448#+BEGIN_EXAMPLE
13449A literal example
13450on two lines
13451#+END_EXAMPLE
13452
13453#+NAME: read-literal-example
13454#+BEGIN_SRC emacs-lisp :var x=literal-example
13455 (concatenate 'string x " for you.")
13456#+END_SRC
13457
8223b1d2 13458#+RESULTS: read-literal-example
e66ba1df
BG
13459: A literal example
13460: on two lines for you.
13461
13462@end example
13463
13464@end table
86fbb8ca
CD
13465
13466@subsubheading Alternate argument syntax
13467It is also possible to specify arguments in a potentially more natural way
e66ba1df
BG
13468using the @code{#+NAME:} line of a code block. As in the following
13469example, arguments can be packed inside of parentheses, separated by commas,
86fbb8ca
CD
13470following the source name.
13471
13472@example
e66ba1df
BG
13473#+NAME: double(input=0, x=2)
13474#+BEGIN_SRC emacs-lisp
86fbb8ca 13475(* 2 (+ input x))
e66ba1df 13476#+END_SRC
86fbb8ca
CD
13477@end example
13478
13479@subsubheading Indexable variable values
13480It is possible to reference portions of variable values by ``indexing'' into
13481the variables. Indexes are 0 based with negative values counting back from
13482the end. If an index is separated by @code{,}s then each subsequent section
ce57c2fe
BG
13483will index into the next deepest nesting or dimension of the value. Note
13484that this indexing occurs @emph{before} other table related header arguments
13485like @code{:hlines}, @code{:colnames} and @code{:rownames} are applied. The
86fbb8ca
CD
13486following example assigns the last cell of the first row the table
13487@code{example-table} to the variable @code{data}:
13488
13489@example
e66ba1df 13490#+NAME: example-table
86fbb8ca
CD
13491| 1 | a |
13492| 2 | b |
13493| 3 | c |
13494| 4 | d |
13495
e66ba1df 13496#+BEGIN_SRC emacs-lisp :var data=example-table[0,-1]
86fbb8ca 13497 data
e66ba1df 13498#+END_SRC
86fbb8ca 13499
8223b1d2 13500#+RESULTS:
86fbb8ca
CD
13501: a
13502@end example
13503
13504Ranges of variable values can be referenced using two integers separated by a
13505@code{:}, in which case the entire inclusive range is referenced. For
13506example the following assigns the middle three rows of @code{example-table}
13507to @code{data}.
13508
13509@example
e66ba1df 13510#+NAME: example-table
86fbb8ca
CD
13511| 1 | a |
13512| 2 | b |
13513| 3 | c |
13514| 4 | d |
13515| 5 | 3 |
13516
e66ba1df 13517#+BEGIN_SRC emacs-lisp :var data=example-table[1:3]
86fbb8ca 13518 data
e66ba1df 13519#+END_SRC
86fbb8ca 13520
8223b1d2 13521#+RESULTS:
86fbb8ca
CD
13522| 2 | b |
13523| 3 | c |
13524| 4 | d |
13525@end example
13526
13527Additionally, an empty index, or the single character @code{*}, are both
13528interpreted to mean the entire range and as such are equivalent to
13529@code{0:-1}, as shown in the following example in which the entire first
13530column is referenced.
13531
13532@example
e66ba1df 13533#+NAME: example-table
86fbb8ca
CD
13534| 1 | a |
13535| 2 | b |
13536| 3 | c |
13537| 4 | d |
13538
e66ba1df 13539#+BEGIN_SRC emacs-lisp :var data=example-table[,0]
86fbb8ca 13540 data
e66ba1df 13541#+END_SRC
86fbb8ca 13542
8223b1d2 13543#+RESULTS:
86fbb8ca
CD
13544| 1 | 2 | 3 | 4 |
13545@end example
13546
13547It is possible to index into the results of code blocks as well as tables.
13548Any number of dimensions can be indexed. Dimensions are separated from one
13549another by commas, as shown in the following example.
13550
13551@example
e66ba1df
BG
13552#+NAME: 3D
13553#+BEGIN_SRC emacs-lisp
86fbb8ca
CD
13554 '(((1 2 3) (4 5 6) (7 8 9))
13555 ((10 11 12) (13 14 15) (16 17 18))
13556 ((19 20 21) (22 23 24) (25 26 27)))
e66ba1df 13557#+END_SRC
86fbb8ca 13558
e66ba1df 13559#+BEGIN_SRC emacs-lisp :var data=3D[1,,1]
86fbb8ca 13560 data
e66ba1df 13561#+END_SRC
86fbb8ca 13562
8223b1d2 13563#+RESULTS:
86fbb8ca
CD
13564| 11 | 14 | 17 |
13565@end example
13566
ce57c2fe
BG
13567@subsubheading Emacs Lisp evaluation of variables
13568
13569Emacs lisp code can be used to initialize variable values. When a variable
e66ba1df
BG
13570value starts with @code{(}, @code{[}, @code{'} or @code{`} it will be
13571evaluated as Emacs Lisp and the result of the evaluation will be assigned as
13572the variable value. The following example demonstrates use of this
13573evaluation to reliably pass the file-name of the Org mode buffer to a code
13574block---note that evaluation of header arguments is guaranteed to take place
13575in the original Org mode file, while there is no such guarantee for
13576evaluation of the code block body.
ce57c2fe
BG
13577
13578@example
e66ba1df 13579#+BEGIN_SRC sh :var filename=(buffer-file-name) :exports both
ce57c2fe 13580 wc -w $filename
e66ba1df 13581#+END_SRC
ce57c2fe
BG
13582@end example
13583
13584Note that values read from tables and lists will not be evaluated as
13585Emacs Lisp, as shown in the following example.
13586
13587@example
e66ba1df 13588#+NAME: table
ce57c2fe
BG
13589| (a b c) |
13590
e66ba1df
BG
13591#+HEADERS: :var data=table[0,0]
13592#+BEGIN_SRC perl
ce57c2fe 13593 $data
e66ba1df 13594#+END_SRC
ce57c2fe 13595
8223b1d2 13596#+RESULTS:
ce57c2fe
BG
13597: (a b c)
13598@end example
13599
86fbb8ca
CD
13600@node results, file, var, Specific header arguments
13601@subsubsection @code{:results}
13602
acedf35c
CD
13603There are three classes of @code{:results} header argument. Only one option
13604per class may be supplied per code block.
86fbb8ca
CD
13605
13606@itemize @bullet
13607@item
13608@b{collection} header arguments specify how the results should be collected
13609from the code block
13610@item
13611@b{type} header arguments specify what type of result the code block will
13612return---which has implications for how they will be inserted into the
e66ba1df 13613Org mode buffer
86fbb8ca
CD
13614@item
13615@b{handling} header arguments specify how the results of evaluating the code
13616block should be handled.
13617@end itemize
13618
13619@subsubheading Collection
13620The following options are mutually exclusive, and specify how the results
13621should be collected from the code block.
13622
13623@itemize @bullet
13624@item @code{value}
13625This is the default. The result is the value of the last statement in the
13626code block. This header argument places the evaluation in functional
acedf35c 13627mode. Note that in some languages, e.g., Python, use of this result type
86fbb8ca 13628requires that a @code{return} statement be included in the body of the source
ce57c2fe 13629code block. E.g., @code{:results value}.
86fbb8ca
CD
13630@item @code{output}
13631The result is the collection of everything printed to STDOUT during the
13632execution of the code block. This header argument places the
13633evaluation in scripting mode. E.g., @code{:results output}.
13634@end itemize
13635
13636@subsubheading Type
13637
13638The following options are mutually exclusive and specify what type of results
13639the code block will return. By default, results are inserted as either a
13640table or scalar depending on their value.
13641
13642@itemize @bullet
13643@item @code{table}, @code{vector}
e66ba1df 13644The results should be interpreted as an Org mode table. If a single value is
86fbb8ca
CD
13645returned, it will be converted into a table with one row and one column.
13646E.g., @code{:results value table}.
acedf35c 13647@item @code{list}
e66ba1df 13648The results should be interpreted as an Org mode list. If a single scalar
acedf35c 13649value is returned it will be converted into a list with only one element.
86fbb8ca
CD
13650@item @code{scalar}, @code{verbatim}
13651The results should be interpreted literally---they will not be
e66ba1df 13652converted into a table. The results will be inserted into the Org mode
86fbb8ca
CD
13653buffer as quoted text. E.g., @code{:results value verbatim}.
13654@item @code{file}
13655The results will be interpreted as the path to a file, and will be inserted
e66ba1df 13656into the Org mode buffer as a file link. E.g., @code{:results value file}.
8223b1d2 13657@item @code{raw}
e66ba1df 13658The results are interpreted as raw Org mode code and are inserted directly
86fbb8ca 13659into the buffer. If the results look like a table they will be aligned as
e66ba1df 13660such by Org mode. E.g., @code{:results value raw}.
8223b1d2
BG
13661@item @code{org}
13662The results are will be enclosed in a @code{BEGIN_SRC org} block.
13663They are not comma-escaped by default but they will be if you hit @kbd{TAB}
13664in the block and/or if you export the file. E.g., @code{:results value org}.
86fbb8ca 13665@item @code{html}
8223b1d2 13666Results are assumed to be HTML and will be enclosed in a @code{BEGIN_HTML}
86fbb8ca
CD
13667block. E.g., @code{:results value html}.
13668@item @code{latex}
8223b1d2 13669Results assumed to be @LaTeX{} and are enclosed in a @code{BEGIN_LaTeX} block.
86fbb8ca
CD
13670E.g., @code{:results value latex}.
13671@item @code{code}
fac916bf 13672Result are assumed to be parsable code and are enclosed in a code block.
86fbb8ca
CD
13673E.g., @code{:results value code}.
13674@item @code{pp}
13675The result is converted to pretty-printed code and is enclosed in a code
acedf35c 13676block. This option currently supports Emacs Lisp, Python, and Ruby. E.g.,
86fbb8ca 13677@code{:results value pp}.
8223b1d2 13678@item @code{drawer}
153ae947 13679The result is wrapped in a RESULTS drawer. This can be useful for
ce57c2fe 13680inserting @code{raw} or @code{org} syntax results in such a way that their
153ae947 13681extent is known and they can be automatically removed or replaced.
86fbb8ca
CD
13682@end itemize
13683
13684@subsubheading Handling
13685The following results options indicate what happens with the
13686results once they are collected.
13687
13688@itemize @bullet
13689@item @code{silent}
13690The results will be echoed in the minibuffer but will not be inserted into
e66ba1df 13691the Org mode buffer. E.g., @code{:results output silent}.
86fbb8ca
CD
13692@item @code{replace}
13693The default value. Any existing results will be removed, and the new results
e66ba1df 13694will be inserted into the Org mode buffer in their place. E.g.,
86fbb8ca
CD
13695@code{:results output replace}.
13696@item @code{append}
13697If there are pre-existing results of the code block then the new results will
13698be appended to the existing results. Otherwise the new results will be
13699inserted as with @code{replace}.
13700@item @code{prepend}
13701If there are pre-existing results of the code block then the new results will
13702be prepended to the existing results. Otherwise the new results will be
13703inserted as with @code{replace}.
13704@end itemize
13705
8223b1d2 13706@node file, file-desc, results, Specific header arguments
86fbb8ca
CD
13707@subsubsection @code{:file}
13708
ce57c2fe 13709The header argument @code{:file} is used to specify an external file in which
e66ba1df 13710to save code block results. After code block evaluation an Org mode style
ce57c2fe 13711@code{[[file:]]} link (see @ref{Link format}) to the file will be inserted
e66ba1df 13712into the Org mode buffer. Some languages including R, gnuplot, dot, and
ce57c2fe
BG
13713ditaa provide special handling of the @code{:file} header argument
13714automatically wrapping the code block body in the boilerplate code required
13715to save output to the specified file. This is often useful for saving
13716graphical output of a code block to the specified file.
86fbb8ca 13717
ce57c2fe
BG
13718The argument to @code{:file} should be either a string specifying the path to
13719a file, or a list of two strings in which case the first element of the list
13720should be the path to a file and the second a description for the link.
86fbb8ca 13721
8223b1d2
BG
13722@node file-desc, dir, file, Specific header arguments
13723@subsubsection @code{:file-desc}
13724
13725The value of the @code{:file-desc} header argument is used to provide a
13726description for file code block results which are inserted as Org mode links
13727(see @ref{Link format}). If the @code{:file-desc} header argument is given
13728with no value the link path will be placed in both the ``link'' and the
13729``description'' portion of the Org mode link.
13730
13731@node dir, exports, file-desc, Specific header arguments
86fbb8ca
CD
13732@subsubsection @code{:dir} and remote execution
13733
13734While the @code{:file} header argument can be used to specify the path to the
13735output file, @code{:dir} specifies the default directory during code block
ce57c2fe
BG
13736execution. If it is absent, then the directory associated with the current
13737buffer is used. In other words, supplying @code{:dir path} temporarily has
86fbb8ca 13738the same effect as changing the current directory with @kbd{M-x cd path}, and
ce57c2fe 13739then not supplying @code{:dir}. Under the surface, @code{:dir} simply sets
86fbb8ca
CD
13740the value of the Emacs variable @code{default-directory}.
13741
13742When using @code{:dir}, you should supply a relative path for file output
1df7defd 13743(e.g., @code{:file myfile.jpg} or @code{:file results/myfile.jpg}) in which
86fbb8ca
CD
13744case that path will be interpreted relative to the default directory.
13745
acedf35c
CD
13746In other words, if you want your plot to go into a folder called @file{Work}
13747in your home directory, you could use
86fbb8ca
CD
13748
13749@example
e66ba1df 13750#+BEGIN_SRC R :file myplot.png :dir ~/Work
86fbb8ca 13751matplot(matrix(rnorm(100), 10), type="l")
e66ba1df 13752#+END_SRC
86fbb8ca
CD
13753@end example
13754
13755@subsubheading Remote execution
13756A directory on a remote machine can be specified using tramp file syntax, in
ce57c2fe 13757which case the code will be evaluated on the remote machine. An example is
86fbb8ca
CD
13758
13759@example
e66ba1df 13760#+BEGIN_SRC R :file plot.png :dir /dand@@yakuba.princeton.edu:
86fbb8ca 13761plot(1:10, main=system("hostname", intern=TRUE))
e66ba1df 13762#+END_SRC
86fbb8ca
CD
13763@end example
13764
e66ba1df 13765Text results will be returned to the local Org mode buffer as usual, and file
86fbb8ca 13766output will be created on the remote machine with relative paths interpreted
e66ba1df 13767relative to the remote directory. An Org mode link to the remote file will be
86fbb8ca
CD
13768created.
13769
13770So, in the above example a plot will be created on the remote machine,
13771and a link of the following form will be inserted in the org buffer:
13772
13773@example
13774[[file:/scp:dand@@yakuba.princeton.edu:/home/dand/plot.png][plot.png]]
13775@end example
13776
13777Most of this functionality follows immediately from the fact that @code{:dir}
13778sets the value of the Emacs variable @code{default-directory}, thanks to
ce57c2fe 13779tramp. Those using XEmacs, or GNU Emacs prior to version 23 may need to
acedf35c 13780install tramp separately in order for these features to work correctly.
86fbb8ca
CD
13781
13782@subsubheading Further points
13783
13784@itemize @bullet
13785@item
13786If @code{:dir} is used in conjunction with @code{:session}, although it will
13787determine the starting directory for a new session as expected, no attempt is
13788currently made to alter the directory associated with an existing session.
13789@item
13790@code{:dir} should typically not be used to create files during export with
ce57c2fe 13791@code{:exports results} or @code{:exports both}. The reason is that, in order
86fbb8ca 13792to retain portability of exported material between machines, during export
e66ba1df 13793links inserted into the buffer will @emph{not} be expanded against @code{default
ce57c2fe 13794directory}. Therefore, if @code{default-directory} is altered using
86fbb8ca
CD
13795@code{:dir}, it is probable that the file will be created in a location to
13796which the link does not point.
13797@end itemize
13798
13799@node exports, tangle, dir, Specific header arguments
13800@subsubsection @code{:exports}
13801
13802The @code{:exports} header argument specifies what should be included in HTML
e66ba1df 13803or @LaTeX{} exports of the Org mode file.
86fbb8ca
CD
13804
13805@itemize @bullet
13806@item @code{code}
13807The default. The body of code is included into the exported file. E.g.,
13808@code{:exports code}.
13809@item @code{results}
ce57c2fe 13810The result of evaluating the code is included in the exported file. E.g.,
86fbb8ca
CD
13811@code{:exports results}.
13812@item @code{both}
ce57c2fe 13813Both the code and results are included in the exported file. E.g.,
86fbb8ca
CD
13814@code{:exports both}.
13815@item @code{none}
13816Nothing is included in the exported file. E.g., @code{:exports none}.
13817@end itemize
13818
ce57c2fe 13819@node tangle, mkdirp, exports, Specific header arguments
86fbb8ca
CD
13820@subsubsection @code{:tangle}
13821
13822The @code{:tangle} header argument specifies whether or not the code
13823block should be included in tangled extraction of source code files.
13824
13825@itemize @bullet
acedf35c 13826@item @code{tangle}
ce57c2fe 13827The code block is exported to a source code file named after the full path
e66ba1df 13828(including the directory) and file name (w/o extension) of the Org mode file.
ce57c2fe 13829E.g., @code{:tangle yes}.
86fbb8ca
CD
13830@item @code{no}
13831The default. The code block is not exported to a source code file.
13832E.g., @code{:tangle no}.
13833@item other
13834Any other string passed to the @code{:tangle} header argument is interpreted
e66ba1df 13835as a path (directory and file name relative to the directory of the Org mode
ce57c2fe 13836file) to which the block will be exported. E.g., @code{:tangle path}.
86fbb8ca
CD
13837@end itemize
13838
ce57c2fe
BG
13839@node mkdirp, comments, tangle, Specific header arguments
13840@subsubsection @code{:mkdirp}
13841
13842The @code{:mkdirp} header argument can be used to create parent directories
13843of tangled files when missing. This can be set to @code{yes} to enable
13844directory creation or to @code{no} to inhibit directory creation.
13845
13846@node comments, padline, mkdirp, Specific header arguments
86fbb8ca
CD
13847@subsubsection @code{:comments}
13848By default code blocks are tangled to source-code files without any insertion
13849of comments beyond those which may already exist in the body of the code
afe98dfa
CD
13850block. The @code{:comments} header argument can be set as follows to control
13851the insertion of extra comments into the tangled code file.
13852
13853@itemize @bullet
13854@item @code{no}
13855The default. No extra comments are inserted during tangling.
13856@item @code{link}
13857The code block is wrapped in comments which contain pointers back to the
13858original Org file from which the code was tangled.
13859@item @code{yes}
13860A synonym for ``link'' to maintain backwards compatibility.
13861@item @code{org}
e66ba1df 13862Include text from the Org mode file as a comment.
afe98dfa
CD
13863
13864The text is picked from the leading context of the tangled code and is
13865limited by the nearest headline or source block as the case may be.
13866@item @code{both}
13867Turns on both the ``link'' and ``org'' comment options.
ce57c2fe
BG
13868@item @code{noweb}
13869Turns on the ``link'' comment option, and additionally wraps expanded noweb
13870references in the code block body in link comments.
afe98dfa 13871@end itemize
86fbb8ca 13872
ce57c2fe
BG
13873@node padline, no-expand, comments, Specific header arguments
13874@subsubsection @code{:padline}
13875Control in insertion of padding lines around code block bodies in tangled
13876code files. The default value is @code{yes} which results in insertion of
13877newlines before and after each tangled code block. The following arguments
13878are accepted.
13879
13880@itemize @bullet
13881@item @code{yes}
13882Insert newlines before and after each code block body in tangled code files.
13883@item @code{no}
13884Do not insert any newline padding in tangled output.
13885@end itemize
13886
13887@node no-expand, session, padline, Specific header arguments
86fbb8ca
CD
13888@subsubsection @code{:no-expand}
13889
13890By default, code blocks are expanded with @code{org-babel-expand-src-block}
13891during tangling. This has the effect of assigning values to variables
13892specified with @code{:var} (see @ref{var}), and of replacing ``noweb''
13893references (see @ref{Noweb reference syntax}) with their targets. The
13894@code{:no-expand} header argument can be used to turn off this behavior.
13895
13896@node session, noweb, no-expand, Specific header arguments
13897@subsubsection @code{:session}
13898
13899The @code{:session} header argument starts a session for an interpreted
13900language where state is preserved.
13901
13902By default, a session is not started.
13903
13904A string passed to the @code{:session} header argument will give the session
13905a name. This makes it possible to run concurrent sessions for each
13906interpreted language.
13907
ce57c2fe 13908@node noweb, noweb-ref, session, Specific header arguments
86fbb8ca
CD
13909@subsubsection @code{:noweb}
13910
8223b1d2
BG
13911The @code{:noweb} header argument controls expansion of ``noweb'' syntax
13912references (see @ref{Noweb reference syntax}) when the code block is
13913evaluated, tangled, or exported. The @code{:noweb} header argument can have
13914one of the five values: @code{no}, @code{yes}, @code{tangle}, or
13915@code{no-export} @code{strip-export}.
86fbb8ca
CD
13916
13917@itemize @bullet
13918@item @code{no}
8223b1d2
BG
13919The default. ``Noweb'' syntax references in the body of the code block will
13920not be expanded before the code block is evaluated, tangled or exported.
13921@item @code{yes}
13922``Noweb'' syntax references in the body of the code block will be
13923expanded before the code block is evaluated, tangled or exported.
acedf35c 13924@item @code{tangle}
8223b1d2
BG
13925``Noweb'' syntax references in the body of the code block will be expanded
13926before the code block is tangled. However, ``noweb'' syntax references will
13927not be expanded when the code block is evaluated or exported.
13928@item @code{no-export}
13929``Noweb'' syntax references in the body of the code block will be expanded
13930before the block is evaluated or tangled. However, ``noweb'' syntax
13931references will not be expanded when the code block is exported.
13932@item @code{strip-export}
13933``Noweb'' syntax references in the body of the code block will be expanded
13934before the block is evaluated or tangled. However, ``noweb'' syntax
13935references will not be removed when the code block is exported.
13936@item @code{eval}
13937``Noweb'' syntax references in the body of the code block will only be
13938expanded before the block is evaluated.
86fbb8ca
CD
13939@end itemize
13940
13941@subsubheading Noweb prefix lines
13942Noweb insertions are now placed behind the line prefix of the
13943@code{<<reference>>}.
13944This behavior is illustrated in the following example. Because the
13945@code{<<example>>} noweb reference appears behind the SQL comment syntax,
13946each line of the expanded noweb reference will be commented.
13947
13948This code block:
13949
13950@example
13951-- <<example>>
13952@end example
13953
86fbb8ca
CD
13954expands to:
13955
13956@example
13957-- this is the
13958-- multi-line body of example
13959@end example
13960
13961Note that noweb replacement text that does not contain any newlines will not
13962be affected by this change, so it is still possible to use inline noweb
13963references.
13964
153ae947 13965@node noweb-ref, noweb-sep, noweb, Specific header arguments
ce57c2fe
BG
13966@subsubsection @code{:noweb-ref}
13967When expanding ``noweb'' style references the bodies of all code block with
13968@emph{either} a block name matching the reference name @emph{or} a
13969@code{:noweb-ref} header argument matching the reference name will be
13970concatenated together to form the replacement text.
13971
13972By setting this header argument at the sub-tree or file level, simple code
13973block concatenation may be achieved. For example, when tangling the
e66ba1df
BG
13974following Org mode file, the bodies of code blocks will be concatenated into
13975the resulting pure code file@footnote{(The example needs property inheritance
13976to be turned on for the @code{noweb-ref} property, see @ref{Property
13977inheritance}).}.
ce57c2fe
BG
13978
13979@example
e66ba1df 13980 #+BEGIN_SRC sh :tangle yes :noweb yes :shebang #!/bin/sh
ce57c2fe 13981 <<fullest-disk>>
e66ba1df 13982 #+END_SRC
ce57c2fe
BG
13983 * the mount point of the fullest disk
13984 :PROPERTIES:
13985 :noweb-ref: fullest-disk
13986 :END:
13987
13988 ** query all mounted disks
e66ba1df 13989 #+BEGIN_SRC sh
ce57c2fe 13990 df \
e66ba1df 13991 #+END_SRC
ce57c2fe
BG
13992
13993 ** strip the header row
e66ba1df 13994 #+BEGIN_SRC sh
ce57c2fe 13995 |sed '1d' \
e66ba1df 13996 #+END_SRC
ce57c2fe
BG
13997
13998 ** sort by the percent full
e66ba1df 13999 #+BEGIN_SRC sh
ce57c2fe 14000 |awk '@{print $5 " " $6@}'|sort -n |tail -1 \
e66ba1df 14001 #+END_SRC
ce57c2fe
BG
14002
14003 ** extract the mount point
e66ba1df 14004 #+BEGIN_SRC sh
ce57c2fe 14005 |awk '@{print $2@}'
e66ba1df 14006 #+END_SRC
ce57c2fe
BG
14007@end example
14008
153ae947
BG
14009The @code{:noweb-sep} (see @ref{noweb-sep}) header argument holds the string
14010used to separate accumulate noweb references like those above. By default a
14011newline is used.
14012
14013@node noweb-sep, cache, noweb-ref, Specific header arguments
14014@subsubsection @code{:noweb-sep}
14015
14016The @code{:noweb-sep} header argument holds the string used to separate
14017accumulate noweb references (see @ref{noweb-ref}). By default a newline is
14018used.
14019
14020@node cache, sep, noweb-sep, Specific header arguments
86fbb8ca
CD
14021@subsubsection @code{:cache}
14022
14023The @code{:cache} header argument controls the use of in-buffer caching of
14024the results of evaluating code blocks. It can be used to avoid re-evaluating
153ae947
BG
14025unchanged code blocks. Note that the @code{:cache} header argument will not
14026attempt to cache results when the @code{:session} header argument is used,
14027because the results of the code block execution may be stored in the session
8223b1d2 14028outside of the Org mode buffer. The @code{:cache} header argument can have
153ae947 14029one of two values: @code{yes} or @code{no}.
86fbb8ca
CD
14030
14031@itemize @bullet
14032@item @code{no}
14033The default. No caching takes place, and the code block will be evaluated
14034every time it is called.
14035@item @code{yes}
acedf35c 14036Every time the code block is run a SHA1 hash of the code and arguments
86fbb8ca 14037passed to the block will be generated. This hash is packed into the
8223b1d2 14038@code{#+RESULTS:} line and will be checked on subsequent
86fbb8ca
CD
14039executions of the code block. If the code block has not
14040changed since the last time it was evaluated, it will not be re-evaluated.
14041@end itemize
14042
ce57c2fe
BG
14043Code block caches notice if the value of a variable argument
14044to the code block has changed. If this is the case, the cache is
14045invalidated and the code block is re-run. In the following example,
14046@code{caller} will not be re-run unless the results of @code{random} have
14047changed since it was last run.
14048
14049@example
e66ba1df
BG
14050 #+NAME: random
14051 #+BEGIN_SRC R :cache yes
ce57c2fe 14052 runif(1)
e66ba1df 14053 #+END_SRC
ce57c2fe 14054
8223b1d2 14055 #+RESULTS[a2a72cd647ad44515fab62e144796432793d68e1]: random
ce57c2fe
BG
14056 0.4659510825295
14057
e66ba1df
BG
14058 #+NAME: caller
14059 #+BEGIN_SRC emacs-lisp :var x=random :cache yes
ce57c2fe 14060 x
e66ba1df 14061 #+END_SRC
ce57c2fe 14062
8223b1d2 14063 #+RESULTS[bec9c8724e397d5df3b696502df3ed7892fc4f5f]: caller
ce57c2fe
BG
14064 0.254227238707244
14065@end example
14066
14067@node sep, hlines, cache, Specific header arguments
14068@subsubsection @code{:sep}
14069
14070The @code{:sep} header argument can be used to control the delimiter used
e66ba1df 14071when writing tabular results out to files external to Org mode. This is used
ce57c2fe
BG
14072either when opening tabular results of a code block by calling the
14073@code{org-open-at-point} function bound to @kbd{C-c C-o} on the code block,
14074or when writing code block results to an external file (see @ref{file})
14075header argument.
14076
14077By default, when @code{:sep} is not specified output tables are tab
14078delimited.
14079
14080@node hlines, colnames, sep, Specific header arguments
86fbb8ca
CD
14081@subsubsection @code{:hlines}
14082
14083Tables are frequently represented with one or more horizontal lines, or
14084hlines. The @code{:hlines} argument to a code block accepts the
14085values @code{yes} or @code{no}, with a default value of @code{no}.
14086
14087@itemize @bullet
14088@item @code{no}
14089Strips horizontal lines from the input table. In most languages this is the
14090desired effect because an @code{hline} symbol is interpreted as an unbound
14091variable and raises an error. Setting @code{:hlines no} or relying on the
14092default value yields the following results.
14093
14094@example
e66ba1df 14095#+TBLNAME: many-cols
86fbb8ca
CD
14096| a | b | c |
14097|---+---+---|
14098| d | e | f |
14099|---+---+---|
14100| g | h | i |
14101
e66ba1df
BG
14102#+NAME: echo-table
14103#+BEGIN_SRC python :var tab=many-cols
86fbb8ca 14104 return tab
e66ba1df 14105#+END_SRC
86fbb8ca 14106
8223b1d2 14107#+RESULTS: echo-table
86fbb8ca
CD
14108| a | b | c |
14109| d | e | f |
14110| g | h | i |
14111@end example
14112
14113@item @code{yes}
ce57c2fe 14114Leaves hlines in the table. Setting @code{:hlines yes} has this effect.
86fbb8ca
CD
14115
14116@example
e66ba1df 14117#+TBLNAME: many-cols
86fbb8ca
CD
14118| a | b | c |
14119|---+---+---|
14120| d | e | f |
14121|---+---+---|
14122| g | h | i |
14123
e66ba1df
BG
14124#+NAME: echo-table
14125#+BEGIN_SRC python :var tab=many-cols :hlines yes
86fbb8ca 14126 return tab
e66ba1df 14127#+END_SRC
86fbb8ca 14128
8223b1d2 14129#+RESULTS: echo-table
86fbb8ca
CD
14130| a | b | c |
14131|---+---+---|
14132| d | e | f |
14133|---+---+---|
14134| g | h | i |
14135@end example
14136@end itemize
14137
14138@node colnames, rownames, hlines, Specific header arguments
14139@subsubsection @code{:colnames}
14140
14141The @code{:colnames} header argument accepts the values @code{yes},
14142@code{no}, or @code{nil} for unassigned. The default value is @code{nil}.
e66ba1df
BG
14143Note that the behavior of the @code{:colnames} header argument may differ
14144across languages. For example Emacs Lisp code blocks ignore the
14145@code{:colnames} header argument entirely given the ease with which tables
14146with column names may be handled directly in Emacs Lisp.
86fbb8ca
CD
14147
14148@itemize @bullet
14149@item @code{nil}
14150If an input table looks like it has column names
14151(because its second row is an hline), then the column
14152names will be removed from the table before
14153processing, then reapplied to the results.
14154
14155@example
e66ba1df 14156#+TBLNAME: less-cols
86fbb8ca
CD
14157| a |
14158|---|
14159| b |
14160| c |
14161
e66ba1df
BG
14162#+NAME: echo-table-again
14163#+BEGIN_SRC python :var tab=less-cols
86fbb8ca 14164 return [[val + '*' for val in row] for row in tab]
e66ba1df 14165#+END_SRC
86fbb8ca 14166
8223b1d2 14167#+RESULTS: echo-table-again
86fbb8ca
CD
14168| a |
14169|----|
14170| b* |
14171| c* |
14172@end example
14173
ce57c2fe
BG
14174Please note that column names are not removed before the table is indexed
14175using variable indexing @xref{var, Indexable variable values}.
14176
86fbb8ca
CD
14177@item @code{no}
14178No column name pre-processing takes place
14179
14180@item @code{yes}
14181Column names are removed and reapplied as with @code{nil} even if the table
1df7defd 14182does not ``look like'' it has column names (i.e., the second row is not an
86fbb8ca
CD
14183hline)
14184@end itemize
14185
14186@node rownames, shebang, colnames, Specific header arguments
14187@subsubsection @code{:rownames}
14188
14189The @code{:rownames} header argument can take on the values @code{yes}
14190or @code{no}, with a default value of @code{no}.
14191
14192@itemize @bullet
14193@item @code{no}
14194No row name pre-processing will take place.
14195
14196@item @code{yes}
14197The first column of the table is removed from the table before processing,
14198and is then reapplied to the results.
14199
14200@example
e66ba1df 14201#+TBLNAME: with-rownames
86fbb8ca
CD
14202| one | 1 | 2 | 3 | 4 | 5 |
14203| two | 6 | 7 | 8 | 9 | 10 |
14204
e66ba1df
BG
14205#+NAME: echo-table-once-again
14206#+BEGIN_SRC python :var tab=with-rownames :rownames yes
86fbb8ca 14207 return [[val + 10 for val in row] for row in tab]
e66ba1df 14208#+END_SRC
86fbb8ca 14209
8223b1d2 14210#+RESULTS: echo-table-once-again
86fbb8ca
CD
14211| one | 11 | 12 | 13 | 14 | 15 |
14212| two | 16 | 17 | 18 | 19 | 20 |
14213@end example
ce57c2fe
BG
14214
14215Please note that row names are not removed before the table is indexed using
14216variable indexing @xref{var, Indexable variable values}.
14217
86fbb8ca
CD
14218@end itemize
14219
14220@node shebang, eval, rownames, Specific header arguments
14221@subsubsection @code{:shebang}
14222
14223Setting the @code{:shebang} header argument to a string value
1df7defd 14224(e.g., @code{:shebang "#!/bin/bash"}) causes the string to be inserted as the
86fbb8ca
CD
14225first line of any tangled file holding the code block, and the file
14226permissions of the tangled file are set to make it executable.
14227
8223b1d2 14228@node eval, wrap, shebang, Specific header arguments
86fbb8ca
CD
14229@subsubsection @code{:eval}
14230The @code{:eval} header argument can be used to limit the evaluation of
e66ba1df
BG
14231specific code blocks. The @code{:eval} header argument can be useful for
14232protecting against the evaluation of dangerous code blocks or to ensure that
14233evaluation will require a query regardless of the value of the
14234@code{org-confirm-babel-evaluate} variable. The possible values of
14235@code{:eval} and their effects are shown below.
14236
14237@table @code
14238@item never or no
14239The code block will not be evaluated under any circumstances.
14240@item query
14241Evaluation of the code block will require a query.
14242@item never-export or no-export
14243The code block will not be evaluated during export but may still be called
14244interactively.
14245@item query-export
14246Evaluation of the code block during export will require a query.
14247@end table
86fbb8ca 14248
ce57c2fe
BG
14249If this header argument is not set then evaluation is determined by the value
14250of the @code{org-confirm-babel-evaluate} variable see @ref{Code evaluation
14251security}.
14252
8223b1d2
BG
14253@node wrap, , eval, Specific header arguments
14254@subsubsection @code{:wrap}
14255The @code{:wrap} header argument is used to mark the results of source block
14256evaluation. The header argument can be passed a string that will be appended
14257to @code{#+BEGIN_} and @code{#+END_}, which will then be used to wrap the
14258results. If not string is specified then the results will be wrapped in a
14259@code{#+BEGIN/END_RESULTS} block.
14260
86fbb8ca
CD
14261@node Results of evaluation, Noweb reference syntax, Header arguments, Working With Source Code
14262@section Results of evaluation
14263@cindex code block, results of evaluation
14264@cindex source code, results of evaluation
14265
14266The way in which results are handled depends on whether a session is invoked,
14267as well as on whether @code{:results value} or @code{:results output} is
ce57c2fe
BG
14268used. The following table shows the table possibilities. For a full listing
14269of the possible results header arguments see @ref{results}.
86fbb8ca
CD
14270
14271@multitable @columnfractions 0.26 0.33 0.41
14272@item @tab @b{Non-session} @tab @b{Session}
14273@item @code{:results value} @tab value of last expression @tab value of last expression
14274@item @code{:results output} @tab contents of STDOUT @tab concatenation of interpreter output
14275@end multitable
14276
14277Note: With @code{:results value}, the result in both @code{:session} and
e66ba1df 14278non-session is returned to Org mode as a table (a one- or two-dimensional
86fbb8ca
CD
14279vector of strings or numbers) when appropriate.
14280
14281@subsection Non-session
14282@subsubsection @code{:results value}
ce57c2fe 14283This is the default. Internally, the value is obtained by wrapping the code
86fbb8ca 14284in a function definition in the external language, and evaluating that
ce57c2fe
BG
14285function. Therefore, code should be written as if it were the body of such a
14286function. In particular, note that Python does not automatically return a
86fbb8ca 14287value from a function unless a @code{return} statement is present, and so a
acedf35c 14288@samp{return} statement will usually be required in Python.
86fbb8ca
CD
14289
14290This is the only one of the four evaluation contexts in which the code is
14291automatically wrapped in a function definition.
14292
14293@subsubsection @code{:results output}
14294The code is passed to the interpreter as an external process, and the
ce57c2fe 14295contents of the standard output stream are returned as text. (In certain
86fbb8ca
CD
14296languages this also contains the error output stream; this is an area for
14297future work.)
14298
acedf35c 14299@subsection Session
86fbb8ca 14300@subsubsection @code{:results value}
ce57c2fe
BG
14301The code is passed to an interpreter running as an interactive Emacs inferior
14302process. Only languages which provide tools for interactive evaluation of
14303code have session support, so some language (e.g., C and ditaa) do not
14304support the @code{:session} header argument, and in other languages (e.g.,
14305Python and Haskell) which have limitations on the code which may be entered
14306into interactive sessions, those limitations apply to the code in code blocks
14307using the @code{:session} header argument as well.
14308
14309Unless the @code{:results output} option is supplied (see below) the result
14310returned is the result of the last evaluation performed by the
14311interpreter. (This is obtained in a language-specific manner: the value of
14312the variable @code{_} in Python and Ruby, and the value of @code{.Last.value}
14313in R).
86fbb8ca
CD
14314
14315@subsubsection @code{:results output}
14316The code is passed to the interpreter running as an interactive Emacs
ce57c2fe
BG
14317inferior process. The result returned is the concatenation of the sequence of
14318(text) output from the interactive interpreter. Notice that this is not
86fbb8ca
CD
14319necessarily the same as what would be sent to @code{STDOUT} if the same code
14320were passed to a non-interactive interpreter running as an external
ce57c2fe 14321process. For example, compare the following two blocks:
86fbb8ca
CD
14322
14323@example
e66ba1df 14324#+BEGIN_SRC python :results output
86fbb8ca
CD
14325 print "hello"
14326 2
14327 print "bye"
e66ba1df 14328#+END_SRC
86fbb8ca 14329
8223b1d2 14330#+RESULTS:
86fbb8ca
CD
14331: hello
14332: bye
14333@end example
14334
acedf35c 14335In non-session mode, the `2' is not printed and does not appear.
63aa0982 14336
86fbb8ca 14337@example
e66ba1df 14338#+BEGIN_SRC python :results output :session
86fbb8ca
CD
14339 print "hello"
14340 2
14341 print "bye"
e66ba1df 14342#+END_SRC
86fbb8ca 14343
8223b1d2 14344#+RESULTS:
86fbb8ca
CD
14345: hello
14346: 2
14347: bye
14348@end example
14349
acedf35c 14350But in @code{:session} mode, the interactive interpreter receives input `2'
ce57c2fe 14351and prints out its value, `2'. (Indeed, the other print statements are
86fbb8ca
CD
14352unnecessary here).
14353
14354@node Noweb reference syntax, Key bindings and useful functions, Results of evaluation, Working With Source Code
14355@section Noweb reference syntax
14356@cindex code block, noweb reference
14357@cindex syntax, noweb
14358@cindex source code, noweb reference
14359
14360The ``noweb'' (see @uref{http://www.cs.tufts.edu/~nr/noweb/}) Literate
14361Programming system allows named blocks of code to be referenced by using the
14362familiar Noweb syntax:
14363
14364@example
14365<<code-block-name>>
14366@end example
14367
14368When a code block is tangled or evaluated, whether or not ``noweb''
14369references are expanded depends upon the value of the @code{:noweb} header
14370argument. If @code{:noweb yes}, then a Noweb reference is expanded before
14371evaluation. If @code{:noweb no}, the default, then the reference is not
e66ba1df
BG
14372expanded before evaluation. See the @ref{noweb-ref} header argument for
14373a more flexible way to resolve noweb references.
86fbb8ca 14374
153ae947
BG
14375It is possible to include the @emph{results} of a code block rather than the
14376body. This is done by appending parenthesis to the code block name which may
14377optionally contain arguments to the code block as shown below.
14378
14379@example
14380<<code-block-name(optional arguments)>>
14381@end example
14382
86fbb8ca
CD
14383Note: the default value, @code{:noweb no}, was chosen to ensure that
14384correct code is not broken in a language, such as Ruby, where
14385@code{<<arg>>} is a syntactically valid construct. If @code{<<arg>>} is not
14386syntactically valid in languages that you use, then please consider setting
14387the default value.
14388
8223b1d2 14389Note: if noweb tangling is slow in large Org mode files consider setting the
e66ba1df
BG
14390@code{*org-babel-use-quick-and-dirty-noweb-expansion*} variable to true.
14391This will result in faster noweb reference resolution at the expense of not
14392correctly resolving inherited values of the @code{:noweb-ref} header
14393argument.
14394
86fbb8ca
CD
14395@node Key bindings and useful functions, Batch execution, Noweb reference syntax, Working With Source Code
14396@section Key bindings and useful functions
14397@cindex code block, key bindings
14398
e66ba1df 14399Many common Org mode key sequences are re-bound depending on
86fbb8ca
CD
14400the context.
14401
14402Within a code block, the following key bindings
14403are active:
14404
14405@multitable @columnfractions 0.25 0.75
14406@kindex C-c C-c
ce57c2fe 14407@item @kbd{C-c C-c} @tab @code{org-babel-execute-src-block}
86fbb8ca 14408@kindex C-c C-o
ce57c2fe 14409@item @kbd{C-c C-o} @tab @code{org-babel-open-src-block-result}
86fbb8ca 14410@kindex C-up
ce57c2fe 14411@item @kbd{C-@key{up}} @tab @code{org-babel-load-in-session}
86fbb8ca 14412@kindex M-down
ce57c2fe 14413@item @kbd{M-@key{down}} @tab @code{org-babel-pop-to-session}
86fbb8ca
CD
14414@end multitable
14415
e66ba1df 14416In an Org mode buffer, the following key bindings are active:
86fbb8ca
CD
14417
14418@multitable @columnfractions 0.45 0.55
153ae947
BG
14419@kindex C-c C-v p
14420@kindex C-c C-v C-p
14421@item @kbd{C-c C-v p} @ @ @r{or} @ @ @kbd{C-c C-v C-p} @tab @code{org-babel-previous-src-block}
14422@kindex C-c C-v n
14423@kindex C-c C-v C-n
14424@item @kbd{C-c C-v n} @ @ @r{or} @ @ @kbd{C-c C-v C-n} @tab @code{org-babel-next-src-block}
14425@kindex C-c C-v e
14426@kindex C-c C-v C-e
14427@item @kbd{C-c C-v e} @ @ @r{or} @ @ @kbd{C-c C-v C-e} @tab @code{org-babel-execute-maybe}
14428@kindex C-c C-v o
14429@kindex C-c C-v C-o
14430@item @kbd{C-c C-v o} @ @ @r{or} @ @ @kbd{C-c C-v C-o} @tab @code{org-babel-open-src-block-result}
14431@kindex C-c C-v v
14432@kindex C-c C-v C-v
14433@item @kbd{C-c C-v v} @ @ @r{or} @ @ @kbd{C-c C-v C-v} @tab @code{org-babel-expand-src-block}
14434@kindex C-c C-v u
14435@kindex C-c C-v C-u
14436@item @kbd{C-c C-v u} @ @ @r{or} @ @ @kbd{C-c C-v C-u} @tab @code{org-babel-goto-src-block-head}
14437@kindex C-c C-v g
14438@kindex C-c C-v C-g
14439@item @kbd{C-c C-v g} @ @ @r{or} @ @ @kbd{C-c C-v C-g} @tab @code{org-babel-goto-named-src-block}
14440@kindex C-c C-v r
14441@kindex C-c C-v C-r
14442@item @kbd{C-c C-v r} @ @ @r{or} @ @ @kbd{C-c C-v C-r} @tab @code{org-babel-goto-named-result}
86fbb8ca
CD
14443@kindex C-c C-v b
14444@kindex C-c C-v C-b
ce57c2fe 14445@item @kbd{C-c C-v b} @ @ @r{or} @ @ @kbd{C-c C-v C-b} @tab @code{org-babel-execute-buffer}
86fbb8ca
CD
14446@kindex C-c C-v s
14447@kindex C-c C-v C-s
ce57c2fe 14448@item @kbd{C-c C-v s} @ @ @r{or} @ @ @kbd{C-c C-v C-s} @tab @code{org-babel-execute-subtree}
153ae947
BG
14449@kindex C-c C-v d
14450@kindex C-c C-v C-d
14451@item @kbd{C-c C-v d} @ @ @r{or} @ @ @kbd{C-c C-v C-d} @tab @code{org-babel-demarcate-block}
86fbb8ca
CD
14452@kindex C-c C-v t
14453@kindex C-c C-v C-t
ce57c2fe 14454@item @kbd{C-c C-v t} @ @ @r{or} @ @ @kbd{C-c C-v C-t} @tab @code{org-babel-tangle}
153ae947
BG
14455@kindex C-c C-v f
14456@kindex C-c C-v C-f
14457@item @kbd{C-c C-v f} @ @ @r{or} @ @ @kbd{C-c C-v C-f} @tab @code{org-babel-tangle-file}
14458@kindex C-c C-v c
14459@kindex C-c C-v C-c
14460@item @kbd{C-c C-v c} @ @ @r{or} @ @ @kbd{C-c C-v C-c} @tab @code{org-babel-check-src-block}
14461@kindex C-c C-v j
14462@kindex C-c C-v C-j
14463@item @kbd{C-c C-v j} @ @ @r{or} @ @ @kbd{C-c C-v C-j} @tab @code{org-babel-insert-header-arg}
14464@kindex C-c C-v l
14465@kindex C-c C-v C-l
14466@item @kbd{C-c C-v l} @ @ @r{or} @ @ @kbd{C-c C-v C-l} @tab @code{org-babel-load-in-session}
14467@kindex C-c C-v i
14468@kindex C-c C-v C-i
14469@item @kbd{C-c C-v i} @ @ @r{or} @ @ @kbd{C-c C-v C-i} @tab @code{org-babel-lob-ingest}
14470@kindex C-c C-v I
14471@kindex C-c C-v C-I
14472@item @kbd{C-c C-v I} @ @ @r{or} @ @ @kbd{C-c C-v C-I} @tab @code{org-babel-view-src-block-info}
86fbb8ca
CD
14473@kindex C-c C-v z
14474@kindex C-c C-v C-z
153ae947
BG
14475@item @kbd{C-c C-v z} @ @ @r{or} @ @ @kbd{C-c C-v C-z} @tab @code{org-babel-switch-to-session-with-code}
14476@kindex C-c C-v a
14477@kindex C-c C-v C-a
14478@item @kbd{C-c C-v a} @ @ @r{or} @ @ @kbd{C-c C-v C-a} @tab @code{org-babel-sha1-hash}
14479@kindex C-c C-v h
14480@kindex C-c C-v C-h
14481@item @kbd{C-c C-v h} @ @ @r{or} @ @ @kbd{C-c C-v C-h} @tab @code{org-babel-describe-bindings}
14482@kindex C-c C-v x
14483@kindex C-c C-v C-x
14484@item @kbd{C-c C-v x} @ @ @r{or} @ @ @kbd{C-c C-v C-x} @tab @code{org-babel-do-key-sequence-in-edit-buffer}
86fbb8ca
CD
14485@end multitable
14486
14487@c When possible these keybindings were extended to work when the control key is
14488@c kept pressed, resulting in the following additional keybindings.
14489
14490@c @multitable @columnfractions 0.25 0.75
ce57c2fe
BG
14491@c @item @kbd{C-c C-v C-a} @tab @code{org-babel-sha1-hash}
14492@c @item @kbd{C-c C-v C-b} @tab @code{org-babel-execute-buffer}
14493@c @item @kbd{C-c C-v C-f} @tab @code{org-babel-tangle-file}
14494@c @item @kbd{C-c C-v C-l} @tab @code{org-babel-lob-ingest}
14495@c @item @kbd{C-c C-v C-p} @tab @code{org-babel-expand-src-block}
14496@c @item @kbd{C-c C-v C-s} @tab @code{org-babel-execute-subtree}
14497@c @item @kbd{C-c C-v C-t} @tab @code{org-babel-tangle}
14498@c @item @kbd{C-c C-v C-z} @tab @code{org-babel-switch-to-session}
86fbb8ca
CD
14499@c @end multitable
14500
14501@node Batch execution, , Key bindings and useful functions, Working With Source Code
14502@section Batch execution
14503@cindex code block, batch execution
14504@cindex source code, batch execution
14505
14506It is possible to call functions from the command line. This shell
14507script calls @code{org-babel-tangle} on every one of its arguments.
14508
14509Be sure to adjust the paths to fit your system.
14510
14511@example
14512#!/bin/sh
14513# -*- mode: shell-script -*-
14514#
afe98dfa 14515# tangle files with org-mode
86fbb8ca
CD
14516#
14517DIR=`pwd`
14518FILES=""
14519
14520# wrap each argument in the code required to call tangle on it
14521for i in $@@; do
afe98dfa 14522 FILES="$FILES \"$i\""
86fbb8ca
CD
14523done
14524
bdebdb64 14525emacs -Q --batch \
86fbb8ca
CD
14526--eval "(progn
14527(add-to-list 'load-path (expand-file-name \"~/src/org/lisp/\"))
8223b1d2 14528(add-to-list 'load-path (expand-file-name \"~/src/org/contrib/lisp/\" t))
86fbb8ca
CD
14529(require 'org)(require 'org-exp)(require 'ob)(require 'ob-tangle)
14530(mapc (lambda (file)
14531 (find-file (expand-file-name file \"$DIR\"))
14532 (org-babel-tangle)
afe98dfa 14533 (kill-buffer)) '($FILES)))" 2>&1 |grep tangled
86fbb8ca
CD
14534@end example
14535
14536@node Miscellaneous, Hacking, Working With Source Code, Top
14537@chapter Miscellaneous
14538
14539@menu
c0468714 14540* Completion:: M-TAB knows what you need
afe98dfa 14541* Easy Templates:: Quick insertion of structural elements
c0468714
GM
14542* Speed keys:: Electric commands at the beginning of a headline
14543* Code evaluation security:: Org mode files evaluate inline code
14544* Customization:: Adapting Org to your taste
14545* In-buffer settings:: Overview of the #+KEYWORDS
14546* The very busy C-c C-c key:: When in doubt, press C-c C-c
14547* Clean view:: Getting rid of leading stars in the outline
14548* TTY keys:: Using Org on a tty
14549* Interaction:: Other Emacs packages
ce57c2fe 14550* org-crypt.el:: Encrypting Org files
86fbb8ca
CD
14551@end menu
14552
14553
afe98dfa 14554@node Completion, Easy Templates, Miscellaneous, Miscellaneous
86fbb8ca
CD
14555@section Completion
14556@cindex completion, of @TeX{} symbols
14557@cindex completion, of TODO keywords
14558@cindex completion, of dictionary words
14559@cindex completion, of option keywords
14560@cindex completion, of tags
14561@cindex completion, of property keys
14562@cindex completion, of link abbreviations
14563@cindex @TeX{} symbol completion
14564@cindex TODO keywords completion
14565@cindex dictionary word completion
14566@cindex option keyword completion
14567@cindex tag completion
14568@cindex link abbreviations, completion of
14569
e66ba1df 14570Emacs would not be Emacs without completion, and Org mode uses it whenever it
86fbb8ca
CD
14571makes sense. If you prefer an @i{iswitchb}- or @i{ido}-like interface for
14572some of the completion prompts, you can specify your preference by setting at
14573most one of the variables @code{org-completion-use-iswitchb}
14574@code{org-completion-use-ido}.
14575
14576Org supports in-buffer completion. This type of completion does
14577not make use of the minibuffer. You simply type a few letters into
14578the buffer and use the key to complete text right there.
14579
14580@table @kbd
14581@kindex M-@key{TAB}
14582@item M-@key{TAB}
14583Complete word at point
14584@itemize @bullet
14585@item
14586At the beginning of a headline, complete TODO keywords.
14587@item
14588After @samp{\}, complete @TeX{} symbols supported by the exporter.
14589@item
14590After @samp{*}, complete headlines in the current buffer so that they
14591can be used in search links like @samp{[[*find this headline]]}.
14592@item
14593After @samp{:} in a headline, complete tags. The list of tags is taken
14594from the variable @code{org-tag-alist} (possibly set through the
14595@samp{#+TAGS} in-buffer option, @pxref{Setting tags}), or it is created
14596dynamically from all tags used in the current buffer.
14597@item
14598After @samp{:} and not in a headline, complete property keys. The list
14599of keys is constructed dynamically from all keys used in the current
14600buffer.
14601@item
14602After @samp{[}, complete link abbreviations (@pxref{Link abbreviations}).
14603@item
14604After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
e66ba1df 14605@samp{OPTIONS} which set file-specific options for Org mode. When the
86fbb8ca
CD
14606option keyword is already complete, pressing @kbd{M-@key{TAB}} again
14607will insert example settings for this keyword.
14608@item
14609In the line after @samp{#+STARTUP: }, complete startup keywords,
1df7defd 14610i.e., valid keys for this line.
86fbb8ca
CD
14611@item
14612Elsewhere, complete dictionary words using Ispell.
14613@end itemize
14614@end table
14615
afe98dfa
CD
14616@node Easy Templates, Speed keys, Completion, Miscellaneous
14617@section Easy Templates
14618@cindex template insertion
14619@cindex insertion, of templates
14620
e66ba1df 14621Org mode supports insertion of empty structural elements (like
afe98dfa
CD
14622@code{#+BEGIN_SRC} and @code{#+END_SRC} pairs) with just a few key
14623strokes. This is achieved through a native template expansion mechanism.
14624Note that Emacs has several other template mechanisms which could be used in
14625a similar way, for example @file{yasnippet}.
14626
14627To insert a structural element, type a @samp{<}, followed by a template
14628selector and @kbd{@key{TAB}}. Completion takes effect only when the above
14629keystrokes are typed on a line by itself.
14630
14631The following template selectors are currently supported.
14632
14633@multitable @columnfractions 0.1 0.9
8223b1d2
BG
14634@item @kbd{s} @tab @code{#+BEGIN_SRC ... #+END_SRC}
14635@item @kbd{e} @tab @code{#+BEGIN_EXAMPLE ... #+END_EXAMPLE}
14636@item @kbd{q} @tab @code{#+BEGIN_QUOTE ... #+END_QUOTE}
14637@item @kbd{v} @tab @code{#+BEGIN_VERSE ... #+END_VERSE}
14638@item @kbd{c} @tab @code{#+BEGIN_CENTER ... #+END_CENTER}
14639@item @kbd{l} @tab @code{#+BEGIN_LaTeX ... #+END_LaTeX}
14640@item @kbd{L} @tab @code{#+LaTeX:}
14641@item @kbd{h} @tab @code{#+BEGIN_HTML ... #+END_HTML}
14642@item @kbd{H} @tab @code{#+HTML:}
14643@item @kbd{a} @tab @code{#+BEGIN_ASCII ... #+END_ASCII}
14644@item @kbd{A} @tab @code{#+ASCII:}
14645@item @kbd{i} @tab @code{#+INDEX:} line
14646@item @kbd{I} @tab @code{#+INCLUDE:} line
afe98dfa
CD
14647@end multitable
14648
14649For example, on an empty line, typing "<e" and then pressing TAB, will expand
14650into a complete EXAMPLE template.
14651
14652You can install additional templates by customizing the variable
ce57c2fe 14653@code{org-structure-template-alist}. See the docstring of the variable for
afe98dfa
CD
14654additional details.
14655
14656@node Speed keys, Code evaluation security, Easy Templates, Miscellaneous
86fbb8ca
CD
14657@section Speed keys
14658@cindex speed keys
14659@vindex org-use-speed-commands
14660@vindex org-speed-commands-user
14661
14662Single keys can be made to execute commands when the cursor is at the
1df7defd 14663beginning of a headline, i.e., before the first star. Configure the variable
86fbb8ca
CD
14664@code{org-use-speed-commands} to activate this feature. There is a
14665pre-defined list of commands, and you can add more such commands using the
14666variable @code{org-speed-commands-user}. Speed keys do not only speed up
14667navigation and other commands, but they also provide an alternative way to
acedf35c 14668execute commands bound to keys that are not or not easily available on a TTY,
86fbb8ca
CD
14669or on a small mobile device with a limited keyboard.
14670
14671To see which commands are available, activate the feature and press @kbd{?}
14672with the cursor at the beginning of a headline.
14673
14674@node Code evaluation security, Customization, Speed keys, Miscellaneous
14675@section Code evaluation and security issues
14676
afe98dfa 14677Org provides tools to work with the code snippets, including evaluating them.
86fbb8ca
CD
14678
14679Running code on your machine always comes with a security risk. Badly
14680written or malicious code can be executed on purpose or by accident. Org has
14681default settings which will only evaluate such code if you give explicit
14682permission to do so, and as a casual user of these features you should leave
14683these precautions intact.
14684
14685For people who regularly work with such code, the confirmation prompts can
14686become annoying, and you might want to turn them off. This can be done, but
14687you must be aware of the risks that are involved.
14688
14689Code evaluation can happen under the following circumstances:
14690
14691@table @i
14692@item Source code blocks
14693Source code blocks can be evaluated during export, or when pressing @kbd{C-c
14694C-c} in the block. The most important thing to realize here is that Org mode
afe98dfa 14695files which contain code snippets are, in a certain sense, like executable
86fbb8ca 14696files. So you should accept them and load them into Emacs only from trusted
acedf35c 14697sources---just like you would do with a program you install on your computer.
86fbb8ca
CD
14698
14699Make sure you know what you are doing before customizing the variables
afe98dfa 14700which take off the default security brakes.
86fbb8ca
CD
14701
14702@defopt org-confirm-babel-evaluate
ce57c2fe
BG
14703When t (the default), the user is asked before every code block evaluation.
14704When nil, the user is not asked. When set to a function, it is called with
14705two arguments (language and body of the code block) and should return t to
14706ask and nil not to ask.
86fbb8ca
CD
14707@end defopt
14708
ce57c2fe
BG
14709For example, here is how to execute "ditaa" code (which is considered safe)
14710without asking:
63aa0982 14711
ce57c2fe
BG
14712@example
14713(defun my-org-confirm-babel-evaluate (lang body)
14714 (not (string= lang "ditaa"))) ; don't ask for ditaa
14715(setq org-confirm-babel-evaluate 'my-org-confirm-babel-evaluate)
14716@end example
14717
86fbb8ca
CD
14718@item Following @code{shell} and @code{elisp} links
14719Org has two link types that can directly evaluate code (@pxref{External
afe98dfa 14720links}). These links can be problematic because the code to be evaluated is
86fbb8ca
CD
14721not visible.
14722
14723@defopt org-confirm-shell-link-function
14724Function to queries user about shell link execution.
14725@end defopt
14726@defopt org-confirm-elisp-link-function
14727Functions to query user for Emacs Lisp link execution.
14728@end defopt
14729
86fbb8ca
CD
14730@item Formulas in tables
14731Formulas in tables (@pxref{The spreadsheet}) are code that is evaluated
14732either by the @i{calc} interpreter, or by the @i{Emacs Lisp} interpreter.
14733@end table
14734
14735@node Customization, In-buffer settings, Code evaluation security, Miscellaneous
14736@section Customization
14737@cindex customization
14738@cindex options, for customization
14739@cindex variables, for customization
14740
8223b1d2 14741There are more than 500 variables that can be used to customize
86fbb8ca
CD
14742Org. For the sake of compactness of the manual, I am not
14743describing the variables here. A structured overview of customization
14744variables is available with @kbd{M-x org-customize}. Or select
14745@code{Browse Org Group} from the @code{Org->Customization} menu. Many
14746settings can also be activated on a per-file basis, by putting special
14747lines into the buffer (@pxref{In-buffer settings}).
4009494e
GM
14748
14749@node In-buffer settings, The very busy C-c C-c key, Customization, Miscellaneous
14750@section Summary of in-buffer settings
14751@cindex in-buffer settings
14752@cindex special keywords
14753
e66ba1df 14754Org mode uses special lines in the buffer to define settings on a
4009494e
GM
14755per-file basis. These lines start with a @samp{#+} followed by a
14756keyword, a colon, and then individual words defining a setting. Several
14757setting words can be in the same line, but you can also have multiple
14758lines for the keyword. While these settings are described throughout
14759the manual, here is a summary. After changing any of those lines in the
14760buffer, press @kbd{C-c C-c} with the cursor still in the line to
14761activate the changes immediately. Otherwise they become effective only
14762when the file is visited again in a new Emacs session.
14763
c8d0cf5c 14764@vindex org-archive-location
4009494e
GM
14765@table @kbd
14766@item #+ARCHIVE: %s_done::
14767This line sets the archive location for the agenda file. It applies for
14768all subsequent lines until the next @samp{#+ARCHIVE} line, or the end
14769of the file. The first such line also applies to any entries before it.
14770The corresponding variable is @code{org-archive-location}.
14771@item #+CATEGORY:
14772This line sets the category for the agenda file. The category applies
14773for all subsequent lines until the next @samp{#+CATEGORY} line, or the
14774end of the file. The first such line also applies to any entries before it.
14775@item #+COLUMNS: %25ITEM .....
c8d0cf5c 14776@cindex property, COLUMNS
4009494e 14777Set the default format for columns view. This format applies when
c8d0cf5c 14778columns view is invoked in locations where no @code{COLUMNS} property
dbc28aaa 14779applies.
4009494e 14780@item #+CONSTANTS: name1=value1 ...
c8d0cf5c
CD
14781@vindex org-table-formula-constants
14782@vindex org-table-formula
4009494e 14783Set file-local values for constants to be used in table formulas. This
acedf35c 14784line sets the local variable @code{org-table-formula-constants-local}.
dbc28aaa 14785The global version of this variable is
4009494e 14786@code{org-table-formula-constants}.
b349f79f
CD
14787@item #+FILETAGS: :tag1:tag2:tag3:
14788Set tags that can be inherited by any entry in the file, including the
14789top-level entries.
dbc28aaa 14790@item #+DRAWERS: NAME1 .....
c8d0cf5c 14791@vindex org-drawers
8223b1d2
BG
14792Set the file-local set of additional drawers. The corresponding global
14793variable is @code{org-drawers}.
4009494e 14794@item #+LINK: linkword replace
c8d0cf5c 14795@vindex org-link-abbrev-alist
4009494e
GM
14796These lines (several are allowed) specify link abbreviations.
14797@xref{Link abbreviations}. The corresponding variable is
14798@code{org-link-abbrev-alist}.
14799@item #+PRIORITIES: highest lowest default
c8d0cf5c
CD
14800@vindex org-highest-priority
14801@vindex org-lowest-priority
14802@vindex org-default-priority
4009494e
GM
14803This line sets the limits and the default for the priorities. All three
14804must be either letters A-Z or numbers 0-9. The highest priority must
acedf35c 14805have a lower ASCII number than the lowest priority.
4009494e
GM
14806@item #+PROPERTY: Property_Name Value
14807This line sets a default inheritance value for entries in the current
14808buffer, most useful for specifying the allowed values of a property.
c8d0cf5c 14809@cindex #+SETUPFILE
b349f79f
CD
14810@item #+SETUPFILE: file
14811This line defines a file that holds more in-buffer setup. Normally this is
14812entirely ignored. Only when the buffer is parsed for option-setting lines
1e20eeb7 14813(i.e., when starting Org mode for a file, when pressing @kbd{C-c C-c} in a
b349f79f 14814settings line, or when exporting), then the contents of this file are parsed
a50253cc 14815as if they had been included in the buffer. In particular, the file can be
e66ba1df 14816any other Org mode file with internal setup. You can visit the file the
b349f79f 14817cursor is in the line with @kbd{C-c '}.
4009494e 14818@item #+STARTUP:
c8d0cf5c 14819@cindex #+STARTUP:
e66ba1df 14820This line sets options to be used at startup of Org mode, when an
c8d0cf5c
CD
14821Org file is being visited.
14822
14823The first set of options deals with the initial visibility of the outline
14824tree. The corresponding variable for global default settings is
14825@code{org-startup-folded}, with a default value @code{t}, which means
14826@code{overview}.
14827@vindex org-startup-folded
4009494e
GM
14828@cindex @code{overview}, STARTUP keyword
14829@cindex @code{content}, STARTUP keyword
14830@cindex @code{showall}, STARTUP keyword
7006d207 14831@cindex @code{showeverything}, STARTUP keyword
4009494e 14832@example
7006d207
CD
14833overview @r{top-level headlines only}
14834content @r{all headlines}
14835showall @r{no folding of any entries}
14836showeverything @r{show even drawer contents}
4009494e 14837@end example
c8d0cf5c
CD
14838
14839@vindex org-startup-indented
14840@cindex @code{indent}, STARTUP keyword
14841@cindex @code{noindent}, STARTUP keyword
14842Dynamic virtual indentation is controlled by the variable
e66ba1df 14843@code{org-startup-indented}@footnote{Emacs 23 and Org mode 6.29 are required}
c8d0cf5c
CD
14844@example
14845indent @r{start with @code{org-indent-mode} turned on}
14846noindent @r{start with @code{org-indent-mode} turned off}
14847@end example
14848
14849@vindex org-startup-align-all-tables
4009494e
GM
14850Then there are options for aligning tables upon visiting a file. This
14851is useful in files containing narrowed table columns. The corresponding
14852variable is @code{org-startup-align-all-tables}, with a default value
28a16a1b 14853@code{nil}.
4009494e
GM
14854@cindex @code{align}, STARTUP keyword
14855@cindex @code{noalign}, STARTUP keyword
14856@example
14857align @r{align all tables}
14858noalign @r{don't align tables on startup}
14859@end example
afe98dfa
CD
14860
14861@vindex org-startup-with-inline-images
14862When visiting a file, inline images can be automatically displayed. The
14863corresponding variable is @code{org-startup-with-inline-images}, with a
14864default value @code{nil} to avoid delays when visiting a file.
14865@cindex @code{inlineimages}, STARTUP keyword
14866@cindex @code{noinlineimages}, STARTUP keyword
14867@example
14868inlineimages @r{show inline images}
14869noinlineimages @r{don't show inline images on startup}
14870@end example
14871
c8d0cf5c
CD
14872@vindex org-log-done
14873@vindex org-log-note-clock-out
14874@vindex org-log-repeat
14875Logging the closing and reopening of TODO items and clock intervals can be
14876configured using these options (see variables @code{org-log-done},
14877@code{org-log-note-clock-out} and @code{org-log-repeat})
4009494e 14878@cindex @code{logdone}, STARTUP keyword
4009494e 14879@cindex @code{lognotedone}, STARTUP keyword
28a16a1b 14880@cindex @code{nologdone}, STARTUP keyword
4009494e 14881@cindex @code{lognoteclock-out}, STARTUP keyword
28a16a1b 14882@cindex @code{nolognoteclock-out}, STARTUP keyword
4009494e 14883@cindex @code{logrepeat}, STARTUP keyword
28a16a1b 14884@cindex @code{lognoterepeat}, STARTUP keyword
4009494e 14885@cindex @code{nologrepeat}, STARTUP keyword
a351880d
CD
14886@cindex @code{logreschedule}, STARTUP keyword
14887@cindex @code{lognotereschedule}, STARTUP keyword
14888@cindex @code{nologreschedule}, STARTUP keyword
14889@cindex @code{logredeadline}, STARTUP keyword
14890@cindex @code{lognoteredeadline}, STARTUP keyword
14891@cindex @code{nologredeadline}, STARTUP keyword
ed21c5c8
CD
14892@cindex @code{logrefile}, STARTUP keyword
14893@cindex @code{lognoterefile}, STARTUP keyword
14894@cindex @code{nologrefile}, STARTUP keyword
4009494e 14895@example
28a16a1b
CD
14896logdone @r{record a timestamp when an item is marked DONE}
14897lognotedone @r{record timestamp and a note when DONE}
14898nologdone @r{don't record when items are marked DONE}
14899logrepeat @r{record a time when reinstating a repeating item}
14900lognoterepeat @r{record a note when reinstating a repeating item}
14901nologrepeat @r{do not record when reinstating repeating item}
14902lognoteclock-out @r{record a note when clocking out}
14903nolognoteclock-out @r{don't record a note when clocking out}
a351880d
CD
14904logreschedule @r{record a timestamp when scheduling time changes}
14905lognotereschedule @r{record a note when scheduling time changes}
14906nologreschedule @r{do not record when a scheduling date changes}
14907logredeadline @r{record a timestamp when deadline changes}
14908lognoteredeadline @r{record a note when deadline changes}
14909nologredeadline @r{do not record when a deadline date changes}
ed21c5c8
CD
14910logrefile @r{record a timestamp when refiling}
14911lognoterefile @r{record a note when refiling}
14912nologrefile @r{do not record when refiling}
4009494e 14913@end example
c8d0cf5c
CD
14914@vindex org-hide-leading-stars
14915@vindex org-odd-levels-only
b349f79f
CD
14916Here are the options for hiding leading stars in outline headings, and for
14917indenting outlines. The corresponding variables are
14918@code{org-hide-leading-stars} and @code{org-odd-levels-only}, both with a
14919default setting @code{nil} (meaning @code{showstars} and @code{oddeven}).
4009494e
GM
14920@cindex @code{hidestars}, STARTUP keyword
14921@cindex @code{showstars}, STARTUP keyword
14922@cindex @code{odd}, STARTUP keyword
14923@cindex @code{even}, STARTUP keyword
14924@example
14925hidestars @r{make all but one of the stars starting a headline invisible.}
14926showstars @r{show all stars starting a headline}
b349f79f
CD
14927indent @r{virtual indentation according to outline level}
14928noindent @r{no virtual indentation according to outline level}
4009494e
GM
14929odd @r{allow only odd outline levels (1,3,...)}
14930oddeven @r{allow all outline levels}
14931@end example
c8d0cf5c
CD
14932@vindex org-put-time-stamp-overlays
14933@vindex org-time-stamp-overlay-formats
14934To turn on custom format overlays over timestamps (variables
4009494e
GM
14935@code{org-put-time-stamp-overlays} and
14936@code{org-time-stamp-overlay-formats}), use
14937@cindex @code{customtime}, STARTUP keyword
14938@example
14939customtime @r{overlay custom time format}
14940@end example
c8d0cf5c 14941@vindex constants-unit-system
4009494e
GM
14942The following options influence the table spreadsheet (variable
14943@code{constants-unit-system}).
14944@cindex @code{constcgs}, STARTUP keyword
14945@cindex @code{constSI}, STARTUP keyword
14946@example
14947constcgs @r{@file{constants.el} should use the c-g-s unit system}
14948constSI @r{@file{constants.el} should use the SI unit system}
14949@end example
c8d0cf5c
CD
14950@vindex org-footnote-define-inline
14951@vindex org-footnote-auto-label
14952@vindex org-footnote-auto-adjust
55e0839d 14953To influence footnote settings, use the following keywords. The
c8d0cf5c
CD
14954corresponding variables are @code{org-footnote-define-inline},
14955@code{org-footnote-auto-label}, and @code{org-footnote-auto-adjust}.
55e0839d 14956@cindex @code{fninline}, STARTUP keyword
c8d0cf5c 14957@cindex @code{nofninline}, STARTUP keyword
55e0839d
CD
14958@cindex @code{fnlocal}, STARTUP keyword
14959@cindex @code{fnprompt}, STARTUP keyword
14960@cindex @code{fnauto}, STARTUP keyword
14961@cindex @code{fnconfirm}, STARTUP keyword
14962@cindex @code{fnplain}, STARTUP keyword
c8d0cf5c
CD
14963@cindex @code{fnadjust}, STARTUP keyword
14964@cindex @code{nofnadjust}, STARTUP keyword
55e0839d
CD
14965@example
14966fninline @r{define footnotes inline}
14967fnnoinline @r{define footnotes in separate section}
14968fnlocal @r{define footnotes near first reference, but not inline}
14969fnprompt @r{prompt for footnote labels}
ce57c2fe 14970fnauto @r{create @code{[fn:1]}-like labels automatically (default)}
55e0839d 14971fnconfirm @r{offer automatic label for editing or confirmation}
ce57c2fe 14972fnplain @r{create @code{[1]}-like labels automatically}
c8d0cf5c
CD
14973fnadjust @r{automatically renumber and sort footnotes}
14974nofnadjust @r{do not renumber and sort automatically}
14975@end example
14976@cindex org-hide-block-startup
ce57c2fe 14977To hide blocks on startup, use these keywords. The corresponding variable is
c8d0cf5c
CD
14978@code{org-hide-block-startup}.
14979@cindex @code{hideblocks}, STARTUP keyword
14980@cindex @code{nohideblocks}, STARTUP keyword
14981@example
14982hideblocks @r{Hide all begin/end blocks on startup}
14983nohideblocks @r{Do not hide blocks on startup}
55e0839d 14984@end example
86fbb8ca 14985@cindex org-pretty-entities
acedf35c 14986The display of entities as UTF-8 characters is governed by the variable
86fbb8ca
CD
14987@code{org-pretty-entities} and the keywords
14988@cindex @code{entitiespretty}, STARTUP keyword
14989@cindex @code{entitiesplain}, STARTUP keyword
14990@example
acedf35c 14991entitiespretty @r{Show entities as UTF-8 characters where possible}
86fbb8ca
CD
14992entitiesplain @r{Leave entities plain}
14993@end example
4009494e 14994@item #+TAGS: TAG1(c1) TAG2(c2)
c8d0cf5c 14995@vindex org-tag-alist
cad1d376 14996These lines (several such lines are allowed) specify the valid tags in
4009494e
GM
14997this file, and (potentially) the corresponding @emph{fast tag selection}
14998keys. The corresponding variable is @code{org-tag-alist}.
14999@item #+TBLFM:
15000This line contains the formulas for the table directly above the line.
c8d0cf5c 15001@item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+DATE:,
86fbb8ca
CD
15002@itemx #+OPTIONS:, #+BIND:, #+XSLT:,
15003@itemx #+DESCRIPTION:, #+KEYWORDS:,
8223b1d2 15004@itemx #+LaTeX_HEADER:, #+STYLE:, #+LINK_UP:, #+LINK_HOME:,
c8d0cf5c 15005@itemx #+EXPORT_SELECT_TAGS:, #+EXPORT_EXCLUDE_TAGS:
4009494e
GM
15006These lines provide settings for exporting files. For more details see
15007@ref{Export options}.
c8d0cf5c
CD
15008@item #+TODO: #+SEQ_TODO: #+TYP_TODO:
15009@vindex org-todo-keywords
4009494e 15010These lines set the TODO keywords and their interpretation in the
c8d0cf5c 15011current file. The corresponding variable is @code{org-todo-keywords}.
4009494e
GM
15012@end table
15013
15014@node The very busy C-c C-c key, Clean view, In-buffer settings, Miscellaneous
15015@section The very busy C-c C-c key
15016@kindex C-c C-c
15017@cindex C-c C-c, overview
15018
a7808fba 15019The key @kbd{C-c C-c} has many purposes in Org, which are all
4009494e
GM
15020mentioned scattered throughout this manual. One specific function of
15021this key is to add @emph{tags} to a headline (@pxref{Tags}). In many
c8d0cf5c
CD
15022other circumstances it means something like @emph{``Hey Org, look
15023here and update according to what you see here''}. Here is a summary of
4009494e
GM
15024what this means in different contexts.
15025
15026@itemize @minus
15027@item
15028If there are highlights in the buffer from the creation of a sparse
15029tree, or from clock display, remove these highlights.
15030@item
15031If the cursor is in one of the special @code{#+KEYWORD} lines, this
15032triggers scanning the buffer for these lines and updating the
28a16a1b 15033information.
4009494e
GM
15034@item
15035If the cursor is inside a table, realign the table. This command
15036works even if the automatic table editor has been turned off.
15037@item
15038If the cursor is on a @code{#+TBLFM} line, re-apply the formulas to
15039the entire table.
15040@item
86fbb8ca 15041If the current buffer is a capture buffer, close the note and file it.
4009494e
GM
15042With a prefix argument, file it, without further interaction, to the
15043default location.
15044@item
15045If the cursor is on a @code{<<<target>>>}, update radio targets and
15046corresponding links in this buffer.
15047@item
15048If the cursor is in a property line or at the start or end of a property
15049drawer, offer property commands.
15050@item
55e0839d
CD
15051If the cursor is at a footnote reference, go to the corresponding
15052definition, and vice versa.
15053@item
6eb02347
CD
15054If the cursor is on a statistics cookie, update it.
15055@item
4009494e
GM
15056If the cursor is in a plain list item with a checkbox, toggle the status
15057of the checkbox.
15058@item
15059If the cursor is on a numbered item in a plain list, renumber the
15060ordered list.
dbc28aaa 15061@item
c8d0cf5c 15062If the cursor is on the @code{#+BEGIN} line of a dynamic block, the
dbc28aaa 15063block is updated.
e66ba1df
BG
15064@item
15065If the cursor is at a timestamp, fix the day name in the timestamp.
4009494e
GM
15066@end itemize
15067
15068@node Clean view, TTY keys, The very busy C-c C-c key, Miscellaneous
15069@section A cleaner outline view
15070@cindex hiding leading stars
b349f79f
CD
15071@cindex dynamic indentation
15072@cindex odd-levels-only outlines
4009494e
GM
15073@cindex clean outline view
15074
c8d0cf5c
CD
15075Some people find it noisy and distracting that the Org headlines start with a
15076potentially large number of stars, and that text below the headlines is not
6eb02347
CD
15077indented. While this is no problem when writing a @emph{book-like} document
15078where the outline headings are really section headings, in a more
15079@emph{list-oriented} outline, indented structure is a lot cleaner:
4009494e
GM
15080
15081@example
b349f79f
CD
15082@group
15083* Top level headline | * Top level headline
15084** Second level | * Second level
15085*** 3rd level | * 3rd level
15086some text | some text
15087*** 3rd level | * 3rd level
15088more text | more text
15089* Another top level headline | * Another top level headline
15090@end group
4009494e
GM
15091@end example
15092
15093@noindent
86fbb8ca
CD
15094
15095If you are using at least Emacs 23.2@footnote{Emacs 23.1 can actually crash
15096with @code{org-indent-mode}} and version 6.29 of Org, this kind of view can
15097be achieved dynamically at display time using @code{org-indent-mode}. In
15098this minor mode, all lines are prefixed for display with the necessary amount
15099of space@footnote{@code{org-indent-mode} also sets the @code{wrap-prefix}
15100property, such that @code{visual-line-mode} (or purely setting
15101@code{word-wrap}) wraps long lines (including headlines) correctly indented.
15102}. Also headlines are prefixed with additional stars, so that the amount of
15103indentation shifts by two@footnote{See the variable
ed21c5c8
CD
15104@code{org-indent-indentation-per-level}.} spaces per level. All headline
15105stars but the last one are made invisible using the @code{org-hide}
15106face@footnote{Turning on @code{org-indent-mode} sets
15107@code{org-hide-leading-stars} to @code{t} and @code{org-adapt-indentation} to
15108@code{nil}.} - see below under @samp{2.} for more information on how this
15109works. You can turn on @code{org-indent-mode} for all files by customizing
15110the variable @code{org-startup-indented}, or you can turn it on for
15111individual files using
c8d0cf5c
CD
15112
15113@example
15114#+STARTUP: indent
15115@end example
15116
acedf35c 15117If you want a similar effect in an earlier version of Emacs and/or Org, or if
c8d0cf5c
CD
15118you want the indentation to be hard space characters so that the plain text
15119file looks as similar as possible to the Emacs display, Org supports you in
15120the following way:
4009494e 15121
b349f79f 15122@enumerate
96c8522a 15123@item
b349f79f
CD
15124@emph{Indentation of text below headlines}@*
15125You may indent text below each headline to make the left boundary line up
15126with the headline, like
4009494e 15127
b349f79f
CD
15128@example
15129*** 3rd level
15130 more text, now indented
15131@end example
15132
c8d0cf5c
CD
15133@vindex org-adapt-indentation
15134Org supports this with paragraph filling, line wrapping, and structure
15135editing@footnote{See also the variable @code{org-adapt-indentation}.},
15136preserving or adapting the indentation as appropriate.
b349f79f
CD
15137
15138@item
c8d0cf5c 15139@vindex org-hide-leading-stars
b349f79f
CD
15140@emph{Hiding leading stars}@* You can modify the display in such a way that
15141all leading stars become invisible. To do this in a global way, configure
15142the variable @code{org-hide-leading-stars} or change this on a per-file basis
15143with
4009494e
GM
15144
15145@example
4009494e 15146#+STARTUP: hidestars
c8d0cf5c 15147#+STARTUP: showstars
4009494e
GM
15148@end example
15149
b349f79f 15150With hidden stars, the tree becomes:
4009494e
GM
15151
15152@example
b349f79f 15153@group
4009494e
GM
15154* Top level headline
15155 * Second level
15156 * 3rd level
b349f79f
CD
15157 ...
15158@end group
4009494e
GM
15159@end example
15160
15161@noindent
c8d0cf5c
CD
15162@vindex org-hide @r{(face)}
15163The leading stars are not truly replaced by whitespace, they are only
15164fontified with the face @code{org-hide} that uses the background color as
15165font color. If you are not using either white or black background, you may
15166have to customize this face to get the wanted effect. Another possibility is
15167to set this font such that the extra stars are @i{almost} invisible, for
15168example using the color @code{grey90} on a white background.
4009494e 15169
b349f79f 15170@item
c8d0cf5c 15171@vindex org-odd-levels-only
b349f79f
CD
15172Things become cleaner still if you skip all the even levels and use only odd
15173levels 1, 3, 5..., effectively adding two stars to go from one outline level
c8d0cf5c 15174to the next@footnote{When you need to specify a level for a property search
1e20eeb7 15175or refile targets, @samp{LEVEL=2} will correspond to 3 stars, etc.}. In this
c8d0cf5c
CD
15176way we get the outline view shown at the beginning of this section. In order
15177to make the structure editing and export commands handle this convention
15178correctly, configure the variable @code{org-odd-levels-only}, or set this on
15179a per-file basis with one of the following lines:
4009494e
GM
15180
15181@example
15182#+STARTUP: odd
15183#+STARTUP: oddeven
15184@end example
15185
a7808fba 15186You can convert an Org file from single-star-per-level to the
4009494e
GM
15187double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels
15188RET} in that file. The reverse operation is @kbd{M-x
15189org-convert-to-oddeven-levels}.
b349f79f 15190@end enumerate
4009494e
GM
15191
15192@node TTY keys, Interaction, Clean view, Miscellaneous
a7808fba
CD
15193@section Using Org on a tty
15194@cindex tty key bindings
4009494e 15195
c8d0cf5c 15196Because Org contains a large number of commands, by default many of
a7808fba 15197Org's core commands are bound to keys that are generally not
dbc28aaa
CD
15198accessible on a tty, such as the cursor keys (@key{left}, @key{right},
15199@key{up}, @key{down}), @key{TAB} and @key{RET}, in particular when used
15200together with modifiers like @key{Meta} and/or @key{Shift}. To access
15201these commands on a tty when special keys are unavailable, the following
15202alternative bindings can be used. The tty bindings below will likely be
15203more cumbersome; you may find for some of the bindings below that a
c8d0cf5c
CD
15204customized workaround suits you better. For example, changing a timestamp
15205is really only fun with @kbd{S-@key{cursor}} keys, whereas on a
dbc28aaa 15206tty you would rather use @kbd{C-c .} to re-insert the timestamp.
4009494e 15207
17673adf 15208@multitable @columnfractions 0.15 0.2 0.1 0.2
86fbb8ca
CD
15209@item @b{Default} @tab @b{Alternative 1} @tab @b{Speed key} @tab @b{Alternative 2}
15210@item @kbd{S-@key{TAB}} @tab @kbd{C-u @key{TAB}} @tab @kbd{C} @tab
15211@item @kbd{M-@key{left}} @tab @kbd{C-c C-x l} @tab @kbd{l} @tab @kbd{@key{Esc} @key{left}}
15212@item @kbd{M-S-@key{left}} @tab @kbd{C-c C-x L} @tab @kbd{L} @tab
17673adf 15213@item @kbd{M-@key{right}} @tab @kbd{C-c C-x r} @tab @kbd{r} @tab @kbd{@key{Esc} @key{right}}
86fbb8ca
CD
15214@item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R} @tab @kbd{R} @tab
15215@item @kbd{M-@key{up}} @tab @kbd{C-c C-x u} @tab @kbd{ } @tab @kbd{@key{Esc} @key{up}}
15216@item @kbd{M-S-@key{up}} @tab @kbd{C-c C-x U} @tab @kbd{U} @tab
17673adf 15217@item @kbd{M-@key{down}} @tab @kbd{C-c C-x d} @tab @kbd{ } @tab @kbd{@key{Esc} @key{down}}
86fbb8ca 15218@item @kbd{M-S-@key{down}} @tab @kbd{C-c C-x D} @tab @kbd{D} @tab
17673adf
CD
15219@item @kbd{S-@key{RET}} @tab @kbd{C-c C-x c} @tab @kbd{ } @tab
15220@item @kbd{M-@key{RET}} @tab @kbd{C-c C-x m} @tab @kbd{ } @tab @kbd{@key{Esc} @key{RET}}
15221@item @kbd{M-S-@key{RET}} @tab @kbd{C-c C-x M} @tab @kbd{ } @tab
15222@item @kbd{S-@key{left}} @tab @kbd{C-c @key{left}} @tab @kbd{ } @tab
15223@item @kbd{S-@key{right}} @tab @kbd{C-c @key{right}} @tab @kbd{ } @tab
15224@item @kbd{S-@key{up}} @tab @kbd{C-c @key{up}} @tab @kbd{ } @tab
15225@item @kbd{S-@key{down}} @tab @kbd{C-c @key{down}} @tab @kbd{ } @tab
15226@item @kbd{C-S-@key{left}} @tab @kbd{C-c C-x @key{left}} @tab @kbd{ } @tab
15227@item @kbd{C-S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab @kbd{ } @tab
4009494e
GM
15228@end multitable
15229
c8d0cf5c 15230
ce57c2fe 15231@node Interaction, org-crypt.el, TTY keys, Miscellaneous
4009494e
GM
15232@section Interaction with other packages
15233@cindex packages, interaction with other
a7808fba 15234Org lives in the world of GNU Emacs and interacts in various ways
4009494e
GM
15235with other code out there.
15236
15237@menu
c0468714
GM
15238* Cooperation:: Packages Org cooperates with
15239* Conflicts:: Packages that lead to conflicts
4009494e
GM
15240@end menu
15241
15242@node Cooperation, Conflicts, Interaction, Interaction
a7808fba 15243@subsection Packages that Org cooperates with
4009494e
GM
15244
15245@table @asis
15246@cindex @file{calc.el}
c8d0cf5c 15247@cindex Gillespie, Dave
4009494e 15248@item @file{calc.el} by Dave Gillespie
a7808fba
CD
15249Org uses the Calc package for implementing spreadsheet
15250functionality in its tables (@pxref{The spreadsheet}). Org
15251checks for the availability of Calc by looking for the function
c8d0cf5c 15252@code{calc-eval} which will have been autoloaded during setup if Calc has
a7808fba 15253been installed properly. As of Emacs 22, Calc is part of the Emacs
4009494e 15254distribution. Another possibility for interaction between the two
ce57c2fe 15255packages is using Calc for embedded calculations. @xref{Embedded Mode,
153ae947 15256, Embedded Mode, calc, GNU Emacs Calc Manual}.
4009494e 15257@item @file{constants.el} by Carsten Dominik
c8d0cf5c
CD
15258@cindex @file{constants.el}
15259@cindex Dominik, Carsten
15260@vindex org-table-formula-constants
4009494e
GM
15261In a table formula (@pxref{The spreadsheet}), it is possible to use
15262names for natural constants or units. Instead of defining your own
15263constants in the variable @code{org-table-formula-constants}, install
15264the @file{constants} package which defines a large number of constants
15265and units, and lets you use unit prefixes like @samp{M} for
1e20eeb7 15266@samp{Mega}, etc. You will need version 2.0 of this package, available
ce57c2fe 15267at @url{http://www.astro.uva.nl/~dominik/Tools}. Org checks for
4009494e
GM
15268the function @code{constants-get}, which has to be autoloaded in your
15269setup. See the installation instructions in the file
15270@file{constants.el}.
15271@item @file{cdlatex.el} by Carsten Dominik
15272@cindex @file{cdlatex.el}
c8d0cf5c 15273@cindex Dominik, Carsten
e66ba1df 15274Org mode can make use of the CD@LaTeX{} package to efficiently enter
acedf35c 15275@LaTeX{} fragments into Org files. See @ref{CDLaTeX mode}.
dbc28aaa
CD
15276@item @file{imenu.el} by Ake Stenhoff and Lars Lindberg
15277@cindex @file{imenu.el}
e66ba1df 15278Imenu allows menu access to an index of items in a file. Org mode
c8d0cf5c 15279supports Imenu---all you need to do to get the index is the following:
dbc28aaa 15280@lisp
28a16a1b 15281(add-hook 'org-mode-hook
a7808fba 15282 (lambda () (imenu-add-to-menubar "Imenu")))
dbc28aaa 15283@end lisp
c8d0cf5c
CD
15284@vindex org-imenu-depth
15285By default the index is two levels deep---you can modify the depth using
dbc28aaa 15286the option @code{org-imenu-depth}.
4009494e
GM
15287@item @file{remember.el} by John Wiegley
15288@cindex @file{remember.el}
c8d0cf5c 15289@cindex Wiegley, John
86fbb8ca 15290Org used to use this package for capture, but no longer does.
dbc28aaa
CD
15291@item @file{speedbar.el} by Eric M. Ludlam
15292@cindex @file{speedbar.el}
c8d0cf5c 15293@cindex Ludlam, Eric M.
dbc28aaa 15294Speedbar is a package that creates a special frame displaying files and
e66ba1df 15295index items in files. Org mode supports Speedbar and allows you to
c8d0cf5c 15296drill into Org files directly from the Speedbar. It also allows you to
dbc28aaa 15297restrict the scope of agenda commands to a file or a subtree by using
a7808fba 15298the command @kbd{<} in the Speedbar frame.
4009494e
GM
15299@cindex @file{table.el}
15300@item @file{table.el} by Takaaki Ota
15301@kindex C-c C-c
15302@cindex table editor, @file{table.el}
15303@cindex @file{table.el}
c8d0cf5c 15304@cindex Ota, Takaaki
4009494e 15305
ed21c5c8
CD
15306Complex ASCII tables with automatic line wrapping, column- and row-spanning,
15307and alignment can be created using the Emacs table package by Takaaki Ota
15308(@uref{http://sourceforge.net/projects/table}, and also part of Emacs 22).
e66ba1df
BG
15309Org mode will recognize these tables and export them properly. Because of
15310interference with other Org mode functionality, you unfortunately cannot edit
ed21c5c8
CD
15311these tables directly in the buffer. Instead, you need to use the command
15312@kbd{C-c '} to edit them, similar to source code snippets.
4009494e
GM
15313
15314@table @kbd
acedf35c 15315@orgcmd{C-c ',org-edit-special}
ed21c5c8 15316Edit a @file{table.el} table. Works when the cursor is in a table.el table.
4009494e 15317@c
acedf35c 15318@orgcmd{C-c ~,org-table-create-with-table.el}
c8d0cf5c 15319Insert a @file{table.el} table. If there is already a table at point, this
e66ba1df 15320command converts it between the @file{table.el} format and the Org mode
4009494e
GM
15321format. See the documentation string of the command
15322@code{org-convert-table} for the restrictions under which this is
15323possible.
15324@end table
ed21c5c8 15325@file{table.el} is part of Emacs since Emacs 22.
4009494e 15326@item @file{footnote.el} by Steven L. Baur
c8d0cf5c
CD
15327@cindex @file{footnote.el}
15328@cindex Baur, Steven L.
e66ba1df
BG
15329Org mode recognizes numerical footnotes as provided by this package.
15330However, Org mode also has its own footnote support (@pxref{Footnotes}),
55e0839d 15331which makes using @file{footnote.el} unnecessary.
4009494e
GM
15332@end table
15333
15334@node Conflicts, , Cooperation, Interaction
e66ba1df 15335@subsection Packages that lead to conflicts with Org mode
4009494e
GM
15336
15337@table @asis
15338
3da3282e 15339@cindex @code{shift-selection-mode}
c8d0cf5c 15340@vindex org-support-shift-select
3da3282e
CD
15341In Emacs 23, @code{shift-selection-mode} is on by default, meaning that
15342cursor motions combined with the shift key should start or enlarge regions.
15343This conflicts with the use of @kbd{S-@key{cursor}} commands in Org to change
15344timestamps, TODO keywords, priorities, and item bullet types if the cursor is
15345at such a location. By default, @kbd{S-@key{cursor}} commands outside
15346special contexts don't do anything, but you can customize the variable
e66ba1df 15347@code{org-support-shift-select}. Org mode then tries to accommodate shift
3da3282e
CD
15348selection by (i) using it outside of the special contexts where special
15349commands apply, and by (ii) extending an existing active region even if the
15350cursor moves across a special context.
4009494e 15351
4009494e 15352@item @file{CUA.el} by Kim. F. Storm
c8d0cf5c
CD
15353@cindex @file{CUA.el}
15354@cindex Storm, Kim. F.
15355@vindex org-replace-disputed-keys
3da3282e 15356Key bindings in Org conflict with the @kbd{S-<cursor>} keys used by CUA mode
c8d0cf5c 15357(as well as @code{pc-select-mode} and @code{s-region-mode}) to select and extend the
3da3282e
CD
15358region. In fact, Emacs 23 has this built-in in the form of
15359@code{shift-selection-mode}, see previous paragraph. If you are using Emacs
c8d0cf5c 1536023, you probably don't want to use another package for this purpose. However,
3da3282e 15361if you prefer to leave these keys to a different package while working in
e66ba1df 15362Org mode, configure the variable @code{org-replace-disputed-keys}. When set,
3da3282e
CD
15363Org will move the following key bindings in Org files, and in the agenda
15364buffer (but not during date selection).
4009494e
GM
15365
15366@example
ce57c2fe
BG
15367S-UP @result{} M-p S-DOWN @result{} M-n
15368S-LEFT @result{} M-- S-RIGHT @result{} M-+
15369C-S-LEFT @result{} M-S-- C-S-RIGHT @result{} M-S-+
4009494e
GM
15370@end example
15371
c8d0cf5c 15372@vindex org-disputed-keys
4009494e
GM
15373Yes, these are unfortunately more difficult to remember. If you want
15374to have other replacement keys, look at the variable
15375@code{org-disputed-keys}.
3da3282e 15376
8223b1d2
BG
15377@item @file{filladapt.el} by Kyle Jones
15378@cindex @file{filladapt.el}
15379
15380Org mode tries to do the right thing when filling paragraphs, list items and
15381other elements. Many users reported they had problems using both
15382@file{filladapt.el} and Org mode, so a safe thing to do is to disable it like
15383this:
15384
15385@lisp
15386(add-hook 'org-mode-hook 'turn-off-filladapt-mode)
15387@end lisp
15388
c8d0cf5c
CD
15389@item @file{yasnippet.el}
15390@cindex @file{yasnippet.el}
ce57c2fe 15391The way Org mode binds the TAB key (binding to @code{[tab]} instead of
acedf35c 15392@code{"\t"}) overrules YASnippet's access to this key. The following code
c8d0cf5c
CD
15393fixed this problem:
15394
15395@lisp
15396(add-hook 'org-mode-hook
c0468714
GM
15397 (lambda ()
15398 (org-set-local 'yas/trigger-key [tab])
e66ba1df 15399 (define-key yas/keymap [tab] 'yas/next-field-or-maybe-expand)))
c8d0cf5c
CD
15400@end lisp
15401
ce57c2fe
BG
15402The latest version of yasnippet doesn't play well with Org mode. If the
15403above code does not fix the conflict, start by defining the following
15404function:
15405
15406@lisp
15407(defun yas/org-very-safe-expand ()
63aa0982 15408 (let ((yas/fallback-behavior 'return-nil)) (yas/expand)))
ce57c2fe
BG
15409@end lisp
15410
15411Then, tell Org mode what to do with the new function:
15412
15413@lisp
15414(add-hook 'org-mode-hook
15415 (lambda ()
63aa0982
BG
15416 (make-variable-buffer-local 'yas/trigger-key)
15417 (setq yas/trigger-key [tab])
15418 (add-to-list 'org-tab-first-hook 'yas/org-very-safe-expand)
15419 (define-key yas/keymap [tab] 'yas/next-field)))
ce57c2fe
BG
15420@end lisp
15421
4009494e
GM
15422@item @file{windmove.el} by Hovav Shacham
15423@cindex @file{windmove.el}
c8d0cf5c 15424This package also uses the @kbd{S-<cursor>} keys, so everything written
86fbb8ca 15425in the paragraph above about CUA mode also applies here. If you want make
e66ba1df 15426the windmove function active in locations where Org mode does not have
86fbb8ca
CD
15427special functionality on @kbd{S-@key{cursor}}, add this to your
15428configuration:
15429
15430@lisp
15431;; Make windmove work in org-mode:
15432(add-hook 'org-shiftup-final-hook 'windmove-up)
15433(add-hook 'org-shiftleft-final-hook 'windmove-left)
15434(add-hook 'org-shiftdown-final-hook 'windmove-down)
15435(add-hook 'org-shiftright-final-hook 'windmove-right)
15436@end lisp
4009494e 15437
a351880d
CD
15438@item @file{viper.el} by Michael Kifer
15439@cindex @file{viper.el}
15440@kindex C-c /
15441Viper uses @kbd{C-c /} and therefore makes this key not access the
e66ba1df 15442corresponding Org mode command @code{org-sparse-tree}. You need to find
a351880d
CD
15443another key for this command, or override the key in
15444@code{viper-vi-global-user-map} with
15445
15446@lisp
15447(define-key viper-vi-global-user-map "C-c /" 'org-sparse-tree)
15448@end lisp
15449
4009494e
GM
15450@end table
15451
ce57c2fe
BG
15452@node org-crypt.el, , Interaction, Miscellaneous
15453@section org-crypt.el
15454@cindex @file{org-crypt.el}
15455@cindex @code{org-decrypt-entry}
15456
15457Org-crypt will encrypt the text of an entry, but not the headline, or
15458properties. Org-crypt uses the Emacs EasyPG library to encrypt and decrypt
15459files.
15460
15461Any text below a headline that has a @samp{:crypt:} tag will be automatically
15462be encrypted when the file is saved. If you want to use a different tag just
15463customize the @code{org-crypt-tag-matcher} setting.
15464
15465To use org-crypt it is suggested that you have the following in your
15466@file{.emacs}:
15467
15468@example
15469(require 'org-crypt)
15470(org-crypt-use-before-save-magic)
15471(setq org-tags-exclude-from-inheritance (quote ("crypt")))
15472
15473(setq org-crypt-key nil)
15474 ;; GPG key to use for encryption
15475 ;; Either the Key ID or set to nil to use symmetric encryption.
15476
15477(setq auto-save-default nil)
15478 ;; Auto-saving does not cooperate with org-crypt.el: so you need
15479 ;; to turn it off if you plan to use org-crypt.el quite often.
15480 ;; Otherwise, you'll get an (annoying) message each time you
15481 ;; start Org.
15482
15483 ;; To turn it off only locally, you can insert this:
15484 ;;
15485 ;; # -*- buffer-auto-save-file-name: nil; -*-
15486@end example
15487
15488Excluding the crypt tag from inheritance prevents already encrypted text
15489being encrypted again.
7006d207
CD
15490
15491@node Hacking, MobileOrg, Miscellaneous, Top
b349f79f 15492@appendix Hacking
c8d0cf5c 15493@cindex hacking
b349f79f
CD
15494
15495This appendix covers some aspects where users can extend the functionality of
a7808fba 15496Org.
4009494e
GM
15497
15498@menu
8223b1d2 15499* Hooks:: How to reach into Org's internals
c0468714
GM
15500* Add-on packages:: Available extensions
15501* Adding hyperlink types:: New custom link types
15502* Context-sensitive commands:: How to add functionality to such commands
acedf35c 15503* Tables in arbitrary syntax:: Orgtbl for @LaTeX{} and other programs
c0468714
GM
15504* Dynamic blocks:: Automatically filled blocks
15505* Special agenda views:: Customized views
c8d0cf5c 15506* Extracting agenda information:: Postprocessing of agenda information
c0468714
GM
15507* Using the property API:: Writing programs that use entry properties
15508* Using the mapping API:: Mapping over all or selected entries
4009494e
GM
15509@end menu
15510
c8d0cf5c
CD
15511@node Hooks, Add-on packages, Hacking, Hacking
15512@section Hooks
15513@cindex hooks
15514
15515Org has a large number of hook variables that can be used to add
15516functionality. This appendix about hacking is going to illustrate the
15517use of some of them. A complete list of all hooks with documentation is
15518maintained by the Worg project and can be found at
15519@uref{http://orgmode.org/worg/org-configs/org-hooks.php}.
15520
15521@node Add-on packages, Adding hyperlink types, Hooks, Hacking
15522@section Add-on packages
15523@cindex add-on packages
15524
15525A large number of add-on packages have been written by various authors.
15526These packages are not part of Emacs, but they are distributed as contributed
e66ba1df 15527packages with the separate release available at the Org mode home page at
c8d0cf5c
CD
15528@uref{http://orgmode.org}. The list of contributed packages, along with
15529documentation about each package, is maintained by the Worg project at
15530@uref{http://orgmode.org/worg/org-contrib/}.
15531
15532
15533
15534@node Adding hyperlink types, Context-sensitive commands, Add-on packages, Hacking
4009494e
GM
15535@section Adding hyperlink types
15536@cindex hyperlinks, adding new types
15537
a7808fba 15538Org has a large number of hyperlink types built-in
c8d0cf5c
CD
15539(@pxref{Hyperlinks}). If you would like to add new link types, Org
15540provides an interface for doing so. Let's look at an example file,
15541@file{org-man.el}, that will add support for creating links like
a7808fba 15542@samp{[[man:printf][The printf manpage]]} to show Unix manual pages inside
c8d0cf5c 15543Emacs:
4009494e
GM
15544
15545@lisp
a7808fba 15546;;; org-man.el - Support for links to manpages in Org
4009494e
GM
15547
15548(require 'org)
15549
15550(org-add-link-type "man" 'org-man-open)
15551(add-hook 'org-store-link-functions 'org-man-store-link)
15552
15553(defcustom org-man-command 'man
15554 "The Emacs command to be used to display a man page."
15555 :group 'org-link
15556 :type '(choice (const man) (const woman)))
15557
15558(defun org-man-open (path)
15559 "Visit the manpage on PATH.
15560PATH should be a topic that can be thrown at the man command."
15561 (funcall org-man-command path))
15562
15563(defun org-man-store-link ()
15564 "Store a link to a manpage."
15565 (when (memq major-mode '(Man-mode woman-mode))
15566 ;; This is a man page, we do make this link
15567 (let* ((page (org-man-get-page-name))
15568 (link (concat "man:" page))
15569 (description (format "Manpage for %s" page)))
15570 (org-store-link-props
15571 :type "man"
15572 :link link
15573 :description description))))
15574
15575(defun org-man-get-page-name ()
15576 "Extract the page name from the buffer name."
15577 ;; This works for both `Man-mode' and `woman-mode'.
15578 (if (string-match " \\(\\S-+\\)\\*" (buffer-name))
15579 (match-string 1 (buffer-name))
15580 (error "Cannot create link to this man page")))
15581
15582(provide 'org-man)
15583
15584;;; org-man.el ends here
15585@end lisp
15586
15587@noindent
15588You would activate this new link type in @file{.emacs} with
15589
15590@lisp
15591(require 'org-man)
15592@end lisp
15593
15594@noindent
864c9740 15595Let's go through the file and see what it does.
4009494e 15596@enumerate
28a16a1b 15597@item
4009494e
GM
15598It does @code{(require 'org)} to make sure that @file{org.el} has been
15599loaded.
15600@item
15601The next line calls @code{org-add-link-type} to define a new link type
15602with prefix @samp{man}. The call also contains the name of a function
15603that will be called to follow such a link.
15604@item
c8d0cf5c 15605@vindex org-store-link-functions
4009494e
GM
15606The next line adds a function to @code{org-store-link-functions}, in
15607order to allow the command @kbd{C-c l} to record a useful link in a
15608buffer displaying a man page.
15609@end enumerate
15610
15611The rest of the file defines the necessary variables and functions.
c8d0cf5c 15612First there is a customization variable that determines which Emacs
a7808fba 15613command should be used to display man pages. There are two options,
4009494e 15614@code{man} and @code{woman}. Then the function to follow a link is
c8d0cf5c 15615defined. It gets the link path as an argument---in this case the link
4009494e
GM
15616path is just a topic for the manual command. The function calls the
15617value of @code{org-man-command} to display the man page.
15618
15619Finally the function @code{org-man-store-link} is defined. When you try
c8d0cf5c 15620to store a link with @kbd{C-c l}, this function will be called to
4009494e 15621try to make a link. The function must first decide if it is supposed to
c8d0cf5c 15622create the link for this buffer type; we do this by checking the value
4009494e 15623of the variable @code{major-mode}. If not, the function must exit and
a7808fba
CD
15624return the value @code{nil}. If yes, the link is created by getting the
15625manual topic from the buffer name and prefixing it with the string
4009494e
GM
15626@samp{man:}. Then it must call the command @code{org-store-link-props}
15627and set the @code{:type} and @code{:link} properties. Optionally you
15628can also set the @code{:description} property to provide a default for
a7808fba 15629the link description when the link is later inserted into an Org
4009494e
GM
15630buffer with @kbd{C-c C-l}.
15631
acedf35c 15632When it makes sense for your new link type, you may also define a function
1df7defd 15633@code{org-PREFIX-complete-link} that implements special (e.g., completion)
c8d0cf5c
CD
15634support for inserting such a link with @kbd{C-c C-l}. Such a function should
15635not accept any arguments, and return the full link with prefix.
15636
15637@node Context-sensitive commands, Tables in arbitrary syntax, Adding hyperlink types, Hacking
15638@section Context-sensitive commands
15639@cindex context-sensitive commands, hooks
15640@cindex add-ons, context-sensitive commands
15641@vindex org-ctrl-c-ctrl-c-hook
15642
15643Org has several commands that act differently depending on context. The most
153ae947 15644important example is the @kbd{C-c C-c} (@pxref{The very busy C-c C-c key}).
c8d0cf5c
CD
15645Also the @kbd{M-cursor} and @kbd{M-S-cursor} keys have this property.
15646
15647Add-ons can tap into this functionality by providing a function that detects
15648special context for that add-on and executes functionality appropriate for
15649the context. Here is an example from Dan Davison's @file{org-R.el} which
afe98dfa 15650allows you to evaluate commands based on the @file{R} programming language
e66ba1df 15651@footnote{@file{org-R.el} has been replaced by the Org mode functionality
afe98dfa
CD
15652described in @ref{Working With Source Code} and is now obsolete.}. For this
15653package, special contexts are lines that start with @code{#+R:} or
c8d0cf5c
CD
15654@code{#+RR:}.
15655
15656@lisp
15657(defun org-R-apply-maybe ()
15658 "Detect if this is context for org-R and execute R commands."
15659 (if (save-excursion
15660 (beginning-of-line 1)
15661 (looking-at "#\\+RR?:"))
15662 (progn (call-interactively 'org-R-apply)
15663 t) ;; to signal that we took action
15664 nil)) ;; to signal that we did not
15665
15666(add-hook 'org-ctrl-c-ctrl-c-hook 'org-R-apply-maybe)
15667@end lisp
15668
15669The function first checks if the cursor is in such a line. If that is the
15670case, @code{org-R-apply} is called and the function returns @code{t} to
15671signal that action was taken, and @kbd{C-c C-c} will stop looking for other
ce57c2fe
BG
15672contexts. If the function finds it should do nothing locally, it returns
15673@code{nil} so that other, similar functions can have a try.
c8d0cf5c
CD
15674
15675
15676@node Tables in arbitrary syntax, Dynamic blocks, Context-sensitive commands, Hacking
a7808fba 15677@section Tables and lists in arbitrary syntax
4009494e 15678@cindex tables, in other modes
dbc28aaa 15679@cindex lists, in other modes
a7808fba 15680@cindex Orgtbl mode
4009494e 15681
a7808fba 15682Since Orgtbl mode can be used as a minor mode in arbitrary buffers, a
4009494e 15683frequent feature request has been to make it work with native tables in
acedf35c 15684specific languages, for example @LaTeX{}. However, this is extremely
dbc28aaa 15685hard to do in a general way, would lead to a customization nightmare,
ce57c2fe 15686and would take away much of the simplicity of the Orgtbl mode table
dbc28aaa
CD
15687editor.
15688
a7808fba 15689This appendix describes a different approach. We keep the Orgtbl mode
4009494e
GM
15690table in its native format (the @i{source table}), and use a custom
15691function to @i{translate} the table to the correct syntax, and to
15692@i{install} it in the right location (the @i{target table}). This puts
15693the burden of writing conversion functions on the user, but it allows
15694for a very flexible system.
15695
86fbb8ca
CD
15696Bastien added the ability to do the same with lists, in Orgstruct mode. You
15697can use Org's facilities to edit and structure lists by turning
15698@code{orgstruct-mode} on, then locally exporting such lists in another format
acedf35c 15699(HTML, @LaTeX{} or Texinfo.)
dbc28aaa
CD
15700
15701
4009494e 15702@menu
c0468714 15703* Radio tables:: Sending and receiving radio tables
e66ba1df 15704* A @LaTeX{} example:: Step by step, almost a tutorial
c0468714
GM
15705* Translator functions:: Copy and modify
15706* Radio lists:: Doing the same for lists
4009494e
GM
15707@end menu
15708
e66ba1df 15709@node Radio tables, A @LaTeX{} example, Tables in arbitrary syntax, Tables in arbitrary syntax
4009494e
GM
15710@subsection Radio tables
15711@cindex radio tables
15712
15713To define the location of the target table, you first need to create two
15714lines that are comments in the current mode, but contain magic words for
a7808fba 15715Orgtbl mode to find. Orgtbl mode will insert the translated table
4009494e
GM
15716between these lines, replacing whatever was there before. For example:
15717
15718@example
15719/* BEGIN RECEIVE ORGTBL table_name */
15720/* END RECEIVE ORGTBL table_name */
15721@end example
15722
15723@noindent
15724Just above the source table, we put a special line that tells
a7808fba 15725Orgtbl mode how to translate this table and where to install it. For
4009494e 15726example:
c8d0cf5c 15727@cindex #+ORGTBL
4009494e
GM
15728@example
15729#+ORGTBL: SEND table_name translation_function arguments....
15730@end example
15731
15732@noindent
15733@code{table_name} is the reference name for the table that is also used
ce57c2fe 15734in the receiver lines. @code{translation_function} is the Lisp function
4009494e
GM
15735that does the translation. Furthermore, the line can contain a list of
15736arguments (alternating key and value) at the end. The arguments will be
15737passed as a property list to the translation function for
15738interpretation. A few standard parameters are already recognized and
15739acted upon before the translation function is called:
15740
15741@table @code
15742@item :skip N
b349f79f
CD
15743Skip the first N lines of the table. Hlines do count as separate lines for
15744this parameter!
15745
4009494e
GM
15746@item :skipcols (n1 n2 ...)
15747List of columns that should be skipped. If the table has a column with
15748calculation marks, that column is automatically discarded as well.
15749Please note that the translator function sees the table @emph{after} the
15750removal of these columns, the function never knows that there have been
15751additional columns.
8223b1d2
BG
15752
15753@item :no-escape t
15754When non-nil, do not escape special characters @code{&%#_^} when exporting
15755the table. The default value is nil.
4009494e
GM
15756@end table
15757
15758@noindent
15759The one problem remaining is how to keep the source table in the buffer
15760without disturbing the normal workings of the file, for example during
acedf35c 15761compilation of a C file or processing of a @LaTeX{} file. There are a
4009494e
GM
15762number of different solutions:
15763
15764@itemize @bullet
15765@item
15766The table could be placed in a block comment if that is supported by the
a7808fba 15767language. For example, in C mode you could wrap the table between
4009494e 15768@samp{/*} and @samp{*/} lines.
28a16a1b 15769@item
4009494e 15770Sometimes it is possible to put the table after some kind of @i{END}
c8d0cf5c 15771statement, for example @samp{\bye} in @TeX{} and @samp{\end@{document@}}
acedf35c 15772in @LaTeX{}.
4009494e 15773@item
c8d0cf5c 15774You can just comment the table line-by-line whenever you want to process
4009494e 15775the file, and uncomment it whenever you need to edit the table. This
c8d0cf5c
CD
15776only sounds tedious---the command @kbd{M-x orgtbl-toggle-comment}
15777makes this comment-toggling very easy, in particular if you bind it to a
4009494e
GM
15778key.
15779@end itemize
15780
e66ba1df 15781@node A @LaTeX{} example, Translator functions, Radio tables, Tables in arbitrary syntax
acedf35c
CD
15782@subsection A @LaTeX{} example of radio tables
15783@cindex @LaTeX{}, and Orgtbl mode
4009494e 15784
acedf35c 15785The best way to wrap the source table in @LaTeX{} is to use the
4009494e
GM
15786@code{comment} environment provided by @file{comment.sty}. It has to be
15787activated by placing @code{\usepackage@{comment@}} into the document
a7808fba 15788header. Orgtbl mode can insert a radio table skeleton@footnote{By
acedf35c 15789default this works only for @LaTeX{}, HTML, and Texinfo. Configure the
4009494e
GM
15790variable @code{orgtbl-radio-tables} to install templates for other
15791modes.} with the command @kbd{M-x orgtbl-insert-radio-table}. You will
55e0839d 15792be prompted for a table name, let's say we use @samp{salesfigures}. You
4009494e
GM
15793will then get the following template:
15794
c8d0cf5c 15795@cindex #+ORGTBL, SEND
4009494e
GM
15796@example
15797% BEGIN RECEIVE ORGTBL salesfigures
15798% END RECEIVE ORGTBL salesfigures
15799\begin@{comment@}
15800#+ORGTBL: SEND salesfigures orgtbl-to-latex
15801| | |
15802\end@{comment@}
15803@end example
15804
15805@noindent
acedf35c 15806@vindex @LaTeX{}-verbatim-environments
a7808fba 15807The @code{#+ORGTBL: SEND} line tells Orgtbl mode to use the function
acedf35c 15808@code{orgtbl-to-latex} to convert the table into @LaTeX{} and to put it
4009494e 15809into the receiver location with name @code{salesfigures}. You may now
acedf35c 15810fill in the table---feel free to use the spreadsheet features@footnote{If
4009494e 15811the @samp{#+TBLFM} line contains an odd number of dollar characters,
acedf35c 15812this may cause problems with font-lock in @LaTeX{} mode. As shown in the
4009494e
GM
15813example you can fix this by adding an extra line inside the
15814@code{comment} environment that is used to balance the dollar
c8d0cf5c 15815expressions. If you are using AUC@TeX{} with the font-latex library, a
4009494e
GM
15816much better solution is to add the @code{comment} environment to the
15817variable @code{LaTeX-verbatim-environments}.}:
15818
15819@example
15820% BEGIN RECEIVE ORGTBL salesfigures
15821% END RECEIVE ORGTBL salesfigures
15822\begin@{comment@}
15823#+ORGTBL: SEND salesfigures orgtbl-to-latex
15824| Month | Days | Nr sold | per day |
15825|-------+------+---------+---------|
15826| Jan | 23 | 55 | 2.4 |
15827| Feb | 21 | 16 | 0.8 |
15828| March | 22 | 278 | 12.6 |
15829#+TBLFM: $4=$3/$2;%.1f
15830% $ (optional extra dollar to keep font-lock happy, see footnote)
15831\end@{comment@}
15832@end example
15833
15834@noindent
15835When you are done, press @kbd{C-c C-c} in the table to get the converted
15836table inserted between the two marker lines.
15837
55e0839d 15838Now let's assume you want to make the table header by hand, because you
1df7defd 15839want to control how columns are aligned, etc. In this case we make sure
c8d0cf5c 15840that the table translator skips the first 2 lines of the source
1df7defd 15841table, and tell the command to work as a @i{splice}, i.e., to not produce
4009494e
GM
15842header and footer commands of the target table:
15843
15844@example
15845\begin@{tabular@}@{lrrr@}
15846Month & \multicolumn@{1@}@{c@}@{Days@} & Nr.\ sold & per day\\
15847% BEGIN RECEIVE ORGTBL salesfigures
15848% END RECEIVE ORGTBL salesfigures
15849\end@{tabular@}
15850%
15851\begin@{comment@}
15852#+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2
15853| Month | Days | Nr sold | per day |
15854|-------+------+---------+---------|
15855| Jan | 23 | 55 | 2.4 |
15856| Feb | 21 | 16 | 0.8 |
15857| March | 22 | 278 | 12.6 |
15858#+TBLFM: $4=$3/$2;%.1f
15859\end@{comment@}
15860@end example
15861
acedf35c 15862The @LaTeX{} translator function @code{orgtbl-to-latex} is already part of
a7808fba 15863Orgtbl mode. It uses a @code{tabular} environment to typeset the table
4009494e 15864and marks horizontal lines with @code{\hline}. Furthermore, it
c8d0cf5c 15865interprets the following parameters (see also @pxref{Translator functions}):
4009494e
GM
15866
15867@table @code
15868@item :splice nil/t
15869When set to t, return only table body lines, don't wrap them into a
15870tabular environment. Default is nil.
15871
15872@item :fmt fmt
c8d0cf5c 15873A format to be used to wrap each field, it should contain @code{%s} for the
4009494e
GM
15874original field value. For example, to wrap each field value in dollars,
15875you could use @code{:fmt "$%s$"}. This may also be a property list with
ce57c2fe 15876column numbers and formats, for example @code{:fmt (2 "$%s$" 4 "%s\\%%")}.
a7808fba
CD
15877A function of one argument can be used in place of the strings; the
15878function must return a formatted string.
4009494e
GM
15879
15880@item :efmt efmt
15881Use this format to print numbers with exponentials. The format should
15882have @code{%s} twice for inserting mantissa and exponent, for example
15883@code{"%s\\times10^@{%s@}"}. The default is @code{"%s\\,(%s)"}. This
15884may also be a property list with column numbers and formats, for example
15885@code{:efmt (2 "$%s\\times10^@{%s@}$" 4 "$%s\\cdot10^@{%s@}$")}. After
15886@code{efmt} has been applied to a value, @code{fmt} will also be
a7808fba
CD
15887applied. Similar to @code{fmt}, functions of two arguments can be
15888supplied instead of strings.
4009494e
GM
15889@end table
15890
e66ba1df 15891@node Translator functions, Radio lists, A @LaTeX{} example, Tables in arbitrary syntax
4009494e 15892@subsection Translator functions
a7808fba 15893@cindex HTML, and Orgtbl mode
4009494e
GM
15894@cindex translator function
15895
b349f79f
CD
15896Orgtbl mode has several translator functions built-in: @code{orgtbl-to-csv}
15897(comma-separated values), @code{orgtbl-to-tsv} (TAB-separated values)
15898@code{orgtbl-to-latex}, @code{orgtbl-to-html}, and @code{orgtbl-to-texinfo}.
15899Except for @code{orgtbl-to-html}@footnote{The HTML translator uses the same
15900code that produces tables during HTML export.}, these all use a generic
15901translator, @code{orgtbl-to-generic}. For example, @code{orgtbl-to-latex}
15902itself is a very short function that computes the column definitions for the
15903@code{tabular} environment, defines a few field and line separators and then
c8d0cf5c 15904hands processing over to the generic translator. Here is the entire code:
4009494e
GM
15905
15906@lisp
15907@group
15908(defun orgtbl-to-latex (table params)
a7808fba 15909 "Convert the Orgtbl mode TABLE to LaTeX."
4009494e
GM
15910 (let* ((alignment (mapconcat (lambda (x) (if x "r" "l"))
15911 org-table-last-alignment ""))
15912 (params2
15913 (list
15914 :tstart (concat "\\begin@{tabular@}@{" alignment "@}")
15915 :tend "\\end@{tabular@}"
15916 :lstart "" :lend " \\\\" :sep " & "
15917 :efmt "%s\\,(%s)" :hline "\\hline")))
15918 (orgtbl-to-generic table (org-combine-plists params2 params))))
15919@end group
15920@end lisp
15921
15922As you can see, the properties passed into the function (variable
15923@var{PARAMS}) are combined with the ones newly defined in the function
1df7defd 15924(variable @var{PARAMS2}). The ones passed into the function (i.e., the
4009494e 15925ones set by the @samp{ORGTBL SEND} line) take precedence. So if you
acedf35c 15926would like to use the @LaTeX{} translator, but wanted the line endings to
4009494e
GM
15927be @samp{\\[2mm]} instead of the default @samp{\\}, you could just
15928overrule the default with
15929
15930@example
15931#+ORGTBL: SEND test orgtbl-to-latex :lend " \\\\[2mm]"
15932@end example
15933
15934For a new language, you can either write your own converter function in
acedf35c 15935analogy with the @LaTeX{} translator, or you can use the generic function
4009494e
GM
15936directly. For example, if you have a language where a table is started
15937with @samp{!BTBL!}, ended with @samp{!ETBL!}, and where table lines are
c8d0cf5c 15938started with @samp{!BL!}, ended with @samp{!EL!}, and where the field
4009494e
GM
15939separator is a TAB, you could call the generic translator like this (on
15940a single line!):
15941
15942@example
15943#+ORGTBL: SEND test orgtbl-to-generic :tstart "!BTBL!" :tend "!ETBL!"
15944 :lstart "!BL! " :lend " !EL!" :sep "\t"
15945@end example
15946
15947@noindent
15948Please check the documentation string of the function
15949@code{orgtbl-to-generic} for a full list of parameters understood by
c8d0cf5c 15950that function, and remember that you can pass each of them into
4009494e
GM
15951@code{orgtbl-to-latex}, @code{orgtbl-to-texinfo}, and any other function
15952using the generic function.
15953
15954Of course you can also write a completely new function doing complicated
15955things the generic translator cannot do. A translator function takes
15956two arguments. The first argument is the table, a list of lines, each
15957line either the symbol @code{hline} or a list of fields. The second
15958argument is the property list containing all parameters specified in the
15959@samp{#+ORGTBL: SEND} line. The function must return a single string
15960containing the formatted table. If you write a generally useful
c8d0cf5c 15961translator, please post it on @email{emacs-orgmode@@gnu.org} so that
4009494e
GM
15962others can benefit from your work.
15963
86fbb8ca 15964@node Radio lists, , Translator functions, Tables in arbitrary syntax
dbc28aaa
CD
15965@subsection Radio lists
15966@cindex radio lists
15967@cindex org-list-insert-radio-list
15968
acedf35c 15969Sending and receiving radio lists works exactly the same way as sending and
6eb02347 15970receiving radio tables (@pxref{Radio tables}). As for radio tables, you can
acedf35c 15971insert radio list templates in HTML, @LaTeX{} and Texinfo modes by calling
6eb02347 15972@code{org-list-insert-radio-list}.
dbc28aaa
CD
15973
15974Here are the differences with radio tables:
15975
15976@itemize @minus
15977@item
86fbb8ca
CD
15978Orgstruct mode must be active.
15979@item
15980Use the @code{ORGLST} keyword instead of @code{ORGTBL}.
dbc28aaa
CD
15981@item
15982The available translation functions for radio lists don't take
15983parameters.
28a16a1b 15984@item
c8d0cf5c 15985@kbd{C-c C-c} will work when pressed on the first item of the list.
dbc28aaa
CD
15986@end itemize
15987
acedf35c
CD
15988Here is a @LaTeX{} example. Let's say that you have this in your
15989@LaTeX{} file:
dbc28aaa 15990
86fbb8ca 15991@cindex #+ORGLST
dbc28aaa
CD
15992@example
15993% BEGIN RECEIVE ORGLST to-buy
15994% END RECEIVE ORGLST to-buy
15995\begin@{comment@}
86fbb8ca 15996#+ORGLST: SEND to-buy org-list-to-latex
dbc28aaa
CD
15997- a new house
15998- a new computer
15999 + a new keyboard
16000 + a new mouse
16001- a new life
16002\end@{comment@}
16003@end example
16004
16005Pressing `C-c C-c' on @code{a new house} and will insert the converted
acedf35c 16006@LaTeX{} list between the two marker lines.
dbc28aaa 16007
b349f79f 16008@node Dynamic blocks, Special agenda views, Tables in arbitrary syntax, Hacking
4009494e
GM
16009@section Dynamic blocks
16010@cindex dynamic blocks
16011
a7808fba 16012Org documents can contain @emph{dynamic blocks}. These are
4009494e
GM
16013specially marked regions that are updated by some user-written function.
16014A good example for such a block is the clock table inserted by the
16015command @kbd{C-c C-x C-r} (@pxref{Clocking work time}).
16016
acedf35c 16017Dynamic blocks are enclosed by a BEGIN-END structure that assigns a name
4009494e
GM
16018to the block and can also specify parameters for the function producing
16019the content of the block.
16020
acedf35c 16021@cindex #+BEGIN:dynamic block
4009494e
GM
16022@example
16023#+BEGIN: myblock :parameter1 value1 :parameter2 value2 ...
16024
16025#+END:
16026@end example
16027
16028Dynamic blocks are updated with the following commands
16029
16030@table @kbd
acedf35c 16031@orgcmd{C-c C-x C-u,org-dblock-update}
4009494e 16032Update dynamic block at point.
acedf35c 16033@orgkey{C-u C-c C-x C-u}
4009494e
GM
16034Update all dynamic blocks in the current file.
16035@end table
16036
16037Updating a dynamic block means to remove all the text between BEGIN and
16038END, parse the BEGIN line for parameters and then call the specific
28a16a1b
CD
16039writer function for this block to insert the new content. If you want
16040to use the original content in the writer function, you can use the
16041extra parameter @code{:content}.
16042
16043For a block with name @code{myblock}, the writer function is
4009494e
GM
16044@code{org-dblock-write:myblock} with as only parameter a property list
16045with the parameters given in the begin line. Here is a trivial example
16046of a block that keeps track of when the block update function was last
16047run:
16048
16049@example
16050#+BEGIN: block-update-time :format "on %m/%d/%Y at %H:%M"
16051
16052#+END:
16053@end example
16054
16055@noindent
16056The corresponding block writer function could look like this:
16057
16058@lisp
16059(defun org-dblock-write:block-update-time (params)
63aa0982
BG
16060 (let ((fmt (or (plist-get params :format) "%d. %m. %Y")))
16061 (insert "Last block update at: "
16062 (format-time-string fmt (current-time)))))
4009494e
GM
16063@end lisp
16064
16065If you want to make sure that all dynamic blocks are always up-to-date,
16066you could add the function @code{org-update-all-dblocks} to a hook, for
16067example @code{before-save-hook}. @code{org-update-all-dblocks} is
c8d0cf5c 16068written in a way such that it does nothing in buffers that are not in
a7808fba 16069@code{org-mode}.
4009494e 16070
ce57c2fe
BG
16071You can narrow the current buffer to the current dynamic block (like any
16072other block) with @code{org-narrow-to-block}.
16073
c8d0cf5c 16074@node Special agenda views, Extracting agenda information, Dynamic blocks, Hacking
a7808fba 16075@section Special agenda views
4009494e
GM
16076@cindex agenda views, user-defined
16077
ce57c2fe
BG
16078@vindex org-agenda-skip-function
16079@vindex org-agenda-skip-function-global
afe98dfa 16080Org provides a special hook that can be used to narrow down the selection
ce57c2fe
BG
16081made by these agenda views: @code{agenda}, @code{todo}, @code{alltodo},
16082@code{tags}, @code{tags-todo}, @code{tags-tree}. You may specify a function
16083that is used at each match to verify if the match should indeed be part of
16084the agenda view, and if not, how much should be skipped. You can specify a
16085global condition that will be applied to all agenda views, this condition
16086would be stored in the variable @code{org-agenda-skip-function-global}. More
16087commonly, such a definition is applied only to specific custom searches,
16088using @code{org-agenda-skip-function}.
4009494e
GM
16089
16090Let's say you want to produce a list of projects that contain a WAITING
16091tag anywhere in the project tree. Let's further assume that you have
a7808fba 16092marked all tree headings that define a project with the TODO keyword
1df7defd 16093PROJECT@. In this case you would run a TODO search for the keyword
4009494e
GM
16094PROJECT, but skip the match unless there is a WAITING tag anywhere in
16095the subtree belonging to the project line.
16096
16097To achieve this, you must write a function that searches the subtree for
16098the tag. If the tag is found, the function must return @code{nil} to
16099indicate that this match should not be skipped. If there is no such
16100tag, return the location of the end of the subtree, to indicate that
16101search should continue from there.
16102
16103@lisp
16104(defun my-skip-unless-waiting ()
16105 "Skip trees that are not waiting"
16106 (let ((subtree-end (save-excursion (org-end-of-subtree t))))
dbc28aaa 16107 (if (re-search-forward ":waiting:" subtree-end t)
4009494e
GM
16108 nil ; tag found, do not skip
16109 subtree-end))) ; tag not found, continue after end of subtree
16110@end lisp
16111
16112Now you may use this function in an agenda custom command, for example
16113like this:
16114
16115@lisp
16116(org-add-agenda-custom-command
16117 '("b" todo "PROJECT"
e45e3595 16118 ((org-agenda-skip-function 'my-skip-unless-waiting)
4009494e
GM
16119 (org-agenda-overriding-header "Projects waiting for something: "))))
16120@end lisp
16121
c8d0cf5c 16122@vindex org-agenda-overriding-header
4009494e
GM
16123Note that this also binds @code{org-agenda-overriding-header} to get a
16124meaningful header in the agenda view.
16125
c8d0cf5c
CD
16126@vindex org-odd-levels-only
16127@vindex org-agenda-skip-function
a7808fba
CD
16128A general way to create custom searches is to base them on a search for
16129entries with a certain level limit. If you want to study all entries with
c8d0cf5c
CD
16130your custom search function, simply do a search for
16131@samp{LEVEL>0}@footnote{Note that, when using @code{org-odd-levels-only}, a
16132level number corresponds to order in the hierarchy, not to the number of
16133stars.}, and then use @code{org-agenda-skip-function} to select the entries
16134you really want to have.
a7808fba 16135
4009494e
GM
16136You may also put a Lisp form into @code{org-agenda-skip-function}. In
16137particular, you may use the functions @code{org-agenda-skip-entry-if}
16138and @code{org-agenda-skip-subtree-if} in this form, for example:
16139
16140@table @code
6d72f719 16141@item (org-agenda-skip-entry-if 'scheduled)
4009494e 16142Skip current entry if it has been scheduled.
6d72f719 16143@item (org-agenda-skip-entry-if 'notscheduled)
4009494e 16144Skip current entry if it has not been scheduled.
6d72f719 16145@item (org-agenda-skip-entry-if 'deadline)
4009494e 16146Skip current entry if it has a deadline.
6d72f719 16147@item (org-agenda-skip-entry-if 'scheduled 'deadline)
4009494e 16148Skip current entry if it has a deadline, or if it is scheduled.
6d72f719 16149@item (org-agenda-skip-entry-if 'todo '("TODO" "WAITING"))
ed21c5c8 16150Skip current entry if the TODO keyword is TODO or WAITING.
6d72f719 16151@item (org-agenda-skip-entry-if 'todo 'done)
ed21c5c8 16152Skip current entry if the TODO keyword marks a DONE state.
6d72f719 16153@item (org-agenda-skip-entry-if 'timestamp)
c8d0cf5c 16154Skip current entry if it has any timestamp, may also be deadline or scheduled.
8223b1d2
BG
16155@anchor{x-agenda-skip-entry-regexp}
16156@item (org-agenda-skip-entry-if 'regexp "regular expression")
dbc28aaa 16157Skip current entry if the regular expression matches in the entry.
8223b1d2 16158@item (org-agenda-skip-entry-if 'notregexp "regular expression")
dbc28aaa 16159Skip current entry unless the regular expression matches.
6d72f719 16160@item (org-agenda-skip-subtree-if 'regexp "regular expression")
4009494e
GM
16161Same as above, but check and skip the entire subtree.
16162@end table
16163
16164Therefore we could also have written the search for WAITING projects
16165like this, even without defining a special function:
16166
16167@lisp
16168(org-add-agenda-custom-command
16169 '("b" todo "PROJECT"
16170 ((org-agenda-skip-function '(org-agenda-skip-subtree-if
dbc28aaa 16171 'regexp ":waiting:"))
4009494e
GM
16172 (org-agenda-overriding-header "Projects waiting for something: "))))
16173@end lisp
16174
c8d0cf5c
CD
16175@node Extracting agenda information, Using the property API, Special agenda views, Hacking
16176@section Extracting agenda information
16177@cindex agenda, pipe
16178@cindex Scripts, for agenda processing
16179
16180@vindex org-agenda-custom-commands
16181Org provides commands to access agenda information for the command
16182line in Emacs batch mode. This extracted information can be sent
16183directly to a printer, or it can be read by a program that does further
16184processing of the data. The first of these commands is the function
16185@code{org-batch-agenda}, that produces an agenda view and sends it as
1df7defd 16186ASCII text to STDOUT@. The command takes a single string as parameter.
c8d0cf5c
CD
16187If the string has length 1, it is used as a key to one of the commands
16188you have configured in @code{org-agenda-custom-commands}, basically any
16189key you can use after @kbd{C-c a}. For example, to directly print the
16190current TODO list, you could use
16191
16192@example
16193emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
16194@end example
16195
16196If the parameter is a string with 2 or more characters, it is used as a
16197tags/TODO match string. For example, to print your local shopping list
16198(all items with the tag @samp{shop}, but excluding the tag
16199@samp{NewYork}), you could use
16200
16201@example
16202emacs -batch -l ~/.emacs \
16203 -eval '(org-batch-agenda "+shop-NewYork")' | lpr
16204@end example
16205
16206@noindent
16207You may also modify parameters on the fly like this:
16208
16209@example
16210emacs -batch -l ~/.emacs \
16211 -eval '(org-batch-agenda "a" \
e66ba1df 16212 org-agenda-span (quote month) \
c8d0cf5c
CD
16213 org-agenda-include-diary nil \
16214 org-agenda-files (quote ("~/org/project.org")))' \
16215 | lpr
16216@end example
16217
16218@noindent
16219which will produce a 30-day agenda, fully restricted to the Org file
16220@file{~/org/projects.org}, not even including the diary.
16221
16222If you want to process the agenda data in more sophisticated ways, you
16223can use the command @code{org-batch-agenda-csv} to get a comma-separated
16224list of values for each agenda item. Each line in the output will
16225contain a number of fields separated by commas. The fields in a line
16226are:
16227
16228@example
16229category @r{The category of the item}
16230head @r{The headline, without TODO keyword, TAGS and PRIORITY}
16231type @r{The type of the agenda entry, can be}
16232 todo @r{selected in TODO match}
16233 tagsmatch @r{selected in tags match}
16234 diary @r{imported from diary}
16235 deadline @r{a deadline}
16236 scheduled @r{scheduled}
16237 timestamp @r{appointment, selected by timestamp}
16238 closed @r{entry was closed on date}
16239 upcoming-deadline @r{warning about nearing deadline}
16240 past-scheduled @r{forwarded scheduled item}
16241 block @r{entry has date block including date}
16242todo @r{The TODO keyword, if any}
16243tags @r{All tags including inherited ones, separated by colons}
16244date @r{The relevant date, like 2007-2-14}
16245time @r{The time, like 15:00-16:50}
16246extra @r{String with extra planning info}
16247priority-l @r{The priority letter if any was given}
16248priority-n @r{The computed numerical priority}
16249@end example
16250
16251@noindent
16252Time and date will only be given if a timestamp (or deadline/scheduled)
16253led to the selection of the item.
16254
16255A CSV list like this is very easy to use in a post-processing script.
16256For example, here is a Perl program that gets the TODO list from
16257Emacs/Org and prints all the items, preceded by a checkbox:
16258
16259@example
16260#!/usr/bin/perl
16261
16262# define the Emacs command to run
16263$cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'";
16264
16265# run it and capture the output
16266$agenda = qx@{$cmd 2>/dev/null@};
16267
16268# loop over all lines
16269foreach $line (split(/\n/,$agenda)) @{
16270 # get the individual values
16271 ($category,$head,$type,$todo,$tags,$date,$time,$extra,
16272 $priority_l,$priority_n) = split(/,/,$line);
16273 # process and print
16274 print "[ ] $head\n";
16275@}
16276@end example
16277
c8d0cf5c 16278@node Using the property API, Using the mapping API, Extracting agenda information, Hacking
4009494e
GM
16279@section Using the property API
16280@cindex API, for properties
16281@cindex properties, API
16282
16283Here is a description of the functions that can be used to work with
16284properties.
16285
16286@defun org-entry-properties &optional pom which
c8d0cf5c 16287Get all properties of the entry at point-or-marker POM.@*
4009494e
GM
16288This includes the TODO keyword, the tags, time strings for deadline,
16289scheduled, and clocking, and any additional properties defined in the
acedf35c 16290entry. The return value is an alist. Keys may occur multiple times
c8d0cf5c 16291if the property key was used several times.@*
4009494e
GM
16292POM may also be nil, in which case the current entry is used.
16293If WHICH is nil or `all', get all properties. If WHICH is
16294`special' or `standard', only get that subclass.
16295@end defun
c8d0cf5c 16296@vindex org-use-property-inheritance
8223b1d2 16297@findex org-insert-property-drawer
4009494e 16298@defun org-entry-get pom property &optional inherit
1df7defd 16299Get value of PROPERTY for entry at point-or-marker POM@. By default,
a7808fba
CD
16300this only looks at properties defined locally in the entry. If INHERIT
16301is non-nil and the entry does not have the property, then also check
16302higher levels of the hierarchy. If INHERIT is the symbol
16303@code{selective}, use inheritance if and only if the setting of
16304@code{org-use-property-inheritance} selects PROPERTY for inheritance.
4009494e
GM
16305@end defun
16306
16307@defun org-entry-delete pom property
16308Delete the property PROPERTY from entry at point-or-marker POM.
16309@end defun
16310
16311@defun org-entry-put pom property value
16312Set PROPERTY to VALUE for entry at point-or-marker POM.
16313@end defun
16314
16315@defun org-buffer-property-keys &optional include-specials
16316Get all property keys in the current buffer.
16317@end defun
16318
16319@defun org-insert-property-drawer
8223b1d2 16320Insert a property drawer for the current entry. Also
4009494e
GM
16321@end defun
16322
864c9740 16323@defun org-entry-put-multivalued-property pom property &rest values
1df7defd 16324Set PROPERTY at point-or-marker POM to VALUES@. VALUES should be a list of
864c9740
CD
16325strings. They will be concatenated, with spaces as separators.
16326@end defun
16327
16328@defun org-entry-get-multivalued-property pom property
16329Treat the value of the property PROPERTY as a whitespace-separated list of
16330values and return the values as a list of strings.
16331@end defun
16332
a7808fba
CD
16333@defun org-entry-add-to-multivalued-property pom property value
16334Treat the value of the property PROPERTY as a whitespace-separated list of
16335values and make sure that VALUE is in this list.
16336@end defun
16337
16338@defun org-entry-remove-from-multivalued-property pom property value
16339Treat the value of the property PROPERTY as a whitespace-separated list of
16340values and make sure that VALUE is @emph{not} in this list.
16341@end defun
16342
16343@defun org-entry-member-in-multivalued-property pom property value
16344Treat the value of the property PROPERTY as a whitespace-separated list of
16345values and check if VALUE is in this list.
16346@end defun
16347
ed21c5c8 16348@defopt org-property-allowed-value-functions
acedf35c 16349Hook for functions supplying allowed values for a specific property.
ed21c5c8
CD
16350The functions must take a single argument, the name of the property, and
16351return a flat list of allowed values. If @samp{:ETC} is one of
16352the values, use the values as completion help, but allow also other values
16353to be entered. The functions must return @code{nil} if they are not
16354responsible for this property.
16355@end defopt
16356
b349f79f
CD
16357@node Using the mapping API, , Using the property API, Hacking
16358@section Using the mapping API
16359@cindex API, for mapping
16360@cindex mapping entries, API
16361
16362Org has sophisticated mapping capabilities to find all entries satisfying
16363certain criteria. Internally, this functionality is used to produce agenda
16364views, but there is also an API that can be used to execute arbitrary
16365functions for each or selected entries. The main entry point for this API
96c8522a 16366is:
b349f79f
CD
16367
16368@defun org-map-entries func &optional match scope &rest skip
16369Call FUNC at each headline selected by MATCH in SCOPE.
16370
c8d0cf5c 16371FUNC is a function or a Lisp form. The function will be called without
b349f79f
CD
16372arguments, with the cursor positioned at the beginning of the headline.
16373The return values of all calls to the function will be collected and
16374returned as a list.
16375
c8d0cf5c
CD
16376The call to FUNC will be wrapped into a save-excursion form, so FUNC
16377does not need to preserve point. After evaluation, the cursor will be
16378moved to the end of the line (presumably of the headline of the
16379processed entry) and search continues from there. Under some
16380circumstances, this may not produce the wanted results. For example,
1df7defd 16381if you have removed (e.g., archived) the current (sub)tree it could
c8d0cf5c
CD
16382mean that the next entry will be skipped entirely. In such cases, you
16383can specify the position from where search should continue by making
16384FUNC set the variable `org-map-continue-from' to the desired buffer
16385position.
16386
864c9740 16387MATCH is a tags/property/todo match as it is used in the agenda match view.
b349f79f
CD
16388Only headlines that are matched by this query will be considered during
16389the iteration. When MATCH is nil or t, all headlines will be
16390visited by the iteration.
16391
16392SCOPE determines the scope of this command. It can be any of:
16393
16394@example
16395nil @r{the current buffer, respecting the restriction if any}
16396tree @r{the subtree started with the entry at point}
ce57c2fe 16397region @r{The entries within the active region, if any}
b349f79f
CD
16398file @r{the current buffer, without restriction}
16399file-with-archives
16400 @r{the current buffer, and any archives associated with it}
16401agenda @r{all agenda files}
16402agenda-with-archives
16403 @r{all agenda files with any archive files associated with them}
16404(file1 file2 ...)
16405 @r{if this is a list, all files in the list will be scanned}
16406@end example
c8d0cf5c 16407@noindent
b349f79f
CD
16408The remaining args are treated as settings for the skipping facilities of
16409the scanner. The following items can be given here:
16410
c8d0cf5c 16411@vindex org-agenda-skip-function
b349f79f
CD
16412@example
16413archive @r{skip trees with the archive tag}
16414comment @r{skip trees with the COMMENT keyword}
16415function or Lisp form
16416 @r{will be used as value for @code{org-agenda-skip-function},}
867d4bb3 16417 @r{so whenever the function returns t, FUNC}
b349f79f
CD
16418 @r{will not be called for that entry and search will}
16419 @r{continue from the point where the function leaves it}
16420@end example
16421@end defun
16422
16423The function given to that mapping routine can really do anything you like.
a50253cc
GM
16424It can use the property API (@pxref{Using the property API}) to gather more
16425information about the entry, or in order to change metadata in the entry.
b349f79f 16426Here are a couple of functions that might be handy:
96c8522a 16427
b349f79f 16428@defun org-todo &optional arg
acedf35c 16429Change the TODO state of the entry. See the docstring of the functions for
b349f79f
CD
16430the many possible values for the argument ARG.
16431@end defun
16432
16433@defun org-priority &optional action
acedf35c 16434Change the priority of the entry. See the docstring of this function for the
b349f79f
CD
16435possible values for ACTION.
16436@end defun
16437
16438@defun org-toggle-tag tag &optional onoff
16439Toggle the tag TAG in the current entry. Setting ONOFF to either @code{on}
16440or @code{off} will not toggle tag, but ensure that it is either on or off.
16441@end defun
16442
16443@defun org-promote
16444Promote the current entry.
16445@end defun
16446
16447@defun org-demote
16448Demote the current entry.
16449@end defun
16450
16451Here is a simple example that will turn all entries in the current file with
16452a tag @code{TOMORROW} into TODO entries with the keyword @code{UPCOMING}.
16453Entries in comment trees and in archive trees will be ignored.
16454
16455@lisp
16456(org-map-entries
63aa0982
BG
16457 '(org-todo "UPCOMING")
16458 "+TOMORROW" 'file 'archive 'comment)
b349f79f
CD
16459@end lisp
16460
16461The following example counts the number of entries with TODO keyword
16462@code{WAITING}, in all agenda files.
16463
16464@lisp
96c8522a 16465(length (org-map-entries t "/+WAITING" 'agenda))
b349f79f
CD
16466@end lisp
16467
7006d207
CD
16468@node MobileOrg, History and Acknowledgments, Hacking, Top
16469@appendix MobileOrg
16470@cindex iPhone
16471@cindex MobileOrg
16472
8223b1d2
BG
16473@i{MobileOrg} is the name of the mobile companion app for Org mode, currently
16474available for iOS and for Android. @i{MobileOrg} offers offline viewing and
16475capture support for an Org mode system rooted on a ``real'' computer. It
16476does also allow you to record changes to existing entries.
16477The @uref{http://mobileorg.ncogni.to/, iOS implementation} for the
16478@i{iPhone/iPod Touch/iPad} series of devices, was developed by Richard
16479Moreland. Android users should check out
86fbb8ca 16480@uref{http://wiki.github.com/matburt/mobileorg-android/, MobileOrg Android}
8223b1d2
BG
16481by Matt Jones. The two implementations are not identical but offer similar
16482features.
7006d207
CD
16483
16484This appendix describes the support Org has for creating agenda views in a
16485format that can be displayed by @i{MobileOrg}, and for integrating notes
a351880d
CD
16486captured and changes made by @i{MobileOrg} into the main system.
16487
16488For changing tags and TODO states in MobileOrg, you should have set up the
16489customization variables @code{org-todo-keywords} and @code{org-tags-alist} to
86fbb8ca 16490cover all important tags and TODO keywords, even if individual files use only
a351880d 16491part of these. MobileOrg will also offer you states and tags set up with
86fbb8ca 16492in-buffer settings, but it will understand the logistics of TODO state
a351880d
CD
16493@i{sets} (@pxref{Per-file keywords}) and @i{mutually exclusive} tags
16494(@pxref{Setting tags}) only for those set in these variables.
7006d207
CD
16495
16496@menu
c0468714
GM
16497* Setting up the staging area:: Where to interact with the mobile device
16498* Pushing to MobileOrg:: Uploading Org files and agendas
16499* Pulling from MobileOrg:: Integrating captured and flagged items
7006d207
CD
16500@end menu
16501
16502@node Setting up the staging area, Pushing to MobileOrg, MobileOrg, MobileOrg
16503@section Setting up the staging area
16504
acedf35c 16505MobileOrg needs to interact with Emacs through a directory on a server. If you
afe98dfa 16506are using a public server, you should consider to encrypt the files that are
e66ba1df 16507uploaded to the server. This can be done with Org mode 7.02 and with
afe98dfa
CD
16508@i{MobileOrg 1.5} (iPhone version), and you need an @file{openssl}
16509installation on your system. To turn on encryption, set a password in
16510@i{MobileOrg} and, on the Emacs side, configure the variable
16511@code{org-mobile-use-encryption}@footnote{If you can safely store the
16512password in your Emacs setup, you might also want to configure
16513@code{org-mobile-encryption-password}. Please read the docstring of that
16514variable. Note that encryption will apply only to the contents of the
16515@file{.org} files. The file names themselves will remain visible.}.
16516
16517The easiest way to create that directory is to use a free
16518@uref{http://dropbox.com,Dropbox.com} account@footnote{If you cannot use
16519Dropbox, or if your version of MobileOrg does not support it, you can use a
acedf35c 16520webdav server. For more information, check out the documentation of MobileOrg and also this
ce57c2fe 16521@uref{http://orgmode.org/worg/org-faq.html#mobileorg_webdav, FAQ entry}.}.
86fbb8ca
CD
16522When MobileOrg first connects to your Dropbox, it will create a directory
16523@i{MobileOrg} inside the Dropbox. After the directory has been created, tell
16524Emacs about it:
a351880d 16525
86fbb8ca
CD
16526@lisp
16527(setq org-mobile-directory "~/Dropbox/MobileOrg")
16528@end lisp
a351880d 16529
e66ba1df 16530Org mode has commands to put files for @i{MobileOrg} into that directory,
86fbb8ca 16531and to read captured notes from there.
7006d207
CD
16532
16533@node Pushing to MobileOrg, Pulling from MobileOrg, Setting up the staging area, MobileOrg
16534@section Pushing to MobileOrg
16535
16536This operation copies all files currently listed in @code{org-mobile-files}
16537to the directory @code{org-mobile-directory}. By default this list contains
16538all agenda files (as listed in @code{org-agenda-files}), but additional files
ce57c2fe 16539can be included by customizing @code{org-mobile-files}. File names will be
acedf35c 16540staged with paths relative to @code{org-directory}, so all files should be
86fbb8ca
CD
16541inside this directory. The push operation also creates a special Org file
16542@file{agendas.org} with all custom agenda view defined by the
e66ba1df 16543user@footnote{While creating the agendas, Org mode will force ID properties
afe98dfa
CD
16544on all referenced entries, so that these entries can be uniquely identified
16545if @i{MobileOrg} flags them for further action. If you do not want to get
16546these properties in so many entries, you can set the variable
16547@code{org-mobile-force-id-on-agenda-items} to @code{nil}. Org mode will then
16548rely on outline paths, in the hope that these will be unique enough.}.
16549Finally, Org writes the file @file{index.org}, containing links to all other
16550files. @i{MobileOrg} first reads this file from the server, and then
16551downloads all agendas and Org files listed in it. To speed up the download,
735135f9 16552MobileOrg will only read files whose checksums@footnote{Checksums are stored
8223b1d2 16553automatically in the file @file{checksums.dat}} have changed.
7006d207
CD
16554
16555@node Pulling from MobileOrg, , Pushing to MobileOrg, MobileOrg
16556@section Pulling from MobileOrg
16557
86fbb8ca
CD
16558When @i{MobileOrg} synchronizes with the server, it not only pulls the Org
16559files for viewing. It also appends captured entries and pointers to flagged
16560and changed entries to the file @file{mobileorg.org} on the server. Org has
16561a @emph{pull} operation that integrates this information into an inbox file
16562and operates on the pointers to flagged entries. Here is how it works:
7006d207
CD
16563
16564@enumerate
16565@item
16566Org moves all entries found in
16567@file{mobileorg.org}@footnote{@file{mobileorg.org} will be empty after this
16568operation.} and appends them to the file pointed to by the variable
a351880d
CD
16569@code{org-mobile-inbox-for-pull}. Each captured entry and each editing event
16570will be a top-level entry in the inbox file.
16571@item
16572After moving the entries, Org will attempt to implement the changes made in
16573@i{MobileOrg}. Some changes are applied directly and without user
16574interaction. Examples are all changes to tags, TODO state, headline and body
16575text that can be cleanly applied. Entries that have been flagged for further
16576action will receive a tag @code{:FLAGGED:}, so that they can be easily found
16577again. When there is a problem finding an entry or applying the change, the
16578pointer entry will remain in the inbox and will be marked with an error
16579message. You need to later resolve these issues by hand.
7006d207
CD
16580@item
16581Org will then generate an agenda view with all flagged entries. The user
16582should then go through these entries and do whatever actions are necessary.
16583If a note has been stored while flagging an entry in @i{MobileOrg}, that note
16584will be displayed in the echo area when the cursor is on the corresponding
16585agenda line.
16586@table @kbd
16587@kindex ?
16588@item ?
16589Pressing @kbd{?} in that special agenda will display the full flagging note in
16590another window and also push it onto the kill ring. So you could use @kbd{?
16591z C-y C-c C-c} to store that flagging note as a normal note in the entry.
16592Pressing @kbd{?} twice in succession will offer to remove the
16593@code{:FLAGGED:} tag along with the recorded flagging note (which is stored
acedf35c 16594in a property). In this way you indicate that the intended processing for
a351880d 16595this flagged entry is finished.
7006d207
CD
16596@end table
16597@end enumerate
16598
16599@kindex C-c a ?
16600If you are not able to process all flagged entries directly, you can always
afe98dfa
CD
16601return to this agenda view@footnote{Note, however, that there is a subtle
16602difference. The view created automatically by @kbd{M-x org-mobile-pull
16603@key{RET}} is guaranteed to search all files that have been addressed by the
16604last pull. This might include a file that is not currently in your list of
16605agenda files. If you later use @kbd{C-c a ?} to regenerate the view, only
16606the current agenda files will be searched.} using @kbd{C-c a ?}.
7006d207 16607
257b2c7d 16608@node History and Acknowledgments, GNU Free Documentation License, MobileOrg, Top
86fbb8ca
CD
16609@appendix History and acknowledgments
16610@cindex acknowledgments
4009494e
GM
16611@cindex history
16612@cindex thanks
16613
8223b1d2
BG
16614@section From Carsten
16615
86fbb8ca
CD
16616Org was born in 2003, out of frustration over the user interface of the Emacs
16617Outline mode. I was trying to organize my notes and projects, and using
16618Emacs seemed to be the natural way to go. However, having to remember eleven
16619different commands with two or three keys per command, only to hide and show
16620parts of the outline tree, that seemed entirely unacceptable to me. Also,
16621when using outlines to take notes, I constantly wanted to restructure the
16622tree, organizing it parallel to my thoughts and plans. @emph{Visibility
16623cycling} and @emph{structure editing} were originally implemented in the
16624package @file{outline-magic.el}, but quickly moved to the more general
16625@file{org.el}. As this environment became comfortable for project planning,
16626the next step was adding @emph{TODO entries}, basic @emph{timestamps}, and
16627@emph{table support}. These areas highlighted the two main goals that Org
16628still has today: to be a new, outline-based, plain text mode with innovative
16629and intuitive editing features, and to incorporate project planning
16630functionality directly into a notes file.
a7808fba 16631
c8d0cf5c
CD
16632Since the first release, literally thousands of emails to me or to
16633@email{emacs-orgmode@@gnu.org} have provided a constant stream of bug
4009494e
GM
16634reports, feedback, new ideas, and sometimes patches and add-on code.
16635Many thanks to everyone who has helped to improve this package. I am
16636trying to keep here a list of the people who had significant influence
a7808fba 16637in shaping one or more aspects of Org. The list may not be
4009494e
GM
16638complete, if I have forgotten someone, please accept my apologies and
16639let me know.
16640
86fbb8ca
CD
16641Before I get to this list, a few special mentions are in order:
16642
16643@table @i
16644@item Bastien Guerry
16645Bastien has written a large number of extensions to Org (most of them
e66ba1df 16646integrated into the core by now), including the @LaTeX{} exporter and the plain
86fbb8ca
CD
16647list parser. His support during the early days, when he basically acted as
16648co-maintainer, was central to the success of this project. Bastien also
8223b1d2 16649invented Worg, helped establishing the Web presence of Org, and sponsored
86fbb8ca
CD
16650hosting costs for the orgmode.org website.
16651@item Eric Schulte and Dan Davison
16652Eric and Dan are jointly responsible for the Org-babel system, which turns
16653Org into a multi-language environment for evaluating code and doing literate
16654programming and reproducible research.
16655@item John Wiegley
acedf35c
CD
16656John has contributed a number of great ideas and patches directly to Org,
16657including the attachment system (@file{org-attach.el}), integration with
16658Apple Mail (@file{org-mac-message.el}), hierarchical dependencies of TODO
16659items, habit tracking (@file{org-habits.el}), and encryption
16660(@file{org-crypt.el}). Also, the capture system is really an extended copy
16661of his great @file{remember.el}.
86fbb8ca
CD
16662@item Sebastian Rose
16663Without Sebastian, the HTML/XHTML publishing of Org would be the pitiful work
16664of an ignorant amateur. Sebastian has pushed this part of Org onto a much
16665higher level. He also wrote @file{org-info.js}, a Java script for displaying
16666webpages derived from Org using an Info-like or a folding interface with
16667single-key navigation.
16668@end table
16669
8223b1d2
BG
16670@noindent See below for the full list of contributions! Again, please
16671let me know what I am missing here!
16672
16673@section From Bastien
16674
16675I (Bastien) have been maintaining Org since January 2011. This appendix
16676would not be complete without adding a few more acknowledgements and thanks
16677to Carsten's ones above.
16678
16679I am first grateful to Carsten for his trust while handing me over the
16680maintainership of Org. His support as been great since day one of this new
16681adventure, and it helped a lot.
16682
16683When I took over maintainership, I knew I would have to make Org more
16684collaborative than ever, as I would have to rely on people that are more
16685knowledgeable than I am on many parts of the code. Here is a list of the
16686persons I could rely on, they should really be considered co-maintainers,
16687either of the code or the community:
16688
16689@table @i
16690@item Eric Schulte
16691Eric is maintaining the Babel parts of Org. His reactivity here kept me away
16692from worrying about possible bugs here and let me focus on other parts.
16693
16694@item Nicolas Goaziou
16695Nicolas is maintaining the consistency of the deepest parts of Org. His work
16696on @file{org-element.el} and @file{org-export.el} has been outstanding, and
16697opened the doors for many new ideas and features.
16698
16699@item Jambunathan K
1e20eeb7 16700Jambunathan contributed the ODT exporter, definitely a killer feature of
8223b1d2
BG
16701Org mode. He also contributed the new HTML exporter, which is another core
16702feature of Org. Here too, I knew I could rely on him to fix bugs in these
16703areas and to patiently explain the users what was the problems and solutions.
16704
16705@item Achim Gratz
16706Achim rewrote the building process of Org, turning some @emph{ad hoc} tools
16707into a flexible and conceptually clean process. He patiently coped with the
1e20eeb7 16708many hiccups that such a change can create for users.
8223b1d2
BG
16709
16710@item Nick Dokos
16711The Org mode mailing list would not be such a nice place without Nick, who
16712patiently helped users so many times. It is impossible to overestimate such
16713a great help, and the list would not be so active without him.
16714@end table
16715
16716I received support from so many users that it is clearly impossible to be
16717fair when shortlisting a few of them -- but Org's history would not be
16718complete if the ones above were not mentioned in this manual.
16719
16720@section List of contributions
86fbb8ca 16721
4009494e
GM
16722@itemize @bullet
16723
16724@item
16725@i{Russel Adams} came up with the idea for drawers.
16726@item
a7808fba 16727@i{Thomas Baumann} wrote @file{org-bbdb.el} and @file{org-mhe.el}.
4009494e 16728@item
b349f79f 16729@i{Christophe Bataillon} created the great unicorn logo that we use on the
e66ba1df 16730Org mode website.
b349f79f 16731@item
c8d0cf5c
CD
16732@i{Alex Bochannek} provided a patch for rounding timestamps.
16733@item
ed21c5c8
CD
16734@i{Jan Böcker} wrote @file{org-docview.el}.
16735@item
e66ba1df 16736@i{Brad Bozarth} showed how to pull RSS feed data into Org mode files.
c8d0cf5c
CD
16737@item
16738@i{Tom Breton} wrote @file{org-choose.el}.
4009494e
GM
16739@item
16740@i{Charles Cave}'s suggestion sparked the implementation of templates
86fbb8ca 16741for Remember, which are now templates for capture.
4009494e
GM
16742@item
16743@i{Pavel Chalmoviansky} influenced the agenda treatment of items with
16744specified time.
16745@item
c8d0cf5c 16746@i{Gregory Chernov} patched support for Lisp forms into table
4009494e
GM
16747calculations and improved XEmacs compatibility, in particular by porting
16748@file{nouline.el} to XEmacs.
16749@item
c8d0cf5c
CD
16750@i{Sacha Chua} suggested copying some linking code from Planner.
16751@item
16752@i{Baoqiu Cui} contributed the DocBook exporter.
4009494e 16753@item
5fbc0f11 16754@i{Eddward DeVilla} proposed and tested checkbox statistics. He also
4009494e
GM
16755came up with the idea of properties, and that there should be an API for
16756them.
16757@item
c8d0cf5c
CD
16758@i{Nick Dokos} tracked down several nasty bugs.
16759@item
4009494e
GM
16760@i{Kees Dullemond} used to edit projects lists directly in HTML and so
16761inspired some of the early development, including HTML export. He also
16762asked for a way to narrow wide table columns.
16763@item
86fbb8ca
CD
16764@i{Thomas S. Dye} contributed documentation on Worg and helped integrating
16765the Org-Babel documentation into the manual.
16766@item
acedf35c
CD
16767@i{Christian Egli} converted the documentation into Texinfo format, inspired
16768the agenda, patched CSS formatting into the HTML exporter, and wrote
16769@file{org-taskjuggler.el}.
4009494e
GM
16770@item
16771@i{David Emery} provided a patch for custom CSS support in exported
16772HTML agendas.
16773@item
16774@i{Nic Ferrier} contributed mailcap and XOXO support.
16775@item
28a16a1b
CD
16776@i{Miguel A. Figueroa-Villanueva} implemented hierarchical checkboxes.
16777@item
4009494e
GM
16778@i{John Foerch} figured out how to make incremental search show context
16779around a match in a hidden outline tree.
16780@item
a351880d
CD
16781@i{Raimar Finken} wrote @file{org-git-line.el}.
16782@item
16783@i{Mikael Fornius} works as a mailing list moderator.
16784@item
16785@i{Austin Frank} works as a mailing list moderator.
16786@item
acedf35c
CD
16787@i{Eric Fraga} drove the development of BEAMER export with ideas and
16788testing.
16789@item
16790@i{Barry Gidden} did proofreading the manual in preparation for the book
16791publication through Network Theory Ltd.
16792@item
dbc28aaa 16793@i{Niels Giesen} had the idea to automatically archive DONE trees.
4009494e 16794@item
afe98dfa
CD
16795@i{Nicolas Goaziou} rewrote much of the plain list code.
16796@item
4009494e
GM
16797@i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
16798@item
acedf35c
CD
16799@i{Brian Gough} of Network Theory Ltd publishes the Org mode manual as a
16800book.
16801@item
a7808fba
CD
16802@i{Bernt Hansen} has driven much of the support for auto-repeating tasks,
16803task state change logging, and the clocktable. His clear explanations have
c8d0cf5c 16804been critical when we started to adopt the Git version control system.
a7808fba 16805@item
c8d0cf5c 16806@i{Manuel Hermenegildo} has contributed various ideas, small fixes and
864c9740
CD
16807patches.
16808@item
a7808fba
CD
16809@i{Phil Jackson} wrote @file{org-irc.el}.
16810@item
4009494e
GM
16811@i{Scott Jaderholm} proposed footnotes, control over whitespace between
16812folded entries, and column view for properties.
16813@item
86fbb8ca
CD
16814@i{Matt Jones} wrote @i{MobileOrg Android}.
16815@item
a7808fba
CD
16816@i{Tokuya Kameshima} wrote @file{org-wl.el} and @file{org-mew.el}.
16817@item
acedf35c 16818@i{Shidai Liu} ("Leo") asked for embedded @LaTeX{} and tested it. He also
4009494e
GM
16819provided frequent feedback and some patches.
16820@item
55e0839d
CD
16821@i{Matt Lundin} has proposed last-row references for table formulas and named
16822invisible anchors. He has also worked a lot on the FAQ.
16823@item
86fbb8ca
CD
16824@i{David Maus} wrote @file{org-atom.el}, maintains the issues file for Org,
16825and is a prolific contributor on the mailing list with competent replies,
16826small fixes and patches.
16827@item
4009494e
GM
16828@i{Jason F. McBrayer} suggested agenda export to CSV format.
16829@item
dbc28aaa
CD
16830@i{Max Mikhanosha} came up with the idea of refiling.
16831@item
4009494e
GM
16832@i{Dmitri Minaev} sent a patch to set priority limits on a per-file
16833basis.
16834@item
16835@i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler
16836happy.
16837@item
7006d207
CD
16838@i{Richard Moreland} wrote @i{MobileOrg} for the iPhone.
16839@item
c8d0cf5c
CD
16840@i{Rick Moynihan} proposed allowing multiple TODO sequences in a file
16841and being able to quickly restrict the agenda to a subtree.
4009494e 16842@item
c8d0cf5c
CD
16843@i{Todd Neal} provided patches for links to Info files and Elisp forms.
16844@item
16845@i{Greg Newman} refreshed the unicorn logo into its current form.
4009494e
GM
16846@item
16847@i{Tim O'Callaghan} suggested in-file links, search options for general
16848file links, and TAGS.
16849@item
acedf35c 16850@i{Osamu Okano} wrote @file{orgcard2ref.pl}, a Perl program to create a text
86fbb8ca
CD
16851version of the reference card.
16852@item
4009494e
GM
16853@i{Takeshi Okano} translated the manual and David O'Toole's tutorial
16854into Japanese.
16855@item
16856@i{Oliver Oppitz} suggested multi-state TODO items.
16857@item
16858@i{Scott Otterson} sparked the introduction of descriptive text for
16859links, among other things.
16860@item
16861@i{Pete Phillips} helped during the development of the TAGS feature, and
16862provided frequent feedback.
16863@item
c8d0cf5c
CD
16864@i{Martin Pohlack} provided the code snippet to bundle character insertion
16865into bundles of 20 for undo.
16866@item
4009494e
GM
16867@i{T.V. Raman} reported bugs and suggested improvements.
16868@item
16869@i{Matthias Rempe} (Oelde) provided ideas, Windows support, and quality
16870control.
16871@item
a351880d
CD
16872@i{Paul Rivier} provided the basic implementation of named footnotes. He
16873also acted as mailing list moderator for some time.
55e0839d 16874@item
4009494e
GM
16875@i{Kevin Rogers} contributed code to access VM files on remote hosts.
16876@item
16877@i{Frank Ruell} solved the mystery of the @code{keymapp nil} bug, a
16878conflict with @file{allout.el}.
16879@item
c8d0cf5c 16880@i{Jason Riedy} generalized the send-receive mechanism for Orgtbl tables with
b349f79f 16881extensive patches.
4009494e 16882@item
b349f79f
CD
16883@i{Philip Rooke} created the Org reference card, provided lots
16884of feedback, developed and applied standards to the Org documentation.
4009494e
GM
16885@item
16886@i{Christian Schlauer} proposed angular brackets around links, among
16887other things.
16888@item
ed21c5c8
CD
16889@i{Paul Sexton} wrote @file{org-ctags.el}.
16890@item
b349f79f 16891Linking to VM/BBDB/Gnus was first inspired by @i{Tom Shannon}'s
4009494e
GM
16892@file{organizer-mode.el}.
16893@item
55e0839d
CD
16894@i{Ilya Shlyakhter} proposed the Archive Sibling, line numbering in literal
16895examples, and remote highlighting for referenced code lines.
a7808fba 16896@item
64fb801f
CD
16897@i{Stathis Sideris} wrote the @file{ditaa.jar} ASCII to PNG converter that is
16898now packaged into Org's @file{contrib} directory.
16899@item
4009494e
GM
16900@i{Daniel Sinder} came up with the idea of internal archiving by locking
16901subtrees.
16902@item
16903@i{Dale Smith} proposed link abbreviations.
16904@item
864c9740
CD
16905@i{James TD Smith} has contributed a large number of patches for useful
16906tweaks and features.
16907@item
b349f79f
CD
16908@i{Adam Spiers} asked for global linking commands, inspired the link
16909extension system, added support for mairix, and proposed the mapping API.
4009494e 16910@item
86fbb8ca 16911@i{Ulf Stegemann} created the table to translate special symbols to HTML,
e66ba1df 16912@LaTeX{}, UTF-8, Latin-1 and ASCII.
86fbb8ca 16913@item
96c8522a
CD
16914@i{Andy Stewart} contributed code to @file{org-w3m.el}, to copy HTML content
16915with links transformation to Org syntax.
16916@item
4009494e
GM
16917@i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
16918chapter about publishing.
16919@item
153ae947 16920@i{Jambunathan K} contributed the ODT exporter.
ce57c2fe 16921@item
e66ba1df 16922@i{Sebastien Vauban} reported many issues with @LaTeX{} and BEAMER export and
27e428e7 16923enabled source code highlighting in Gnus.
acedf35c 16924@item
86fbb8ca
CD
16925@i{Stefan Vollmar} organized a video-recorded talk at the
16926Max-Planck-Institute for Neurology. He also inspired the creation of a
16927concept index for HTML export.
16928@item
4009494e
GM
16929@i{J@"urgen Vollmer} contributed code generating the table of contents
16930in HTML output.
16931@item
ed21c5c8
CD
16932@i{Samuel Wales} has provided important feedback and bug reports.
16933@item
4009494e
GM
16934@i{Chris Wallace} provided a patch implementing the @samp{QUOTE}
16935keyword.
16936@item
16937@i{David Wainberg} suggested archiving, and improvements to the linking
16938system.
16939@item
4009494e 16940@i{Carsten Wimmer} suggested some changes and helped fix a bug in
a7808fba 16941linking to Gnus.
4009494e 16942@item
a7808fba 16943@i{Roland Winkler} requested additional key bindings to make Org
4009494e
GM
16944work on a tty.
16945@item
16946@i{Piotr Zielinski} wrote @file{org-mouse.el}, proposed agenda blocks
16947and contributed various ideas and code snippets.
16948@end itemize
16949
16950
257b2c7d
GM
16951@node GNU Free Documentation License, Main Index, History and Acknowledgments, Top
16952@appendix GNU Free Documentation License
16953@include doclicense.texi
16954
16955
16956@node Main Index, Key Index, GNU Free Documentation License, Top
86fbb8ca 16957@unnumbered Concept index
4009494e
GM
16958
16959@printindex cp
16960
afe98dfa 16961@node Key Index, Command and Function Index, Main Index, Top
86fbb8ca 16962@unnumbered Key index
4009494e
GM
16963
16964@printindex ky
16965
afe98dfa
CD
16966@node Command and Function Index, Variable Index, Key Index, Top
16967@unnumbered Command and function index
16968
16969@printindex fn
16970
16971@node Variable Index, , Command and Function Index, Top
86fbb8ca 16972@unnumbered Variable index
c8d0cf5c
CD
16973
16974This is not a complete index of variables and faces, only the ones that are
16975mentioned in the manual. For a more complete list, use @kbd{M-x
a351880d 16976org-customize @key{RET}} and then click yourself through the tree.
c8d0cf5c
CD
16977
16978@printindex vr
16979
4009494e
GM
16980@bye
16981
a7808fba 16982@c Local variables:
a7808fba 16983@c fill-column: 77
afe98dfa 16984@c indent-tabs-mode: nil
acedf35c
CD
16985@c paragraph-start: "\b\\|^@[a-zA-Z]*[ \n]\\|^@x?org\\(key\\|cmd\\)\\|\f\\|[ ]*$"
16986@c paragraph-separate: "\b\\|^@[a-zA-Z]*[ \n]\\|^@x?org\\(key\\|cmd\\)\\|[ \f]*$"
a7808fba 16987@c End:
44ce9197 16988
7006d207
CD
16989
16990@c LocalWords: webdavhost pre