don't use function-equal in nadvice
[bpt/emacs.git] / doc / misc / org.texi
1 \input texinfo
2 @c %**start of header
3 @setfilename ../../info/org.info
4 @settitle The Org Manual
5 @set VERSION 8.2.6
6
7 @c Version and Contact Info
8 @set MAINTAINERSITE @uref{http://orgmode.org,maintainers web page}
9 @set AUTHOR Carsten Dominik
10 @set MAINTAINER Carsten Dominik
11 @set MAINTAINEREMAIL @email{carsten at orgmode dot org}
12 @set MAINTAINERCONTACT @uref{mailto:carsten at orgmode dot org,contact the maintainer}
13 @documentencoding UTF-8
14 @c %**end of header
15 @finalout
16
17
18 @c -----------------------------------------------------------------------------
19
20 @c Macro definitions for commands and keys
21 @c =======================================
22
23 @c The behavior of the key/command macros will depend on the flag cmdnames
24 @c When set, commands names are shown. When clear, they are not shown.
25
26 @set cmdnames
27
28 @c Below we define the following macros for Org key tables:
29
30 @c orgkey{key} A key item
31 @c orgcmd{key,cmd} Key with command name
32 @c xorgcmd{key,cmd} Key with command name as @itemx
33 @c orgcmdnki{key,cmd} Like orgcmd, but do not index the key
34 @c orgcmdtkc{text,key,cmd} Like orgcmd,special text instead of key
35 @c orgcmdkkc{key1,key2,cmd} Two keys with one command name, use "or"
36 @c orgcmdkxkc{key1,key2,cmd} Two keys with one command name, but
37 @c different functions, so format as @itemx
38 @c orgcmdkskc{key1,key2,cmd} Same as orgcmdkkc, but use "or short"
39 @c xorgcmdkskc{key1,key2,cmd} Same as previous, but use @itemx
40 @c orgcmdkkcc{key1,key2,cmd1,cmd2} Two keys and two commands
41
42 @c a key but no command
43 @c Inserts: @item key
44 @macro orgkey{key}
45 @kindex \key\
46 @item @kbd{\key\}
47 @end macro
48
49 @macro xorgkey{key}
50 @kindex \key\
51 @itemx @kbd{\key\}
52 @end macro
53
54 @c one key with a command
55 @c Inserts: @item KEY COMMAND
56 @macro orgcmd{key,command}
57 @ifset cmdnames
58 @kindex \key\
59 @findex \command\
60 @iftex
61 @item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
62 @end iftex
63 @ifnottex
64 @item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
65 @end ifnottex
66 @end ifset
67 @ifclear cmdnames
68 @kindex \key\
69 @item @kbd{\key\}
70 @end ifclear
71 @end macro
72
73 @c One key with one command, formatted using @itemx
74 @c Inserts: @itemx KEY COMMAND
75 @macro xorgcmd{key,command}
76 @ifset cmdnames
77 @kindex \key\
78 @findex \command\
79 @iftex
80 @itemx @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
81 @end iftex
82 @ifnottex
83 @itemx @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
84 @end ifnottex
85 @end ifset
86 @ifclear cmdnames
87 @kindex \key\
88 @itemx @kbd{\key\}
89 @end ifclear
90 @end macro
91
92 @c one key with a command, bit do not index the key
93 @c Inserts: @item KEY COMMAND
94 @macro orgcmdnki{key,command}
95 @ifset cmdnames
96 @findex \command\
97 @iftex
98 @item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
99 @end iftex
100 @ifnottex
101 @item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
102 @end ifnottex
103 @end ifset
104 @ifclear cmdnames
105 @item @kbd{\key\}
106 @end ifclear
107 @end macro
108
109 @c one key with a command, and special text to replace key in item
110 @c Inserts: @item TEXT COMMAND
111 @macro orgcmdtkc{text,key,command}
112 @ifset cmdnames
113 @kindex \key\
114 @findex \command\
115 @iftex
116 @item @kbd{\text\} @hskip 0pt plus 1filll @code{\command\}
117 @end iftex
118 @ifnottex
119 @item @kbd{\text\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
120 @end ifnottex
121 @end ifset
122 @ifclear cmdnames
123 @kindex \key\
124 @item @kbd{\text\}
125 @end ifclear
126 @end macro
127
128 @c two keys with one command
129 @c Inserts: @item KEY1 or KEY2 COMMAND
130 @macro orgcmdkkc{key1,key2,command}
131 @ifset cmdnames
132 @kindex \key1\
133 @kindex \key2\
134 @findex \command\
135 @iftex
136 @item @kbd{\key1\} @ @r{or} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
137 @end iftex
138 @ifnottex
139 @item @kbd{\key1\} @ @r{or} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
140 @end ifnottex
141 @end ifset
142 @ifclear cmdnames
143 @kindex \key1\
144 @kindex \key2\
145 @item @kbd{\key1\} @ @r{or} @ @kbd{\key2\}
146 @end ifclear
147 @end macro
148
149 @c Two keys with one command name, but different functions, so format as
150 @c @itemx
151 @c Inserts: @item KEY1
152 @c @itemx KEY2 COMMAND
153 @macro orgcmdkxkc{key1,key2,command}
154 @ifset cmdnames
155 @kindex \key1\
156 @kindex \key2\
157 @findex \command\
158 @iftex
159 @item @kbd{\key1\}
160 @itemx @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
161 @end iftex
162 @ifnottex
163 @item @kbd{\key1\}
164 @itemx @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
165 @end ifnottex
166 @end ifset
167 @ifclear cmdnames
168 @kindex \key1\
169 @kindex \key2\
170 @item @kbd{\key1\}
171 @itemx @kbd{\key2\}
172 @end ifclear
173 @end macro
174
175 @c Same as previous, but use "or short"
176 @c Inserts: @item KEY1 or short KEY2 COMMAND
177 @macro orgcmdkskc{key1,key2,command}
178 @ifset cmdnames
179 @kindex \key1\
180 @kindex \key2\
181 @findex \command\
182 @iftex
183 @item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
184 @end iftex
185 @ifnottex
186 @item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
187 @end ifnottex
188 @end ifset
189 @ifclear cmdnames
190 @kindex \key1\
191 @kindex \key2\
192 @item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\}
193 @end ifclear
194 @end macro
195
196 @c Same as previous, but use @itemx
197 @c Inserts: @itemx KEY1 or short KEY2 COMMAND
198 @macro xorgcmdkskc{key1,key2,command}
199 @ifset cmdnames
200 @kindex \key1\
201 @kindex \key2\
202 @findex \command\
203 @iftex
204 @itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
205 @end iftex
206 @ifnottex
207 @itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
208 @end ifnottex
209 @end ifset
210 @ifclear cmdnames
211 @kindex \key1\
212 @kindex \key2\
213 @itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\}
214 @end ifclear
215 @end macro
216
217 @c two keys with two commands
218 @c Inserts: @item KEY1 COMMAND1
219 @c @itemx KEY2 COMMAND2
220 @macro orgcmdkkcc{key1,key2,command1,command2}
221 @ifset cmdnames
222 @kindex \key1\
223 @kindex \key2\
224 @findex \command1\
225 @findex \command2\
226 @iftex
227 @item @kbd{\key1\} @hskip 0pt plus 1filll @code{\command1\}
228 @itemx @kbd{\key2\} @hskip 0pt plus 1filll @code{\command2\}
229 @end iftex
230 @ifnottex
231 @item @kbd{\key1\} @tie{}@tie{}@tie{}@tie{}(@code{\command1\})
232 @itemx @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command2\})
233 @end ifnottex
234 @end ifset
235 @ifclear cmdnames
236 @kindex \key1\
237 @kindex \key2\
238 @item @kbd{\key1\}
239 @itemx @kbd{\key2\}
240 @end ifclear
241 @end macro
242 @c -----------------------------------------------------------------------------
243
244 @iftex
245 @c @hyphenation{time-stamp time-stamps time-stamp-ing time-stamp-ed}
246 @end iftex
247
248 @c Subheadings inside a table.
249 @macro tsubheading{text}
250 @ifinfo
251 @subsubheading \text\
252 @end ifinfo
253 @ifnotinfo
254 @item @b{\text\}
255 @end ifnotinfo
256 @end macro
257
258 @copying
259 This manual is for Org version @value{VERSION}.
260
261 Copyright @copyright{} 2004--2014 Free Software Foundation, Inc.
262
263 @quotation
264 Permission is granted to copy, distribute and/or modify this document
265 under the terms of the GNU Free Documentation License, Version 1.3 or
266 any later version published by the Free Software Foundation; with no
267 Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
268 and with the Back-Cover Texts as in (a) below. A copy of the license
269 is included in the section entitled ``GNU Free Documentation License.''
270
271 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
272 modify this GNU manual.''
273 @end quotation
274 @end copying
275
276 @dircategory Emacs editing modes
277 @direntry
278 * Org Mode: (org). Outline-based notes management and organizer
279 @end direntry
280
281 @titlepage
282 @title The Org Manual
283
284 @subtitle Release @value{VERSION}
285 @author by Carsten Dominik
286 with contributions by David O'Toole, Bastien Guerry, Philip Rooke, Dan
287 Davison, Eric Schulte, Thomas Dye, Jambunathan K and Nicolas Goaziou.
288
289 @c The following two commands start the copyright page.
290 @page
291 @vskip 0pt plus 1filll
292 @insertcopying
293 @end titlepage
294
295 @c Output the table of contents at the beginning.
296 @contents
297
298 @ifnottex
299 @c FIXME These hand-written next,prev,up node pointers make editing a lot
300 @c harder. There should be no need for them, makeinfo can do it
301 @c automatically for any document with a normal structure.
302 @node Top, Introduction, (dir), (dir)
303 @top Org Mode Manual
304
305 @insertcopying
306 @end ifnottex
307
308 @menu
309 * Introduction:: Getting started
310 * Document Structure:: A tree works like your brain
311 * Tables:: Pure magic for quick formatting
312 * Hyperlinks:: Notes in context
313 * TODO Items:: Every tree branch can be a TODO item
314 * Tags:: Tagging headlines and matching sets of tags
315 * Properties and Columns:: Storing information about an entry
316 * Dates and Times:: Making items useful for planning
317 * Capture - Refile - Archive:: The ins and outs for projects
318 * Agenda Views:: Collecting information into views
319 * Markup:: Prepare text for rich export
320 * Exporting:: Sharing and publishing notes
321 * Publishing:: Create a web site of linked Org files
322 * Working With Source Code:: Export, evaluate, and tangle code blocks
323 * Miscellaneous:: All the rest which did not fit elsewhere
324 * Hacking:: How to hack your way around
325 * MobileOrg:: Viewing and capture on a mobile device
326 * History and Acknowledgments:: How Org came into being
327 * GNU Free Documentation License:: The license for this documentation.
328 * Main Index:: An index of Org's concepts and features
329 * Key Index:: Key bindings and where they are described
330 * Command and Function Index:: Command names and some internal functions
331 * Variable Index:: Variables mentioned in the manual
332
333 @detailmenu
334 --- The Detailed Node Listing ---
335
336 Introduction
337
338 * Summary:: Brief summary of what Org does
339 * Installation:: Installing Org
340 * Activation:: How to activate Org for certain buffers
341 * Feedback:: Bug reports, ideas, patches etc.
342 * Conventions:: Typesetting conventions in the manual
343
344 Document structure
345
346 * Outlines:: Org is based on Outline mode
347 * Headlines:: How to typeset Org tree headlines
348 * Visibility cycling:: Show and hide, much simplified
349 * Motion:: Jumping to other headlines
350 * Structure editing:: Changing sequence and level of headlines
351 * Sparse trees:: Matches embedded in context
352 * Plain lists:: Additional structure within an entry
353 * Drawers:: Tucking stuff away
354 * Blocks:: Folding blocks
355 * Footnotes:: How footnotes are defined in Org's syntax
356 * Orgstruct mode:: Structure editing outside Org
357 * Org syntax:: Formal description of Org's syntax
358
359 Visibility cycling
360
361 * Global and local cycling:: Cycling through various visibility states
362 * Initial visibility:: Setting the initial visibility state
363 * Catching invisible edits:: Preventing mistakes when editing invisible parts
364
365 Global and local cycling
366
367 * Initial visibility:: Setting the initial visibility state
368 * Catching invisible edits:: Preventing mistakes when editing invisible parts
369
370 Tables
371
372 * Built-in table editor:: Simple tables
373 * Column width and alignment:: Overrule the automatic settings
374 * Column groups:: Grouping to trigger vertical lines
375 * Orgtbl mode:: The table editor as minor mode
376 * The spreadsheet:: The table editor has spreadsheet capabilities
377 * Org-Plot:: Plotting from org tables
378
379 The spreadsheet
380
381 * References:: How to refer to another field or range
382 * Formula syntax for Calc:: Using Calc to compute stuff
383 * Formula syntax for Lisp:: Writing formulas in Emacs Lisp
384 * Durations and time values:: How to compute durations and time values
385 * Field and range formulas:: Formula for specific (ranges of) fields
386 * Column formulas:: Formulas valid for an entire column
387 * Lookup functions:: Lookup functions for searching tables
388 * Editing and debugging formulas:: Fixing formulas
389 * Updating the table:: Recomputing all dependent fields
390 * Advanced features:: Field and column names, parameters and automatic recalc
391
392 Hyperlinks
393
394 * Link format:: How links in Org are formatted
395 * Internal links:: Links to other places in the current file
396 * External links:: URL-like links to the world
397 * Handling links:: Creating, inserting and following
398 * Using links outside Org:: Linking from my C source code?
399 * Link abbreviations:: Shortcuts for writing complex links
400 * Search options:: Linking to a specific location
401 * Custom searches:: When the default search is not enough
402
403 Internal links
404
405 * Radio targets:: Make targets trigger links in plain text
406
407 TODO items
408
409 * TODO basics:: Marking and displaying TODO entries
410 * TODO extensions:: Workflow and assignments
411 * Progress logging:: Dates and notes for progress
412 * Priorities:: Some things are more important than others
413 * Breaking down tasks:: Splitting a task into manageable pieces
414 * Checkboxes:: Tick-off lists
415
416 Extended use of TODO keywords
417
418 * Workflow states:: From TODO to DONE in steps
419 * TODO types:: I do this, Fred does the rest
420 * Multiple sets in one file:: Mixing it all, and still finding your way
421 * Fast access to TODO states:: Single letter selection of a state
422 * Per-file keywords:: Different files, different requirements
423 * Faces for TODO keywords:: Highlighting states
424 * TODO dependencies:: When one task needs to wait for others
425
426 Progress logging
427
428 * Closing items:: When was this entry marked DONE?
429 * Tracking TODO state changes:: When did the status change?
430 * Tracking your habits:: How consistent have you been?
431
432 Tags
433
434 * Tag inheritance:: Tags use the tree structure of the outline
435 * Setting tags:: How to assign tags to a headline
436 * Tag groups:: Use one tag to search for several tags
437 * Tag searches:: Searching for combinations of tags
438
439 Properties and columns
440
441 * Property syntax:: How properties are spelled out
442 * Special properties:: Access to other Org mode features
443 * Property searches:: Matching property values
444 * Property inheritance:: Passing values down the tree
445 * Column view:: Tabular viewing and editing
446 * Property API:: Properties for Lisp programmers
447
448 Column view
449
450 * Defining columns:: The COLUMNS format property
451 * Using column view:: How to create and use column view
452 * Capturing column view:: A dynamic block for column view
453
454 Defining columns
455
456 * Scope of column definitions:: Where defined, where valid?
457 * Column attributes:: Appearance and content of a column
458
459 Dates and times
460
461 * Timestamps:: Assigning a time to a tree entry
462 * Creating timestamps:: Commands which insert timestamps
463 * Deadlines and scheduling:: Planning your work
464 * Clocking work time:: Tracking how long you spend on a task
465 * Effort estimates:: Planning work effort in advance
466 * Relative timer:: Notes with a running timer
467 * Countdown timer:: Starting a countdown timer for a task
468
469 Creating timestamps
470
471 * The date/time prompt:: How Org mode helps you entering date and time
472 * Custom time format:: Making dates look different
473
474 Deadlines and scheduling
475
476 * Inserting deadline/schedule:: Planning items
477 * Repeated tasks:: Items that show up again and again
478
479 Clocking work time
480
481 * Clocking commands:: Starting and stopping a clock
482 * The clock table:: Detailed reports
483 * Resolving idle time:: Resolving time when you've been idle
484
485 Capture - Refile - Archive
486
487 * Capture:: Capturing new stuff
488 * Attachments:: Add files to tasks
489 * RSS Feeds:: Getting input from RSS feeds
490 * Protocols:: External (e.g., Browser) access to Emacs and Org
491 * Refile and copy:: Moving/copying a tree from one place to another
492 * Archiving:: What to do with finished projects
493
494 Capture
495
496 * Setting up capture:: Where notes will be stored
497 * Using capture:: Commands to invoke and terminate capture
498 * Capture templates:: Define the outline of different note types
499
500 Capture templates
501
502 * Template elements:: What is needed for a complete template entry
503 * Template expansion:: Filling in information about time and context
504 * Templates in contexts:: Only show a template in a specific context
505
506 Archiving
507
508 * Moving subtrees:: Moving a tree to an archive file
509 * Internal archiving:: Switch off a tree but keep it in the file
510
511 Agenda views
512
513 * Agenda files:: Files being searched for agenda information
514 * Agenda dispatcher:: Keyboard access to agenda views
515 * Built-in agenda views:: What is available out of the box?
516 * Presentation and sorting:: How agenda items are prepared for display
517 * Agenda commands:: Remote editing of Org trees
518 * Custom agenda views:: Defining special searches and views
519 * Exporting Agenda Views:: Writing a view to a file
520 * Agenda column view:: Using column view for collected entries
521
522 The built-in agenda views
523
524 * Weekly/daily agenda:: The calendar page with current tasks
525 * Global TODO list:: All unfinished action items
526 * Matching tags and properties:: Structured information with fine-tuned search
527 * Timeline:: Time-sorted view for single file
528 * Search view:: Find entries by searching for text
529 * Stuck projects:: Find projects you need to review
530
531 Presentation and sorting
532
533 * Categories:: Not all tasks are equal
534 * Time-of-day specifications:: How the agenda knows the time
535 * Sorting agenda items:: The order of things
536 * Filtering/limiting agenda items:: Dynamically narrow the agenda
537
538 Custom agenda views
539
540 * Storing searches:: Type once, use often
541 * Block agenda:: All the stuff you need in a single buffer
542 * Setting Options:: Changing the rules
543
544 Markup for rich export
545
546 * Structural markup elements:: The basic structure as seen by the exporter
547 * Images and tables:: Images, tables and caption mechanism
548 * Literal examples:: Source code examples with special formatting
549 * Include files:: Include additional files into a document
550 * Index entries:: Making an index
551 * Macro replacement:: Use macros to create templates
552 * Embedded @LaTeX{}:: LaTeX can be freely used inside Org documents
553 * Special blocks:: Containers targeted at export back-ends
554
555 Structural markup elements
556
557 * Document title:: Where the title is taken from
558 * Headings and sections:: The document structure as seen by the exporter
559 * Table of contents:: The if and where of the table of contents
560 * Lists:: Lists
561 * Paragraphs:: Paragraphs
562 * Footnote markup:: Footnotes
563 * Emphasis and monospace:: Bold, italic, etc.
564 * Horizontal rules:: Make a line
565 * Comment lines:: What will *not* be exported
566
567 Embedded @LaTeX{}
568
569 * Special symbols:: Greek letters and other symbols
570 * Subscripts and superscripts:: Simple syntax for raising/lowering text
571 * @LaTeX{} fragments:: Complex formulas made easy
572 * Previewing @LaTeX{} fragments:: What will this snippet look like?
573 * CDLaTeX mode:: Speed up entering of formulas
574
575 Exporting
576
577 * The Export Dispatcher:: The main exporter interface
578 * Export back-ends:: Built-in export formats
579 * Export settings:: Generic export settings
580 * ASCII/Latin-1/UTF-8 export:: Exporting to flat files with encoding
581 * Beamer export:: Exporting as a Beamer presentation
582 * HTML export:: Exporting to HTML
583 * @LaTeX{} and PDF export:: Exporting to @LaTeX{}, and processing to PDF
584 * Markdown export:: Exporting to Markdown
585 * OpenDocument Text export:: Exporting to OpenDocument Text
586 * Org export:: Exporting to Org
587 * iCalendar export:: Exporting to iCalendar
588 * Other built-in back-ends:: Exporting to @code{Texinfo} or a man page
589 * Export in foreign buffers:: Author tables and lists in Org syntax
590 * Advanced configuration:: Fine-tuning the export output
591
592 HTML export
593
594 * HTML Export commands:: How to invoke HTML export
595 * HTML doctypes:: Org can export to various (X)HTML flavors
596 * HTML preamble and postamble:: How to insert a preamble and a postamble
597 * Quoting HTML tags:: Using direct HTML in Org mode
598 * Links in HTML export:: How links will be interpreted and formatted
599 * Tables in HTML export:: How to modify the formatting of tables
600 * Images in HTML export:: How to insert figures into HTML output
601 * Math formatting in HTML export:: Beautiful math also on the web
602 * Text areas in HTML export:: An alternative way to show an example
603 * CSS support:: Changing the appearance of the output
604 * JavaScript support:: Info and Folding in a web browser
605
606 @LaTeX{} and PDF export
607
608 * @LaTeX{} export commands:: How to export to LaTeX and PDF
609 * Header and sectioning:: Setting up the export file structure
610 * Quoting @LaTeX{} code:: Incorporating literal @LaTeX{} code
611 * @LaTeX{} specific attributes:: Controlling @LaTeX{} output
612
613 OpenDocument Text export
614
615 * Pre-requisites for ODT export:: What packages ODT exporter relies on
616 * ODT export commands:: How to invoke ODT export
617 * Extending ODT export:: How to produce @samp{doc}, @samp{pdf} files
618 * Applying custom styles:: How to apply custom styles to the output
619 * Links in ODT export:: How links will be interpreted and formatted
620 * Tables in ODT export:: How Tables are exported
621 * Images in ODT export:: How to insert images
622 * Math formatting in ODT export:: How @LaTeX{} fragments are formatted
623 * Labels and captions in ODT export:: How captions are rendered
624 * Literal examples in ODT export:: How source and example blocks are formatted
625 * Advanced topics in ODT export:: Read this if you are a power user
626
627 Math formatting in ODT export
628
629 * Working with @LaTeX{} math snippets:: How to embed @LaTeX{} math fragments
630 * Working with MathML or OpenDocument formula files:: How to embed equations in native format
631
632 Advanced topics in ODT export
633
634 * Configuring a document converter:: How to register a document converter
635 * Working with OpenDocument style files:: Explore the internals
636 * Creating one-off styles:: How to produce custom highlighting etc
637 * Customizing tables in ODT export:: How to define and use Table templates
638 * Validating OpenDocument XML:: How to debug corrupt OpenDocument files
639
640 Publishing
641
642 * Configuration:: Defining projects
643 * Uploading files:: How to get files up on the server
644 * Sample configuration:: Example projects
645 * Triggering publication:: Publication commands
646
647 Configuration
648
649 * Project alist:: The central configuration variable
650 * Sources and destinations:: From here to there
651 * Selecting files:: What files are part of the project?
652 * Publishing action:: Setting the function doing the publishing
653 * Publishing options:: Tweaking HTML/@LaTeX{} export
654 * Publishing links:: Which links keep working after publishing?
655 * Sitemap:: Generating a list of all pages
656 * Generating an index:: An index that reaches across pages
657
658 Sample configuration
659
660 * Simple example:: One-component publishing
661 * Complex example:: A multi-component publishing example
662
663 Working with source code
664
665 * Structure of code blocks:: Code block syntax described
666 * Editing source code:: Language major-mode editing
667 * Exporting code blocks:: Export contents and/or results
668 * Extracting source code:: Create pure source code files
669 * Evaluating code blocks:: Place results of evaluation in the Org mode buffer
670 * Library of Babel:: Use and contribute to a library of useful code blocks
671 * Languages:: List of supported code block languages
672 * Header arguments:: Configure code block functionality
673 * Results of evaluation:: How evaluation results are handled
674 * Noweb reference syntax:: Literate programming in Org mode
675 * Key bindings and useful functions:: Work quickly with code blocks
676 * Batch execution:: Call functions from the command line
677
678 Header arguments
679
680 * Using header arguments:: Different ways to set header arguments
681 * Specific header arguments:: List of header arguments
682
683 Using header arguments
684
685 * System-wide header arguments:: Set global default values
686 * Language-specific header arguments:: Set default values by language
687 * Header arguments in Org mode properties:: Set default values for a buffer or heading
688 * Language-specific header arguments in Org mode properties:: Set language-specific default values for a buffer or heading
689 * Code block specific header arguments:: The most common way to set values
690 * Header arguments in function calls:: The most specific level
691
692 Specific header arguments
693
694 * var:: Pass arguments to code blocks
695 * results:: Specify the type of results and how they will
696 be collected and handled
697 * file:: Specify a path for file output
698 * file-desc:: Specify a description for file results
699 * dir:: Specify the default (possibly remote)
700 directory for code block execution
701 * exports:: Export code and/or results
702 * tangle:: Toggle tangling and specify file name
703 * mkdirp:: Toggle creation of parent directories of target
704 files during tangling
705 * comments:: Toggle insertion of comments in tangled
706 code files
707 * padline:: Control insertion of padding lines in tangled
708 code files
709 * no-expand:: Turn off variable assignment and noweb
710 expansion during tangling
711 * session:: Preserve the state of code evaluation
712 * noweb:: Toggle expansion of noweb references
713 * noweb-ref:: Specify block's noweb reference resolution target
714 * noweb-sep:: String used to separate noweb references
715 * cache:: Avoid re-evaluating unchanged code blocks
716 * sep:: Delimiter for writing tabular results outside Org
717 * hlines:: Handle horizontal lines in tables
718 * colnames:: Handle column names in tables
719 * rownames:: Handle row names in tables
720 * shebang:: Make tangled files executable
721 * tangle-mode:: Set permission of tangled files
722 * eval:: Limit evaluation of specific code blocks
723 * wrap:: Mark source block evaluation results
724 * post:: Post processing of code block results
725 * prologue:: Text to prepend to code block body
726 * epilogue:: Text to append to code block body
727
728 Miscellaneous
729
730 * Completion:: M-TAB knows what you need
731 * Easy Templates:: Quick insertion of structural elements
732 * Speed keys:: Electric commands at the beginning of a headline
733 * Code evaluation security:: Org mode files evaluate inline code
734 * Customization:: Adapting Org to your taste
735 * In-buffer settings:: Overview of the #+KEYWORDS
736 * The very busy C-c C-c key:: When in doubt, press C-c C-c
737 * Clean view:: Getting rid of leading stars in the outline
738 * TTY keys:: Using Org on a tty
739 * Interaction:: Other Emacs packages
740 * org-crypt:: Encrypting Org files
741
742 Interaction with other packages
743
744 * Cooperation:: Packages Org cooperates with
745 * Conflicts:: Packages that lead to conflicts
746
747 Hacking
748
749 * Hooks:: How to reach into Org's internals
750 * Add-on packages:: Available extensions
751 * Adding hyperlink types:: New custom link types
752 * Adding export back-ends:: How to write new export back-ends
753 * Context-sensitive commands:: How to add functionality to such commands
754 * Tables in arbitrary syntax:: Orgtbl for @LaTeX{} and other programs
755 * Dynamic blocks:: Automatically filled blocks
756 * Special agenda views:: Customized views
757 * Speeding up your agendas:: Tips on how to speed up your agendas
758 * Extracting agenda information:: Post-processing of agenda information
759 * Using the property API:: Writing programs that use entry properties
760 * Using the mapping API:: Mapping over all or selected entries
761
762 Tables and lists in arbitrary syntax
763
764 * Radio tables:: Sending and receiving radio tables
765 * A @LaTeX{} example:: Step by step, almost a tutorial
766 * Translator functions:: Copy and modify
767 * Radio lists:: Sending and receiving lists
768
769 MobileOrg
770
771 * Setting up the staging area:: Where to interact with the mobile device
772 * Pushing to MobileOrg:: Uploading Org files and agendas
773 * Pulling from MobileOrg:: Integrating captured and flagged items
774
775 @end detailmenu
776 @end menu
777
778 @node Introduction, Document Structure, Top, Top
779 @chapter Introduction
780 @cindex introduction
781
782 @menu
783 * Summary:: Brief summary of what Org does
784 * Installation:: Installing Org
785 * Activation:: How to activate Org for certain buffers
786 * Feedback:: Bug reports, ideas, patches etc.
787 * Conventions:: Typesetting conventions in the manual
788 @end menu
789
790 @node Summary, Installation, Introduction, Introduction
791 @section Summary
792 @cindex summary
793
794 Org is a mode for keeping notes, maintaining TODO lists, and doing
795 project planning with a fast and effective plain-text system.
796
797 Org develops organizational tasks around NOTES files that contain
798 lists or information about projects as plain text. Org is
799 implemented on top of Outline mode, which makes it possible to keep the
800 content of large files well structured. Visibility cycling and
801 structure editing help to work with the tree. Tables are easily created
802 with a built-in table editor. Org supports TODO items, deadlines,
803 timestamps, and scheduling. It dynamically compiles entries into an
804 agenda that utilizes and smoothly integrates much of the Emacs calendar
805 and diary. Plain text URL-like links connect to websites, emails,
806 Usenet messages, BBDB entries, and any files related to the projects.
807 For printing and sharing notes, an Org file can be exported as a
808 structured ASCII file, as HTML, or (TODO and agenda items only) as an
809 iCalendar file. It can also serve as a publishing tool for a set of
810 linked web pages.
811
812 As a project planning environment, Org works by adding metadata to outline
813 nodes. Based on this data, specific entries can be extracted in queries and
814 create dynamic @i{agenda views}.
815
816 Org mode contains the Org Babel environment which allows you to work with
817 embedded source code blocks in a file, to facilitate code evaluation,
818 documentation, and literate programming techniques.
819
820 Org's automatic, context-sensitive table editor with spreadsheet
821 capabilities can be integrated into any major mode by activating the
822 minor Orgtbl mode. Using a translation step, it can be used to maintain
823 tables in arbitrary file types, for example in @LaTeX{}. The structure
824 editing and list creation capabilities can be used outside Org with
825 the minor Orgstruct mode.
826
827 Org keeps simple things simple. When first fired up, it should
828 feel like a straightforward, easy to use outliner. Complexity is not
829 imposed, but a large amount of functionality is available when you need
830 it. Org is a toolbox and can be used in different ways and for different
831 ends, for example:
832
833 @example
834 @r{@bullet{} an outline extension with visibility cycling and structure editing}
835 @r{@bullet{} an ASCII system and table editor for taking structured notes}
836 @r{@bullet{} a TODO list editor}
837 @r{@bullet{} a full agenda and planner with deadlines and work scheduling}
838 @pindex GTD, Getting Things Done
839 @r{@bullet{} an environment in which to implement David Allen's GTD system}
840 @r{@bullet{} a simple hypertext system, with HTML and @LaTeX{} export}
841 @r{@bullet{} a publishing tool to create a set of interlinked web pages}
842 @r{@bullet{} an environment for literate programming}
843 @end example
844
845 @cindex FAQ
846 There is a website for Org which provides links to the newest
847 version of Org, as well as additional information, frequently asked
848 questions (FAQ), links to tutorials, etc. This page is located at
849 @uref{http://orgmode.org}.
850
851 @cindex print edition
852 The version 7.3 of this manual is available as a
853 @uref{http://www.network-theory.co.uk/org/manual/, paperback book from Network
854 Theory Ltd.}
855
856 @page
857
858
859 @node Installation, Activation, Summary, Introduction
860 @section Installation
861 @cindex installation
862 @cindex XEmacs
863
864 Org is part of recent distributions of GNU Emacs, so you normally don't need
865 to install it. If, for one reason or another, you want to install Org on top
866 of this pre-packaged version, there are three ways to do it:
867
868 @itemize @bullet
869 @item By using Emacs package system.
870 @item By downloading Org as an archive.
871 @item By using Org's git repository.
872 @end itemize
873
874 We @b{strongly recommend} to stick to a single installation method.
875
876 @subsubheading Using Emacs packaging system
877
878 Recent Emacs distributions include a packaging system which lets you install
879 Elisp libraries. You can install Org with @kbd{M-x package-install RET org}.
880
881 @noindent @b{Important}: you need to do this in a session where no @code{.org} file has
882 been visited, i.e. where no Org built-in function have been loaded.
883 Otherwise autoload Org functions will mess up the installation.
884
885 Then, to make sure your Org configuration is taken into account, initialize
886 the package system with @code{(package-initialize)} in your @file{.emacs}
887 before setting any Org option. If you want to use Org's package repository,
888 check out the @uref{http://orgmode.org/elpa.html, Org ELPA page}.
889
890 @subsubheading Downloading Org as an archive
891
892 You can download Org latest release from @uref{http://orgmode.org/, Org's
893 website}. In this case, make sure you set the load-path correctly in your
894 @file{.emacs}:
895
896 @lisp
897 (add-to-list 'load-path "~/path/to/orgdir/lisp")
898 @end lisp
899
900 The downloaded archive contains contributed libraries that are not included
901 in Emacs. If you want to use them, add the @file{contrib} directory to your
902 load-path:
903
904 @lisp
905 (add-to-list 'load-path "~/path/to/orgdir/contrib/lisp" t)
906 @end lisp
907
908 Optionally, you can compile the files and/or install them in your system.
909 Run @code{make help} to list compilation and installation options.
910
911 @subsubheading Using Org's git repository
912
913 You can clone Org's repository and install Org like this:
914
915 @example
916 $ cd ~/src/
917 $ git clone git://orgmode.org/org-mode.git
918 $ make autoloads
919 @end example
920
921 Note that in this case, @code{make autoloads} is mandatory: it defines Org's
922 version in @file{org-version.el} and Org's autoloads in
923 @file{org-loaddefs.el}.
924
925 Remember to add the correct load-path as described in the method above.
926
927 You can also compile with @code{make}, generate the documentation with
928 @code{make doc}, create a local configuration with @code{make config} and
929 install Org with @code{make install}. Please run @code{make help} to get
930 the list of compilation/installation options.
931
932 For more detailed explanations on Org's build system, please check the Org
933 Build System page on @uref{http://orgmode.org/worg/dev/org-build-system.html,
934 Worg}.
935
936 @node Activation, Feedback, Installation, Introduction
937 @section Activation
938 @cindex activation
939 @cindex autoload
940 @cindex ELPA
941 @cindex global key bindings
942 @cindex key bindings, global
943 @findex org-agenda
944 @findex org-capture
945 @findex org-store-link
946 @findex org-iswitchb
947
948 Since Emacs 22.2, files with the @file{.org} extension use Org mode by
949 default. If you are using an earlier version of Emacs, add this line to your
950 @file{.emacs} file:
951
952 @lisp
953 (add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
954 @end lisp
955
956 Org mode buffers need font-lock to be turned on: this is the default in
957 Emacs@footnote{If you don't use font-lock globally, turn it on in Org buffer
958 with @code{(add-hook 'org-mode-hook 'turn-on-font-lock)}}.
959
960 There are compatibility issues between Org mode and some other Elisp
961 packages, please take the time to check the list (@pxref{Conflicts}).
962
963 The four Org commands @command{org-store-link}, @command{org-capture},
964 @command{org-agenda}, and @command{org-iswitchb} should be accessible through
965 global keys (i.e., anywhere in Emacs, not just in Org buffers). Here are
966 suggested bindings for these keys, please modify the keys to your own
967 liking.
968 @lisp
969 (global-set-key "\C-cl" 'org-store-link)
970 (global-set-key "\C-cc" 'org-capture)
971 (global-set-key "\C-ca" 'org-agenda)
972 (global-set-key "\C-cb" 'org-iswitchb)
973 @end lisp
974
975 @cindex Org mode, turning on
976 With this setup, all files with extension @samp{.org} will be put
977 into Org mode. As an alternative, make the first line of a file look
978 like this:
979
980 @example
981 MY PROJECTS -*- mode: org; -*-
982 @end example
983
984 @vindex org-insert-mode-line-in-empty-file
985 @noindent which will select Org mode for this buffer no matter what
986 the file's name is. See also the variable
987 @code{org-insert-mode-line-in-empty-file}.
988
989 Many commands in Org work on the region if the region is @i{active}. To make
990 use of this, you need to have @code{transient-mark-mode}
991 (@code{zmacs-regions} in XEmacs) turned on. In Emacs 23 this is the default,
992 in Emacs 22 you need to do this yourself with
993 @lisp
994 (transient-mark-mode 1)
995 @end lisp
996 @noindent If you do not like @code{transient-mark-mode}, you can create an
997 active region by using the mouse to select a region, or pressing
998 @kbd{C-@key{SPC}} twice before moving the cursor.
999
1000 @node Feedback, Conventions, Activation, Introduction
1001 @section Feedback
1002 @cindex feedback
1003 @cindex bug reports
1004 @cindex maintainer
1005 @cindex author
1006
1007 If you find problems with Org, or if you have questions, remarks, or ideas
1008 about it, please mail to the Org mailing list @email{emacs-orgmode@@gnu.org}.
1009 If you are not a member of the mailing list, your mail will be passed to the
1010 list after a moderator has approved it@footnote{Please consider subscribing
1011 to the mailing list, in order to minimize the work the mailing list
1012 moderators have to do.}.
1013
1014 For bug reports, please first try to reproduce the bug with the latest
1015 version of Org available---if you are running an outdated version, it is
1016 quite possible that the bug has been fixed already. If the bug persists,
1017 prepare a report and provide as much information as possible, including the
1018 version information of Emacs (@kbd{M-x emacs-version @key{RET}}) and Org
1019 (@kbd{M-x org-version RET}), as well as the Org related setup in
1020 @file{.emacs}. The easiest way to do this is to use the command
1021 @example
1022 @kbd{M-x org-submit-bug-report RET}
1023 @end example
1024 @noindent which will put all this information into an Emacs mail buffer so
1025 that you only need to add your description. If you re not sending the Email
1026 from within Emacs, please copy and paste the content into your Email program.
1027
1028 Sometimes you might face a problem due to an error in your Emacs or Org mode
1029 setup. Before reporting a bug, it is very helpful to start Emacs with minimal
1030 customizations and reproduce the problem. Doing so often helps you determine
1031 if the problem is with your customization or with Org mode itself. You can
1032 start a typical minimal session with a command like the example below.
1033
1034 @example
1035 $ emacs -Q -l /path/to/minimal-org.el
1036 @end example
1037
1038 However if you are using Org mode as distributed with Emacs, a minimal setup
1039 is not necessary. In that case it is sufficient to start Emacs as
1040 @code{emacs -Q}. The @code{minimal-org.el} setup file can have contents as
1041 shown below.
1042
1043 @lisp
1044 ;;; Minimal setup to load latest `org-mode'
1045
1046 ;; activate debugging
1047 (setq debug-on-error t
1048 debug-on-signal nil
1049 debug-on-quit nil)
1050
1051 ;; add latest org-mode to load path
1052 (add-to-list 'load-path (expand-file-name "/path/to/org-mode/lisp"))
1053 (add-to-list 'load-path (expand-file-name "/path/to/org-mode/contrib/lisp" t))
1054 @end lisp
1055
1056 If an error occurs, a backtrace can be very useful (see below on how to
1057 create one). Often a small example file helps, along with clear information
1058 about:
1059
1060 @enumerate
1061 @item What exactly did you do?
1062 @item What did you expect to happen?
1063 @item What happened instead?
1064 @end enumerate
1065 @noindent Thank you for helping to improve this program.
1066
1067 @subsubheading How to create a useful backtrace
1068
1069 @cindex backtrace of an error
1070 If working with Org produces an error with a message you don't
1071 understand, you may have hit a bug. The best way to report this is by
1072 providing, in addition to what was mentioned above, a @emph{backtrace}.
1073 This is information from the built-in debugger about where and how the
1074 error occurred. Here is how to produce a useful backtrace:
1075
1076 @enumerate
1077 @item
1078 Reload uncompiled versions of all Org mode Lisp files. The backtrace
1079 contains much more information if it is produced with uncompiled code.
1080 To do this, use
1081 @example
1082 @kbd{C-u M-x org-reload RET}
1083 @end example
1084 @noindent
1085 or select @code{Org -> Refresh/Reload -> Reload Org uncompiled} from the
1086 menu.
1087 @item
1088 Go to the @code{Options} menu and select @code{Enter Debugger on Error}
1089 (XEmacs has this option in the @code{Troubleshooting} sub-menu).
1090 @item
1091 Do whatever you have to do to hit the error. Don't forget to
1092 document the steps you take.
1093 @item
1094 When you hit the error, a @file{*Backtrace*} buffer will appear on the
1095 screen. Save this buffer to a file (for example using @kbd{C-x C-w}) and
1096 attach it to your bug report.
1097 @end enumerate
1098
1099 @node Conventions, , Feedback, Introduction
1100 @section Typesetting conventions used in this manual
1101
1102 @subsubheading TODO keywords, tags, properties, etc.
1103
1104 Org mainly uses three types of keywords: TODO keywords, tags and property
1105 names. In this manual we use the following conventions:
1106
1107 @table @code
1108 @item TODO
1109 @itemx WAITING
1110 TODO keywords are written with all capitals, even if they are
1111 user-defined.
1112 @item boss
1113 @itemx ARCHIVE
1114 User-defined tags are written in lowercase; built-in tags with special
1115 meaning are written with all capitals.
1116 @item Release
1117 @itemx PRIORITY
1118 User-defined properties are capitalized; built-in properties with
1119 special meaning are written with all capitals.
1120 @end table
1121
1122 Moreover, Org uses @i{option keywords} (like @code{#+TITLE} to set the title)
1123 and @i{environment keywords} (like @code{#+BEGIN_HTML} to start a @code{HTML}
1124 environment). They are written in uppercase in the manual to enhance its
1125 readability, but you can use lowercase in your Org files@footnote{Easy
1126 templates insert lowercase keywords and Babel dynamically inserts
1127 @code{#+results}.}.
1128
1129 @subsubheading Keybindings and commands
1130 @kindex C-c a
1131 @findex org-agenda
1132 @kindex C-c c
1133 @findex org-capture
1134
1135 The manual suggests two global keybindings: @kbd{C-c a} for @code{org-agenda}
1136 and @kbd{C-c c} for @code{org-capture}. These are only suggestions, but the
1137 rest of the manual assumes that you are using these keybindings.
1138
1139 Also, the manual lists both the keys and the corresponding commands for
1140 accessing a functionality. Org mode often uses the same key for different
1141 functions, depending on context. The command that is bound to such keys has
1142 a generic name, like @code{org-metaright}. In the manual we will, wherever
1143 possible, give the function that is internally called by the generic command.
1144 For example, in the chapter on document structure, @kbd{M-@key{right}} will
1145 be listed to call @code{org-do-demote}, while in the chapter on tables, it
1146 will be listed to call @code{org-table-move-column-right}. If you prefer,
1147 you can compile the manual without the command names by unsetting the flag
1148 @code{cmdnames} in @file{org.texi}.
1149
1150 @node Document Structure, Tables, Introduction, Top
1151 @chapter Document structure
1152 @cindex document structure
1153 @cindex structure of document
1154
1155 Org is based on Outline mode and provides flexible commands to
1156 edit the structure of the document.
1157
1158 @menu
1159 * Outlines:: Org is based on Outline mode
1160 * Headlines:: How to typeset Org tree headlines
1161 * Visibility cycling:: Show and hide, much simplified
1162 * Motion:: Jumping to other headlines
1163 * Structure editing:: Changing sequence and level of headlines
1164 * Sparse trees:: Matches embedded in context
1165 * Plain lists:: Additional structure within an entry
1166 * Drawers:: Tucking stuff away
1167 * Blocks:: Folding blocks
1168 * Footnotes:: How footnotes are defined in Org's syntax
1169 * Orgstruct mode:: Structure editing outside Org
1170 * Org syntax:: Formal description of Org's syntax
1171 @end menu
1172
1173 @node Outlines, Headlines, Document Structure, Document Structure
1174 @section Outlines
1175 @cindex outlines
1176 @cindex Outline mode
1177
1178 Org is implemented on top of Outline mode. Outlines allow a
1179 document to be organized in a hierarchical structure, which (at least
1180 for me) is the best representation of notes and thoughts. An overview
1181 of this structure is achieved by folding (hiding) large parts of the
1182 document to show only the general document structure and the parts
1183 currently being worked on. Org greatly simplifies the use of
1184 outlines by compressing the entire show/hide functionality into a single
1185 command, @command{org-cycle}, which is bound to the @key{TAB} key.
1186
1187 @node Headlines, Visibility cycling, Outlines, Document Structure
1188 @section Headlines
1189 @cindex headlines
1190 @cindex outline tree
1191 @vindex org-special-ctrl-a/e
1192 @vindex org-special-ctrl-k
1193 @vindex org-ctrl-k-protect-subtree
1194
1195 Headlines define the structure of an outline tree. The headlines in Org
1196 start with one or more stars, on the left margin@footnote{See the variables
1197 @code{org-special-ctrl-a/e}, @code{org-special-ctrl-k}, and
1198 @code{org-ctrl-k-protect-subtree} to configure special behavior of @kbd{C-a},
1199 @kbd{C-e}, and @kbd{C-k} in headlines.} @footnote{Clocking only works with
1200 headings indented less then 30 stars.}. For example:
1201
1202 @example
1203 * Top level headline
1204 ** Second level
1205 *** 3rd level
1206 some text
1207 *** 3rd level
1208 more text
1209
1210 * Another top level headline
1211 @end example
1212
1213 @noindent Some people find the many stars too noisy and would prefer an
1214 outline that has whitespace followed by a single star as headline
1215 starters. @ref{Clean view}, describes a setup to realize this.
1216
1217 @vindex org-cycle-separator-lines
1218 An empty line after the end of a subtree is considered part of it and
1219 will be hidden when the subtree is folded. However, if you leave at
1220 least two empty lines, one empty line will remain visible after folding
1221 the subtree, in order to structure the collapsed view. See the
1222 variable @code{org-cycle-separator-lines} to modify this behavior.
1223
1224 @node Visibility cycling, Motion, Headlines, Document Structure
1225 @section Visibility cycling
1226 @cindex cycling, visibility
1227 @cindex visibility cycling
1228 @cindex trees, visibility
1229 @cindex show hidden text
1230 @cindex hide text
1231
1232 @menu
1233 * Global and local cycling:: Cycling through various visibility states
1234 * Initial visibility:: Setting the initial visibility state
1235 * Catching invisible edits:: Preventing mistakes when editing invisible parts
1236 @end menu
1237
1238 @node Global and local cycling, Initial visibility, Visibility cycling, Visibility cycling
1239 @subsection Global and local cycling
1240
1241 Outlines make it possible to hide parts of the text in the buffer.
1242 Org uses just two commands, bound to @key{TAB} and
1243 @kbd{S-@key{TAB}} to change the visibility in the buffer.
1244
1245 @cindex subtree visibility states
1246 @cindex subtree cycling
1247 @cindex folded, subtree visibility state
1248 @cindex children, subtree visibility state
1249 @cindex subtree, subtree visibility state
1250 @table @asis
1251 @orgcmd{@key{TAB},org-cycle}
1252 @emph{Subtree cycling}: Rotate current subtree among the states
1253
1254 @example
1255 ,-> FOLDED -> CHILDREN -> SUBTREE --.
1256 '-----------------------------------'
1257 @end example
1258
1259 @vindex org-cycle-emulate-tab
1260 @vindex org-cycle-global-at-bob
1261 The cursor must be on a headline for this to work@footnote{see, however,
1262 the option @code{org-cycle-emulate-tab}.}. When the cursor is at the
1263 beginning of the buffer and the first line is not a headline, then
1264 @key{TAB} actually runs global cycling (see below)@footnote{see the
1265 option @code{org-cycle-global-at-bob}.}. Also when called with a prefix
1266 argument (@kbd{C-u @key{TAB}}), global cycling is invoked.
1267
1268 @cindex global visibility states
1269 @cindex global cycling
1270 @cindex overview, global visibility state
1271 @cindex contents, global visibility state
1272 @cindex show all, global visibility state
1273 @orgcmd{S-@key{TAB},org-global-cycle}
1274 @itemx C-u @key{TAB}
1275 @emph{Global cycling}: Rotate the entire buffer among the states
1276
1277 @example
1278 ,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
1279 '--------------------------------------'
1280 @end example
1281
1282 When @kbd{S-@key{TAB}} is called with a numeric prefix argument N, the
1283 CONTENTS view up to headlines of level N will be shown. Note that inside
1284 tables, @kbd{S-@key{TAB}} jumps to the previous field.
1285
1286 @cindex set startup visibility, command
1287 @orgcmd{C-u C-u @key{TAB},org-set-startup-visibility}
1288 Switch back to the startup visibility of the buffer (@pxref{Initial visibility}).
1289 @cindex show all, command
1290 @orgcmd{C-u C-u C-u @key{TAB},show-all}
1291 Show all, including drawers.
1292 @cindex revealing context
1293 @orgcmd{C-c C-r,org-reveal}
1294 Reveal context around point, showing the current entry, the following heading
1295 and the hierarchy above. Useful for working near a location that has been
1296 exposed by a sparse tree command (@pxref{Sparse trees}) or an agenda command
1297 (@pxref{Agenda commands}). With a prefix argument show, on each
1298 level, all sibling headings. With a double prefix argument, also show the
1299 entire subtree of the parent.
1300 @cindex show branches, command
1301 @orgcmd{C-c C-k,show-branches}
1302 Expose all the headings of the subtree, CONTENT view for just one subtree.
1303 @cindex show children, command
1304 @orgcmd{C-c @key{TAB},show-children}
1305 Expose all direct children of the subtree. With a numeric prefix argument N,
1306 expose all children down to level N@.
1307 @orgcmd{C-c C-x b,org-tree-to-indirect-buffer}
1308 Show the current subtree in an indirect buffer@footnote{The indirect
1309 buffer
1310 @ifinfo
1311 (@pxref{Indirect Buffers,,,emacs,GNU Emacs Manual})
1312 @end ifinfo
1313 @ifnotinfo
1314 (see the Emacs manual for more information about indirect buffers)
1315 @end ifnotinfo
1316 will contain the entire buffer, but will be narrowed to the current
1317 tree. Editing the indirect buffer will also change the original buffer,
1318 but without affecting visibility in that buffer.}. With a numeric
1319 prefix argument N, go up to level N and then take that tree. If N is
1320 negative then go up that many levels. With a @kbd{C-u} prefix, do not remove
1321 the previously used indirect buffer.
1322 @orgcmd{C-c C-x v,org-copy-visible}
1323 Copy the @i{visible} text in the region into the kill ring.
1324 @end table
1325
1326 @menu
1327 * Initial visibility:: Setting the initial visibility state
1328 * Catching invisible edits:: Preventing mistakes when editing invisible parts
1329 @end menu
1330
1331 @node Initial visibility, Catching invisible edits, Global and local cycling, Visibility cycling
1332 @subsection Initial visibility
1333
1334 @cindex visibility, initialize
1335 @vindex org-startup-folded
1336 @vindex org-agenda-inhibit-startup
1337 @cindex @code{overview}, STARTUP keyword
1338 @cindex @code{content}, STARTUP keyword
1339 @cindex @code{showall}, STARTUP keyword
1340 @cindex @code{showeverything}, STARTUP keyword
1341
1342 When Emacs first visits an Org file, the global state is set to OVERVIEW,
1343 i.e., only the top level headlines are visible@footnote{When
1344 @code{org-agenda-inhibit-startup} is non-@code{nil}, Org will not honor the default
1345 visibility state when first opening a file for the agenda (@pxref{Speeding up
1346 your agendas}).}. This can be configured through the variable
1347 @code{org-startup-folded}, or on a per-file basis by adding one of the
1348 following lines anywhere in the buffer:
1349
1350 @example
1351 #+STARTUP: overview
1352 #+STARTUP: content
1353 #+STARTUP: showall
1354 #+STARTUP: showeverything
1355 @end example
1356
1357 The startup visibility options are ignored when the file is open for the
1358 first time during the agenda generation: if you want the agenda to honor
1359 the startup visibility, set @code{org-agenda-inhibit-startup} to @code{nil}.
1360
1361 @cindex property, VISIBILITY
1362 @noindent
1363 Furthermore, any entries with a @samp{VISIBILITY} property (@pxref{Properties
1364 and Columns}) will get their visibility adapted accordingly. Allowed values
1365 for this property are @code{folded}, @code{children}, @code{content}, and
1366 @code{all}.
1367
1368 @table @asis
1369 @orgcmd{C-u C-u @key{TAB},org-set-startup-visibility}
1370 Switch back to the startup visibility of the buffer, i.e., whatever is
1371 requested by startup options and @samp{VISIBILITY} properties in individual
1372 entries.
1373 @end table
1374
1375 @node Catching invisible edits, , Initial visibility, Visibility cycling
1376 @subsection Catching invisible edits
1377
1378 @vindex org-catch-invisible-edits
1379 @cindex edits, catching invisible
1380 Sometimes you may inadvertently edit an invisible part of the buffer and be
1381 confused on what has been edited and how to undo the mistake. Setting
1382 @code{org-catch-invisible-edits} to non-@code{nil} will help prevent this. See the
1383 docstring of this option on how Org should catch invisible edits and process
1384 them.
1385
1386 @node Motion, Structure editing, Visibility cycling, Document Structure
1387 @section Motion
1388 @cindex motion, between headlines
1389 @cindex jumping, to headlines
1390 @cindex headline navigation
1391 The following commands jump to other headlines in the buffer.
1392
1393 @table @asis
1394 @orgcmd{C-c C-n,outline-next-visible-heading}
1395 Next heading.
1396 @orgcmd{C-c C-p,outline-previous-visible-heading}
1397 Previous heading.
1398 @orgcmd{C-c C-f,org-forward-same-level}
1399 Next heading same level.
1400 @orgcmd{C-c C-b,org-backward-same-level}
1401 Previous heading same level.
1402 @orgcmd{C-c C-u,outline-up-heading}
1403 Backward to higher level heading.
1404 @orgcmd{C-c C-j,org-goto}
1405 Jump to a different place without changing the current outline
1406 visibility. Shows the document structure in a temporary buffer, where
1407 you can use the following keys to find your destination:
1408 @vindex org-goto-auto-isearch
1409 @example
1410 @key{TAB} @r{Cycle visibility.}
1411 @key{down} / @key{up} @r{Next/previous visible headline.}
1412 @key{RET} @r{Select this location.}
1413 @kbd{/} @r{Do a Sparse-tree search}
1414 @r{The following keys work if you turn off @code{org-goto-auto-isearch}}
1415 n / p @r{Next/previous visible headline.}
1416 f / b @r{Next/previous headline same level.}
1417 u @r{One level up.}
1418 0-9 @r{Digit argument.}
1419 q @r{Quit}
1420 @end example
1421 @vindex org-goto-interface
1422 @noindent
1423 See also the option @code{org-goto-interface}.
1424 @end table
1425
1426 @node Structure editing, Sparse trees, Motion, Document Structure
1427 @section Structure editing
1428 @cindex structure editing
1429 @cindex headline, promotion and demotion
1430 @cindex promotion, of subtrees
1431 @cindex demotion, of subtrees
1432 @cindex subtree, cut and paste
1433 @cindex pasting, of subtrees
1434 @cindex cutting, of subtrees
1435 @cindex copying, of subtrees
1436 @cindex sorting, of subtrees
1437 @cindex subtrees, cut and paste
1438
1439 @table @asis
1440 @orgcmd{M-@key{RET},org-insert-heading}
1441 @vindex org-M-RET-may-split-line
1442 Insert a new heading/item with the same level than the one at point.
1443 If the cursor is in a plain list item, a new item is created
1444 (@pxref{Plain lists}). To prevent this behavior in lists, call the
1445 command with a prefix argument. When this command is used in the
1446 middle of a line, the line is split and the rest of the line becomes
1447 the new item or headline@footnote{If you do not want the line to be
1448 split, customize the variable @code{org-M-RET-may-split-line}.}. If
1449 the command is used at the @emph{beginning} of a headline, the new
1450 headline is created before the current line. If the command is used
1451 at the @emph{end} of a folded subtree (i.e., behind the ellipses at
1452 the end of a headline), then a headline will be
1453 inserted after the end of the subtree. Calling this command with
1454 @kbd{C-u C-u} will unconditionally respect the headline's content and
1455 create a new item at the end of the parent subtree.
1456 @orgcmd{C-@key{RET},org-insert-heading-respect-content}
1457 Just like @kbd{M-@key{RET}}, except when adding a new heading below the
1458 current heading, the new heading is placed after the body instead of before
1459 it. This command works from anywhere in the entry.
1460 @orgcmd{M-S-@key{RET},org-insert-todo-heading}
1461 @vindex org-treat-insert-todo-heading-as-state-change
1462 Insert new TODO entry with same level as current heading. See also the
1463 variable @code{org-treat-insert-todo-heading-as-state-change}.
1464 @orgcmd{C-S-@key{RET},org-insert-todo-heading-respect-content}
1465 Insert new TODO entry with same level as current heading. Like
1466 @kbd{C-@key{RET}}, the new headline will be inserted after the current
1467 subtree.
1468 @orgcmd{@key{TAB},org-cycle}
1469 In a new entry with no text yet, the first @key{TAB} demotes the entry to
1470 become a child of the previous one. The next @key{TAB} makes it a parent,
1471 and so on, all the way to top level. Yet another @key{TAB}, and you are back
1472 to the initial level.
1473 @orgcmd{M-@key{left},org-do-promote}
1474 Promote current heading by one level.
1475 @orgcmd{M-@key{right},org-do-demote}
1476 Demote current heading by one level.
1477 @orgcmd{M-S-@key{left},org-promote-subtree}
1478 Promote the current subtree by one level.
1479 @orgcmd{M-S-@key{right},org-demote-subtree}
1480 Demote the current subtree by one level.
1481 @orgcmd{M-S-@key{up},org-move-subtree-up}
1482 Move subtree up (swap with previous subtree of same
1483 level).
1484 @orgcmd{M-S-@key{down},org-move-subtree-down}
1485 Move subtree down (swap with next subtree of same level).
1486 @orgcmd{M-h,org-mark-element}
1487 Mark the element at point. Hitting repeatedly will mark subsequent elements
1488 of the one just marked. E.g., hitting @key{M-h} on a paragraph will mark it,
1489 hitting @key{M-h} immediately again will mark the next one.
1490 @orgcmd{C-c @@,org-mark-subtree}
1491 Mark the subtree at point. Hitting repeatedly will mark subsequent subtrees
1492 of the same level than the marked subtree.
1493 @orgcmd{C-c C-x C-w,org-cut-subtree}
1494 Kill subtree, i.e., remove it from buffer but save in kill ring.
1495 With a numeric prefix argument N, kill N sequential subtrees.
1496 @orgcmd{C-c C-x M-w,org-copy-subtree}
1497 Copy subtree to kill ring. With a numeric prefix argument N, copy the N
1498 sequential subtrees.
1499 @orgcmd{C-c C-x C-y,org-paste-subtree}
1500 Yank subtree from kill ring. This does modify the level of the subtree to
1501 make sure the tree fits in nicely at the yank position. The yank level can
1502 also be specified with a numeric prefix argument, or by yanking after a
1503 headline marker like @samp{****}.
1504 @orgcmd{C-y,org-yank}
1505 @vindex org-yank-adjusted-subtrees
1506 @vindex org-yank-folded-subtrees
1507 Depending on the options @code{org-yank-adjusted-subtrees} and
1508 @code{org-yank-folded-subtrees}, Org's internal @code{yank} command will
1509 paste subtrees folded and in a clever way, using the same command as @kbd{C-c
1510 C-x C-y}. With the default settings, no level adjustment will take place,
1511 but the yanked tree will be folded unless doing so would swallow text
1512 previously visible. Any prefix argument to this command will force a normal
1513 @code{yank} to be executed, with the prefix passed along. A good way to
1514 force a normal yank is @kbd{C-u C-y}. If you use @code{yank-pop} after a
1515 yank, it will yank previous kill items plainly, without adjustment and
1516 folding.
1517 @orgcmd{C-c C-x c,org-clone-subtree-with-time-shift}
1518 Clone a subtree by making a number of sibling copies of it. You will be
1519 prompted for the number of copies to make, and you can also specify if any
1520 timestamps in the entry should be shifted. This can be useful, for example,
1521 to create a number of tasks related to a series of lectures to prepare. For
1522 more details, see the docstring of the command
1523 @code{org-clone-subtree-with-time-shift}.
1524 @orgcmd{C-c C-w,org-refile}
1525 Refile entry or region to a different location. @xref{Refile and copy}.
1526 @orgcmd{C-c ^,org-sort}
1527 Sort same-level entries. When there is an active region, all entries in the
1528 region will be sorted. Otherwise the children of the current headline are
1529 sorted. The command prompts for the sorting method, which can be
1530 alphabetically, numerically, by time (first timestamp with active preferred,
1531 creation time, scheduled time, deadline time), by priority, by TODO keyword
1532 (in the sequence the keywords have been defined in the setup) or by the value
1533 of a property. Reverse sorting is possible as well. You can also supply
1534 your own function to extract the sorting key. With a @kbd{C-u} prefix,
1535 sorting will be case-sensitive.
1536 @orgcmd{C-x n s,org-narrow-to-subtree}
1537 Narrow buffer to current subtree.
1538 @orgcmd{C-x n b,org-narrow-to-block}
1539 Narrow buffer to current block.
1540 @orgcmd{C-x n w,widen}
1541 Widen buffer to remove narrowing.
1542 @orgcmd{C-c *,org-toggle-heading}
1543 Turn a normal line or plain list item into a headline (so that it becomes a
1544 subheading at its location). Also turn a headline into a normal line by
1545 removing the stars. If there is an active region, turn all lines in the
1546 region into headlines. If the first line in the region was an item, turn
1547 only the item lines into headlines. Finally, if the first line is a
1548 headline, remove the stars from all headlines in the region.
1549 @end table
1550
1551 @cindex region, active
1552 @cindex active region
1553 @cindex transient mark mode
1554 When there is an active region (Transient Mark mode), promotion and
1555 demotion work on all headlines in the region. To select a region of
1556 headlines, it is best to place both point and mark at the beginning of a
1557 line, mark at the beginning of the first headline, and point at the line
1558 just after the last headline to change. Note that when the cursor is
1559 inside a table (@pxref{Tables}), the Meta-Cursor keys have different
1560 functionality.
1561
1562
1563 @node Sparse trees, Plain lists, Structure editing, Document Structure
1564 @section Sparse trees
1565 @cindex sparse trees
1566 @cindex trees, sparse
1567 @cindex folding, sparse trees
1568 @cindex occur, command
1569
1570 @vindex org-show-hierarchy-above
1571 @vindex org-show-following-heading
1572 @vindex org-show-siblings
1573 @vindex org-show-entry-below
1574 An important feature of Org mode is the ability to construct @emph{sparse
1575 trees} for selected information in an outline tree, so that the entire
1576 document is folded as much as possible, but the selected information is made
1577 visible along with the headline structure above it@footnote{See also the
1578 variables @code{org-show-hierarchy-above}, @code{org-show-following-heading},
1579 @code{org-show-siblings}, and @code{org-show-entry-below} for detailed
1580 control on how much context is shown around each match.}. Just try it out
1581 and you will see immediately how it works.
1582
1583 Org mode contains several commands creating such trees, all these
1584 commands can be accessed through a dispatcher:
1585
1586 @table @asis
1587 @orgcmd{C-c /,org-sparse-tree}
1588 This prompts for an extra key to select a sparse-tree creating command.
1589 @orgcmd{C-c / r,org-occur}
1590 @vindex org-remove-highlights-with-change
1591 Prompts for a regexp and shows a sparse tree with all matches. If
1592 the match is in a headline, the headline is made visible. If the match is in
1593 the body of an entry, headline and body are made visible. In order to
1594 provide minimal context, also the full hierarchy of headlines above the match
1595 is shown, as well as the headline following the match. Each match is also
1596 highlighted; the highlights disappear when the buffer is changed by an
1597 editing command@footnote{This depends on the option
1598 @code{org-remove-highlights-with-change}}, or by pressing @kbd{C-c C-c}.
1599 When called with a @kbd{C-u} prefix argument, previous highlights are kept,
1600 so several calls to this command can be stacked.
1601 @orgcmdkkc{M-g n,M-g M-n,next-error}
1602 Jump to the next sparse tree match in this buffer.
1603 @orgcmdkkc{M-g p,M-g M-p,previous-error}
1604 Jump to the previous sparse tree match in this buffer.
1605 @end table
1606
1607 @noindent
1608 @vindex org-agenda-custom-commands
1609 For frequently used sparse trees of specific search strings, you can
1610 use the option @code{org-agenda-custom-commands} to define fast
1611 keyboard access to specific sparse trees. These commands will then be
1612 accessible through the agenda dispatcher (@pxref{Agenda dispatcher}).
1613 For example:
1614
1615 @lisp
1616 (setq org-agenda-custom-commands
1617 '(("f" occur-tree "FIXME")))
1618 @end lisp
1619
1620 @noindent will define the key @kbd{C-c a f} as a shortcut for creating
1621 a sparse tree matching the string @samp{FIXME}.
1622
1623 The other sparse tree commands select headings based on TODO keywords,
1624 tags, or properties and will be discussed later in this manual.
1625
1626 @kindex C-c C-e C-v
1627 @cindex printing sparse trees
1628 @cindex visible text, printing
1629 To print a sparse tree, you can use the Emacs command
1630 @code{ps-print-buffer-with-faces} which does not print invisible parts
1631 of the document @footnote{This does not work under XEmacs, because
1632 XEmacs uses selective display for outlining, not text properties.}.
1633 Or you can use @kbd{C-c C-e C-v} to export only the visible part of
1634 the document and print the resulting file.
1635
1636 @node Plain lists, Drawers, Sparse trees, Document Structure
1637 @section Plain lists
1638 @cindex plain lists
1639 @cindex lists, plain
1640 @cindex lists, ordered
1641 @cindex ordered lists
1642
1643 Within an entry of the outline tree, hand-formatted lists can provide
1644 additional structure. They also provide a way to create lists of checkboxes
1645 (@pxref{Checkboxes}). Org supports editing such lists, and every exporter
1646 (@pxref{Exporting}) can parse and format them.
1647
1648 Org knows ordered lists, unordered lists, and description lists.
1649 @itemize @bullet
1650 @item
1651 @emph{Unordered} list items start with @samp{-}, @samp{+}, or
1652 @samp{*}@footnote{When using @samp{*} as a bullet, lines must be indented or
1653 they will be seen as top-level headlines. Also, when you are hiding leading
1654 stars to get a clean outline view, plain list items starting with a star may
1655 be hard to distinguish from true headlines. In short: even though @samp{*}
1656 is supported, it may be better to not use it for plain list items.} as
1657 bullets.
1658 @item
1659 @vindex org-plain-list-ordered-item-terminator
1660 @vindex org-list-allow-alphabetical
1661 @emph{Ordered} list items start with a numeral followed by either a period or
1662 a right parenthesis@footnote{You can filter out any of them by configuring
1663 @code{org-plain-list-ordered-item-terminator}.}, such as @samp{1.} or
1664 @samp{1)}@footnote{You can also get @samp{a.}, @samp{A.}, @samp{a)} and
1665 @samp{A)} by configuring @code{org-list-allow-alphabetical}. To minimize
1666 confusion with normal text, those are limited to one character only. Beyond
1667 that limit, bullets will automatically fallback to numbers.}. If you want a
1668 list to start with a different value (e.g., 20), start the text of the item
1669 with @code{[@@20]}@footnote{If there's a checkbox in the item, the cookie
1670 must be put @emph{before} the checkbox. If you have activated alphabetical
1671 lists, you can also use counters like @code{[@@b]}.}. Those constructs can
1672 be used in any item of the list in order to enforce a particular numbering.
1673 @item
1674 @emph{Description} list items are unordered list items, and contain the
1675 separator @samp{ :: } to distinguish the description @emph{term} from the
1676 description.
1677 @end itemize
1678
1679 Items belonging to the same list must have the same indentation on the first
1680 line. In particular, if an ordered list reaches number @samp{10.}, then the
1681 2--digit numbers must be written left-aligned with the other numbers in the
1682 list. An item ends before the next line that is less or equally indented
1683 than its bullet/number.
1684
1685 @vindex org-list-empty-line-terminates-plain-lists
1686 A list ends whenever every item has ended, which means before any line less
1687 or equally indented than items at top level. It also ends before two blank
1688 lines@footnote{See also @code{org-list-empty-line-terminates-plain-lists}.}.
1689 In that case, all items are closed. Here is an example:
1690
1691 @example
1692 @group
1693 ** Lord of the Rings
1694 My favorite scenes are (in this order)
1695 1. The attack of the Rohirrim
1696 2. Eowyn's fight with the witch king
1697 + this was already my favorite scene in the book
1698 + I really like Miranda Otto.
1699 3. Peter Jackson being shot by Legolas
1700 - on DVD only
1701 He makes a really funny face when it happens.
1702 But in the end, no individual scenes matter but the film as a whole.
1703 Important actors in this film are:
1704 - @b{Elijah Wood} :: He plays Frodo
1705 - @b{Sean Austin} :: He plays Sam, Frodo's friend. I still remember
1706 him very well from his role as Mikey Walsh in @i{The Goonies}.
1707 @end group
1708 @end example
1709
1710 Org supports these lists by tuning filling and wrapping commands to deal with
1711 them correctly@footnote{Org only changes the filling settings for Emacs. For
1712 XEmacs, you should use Kyle E. Jones' @file{filladapt.el}. To turn this on,
1713 put into @file{.emacs}: @code{(require 'filladapt)}}, and by exporting them
1714 properly (@pxref{Exporting}). Since indentation is what governs the
1715 structure of these lists, many structural constructs like @code{#+BEGIN_...}
1716 blocks can be indented to signal that they belong to a particular item.
1717
1718 @vindex org-list-demote-modify-bullet
1719 @vindex org-list-indent-offset
1720 If you find that using a different bullet for a sub-list (than that used for
1721 the current list-level) improves readability, customize the variable
1722 @code{org-list-demote-modify-bullet}. To get a greater difference of
1723 indentation between items and theirs sub-items, customize
1724 @code{org-list-indent-offset}.
1725
1726 @vindex org-list-automatic-rules
1727 The following commands act on items when the cursor is in the first line of
1728 an item (the line with the bullet or number). Some of them imply the
1729 application of automatic rules to keep list structure intact. If some of
1730 these actions get in your way, configure @code{org-list-automatic-rules}
1731 to disable them individually.
1732
1733 @table @asis
1734 @orgcmd{@key{TAB},org-cycle}
1735 @cindex cycling, in plain lists
1736 @vindex org-cycle-include-plain-lists
1737 Items can be folded just like headline levels. Normally this works only if
1738 the cursor is on a plain list item. For more details, see the variable
1739 @code{org-cycle-include-plain-lists}. If this variable is set to
1740 @code{integrate}, plain list items will be treated like low-level
1741 headlines. The level of an item is then given by the indentation of the
1742 bullet/number. Items are always subordinate to real headlines, however; the
1743 hierarchies remain completely separated. In a new item with no text yet, the
1744 first @key{TAB} demotes the item to become a child of the previous
1745 one. Subsequent @key{TAB}s move the item to meaningful levels in the list
1746 and eventually get it back to its initial position.
1747 @orgcmd{M-@key{RET},org-insert-heading}
1748 @vindex org-M-RET-may-split-line
1749 @vindex org-list-automatic-rules
1750 Insert new item at current level. With a prefix argument, force a new
1751 heading (@pxref{Structure editing}). If this command is used in the middle
1752 of an item, that item is @emph{split} in two, and the second part becomes the
1753 new item@footnote{If you do not want the item to be split, customize the
1754 variable @code{org-M-RET-may-split-line}.}. If this command is executed
1755 @emph{before item's body}, the new item is created @emph{before} the current
1756 one.
1757 @end table
1758
1759 @table @kbd
1760 @kindex M-S-@key{RET}
1761 @item M-S-@key{RET}
1762 Insert a new item with a checkbox (@pxref{Checkboxes}).
1763 @kindex S-@key{down}
1764 @item S-up
1765 @itemx S-down
1766 @cindex shift-selection-mode
1767 @vindex org-support-shift-select
1768 @vindex org-list-use-circular-motion
1769 Jump to the previous/next item in the current list@footnote{If you want to
1770 cycle around items that way, you may customize
1771 @code{org-list-use-circular-motion}.}, but only if
1772 @code{org-support-shift-select} is off. If not, you can still use paragraph
1773 jumping commands like @kbd{C-@key{up}} and @kbd{C-@key{down}} to quite
1774 similar effect.
1775 @kindex M-@key{up}
1776 @kindex M-@key{down}
1777 @item M-up
1778 @itemx M-down
1779 Move the item including subitems up/down@footnote{See
1780 @code{org-list-use-circular-motion} for a cyclic behavior.} (swap with
1781 previous/next item of same indentation). If the list is ordered, renumbering
1782 is automatic.
1783 @kindex M-@key{left}
1784 @kindex M-@key{right}
1785 @item M-left
1786 @itemx M-right
1787 Decrease/increase the indentation of an item, leaving children alone.
1788 @kindex M-S-@key{left}
1789 @kindex M-S-@key{right}
1790 @item M-S-@key{left}
1791 @itemx M-S-@key{right}
1792 Decrease/increase the indentation of the item, including subitems.
1793 Initially, the item tree is selected based on current indentation. When
1794 these commands are executed several times in direct succession, the initially
1795 selected region is used, even if the new indentation would imply a different
1796 hierarchy. To use the new hierarchy, break the command chain with a cursor
1797 motion or so.
1798
1799 As a special case, using this command on the very first item of a list will
1800 move the whole list. This behavior can be disabled by configuring
1801 @code{org-list-automatic-rules}. The global indentation of a list has no
1802 influence on the text @emph{after} the list.
1803 @kindex C-c C-c
1804 @item C-c C-c
1805 If there is a checkbox (@pxref{Checkboxes}) in the item line, toggle the
1806 state of the checkbox. In any case, verify bullets and indentation
1807 consistency in the whole list.
1808 @kindex C-c -
1809 @vindex org-plain-list-ordered-item-terminator
1810 @item C-c -
1811 Cycle the entire list level through the different itemize/enumerate bullets
1812 (@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}) or a subset of them,
1813 depending on @code{org-plain-list-ordered-item-terminator}, the type of list,
1814 and its indentation. With a numeric prefix argument N, select the Nth bullet
1815 from this list. If there is an active region when calling this, selected
1816 text will be changed into an item. With a prefix argument, all lines will be
1817 converted to list items. If the first line already was a list item, any item
1818 marker will be removed from the list. Finally, even without an active
1819 region, a normal line will be converted into a list item.
1820 @kindex C-c *
1821 @item C-c *
1822 Turn a plain list item into a headline (so that it becomes a subheading at
1823 its location). @xref{Structure editing}, for a detailed explanation.
1824 @kindex C-c C-*
1825 @item C-c C-*
1826 Turn the whole plain list into a subtree of the current heading. Checkboxes
1827 (@pxref{Checkboxes}) will become TODO (resp. DONE) keywords when unchecked
1828 (resp. checked).
1829 @kindex S-@key{left}
1830 @kindex S-@key{right}
1831 @item S-left/right
1832 @vindex org-support-shift-select
1833 This command also cycles bullet styles when the cursor in on the bullet or
1834 anywhere in an item line, details depending on
1835 @code{org-support-shift-select}.
1836 @kindex C-c ^
1837 @cindex sorting, of plain list
1838 @item C-c ^
1839 Sort the plain list. You will be prompted for the sorting method:
1840 numerically, alphabetically, by time, by checked status for check lists,
1841 or by a custom function.
1842 @end table
1843
1844 @node Drawers, Blocks, Plain lists, Document Structure
1845 @section Drawers
1846 @cindex drawers
1847 @cindex #+DRAWERS
1848 @cindex visibility cycling, drawers
1849
1850 @vindex org-drawers
1851 @cindex org-insert-drawer
1852 @kindex C-c C-x d
1853 Sometimes you want to keep information associated with an entry, but you
1854 normally don't want to see it. For this, Org mode has @emph{drawers}.
1855 Drawers need to be configured with the option @code{org-drawers}@footnote{You
1856 can define additional drawers on a per-file basis with a line like
1857 @code{#+DRAWERS: HIDDEN STATE}}. Drawers look like this:
1858
1859 @example
1860 ** This is a headline
1861 Still outside the drawer
1862 :DRAWERNAME:
1863 This is inside the drawer.
1864 :END:
1865 After the drawer.
1866 @end example
1867
1868 You can interactively insert drawers at point by calling
1869 @code{org-insert-drawer}, which is bound to @key{C-c C-x d}. With an active
1870 region, this command will put the region inside the drawer. With a prefix
1871 argument, this command calls @code{org-insert-property-drawer} and add a
1872 property drawer right below the current headline. Completion over drawer
1873 keywords is also possible using @key{M-TAB}.
1874
1875 Visibility cycling (@pxref{Visibility cycling}) on the headline will hide and
1876 show the entry, but keep the drawer collapsed to a single line. In order to
1877 look inside the drawer, you need to move the cursor to the drawer line and
1878 press @key{TAB} there. Org mode uses the @code{PROPERTIES} drawer for
1879 storing properties (@pxref{Properties and Columns}), and you can also arrange
1880 for state change notes (@pxref{Tracking TODO state changes}) and clock times
1881 (@pxref{Clocking work time}) to be stored in a drawer @code{LOGBOOK}. If you
1882 want to store a quick note in the LOGBOOK drawer, in a similar way to state changes, use
1883
1884 @table @kbd
1885 @kindex C-c C-z
1886 @item C-c C-z
1887 Add a time-stamped note to the LOGBOOK drawer.
1888 @end table
1889
1890 @vindex org-export-with-drawers
1891 You can select the name of the drawers which should be exported with
1892 @code{org-export-with-drawers}. In that case, drawer contents will appear in
1893 export output. Property drawers are not affected by this variable and are
1894 never exported.
1895
1896 @node Blocks, Footnotes, Drawers, Document Structure
1897 @section Blocks
1898
1899 @vindex org-hide-block-startup
1900 @cindex blocks, folding
1901 Org mode uses begin...end blocks for various purposes from including source
1902 code examples (@pxref{Literal examples}) to capturing time logging
1903 information (@pxref{Clocking work time}). These blocks can be folded and
1904 unfolded by pressing TAB in the begin line. You can also get all blocks
1905 folded at startup by configuring the option @code{org-hide-block-startup}
1906 or on a per-file basis by using
1907
1908 @cindex @code{hideblocks}, STARTUP keyword
1909 @cindex @code{nohideblocks}, STARTUP keyword
1910 @example
1911 #+STARTUP: hideblocks
1912 #+STARTUP: nohideblocks
1913 @end example
1914
1915 @node Footnotes, Orgstruct mode, Blocks, Document Structure
1916 @section Footnotes
1917 @cindex footnotes
1918
1919 Org mode supports the creation of footnotes. In contrast to the
1920 @file{footnote.el} package, Org mode's footnotes are designed for work on
1921 a larger document, not only for one-off documents like emails.
1922
1923 A footnote is started by a footnote marker in square brackets in column 0, no
1924 indentation allowed. It ends at the next footnote definition, headline, or
1925 after two consecutive empty lines. The footnote reference is simply the
1926 marker in square brackets, inside text. For example:
1927
1928 @example
1929 The Org homepage[fn:1] now looks a lot better than it used to.
1930 ...
1931 [fn:1] The link is: http://orgmode.org
1932 @end example
1933
1934 Org mode extends the number-based syntax to @emph{named} footnotes and
1935 optional inline definition. Using plain numbers as markers (as
1936 @file{footnote.el} does) is supported for backward compatibility, but not
1937 encouraged because of possible conflicts with @LaTeX{} snippets (@pxref{Embedded
1938 @LaTeX{}}). Here are the valid references:
1939
1940 @table @code
1941 @item [1]
1942 A plain numeric footnote marker. Compatible with @file{footnote.el}, but not
1943 recommended because something like @samp{[1]} could easily be part of a code
1944 snippet.
1945 @item [fn:name]
1946 A named footnote reference, where @code{name} is a unique label word, or, for
1947 simplicity of automatic creation, a number.
1948 @item [fn:: This is the inline definition of this footnote]
1949 A @LaTeX{}-like anonymous footnote where the definition is given directly at the
1950 reference point.
1951 @item [fn:name: a definition]
1952 An inline definition of a footnote, which also specifies a name for the note.
1953 Since Org allows multiple references to the same note, you can then use
1954 @code{[fn:name]} to create additional references.
1955 @end table
1956
1957 @vindex org-footnote-auto-label
1958 Footnote labels can be created automatically, or you can create names yourself.
1959 This is handled by the variable @code{org-footnote-auto-label} and its
1960 corresponding @code{#+STARTUP} keywords. See the docstring of that variable
1961 for details.
1962
1963 @noindent The following command handles footnotes:
1964
1965 @table @kbd
1966 @kindex C-c C-x f
1967 @item C-c C-x f
1968 The footnote action command.
1969
1970 When the cursor is on a footnote reference, jump to the definition. When it
1971 is at a definition, jump to the (first) reference.
1972
1973 @vindex org-footnote-define-inline
1974 @vindex org-footnote-section
1975 @vindex org-footnote-auto-adjust
1976 Otherwise, create a new footnote. Depending on the option
1977 @code{org-footnote-define-inline}@footnote{The corresponding in-buffer
1978 setting is: @code{#+STARTUP: fninline} or @code{#+STARTUP: nofninline}}, the
1979 definition will be placed right into the text as part of the reference, or
1980 separately into the location determined by the option
1981 @code{org-footnote-section}.
1982
1983 When this command is called with a prefix argument, a menu of additional
1984 options is offered:
1985 @example
1986 s @r{Sort the footnote definitions by reference sequence. During editing,}
1987 @r{Org makes no effort to sort footnote definitions into a particular}
1988 @r{sequence. If you want them sorted, use this command, which will}
1989 @r{also move entries according to @code{org-footnote-section}. Automatic}
1990 @r{sorting after each insertion/deletion can be configured using the}
1991 @r{option @code{org-footnote-auto-adjust}.}
1992 r @r{Renumber the simple @code{fn:N} footnotes. Automatic renumbering}
1993 @r{after each insertion/deletion can be configured using the option}
1994 @r{@code{org-footnote-auto-adjust}.}
1995 S @r{Short for first @code{r}, then @code{s} action.}
1996 n @r{Normalize the footnotes by collecting all definitions (including}
1997 @r{inline definitions) into a special section, and then numbering them}
1998 @r{in sequence. The references will then also be numbers. This is}
1999 @r{meant to be the final step before finishing a document (e.g., sending}
2000 @r{off an email).}
2001 d @r{Delete the footnote at point, and all definitions of and references}
2002 @r{to it.}
2003 @end example
2004 Depending on the variable @code{org-footnote-auto-adjust}@footnote{the
2005 corresponding in-buffer options are @code{fnadjust} and @code{nofnadjust}.},
2006 renumbering and sorting footnotes can be automatic after each insertion or
2007 deletion.
2008
2009 @kindex C-c C-c
2010 @item C-c C-c
2011 If the cursor is on a footnote reference, jump to the definition. If it is a
2012 the definition, jump back to the reference. When called at a footnote
2013 location with a prefix argument, offer the same menu as @kbd{C-c C-x f}.
2014 @kindex C-c C-o
2015 @kindex mouse-1
2016 @kindex mouse-2
2017 @item C-c C-o @r{or} mouse-1/2
2018 Footnote labels are also links to the corresponding definition/reference, and
2019 you can use the usual commands to follow these links.
2020 @end table
2021
2022 @node Orgstruct mode, Org syntax, Footnotes, Document Structure
2023 @section The Orgstruct minor mode
2024 @cindex Orgstruct mode
2025 @cindex minor mode for structure editing
2026
2027 If you like the intuitive way the Org mode structure editing and list
2028 formatting works, you might want to use these commands in other modes like
2029 Text mode or Mail mode as well. The minor mode @code{orgstruct-mode} makes
2030 this possible. Toggle the mode with @kbd{M-x orgstruct-mode RET}, or
2031 turn it on by default, for example in Message mode, with one of:
2032
2033 @lisp
2034 (add-hook 'message-mode-hook 'turn-on-orgstruct)
2035 (add-hook 'message-mode-hook 'turn-on-orgstruct++)
2036 @end lisp
2037
2038 When this mode is active and the cursor is on a line that looks to Org like a
2039 headline or the first line of a list item, most structure editing commands
2040 will work, even if the same keys normally have different functionality in the
2041 major mode you are using. If the cursor is not in one of those special
2042 lines, Orgstruct mode lurks silently in the shadows.
2043
2044 When you use @code{orgstruct++-mode}, Org will also export indentation and
2045 autofill settings into that mode, and detect item context after the first
2046 line of an item.
2047
2048 @vindex orgstruct-heading-prefix-regexp
2049 You can also use Org structure editing to fold and unfold headlines in
2050 @emph{any} file, provided you defined @code{orgstruct-heading-prefix-regexp}:
2051 the regular expression must match the local prefix to use before Org's
2052 headlines. For example, if you set this variable to @code{";; "} in Emacs
2053 Lisp files, you will be able to fold and unfold headlines in Emacs Lisp
2054 commented lines. Some commands like @code{org-demote} are disabled when the
2055 prefix is set, but folding/unfolding will work correctly.
2056
2057 @node Org syntax, , Orgstruct mode, Document Structure
2058 @section Org syntax
2059 @cindex Org syntax
2060
2061 A reference document providing a formal description of Org's syntax is
2062 available as @uref{http://orgmode.org/worg/dev/org-syntax.html, a draft on
2063 Worg}, written and maintained by Nicolas Goaziou. It defines Org's core
2064 internal concepts such as @code{headlines}, @code{sections}, @code{affiliated
2065 keywords}, @code{(greater) elements} and @code{objects}. Each part of an Org
2066 file falls into one of the categories above.
2067
2068 To explore the abstract structure of an Org buffer, run this in a buffer:
2069
2070 @lisp
2071 M-: (org-element-parse-buffer) RET
2072 @end lisp
2073
2074 It will output a list containing the buffer's content represented as an
2075 abstract structure. The export engine relies on the information stored in
2076 this list. Most interactive commands (e.g., for structure editing) also
2077 rely on the syntactic meaning of the surrounding context.
2078
2079 @node Tables, Hyperlinks, Document Structure, Top
2080 @chapter Tables
2081 @cindex tables
2082 @cindex editing tables
2083
2084 Org comes with a fast and intuitive table editor. Spreadsheet-like
2085 calculations are supported using the Emacs @file{calc} package
2086 (@pxref{Top, Calc, , calc, Gnu Emacs Calculator Manual}).
2087
2088 @menu
2089 * Built-in table editor:: Simple tables
2090 * Column width and alignment:: Overrule the automatic settings
2091 * Column groups:: Grouping to trigger vertical lines
2092 * Orgtbl mode:: The table editor as minor mode
2093 * The spreadsheet:: The table editor has spreadsheet capabilities
2094 * Org-Plot:: Plotting from org tables
2095 @end menu
2096
2097 @node Built-in table editor, Column width and alignment, Tables, Tables
2098 @section The built-in table editor
2099 @cindex table editor, built-in
2100
2101 Org makes it easy to format tables in plain ASCII@. Any line with @samp{|} as
2102 the first non-whitespace character is considered part of a table. @samp{|}
2103 is also the column separator@footnote{To insert a vertical bar into a table
2104 field, use @code{\vert} or, inside a word @code{abc\vert@{@}def}.}. A table
2105 might look like this:
2106
2107 @example
2108 | Name | Phone | Age |
2109 |-------+-------+-----|
2110 | Peter | 1234 | 17 |
2111 | Anna | 4321 | 25 |
2112 @end example
2113
2114 A table is re-aligned automatically each time you press @key{TAB} or
2115 @key{RET} or @kbd{C-c C-c} inside the table. @key{TAB} also moves to
2116 the next field (@key{RET} to the next row) and creates new table rows
2117 at the end of the table or before horizontal lines. The indentation
2118 of the table is set by the first line. Any line starting with
2119 @samp{|-} is considered as a horizontal separator line and will be
2120 expanded on the next re-align to span the whole table width. So, to
2121 create the above table, you would only type
2122
2123 @example
2124 |Name|Phone|Age|
2125 |-
2126 @end example
2127
2128 @noindent and then press @key{TAB} to align the table and start filling in
2129 fields. Even faster would be to type @code{|Name|Phone|Age} followed by
2130 @kbd{C-c @key{RET}}.
2131
2132 @vindex org-enable-table-editor
2133 @vindex org-table-auto-blank-field
2134 When typing text into a field, Org treats @key{DEL},
2135 @key{Backspace}, and all character keys in a special way, so that
2136 inserting and deleting avoids shifting other fields. Also, when
2137 typing @emph{immediately after the cursor was moved into a new field
2138 with @kbd{@key{TAB}}, @kbd{S-@key{TAB}} or @kbd{@key{RET}}}, the
2139 field is automatically made blank. If this behavior is too
2140 unpredictable for you, configure the options
2141 @code{org-enable-table-editor} and @code{org-table-auto-blank-field}.
2142
2143 @table @kbd
2144 @tsubheading{Creation and conversion}
2145 @orgcmd{C-c |,org-table-create-or-convert-from-region}
2146 Convert the active region to table. If every line contains at least one
2147 TAB character, the function assumes that the material is tab separated.
2148 If every line contains a comma, comma-separated values (CSV) are assumed.
2149 If not, lines are split at whitespace into fields. You can use a prefix
2150 argument to force a specific separator: @kbd{C-u} forces CSV, @kbd{C-u
2151 C-u} forces TAB, and a numeric argument N indicates that at least N
2152 consecutive spaces, or alternatively a TAB will be the separator.
2153 @*
2154 If there is no active region, this command creates an empty Org
2155 table. But it is easier just to start typing, like
2156 @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
2157
2158 @tsubheading{Re-aligning and field motion}
2159 @orgcmd{C-c C-c,org-table-align}
2160 Re-align the table and don't move to another field.
2161 @c
2162 @orgcmd{<TAB>,org-table-next-field}
2163 Re-align the table, move to the next field. Creates a new row if
2164 necessary.
2165 @c
2166 @orgcmd{S-@key{TAB},org-table-previous-field}
2167 Re-align, move to previous field.
2168 @c
2169 @orgcmd{@key{RET},org-table-next-row}
2170 Re-align the table and move down to next row. Creates a new row if
2171 necessary. At the beginning or end of a line, @key{RET} still does
2172 NEWLINE, so it can be used to split a table.
2173 @c
2174 @orgcmd{M-a,org-table-beginning-of-field}
2175 Move to beginning of the current table field, or on to the previous field.
2176 @orgcmd{M-e,org-table-end-of-field}
2177 Move to end of the current table field, or on to the next field.
2178
2179 @tsubheading{Column and row editing}
2180 @orgcmdkkcc{M-@key{left},M-@key{right},org-table-move-column-left,org-table-move-column-right}
2181 Move the current column left/right.
2182 @c
2183 @orgcmd{M-S-@key{left},org-table-delete-column}
2184 Kill the current column.
2185 @c
2186 @orgcmd{M-S-@key{right},org-table-insert-column}
2187 Insert a new column to the left of the cursor position.
2188 @c
2189 @orgcmdkkcc{M-@key{up},M-@key{down},org-table-move-row-up,org-table-move-row-down}
2190 Move the current row up/down.
2191 @c
2192 @orgcmd{M-S-@key{up},org-table-kill-row}
2193 Kill the current row or horizontal line.
2194 @c
2195 @orgcmd{M-S-@key{down},org-table-insert-row}
2196 Insert a new row above the current row. With a prefix argument, the line is
2197 created below the current one.
2198 @c
2199 @orgcmd{C-c -,org-table-insert-hline}
2200 Insert a horizontal line below current row. With a prefix argument, the line
2201 is created above the current line.
2202 @c
2203 @orgcmd{C-c @key{RET},org-table-hline-and-move}
2204 Insert a horizontal line below current row, and move the cursor into the row
2205 below that line.
2206 @c
2207 @orgcmd{C-c ^,org-table-sort-lines}
2208 Sort the table lines in the region. The position of point indicates the
2209 column to be used for sorting, and the range of lines is the range
2210 between the nearest horizontal separator lines, or the entire table. If
2211 point is before the first column, you will be prompted for the sorting
2212 column. If there is an active region, the mark specifies the first line
2213 and the sorting column, while point should be in the last line to be
2214 included into the sorting. The command prompts for the sorting type
2215 (alphabetically, numerically, or by time). When called with a prefix
2216 argument, alphabetic sorting will be case-sensitive.
2217
2218 @tsubheading{Regions}
2219 @orgcmd{C-c C-x M-w,org-table-copy-region}
2220 Copy a rectangular region from a table to a special clipboard. Point and
2221 mark determine edge fields of the rectangle. If there is no active region,
2222 copy just the current field. The process ignores horizontal separator lines.
2223 @c
2224 @orgcmd{C-c C-x C-w,org-table-cut-region}
2225 Copy a rectangular region from a table to a special clipboard, and
2226 blank all fields in the rectangle. So this is the ``cut'' operation.
2227 @c
2228 @orgcmd{C-c C-x C-y,org-table-paste-rectangle}
2229 Paste a rectangular region into a table.
2230 The upper left corner ends up in the current field. All involved fields
2231 will be overwritten. If the rectangle does not fit into the present table,
2232 the table is enlarged as needed. The process ignores horizontal separator
2233 lines.
2234 @c
2235 @orgcmd{M-@key{RET},org-table-wrap-region}
2236 Split the current field at the cursor position and move the rest to the line
2237 below. If there is an active region, and both point and mark are in the same
2238 column, the text in the column is wrapped to minimum width for the given
2239 number of lines. A numeric prefix argument may be used to change the number
2240 of desired lines. If there is no region, but you specify a prefix argument,
2241 the current field is made blank, and the content is appended to the field
2242 above.
2243
2244 @tsubheading{Calculations}
2245 @cindex formula, in tables
2246 @cindex calculations, in tables
2247 @cindex region, active
2248 @cindex active region
2249 @cindex transient mark mode
2250 @orgcmd{C-c +,org-table-sum}
2251 Sum the numbers in the current column, or in the rectangle defined by
2252 the active region. The result is shown in the echo area and can
2253 be inserted with @kbd{C-y}.
2254 @c
2255 @orgcmd{S-@key{RET},org-table-copy-down}
2256 @vindex org-table-copy-increment
2257 When current field is empty, copy from first non-empty field above. When not
2258 empty, copy current field down to next row and move cursor along with it.
2259 Depending on the option @code{org-table-copy-increment}, integer field
2260 values will be incremented during copy. Integers that are too large will not
2261 be incremented. Also, a @code{0} prefix argument temporarily disables the
2262 increment. This key is also used by shift-selection and related modes
2263 (@pxref{Conflicts}).
2264
2265 @tsubheading{Miscellaneous}
2266 @orgcmd{C-c `,org-table-edit-field}
2267 Edit the current field in a separate window. This is useful for fields that
2268 are not fully visible (@pxref{Column width and alignment}). When called with
2269 a @kbd{C-u} prefix, just make the full field visible, so that it can be
2270 edited in place. When called with two @kbd{C-u} prefixes, make the editor
2271 window follow the cursor through the table and always show the current
2272 field. The follow mode exits automatically when the cursor leaves the table,
2273 or when you repeat this command with @kbd{C-u C-u C-c `}.
2274 @c
2275 @item M-x org-table-import RET
2276 Import a file as a table. The table should be TAB or whitespace
2277 separated. Use, for example, to import a spreadsheet table or data
2278 from a database, because these programs generally can write
2279 TAB-separated text files. This command works by inserting the file into
2280 the buffer and then converting the region to a table. Any prefix
2281 argument is passed on to the converter, which uses it to determine the
2282 separator.
2283 @orgcmd{C-c |,org-table-create-or-convert-from-region}
2284 Tables can also be imported by pasting tabular text into the Org
2285 buffer, selecting the pasted text with @kbd{C-x C-x} and then using the
2286 @kbd{C-c |} command (see above under @i{Creation and conversion}).
2287 @c
2288 @item M-x org-table-export RET
2289 @findex org-table-export
2290 @vindex org-table-export-default-format
2291 Export the table, by default as a TAB-separated file. Use for data
2292 exchange with, for example, spreadsheet or database programs. The format
2293 used to export the file can be configured in the option
2294 @code{org-table-export-default-format}. You may also use properties
2295 @code{TABLE_EXPORT_FILE} and @code{TABLE_EXPORT_FORMAT} to specify the file
2296 name and the format for table export in a subtree. Org supports quite
2297 general formats for exported tables. The exporter format is the same as the
2298 format used by Orgtbl radio tables, see @ref{Translator functions}, for a
2299 detailed description.
2300 @end table
2301
2302 If you don't like the automatic table editor because it gets in your
2303 way on lines which you would like to start with @samp{|}, you can turn
2304 it off with
2305
2306 @lisp
2307 (setq org-enable-table-editor nil)
2308 @end lisp
2309
2310 @noindent Then the only table command that still works is
2311 @kbd{C-c C-c} to do a manual re-align.
2312
2313 @node Column width and alignment, Column groups, Built-in table editor, Tables
2314 @section Column width and alignment
2315 @cindex narrow columns in tables
2316 @cindex alignment in tables
2317
2318 The width of columns is automatically determined by the table editor. And
2319 also the alignment of a column is determined automatically from the fraction
2320 of number-like versus non-number fields in the column.
2321
2322 Sometimes a single field or a few fields need to carry more text, leading to
2323 inconveniently wide columns. Or maybe you want to make a table with several
2324 columns having a fixed width, regardless of content. To set@footnote{This
2325 feature does not work on XEmacs.} the width of a column, one field anywhere
2326 in the column may contain just the string @samp{<N>} where @samp{N} is an
2327 integer specifying the width of the column in characters. The next re-align
2328 will then set the width of this column to this value.
2329
2330 @example
2331 @group
2332 |---+------------------------------| |---+--------|
2333 | | | | | <6> |
2334 | 1 | one | | 1 | one |
2335 | 2 | two | ----\ | 2 | two |
2336 | 3 | This is a long chunk of text | ----/ | 3 | This=> |
2337 | 4 | four | | 4 | four |
2338 |---+------------------------------| |---+--------|
2339 @end group
2340 @end example
2341
2342 @noindent
2343 Fields that are wider become clipped and end in the string @samp{=>}.
2344 Note that the full text is still in the buffer but is hidden.
2345 To see the full text, hold the mouse over the field---a tool-tip window
2346 will show the full content. To edit such a field, use the command
2347 @kbd{C-c `} (that is @kbd{C-c} followed by the backquote). This will
2348 open a new window with the full field. Edit it and finish with @kbd{C-c
2349 C-c}.
2350
2351 @vindex org-startup-align-all-tables
2352 When visiting a file containing a table with narrowed columns, the
2353 necessary character hiding has not yet happened, and the table needs to
2354 be aligned before it looks nice. Setting the option
2355 @code{org-startup-align-all-tables} will realign all tables in a file
2356 upon visiting, but also slow down startup. You can also set this option
2357 on a per-file basis with:
2358
2359 @example
2360 #+STARTUP: align
2361 #+STARTUP: noalign
2362 @end example
2363
2364 If you would like to overrule the automatic alignment of number-rich columns
2365 to the right and of string-rich column to the left, you can use @samp{<r>},
2366 @samp{<c>}@footnote{Centering does not work inside Emacs, but it does have an
2367 effect when exporting to HTML.} or @samp{<l>} in a similar fashion. You may
2368 also combine alignment and field width like this: @samp{<r10>}.
2369
2370 Lines which only contain these formatting cookies will be removed
2371 automatically when exporting the document.
2372
2373 @node Column groups, Orgtbl mode, Column width and alignment, Tables
2374 @section Column groups
2375 @cindex grouping columns in tables
2376
2377 When Org exports tables, it does so by default without vertical
2378 lines because that is visually more satisfying in general. Occasionally
2379 however, vertical lines can be useful to structure a table into groups
2380 of columns, much like horizontal lines can do for groups of rows. In
2381 order to specify column groups, you can use a special row where the
2382 first field contains only @samp{/}. The further fields can either
2383 contain @samp{<} to indicate that this column should start a group,
2384 @samp{>} to indicate the end of a column, or @samp{<>} (no space between @samp{<}
2385 and @samp{>}) to make a column
2386 a group of its own. Boundaries between column groups will upon export be
2387 marked with vertical lines. Here is an example:
2388
2389 @example
2390 | N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
2391 |---+-----+-----+-----+---------+------------|
2392 | / | < | | > | < | > |
2393 | 1 | 1 | 1 | 1 | 1 | 1 |
2394 | 2 | 4 | 8 | 16 | 1.4142 | 1.1892 |
2395 | 3 | 9 | 27 | 81 | 1.7321 | 1.3161 |
2396 |---+-----+-----+-----+---------+------------|
2397 #+TBLFM: $2=$1^2::$3=$1^3::$4=$1^4::$5=sqrt($1)::$6=sqrt(sqrt(($1)))
2398 @end example
2399
2400 It is also sufficient to just insert the column group starters after
2401 every vertical line you would like to have:
2402
2403 @example
2404 | N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
2405 |----+-----+-----+-----+---------+------------|
2406 | / | < | | | < | |
2407 @end example
2408
2409 @node Orgtbl mode, The spreadsheet, Column groups, Tables
2410 @section The Orgtbl minor mode
2411 @cindex Orgtbl mode
2412 @cindex minor mode for tables
2413
2414 If you like the intuitive way the Org table editor works, you
2415 might also want to use it in other modes like Text mode or Mail mode.
2416 The minor mode Orgtbl mode makes this possible. You can always toggle
2417 the mode with @kbd{M-x orgtbl-mode RET}. To turn it on by default, for
2418 example in Message mode, use
2419
2420 @lisp
2421 (add-hook 'message-mode-hook 'turn-on-orgtbl)
2422 @end lisp
2423
2424 Furthermore, with some special setup, it is possible to maintain tables
2425 in arbitrary syntax with Orgtbl mode. For example, it is possible to
2426 construct @LaTeX{} tables with the underlying ease and power of
2427 Orgtbl mode, including spreadsheet capabilities. For details, see
2428 @ref{Tables in arbitrary syntax}.
2429
2430 @node The spreadsheet, Org-Plot, Orgtbl mode, Tables
2431 @section The spreadsheet
2432 @cindex calculations, in tables
2433 @cindex spreadsheet capabilities
2434 @cindex @file{calc} package
2435
2436 The table editor makes use of the Emacs @file{calc} package to implement
2437 spreadsheet-like capabilities. It can also evaluate Emacs Lisp forms to
2438 derive fields from other fields. While fully featured, Org's implementation
2439 is not identical to other spreadsheets. For example, Org knows the concept
2440 of a @emph{column formula} that will be applied to all non-header fields in a
2441 column without having to copy the formula to each relevant field. There is
2442 also a formula debugger, and a formula editor with features for highlighting
2443 fields in the table corresponding to the references at the point in the
2444 formula, moving these references by arrow keys
2445
2446 @menu
2447 * References:: How to refer to another field or range
2448 * Formula syntax for Calc:: Using Calc to compute stuff
2449 * Formula syntax for Lisp:: Writing formulas in Emacs Lisp
2450 * Durations and time values:: How to compute durations and time values
2451 * Field and range formulas:: Formula for specific (ranges of) fields
2452 * Column formulas:: Formulas valid for an entire column
2453 * Lookup functions:: Lookup functions for searching tables
2454 * Editing and debugging formulas:: Fixing formulas
2455 * Updating the table:: Recomputing all dependent fields
2456 * Advanced features:: Field and column names, parameters and automatic recalc
2457 @end menu
2458
2459 @node References, Formula syntax for Calc, The spreadsheet, The spreadsheet
2460 @subsection References
2461 @cindex references
2462
2463 To compute fields in the table from other fields, formulas must
2464 reference other fields or ranges. In Org, fields can be referenced
2465 by name, by absolute coordinates, and by relative coordinates. To find
2466 out what the coordinates of a field are, press @kbd{C-c ?} in that
2467 field, or press @kbd{C-c @}} to toggle the display of a grid.
2468
2469 @subsubheading Field references
2470 @cindex field references
2471 @cindex references, to fields
2472
2473 Formulas can reference the value of another field in two ways. Like in
2474 any other spreadsheet, you may reference fields with a letter/number
2475 combination like @code{B3}, meaning the 2nd field in the 3rd row.
2476 @vindex org-table-use-standard-references
2477 However, Org prefers@footnote{Org will understand references typed by the
2478 user as @samp{B4}, but it will not use this syntax when offering a formula
2479 for editing. You can customize this behavior using the option
2480 @code{org-table-use-standard-references}.} to use another, more general
2481 representation that looks like this:
2482 @example
2483 @@@var{row}$@var{column}
2484 @end example
2485
2486 Column specifications can be absolute like @code{$1},
2487 @code{$2},...@code{$@var{N}}, or relative to the current column (i.e., the
2488 column of the field which is being computed) like @code{$+1} or @code{$-2}.
2489 @code{$<} and @code{$>} are immutable references to the first and last
2490 column, respectively, and you can use @code{$>>>} to indicate the third
2491 column from the right.
2492
2493 The row specification only counts data lines and ignores horizontal separator
2494 lines (hlines). Like with columns, you can use absolute row numbers
2495 @code{@@1}, @code{@@2},...@code{@@@var{N}}, and row numbers relative to the
2496 current row like @code{@@+3} or @code{@@-1}. @code{@@<} and @code{@@>} are
2497 immutable references the first and last@footnote{For backward compatibility
2498 you can also use special names like @code{$LR5} and @code{$LR12} to refer in
2499 a stable way to the 5th and 12th field in the last row of the table.
2500 However, this syntax is deprecated, it should not be used for new documents.
2501 Use @code{@@>$} instead.} row in the table, respectively. You may also
2502 specify the row relative to one of the hlines: @code{@@I} refers to the first
2503 hline, @code{@@II} to the second, etc. @code{@@-I} refers to the first such
2504 line above the current line, @code{@@+I} to the first such line below the
2505 current line. You can also write @code{@@III+2} which is the second data line
2506 after the third hline in the table.
2507
2508 @code{@@0} and @code{$0} refer to the current row and column, respectively,
2509 i.e., to the row/column for the field being computed. Also, if you omit
2510 either the column or the row part of the reference, the current row/column is
2511 implied.
2512
2513 Org's references with @emph{unsigned} numbers are fixed references
2514 in the sense that if you use the same reference in the formula for two
2515 different fields, the same field will be referenced each time.
2516 Org's references with @emph{signed} numbers are floating
2517 references because the same reference operator can reference different
2518 fields depending on the field being calculated by the formula.
2519
2520 Here are a few examples:
2521
2522 @example
2523 @@2$3 @r{2nd row, 3rd column (same as @code{C2})}
2524 $5 @r{column 5 in the current row (same as @code{E&})}
2525 @@2 @r{current column, row 2}
2526 @@-1$-3 @r{the field one row up, three columns to the left}
2527 @@-I$2 @r{field just under hline above current row, column 2}
2528 @@>$5 @r{field in the last row, in column 5}
2529 @end example
2530
2531 @subsubheading Range references
2532 @cindex range references
2533 @cindex references, to ranges
2534
2535 You may reference a rectangular range of fields by specifying two field
2536 references connected by two dots @samp{..}. If both fields are in the
2537 current row, you may simply use @samp{$2..$7}, but if at least one field
2538 is in a different row, you need to use the general @code{@@row$column}
2539 format at least for the first field (i.e the reference must start with
2540 @samp{@@} in order to be interpreted correctly). Examples:
2541
2542 @example
2543 $1..$3 @r{first three fields in the current row}
2544 $P..$Q @r{range, using column names (see under Advanced)}
2545 $<<<..$>> @r{start in third column, continue to the one but last}
2546 @@2$1..@@4$3 @r{6 fields between these two fields (same as @code{A2..C4})}
2547 @@-1$-2..@@-1 @r{3 fields in the row above, starting from 2 columns on the left}
2548 @@I..II @r{between first and second hline, short for @code{@@I..@@II}}
2549 @end example
2550
2551 @noindent Range references return a vector of values that can be fed
2552 into Calc vector functions. Empty fields in ranges are normally suppressed,
2553 so that the vector contains only the non-empty fields. For other options
2554 with the mode switches @samp{E}, @samp{N} and examples @pxref{Formula syntax
2555 for Calc}.
2556
2557 @subsubheading Field coordinates in formulas
2558 @cindex field coordinates
2559 @cindex coordinates, of field
2560 @cindex row, of field coordinates
2561 @cindex column, of field coordinates
2562
2563 For Calc formulas and Lisp formulas @code{@@#} and @code{$#} can be used to
2564 get the row or column number of the field where the formula result goes.
2565 The traditional Lisp formula equivalents are @code{org-table-current-dline}
2566 and @code{org-table-current-column}. Examples:
2567
2568 @example
2569 if(@@# % 2, $#, string("")) @r{column number on odd lines only}
2570 $3 = remote(FOO, @@@@#$2) @r{copy column 2 from table FOO into}
2571 @r{column 3 of the current table}
2572 @end example
2573
2574 @noindent For the second example, table FOO must have at least as many rows
2575 as the current table. Note that this is inefficient@footnote{The computation time scales as
2576 O(N^2) because table FOO is parsed for each field to be copied.} for large
2577 number of rows.
2578
2579 @subsubheading Named references
2580 @cindex named references
2581 @cindex references, named
2582 @cindex name, of column or field
2583 @cindex constants, in calculations
2584 @cindex #+CONSTANTS
2585
2586 @vindex org-table-formula-constants
2587 @samp{$name} is interpreted as the name of a column, parameter or
2588 constant. Constants are defined globally through the option
2589 @code{org-table-formula-constants}, and locally (for the file) through a
2590 line like
2591
2592 @example
2593 #+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6
2594 @end example
2595
2596 @noindent
2597 @vindex constants-unit-system
2598 @pindex constants.el
2599 Also properties (@pxref{Properties and Columns}) can be used as
2600 constants in table formulas: for a property @samp{:Xyz:} use the name
2601 @samp{$PROP_Xyz}, and the property will be searched in the current
2602 outline entry and in the hierarchy above it. If you have the
2603 @file{constants.el} package, it will also be used to resolve constants,
2604 including natural constants like @samp{$h} for Planck's constant, and
2605 units like @samp{$km} for kilometers@footnote{@file{constants.el} can
2606 supply the values of constants in two different unit systems, @code{SI}
2607 and @code{cgs}. Which one is used depends on the value of the variable
2608 @code{constants-unit-system}. You can use the @code{#+STARTUP} options
2609 @code{constSI} and @code{constcgs} to set this value for the current
2610 buffer.}. Column names and parameters can be specified in special table
2611 lines. These are described below, see @ref{Advanced features}. All
2612 names must start with a letter, and further consist of letters and
2613 numbers.
2614
2615 @subsubheading Remote references
2616 @cindex remote references
2617 @cindex references, remote
2618 @cindex references, to a different table
2619 @cindex name, of column or field
2620 @cindex constants, in calculations
2621 @cindex #+NAME, for table
2622
2623 You may also reference constants, fields and ranges from a different table,
2624 either in the current file or even in a different file. The syntax is
2625
2626 @example
2627 remote(NAME-OR-ID,REF)
2628 @end example
2629
2630 @noindent
2631 where NAME can be the name of a table in the current file as set by a
2632 @code{#+NAME: Name} line before the table. It can also be the ID of an
2633 entry, even in a different file, and the reference then refers to the first
2634 table in that entry. REF is an absolute field or range reference as
2635 described above for example @code{@@3$3} or @code{$somename}, valid in the
2636 referenced table.
2637
2638 @node Formula syntax for Calc, Formula syntax for Lisp, References, The spreadsheet
2639 @subsection Formula syntax for Calc
2640 @cindex formula syntax, Calc
2641 @cindex syntax, of formulas
2642
2643 A formula can be any algebraic expression understood by the Emacs @file{Calc}
2644 package. Note that @file{calc} has the non-standard convention that @samp{/}
2645 has lower precedence than @samp{*}, so that @samp{a/b*c} is interpreted as
2646 @samp{a/(b*c)}. Before evaluation by @code{calc-eval} (@pxref{Calling Calc
2647 from Your Programs, calc-eval, Calling Calc from Your Lisp Programs, calc,
2648 GNU Emacs Calc Manual}), variable substitution takes place according to the
2649 rules described above.
2650 @cindex vectors, in table calculations
2651 The range vectors can be directly fed into the Calc vector functions
2652 like @samp{vmean} and @samp{vsum}.
2653
2654 @cindex format specifier
2655 @cindex mode, for @file{calc}
2656 @vindex org-calc-default-modes
2657 A formula can contain an optional mode string after a semicolon. This
2658 string consists of flags to influence Calc and other modes during
2659 execution. By default, Org uses the standard Calc modes (precision
2660 12, angular units degrees, fraction and symbolic modes off). The display
2661 format, however, has been changed to @code{(float 8)} to keep tables
2662 compact. The default settings can be configured using the option
2663 @code{org-calc-default-modes}.
2664
2665 @noindent List of modes:
2666
2667 @table @asis
2668 @item @code{p20}
2669 Set the internal Calc calculation precision to 20 digits.
2670 @item @code{n3}, @code{s3}, @code{e2}, @code{f4}
2671 Normal, scientific, engineering or fixed format of the result of Calc passed
2672 back to Org. Calc formatting is unlimited in precision as long as the Calc
2673 calculation precision is greater.
2674 @item @code{D}, @code{R}
2675 Degree and radian angle modes of Calc.
2676 @item @code{F}, @code{S}
2677 Fraction and symbolic modes of Calc.
2678 @item @code{T}, @code{t}
2679 Duration computations in Calc or Lisp, @pxref{Durations and time values}.
2680 @item @code{E}
2681 If and how to consider empty fields. Without @samp{E} empty fields in range
2682 references are suppressed so that the Calc vector or Lisp list contains only
2683 the non-empty fields. With @samp{E} the empty fields are kept. For empty
2684 fields in ranges or empty field references the value @samp{nan} (not a
2685 number) is used in Calc formulas and the empty string is used for Lisp
2686 formulas. Add @samp{N} to use 0 instead for both formula types. For the
2687 value of a field the mode @samp{N} has higher precedence than @samp{E}.
2688 @item @code{N}
2689 Interpret all fields as numbers, use 0 for non-numbers. See the next section
2690 to see how this is essential for computations with Lisp formulas. In Calc
2691 formulas it is used only occasionally because there number strings are
2692 already interpreted as numbers without @samp{N}.
2693 @item @code{L}
2694 Literal, for Lisp formulas only. See the next section.
2695 @end table
2696
2697 @noindent
2698 Unless you use large integer numbers or high-precision-calculation and
2699 -display for floating point numbers you may alternatively provide a
2700 @samp{printf} format specifier to reformat the Calc result after it has been
2701 passed back to Org instead of letting Calc already do the
2702 formatting@footnote{The @samp{printf} reformatting is limited in precision
2703 because the value passed to it is converted into an @samp{integer} or
2704 @samp{double}. The @samp{integer} is limited in size by truncating the
2705 signed value to 32 bits. The @samp{double} is limited in precision to 64
2706 bits overall which leaves approximately 16 significant decimal digits.}. A
2707 few examples:
2708
2709 @example
2710 $1+$2 @r{Sum of first and second field}
2711 $1+$2;%.2f @r{Same, format result to two decimals}
2712 exp($2)+exp($1) @r{Math functions can be used}
2713 $0;%.1f @r{Reformat current cell to 1 decimal}
2714 ($3-32)*5/9 @r{Degrees F -> C conversion}
2715 $c/$1/$cm @r{Hz -> cm conversion, using @file{constants.el}}
2716 tan($1);Dp3s1 @r{Compute in degrees, precision 3, display SCI 1}
2717 sin($1);Dp3%.1e @r{Same, but use printf specifier for display}
2718 taylor($3,x=7,2) @r{Taylor series of $3, at x=7, second degree}
2719 @end example
2720
2721 Calc also contains a complete set of logical operations, (@pxref{Logical
2722 Operations, , Logical Operations, calc, GNU Emacs Calc Manual}). For example
2723
2724 @table @code
2725 @item if($1 < 20, teen, string(""))
2726 "teen" if age $1 is less than 20, else the Org table result field is set to
2727 empty with the empty string.
2728 @item if("$1" == "nan" || "$2" == "nan", string(""), $1 + $2); E
2729 Sum of the first two columns. When at least one of the input fields is empty
2730 the Org table result field is set to empty.
2731 @item if(typeof(vmean($1..$7)) == 12, string(""), vmean($1..$7); E
2732 Mean value of a range unless there is any empty field. Every field in the
2733 range that is empty is replaced by @samp{nan} which lets @samp{vmean} result
2734 in @samp{nan}. Then @samp{typeof == 12} detects the @samp{nan} from
2735 @samp{vmean} and the Org table result field is set to empty. Use this when
2736 the sample set is expected to never have missing values.
2737 @item if("$1..$7" == "[]", string(""), vmean($1..$7))
2738 Mean value of a range with empty fields skipped. Every field in the range
2739 that is empty is skipped. When all fields in the range are empty the mean
2740 value is not defined and the Org table result field is set to empty. Use
2741 this when the sample set can have a variable size.
2742 @item vmean($1..$7); EN
2743 To complete the example before: Mean value of a range with empty fields
2744 counting as samples with value 0. Use this only when incomplete sample sets
2745 should be padded with 0 to the full size.
2746 @end table
2747
2748 You can add your own Calc functions defined in Emacs Lisp with @code{defmath}
2749 and use them in formula syntax for Calc.
2750
2751 @node Formula syntax for Lisp, Durations and time values, Formula syntax for Calc, The spreadsheet
2752 @subsection Emacs Lisp forms as formulas
2753 @cindex Lisp forms, as table formulas
2754
2755 It is also possible to write a formula in Emacs Lisp. This can be useful
2756 for string manipulation and control structures, if Calc's functionality is
2757 not enough.
2758
2759 If a formula starts with a single-quote followed by an opening parenthesis,
2760 then it is evaluated as a Lisp form. The evaluation should return either a
2761 string or a number. Just as with @file{calc} formulas, you can specify modes
2762 and a printf format after a semicolon.
2763
2764 With Emacs Lisp forms, you need to be conscious about the way field
2765 references are interpolated into the form. By default, a reference will be
2766 interpolated as a Lisp string (in double-quotes) containing the field. If
2767 you provide the @samp{N} mode switch, all referenced elements will be numbers
2768 (non-number fields will be zero) and interpolated as Lisp numbers, without
2769 quotes. If you provide the @samp{L} flag, all fields will be interpolated
2770 literally, without quotes. I.e., if you want a reference to be interpreted
2771 as a string by the Lisp form, enclose the reference operator itself in
2772 double-quotes, like @code{"$3"}. Ranges are inserted as space-separated
2773 fields, so you can embed them in list or vector syntax.
2774
2775 Here are a few examples---note how the @samp{N} mode is used when we do
2776 computations in Lisp:
2777
2778 @table @code
2779 @item '(concat (substring $1 1 2) (substring $1 0 1) (substring $1 2))
2780 Swap the first two characters of the content of column 1.
2781 @item '(+ $1 $2);N
2782 Add columns 1 and 2, equivalent to Calc's @code{$1+$2}.
2783 @item '(apply '+ '($1..$4));N
2784 Compute the sum of columns 1 to 4, like Calc's @code{vsum($1..$4)}.
2785 @end table
2786
2787 @node Durations and time values, Field and range formulas, Formula syntax for Lisp, The spreadsheet
2788 @subsection Durations and time values
2789 @cindex Duration, computing
2790 @cindex Time, computing
2791 @vindex org-table-duration-custom-format
2792
2793 If you want to compute time values use the @code{T} flag, either in Calc
2794 formulas or Elisp formulas:
2795
2796 @example
2797 @group
2798 | Task 1 | Task 2 | Total |
2799 |---------+----------+----------|
2800 | 2:12 | 1:47 | 03:59:00 |
2801 | 3:02:20 | -2:07:00 | 0.92 |
2802 #+TBLFM: @@2$3=$1+$2;T::@@3$3=$1+$2;t
2803 @end group
2804 @end example
2805
2806 Input duration values must be of the form @code{[HH:MM[:SS]}, where seconds
2807 are optional. With the @code{T} flag, computed durations will be displayed
2808 as @code{HH:MM:SS} (see the first formula above). With the @code{t} flag,
2809 computed durations will be displayed according to the value of the option
2810 @code{org-table-duration-custom-format}, which defaults to @code{'hours} and
2811 will display the result as a fraction of hours (see the second formula in the
2812 example above).
2813
2814 Negative duration values can be manipulated as well, and integers will be
2815 considered as seconds in addition and subtraction.
2816
2817 @node Field and range formulas, Column formulas, Durations and time values, The spreadsheet
2818 @subsection Field and range formulas
2819 @cindex field formula
2820 @cindex range formula
2821 @cindex formula, for individual table field
2822 @cindex formula, for range of fields
2823
2824 To assign a formula to a particular field, type it directly into the field,
2825 preceded by @samp{:=}, for example @samp{:=vsum(@@II..III)}. When you press
2826 @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the field,
2827 the formula will be stored as the formula for this field, evaluated, and the
2828 current field will be replaced with the result.
2829
2830 @cindex #+TBLFM
2831 Formulas are stored in a special line starting with @samp{#+TBLFM:} directly
2832 below the table. If you type the equation in the 4th field of the 3rd data
2833 line in the table, the formula will look like @samp{@@3$4=$1+$2}. When
2834 inserting/deleting/swapping column and rows with the appropriate commands,
2835 @i{absolute references} (but not relative ones) in stored formulas are
2836 modified in order to still reference the same field. To avoid this from
2837 happening, in particular in range references, anchor ranges at the table
2838 borders (using @code{@@<}, @code{@@>}, @code{$<}, @code{$>}), or at hlines
2839 using the @code{@@I} notation. Automatic adaptation of field references does
2840 of course not happen if you edit the table structure with normal editing
2841 commands---then you must fix the equations yourself.
2842
2843 Instead of typing an equation into the field, you may also use the following
2844 command
2845
2846 @table @kbd
2847 @orgcmd{C-u C-c =,org-table-eval-formula}
2848 Install a new formula for the current field. The command prompts for a
2849 formula with default taken from the @samp{#+TBLFM:} line, applies
2850 it to the current field, and stores it.
2851 @end table
2852
2853 The left-hand side of a formula can also be a special expression in order to
2854 assign the formula to a number of different fields. There is no keyboard
2855 shortcut to enter such range formulas. To add them, use the formula editor
2856 (@pxref{Editing and debugging formulas}) or edit the @code{#+TBLFM:} line
2857 directly.
2858
2859 @table @code
2860 @item $2=
2861 Column formula, valid for the entire column. This is so common that Org
2862 treats these formulas in a special way, see @ref{Column formulas}.
2863 @item @@3=
2864 Row formula, applies to all fields in the specified row. @code{@@>=} means
2865 the last row.
2866 @item @@1$2..@@4$3=
2867 Range formula, applies to all fields in the given rectangular range. This
2868 can also be used to assign a formula to some but not all fields in a row.
2869 @item $name=
2870 Named field, see @ref{Advanced features}.
2871 @end table
2872
2873 @node Column formulas, Lookup functions, Field and range formulas, The spreadsheet
2874 @subsection Column formulas
2875 @cindex column formula
2876 @cindex formula, for table column
2877
2878 When you assign a formula to a simple column reference like @code{$3=}, the
2879 same formula will be used in all fields of that column, with the following
2880 very convenient exceptions: (i) If the table contains horizontal separator
2881 hlines with rows above and below, everything before the first such hline is
2882 considered part of the table @emph{header} and will not be modified by column
2883 formulas. Therefore a header is mandatory when you use column formulas and
2884 want to add hlines to group rows, like for example to separate a total row at
2885 the bottom from the summand rows above. (ii) Fields that already get a value
2886 from a field/range formula will be left alone by column formulas. These
2887 conditions make column formulas very easy to use.
2888
2889 To assign a formula to a column, type it directly into any field in the
2890 column, preceded by an equal sign, like @samp{=$1+$2}. When you press
2891 @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the field,
2892 the formula will be stored as the formula for the current column, evaluated
2893 and the current field replaced with the result. If the field contains only
2894 @samp{=}, the previously stored formula for this column is used. For each
2895 column, Org will only remember the most recently used formula. In the
2896 @samp{#+TBLFM:} line, column formulas will look like @samp{$4=$1+$2}. The
2897 left-hand side of a column formula can not be the name of column, it must be
2898 the numeric column reference or @code{$>}.
2899
2900 Instead of typing an equation into the field, you may also use the
2901 following command:
2902
2903 @table @kbd
2904 @orgcmd{C-c =,org-table-eval-formula}
2905 Install a new formula for the current column and replace current field with
2906 the result of the formula. The command prompts for a formula, with default
2907 taken from the @samp{#+TBLFM} line, applies it to the current field and
2908 stores it. With a numeric prefix argument(e.g., @kbd{C-5 C-c =}) the command
2909 will apply it to that many consecutive fields in the current column.
2910 @end table
2911
2912 @node Lookup functions, Editing and debugging formulas, Column formulas, The spreadsheet
2913 @subsection Lookup functions
2914 @cindex lookup functions in tables
2915 @cindex table lookup functions
2916
2917 Org has three predefined Emacs Lisp functions for lookups in tables.
2918 @table @code
2919 @item (org-lookup-first VAL S-LIST R-LIST &optional PREDICATE)
2920 @findex org-lookup-first
2921 Searches for the first element @code{S} in list @code{S-LIST} for which
2922 @lisp
2923 (PREDICATE VAL S)
2924 @end lisp
2925 is @code{t}; returns the value from the corresponding position in list
2926 @code{R-LIST}. The default @code{PREDICATE} is @code{equal}. Note that the
2927 parameters @code{VAL} and @code{S} are passed to @code{PREDICATE} in the same
2928 order as the corresponding parameters are in the call to
2929 @code{org-lookup-first}, where @code{VAL} precedes @code{S-LIST}. If
2930 @code{R-LIST} is @code{nil}, the matching element @code{S} of @code{S-LIST}
2931 is returned.
2932 @item (org-lookup-last VAL S-LIST R-LIST &optional PREDICATE)
2933 @findex org-lookup-last
2934 Similar to @code{org-lookup-first} above, but searches for the @i{last}
2935 element for which @code{PREDICATE} is @code{t}.
2936 @item (org-lookup-all VAL S-LIST R-LIST &optional PREDICATE)
2937 @findex org-lookup-all
2938 Similar to @code{org-lookup-first}, but searches for @i{all} elements for
2939 which @code{PREDICATE} is @code{t}, and returns @i{all} corresponding
2940 values. This function can not be used by itself in a formula, because it
2941 returns a list of values. However, powerful lookups can be built when this
2942 function is combined with other Emacs Lisp functions.
2943 @end table
2944
2945 If the ranges used in these functions contain empty fields, the @code{E} mode
2946 for the formula should usually be specified: otherwise empty fields will not be
2947 included in @code{S-LIST} and/or @code{R-LIST} which can, for example, result
2948 in an incorrect mapping from an element of @code{S-LIST} to the corresponding
2949 element of @code{R-LIST}.
2950
2951 These three functions can be used to implement associative arrays, count
2952 matching cells, rank results, group data etc. For practical examples
2953 see @uref{http://orgmode.org/worg/org-tutorials/org-lookups.html, this
2954 tutorial on Worg}.
2955
2956 @node Editing and debugging formulas, Updating the table, Lookup functions, The spreadsheet
2957 @subsection Editing and debugging formulas
2958 @cindex formula editing
2959 @cindex editing, of table formulas
2960
2961 @vindex org-table-use-standard-references
2962 You can edit individual formulas in the minibuffer or directly in the field.
2963 Org can also prepare a special buffer with all active formulas of a table.
2964 When offering a formula for editing, Org converts references to the standard
2965 format (like @code{B3} or @code{D&}) if possible. If you prefer to only work
2966 with the internal format (like @code{@@3$2} or @code{$4}), configure the
2967 option @code{org-table-use-standard-references}.
2968
2969 @table @kbd
2970 @orgcmdkkc{C-c =,C-u C-c =,org-table-eval-formula}
2971 Edit the formula associated with the current column/field in the
2972 minibuffer. See @ref{Column formulas}, and @ref{Field and range formulas}.
2973 @orgcmd{C-u C-u C-c =,org-table-eval-formula}
2974 Re-insert the active formula (either a
2975 field formula, or a column formula) into the current field, so that you
2976 can edit it directly in the field. The advantage over editing in the
2977 minibuffer is that you can use the command @kbd{C-c ?}.
2978 @orgcmd{C-c ?,org-table-field-info}
2979 While editing a formula in a table field, highlight the field(s)
2980 referenced by the reference at the cursor position in the formula.
2981 @kindex C-c @}
2982 @findex org-table-toggle-coordinate-overlays
2983 @item C-c @}
2984 Toggle the display of row and column numbers for a table, using overlays
2985 (@command{org-table-toggle-coordinate-overlays}). These are updated each
2986 time the table is aligned; you can force it with @kbd{C-c C-c}.
2987 @kindex C-c @{
2988 @findex org-table-toggle-formula-debugger
2989 @item C-c @{
2990 Toggle the formula debugger on and off
2991 (@command{org-table-toggle-formula-debugger}). See below.
2992 @orgcmd{C-c ',org-table-edit-formulas}
2993 Edit all formulas for the current table in a special buffer, where the
2994 formulas will be displayed one per line. If the current field has an
2995 active formula, the cursor in the formula editor will mark it.
2996 While inside the special buffer, Org will automatically highlight
2997 any field or range reference at the cursor position. You may edit,
2998 remove and add formulas, and use the following commands:
2999
3000 @table @kbd
3001 @orgcmdkkc{C-c C-c,C-x C-s,org-table-fedit-finish}
3002 Exit the formula editor and store the modified formulas. With @kbd{C-u}
3003 prefix, also apply the new formulas to the entire table.
3004 @orgcmd{C-c C-q,org-table-fedit-abort}
3005 Exit the formula editor without installing changes.
3006 @orgcmd{C-c C-r,org-table-fedit-toggle-ref-type}
3007 Toggle all references in the formula editor between standard (like
3008 @code{B3}) and internal (like @code{@@3$2}).
3009 @orgcmd{@key{TAB},org-table-fedit-lisp-indent}
3010 Pretty-print or indent Lisp formula at point. When in a line containing
3011 a Lisp formula, format the formula according to Emacs Lisp rules.
3012 Another @key{TAB} collapses the formula back again. In the open
3013 formula, @key{TAB} re-indents just like in Emacs Lisp mode.
3014 @orgcmd{M-@key{TAB},lisp-complete-symbol}
3015 Complete Lisp symbols, just like in Emacs Lisp mode.
3016 @kindex S-@key{up}
3017 @kindex S-@key{down}
3018 @kindex S-@key{left}
3019 @kindex S-@key{right}
3020 @findex org-table-fedit-ref-up
3021 @findex org-table-fedit-ref-down
3022 @findex org-table-fedit-ref-left
3023 @findex org-table-fedit-ref-right
3024 @item S-@key{up}/@key{down}/@key{left}/@key{right}
3025 Shift the reference at point. For example, if the reference is
3026 @code{B3} and you press @kbd{S-@key{right}}, it will become @code{C3}.
3027 This also works for relative references and for hline references.
3028 @orgcmdkkcc{M-S-@key{up},M-S-@key{down},org-table-fedit-line-up,org-table-fedit-line-down}
3029 Move the test line for column formulas in the Org buffer up and
3030 down.
3031 @orgcmdkkcc{M-@key{up},M-@key{down},org-table-fedit-scroll-down,org-table-fedit-scroll-up}
3032 Scroll the window displaying the table.
3033 @kindex C-c @}
3034 @findex org-table-toggle-coordinate-overlays
3035 @item C-c @}
3036 Turn the coordinate grid in the table on and off.
3037 @end table
3038 @end table
3039
3040 Making a table field blank does not remove the formula associated with
3041 the field, because that is stored in a different line (the @samp{#+TBLFM}
3042 line)---during the next recalculation the field will be filled again.
3043 To remove a formula from a field, you have to give an empty reply when
3044 prompted for the formula, or to edit the @samp{#+TBLFM} line.
3045
3046 @kindex C-c C-c
3047 You may edit the @samp{#+TBLFM} directly and re-apply the changed
3048 equations with @kbd{C-c C-c} in that line or with the normal
3049 recalculation commands in the table.
3050
3051 @anchor{Using multiple #+TBLFM lines}
3052 @subsubheading Using multiple #+TBLFM lines
3053 @cindex #+TBLFM line, multiple
3054 @cindex #+TBLFM
3055 @cindex #+TBLFM, switching
3056 @kindex C-c C-c
3057
3058 You may apply the formula temporarily. This is useful when you
3059 switch the formula. Place multiple @samp{#+TBLFM} lines right
3060 after the table, and then press @kbd{C-c C-c} on the formula to
3061 apply. Here is an example:
3062
3063 @example
3064 | x | y |
3065 |---+---|
3066 | 1 | |
3067 | 2 | |
3068 #+TBLFM: $2=$1*1
3069 #+TBLFM: $2=$1*2
3070 @end example
3071
3072 @noindent
3073 Pressing @kbd{C-c C-c} in the line of @samp{#+TBLFM: $2=$1*2} yields:
3074
3075 @example
3076 | x | y |
3077 |---+---|
3078 | 1 | 2 |
3079 | 2 | 4 |
3080 #+TBLFM: $2=$1*1
3081 #+TBLFM: $2=$1*2
3082 @end example
3083
3084 @noindent
3085 Note: If you recalculate this table (with @kbd{C-u C-c *}, for example), you
3086 will get the following result of applying only the first @samp{#+TBLFM} line.
3087
3088 @example
3089 | x | y |
3090 |---+---|
3091 | 1 | 1 |
3092 | 2 | 2 |
3093 #+TBLFM: $2=$1*1
3094 #+TBLFM: $2=$1*2
3095 @end example
3096
3097 @subsubheading Debugging formulas
3098 @cindex formula debugging
3099 @cindex debugging, of table formulas
3100 When the evaluation of a formula leads to an error, the field content
3101 becomes the string @samp{#ERROR}. If you would like see what is going
3102 on during variable substitution and calculation in order to find a bug,
3103 turn on formula debugging in the @code{Tbl} menu and repeat the
3104 calculation, for example by pressing @kbd{C-u C-u C-c = @key{RET}} in a
3105 field. Detailed information will be displayed.
3106
3107 @node Updating the table, Advanced features, Editing and debugging formulas, The spreadsheet
3108 @subsection Updating the table
3109 @cindex recomputing table fields
3110 @cindex updating, table
3111
3112 Recalculation of a table is normally not automatic, but needs to be
3113 triggered by a command. See @ref{Advanced features}, for a way to make
3114 recalculation at least semi-automatic.
3115
3116 In order to recalculate a line of a table or the entire table, use the
3117 following commands:
3118
3119 @table @kbd
3120 @orgcmd{C-c *,org-table-recalculate}
3121 Recalculate the current row by first applying the stored column formulas
3122 from left to right, and all field/range formulas in the current row.
3123 @c
3124 @kindex C-u C-c *
3125 @item C-u C-c *
3126 @kindex C-u C-c C-c
3127 @itemx C-u C-c C-c
3128 Recompute the entire table, line by line. Any lines before the first
3129 hline are left alone, assuming that these are part of the table header.
3130 @c
3131 @orgcmdkkc{C-u C-u C-c *,C-u C-u C-c C-c,org-table-iterate}
3132 Iterate the table by recomputing it until no further changes occur.
3133 This may be necessary if some computed fields use the value of other
3134 fields that are computed @i{later} in the calculation sequence.
3135 @item M-x org-table-recalculate-buffer-tables RET
3136 @findex org-table-recalculate-buffer-tables
3137 Recompute all tables in the current buffer.
3138 @item M-x org-table-iterate-buffer-tables RET
3139 @findex org-table-iterate-buffer-tables
3140 Iterate all tables in the current buffer, in order to converge table-to-table
3141 dependencies.
3142 @end table
3143
3144 @node Advanced features, , Updating the table, The spreadsheet
3145 @subsection Advanced features
3146
3147 If you want the recalculation of fields to happen automatically, or if you
3148 want to be able to assign @i{names}@footnote{Such names must start by an
3149 alphabetic character and use only alphanumeric/underscore characters.} to
3150 fields and columns, you need to reserve the first column of the table for
3151 special marking characters.
3152
3153 @table @kbd
3154 @orgcmd{C-#,org-table-rotate-recalc-marks}
3155 Rotate the calculation mark in first column through the states @samp{ },
3156 @samp{#}, @samp{*}, @samp{!}, @samp{$}. When there is an active region,
3157 change all marks in the region.
3158 @end table
3159
3160 Here is an example of a table that collects exam results of students and
3161 makes use of these features:
3162
3163 @example
3164 @group
3165 |---+---------+--------+--------+--------+-------+------|
3166 | | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
3167 |---+---------+--------+--------+--------+-------+------|
3168 | ! | | P1 | P2 | P3 | Tot | |
3169 | # | Maximum | 10 | 15 | 25 | 50 | 10.0 |
3170 | ^ | | m1 | m2 | m3 | mt | |
3171 |---+---------+--------+--------+--------+-------+------|
3172 | # | Peter | 10 | 8 | 23 | 41 | 8.2 |
3173 | # | Sam | 2 | 4 | 3 | 9 | 1.8 |
3174 |---+---------+--------+--------+--------+-------+------|
3175 | | Average | | | | 25.0 | |
3176 | ^ | | | | | at | |
3177 | $ | max=50 | | | | | |
3178 |---+---------+--------+--------+--------+-------+------|
3179 #+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(@@-II..@@-I);%.1f
3180 @end group
3181 @end example
3182
3183 @noindent @b{Important}: please note that for these special tables,
3184 recalculating the table with @kbd{C-u C-c *} will only affect rows that
3185 are marked @samp{#} or @samp{*}, and fields that have a formula assigned
3186 to the field itself. The column formulas are not applied in rows with
3187 empty first field.
3188
3189 @cindex marking characters, tables
3190 The marking characters have the following meaning:
3191
3192 @table @samp
3193 @item !
3194 The fields in this line define names for the columns, so that you may
3195 refer to a column as @samp{$Tot} instead of @samp{$6}.
3196 @item ^
3197 This row defines names for the fields @emph{above} the row. With such
3198 a definition, any formula in the table may use @samp{$m1} to refer to
3199 the value @samp{10}. Also, if you assign a formula to a names field, it
3200 will be stored as @samp{$name=...}.
3201 @item _
3202 Similar to @samp{^}, but defines names for the fields in the row
3203 @emph{below}.
3204 @item $
3205 Fields in this row can define @emph{parameters} for formulas. For
3206 example, if a field in a @samp{$} row contains @samp{max=50}, then
3207 formulas in this table can refer to the value 50 using @samp{$max}.
3208 Parameters work exactly like constants, only that they can be defined on
3209 a per-table basis.
3210 @item #
3211 Fields in this row are automatically recalculated when pressing
3212 @key{TAB} or @key{RET} or @kbd{S-@key{TAB}} in this row. Also, this row
3213 is selected for a global recalculation with @kbd{C-u C-c *}. Unmarked
3214 lines will be left alone by this command.
3215 @item *
3216 Selects this line for global recalculation with @kbd{C-u C-c *}, but
3217 not for automatic recalculation. Use this when automatic
3218 recalculation slows down editing too much.
3219 @item @w{ }
3220 Unmarked lines are exempt from recalculation with @kbd{C-u C-c *}.
3221 All lines that should be recalculated should be marked with @samp{#}
3222 or @samp{*}.
3223 @item /
3224 Do not export this line. Useful for lines that contain the narrowing
3225 @samp{<N>} markers or column group markers.
3226 @end table
3227
3228 Finally, just to whet your appetite for what can be done with the
3229 fantastic @file{calc.el} package, here is a table that computes the Taylor
3230 series of degree @code{n} at location @code{x} for a couple of
3231 functions.
3232
3233 @example
3234 @group
3235 |---+-------------+---+-----+--------------------------------------|
3236 | | Func | n | x | Result |
3237 |---+-------------+---+-----+--------------------------------------|
3238 | # | exp(x) | 1 | x | 1 + x |
3239 | # | exp(x) | 2 | x | 1 + x + x^2 / 2 |
3240 | # | exp(x) | 3 | x | 1 + x + x^2 / 2 + x^3 / 6 |
3241 | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
3242 | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2 |
3243 | * | tan(x) | 3 | x | 0.0175 x + 1.77e-6 x^3 |
3244 |---+-------------+---+-----+--------------------------------------|
3245 #+TBLFM: $5=taylor($2,$4,$3);n3
3246 @end group
3247 @end example
3248
3249 @node Org-Plot, , The spreadsheet, Tables
3250 @section Org-Plot
3251 @cindex graph, in tables
3252 @cindex plot tables using Gnuplot
3253 @cindex #+PLOT
3254
3255 Org-Plot can produce 2D and 3D graphs of information stored in org tables
3256 using @file{Gnuplot} @uref{http://www.gnuplot.info/} and @file{gnuplot-mode}
3257 @uref{http://xafs.org/BruceRavel/GnuplotMode}. To see this in action, ensure
3258 that you have both Gnuplot and Gnuplot mode installed on your system, then
3259 call @code{org-plot/gnuplot} on the following table.
3260
3261 @example
3262 @group
3263 #+PLOT: title:"Citas" ind:1 deps:(3) type:2d with:histograms set:"yrange [0:]"
3264 | Sede | Max cites | H-index |
3265 |-----------+-----------+---------|
3266 | Chile | 257.72 | 21.39 |
3267 | Leeds | 165.77 | 19.68 |
3268 | Sao Paolo | 71.00 | 11.50 |
3269 | Stockholm | 134.19 | 14.33 |
3270 | Morelia | 257.56 | 17.67 |
3271 @end group
3272 @end example
3273
3274 Notice that Org Plot is smart enough to apply the table's headers as labels.
3275 Further control over the labels, type, content, and appearance of plots can
3276 be exercised through the @code{#+PLOT:} lines preceding a table. See below
3277 for a complete list of Org-plot options. For more information and examples
3278 see the Org-plot tutorial at
3279 @uref{http://orgmode.org/worg/org-tutorials/org-plot.html}.
3280
3281 @subsubheading Plot Options
3282
3283 @table @code
3284 @item set
3285 Specify any @command{gnuplot} option to be set when graphing.
3286
3287 @item title
3288 Specify the title of the plot.
3289
3290 @item ind
3291 Specify which column of the table to use as the @code{x} axis.
3292
3293 @item deps
3294 Specify the columns to graph as a Lisp style list, surrounded by parentheses
3295 and separated by spaces for example @code{dep:(3 4)} to graph the third and
3296 fourth columns (defaults to graphing all other columns aside from the @code{ind}
3297 column).
3298
3299 @item type
3300 Specify whether the plot will be @code{2d}, @code{3d}, or @code{grid}.
3301
3302 @item with
3303 Specify a @code{with} option to be inserted for every col being plotted
3304 (e.g., @code{lines}, @code{points}, @code{boxes}, @code{impulses}, etc...).
3305 Defaults to @code{lines}.
3306
3307 @item file
3308 If you want to plot to a file, specify @code{"@var{path/to/desired/output-file}"}.
3309
3310 @item labels
3311 List of labels to be used for the @code{deps} (defaults to the column headers
3312 if they exist).
3313
3314 @item line
3315 Specify an entire line to be inserted in the Gnuplot script.
3316
3317 @item map
3318 When plotting @code{3d} or @code{grid} types, set this to @code{t} to graph a
3319 flat mapping rather than a @code{3d} slope.
3320
3321 @item timefmt
3322 Specify format of Org mode timestamps as they will be parsed by Gnuplot.
3323 Defaults to @samp{%Y-%m-%d-%H:%M:%S}.
3324
3325 @item script
3326 If you want total control, you can specify a script file (place the file name
3327 between double-quotes) which will be used to plot. Before plotting, every
3328 instance of @code{$datafile} in the specified script will be replaced with
3329 the path to the generated data file. Note: even if you set this option, you
3330 may still want to specify the plot type, as that can impact the content of
3331 the data file.
3332 @end table
3333
3334 @node Hyperlinks, TODO Items, Tables, Top
3335 @chapter Hyperlinks
3336 @cindex hyperlinks
3337
3338 Like HTML, Org provides links inside a file, external links to
3339 other files, Usenet articles, emails, and much more.
3340
3341 @menu
3342 * Link format:: How links in Org are formatted
3343 * Internal links:: Links to other places in the current file
3344 * External links:: URL-like links to the world
3345 * Handling links:: Creating, inserting and following
3346 * Using links outside Org:: Linking from my C source code?
3347 * Link abbreviations:: Shortcuts for writing complex links
3348 * Search options:: Linking to a specific location
3349 * Custom searches:: When the default search is not enough
3350 @end menu
3351
3352 @node Link format, Internal links, Hyperlinks, Hyperlinks
3353 @section Link format
3354 @cindex link format
3355 @cindex format, of links
3356
3357 Org will recognize plain URL-like links and activate them as
3358 clickable links. The general link format, however, looks like this:
3359
3360 @example
3361 [[link][description]] @r{or alternatively} [[link]]
3362 @end example
3363
3364 @noindent
3365 Once a link in the buffer is complete (all brackets present), Org
3366 will change the display so that @samp{description} is displayed instead
3367 of @samp{[[link][description]]} and @samp{link} is displayed instead of
3368 @samp{[[link]]}. Links will be highlighted in the face @code{org-link},
3369 which by default is an underlined face. You can directly edit the
3370 visible part of a link. Note that this can be either the @samp{link}
3371 part (if there is no description) or the @samp{description} part. To
3372 edit also the invisible @samp{link} part, use @kbd{C-c C-l} with the
3373 cursor on the link.
3374
3375 If you place the cursor at the beginning or just behind the end of the
3376 displayed text and press @key{BACKSPACE}, you will remove the
3377 (invisible) bracket at that location. This makes the link incomplete
3378 and the internals are again displayed as plain text. Inserting the
3379 missing bracket hides the link internals again. To show the
3380 internal structure of all links, use the menu entry
3381 @code{Org->Hyperlinks->Literal links}.
3382
3383 @node Internal links, External links, Link format, Hyperlinks
3384 @section Internal links
3385 @cindex internal links
3386 @cindex links, internal
3387 @cindex targets, for links
3388
3389 @cindex property, CUSTOM_ID
3390 If the link does not look like a URL, it is considered to be internal in the
3391 current file. The most important case is a link like
3392 @samp{[[#my-custom-id]]} which will link to the entry with the
3393 @code{CUSTOM_ID} property @samp{my-custom-id}. You are responsible yourself
3394 to make sure these custom IDs are unique in a file.
3395
3396 Links such as @samp{[[My Target]]} or @samp{[[My Target][Find my target]]}
3397 lead to a text search in the current file.
3398
3399 The link can be followed with @kbd{C-c C-o} when the cursor is on the link,
3400 or with a mouse click (@pxref{Handling links}). Links to custom IDs will
3401 point to the corresponding headline. The preferred match for a text link is
3402 a @i{dedicated target}: the same string in double angular brackets, like
3403 @samp{<<My Target>>}.
3404
3405 @cindex #+NAME
3406 If no dedicated target exists, the link will then try to match the exact name
3407 of an element within the buffer. Naming is done with the @code{#+NAME}
3408 keyword, which has to be put the line before the element it refers to, as in
3409 the following example
3410
3411 @example
3412 #+NAME: My Target
3413 | a | table |
3414 |----+------------|
3415 | of | four cells |
3416 @end example
3417
3418 If none of the above succeeds, Org will search for a headline that is exactly
3419 the link text but may also include a TODO keyword and tags@footnote{To insert
3420 a link targeting a headline, in-buffer completion can be used. Just type
3421 a star followed by a few optional letters into the buffer and press
3422 @kbd{M-@key{TAB}}. All headlines in the current buffer will be offered as
3423 completions.}.
3424
3425 During export, internal links will be used to mark objects and assign them
3426 a number. Marked objects will then be referenced by links pointing to them.
3427 In particular, links without a description will appear as the number assigned
3428 to the marked object@footnote{When targeting a @code{#+NAME} keyword,
3429 @code{#+CAPTION} keyword is mandatory in order to get proper numbering
3430 (@pxref{Images and tables}).}. In the following excerpt from an Org buffer
3431
3432 @example
3433 - one item
3434 - <<target>>another item
3435 Here we refer to item [[target]].
3436 @end example
3437
3438 @noindent
3439 The last sentence will appear as @samp{Here we refer to item 2} when
3440 exported.
3441
3442 In non-Org files, the search will look for the words in the link text. In
3443 the above example the search would be for @samp{my target}.
3444
3445 Following a link pushes a mark onto Org's own mark ring. You can
3446 return to the previous position with @kbd{C-c &}. Using this command
3447 several times in direct succession goes back to positions recorded
3448 earlier.
3449
3450 @menu
3451 * Radio targets:: Make targets trigger links in plain text
3452 @end menu
3453
3454 @node Radio targets, , Internal links, Internal links
3455 @subsection Radio targets
3456 @cindex radio targets
3457 @cindex targets, radio
3458 @cindex links, radio targets
3459
3460 Org can automatically turn any occurrences of certain target names
3461 in normal text into a link. So without explicitly creating a link, the
3462 text connects to the target radioing its position. Radio targets are
3463 enclosed by triple angular brackets. For example, a target @samp{<<<My
3464 Target>>>} causes each occurrence of @samp{my target} in normal text to
3465 become activated as a link. The Org file is scanned automatically
3466 for radio targets only when the file is first loaded into Emacs. To
3467 update the target list during editing, press @kbd{C-c C-c} with the
3468 cursor on or at a target.
3469
3470 @node External links, Handling links, Internal links, Hyperlinks
3471 @section External links
3472 @cindex links, external
3473 @cindex external links
3474 @cindex Gnus links
3475 @cindex BBDB links
3476 @cindex IRC links
3477 @cindex URL links
3478 @cindex file links
3479 @cindex RMAIL links
3480 @cindex MH-E links
3481 @cindex USENET links
3482 @cindex SHELL links
3483 @cindex Info links
3484 @cindex Elisp links
3485
3486 Org supports links to files, websites, Usenet and email messages, BBDB
3487 database entries and links to both IRC conversations and their logs.
3488 External links are URL-like locators. They start with a short identifying
3489 string followed by a colon. There can be no space after the colon. The
3490 following list shows examples for each link type.
3491
3492 @example
3493 http://www.astro.uva.nl/~dominik @r{on the web}
3494 doi:10.1000/182 @r{DOI for an electronic resource}
3495 file:/home/dominik/images/jupiter.jpg @r{file, absolute path}
3496 /home/dominik/images/jupiter.jpg @r{same as above}
3497 file:papers/last.pdf @r{file, relative path}
3498 ./papers/last.pdf @r{same as above}
3499 file:/myself@@some.where:papers/last.pdf @r{file, path on remote machine}
3500 /myself@@some.where:papers/last.pdf @r{same as above}
3501 file:sometextfile::NNN @r{file, jump to line number}
3502 file:projects.org @r{another Org file}
3503 file:projects.org::some words @r{text search in Org file}@footnote{
3504 The actual behavior of the search will depend on the value of
3505 the option @code{org-link-search-must-match-exact-headline}. If its value
3506 is @code{nil}, then a fuzzy text search will be done. If it is t, then only the
3507 exact headline will be matched. If the value is @code{'query-to-create},
3508 then an exact headline will be searched; if it is not found, then the user
3509 will be queried to create it.}
3510 file:projects.org::*task title @r{heading search in Org file}
3511 file+sys:/path/to/file @r{open via OS, like double-click}
3512 file+emacs:/path/to/file @r{force opening by Emacs}
3513 docview:papers/last.pdf::NNN @r{open in doc-view mode at page}
3514 id:B7423F4D-2E8A-471B-8810-C40F074717E9 @r{Link to heading by ID}
3515 news:comp.emacs @r{Usenet link}
3516 mailto:adent@@galaxy.net @r{Mail link}
3517 mhe:folder @r{MH-E folder link}
3518 mhe:folder#id @r{MH-E message link}
3519 rmail:folder @r{RMAIL folder link}
3520 rmail:folder#id @r{RMAIL message link}
3521 gnus:group @r{Gnus group link}
3522 gnus:group#id @r{Gnus article link}
3523 bbdb:R.*Stallman @r{BBDB link (with regexp)}
3524 irc:/irc.com/#emacs/bob @r{IRC link}
3525 info:org#External links @r{Info node link}
3526 shell:ls *.org @r{A shell command}
3527 elisp:org-agenda @r{Interactive Elisp command}
3528 elisp:(find-file-other-frame "Elisp.org") @r{Elisp form to evaluate}
3529 @end example
3530
3531 @cindex VM links
3532 @cindex WANDERLUST links
3533 On top of these built-in link types, some are available through the
3534 @code{contrib/} directory (@pxref{Installation}). For example, these links
3535 to VM or Wanderlust messages are available when you load the corresponding
3536 libraries from the @code{contrib/} directory:
3537
3538 @example
3539 vm:folder @r{VM folder link}
3540 vm:folder#id @r{VM message link}
3541 vm://myself@@some.where.org/folder#id @r{VM on remote machine}
3542 vm-imap:account:folder @r{VM IMAP folder link}
3543 vm-imap:account:folder#id @r{VM IMAP message link}
3544 wl:folder @r{WANDERLUST folder link}
3545 wl:folder#id @r{WANDERLUST message link}
3546 @end example
3547
3548 For customizing Org to add new link types @ref{Adding hyperlink types}.
3549
3550 A link should be enclosed in double brackets and may contain a descriptive
3551 text to be displayed instead of the URL (@pxref{Link format}), for example:
3552
3553 @example
3554 [[http://www.gnu.org/software/emacs/][GNU Emacs]]
3555 @end example
3556
3557 @noindent
3558 If the description is a file name or URL that points to an image, HTML
3559 export (@pxref{HTML export}) will inline the image as a clickable
3560 button. If there is no description at all and the link points to an
3561 image,
3562 that image will be inlined into the exported HTML file.
3563
3564 @cindex square brackets, around links
3565 @cindex plain text external links
3566 Org also finds external links in the normal text and activates them
3567 as links. If spaces must be part of the link (for example in
3568 @samp{bbdb:Richard Stallman}), or if you need to remove ambiguities
3569 about the end of the link, enclose them in square brackets.
3570
3571 @node Handling links, Using links outside Org, External links, Hyperlinks
3572 @section Handling links
3573 @cindex links, handling
3574
3575 Org provides methods to create a link in the correct syntax, to
3576 insert it into an Org file, and to follow the link.
3577
3578 @table @kbd
3579 @orgcmd{C-c l,org-store-link}
3580 @cindex storing links
3581 Store a link to the current location. This is a @emph{global} command (you
3582 must create the key binding yourself) which can be used in any buffer to
3583 create a link. The link will be stored for later insertion into an Org
3584 buffer (see below). What kind of link will be created depends on the current
3585 buffer:
3586
3587 @b{Org mode buffers}@*
3588 For Org files, if there is a @samp{<<target>>} at the cursor, the link points
3589 to the target. Otherwise it points to the current headline, which will also
3590 be the description@footnote{If the headline contains a timestamp, it will be
3591 removed from the link and result in a wrong link---you should avoid putting
3592 timestamp in the headline.}.
3593
3594 @vindex org-id-link-to-org-use-id
3595 @cindex property, CUSTOM_ID
3596 @cindex property, ID
3597 If the headline has a @code{CUSTOM_ID} property, a link to this custom ID
3598 will be stored. In addition or alternatively (depending on the value of
3599 @code{org-id-link-to-org-use-id}), a globally unique @code{ID} property will
3600 be created and/or used to construct a link@footnote{The library
3601 @file{org-id.el} must first be loaded, either through @code{org-customize} by
3602 enabling @code{org-id} in @code{org-modules}, or by adding @code{(require
3603 'org-id)} in your @file{.emacs}.}. So using this command in Org buffers will
3604 potentially create two links: a human-readable from the custom ID, and one
3605 that is globally unique and works even if the entry is moved from file to
3606 file. Later, when inserting the link, you need to decide which one to use.
3607
3608 @b{Email/News clients: VM, Rmail, Wanderlust, MH-E, Gnus}@*
3609 Pretty much all Emacs mail clients are supported. The link will point to the
3610 current article, or, in some GNUS buffers, to the group. The description is
3611 constructed from the author and the subject.
3612
3613 @b{Web browsers: W3 and W3M}@*
3614 Here the link will be the current URL, with the page title as description.
3615
3616 @b{Contacts: BBDB}@*
3617 Links created in a BBDB buffer will point to the current entry.
3618
3619 @b{Chat: IRC}@*
3620 @vindex org-irc-link-to-logs
3621 For IRC links, if you set the option @code{org-irc-link-to-logs} to @code{t},
3622 a @samp{file:/} style link to the relevant point in the logs for the current
3623 conversation is created. Otherwise an @samp{irc:/} style link to the
3624 user/channel/server under the point will be stored.
3625
3626 @b{Other files}@*
3627 For any other files, the link will point to the file, with a search string
3628 (@pxref{Search options}) pointing to the contents of the current line. If
3629 there is an active region, the selected words will form the basis of the
3630 search string. If the automatically created link is not working correctly or
3631 accurately enough, you can write custom functions to select the search string
3632 and to do the search for particular file types---see @ref{Custom searches}.
3633 The key binding @kbd{C-c l} is only a suggestion---see @ref{Installation}.
3634
3635 @b{Agenda view}@*
3636 When the cursor is in an agenda view, the created link points to the
3637 entry referenced by the current line.
3638
3639 @c
3640 @orgcmd{C-c C-l,org-insert-link}
3641 @cindex link completion
3642 @cindex completion, of links
3643 @cindex inserting links
3644 @vindex org-keep-stored-link-after-insertion
3645 Insert a link@footnote{ Note that you don't have to use this command to
3646 insert a link. Links in Org are plain text, and you can type or paste them
3647 straight into the buffer. By using this command, the links are automatically
3648 enclosed in double brackets, and you will be asked for the optional
3649 descriptive text.}. This prompts for a link to be inserted into the buffer.
3650 You can just type a link, using text for an internal link, or one of the link
3651 type prefixes mentioned in the examples above. The link will be inserted
3652 into the buffer@footnote{After insertion of a stored link, the link will be
3653 removed from the list of stored links. To keep it in the list later use, use
3654 a triple @kbd{C-u} prefix argument to @kbd{C-c C-l}, or configure the option
3655 @code{org-keep-stored-link-after-insertion}.}, along with a descriptive text.
3656 If some text was selected when this command is called, the selected text
3657 becomes the default description.
3658
3659 @b{Inserting stored links}@*
3660 All links stored during the
3661 current session are part of the history for this prompt, so you can access
3662 them with @key{up} and @key{down} (or @kbd{M-p/n}).
3663
3664 @b{Completion support}@* Completion with @key{TAB} will help you to insert
3665 valid link prefixes like @samp{http:} or @samp{ftp:}, including the prefixes
3666 defined through link abbreviations (@pxref{Link abbreviations}). If you
3667 press @key{RET} after inserting only the @var{prefix}, Org will offer
3668 specific completion support for some link types@footnote{This works by
3669 calling a special function @code{org-PREFIX-complete-link}.} For
3670 example, if you type @kbd{file @key{RET}}, file name completion (alternative
3671 access: @kbd{C-u C-c C-l}, see below) will be offered, and after @kbd{bbdb
3672 @key{RET}} you can complete contact names.
3673 @orgkey C-u C-c C-l
3674 @cindex file name completion
3675 @cindex completion, of file names
3676 When @kbd{C-c C-l} is called with a @kbd{C-u} prefix argument, a link to
3677 a file will be inserted and you may use file name completion to select
3678 the name of the file. The path to the file is inserted relative to the
3679 directory of the current Org file, if the linked file is in the current
3680 directory or in a sub-directory of it, or if the path is written relative
3681 to the current directory using @samp{../}. Otherwise an absolute path
3682 is used, if possible with @samp{~/} for your home directory. You can
3683 force an absolute path with two @kbd{C-u} prefixes.
3684 @c
3685 @item C-c C-l @ @r{(with cursor on existing link)}
3686 When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the
3687 link and description parts of the link.
3688 @c
3689 @cindex following links
3690 @orgcmd{C-c C-o,org-open-at-point}
3691 @vindex org-file-apps
3692 @vindex org-link-frame-setup
3693 Open link at point. This will launch a web browser for URLs (using
3694 @command{browse-url-at-point}), run VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for
3695 the corresponding links, and execute the command in a shell link. When the
3696 cursor is on an internal link, this command runs the corresponding search.
3697 When the cursor is on a TAG list in a headline, it creates the corresponding
3698 TAGS view. If the cursor is on a timestamp, it compiles the agenda for that
3699 date. Furthermore, it will visit text and remote files in @samp{file:} links
3700 with Emacs and select a suitable application for local non-text files.
3701 Classification of files is based on file extension only. See option
3702 @code{org-file-apps}. If you want to override the default application and
3703 visit the file with Emacs, use a @kbd{C-u} prefix. If you want to avoid
3704 opening in Emacs, use a @kbd{C-u C-u} prefix.@*
3705 If the cursor is on a headline, but not on a link, offer all links in the
3706 headline and entry text. If you want to setup the frame configuration for
3707 following links, customize @code{org-link-frame-setup}.
3708
3709 @orgkey @key{RET}
3710 @vindex org-return-follows-link
3711 When @code{org-return-follows-link} is set, @kbd{@key{RET}} will also follow
3712 the link at point.
3713 @c
3714 @kindex mouse-2
3715 @kindex mouse-1
3716 @item mouse-2
3717 @itemx mouse-1
3718 On links, @kbd{mouse-2} will open the link just as @kbd{C-c C-o}
3719 would. Under Emacs 22 and later, @kbd{mouse-1} will also follow a link.
3720 @c
3721 @kindex mouse-3
3722 @item mouse-3
3723 @vindex org-display-internal-link-with-indirect-buffer
3724 Like @kbd{mouse-2}, but force file links to be opened with Emacs, and
3725 internal links to be displayed in another window@footnote{See the
3726 option @code{org-display-internal-link-with-indirect-buffer}}.
3727 @c
3728 @orgcmd{C-c C-x C-v,org-toggle-inline-images}
3729 @cindex inlining images
3730 @cindex images, inlining
3731 @vindex org-startup-with-inline-images
3732 @cindex @code{inlineimages}, STARTUP keyword
3733 @cindex @code{noinlineimages}, STARTUP keyword
3734 Toggle the inline display of linked images. Normally this will only inline
3735 images that have no description part in the link, i.e., images that will also
3736 be inlined during export. When called with a prefix argument, also display
3737 images that do have a link description. You can ask for inline images to be
3738 displayed at startup by configuring the variable
3739 @code{org-startup-with-inline-images}@footnote{with corresponding
3740 @code{#+STARTUP} keywords @code{inlineimages} and @code{noinlineimages}}.
3741 @orgcmd{C-c %,org-mark-ring-push}
3742 @cindex mark ring
3743 Push the current position onto the mark ring, to be able to return
3744 easily. Commands following an internal link do this automatically.
3745 @c
3746 @orgcmd{C-c &,org-mark-ring-goto}
3747 @cindex links, returning to
3748 Jump back to a recorded position. A position is recorded by the
3749 commands following internal links, and by @kbd{C-c %}. Using this
3750 command several times in direct succession moves through a ring of
3751 previously recorded positions.
3752 @c
3753 @orgcmdkkcc{C-c C-x C-n,C-c C-x C-p,org-next-link,org-previous-link}
3754 @cindex links, finding next/previous
3755 Move forward/backward to the next link in the buffer. At the limit of
3756 the buffer, the search fails once, and then wraps around. The key
3757 bindings for this are really too long; you might want to bind this also
3758 to @kbd{C-n} and @kbd{C-p}
3759 @lisp
3760 (add-hook 'org-load-hook
3761 (lambda ()
3762 (define-key org-mode-map "\C-n" 'org-next-link)
3763 (define-key org-mode-map "\C-p" 'org-previous-link)))
3764 @end lisp
3765 @end table
3766
3767 @node Using links outside Org, Link abbreviations, Handling links, Hyperlinks
3768 @section Using links outside Org
3769
3770 You can insert and follow links that have Org syntax not only in
3771 Org, but in any Emacs buffer. For this, you should create two
3772 global commands, like this (please select suitable global keys
3773 yourself):
3774
3775 @lisp
3776 (global-set-key "\C-c L" 'org-insert-link-global)
3777 (global-set-key "\C-c o" 'org-open-at-point-global)
3778 @end lisp
3779
3780 @node Link abbreviations, Search options, Using links outside Org, Hyperlinks
3781 @section Link abbreviations
3782 @cindex link abbreviations
3783 @cindex abbreviation, links
3784
3785 Long URLs can be cumbersome to type, and often many similar links are
3786 needed in a document. For this you can use link abbreviations. An
3787 abbreviated link looks like this
3788
3789 @example
3790 [[linkword:tag][description]]
3791 @end example
3792
3793 @noindent
3794 @vindex org-link-abbrev-alist
3795 where the tag is optional.
3796 The @i{linkword} must be a word, starting with a letter, followed by
3797 letters, numbers, @samp{-}, and @samp{_}. Abbreviations are resolved
3798 according to the information in the variable @code{org-link-abbrev-alist}
3799 that relates the linkwords to replacement text. Here is an example:
3800
3801 @smalllisp
3802 @group
3803 (setq org-link-abbrev-alist
3804 '(("bugzilla" . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
3805 ("url-to-ja" . "http://translate.google.fr/translate?sl=en&tl=ja&u=%h")
3806 ("google" . "http://www.google.com/search?q=")
3807 ("gmap" . "http://maps.google.com/maps?q=%s")
3808 ("omap" . "http://nominatim.openstreetmap.org/search?q=%s&polygon=1")
3809 ("ads" . "http://adsabs.harvard.edu/cgi-bin/nph-abs_connect?author=%s&db_key=AST")))
3810 @end group
3811 @end smalllisp
3812
3813 If the replacement text contains the string @samp{%s}, it will be
3814 replaced with the tag. Using @samp{%h} instead of @samp{%s} will
3815 url-encode the tag (see the example above, where we need to encode
3816 the URL parameter.) Using @samp{%(my-function)} will pass the tag
3817 to a custom function, and replace it by the resulting string.
3818
3819 If the replacement text don't contain any specifier, it will simply
3820 be appended to the string in order to create the link.
3821
3822 Instead of a string, you may also specify a function that will be
3823 called with the tag as the only argument to create the link.
3824
3825 With the above setting, you could link to a specific bug with
3826 @code{[[bugzilla:129]]}, search the web for @samp{OrgMode} with
3827 @code{[[google:OrgMode]]}, show the map location of the Free Software
3828 Foundation @code{[[gmap:51 Franklin Street, Boston]]} or of Carsten office
3829 @code{[[omap:Science Park 904, Amsterdam, The Netherlands]]} and find out
3830 what the Org author is doing besides Emacs hacking with
3831 @code{[[ads:Dominik,C]]}.
3832
3833 If you need special abbreviations just for a single Org buffer, you
3834 can define them in the file with
3835
3836 @cindex #+LINK
3837 @example
3838 #+LINK: bugzilla http://10.1.2.9/bugzilla/show_bug.cgi?id=
3839 #+LINK: google http://www.google.com/search?q=%s
3840 @end example
3841
3842 @noindent
3843 In-buffer completion (@pxref{Completion}) can be used after @samp{[} to
3844 complete link abbreviations. You may also define a function
3845 @code{org-PREFIX-complete-link} that implements special (e.g., completion)
3846 support for inserting such a link with @kbd{C-c C-l}. Such a function should
3847 not accept any arguments, and return the full link with prefix.
3848
3849 @node Search options, Custom searches, Link abbreviations, Hyperlinks
3850 @section Search options in file links
3851 @cindex search option in file links
3852 @cindex file links, searching
3853
3854 File links can contain additional information to make Emacs jump to a
3855 particular location in the file when following a link. This can be a
3856 line number or a search option after a double@footnote{For backward
3857 compatibility, line numbers can also follow a single colon.} colon. For
3858 example, when the command @kbd{C-c l} creates a link (@pxref{Handling
3859 links}) to a file, it encodes the words in the current line as a search
3860 string that can be used to find this line back later when following the
3861 link with @kbd{C-c C-o}.
3862
3863 Here is the syntax of the different ways to attach a search to a file
3864 link, together with an explanation:
3865
3866 @example
3867 [[file:~/code/main.c::255]]
3868 [[file:~/xx.org::My Target]]
3869 [[file:~/xx.org::*My Target]]
3870 [[file:~/xx.org::#my-custom-id]]
3871 [[file:~/xx.org::/regexp/]]
3872 @end example
3873
3874 @table @code
3875 @item 255
3876 Jump to line 255.
3877 @item My Target
3878 Search for a link target @samp{<<My Target>>}, or do a text search for
3879 @samp{my target}, similar to the search in internal links, see
3880 @ref{Internal links}. In HTML export (@pxref{HTML export}), such a file
3881 link will become an HTML reference to the corresponding named anchor in
3882 the linked file.
3883 @item *My Target
3884 In an Org file, restrict search to headlines.
3885 @item #my-custom-id
3886 Link to a heading with a @code{CUSTOM_ID} property
3887 @item /regexp/
3888 Do a regular expression search for @code{regexp}. This uses the Emacs
3889 command @code{occur} to list all matches in a separate window. If the
3890 target file is in Org mode, @code{org-occur} is used to create a
3891 sparse tree with the matches.
3892 @c If the target file is a directory,
3893 @c @code{grep} will be used to search all files in the directory.
3894 @end table
3895
3896 As a degenerate case, a file link with an empty file name can be used
3897 to search the current file. For example, @code{[[file:::find me]]} does
3898 a search for @samp{find me} in the current file, just as
3899 @samp{[[find me]]} would.
3900
3901 @node Custom searches, , Search options, Hyperlinks
3902 @section Custom Searches
3903 @cindex custom search strings
3904 @cindex search strings, custom
3905
3906 The default mechanism for creating search strings and for doing the
3907 actual search related to a file link may not work correctly in all
3908 cases. For example, Bib@TeX{} database files have many entries like
3909 @samp{year="1993"} which would not result in good search strings,
3910 because the only unique identification for a Bib@TeX{} entry is the
3911 citation key.
3912
3913 @vindex org-create-file-search-functions
3914 @vindex org-execute-file-search-functions
3915 If you come across such a problem, you can write custom functions to set
3916 the right search string for a particular file type, and to do the search
3917 for the string in the file. Using @code{add-hook}, these functions need
3918 to be added to the hook variables
3919 @code{org-create-file-search-functions} and
3920 @code{org-execute-file-search-functions}. See the docstring for these
3921 variables for more information. Org actually uses this mechanism
3922 for Bib@TeX{} database files, and you can use the corresponding code as
3923 an implementation example. See the file @file{org-bibtex.el}.
3924
3925 @node TODO Items, Tags, Hyperlinks, Top
3926 @chapter TODO items
3927 @cindex TODO items
3928
3929 Org mode does not maintain TODO lists as separate documents@footnote{Of
3930 course, you can make a document that contains only long lists of TODO items,
3931 but this is not required.}. Instead, TODO items are an integral part of the
3932 notes file, because TODO items usually come up while taking notes! With Org
3933 mode, simply mark any entry in a tree as being a TODO item. In this way,
3934 information is not duplicated, and the entire context from which the TODO
3935 item emerged is always present.
3936
3937 Of course, this technique for managing TODO items scatters them
3938 throughout your notes file. Org mode compensates for this by providing
3939 methods to give you an overview of all the things that you have to do.
3940
3941 @menu
3942 * TODO basics:: Marking and displaying TODO entries
3943 * TODO extensions:: Workflow and assignments
3944 * Progress logging:: Dates and notes for progress
3945 * Priorities:: Some things are more important than others
3946 * Breaking down tasks:: Splitting a task into manageable pieces
3947 * Checkboxes:: Tick-off lists
3948 @end menu
3949
3950 @node TODO basics, TODO extensions, TODO Items, TODO Items
3951 @section Basic TODO functionality
3952
3953 Any headline becomes a TODO item when it starts with the word
3954 @samp{TODO}, for example:
3955
3956 @example
3957 *** TODO Write letter to Sam Fortune
3958 @end example
3959
3960 @noindent
3961 The most important commands to work with TODO entries are:
3962
3963 @table @kbd
3964 @orgcmd{C-c C-t,org-todo}
3965 @cindex cycling, of TODO states
3966 @vindex org-use-fast-todo-selection
3967
3968 Rotate the TODO state of the current item among
3969
3970 @example
3971 ,-> (unmarked) -> TODO -> DONE --.
3972 '--------------------------------'
3973 @end example
3974
3975 If TODO keywords have fast access keys (see @ref{Fast access to TODO
3976 states}), you will be prompted for a TODO keyword through the fast selection
3977 interface; this is the default behavior when
3978 @code{org-use-fast-todo-selection} is non-@code{nil}.
3979
3980 The same rotation can also be done ``remotely'' from the timeline and agenda
3981 buffers with the @kbd{t} command key (@pxref{Agenda commands}).
3982
3983 @orgkey{C-u C-c C-t}
3984 When TODO keywords have no selection keys, select a specific keyword using
3985 completion; otherwise force cycling through TODO states with no prompt. When
3986 @code{org-use-fast-todo-selection} is set to @code{prefix}, use the fast
3987 selection interface.
3988
3989 @kindex S-@key{right}
3990 @kindex S-@key{left}
3991 @item S-@key{right} @ @r{/} @ S-@key{left}
3992 @vindex org-treat-S-cursor-todo-selection-as-state-change
3993 Select the following/preceding TODO state, similar to cycling. Useful
3994 mostly if more than two TODO states are possible (@pxref{TODO
3995 extensions}). See also @ref{Conflicts}, for a discussion of the interaction
3996 with @code{shift-selection-mode}. See also the variable
3997 @code{org-treat-S-cursor-todo-selection-as-state-change}.
3998 @orgcmd{C-c / t,org-show-todo-tree}
3999 @cindex sparse tree, for TODO
4000 @vindex org-todo-keywords
4001 View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}). Folds the
4002 entire buffer, but shows all TODO items (with not-DONE state) and the
4003 headings hierarchy above them. With a prefix argument (or by using @kbd{C-c
4004 / T}), search for a specific TODO@. You will be prompted for the keyword,
4005 and you can also give a list of keywords like @code{KWD1|KWD2|...} to list
4006 entries that match any one of these keywords. With a numeric prefix argument
4007 N, show the tree for the Nth keyword in the option @code{org-todo-keywords}.
4008 With two prefix arguments, find all TODO states, both un-done and done.
4009 @orgcmd{C-c a t,org-todo-list}
4010 Show the global TODO list. Collects the TODO items (with not-DONE states)
4011 from all agenda files (@pxref{Agenda Views}) into a single buffer. The new
4012 buffer will be in @code{agenda-mode}, which provides commands to examine and
4013 manipulate the TODO entries from the new buffer (@pxref{Agenda commands}).
4014 @xref{Global TODO list}, for more information.
4015 @orgcmd{S-M-@key{RET},org-insert-todo-heading}
4016 Insert a new TODO entry below the current one.
4017 @end table
4018
4019 @noindent
4020 @vindex org-todo-state-tags-triggers
4021 Changing a TODO state can also trigger tag changes. See the docstring of the
4022 option @code{org-todo-state-tags-triggers} for details.
4023
4024 @node TODO extensions, Progress logging, TODO basics, TODO Items
4025 @section Extended use of TODO keywords
4026 @cindex extended TODO keywords
4027
4028 @vindex org-todo-keywords
4029 By default, marked TODO entries have one of only two states: TODO and
4030 DONE@. Org mode allows you to classify TODO items in more complex ways
4031 with @emph{TODO keywords} (stored in @code{org-todo-keywords}). With
4032 special setup, the TODO keyword system can work differently in different
4033 files.
4034
4035 Note that @i{tags} are another way to classify headlines in general and
4036 TODO items in particular (@pxref{Tags}).
4037
4038 @menu
4039 * Workflow states:: From TODO to DONE in steps
4040 * TODO types:: I do this, Fred does the rest
4041 * Multiple sets in one file:: Mixing it all, and still finding your way
4042 * Fast access to TODO states:: Single letter selection of a state
4043 * Per-file keywords:: Different files, different requirements
4044 * Faces for TODO keywords:: Highlighting states
4045 * TODO dependencies:: When one task needs to wait for others
4046 @end menu
4047
4048 @node Workflow states, TODO types, TODO extensions, TODO extensions
4049 @subsection TODO keywords as workflow states
4050 @cindex TODO workflow
4051 @cindex workflow states as TODO keywords
4052
4053 You can use TODO keywords to indicate different @emph{sequential} states
4054 in the process of working on an item, for example@footnote{Changing
4055 this variable only becomes effective after restarting Org mode in a
4056 buffer.}:
4057
4058 @lisp
4059 (setq org-todo-keywords
4060 '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
4061 @end lisp
4062
4063 The vertical bar separates the TODO keywords (states that @emph{need
4064 action}) from the DONE states (which need @emph{no further action}). If
4065 you don't provide the separator bar, the last state is used as the DONE
4066 state.
4067 @cindex completion, of TODO keywords
4068 With this setup, the command @kbd{C-c C-t} will cycle an entry from TODO
4069 to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED@. You may
4070 also use a numeric prefix argument to quickly select a specific state. For
4071 example @kbd{C-3 C-c C-t} will change the state immediately to VERIFY@.
4072 Or you can use @kbd{S-@key{left}} to go backward through the sequence. If you
4073 define many keywords, you can use in-buffer completion
4074 (@pxref{Completion}) or even a special one-key selection scheme
4075 (@pxref{Fast access to TODO states}) to insert these words into the
4076 buffer. Changing a TODO state can be logged with a timestamp, see
4077 @ref{Tracking TODO state changes}, for more information.
4078
4079 @node TODO types, Multiple sets in one file, Workflow states, TODO extensions
4080 @subsection TODO keywords as types
4081 @cindex TODO types
4082 @cindex names as TODO keywords
4083 @cindex types as TODO keywords
4084
4085 The second possibility is to use TODO keywords to indicate different
4086 @emph{types} of action items. For example, you might want to indicate
4087 that items are for ``work'' or ``home''. Or, when you work with several
4088 people on a single project, you might want to assign action items
4089 directly to persons, by using their names as TODO keywords. This would
4090 be set up like this:
4091
4092 @lisp
4093 (setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
4094 @end lisp
4095
4096 In this case, different keywords do not indicate a sequence, but rather
4097 different types. So the normal work flow would be to assign a task to a
4098 person, and later to mark it DONE@. Org mode supports this style by adapting
4099 the workings of the command @kbd{C-c C-t}@footnote{This is also true for the
4100 @kbd{t} command in the timeline and agenda buffers.}. When used several
4101 times in succession, it will still cycle through all names, in order to first
4102 select the right type for a task. But when you return to the item after some
4103 time and execute @kbd{C-c C-t} again, it will switch from any name directly
4104 to DONE@. Use prefix arguments or completion to quickly select a specific
4105 name. You can also review the items of a specific TODO type in a sparse tree
4106 by using a numeric prefix to @kbd{C-c / t}. For example, to see all things
4107 Lucy has to do, you would use @kbd{C-3 C-c / t}. To collect Lucy's items
4108 from all agenda files into a single buffer, you would use the numeric prefix
4109 argument as well when creating the global TODO list: @kbd{C-3 C-c a t}.
4110
4111 @node Multiple sets in one file, Fast access to TODO states, TODO types, TODO extensions
4112 @subsection Multiple keyword sets in one file
4113 @cindex TODO keyword sets
4114
4115 Sometimes you may want to use different sets of TODO keywords in
4116 parallel. For example, you may want to have the basic
4117 @code{TODO}/@code{DONE}, but also a workflow for bug fixing, and a
4118 separate state indicating that an item has been canceled (so it is not
4119 DONE, but also does not require action). Your setup would then look
4120 like this:
4121
4122 @lisp
4123 (setq org-todo-keywords
4124 '((sequence "TODO" "|" "DONE")
4125 (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
4126 (sequence "|" "CANCELED")))
4127 @end lisp
4128
4129 The keywords should all be different, this helps Org mode to keep track
4130 of which subsequence should be used for a given entry. In this setup,
4131 @kbd{C-c C-t} only operates within a subsequence, so it switches from
4132 @code{DONE} to (nothing) to @code{TODO}, and from @code{FIXED} to
4133 (nothing) to @code{REPORT}. Therefore you need a mechanism to initially
4134 select the correct sequence. Besides the obvious ways like typing a
4135 keyword or using completion, you may also apply the following commands:
4136
4137 @table @kbd
4138 @kindex C-S-@key{right}
4139 @kindex C-S-@key{left}
4140 @kindex C-u C-u C-c C-t
4141 @item C-u C-u C-c C-t
4142 @itemx C-S-@key{right}
4143 @itemx C-S-@key{left}
4144 These keys jump from one TODO subset to the next. In the above example,
4145 @kbd{C-u C-u C-c C-t} or @kbd{C-S-@key{right}} would jump from @code{TODO} or
4146 @code{DONE} to @code{REPORT}, and any of the words in the second row to
4147 @code{CANCELED}. Note that the @kbd{C-S-} key binding conflict with
4148 @code{shift-selection-mode} (@pxref{Conflicts}).
4149 @kindex S-@key{right}
4150 @kindex S-@key{left}
4151 @item S-@key{right}
4152 @itemx S-@key{left}
4153 @kbd{S-@key{<left>}} and @kbd{S-@key{<right>}} and walk through @emph{all}
4154 keywords from all sets, so for example @kbd{S-@key{<right>}} would switch
4155 from @code{DONE} to @code{REPORT} in the example above. See also
4156 @ref{Conflicts}, for a discussion of the interaction with
4157 @code{shift-selection-mode}.
4158 @end table
4159
4160 @node Fast access to TODO states, Per-file keywords, Multiple sets in one file, TODO extensions
4161 @subsection Fast access to TODO states
4162
4163 If you would like to quickly change an entry to an arbitrary TODO state
4164 instead of cycling through the states, you can set up keys for single-letter
4165 access to the states. This is done by adding the selection character after
4166 each keyword, in parentheses@footnote{All characters are allowed except
4167 @code{@@^!}, which have a special meaning here.}. For example:
4168
4169 @lisp
4170 (setq org-todo-keywords
4171 '((sequence "TODO(t)" "|" "DONE(d)")
4172 (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
4173 (sequence "|" "CANCELED(c)")))
4174 @end lisp
4175
4176 @vindex org-fast-tag-selection-include-todo
4177 If you then press @kbd{C-c C-t} followed by the selection key, the entry
4178 will be switched to this state. @kbd{SPC} can be used to remove any TODO
4179 keyword from an entry.@footnote{Check also the option
4180 @code{org-fast-tag-selection-include-todo}, it allows you to change the TODO
4181 state through the tags interface (@pxref{Setting tags}), in case you like to
4182 mingle the two concepts. Note that this means you need to come up with
4183 unique keys across both sets of keywords.}
4184
4185 @node Per-file keywords, Faces for TODO keywords, Fast access to TODO states, TODO extensions
4186 @subsection Setting up keywords for individual files
4187 @cindex keyword options
4188 @cindex per-file keywords
4189 @cindex #+TODO
4190 @cindex #+TYP_TODO
4191 @cindex #+SEQ_TODO
4192
4193 It can be very useful to use different aspects of the TODO mechanism in
4194 different files. For file-local settings, you need to add special lines
4195 to the file which set the keywords and interpretation for that file
4196 only. For example, to set one of the two examples discussed above, you
4197 need one of the following lines, starting in column zero anywhere in the
4198 file:
4199
4200 @example
4201 #+TODO: TODO FEEDBACK VERIFY | DONE CANCELED
4202 @end example
4203 @noindent (you may also write @code{#+SEQ_TODO} to be explicit about the
4204 interpretation, but it means the same as @code{#+TODO}), or
4205 @example
4206 #+TYP_TODO: Fred Sara Lucy Mike | DONE
4207 @end example
4208
4209 A setup for using several sets in parallel would be:
4210
4211 @example
4212 #+TODO: TODO | DONE
4213 #+TODO: REPORT BUG KNOWNCAUSE | FIXED
4214 #+TODO: | CANCELED
4215 @end example
4216
4217 @cindex completion, of option keywords
4218 @kindex M-@key{TAB}
4219 @noindent To make sure you are using the correct keyword, type
4220 @samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
4221
4222 @cindex DONE, final TODO keyword
4223 Remember that the keywords after the vertical bar (or the last keyword
4224 if no bar is there) must always mean that the item is DONE (although you
4225 may use a different word). After changing one of these lines, use
4226 @kbd{C-c C-c} with the cursor still in the line to make the changes
4227 known to Org mode@footnote{Org mode parses these lines only when
4228 Org mode is activated after visiting a file. @kbd{C-c C-c} with the
4229 cursor in a line starting with @samp{#+} is simply restarting Org mode
4230 for the current buffer.}.
4231
4232 @node Faces for TODO keywords, TODO dependencies, Per-file keywords, TODO extensions
4233 @subsection Faces for TODO keywords
4234 @cindex faces, for TODO keywords
4235
4236 @vindex org-todo @r{(face)}
4237 @vindex org-done @r{(face)}
4238 @vindex org-todo-keyword-faces
4239 Org mode highlights TODO keywords with special faces: @code{org-todo}
4240 for keywords indicating that an item still has to be acted upon, and
4241 @code{org-done} for keywords indicating that an item is finished. If
4242 you are using more than 2 different states, you might want to use
4243 special faces for some of them. This can be done using the option
4244 @code{org-todo-keyword-faces}. For example:
4245
4246 @lisp
4247 @group
4248 (setq org-todo-keyword-faces
4249 '(("TODO" . org-warning) ("STARTED" . "yellow")
4250 ("CANCELED" . (:foreground "blue" :weight bold))))
4251 @end group
4252 @end lisp
4253
4254 While using a list with face properties as shown for CANCELED @emph{should}
4255 work, this does not always seem to be the case. If necessary, define a
4256 special face and use that. A string is interpreted as a color. The option
4257 @code{org-faces-easy-properties} determines if that color is interpreted as a
4258 foreground or a background color.
4259
4260 @node TODO dependencies, , Faces for TODO keywords, TODO extensions
4261 @subsection TODO dependencies
4262 @cindex TODO dependencies
4263 @cindex dependencies, of TODO states
4264
4265 @vindex org-enforce-todo-dependencies
4266 @cindex property, ORDERED
4267 The structure of Org files (hierarchy and lists) makes it easy to define TODO
4268 dependencies. Usually, a parent TODO task should not be marked DONE until
4269 all subtasks (defined as children tasks) are marked as DONE@. And sometimes
4270 there is a logical sequence to a number of (sub)tasks, so that one task
4271 cannot be acted upon before all siblings above it are done. If you customize
4272 the option @code{org-enforce-todo-dependencies}, Org will block entries
4273 from changing state to DONE while they have children that are not DONE@.
4274 Furthermore, if an entry has a property @code{ORDERED}, each of its children
4275 will be blocked until all earlier siblings are marked DONE@. Here is an
4276 example:
4277
4278 @example
4279 * TODO Blocked until (two) is done
4280 ** DONE one
4281 ** TODO two
4282
4283 * Parent
4284 :PROPERTIES:
4285 :ORDERED: t
4286 :END:
4287 ** TODO a
4288 ** TODO b, needs to wait for (a)
4289 ** TODO c, needs to wait for (a) and (b)
4290 @end example
4291
4292 @table @kbd
4293 @orgcmd{C-c C-x o,org-toggle-ordered-property}
4294 @vindex org-track-ordered-property-with-tag
4295 @cindex property, ORDERED
4296 Toggle the @code{ORDERED} property of the current entry. A property is used
4297 for this behavior because this should be local to the current entry, not
4298 inherited like a tag. However, if you would like to @i{track} the value of
4299 this property with a tag for better visibility, customize the option
4300 @code{org-track-ordered-property-with-tag}.
4301 @orgkey{C-u C-u C-u C-c C-t}
4302 Change TODO state, circumventing any state blocking.
4303 @end table
4304
4305 @vindex org-agenda-dim-blocked-tasks
4306 If you set the option @code{org-agenda-dim-blocked-tasks}, TODO entries
4307 that cannot be closed because of such dependencies will be shown in a dimmed
4308 font or even made invisible in agenda views (@pxref{Agenda Views}).
4309
4310 @cindex checkboxes and TODO dependencies
4311 @vindex org-enforce-todo-dependencies
4312 You can also block changes of TODO states by looking at checkboxes
4313 (@pxref{Checkboxes}). If you set the option
4314 @code{org-enforce-todo-checkbox-dependencies}, an entry that has unchecked
4315 checkboxes will be blocked from switching to DONE.
4316
4317 If you need more complex dependency structures, for example dependencies
4318 between entries in different trees or files, check out the contributed
4319 module @file{org-depend.el}.
4320
4321 @page
4322 @node Progress logging, Priorities, TODO extensions, TODO Items
4323 @section Progress logging
4324 @cindex progress logging
4325 @cindex logging, of progress
4326
4327 Org mode can automatically record a timestamp and possibly a note when
4328 you mark a TODO item as DONE, or even each time you change the state of
4329 a TODO item. This system is highly configurable; settings can be on a
4330 per-keyword basis and can be localized to a file or even a subtree. For
4331 information on how to clock working time for a task, see @ref{Clocking
4332 work time}.
4333
4334 @menu
4335 * Closing items:: When was this entry marked DONE?
4336 * Tracking TODO state changes:: When did the status change?
4337 * Tracking your habits:: How consistent have you been?
4338 @end menu
4339
4340 @node Closing items, Tracking TODO state changes, Progress logging, Progress logging
4341 @subsection Closing items
4342
4343 The most basic logging is to keep track of @emph{when} a certain TODO
4344 item was finished. This is achieved with@footnote{The corresponding
4345 in-buffer setting is: @code{#+STARTUP: logdone}}
4346
4347 @lisp
4348 (setq org-log-done 'time)
4349 @end lisp
4350
4351 @vindex org-closed-keep-when-no-todo
4352 @noindent
4353 Then each time you turn an entry from a TODO (not-done) state into any of the
4354 DONE states, a line @samp{CLOSED: [timestamp]} will be inserted just after
4355 the headline. If you turn the entry back into a TODO item through further
4356 state cycling, that line will be removed again. If you turn the entry back
4357 to a non-TODO state (by pressing @key{C-c C-t SPC} for example), that line
4358 will also be removed, unless you set @code{org-closed-keep-when-no-todo} to
4359 non-@code{nil}. If you want to record a note along with the timestamp,
4360 use@footnote{The corresponding in-buffer setting is: @code{#+STARTUP:
4361 lognotedone}.}
4362
4363 @lisp
4364 (setq org-log-done 'note)
4365 @end lisp
4366
4367 @noindent
4368 You will then be prompted for a note, and that note will be stored below
4369 the entry with a @samp{Closing Note} heading.
4370
4371 In the timeline (@pxref{Timeline}) and in the agenda
4372 (@pxref{Weekly/daily agenda}), you can then use the @kbd{l} key to
4373 display the TODO items with a @samp{CLOSED} timestamp on each day,
4374 giving you an overview of what has been done.
4375
4376 @node Tracking TODO state changes, Tracking your habits, Closing items, Progress logging
4377 @subsection Tracking TODO state changes
4378 @cindex drawer, for state change recording
4379
4380 @vindex org-log-states-order-reversed
4381 @vindex org-log-into-drawer
4382 @cindex property, LOG_INTO_DRAWER
4383 When TODO keywords are used as workflow states (@pxref{Workflow states}), you
4384 might want to keep track of when a state change occurred and maybe take a
4385 note about this change. You can either record just a timestamp, or a
4386 time-stamped note for a change. These records will be inserted after the
4387 headline as an itemized list, newest first@footnote{See the option
4388 @code{org-log-states-order-reversed}}. When taking a lot of notes, you might
4389 want to get the notes out of the way into a drawer (@pxref{Drawers}).
4390 Customize @code{org-log-into-drawer} to get this behavior---the recommended
4391 drawer for this is called @code{LOGBOOK}@footnote{Note that the
4392 @code{LOGBOOK} drawer is unfolded when pressing @key{SPC} in the agenda to
4393 show an entry---use @key{C-u SPC} to keep it folded here}. You can also
4394 overrule the setting of this variable for a subtree by setting a
4395 @code{LOG_INTO_DRAWER} property.
4396
4397 Since it is normally too much to record a note for every state, Org mode
4398 expects configuration on a per-keyword basis for this. This is achieved by
4399 adding special markers @samp{!} (for a timestamp) or @samp{@@} (for a note
4400 with timestamp) in parentheses after each keyword. For example, with the
4401 setting
4402
4403 @lisp
4404 (setq org-todo-keywords
4405 '((sequence "TODO(t)" "WAIT(w@@/!)" "|" "DONE(d!)" "CANCELED(c@@)")))
4406 @end lisp
4407
4408 To record a timestamp without a note for TODO keywords configured with
4409 @samp{@@}, just type @kbd{C-c C-c} to enter a blank note when prompted.
4410
4411 @noindent
4412 @vindex org-log-done
4413 you not only define global TODO keywords and fast access keys, but also
4414 request that a time is recorded when the entry is set to
4415 DONE@footnote{It is possible that Org mode will record two timestamps
4416 when you are using both @code{org-log-done} and state change logging.
4417 However, it will never prompt for two notes---if you have configured
4418 both, the state change recording note will take precedence and cancel
4419 the @samp{Closing Note}.}, and that a note is recorded when switching to
4420 WAIT or CANCELED@. The setting for WAIT is even more special: the
4421 @samp{!} after the slash means that in addition to the note taken when
4422 entering the state, a timestamp should be recorded when @i{leaving} the
4423 WAIT state, if and only if the @i{target} state does not configure
4424 logging for entering it. So it has no effect when switching from WAIT
4425 to DONE, because DONE is configured to record a timestamp only. But
4426 when switching from WAIT back to TODO, the @samp{/!} in the WAIT
4427 setting now triggers a timestamp even though TODO has no logging
4428 configured.
4429
4430 You can use the exact same syntax for setting logging preferences local
4431 to a buffer:
4432 @example
4433 #+TODO: TODO(t) WAIT(w@@/!) | DONE(d!) CANCELED(c@@)
4434 @end example
4435
4436 @cindex property, LOGGING
4437 In order to define logging settings that are local to a subtree or a
4438 single item, define a LOGGING property in this entry. Any non-empty
4439 LOGGING property resets all logging settings to @code{nil}. You may then turn
4440 on logging for this specific tree using STARTUP keywords like
4441 @code{lognotedone} or @code{logrepeat}, as well as adding state specific
4442 settings like @code{TODO(!)}. For example
4443
4444 @example
4445 * TODO Log each state with only a time
4446 :PROPERTIES:
4447 :LOGGING: TODO(!) WAIT(!) DONE(!) CANCELED(!)
4448 :END:
4449 * TODO Only log when switching to WAIT, and when repeating
4450 :PROPERTIES:
4451 :LOGGING: WAIT(@@) logrepeat
4452 :END:
4453 * TODO No logging at all
4454 :PROPERTIES:
4455 :LOGGING: nil
4456 :END:
4457 @end example
4458
4459 @node Tracking your habits, , Tracking TODO state changes, Progress logging
4460 @subsection Tracking your habits
4461 @cindex habits
4462
4463 Org has the ability to track the consistency of a special category of TODOs,
4464 called ``habits''. A habit has the following properties:
4465
4466 @enumerate
4467 @item
4468 You have enabled the @code{habits} module by customizing @code{org-modules}.
4469 @item
4470 The habit is a TODO item, with a TODO keyword representing an open state.
4471 @item
4472 The property @code{STYLE} is set to the value @code{habit}.
4473 @item
4474 The TODO has a scheduled date, usually with a @code{.+} style repeat
4475 interval. A @code{++} style may be appropriate for habits with time
4476 constraints, e.g., must be done on weekends, or a @code{+} style for an
4477 unusual habit that can have a backlog, e.g., weekly reports.
4478 @item
4479 The TODO may also have minimum and maximum ranges specified by using the
4480 syntax @samp{.+2d/3d}, which says that you want to do the task at least every
4481 three days, but at most every two days.
4482 @item
4483 You must also have state logging for the @code{DONE} state enabled
4484 (@pxref{Tracking TODO state changes}), in order for historical data to be
4485 represented in the consistency graph. If it is not enabled it is not an
4486 error, but the consistency graphs will be largely meaningless.
4487 @end enumerate
4488
4489 To give you an idea of what the above rules look like in action, here's an
4490 actual habit with some history:
4491
4492 @example
4493 ** TODO Shave
4494 SCHEDULED: <2009-10-17 Sat .+2d/4d>
4495 - State "DONE" from "TODO" [2009-10-15 Thu]
4496 - State "DONE" from "TODO" [2009-10-12 Mon]
4497 - State "DONE" from "TODO" [2009-10-10 Sat]
4498 - State "DONE" from "TODO" [2009-10-04 Sun]
4499 - State "DONE" from "TODO" [2009-10-02 Fri]
4500 - State "DONE" from "TODO" [2009-09-29 Tue]
4501 - State "DONE" from "TODO" [2009-09-25 Fri]
4502 - State "DONE" from "TODO" [2009-09-19 Sat]
4503 - State "DONE" from "TODO" [2009-09-16 Wed]
4504 - State "DONE" from "TODO" [2009-09-12 Sat]
4505 :PROPERTIES:
4506 :STYLE: habit
4507 :LAST_REPEAT: [2009-10-19 Mon 00:36]
4508 :END:
4509 @end example
4510
4511 What this habit says is: I want to shave at most every 2 days (given by the
4512 @code{SCHEDULED} date and repeat interval) and at least every 4 days. If
4513 today is the 15th, then the habit first appears in the agenda on Oct 17,
4514 after the minimum of 2 days has elapsed, and will appear overdue on Oct 19,
4515 after four days have elapsed.
4516
4517 What's really useful about habits is that they are displayed along with a
4518 consistency graph, to show how consistent you've been at getting that task
4519 done in the past. This graph shows every day that the task was done over the
4520 past three weeks, with colors for each day. The colors used are:
4521
4522 @table @code
4523 @item Blue
4524 If the task wasn't to be done yet on that day.
4525 @item Green
4526 If the task could have been done on that day.
4527 @item Yellow
4528 If the task was going to be overdue the next day.
4529 @item Red
4530 If the task was overdue on that day.
4531 @end table
4532
4533 In addition to coloring each day, the day is also marked with an asterisk if
4534 the task was actually done that day, and an exclamation mark to show where
4535 the current day falls in the graph.
4536
4537 There are several configuration variables that can be used to change the way
4538 habits are displayed in the agenda.
4539
4540 @table @code
4541 @item org-habit-graph-column
4542 The buffer column at which the consistency graph should be drawn. This will
4543 overwrite any text in that column, so it is a good idea to keep your habits'
4544 titles brief and to the point.
4545 @item org-habit-preceding-days
4546 The amount of history, in days before today, to appear in consistency graphs.
4547 @item org-habit-following-days
4548 The number of days after today that will appear in consistency graphs.
4549 @item org-habit-show-habits-only-for-today
4550 If non-@code{nil}, only show habits in today's agenda view. This is set to true by
4551 default.
4552 @end table
4553
4554 Lastly, pressing @kbd{K} in the agenda buffer will cause habits to
4555 temporarily be disabled and they won't appear at all. Press @kbd{K} again to
4556 bring them back. They are also subject to tag filtering, if you have habits
4557 which should only be done in certain contexts, for example.
4558
4559 @node Priorities, Breaking down tasks, Progress logging, TODO Items
4560 @section Priorities
4561 @cindex priorities
4562
4563 If you use Org mode extensively, you may end up with enough TODO items that
4564 it starts to make sense to prioritize them. Prioritizing can be done by
4565 placing a @emph{priority cookie} into the headline of a TODO item, like this
4566
4567 @example
4568 *** TODO [#A] Write letter to Sam Fortune
4569 @end example
4570
4571 @noindent
4572 @vindex org-priority-faces
4573 By default, Org mode supports three priorities: @samp{A}, @samp{B}, and
4574 @samp{C}. @samp{A} is the highest priority. An entry without a cookie is
4575 treated just like priority @samp{B}. Priorities make a difference only for
4576 sorting in the agenda (@pxref{Weekly/daily agenda}); outside the agenda, they
4577 have no inherent meaning to Org mode. The cookies can be highlighted with
4578 special faces by customizing @code{org-priority-faces}.
4579
4580 Priorities can be attached to any outline node; they do not need to be TODO
4581 items.
4582
4583 @table @kbd
4584 @item @kbd{C-c ,}
4585 @kindex @kbd{C-c ,}
4586 @findex org-priority
4587 Set the priority of the current headline (@command{org-priority}). The
4588 command prompts for a priority character @samp{A}, @samp{B} or @samp{C}.
4589 When you press @key{SPC} instead, the priority cookie is removed from the
4590 headline. The priorities can also be changed ``remotely'' from the timeline
4591 and agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
4592 @c
4593 @orgcmdkkcc{S-@key{up},S-@key{down},org-priority-up,org-priority-down}
4594 @vindex org-priority-start-cycle-with-default
4595 Increase/decrease priority of current headline@footnote{See also the option
4596 @code{org-priority-start-cycle-with-default}.}. Note that these keys are
4597 also used to modify timestamps (@pxref{Creating timestamps}). See also
4598 @ref{Conflicts}, for a discussion of the interaction with
4599 @code{shift-selection-mode}.
4600 @end table
4601
4602 @vindex org-highest-priority
4603 @vindex org-lowest-priority
4604 @vindex org-default-priority
4605 You can change the range of allowed priorities by setting the options
4606 @code{org-highest-priority}, @code{org-lowest-priority}, and
4607 @code{org-default-priority}. For an individual buffer, you may set
4608 these values (highest, lowest, default) like this (please make sure that
4609 the highest priority is earlier in the alphabet than the lowest
4610 priority):
4611
4612 @cindex #+PRIORITIES
4613 @example
4614 #+PRIORITIES: A C B
4615 @end example
4616
4617 @node Breaking down tasks, Checkboxes, Priorities, TODO Items
4618 @section Breaking tasks down into subtasks
4619 @cindex tasks, breaking down
4620 @cindex statistics, for TODO items
4621
4622 @vindex org-agenda-todo-list-sublevels
4623 It is often advisable to break down large tasks into smaller, manageable
4624 subtasks. You can do this by creating an outline tree below a TODO item,
4625 with detailed subtasks on the tree@footnote{To keep subtasks out of the
4626 global TODO list, see the @code{org-agenda-todo-list-sublevels}.}. To keep
4627 the overview over the fraction of subtasks that are already completed, insert
4628 either @samp{[/]} or @samp{[%]} anywhere in the headline. These cookies will
4629 be updated each time the TODO status of a child changes, or when pressing
4630 @kbd{C-c C-c} on the cookie. For example:
4631
4632 @example
4633 * Organize Party [33%]
4634 ** TODO Call people [1/2]
4635 *** TODO Peter
4636 *** DONE Sarah
4637 ** TODO Buy food
4638 ** DONE Talk to neighbor
4639 @end example
4640
4641 @cindex property, COOKIE_DATA
4642 If a heading has both checkboxes and TODO children below it, the meaning of
4643 the statistics cookie become ambiguous. Set the property
4644 @code{COOKIE_DATA} to either @samp{checkbox} or @samp{todo} to resolve
4645 this issue.
4646
4647 @vindex org-hierarchical-todo-statistics
4648 If you would like to have the statistics cookie count any TODO entries in the
4649 subtree (not just direct children), configure
4650 @code{org-hierarchical-todo-statistics}. To do this for a single subtree,
4651 include the word @samp{recursive} into the value of the @code{COOKIE_DATA}
4652 property.
4653
4654 @example
4655 * Parent capturing statistics [2/20]
4656 :PROPERTIES:
4657 :COOKIE_DATA: todo recursive
4658 :END:
4659 @end example
4660
4661 If you would like a TODO entry to automatically change to DONE
4662 when all children are done, you can use the following setup:
4663
4664 @example
4665 (defun org-summary-todo (n-done n-not-done)
4666 "Switch entry to DONE when all subentries are done, to TODO otherwise."
4667 (let (org-log-done org-log-states) ; turn off logging
4668 (org-todo (if (= n-not-done 0) "DONE" "TODO"))))
4669
4670 (add-hook 'org-after-todo-statistics-hook 'org-summary-todo)
4671 @end example
4672
4673
4674 Another possibility is the use of checkboxes to identify (a hierarchy of) a
4675 large number of subtasks (@pxref{Checkboxes}).
4676
4677
4678 @node Checkboxes, , Breaking down tasks, TODO Items
4679 @section Checkboxes
4680 @cindex checkboxes
4681
4682 @vindex org-list-automatic-rules
4683 Every item in a plain list@footnote{With the exception of description
4684 lists. But you can allow it by modifying @code{org-list-automatic-rules}
4685 accordingly.} (@pxref{Plain lists}) can be made into a checkbox by starting
4686 it with the string @samp{[ ]}. This feature is similar to TODO items
4687 (@pxref{TODO Items}), but is more lightweight. Checkboxes are not included
4688 in the global TODO list, so they are often great to split a task into a
4689 number of simple steps. Or you can use them in a shopping list. To toggle a
4690 checkbox, use @kbd{C-c C-c}, or use the mouse (thanks to Piotr Zielinski's
4691 @file{org-mouse.el}).
4692
4693 Here is an example of a checkbox list.
4694
4695 @example
4696 * TODO Organize party [2/4]
4697 - [-] call people [1/3]
4698 - [ ] Peter
4699 - [X] Sarah
4700 - [ ] Sam
4701 - [X] order food
4702 - [ ] think about what music to play
4703 - [X] talk to the neighbors
4704 @end example
4705
4706 Checkboxes work hierarchically, so if a checkbox item has children that
4707 are checkboxes, toggling one of the children checkboxes will make the
4708 parent checkbox reflect if none, some, or all of the children are
4709 checked.
4710
4711 @cindex statistics, for checkboxes
4712 @cindex checkbox statistics
4713 @cindex property, COOKIE_DATA
4714 @vindex org-checkbox-hierarchical-statistics
4715 The @samp{[2/4]} and @samp{[1/3]} in the first and second line are cookies
4716 indicating how many checkboxes present in this entry have been checked off,
4717 and the total number of checkboxes present. This can give you an idea on how
4718 many checkboxes remain, even without opening a folded entry. The cookies can
4719 be placed into a headline or into (the first line of) a plain list item.
4720 Each cookie covers checkboxes of direct children structurally below the
4721 headline/item on which the cookie appears@footnote{Set the option
4722 @code{org-checkbox-hierarchical-statistics} if you want such cookies to
4723 count all checkboxes below the cookie, not just those belonging to direct
4724 children.}. You have to insert the cookie yourself by typing either
4725 @samp{[/]} or @samp{[%]}. With @samp{[/]} you get an @samp{n out of m}
4726 result, as in the examples above. With @samp{[%]} you get information about
4727 the percentage of checkboxes checked (in the above example, this would be
4728 @samp{[50%]} and @samp{[33%]}, respectively). In a headline, a cookie can
4729 count either checkboxes below the heading or TODO states of children, and it
4730 will display whatever was changed last. Set the property @code{COOKIE_DATA}
4731 to either @samp{checkbox} or @samp{todo} to resolve this issue.
4732
4733 @cindex blocking, of checkboxes
4734 @cindex checkbox blocking
4735 @cindex property, ORDERED
4736 If the current outline node has an @code{ORDERED} property, checkboxes must
4737 be checked off in sequence, and an error will be thrown if you try to check
4738 off a box while there are unchecked boxes above it.
4739
4740 @noindent The following commands work with checkboxes:
4741
4742 @table @kbd
4743 @orgcmd{C-c C-c,org-toggle-checkbox}
4744 Toggle checkbox status or (with prefix arg) checkbox presence at point.
4745 With a single prefix argument, add an empty checkbox or remove the current
4746 one@footnote{@kbd{C-u C-c C-c} on the @emph{first} item of a list with no checkbox
4747 will add checkboxes to the rest of the list.}. With a double prefix argument, set it to @samp{[-]}, which is
4748 considered to be an intermediate state.
4749 @orgcmd{C-c C-x C-b,org-toggle-checkbox}
4750 Toggle checkbox status or (with prefix arg) checkbox presence at point. With
4751 double prefix argument, set it to @samp{[-]}, which is considered to be an
4752 intermediate state.
4753 @itemize @minus
4754 @item
4755 If there is an active region, toggle the first checkbox in the region
4756 and set all remaining boxes to the same status as the first. With a prefix
4757 arg, add or remove the checkbox for all items in the region.
4758 @item
4759 If the cursor is in a headline, toggle checkboxes in the region between
4760 this headline and the next (so @emph{not} the entire subtree).
4761 @item
4762 If there is no active region, just toggle the checkbox at point.
4763 @end itemize
4764 @orgcmd{M-S-@key{RET},org-insert-todo-heading}
4765 Insert a new item with a checkbox. This works only if the cursor is already
4766 in a plain list item (@pxref{Plain lists}).
4767 @orgcmd{C-c C-x o,org-toggle-ordered-property}
4768 @vindex org-track-ordered-property-with-tag
4769 @cindex property, ORDERED
4770 Toggle the @code{ORDERED} property of the entry, to toggle if checkboxes must
4771 be checked off in sequence. A property is used for this behavior because
4772 this should be local to the current entry, not inherited like a tag.
4773 However, if you would like to @i{track} the value of this property with a tag
4774 for better visibility, customize @code{org-track-ordered-property-with-tag}.
4775 @orgcmd{C-c #,org-update-statistics-cookies}
4776 Update the statistics cookie in the current outline entry. When called with
4777 a @kbd{C-u} prefix, update the entire file. Checkbox statistic cookies are
4778 updated automatically if you toggle checkboxes with @kbd{C-c C-c} and make
4779 new ones with @kbd{M-S-@key{RET}}. TODO statistics cookies update when
4780 changing TODO states. If you delete boxes/entries or add/change them by
4781 hand, use this command to get things back into sync.
4782 @end table
4783
4784 @node Tags, Properties and Columns, TODO Items, Top
4785 @chapter Tags
4786 @cindex tags
4787 @cindex headline tagging
4788 @cindex matching, tags
4789 @cindex sparse tree, tag based
4790
4791 An excellent way to implement labels and contexts for cross-correlating
4792 information is to assign @i{tags} to headlines. Org mode has extensive
4793 support for tags.
4794
4795 @vindex org-tag-faces
4796 Every headline can contain a list of tags; they occur at the end of the
4797 headline. Tags are normal words containing letters, numbers, @samp{_}, and
4798 @samp{@@}. Tags must be preceded and followed by a single colon, e.g.,
4799 @samp{:work:}. Several tags can be specified, as in @samp{:work:urgent:}.
4800 Tags will by default be in bold face with the same color as the headline.
4801 You may specify special faces for specific tags using the option
4802 @code{org-tag-faces}, in much the same way as you can for TODO keywords
4803 (@pxref{Faces for TODO keywords}).
4804
4805 @menu
4806 * Tag inheritance:: Tags use the tree structure of the outline
4807 * Setting tags:: How to assign tags to a headline
4808 * Tag groups:: Use one tag to search for several tags
4809 * Tag searches:: Searching for combinations of tags
4810 @end menu
4811
4812 @node Tag inheritance, Setting tags, Tags, Tags
4813 @section Tag inheritance
4814 @cindex tag inheritance
4815 @cindex inheritance, of tags
4816 @cindex sublevels, inclusion into tags match
4817
4818 @i{Tags} make use of the hierarchical structure of outline trees. If a
4819 heading has a certain tag, all subheadings will inherit the tag as
4820 well. For example, in the list
4821
4822 @example
4823 * Meeting with the French group :work:
4824 ** Summary by Frank :boss:notes:
4825 *** TODO Prepare slides for him :action:
4826 @end example
4827
4828 @noindent
4829 the final heading will have the tags @samp{:work:}, @samp{:boss:},
4830 @samp{:notes:}, and @samp{:action:} even though the final heading is not
4831 explicitly marked with those tags. You can also set tags that all entries in
4832 a file should inherit just as if these tags were defined in a hypothetical
4833 level zero that surrounds the entire file. Use a line like this@footnote{As
4834 with all these in-buffer settings, pressing @kbd{C-c C-c} activates any
4835 changes in the line.}:
4836
4837 @cindex #+FILETAGS
4838 @example
4839 #+FILETAGS: :Peter:Boss:Secret:
4840 @end example
4841
4842 @noindent
4843 @vindex org-use-tag-inheritance
4844 @vindex org-tags-exclude-from-inheritance
4845 To limit tag inheritance to specific tags, use @code{org-tags-exclude-from-inheritance}.
4846 To turn it off entirely, use @code{org-use-tag-inheritance}.
4847
4848 @vindex org-tags-match-list-sublevels
4849 When a headline matches during a tags search while tag inheritance is turned
4850 on, all the sublevels in the same tree will (for a simple match form) match
4851 as well@footnote{This is only true if the search does not involve more
4852 complex tests including properties (@pxref{Property searches}).}. The list
4853 of matches may then become very long. If you only want to see the first tags
4854 match in a subtree, configure @code{org-tags-match-list-sublevels} (not
4855 recommended).
4856
4857 @vindex org-agenda-use-tag-inheritance
4858 Tag inheritance is relevant when the agenda search tries to match a tag,
4859 either in the @code{tags} or @code{tags-todo} agenda types. In other agenda
4860 types, @code{org-use-tag-inheritance} has no effect. Still, you may want to
4861 have your tags correctly set in the agenda, so that tag filtering works fine,
4862 with inherited tags. Set @code{org-agenda-use-tag-inheritance} to control
4863 this: the default value includes all agenda types, but setting this to @code{nil}
4864 can really speed up agenda generation.
4865
4866 @node Setting tags, Tag groups, Tag inheritance, Tags
4867 @section Setting tags
4868 @cindex setting tags
4869 @cindex tags, setting
4870
4871 @kindex M-@key{TAB}
4872 Tags can simply be typed into the buffer at the end of a headline.
4873 After a colon, @kbd{M-@key{TAB}} offers completion on tags. There is
4874 also a special command for inserting tags:
4875
4876 @table @kbd
4877 @orgcmd{C-c C-q,org-set-tags-command}
4878 @cindex completion, of tags
4879 @vindex org-tags-column
4880 Enter new tags for the current headline. Org mode will either offer
4881 completion or a special single-key interface for setting tags, see
4882 below. After pressing @key{RET}, the tags will be inserted and aligned
4883 to @code{org-tags-column}. When called with a @kbd{C-u} prefix, all
4884 tags in the current buffer will be aligned to that column, just to make
4885 things look nice. TAGS are automatically realigned after promotion,
4886 demotion, and TODO state changes (@pxref{TODO basics}).
4887
4888 @orgcmd{C-c C-c,org-set-tags-command}
4889 When the cursor is in a headline, this does the same as @kbd{C-c C-q}.
4890 @end table
4891
4892 @vindex org-tag-alist
4893 Org supports tag insertion based on a @emph{list of tags}. By
4894 default this list is constructed dynamically, containing all tags
4895 currently used in the buffer. You may also globally specify a hard list
4896 of tags with the variable @code{org-tag-alist}. Finally you can set
4897 the default tags for a given file with lines like
4898
4899 @cindex #+TAGS
4900 @example
4901 #+TAGS: @@work @@home @@tennisclub
4902 #+TAGS: laptop car pc sailboat
4903 @end example
4904
4905 If you have globally defined your preferred set of tags using the
4906 variable @code{org-tag-alist}, but would like to use a dynamic tag list
4907 in a specific file, add an empty TAGS option line to that file:
4908
4909 @example
4910 #+TAGS:
4911 @end example
4912
4913 @vindex org-tag-persistent-alist
4914 If you have a preferred set of tags that you would like to use in every file,
4915 in addition to those defined on a per-file basis by TAGS option lines, then
4916 you may specify a list of tags with the variable
4917 @code{org-tag-persistent-alist}. You may turn this off on a per-file basis
4918 by adding a STARTUP option line to that file:
4919
4920 @example
4921 #+STARTUP: noptag
4922 @end example
4923
4924 By default Org mode uses the standard minibuffer completion facilities for
4925 entering tags. However, it also implements another, quicker, tag selection
4926 method called @emph{fast tag selection}. This allows you to select and
4927 deselect tags with just a single key press. For this to work well you should
4928 assign unique letters to most of your commonly used tags. You can do this
4929 globally by configuring the variable @code{org-tag-alist} in your
4930 @file{.emacs} file. For example, you may find the need to tag many items in
4931 different files with @samp{:@@home:}. In this case you can set something
4932 like:
4933
4934 @lisp
4935 (setq org-tag-alist '(("@@work" . ?w) ("@@home" . ?h) ("laptop" . ?l)))
4936 @end lisp
4937
4938 @noindent If the tag is only relevant to the file you are working on, then you
4939 can instead set the TAGS option line as:
4940
4941 @example
4942 #+TAGS: @@work(w) @@home(h) @@tennisclub(t) laptop(l) pc(p)
4943 @end example
4944
4945 @noindent The tags interface will show the available tags in a splash
4946 window. If you want to start a new line after a specific tag, insert
4947 @samp{\n} into the tag list
4948
4949 @example
4950 #+TAGS: @@work(w) @@home(h) @@tennisclub(t) \n laptop(l) pc(p)
4951 @end example
4952
4953 @noindent or write them in two lines:
4954
4955 @example
4956 #+TAGS: @@work(w) @@home(h) @@tennisclub(t)
4957 #+TAGS: laptop(l) pc(p)
4958 @end example
4959
4960 @noindent
4961 You can also group together tags that are mutually exclusive by using
4962 braces, as in:
4963
4964 @example
4965 #+TAGS: @{ @@work(w) @@home(h) @@tennisclub(t) @} laptop(l) pc(p)
4966 @end example
4967
4968 @noindent you indicate that at most one of @samp{@@work}, @samp{@@home},
4969 and @samp{@@tennisclub} should be selected. Multiple such groups are allowed.
4970
4971 @noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
4972 these lines to activate any changes.
4973
4974 @noindent
4975 To set these mutually exclusive groups in the variable @code{org-tag-alist},
4976 you must use the dummy tags @code{:startgroup} and @code{:endgroup} instead
4977 of the braces. Similarly, you can use @code{:newline} to indicate a line
4978 break. The previous example would be set globally by the following
4979 configuration:
4980
4981 @lisp
4982 (setq org-tag-alist '((:startgroup . nil)
4983 ("@@work" . ?w) ("@@home" . ?h)
4984 ("@@tennisclub" . ?t)
4985 (:endgroup . nil)
4986 ("laptop" . ?l) ("pc" . ?p)))
4987 @end lisp
4988
4989 If at least one tag has a selection key then pressing @kbd{C-c C-c} will
4990 automatically present you with a special interface, listing inherited tags,
4991 the tags of the current headline, and a list of all valid tags with
4992 corresponding keys@footnote{Keys will automatically be assigned to tags which
4993 have no configured keys.}. In this interface, you can use the following
4994 keys:
4995
4996 @table @kbd
4997 @item a-z...
4998 Pressing keys assigned to tags will add or remove them from the list of
4999 tags in the current line. Selecting a tag in a group of mutually
5000 exclusive tags will turn off any other tags from that group.
5001 @kindex @key{TAB}
5002 @item @key{TAB}
5003 Enter a tag in the minibuffer, even if the tag is not in the predefined
5004 list. You will be able to complete on all tags present in the buffer.
5005 You can also add several tags: just separate them with a comma.
5006
5007 @kindex @key{SPC}
5008 @item @key{SPC}
5009 Clear all tags for this line.
5010 @kindex @key{RET}
5011 @item @key{RET}
5012 Accept the modified set.
5013 @item C-g
5014 Abort without installing changes.
5015 @item q
5016 If @kbd{q} is not assigned to a tag, it aborts like @kbd{C-g}.
5017 @item !
5018 Turn off groups of mutually exclusive tags. Use this to (as an
5019 exception) assign several tags from such a group.
5020 @item C-c
5021 Toggle auto-exit after the next change (see below).
5022 If you are using expert mode, the first @kbd{C-c} will display the
5023 selection window.
5024 @end table
5025
5026 @noindent
5027 This method lets you assign tags to a headline with very few keys. With
5028 the above setup, you could clear the current tags and set @samp{@@home},
5029 @samp{laptop} and @samp{pc} tags with just the following keys: @kbd{C-c
5030 C-c @key{SPC} h l p @key{RET}}. Switching from @samp{@@home} to
5031 @samp{@@work} would be done with @kbd{C-c C-c w @key{RET}} or
5032 alternatively with @kbd{C-c C-c C-c w}. Adding the non-predefined tag
5033 @samp{Sarah} could be done with @kbd{C-c C-c @key{TAB} S a r a h
5034 @key{RET} @key{RET}}.
5035
5036 @vindex org-fast-tag-selection-single-key
5037 If you find that most of the time you need only a single key press to
5038 modify your list of tags, set @code{org-fast-tag-selection-single-key}.
5039 Then you no longer have to press @key{RET} to exit fast tag selection---it
5040 will immediately exit after the first change. If you then occasionally
5041 need more keys, press @kbd{C-c} to turn off auto-exit for the current tag
5042 selection process (in effect: start selection with @kbd{C-c C-c C-c}
5043 instead of @kbd{C-c C-c}). If you set the variable to the value
5044 @code{expert}, the special window is not even shown for single-key tag
5045 selection, it comes up only when you press an extra @kbd{C-c}.
5046
5047 @node Tag groups, Tag searches, Setting tags, Tags
5048 @section Tag groups
5049
5050 @cindex group tags
5051 @cindex tags, groups
5052 In a set of mutually exclusive tags, the first tag can be defined as a
5053 @emph{group tag}. When you search for a group tag, it will return matches
5054 for all members in the group. In an agenda view, filtering by a group tag
5055 will display headlines tagged with at least one of the members of the
5056 group. This makes tag searches and filters even more flexible.
5057
5058 You can set group tags by inserting a colon between the group tag and other
5059 tags---beware that all whitespaces are mandatory so that Org can parse this
5060 line correctly:
5061
5062 @example
5063 #+TAGS: @{ @@read : @@read_book @@read_ebook @}
5064 @end example
5065
5066 In this example, @samp{@@read} is a @emph{group tag} for a set of three
5067 tags: @samp{@@read}, @samp{@@read_book} and @samp{@@read_ebook}.
5068
5069 You can also use the @code{:grouptags} keyword directly when setting
5070 @code{org-tag-alist}:
5071
5072 @lisp
5073 (setq org-tag-alist '((:startgroup . nil)
5074 ("@@read" . nil)
5075 (:grouptags . nil)
5076 ("@@read_book" . nil)
5077 ("@@read_ebook" . nil)
5078 (:endgroup . nil)))
5079 @end lisp
5080
5081 You cannot nest group tags or use a group tag as a tag in another group.
5082
5083 @kindex C-c C-x q
5084 @vindex org-group-tags
5085 If you want to ignore group tags temporarily, toggle group tags support
5086 with @command{org-toggle-tags-groups}, bound to @kbd{C-c C-x q}. If you
5087 want to disable tag groups completely, set @code{org-group-tags} to @code{nil}.
5088
5089 @node Tag searches, , Tag groups, Tags
5090 @section Tag searches
5091 @cindex tag searches
5092 @cindex searching for tags
5093
5094 Once a system of tags has been set up, it can be used to collect related
5095 information into special lists.
5096
5097 @table @kbd
5098 @orgcmdkkc{C-c / m,C-c \\,org-match-sparse-tree}
5099 Create a sparse tree with all headlines matching a tags/property/TODO search.
5100 With a @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
5101 @xref{Matching tags and properties}.
5102 @orgcmd{C-c a m,org-tags-view}
5103 Create a global list of tag matches from all agenda files. @xref{Matching
5104 tags and properties}.
5105 @orgcmd{C-c a M,org-tags-view}
5106 @vindex org-tags-match-list-sublevels
5107 Create a global list of tag matches from all agenda files, but check
5108 only TODO items and force checking subitems (see the option
5109 @code{org-tags-match-list-sublevels}).
5110 @end table
5111
5112 These commands all prompt for a match string which allows basic Boolean logic
5113 like @samp{+boss+urgent-project1}, to find entries with tags @samp{boss} and
5114 @samp{urgent}, but not @samp{project1}, or @samp{Kathy|Sally} to find entries
5115 which are tagged, like @samp{Kathy} or @samp{Sally}. The full syntax of the search
5116 string is rich and allows also matching against TODO keywords, entry levels
5117 and properties. For a complete description with many examples, see
5118 @ref{Matching tags and properties}.
5119
5120
5121 @node Properties and Columns, Dates and Times, Tags, Top
5122 @chapter Properties and columns
5123 @cindex properties
5124
5125 A property is a key-value pair associated with an entry. Properties can be
5126 set so they are associated with a single entry, with every entry in a tree,
5127 or with every entry in an Org mode file.
5128
5129 There are two main applications for properties in Org mode. First,
5130 properties are like tags, but with a value. Imagine maintaining a file where
5131 you document bugs and plan releases for a piece of software. Instead of
5132 using tags like @code{:release_1:}, @code{:release_2:}, you can use a
5133 property, say @code{:Release:}, that in different subtrees has different
5134 values, such as @code{1.0} or @code{2.0}. Second, you can use properties to
5135 implement (very basic) database capabilities in an Org buffer. Imagine
5136 keeping track of your music CDs, where properties could be things such as the
5137 album, artist, date of release, number of tracks, and so on.
5138
5139 Properties can be conveniently edited and viewed in column view
5140 (@pxref{Column view}).
5141
5142 @menu
5143 * Property syntax:: How properties are spelled out
5144 * Special properties:: Access to other Org mode features
5145 * Property searches:: Matching property values
5146 * Property inheritance:: Passing values down the tree
5147 * Column view:: Tabular viewing and editing
5148 * Property API:: Properties for Lisp programmers
5149 @end menu
5150
5151 @node Property syntax, Special properties, Properties and Columns, Properties and Columns
5152 @section Property syntax
5153 @cindex property syntax
5154 @cindex drawer, for properties
5155
5156 Properties are key-value pairs. When they are associated with a single entry
5157 or with a tree they need to be inserted into a special
5158 drawer (@pxref{Drawers}) with the name @code{PROPERTIES}. Each property
5159 is specified on a single line, with the key (surrounded by colons)
5160 first, and the value after it. Here is an example:
5161
5162 @example
5163 * CD collection
5164 ** Classic
5165 *** Goldberg Variations
5166 :PROPERTIES:
5167 :Title: Goldberg Variations
5168 :Composer: J.S. Bach
5169 :Artist: Glen Gould
5170 :Publisher: Deutsche Grammophon
5171 :NDisks: 1
5172 :END:
5173 @end example
5174
5175 Depending on the value of @code{org-use-property-inheritance}, a property set
5176 this way will either be associated with a single entry, or the sub-tree
5177 defined by the entry, see @ref{Property inheritance}.
5178
5179 You may define the allowed values for a particular property @samp{:Xyz:}
5180 by setting a property @samp{:Xyz_ALL:}. This special property is
5181 @emph{inherited}, so if you set it in a level 1 entry, it will apply to
5182 the entire tree. When allowed values are defined, setting the
5183 corresponding property becomes easier and is less prone to typing
5184 errors. For the example with the CD collection, we can predefine
5185 publishers and the number of disks in a box like this:
5186
5187 @example
5188 * CD collection
5189 :PROPERTIES:
5190 :NDisks_ALL: 1 2 3 4
5191 :Publisher_ALL: "Deutsche Grammophon" Philips EMI
5192 :END:
5193 @end example
5194
5195 If you want to set properties that can be inherited by any entry in a
5196 file, use a line like
5197 @cindex property, _ALL
5198 @cindex #+PROPERTY
5199 @example
5200 #+PROPERTY: NDisks_ALL 1 2 3 4
5201 @end example
5202
5203 Contrary to properties set from a special drawer, you have to refresh the
5204 buffer with @kbd{C-c C-c} to activate this changes.
5205
5206 If you want to add to the value of an existing property, append a @code{+} to
5207 the property name. The following results in the property @code{var} having
5208 the value ``foo=1 bar=2''.
5209 @cindex property, +
5210 @example
5211 #+PROPERTY: var foo=1
5212 #+PROPERTY: var+ bar=2
5213 @end example
5214
5215 It is also possible to add to the values of inherited properties. The
5216 following results in the @code{genres} property having the value ``Classic
5217 Baroque'' under the @code{Goldberg Variations} subtree.
5218 @cindex property, +
5219 @example
5220 * CD collection
5221 ** Classic
5222 :PROPERTIES:
5223 :GENRES: Classic
5224 :END:
5225 *** Goldberg Variations
5226 :PROPERTIES:
5227 :Title: Goldberg Variations
5228 :Composer: J.S. Bach
5229 :Artist: Glen Gould
5230 :Publisher: Deutsche Grammophon
5231 :NDisks: 1
5232 :GENRES+: Baroque
5233 :END:
5234 @end example
5235 Note that a property can only have one entry per Drawer.
5236
5237 @vindex org-global-properties
5238 Property values set with the global variable
5239 @code{org-global-properties} can be inherited by all entries in all
5240 Org files.
5241
5242 @noindent
5243 The following commands help to work with properties:
5244
5245 @table @kbd
5246 @orgcmd{M-@key{TAB},pcomplete}
5247 After an initial colon in a line, complete property keys. All keys used
5248 in the current file will be offered as possible completions.
5249 @orgcmd{C-c C-x p,org-set-property}
5250 Set a property. This prompts for a property name and a value. If
5251 necessary, the property drawer is created as well.
5252 @item C-u M-x org-insert-drawer RET
5253 @cindex org-insert-drawer
5254 Insert a property drawer into the current entry. The drawer will be
5255 inserted early in the entry, but after the lines with planning
5256 information like deadlines.
5257 @orgcmd{C-c C-c,org-property-action}
5258 With the cursor in a property drawer, this executes property commands.
5259 @orgcmd{C-c C-c s,org-set-property}
5260 Set a property in the current entry. Both the property and the value
5261 can be inserted using completion.
5262 @orgcmdkkcc{S-@key{right},S-@key{left},org-property-next-allowed-value,org-property-previous-allowed-value}
5263 Switch property at point to the next/previous allowed value.
5264 @orgcmd{C-c C-c d,org-delete-property}
5265 Remove a property from the current entry.
5266 @orgcmd{C-c C-c D,org-delete-property-globally}
5267 Globally remove a property, from all entries in the current file.
5268 @orgcmd{C-c C-c c,org-compute-property-at-point}
5269 Compute the property at point, using the operator and scope from the
5270 nearest column format definition.
5271 @end table
5272
5273 @node Special properties, Property searches, Property syntax, Properties and Columns
5274 @section Special properties
5275 @cindex properties, special
5276
5277 Special properties provide an alternative access method to Org mode features,
5278 like the TODO state or the priority of an entry, discussed in the previous
5279 chapters. This interface exists so that you can include these states in a
5280 column view (@pxref{Column view}), or to use them in queries. The following
5281 property names are special and (except for @code{:CATEGORY:}) should not be
5282 used as keys in the properties drawer:
5283
5284 @cindex property, special, ID
5285 @cindex property, special, TODO
5286 @cindex property, special, TAGS
5287 @cindex property, special, ALLTAGS
5288 @cindex property, special, CATEGORY
5289 @cindex property, special, PRIORITY
5290 @cindex property, special, DEADLINE
5291 @cindex property, special, SCHEDULED
5292 @cindex property, special, CLOSED
5293 @cindex property, special, TIMESTAMP
5294 @cindex property, special, TIMESTAMP_IA
5295 @cindex property, special, CLOCKSUM
5296 @cindex property, special, CLOCKSUM_T
5297 @cindex property, special, BLOCKED
5298 @c guessing that ITEM is needed in this area; also, should this list be sorted?
5299 @cindex property, special, ITEM
5300 @cindex property, special, FILE
5301 @example
5302 ID @r{A globally unique ID used for synchronization during}
5303 @r{iCalendar or MobileOrg export.}
5304 TODO @r{The TODO keyword of the entry.}
5305 TAGS @r{The tags defined directly in the headline.}
5306 ALLTAGS @r{All tags, including inherited ones.}
5307 CATEGORY @r{The category of an entry.}
5308 PRIORITY @r{The priority of the entry, a string with a single letter.}
5309 DEADLINE @r{The deadline time string, without the angular brackets.}
5310 SCHEDULED @r{The scheduling timestamp, without the angular brackets.}
5311 CLOSED @r{When was this entry closed?}
5312 TIMESTAMP @r{The first keyword-less timestamp in the entry.}
5313 TIMESTAMP_IA @r{The first inactive timestamp in the entry.}
5314 CLOCKSUM @r{The sum of CLOCK intervals in the subtree. @code{org-clock-sum}}
5315 @r{must be run first to compute the values in the current buffer.}
5316 CLOCKSUM_T @r{The sum of CLOCK intervals in the subtree for today.}
5317 @r{@code{org-clock-sum-today} must be run first to compute the}
5318 @r{values in the current buffer.}
5319 BLOCKED @r{"t" if task is currently blocked by children or siblings}
5320 ITEM @r{The headline of the entry.}
5321 FILE @r{The filename the entry is located in.}
5322 @end example
5323
5324 @node Property searches, Property inheritance, Special properties, Properties and Columns
5325 @section Property searches
5326 @cindex properties, searching
5327 @cindex searching, of properties
5328
5329 To create sparse trees and special lists with selection based on properties,
5330 the same commands are used as for tag searches (@pxref{Tag searches}).
5331
5332 @table @kbd
5333 @orgcmdkkc{C-c / m,C-c \\,org-match-sparse-tree}
5334 Create a sparse tree with all matching entries. With a
5335 @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
5336 @orgcmd{C-c a m,org-tags-view}
5337 Create a global list of tag/property matches from all agenda files.
5338 @xref{Matching tags and properties}.
5339 @orgcmd{C-c a M,org-tags-view}
5340 @vindex org-tags-match-list-sublevels
5341 Create a global list of tag matches from all agenda files, but check
5342 only TODO items and force checking of subitems (see the option
5343 @code{org-tags-match-list-sublevels}).
5344 @end table
5345
5346 The syntax for the search string is described in @ref{Matching tags and
5347 properties}.
5348
5349 There is also a special command for creating sparse trees based on a
5350 single property:
5351
5352 @table @kbd
5353 @orgkey{C-c / p}
5354 Create a sparse tree based on the value of a property. This first
5355 prompts for the name of a property, and then for a value. A sparse tree
5356 is created with all entries that define this property with the given
5357 value. If you enclose the value in curly braces, it is interpreted as
5358 a regular expression and matched against the property values.
5359 @end table
5360
5361 @node Property inheritance, Column view, Property searches, Properties and Columns
5362 @section Property Inheritance
5363 @cindex properties, inheritance
5364 @cindex inheritance, of properties
5365
5366 @vindex org-use-property-inheritance
5367 The outline structure of Org mode documents lends itself to an
5368 inheritance model of properties: if the parent in a tree has a certain
5369 property, the children can inherit this property. Org mode does not
5370 turn this on by default, because it can slow down property searches
5371 significantly and is often not needed. However, if you find inheritance
5372 useful, you can turn it on by setting the variable
5373 @code{org-use-property-inheritance}. It may be set to @code{t} to make
5374 all properties inherited from the parent, to a list of properties
5375 that should be inherited, or to a regular expression that matches
5376 inherited properties. If a property has the value @code{nil}, this is
5377 interpreted as an explicit undefine of the property, so that inheritance
5378 search will stop at this value and return @code{nil}.
5379
5380 Org mode has a few properties for which inheritance is hard-coded, at
5381 least for the special applications for which they are used:
5382
5383 @cindex property, COLUMNS
5384 @table @code
5385 @item COLUMNS
5386 The @code{:COLUMNS:} property defines the format of column view
5387 (@pxref{Column view}). It is inherited in the sense that the level
5388 where a @code{:COLUMNS:} property is defined is used as the starting
5389 point for a column view table, independently of the location in the
5390 subtree from where columns view is turned on.
5391 @item CATEGORY
5392 @cindex property, CATEGORY
5393 For agenda view, a category set through a @code{:CATEGORY:} property
5394 applies to the entire subtree.
5395 @item ARCHIVE
5396 @cindex property, ARCHIVE
5397 For archiving, the @code{:ARCHIVE:} property may define the archive
5398 location for the entire subtree (@pxref{Moving subtrees}).
5399 @item LOGGING
5400 @cindex property, LOGGING
5401 The LOGGING property may define logging settings for an entry or a
5402 subtree (@pxref{Tracking TODO state changes}).
5403 @end table
5404
5405 @node Column view, Property API, Property inheritance, Properties and Columns
5406 @section Column view
5407
5408 A great way to view and edit properties in an outline tree is
5409 @emph{column view}. In column view, each outline node is turned into a
5410 table row. Columns in this table provide access to properties of the
5411 entries. Org mode implements columns by overlaying a tabular structure
5412 over the headline of each item. While the headlines have been turned
5413 into a table row, you can still change the visibility of the outline
5414 tree. For example, you get a compact table by switching to CONTENTS
5415 view (@kbd{S-@key{TAB} S-@key{TAB}}, or simply @kbd{c} while column view
5416 is active), but you can still open, read, and edit the entry below each
5417 headline. Or, you can switch to column view after executing a sparse
5418 tree command and in this way get a table only for the selected items.
5419 Column view also works in agenda buffers (@pxref{Agenda Views}) where
5420 queries have collected selected items, possibly from a number of files.
5421
5422 @menu
5423 * Defining columns:: The COLUMNS format property
5424 * Using column view:: How to create and use column view
5425 * Capturing column view:: A dynamic block for column view
5426 @end menu
5427
5428 @node Defining columns, Using column view, Column view, Column view
5429 @subsection Defining columns
5430 @cindex column view, for properties
5431 @cindex properties, column view
5432
5433 Setting up a column view first requires defining the columns. This is
5434 done by defining a column format line.
5435
5436 @menu
5437 * Scope of column definitions:: Where defined, where valid?
5438 * Column attributes:: Appearance and content of a column
5439 @end menu
5440
5441 @node Scope of column definitions, Column attributes, Defining columns, Defining columns
5442 @subsubsection Scope of column definitions
5443
5444 To define a column format for an entire file, use a line like
5445
5446 @cindex #+COLUMNS
5447 @example
5448 #+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
5449 @end example
5450
5451 To specify a format that only applies to a specific tree, add a
5452 @code{:COLUMNS:} property to the top node of that tree, for example:
5453
5454 @example
5455 ** Top node for columns view
5456 :PROPERTIES:
5457 :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
5458 :END:
5459 @end example
5460
5461 If a @code{:COLUMNS:} property is present in an entry, it defines columns
5462 for the entry itself, and for the entire subtree below it. Since the
5463 column definition is part of the hierarchical structure of the document,
5464 you can define columns on level 1 that are general enough for all
5465 sublevels, and more specific columns further down, when you edit a
5466 deeper part of the tree.
5467
5468 @node Column attributes, , Scope of column definitions, Defining columns
5469 @subsubsection Column attributes
5470 A column definition sets the attributes of a column. The general
5471 definition looks like this:
5472
5473 @example
5474 %[@var{width}]@var{property}[(@var{title})][@{@var{summary-type}@}]
5475 @end example
5476
5477 @noindent
5478 Except for the percent sign and the property name, all items are
5479 optional. The individual parts have the following meaning:
5480
5481 @example
5482 @var{width} @r{An integer specifying the width of the column in characters.}
5483 @r{If omitted, the width will be determined automatically.}
5484 @var{property} @r{The property that should be edited in this column.}
5485 @r{Special properties representing meta data are allowed here}
5486 @r{as well (@pxref{Special properties})}
5487 @var{title} @r{The header text for the column. If omitted, the property}
5488 @r{name is used.}
5489 @{@var{summary-type}@} @r{The summary type. If specified, the column values for}
5490 @r{parent nodes are computed from the children.}
5491 @r{Supported summary types are:}
5492 @{+@} @r{Sum numbers in this column.}
5493 @{+;%.1f@} @r{Like @samp{+}, but format result with @samp{%.1f}.}
5494 @{$@} @r{Currency, short for @samp{+;%.2f}.}
5495 @{:@} @r{Sum times, HH:MM, plain numbers are hours.}
5496 @{X@} @r{Checkbox status, @samp{[X]} if all children are @samp{[X]}.}
5497 @{X/@} @r{Checkbox status, @samp{[n/m]}.}
5498 @{X%@} @r{Checkbox status, @samp{[n%]}.}
5499 @{min@} @r{Smallest number in column.}
5500 @{max@} @r{Largest number.}
5501 @{mean@} @r{Arithmetic mean of numbers.}
5502 @{:min@} @r{Smallest time value in column.}
5503 @{:max@} @r{Largest time value.}
5504 @{:mean@} @r{Arithmetic mean of time values.}
5505 @{@@min@} @r{Minimum age (in days/hours/mins/seconds).}
5506 @{@@max@} @r{Maximum age (in days/hours/mins/seconds).}
5507 @{@@mean@} @r{Arithmetic mean of ages (in days/hours/mins/seconds).}
5508 @{est+@} @r{Add low-high estimates.}
5509 @end example
5510
5511 @noindent
5512 Be aware that you can only have one summary type for any property you
5513 include. Subsequent columns referencing the same property will all display the
5514 same summary information.
5515
5516 The @code{est+} summary type requires further explanation. It is used for
5517 combining estimates, expressed as low-high ranges. For example, instead
5518 of estimating a particular task will take 5 days, you might estimate it as
5519 5--6 days if you're fairly confident you know how much work is required, or
5520 1--10 days if you don't really know what needs to be done. Both ranges
5521 average at 5.5 days, but the first represents a more predictable delivery.
5522
5523 When combining a set of such estimates, simply adding the lows and highs
5524 produces an unrealistically wide result. Instead, @code{est+} adds the
5525 statistical mean and variance of the sub-tasks, generating a final estimate
5526 from the sum. For example, suppose you had ten tasks, each of which was
5527 estimated at 0.5 to 2 days of work. Straight addition produces an estimate
5528 of 5 to 20 days, representing what to expect if everything goes either
5529 extremely well or extremely poorly. In contrast, @code{est+} estimates the
5530 full job more realistically, at 10--15 days.
5531
5532 Numbers are right-aligned when a format specifier with an explicit width like
5533 @code{%5d} or @code{%5.1f} is used.
5534
5535 Here is an example for a complete columns definition, along with allowed
5536 values.
5537
5538 @example
5539 :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.}
5540 %10Time_Estimate@{:@} %CLOCKSUM %CLOCKSUM_T
5541 :Owner_ALL: Tammy Mark Karl Lisa Don
5542 :Status_ALL: "In progress" "Not started yet" "Finished" ""
5543 :Approved_ALL: "[ ]" "[X]"
5544 @end example
5545
5546 @noindent
5547 The first column, @samp{%25ITEM}, means the first 25 characters of the
5548 item itself, i.e., of the headline. You probably always should start the
5549 column definition with the @samp{ITEM} specifier. The other specifiers
5550 create columns @samp{Owner} with a list of names as allowed values, for
5551 @samp{Status} with four different possible values, and for a checkbox
5552 field @samp{Approved}. When no width is given after the @samp{%}
5553 character, the column will be exactly as wide as it needs to be in order
5554 to fully display all values. The @samp{Approved} column does have a
5555 modified title (@samp{Approved?}, with a question mark). Summaries will
5556 be created for the @samp{Time_Estimate} column by adding time duration
5557 expressions like HH:MM, and for the @samp{Approved} column, by providing
5558 an @samp{[X]} status if all children have been checked. The
5559 @samp{CLOCKSUM} and @samp{CLOCKSUM_T} columns are special, they lists the
5560 sums of CLOCK intervals in the subtree, either for all clocks or just for
5561 today.
5562
5563 @node Using column view, Capturing column view, Defining columns, Column view
5564 @subsection Using column view
5565
5566 @table @kbd
5567 @tsubheading{Turning column view on and off}
5568 @orgcmd{C-c C-x C-c,org-columns}
5569 @vindex org-columns-default-format
5570 Turn on column view. If the cursor is before the first headline in the file,
5571 column view is turned on for the entire file, using the @code{#+COLUMNS}
5572 definition. If the cursor is somewhere inside the outline, this command
5573 searches the hierarchy, up from point, for a @code{:COLUMNS:} property that
5574 defines a format. When one is found, the column view table is established
5575 for the tree starting at the entry that contains the @code{:COLUMNS:}
5576 property. If no such property is found, the format is taken from the
5577 @code{#+COLUMNS} line or from the variable @code{org-columns-default-format},
5578 and column view is established for the current entry and its subtree.
5579 @orgcmd{r,org-columns-redo}
5580 Recreate the column view, to include recent changes made in the buffer.
5581 @orgcmd{g,org-columns-redo}
5582 Same as @kbd{r}.
5583 @orgcmd{q,org-columns-quit}
5584 Exit column view.
5585 @tsubheading{Editing values}
5586 @item @key{left} @key{right} @key{up} @key{down}
5587 Move through the column view from field to field.
5588 @kindex S-@key{left}
5589 @kindex S-@key{right}
5590 @item S-@key{left}/@key{right}
5591 Switch to the next/previous allowed value of the field. For this, you
5592 have to have specified allowed values for a property.
5593 @item 1..9,0
5594 Directly select the Nth allowed value, @kbd{0} selects the 10th value.
5595 @orgcmdkkcc{n,p,org-columns-next-allowed-value,org-columns-previous-allowed-value}
5596 Same as @kbd{S-@key{left}/@key{right}}
5597 @orgcmd{e,org-columns-edit-value}
5598 Edit the property at point. For the special properties, this will
5599 invoke the same interface that you normally use to change that
5600 property. For example, when editing a TAGS property, the tag completion
5601 or fast selection interface will pop up.
5602 @orgcmd{C-c C-c,org-columns-set-tags-or-toggle}
5603 When there is a checkbox at point, toggle it.
5604 @orgcmd{v,org-columns-show-value}
5605 View the full value of this property. This is useful if the width of
5606 the column is smaller than that of the value.
5607 @orgcmd{a,org-columns-edit-allowed}
5608 Edit the list of allowed values for this property. If the list is found
5609 in the hierarchy, the modified values is stored there. If no list is
5610 found, the new value is stored in the first entry that is part of the
5611 current column view.
5612 @tsubheading{Modifying the table structure}
5613 @orgcmdkkcc{<,>,org-columns-narrow,org-columns-widen}
5614 Make the column narrower/wider by one character.
5615 @orgcmd{S-M-@key{right},org-columns-new}
5616 Insert a new column, to the left of the current column.
5617 @orgcmd{S-M-@key{left},org-columns-delete}
5618 Delete the current column.
5619 @end table
5620
5621 @node Capturing column view, , Using column view, Column view
5622 @subsection Capturing column view
5623
5624 Since column view is just an overlay over a buffer, it cannot be
5625 exported or printed directly. If you want to capture a column view, use
5626 a @code{columnview} dynamic block (@pxref{Dynamic blocks}). The frame
5627 of this block looks like this:
5628
5629 @cindex #+BEGIN, columnview
5630 @example
5631 * The column view
5632 #+BEGIN: columnview :hlines 1 :id "label"
5633
5634 #+END:
5635 @end example
5636
5637 @noindent This dynamic block has the following parameters:
5638
5639 @table @code
5640 @item :id
5641 This is the most important parameter. Column view is a feature that is
5642 often localized to a certain (sub)tree, and the capture block might be
5643 at a different location in the file. To identify the tree whose view to
5644 capture, you can use 4 values:
5645 @cindex property, ID
5646 @example
5647 local @r{use the tree in which the capture block is located}
5648 global @r{make a global view, including all headings in the file}
5649 "file:@var{path-to-file}"
5650 @r{run column view at the top of this file}
5651 "@var{ID}" @r{call column view in the tree that has an @code{:ID:}}
5652 @r{property with the value @i{label}. You can use}
5653 @r{@kbd{M-x org-id-copy RET} to create a globally unique ID for}
5654 @r{the current entry and copy it to the kill-ring.}
5655 @end example
5656 @item :hlines
5657 When @code{t}, insert an hline after every line. When a number @var{N}, insert
5658 an hline before each headline with level @code{<= @var{N}}.
5659 @item :vlines
5660 When set to @code{t}, force column groups to get vertical lines.
5661 @item :maxlevel
5662 When set to a number, don't capture entries below this level.
5663 @item :skip-empty-rows
5664 When set to @code{t}, skip rows where the only non-empty specifier of the
5665 column view is @code{ITEM}.
5666
5667 @end table
5668
5669 @noindent
5670 The following commands insert or update the dynamic block:
5671
5672 @table @kbd
5673 @orgcmd{C-c C-x i,org-insert-columns-dblock}
5674 Insert a dynamic block capturing a column view. You will be prompted
5675 for the scope or ID of the view.
5676 @orgcmdkkc{C-c C-c,C-c C-x C-u,org-dblock-update}
5677 Update dynamic block at point. The cursor needs to be in the
5678 @code{#+BEGIN} line of the dynamic block.
5679 @orgcmd{C-u C-c C-x C-u,org-update-all-dblocks}
5680 Update all dynamic blocks (@pxref{Dynamic blocks}). This is useful if
5681 you have several clock table blocks, column-capturing blocks or other dynamic
5682 blocks in a buffer.
5683 @end table
5684
5685 You can add formulas to the column view table and you may add plotting
5686 instructions in front of the table---these will survive an update of the
5687 block. If there is a @code{#+TBLFM:} after the table, the table will
5688 actually be recalculated automatically after an update.
5689
5690 An alternative way to capture and process property values into a table is
5691 provided by Eric Schulte's @file{org-collector.el} which is a contributed
5692 package@footnote{Contributed packages are not part of Emacs, but are
5693 distributed with the main distribution of Org (visit
5694 @uref{http://orgmode.org}).}. It provides a general API to collect
5695 properties from entries in a certain scope, and arbitrary Lisp expressions to
5696 process these values before inserting them into a table or a dynamic block.
5697
5698 @node Property API, , Column view, Properties and Columns
5699 @section The Property API
5700 @cindex properties, API
5701 @cindex API, for properties
5702
5703 There is a full API for accessing and changing properties. This API can
5704 be used by Emacs Lisp programs to work with properties and to implement
5705 features based on them. For more information see @ref{Using the
5706 property API}.
5707
5708 @node Dates and Times, Capture - Refile - Archive, Properties and Columns, Top
5709 @chapter Dates and times
5710 @cindex dates
5711 @cindex times
5712 @cindex timestamp
5713 @cindex date stamp
5714
5715 To assist project planning, TODO items can be labeled with a date and/or
5716 a time. The specially formatted string carrying the date and time
5717 information is called a @emph{timestamp} in Org mode. This may be a
5718 little confusing because timestamp is often used as indicating when
5719 something was created or last changed. However, in Org mode this term
5720 is used in a much wider sense.
5721
5722 @menu
5723 * Timestamps:: Assigning a time to a tree entry
5724 * Creating timestamps:: Commands which insert timestamps
5725 * Deadlines and scheduling:: Planning your work
5726 * Clocking work time:: Tracking how long you spend on a task
5727 * Effort estimates:: Planning work effort in advance
5728 * Relative timer:: Notes with a running timer
5729 * Countdown timer:: Starting a countdown timer for a task
5730 @end menu
5731
5732
5733 @node Timestamps, Creating timestamps, Dates and Times, Dates and Times
5734 @section Timestamps, deadlines, and scheduling
5735 @cindex timestamps
5736 @cindex ranges, time
5737 @cindex date stamps
5738 @cindex deadlines
5739 @cindex scheduling
5740
5741 A timestamp is a specification of a date (possibly with a time or a range of
5742 times) in a special format, either @samp{<2003-09-16 Tue>}@footnote{In this
5743 simplest form, the day name is optional when you type the date yourself.
5744 However, any dates inserted or modified by Org will add that day name, for
5745 reading convenience.} or @samp{<2003-09-16 Tue 09:39>} or @samp{<2003-09-16
5746 Tue 12:00-12:30>}@footnote{This is inspired by the standard ISO 8601
5747 date/time format. To use an alternative format, see @ref{Custom time
5748 format}.}. A timestamp can appear anywhere in the headline or body of an Org
5749 tree entry. Its presence causes entries to be shown on specific dates in the
5750 agenda (@pxref{Weekly/daily agenda}). We distinguish:
5751
5752 @table @var
5753 @item Plain timestamp; Event; Appointment
5754 @cindex timestamp
5755 @cindex appointment
5756 A simple timestamp just assigns a date/time to an item. This is just
5757 like writing down an appointment or event in a paper agenda. In the
5758 timeline and agenda displays, the headline of an entry associated with a
5759 plain timestamp will be shown exactly on that date.
5760
5761 @example
5762 * Meet Peter at the movies
5763 <2006-11-01 Wed 19:15>
5764 * Discussion on climate change
5765 <2006-11-02 Thu 20:00-22:00>
5766 @end example
5767
5768 @item Timestamp with repeater interval
5769 @cindex timestamp, with repeater interval
5770 A timestamp may contain a @emph{repeater interval}, indicating that it
5771 applies not only on the given date, but again and again after a certain
5772 interval of N days (d), weeks (w), months (m), or years (y). The
5773 following will show up in the agenda every Wednesday:
5774
5775 @example
5776 * Pick up Sam at school
5777 <2007-05-16 Wed 12:30 +1w>
5778 @end example
5779
5780 @item Diary-style sexp entries
5781 For more complex date specifications, Org mode supports using the special
5782 sexp diary entries implemented in the Emacs calendar/diary
5783 package@footnote{When working with the standard diary sexp functions, you
5784 need to be very careful with the order of the arguments. That order depend
5785 evilly on the variable @code{calendar-date-style} (or, for older Emacs
5786 versions, @code{european-calendar-style}). For example, to specify a date
5787 December 12, 2005, the call might look like @code{(diary-date 12 1 2005)} or
5788 @code{(diary-date 1 12 2005)} or @code{(diary-date 2005 12 1)}, depending on
5789 the settings. This has been the source of much confusion. Org mode users
5790 can resort to special versions of these functions like @code{org-date} or
5791 @code{org-anniversary}. These work just like the corresponding @code{diary-}
5792 functions, but with stable ISO order of arguments (year, month, day) wherever
5793 applicable, independent of the value of @code{calendar-date-style}.}. For
5794 example with optional time
5795
5796 @example
5797 * 22:00-23:00 The nerd meeting on every 2nd Thursday of the month
5798 <%%(diary-float t 4 2)>
5799 @end example
5800
5801 @item Time/Date range
5802 @cindex timerange
5803 @cindex date range
5804 Two timestamps connected by @samp{--} denote a range. The headline
5805 will be shown on the first and last day of the range, and on any dates
5806 that are displayed and fall in the range. Here is an example:
5807
5808 @example
5809 ** Meeting in Amsterdam
5810 <2004-08-23 Mon>--<2004-08-26 Thu>
5811 @end example
5812
5813 @item Inactive timestamp
5814 @cindex timestamp, inactive
5815 @cindex inactive timestamp
5816 Just like a plain timestamp, but with square brackets instead of
5817 angular ones. These timestamps are inactive in the sense that they do
5818 @emph{not} trigger an entry to show up in the agenda.
5819
5820 @example
5821 * Gillian comes late for the fifth time
5822 [2006-11-01 Wed]
5823 @end example
5824
5825 @end table
5826
5827 @node Creating timestamps, Deadlines and scheduling, Timestamps, Dates and Times
5828 @section Creating timestamps
5829 @cindex creating timestamps
5830 @cindex timestamps, creating
5831
5832 For Org mode to recognize timestamps, they need to be in the specific
5833 format. All commands listed below produce timestamps in the correct
5834 format.
5835
5836 @table @kbd
5837 @orgcmd{C-c .,org-time-stamp}
5838 Prompt for a date and insert a corresponding timestamp. When the cursor is
5839 at an existing timestamp in the buffer, the command is used to modify this
5840 timestamp instead of inserting a new one. When this command is used twice in
5841 succession, a time range is inserted.
5842 @c
5843 @orgcmd{C-c !,org-time-stamp-inactive}
5844 Like @kbd{C-c .}, but insert an inactive timestamp that will not cause
5845 an agenda entry.
5846 @c
5847 @kindex C-u C-c .
5848 @kindex C-u C-c !
5849 @item C-u C-c .
5850 @itemx C-u C-c !
5851 @vindex org-time-stamp-rounding-minutes
5852 Like @kbd{C-c .} and @kbd{C-c !}, but use the alternative format which
5853 contains date and time. The default time can be rounded to multiples of 5
5854 minutes, see the option @code{org-time-stamp-rounding-minutes}.
5855 @c
5856 @orgkey{C-c C-c}
5857 Normalize timestamp, insert/fix day name if missing or wrong.
5858 @c
5859 @orgcmd{C-c <,org-date-from-calendar}
5860 Insert a timestamp corresponding to the cursor date in the Calendar.
5861 @c
5862 @orgcmd{C-c >,org-goto-calendar}
5863 Access the Emacs calendar for the current date. If there is a
5864 timestamp in the current line, go to the corresponding date
5865 instead.
5866 @c
5867 @orgcmd{C-c C-o,org-open-at-point}
5868 Access the agenda for the date given by the timestamp or -range at
5869 point (@pxref{Weekly/daily agenda}).
5870 @c
5871 @orgcmdkkcc{S-@key{left},S-@key{right},org-timestamp-down-day,org-timestamp-up-day}
5872 Change date at cursor by one day. These key bindings conflict with
5873 shift-selection and related modes (@pxref{Conflicts}).
5874 @c
5875 @orgcmdkkcc{S-@key{up},S-@key{down},org-timestamp-up,org-timestamp-down-down}
5876 Change the item under the cursor in a timestamp. The cursor can be on a
5877 year, month, day, hour or minute. When the timestamp contains a time range
5878 like @samp{15:30-16:30}, modifying the first time will also shift the second,
5879 shifting the time block with constant length. To change the length, modify
5880 the second time. Note that if the cursor is in a headline and not at a
5881 timestamp, these same keys modify the priority of an item.
5882 (@pxref{Priorities}). The key bindings also conflict with shift-selection and
5883 related modes (@pxref{Conflicts}).
5884 @c
5885 @orgcmd{C-c C-y,org-evaluate-time-range}
5886 @cindex evaluate time range
5887 Evaluate a time range by computing the difference between start and end.
5888 With a prefix argument, insert result after the time range (in a table: into
5889 the following column).
5890 @end table
5891
5892
5893 @menu
5894 * The date/time prompt:: How Org mode helps you entering date and time
5895 * Custom time format:: Making dates look different
5896 @end menu
5897
5898 @node The date/time prompt, Custom time format, Creating timestamps, Creating timestamps
5899 @subsection The date/time prompt
5900 @cindex date, reading in minibuffer
5901 @cindex time, reading in minibuffer
5902
5903 @vindex org-read-date-prefer-future
5904 When Org mode prompts for a date/time, the default is shown in default
5905 date/time format, and the prompt therefore seems to ask for a specific
5906 format. But it will in fact accept date/time information in a variety of
5907 formats. Generally, the information should start at the beginning of the
5908 string. Org mode will find whatever information is in
5909 there and derive anything you have not specified from the @emph{default date
5910 and time}. The default is usually the current date and time, but when
5911 modifying an existing timestamp, or when entering the second stamp of a
5912 range, it is taken from the stamp in the buffer. When filling in
5913 information, Org mode assumes that most of the time you will want to enter a
5914 date in the future: if you omit the month/year and the given day/month is
5915 @i{before} today, it will assume that you mean a future date@footnote{See the
5916 variable @code{org-read-date-prefer-future}. You may set that variable to
5917 the symbol @code{time} to even make a time before now shift the date to
5918 tomorrow.}. If the date has been automatically shifted into the future, the
5919 time prompt will show this with @samp{(=>F).}
5920
5921 For example, let's assume that today is @b{June 13, 2006}. Here is how
5922 various inputs will be interpreted, the items filled in by Org mode are
5923 in @b{bold}.
5924
5925 @example
5926 3-2-5 @result{} 2003-02-05
5927 2/5/3 @result{} 2003-02-05
5928 14 @result{} @b{2006}-@b{06}-14
5929 12 @result{} @b{2006}-@b{07}-12
5930 2/5 @result{} @b{2007}-02-05
5931 Fri @result{} nearest Friday after the default date
5932 sep 15 @result{} @b{2006}-09-15
5933 feb 15 @result{} @b{2007}-02-15
5934 sep 12 9 @result{} 2009-09-12
5935 12:45 @result{} @b{2006}-@b{06}-@b{13} 12:45
5936 22 sept 0:34 @result{} @b{2006}-09-22 0:34
5937 w4 @result{} ISO week for of the current year @b{2006}
5938 2012 w4 fri @result{} Friday of ISO week 4 in 2012
5939 2012-w04-5 @result{} Same as above
5940 @end example
5941
5942 Furthermore you can specify a relative date by giving, as the @emph{first}
5943 thing in the input: a plus/minus sign, a number and a letter ([hdwmy]) to
5944 indicate change in hours, days, weeks, months, or years. With a single plus
5945 or minus, the date is always relative to today. With a double plus or minus,
5946 it is relative to the default date. If instead of a single letter, you use
5947 the abbreviation of day name, the date will be the Nth such day, e.g.:
5948
5949 @example
5950 +0 @result{} today
5951 . @result{} today
5952 +4d @result{} four days from today
5953 +4 @result{} same as above
5954 +2w @result{} two weeks from today
5955 ++5 @result{} five days from default date
5956 +2tue @result{} second Tuesday from now
5957 -wed @result{} last Wednesday
5958 @end example
5959
5960 @vindex parse-time-months
5961 @vindex parse-time-weekdays
5962 The function understands English month and weekday abbreviations. If
5963 you want to use unabbreviated names and/or other languages, configure
5964 the variables @code{parse-time-months} and @code{parse-time-weekdays}.
5965
5966 @vindex org-read-date-force-compatible-dates
5967 Not all dates can be represented in a given Emacs implementation. By default
5968 Org mode forces dates into the compatibility range 1970--2037 which works on
5969 all Emacs implementations. If you want to use dates outside of this range,
5970 read the docstring of the variable
5971 @code{org-read-date-force-compatible-dates}.
5972
5973 You can specify a time range by giving start and end times or by giving a
5974 start time and a duration (in HH:MM format). Use one or two dash(es) as the
5975 separator in the former case and use '+' as the separator in the latter
5976 case, e.g.:
5977
5978 @example
5979 11am-1:15pm @result{} 11:00-13:15
5980 11am--1:15pm @result{} same as above
5981 11am+2:15 @result{} same as above
5982 @end example
5983
5984 @cindex calendar, for selecting date
5985 @vindex org-popup-calendar-for-date-prompt
5986 Parallel to the minibuffer prompt, a calendar is popped up@footnote{If
5987 you don't need/want the calendar, configure the variable
5988 @code{org-popup-calendar-for-date-prompt}.}. When you exit the date
5989 prompt, either by clicking on a date in the calendar, or by pressing
5990 @key{RET}, the date selected in the calendar will be combined with the
5991 information entered at the prompt. You can control the calendar fully
5992 from the minibuffer:
5993
5994 @kindex <
5995 @kindex >
5996 @kindex M-v
5997 @kindex C-v
5998 @kindex mouse-1
5999 @kindex S-@key{right}
6000 @kindex S-@key{left}
6001 @kindex S-@key{down}
6002 @kindex S-@key{up}
6003 @kindex M-S-@key{right}
6004 @kindex M-S-@key{left}
6005 @kindex @key{RET}
6006 @example
6007 @key{RET} @r{Choose date at cursor in calendar.}
6008 mouse-1 @r{Select date by clicking on it.}
6009 S-@key{right}/@key{left} @r{One day forward/backward.}
6010 S-@key{down}/@key{up} @r{One week forward/backward.}
6011 M-S-@key{right}/@key{left} @r{One month forward/backward.}
6012 > / < @r{Scroll calendar forward/backward by one month.}
6013 M-v / C-v @r{Scroll calendar forward/backward by 3 months.}
6014 @end example
6015
6016 @vindex org-read-date-display-live
6017 The actions of the date/time prompt may seem complex, but I assure you they
6018 will grow on you, and you will start getting annoyed by pretty much any other
6019 way of entering a date/time out there. To help you understand what is going
6020 on, the current interpretation of your input will be displayed live in the
6021 minibuffer@footnote{If you find this distracting, turn the display off with
6022 @code{org-read-date-display-live}.}.
6023
6024 @node Custom time format, , The date/time prompt, Creating timestamps
6025 @subsection Custom time format
6026 @cindex custom date/time format
6027 @cindex time format, custom
6028 @cindex date format, custom
6029
6030 @vindex org-display-custom-times
6031 @vindex org-time-stamp-custom-formats
6032 Org mode uses the standard ISO notation for dates and times as it is
6033 defined in ISO 8601. If you cannot get used to this and require another
6034 representation of date and time to keep you happy, you can get it by
6035 customizing the options @code{org-display-custom-times} and
6036 @code{org-time-stamp-custom-formats}.
6037
6038 @table @kbd
6039 @orgcmd{C-c C-x C-t,org-toggle-time-stamp-overlays}
6040 Toggle the display of custom formats for dates and times.
6041 @end table
6042
6043 @noindent
6044 Org mode needs the default format for scanning, so the custom date/time
6045 format does not @emph{replace} the default format---instead it is put
6046 @emph{over} the default format using text properties. This has the
6047 following consequences:
6048 @itemize @bullet
6049 @item
6050 You cannot place the cursor onto a timestamp anymore, only before or
6051 after.
6052 @item
6053 The @kbd{S-@key{up}/@key{down}} keys can no longer be used to adjust
6054 each component of a timestamp. If the cursor is at the beginning of
6055 the stamp, @kbd{S-@key{up}/@key{down}} will change the stamp by one day,
6056 just like @kbd{S-@key{left}/@key{right}}. At the end of the stamp, the
6057 time will be changed by one minute.
6058 @item
6059 If the timestamp contains a range of clock times or a repeater, these
6060 will not be overlaid, but remain in the buffer as they were.
6061 @item
6062 When you delete a timestamp character-by-character, it will only
6063 disappear from the buffer after @emph{all} (invisible) characters
6064 belonging to the ISO timestamp have been removed.
6065 @item
6066 If the custom timestamp format is longer than the default and you are
6067 using dates in tables, table alignment will be messed up. If the custom
6068 format is shorter, things do work as expected.
6069 @end itemize
6070
6071
6072 @node Deadlines and scheduling, Clocking work time, Creating timestamps, Dates and Times
6073 @section Deadlines and scheduling
6074
6075 A timestamp may be preceded by special keywords to facilitate planning:
6076
6077 @table @var
6078 @item DEADLINE
6079 @cindex DEADLINE keyword
6080
6081 Meaning: the task (most likely a TODO item, though not necessarily) is supposed
6082 to be finished on that date.
6083
6084 @vindex org-deadline-warning-days
6085 @vindex org-agenda-skip-deadline-prewarning-if-scheduled
6086 On the deadline date, the task will be listed in the agenda. In
6087 addition, the agenda for @emph{today} will carry a warning about the
6088 approaching or missed deadline, starting
6089 @code{org-deadline-warning-days} before the due date, and continuing
6090 until the entry is marked DONE@. An example:
6091
6092 @example
6093 *** TODO write article about the Earth for the Guide
6094 DEADLINE: <2004-02-29 Sun>
6095 The editor in charge is [[bbdb:Ford Prefect]]
6096 @end example
6097
6098 You can specify a different lead time for warnings for a specific
6099 deadlines using the following syntax. Here is an example with a warning
6100 period of 5 days @code{DEADLINE: <2004-02-29 Sun -5d>}. This warning is
6101 deactivated if the task get scheduled and you set
6102 @code{org-agenda-skip-deadline-prewarning-if-scheduled} to @code{t}.
6103
6104 @item SCHEDULED
6105 @cindex SCHEDULED keyword
6106
6107 Meaning: you are planning to start working on that task on the given
6108 date.
6109
6110 @vindex org-agenda-skip-scheduled-if-done
6111 The headline will be listed under the given date@footnote{It will still
6112 be listed on that date after it has been marked DONE@. If you don't like
6113 this, set the variable @code{org-agenda-skip-scheduled-if-done}.}. In
6114 addition, a reminder that the scheduled date has passed will be present
6115 in the compilation for @emph{today}, until the entry is marked DONE, i.e.,
6116 the task will automatically be forwarded until completed.
6117
6118 @example
6119 *** TODO Call Trillian for a date on New Years Eve.
6120 SCHEDULED: <2004-12-25 Sat>
6121 @end example
6122
6123 @vindex org-scheduled-delay-days
6124 @vindex org-agenda-skip-scheduled-delay-if-deadline
6125 If you want to @emph{delay} the display of this task in the agenda, use
6126 @code{SCHEDULED: <2004-12-25 Sat -2d>}: the task is still scheduled on the
6127 25th but will appear two days later. In case the task contains a repeater,
6128 the delay is considered to affect all occurrences; if you want the delay to
6129 only affect the first scheduled occurrence of the task, use @code{--2d}
6130 instead. See @code{org-scheduled-delay-days} and
6131 @code{org-agenda-skip-scheduled-delay-if-deadline} for details on how to
6132 control this globally or per agenda.
6133
6134 @noindent
6135 @b{Important:} Scheduling an item in Org mode should @i{not} be
6136 understood in the same way that we understand @i{scheduling a meeting}.
6137 Setting a date for a meeting is just a simple appointment, you should
6138 mark this entry with a simple plain timestamp, to get this item shown
6139 on the date where it applies. This is a frequent misunderstanding by
6140 Org users. In Org mode, @i{scheduling} means setting a date when you
6141 want to start working on an action item.
6142 @end table
6143
6144 You may use timestamps with repeaters in scheduling and deadline
6145 entries. Org mode will issue early and late warnings based on the
6146 assumption that the timestamp represents the @i{nearest instance} of
6147 the repeater. However, the use of diary sexp entries like
6148 @c
6149 @code{<%%(diary-float t 42)>}
6150 @c
6151 in scheduling and deadline timestamps is limited. Org mode does not
6152 know enough about the internals of each sexp function to issue early and
6153 late warnings. However, it will show the item on each day where the
6154 sexp entry matches.
6155
6156 @menu
6157 * Inserting deadline/schedule:: Planning items
6158 * Repeated tasks:: Items that show up again and again
6159 @end menu
6160
6161 @node Inserting deadline/schedule, Repeated tasks, Deadlines and scheduling, Deadlines and scheduling
6162 @subsection Inserting deadlines or schedules
6163
6164 The following commands allow you to quickly insert@footnote{The @samp{SCHEDULED} and
6165 @samp{DEADLINE} dates are inserted on the line right below the headline. Don't put
6166 any text between this line and the headline.} a deadline or to schedule
6167 an item:
6168
6169 @table @kbd
6170 @c
6171 @orgcmd{C-c C-d,org-deadline}
6172 Insert @samp{DEADLINE} keyword along with a stamp. The insertion will happen
6173 in the line directly following the headline. Any CLOSED timestamp will be
6174 removed. When called with a prefix arg, an existing deadline will be removed
6175 from the entry. Depending on the variable @code{org-log-redeadline}@footnote{with corresponding
6176 @code{#+STARTUP} keywords @code{logredeadline}, @code{lognoteredeadline},
6177 and @code{nologredeadline}}, a note will be taken when changing an existing
6178 deadline.
6179
6180 @orgcmd{C-c C-s,org-schedule}
6181 Insert @samp{SCHEDULED} keyword along with a stamp. The insertion will
6182 happen in the line directly following the headline. Any CLOSED timestamp
6183 will be removed. When called with a prefix argument, remove the scheduling
6184 date from the entry. Depending on the variable
6185 @code{org-log-reschedule}@footnote{with corresponding @code{#+STARTUP}
6186 keywords @code{logreschedule}, @code{lognotereschedule}, and
6187 @code{nologreschedule}}, a note will be taken when changing an existing
6188 scheduling time.
6189 @c
6190 @orgcmd{C-c C-x C-k,org-mark-entry-for-agenda-action}
6191 @kindex k a
6192 @kindex k s
6193 Mark the current entry for agenda action. After you have marked the entry
6194 like this, you can open the agenda or the calendar to find an appropriate
6195 date. With the cursor on the selected date, press @kbd{k s} or @kbd{k d} to
6196 schedule the marked item.
6197 @c
6198 @orgcmd{C-c / d,org-check-deadlines}
6199 @cindex sparse tree, for deadlines
6200 @vindex org-deadline-warning-days
6201 Create a sparse tree with all deadlines that are either past-due, or
6202 which will become due within @code{org-deadline-warning-days}.
6203 With @kbd{C-u} prefix, show all deadlines in the file. With a numeric
6204 prefix, check that many days. For example, @kbd{C-1 C-c / d} shows
6205 all deadlines due tomorrow.
6206 @c
6207 @orgcmd{C-c / b,org-check-before-date}
6208 Sparse tree for deadlines and scheduled items before a given date.
6209 @c
6210 @orgcmd{C-c / a,org-check-after-date}
6211 Sparse tree for deadlines and scheduled items after a given date.
6212 @end table
6213
6214 Note that @code{org-schedule} and @code{org-deadline} supports
6215 setting the date by indicating a relative time: e.g., +1d will set
6216 the date to the next day after today, and --1w will set the date
6217 to the previous week before any current timestamp.
6218
6219 @node Repeated tasks, , Inserting deadline/schedule, Deadlines and scheduling
6220 @subsection Repeated tasks
6221 @cindex tasks, repeated
6222 @cindex repeated tasks
6223
6224 Some tasks need to be repeated again and again. Org mode helps to
6225 organize such tasks using a so-called repeater in a DEADLINE, SCHEDULED,
6226 or plain timestamp. In the following example
6227 @example
6228 ** TODO Pay the rent
6229 DEADLINE: <2005-10-01 Sat +1m>
6230 @end example
6231 @noindent
6232 the @code{+1m} is a repeater; the intended interpretation is that the task
6233 has a deadline on <2005-10-01> and repeats itself every (one) month starting
6234 from that time. You can use yearly, monthly, weekly, daily and hourly repeat
6235 cookies by using the @code{y/w/m/d/h} letters. If you need both a repeater
6236 and a special warning period in a deadline entry, the repeater should come
6237 first and the warning period last: @code{DEADLINE: <2005-10-01 Sat +1m -3d>}.
6238
6239 @vindex org-todo-repeat-to-state
6240 Deadlines and scheduled items produce entries in the agenda when they are
6241 over-due, so it is important to be able to mark such an entry as completed
6242 once you have done so. When you mark a DEADLINE or a SCHEDULE with the TODO
6243 keyword DONE, it will no longer produce entries in the agenda. The problem
6244 with this is, however, that then also the @emph{next} instance of the
6245 repeated entry will not be active. Org mode deals with this in the following
6246 way: When you try to mark such an entry DONE (using @kbd{C-c C-t}), it will
6247 shift the base date of the repeating timestamp by the repeater interval, and
6248 immediately set the entry state back to TODO@footnote{In fact, the target
6249 state is taken from, in this sequence, the @code{REPEAT_TO_STATE} property or
6250 the variable @code{org-todo-repeat-to-state}. If neither of these is
6251 specified, the target state defaults to the first state of the TODO state
6252 sequence.}. In the example above, setting the state to DONE would actually
6253 switch the date like this:
6254
6255 @example
6256 ** TODO Pay the rent
6257 DEADLINE: <2005-11-01 Tue +1m>
6258 @end example
6259
6260 @vindex org-log-repeat
6261 A timestamp@footnote{You can change this using the option
6262 @code{org-log-repeat}, or the @code{#+STARTUP} options @code{logrepeat},
6263 @code{lognoterepeat}, and @code{nologrepeat}. With @code{lognoterepeat}, you
6264 will also be prompted for a note.} will be added under the deadline, to keep
6265 a record that you actually acted on the previous instance of this deadline.
6266
6267 As a consequence of shifting the base date, this entry will no longer be
6268 visible in the agenda when checking past dates, but all future instances
6269 will be visible.
6270
6271 With the @samp{+1m} cookie, the date shift will always be exactly one
6272 month. So if you have not paid the rent for three months, marking this
6273 entry DONE will still keep it as an overdue deadline. Depending on the
6274 task, this may not be the best way to handle it. For example, if you
6275 forgot to call your father for 3 weeks, it does not make sense to call
6276 him 3 times in a single day to make up for it. Finally, there are tasks
6277 like changing batteries which should always repeat a certain time
6278 @i{after} the last time you did it. For these tasks, Org mode has
6279 special repeaters @samp{++} and @samp{.+}. For example:
6280
6281 @example
6282 ** TODO Call Father
6283 DEADLINE: <2008-02-10 Sun ++1w>
6284 Marking this DONE will shift the date by at least one week,
6285 but also by as many weeks as it takes to get this date into
6286 the future. However, it stays on a Sunday, even if you called
6287 and marked it done on Saturday.
6288 ** TODO Check the batteries in the smoke detectors
6289 DEADLINE: <2005-11-01 Tue .+1m>
6290 Marking this DONE will shift the date to one month after
6291 today.
6292 @end example
6293
6294 @vindex org-agenda-skip-scheduled-if-deadline-is-shown
6295 You may have both scheduling and deadline information for a specific task.
6296 If the repeater is set for the scheduling information only, you probably want
6297 the repeater to be ignored after the deadline. If so, set the variable
6298 @code{org-agenda-skip-scheduled-if-deadline-is-shown} to
6299 @code{repeated-after-deadline}. If you want both scheduling and deadline
6300 information to repeat after the same interval, set the same repeater for both
6301 timestamps.
6302
6303 An alternative to using a repeater is to create a number of copies of a task
6304 subtree, with dates shifted in each copy. The command @kbd{C-c C-x c} was
6305 created for this purpose, it is described in @ref{Structure editing}.
6306
6307
6308 @node Clocking work time, Effort estimates, Deadlines and scheduling, Dates and Times
6309 @section Clocking work time
6310 @cindex clocking time
6311 @cindex time clocking
6312
6313 Org mode allows you to clock the time you spend on specific tasks in a
6314 project. When you start working on an item, you can start the clock. When
6315 you stop working on that task, or when you mark the task done, the clock is
6316 stopped and the corresponding time interval is recorded. It also computes
6317 the total time spent on each subtree@footnote{Clocking only works if all
6318 headings are indented with less than 30 stars. This is a hardcoded
6319 limitation of `lmax' in `org-clock-sum'.} of a project. And it remembers a
6320 history or tasks recently clocked, to that you can jump quickly between a
6321 number of tasks absorbing your time.
6322
6323 To save the clock history across Emacs sessions, use
6324 @lisp
6325 (setq org-clock-persist 'history)
6326 (org-clock-persistence-insinuate)
6327 @end lisp
6328 When you clock into a new task after resuming Emacs, the incomplete
6329 clock@footnote{To resume the clock under the assumption that you have worked
6330 on this task while outside Emacs, use @code{(setq org-clock-persist t)}.}
6331 will be found (@pxref{Resolving idle time}) and you will be prompted about
6332 what to do with it.
6333
6334 @menu
6335 * Clocking commands:: Starting and stopping a clock
6336 * The clock table:: Detailed reports
6337 * Resolving idle time:: Resolving time when you've been idle
6338 @end menu
6339
6340 @node Clocking commands, The clock table, Clocking work time, Clocking work time
6341 @subsection Clocking commands
6342
6343 @table @kbd
6344 @orgcmd{C-c C-x C-i,org-clock-in}
6345 @vindex org-clock-into-drawer
6346 @vindex org-clock-continuously
6347 @cindex property, LOG_INTO_DRAWER
6348 Start the clock on the current item (clock-in). This inserts the CLOCK
6349 keyword together with a timestamp. If this is not the first clocking of
6350 this item, the multiple CLOCK lines will be wrapped into a
6351 @code{:LOGBOOK:} drawer (see also the variable
6352 @code{org-clock-into-drawer}). You can also overrule
6353 the setting of this variable for a subtree by setting a
6354 @code{CLOCK_INTO_DRAWER} or @code{LOG_INTO_DRAWER} property.
6355 When called with a @kbd{C-u} prefix argument,
6356 select the task from a list of recently clocked tasks. With two @kbd{C-u
6357 C-u} prefixes, clock into the task at point and mark it as the default task;
6358 the default task will then always be available with letter @kbd{d} when
6359 selecting a clocking task. With three @kbd{C-u C-u C-u} prefixes, force
6360 continuous clocking by starting the clock when the last clock stopped.@*
6361 @cindex property: CLOCK_MODELINE_TOTAL
6362 @cindex property: LAST_REPEAT
6363 @vindex org-clock-modeline-total
6364 While the clock is running, the current clocking time is shown in the mode
6365 line, along with the title of the task. The clock time shown will be all
6366 time ever clocked for this task and its children. If the task has an effort
6367 estimate (@pxref{Effort estimates}), the mode line displays the current
6368 clocking time against it@footnote{To add an effort estimate ``on the fly'',
6369 hook a function doing this to @code{org-clock-in-prepare-hook}.} If the task
6370 is a repeating one (@pxref{Repeated tasks}), only the time since the last
6371 reset of the task @footnote{as recorded by the @code{LAST_REPEAT} property}
6372 will be shown. More control over what time is shown can be exercised with
6373 the @code{CLOCK_MODELINE_TOTAL} property. It may have the values
6374 @code{current} to show only the current clocking instance, @code{today} to
6375 show all time clocked on this tasks today (see also the variable
6376 @code{org-extend-today-until}), @code{all} to include all time, or
6377 @code{auto} which is the default@footnote{See also the variable
6378 @code{org-clock-modeline-total}.}.@* Clicking with @kbd{mouse-1} onto the
6379 mode line entry will pop up a menu with clocking options.
6380 @c
6381 @orgcmd{C-c C-x C-o,org-clock-out}
6382 @vindex org-log-note-clock-out
6383 Stop the clock (clock-out). This inserts another timestamp at the same
6384 location where the clock was last started. It also directly computes
6385 the resulting time in inserts it after the time range as @samp{=>
6386 HH:MM}. See the variable @code{org-log-note-clock-out} for the
6387 possibility to record an additional note together with the clock-out
6388 timestamp@footnote{The corresponding in-buffer setting is:
6389 @code{#+STARTUP: lognoteclock-out}}.
6390 @orgcmd{C-c C-x C-x,org-clock-in-last}
6391 @vindex org-clock-continuously
6392 Reclock the last clocked task. With one @kbd{C-u} prefix argument,
6393 select the task from the clock history. With two @kbd{C-u} prefixes,
6394 force continuous clocking by starting the clock when the last clock
6395 stopped.
6396 @orgcmd{C-c C-x C-e,org-clock-modify-effort-estimate}
6397 Update the effort estimate for the current clock task.
6398 @kindex C-c C-y
6399 @kindex C-c C-c
6400 @orgcmdkkc{C-c C-c,C-c C-y,org-evaluate-time-range}
6401 Recompute the time interval after changing one of the timestamps. This
6402 is only necessary if you edit the timestamps directly. If you change
6403 them with @kbd{S-@key{cursor}} keys, the update is automatic.
6404 @orgcmd{C-S-@key{up/down},org-clock-timestamps-up/down}
6405 On @code{CLOCK} log lines, increase/decrease both timestamps so that the
6406 clock duration keeps the same.
6407 @orgcmd{S-M-@key{up/down},org-timestamp-up/down}
6408 On @code{CLOCK} log lines, increase/decrease the timestamp at point and
6409 the one of the previous (or the next clock) timestamp by the same duration.
6410 For example, if you hit @kbd{S-M-@key{up}} to increase a clocked-out timestamp
6411 by five minutes, then the clocked-in timestamp of the next clock will be
6412 increased by five minutes.
6413 @orgcmd{C-c C-t,org-todo}
6414 Changing the TODO state of an item to DONE automatically stops the clock
6415 if it is running in this same item.
6416 @orgcmd{C-c C-x C-q,org-clock-cancel}
6417 Cancel the current clock. This is useful if a clock was started by
6418 mistake, or if you ended up working on something else.
6419 @orgcmd{C-c C-x C-j,org-clock-goto}
6420 Jump to the headline of the currently clocked in task. With a @kbd{C-u}
6421 prefix arg, select the target task from a list of recently clocked tasks.
6422 @orgcmd{C-c C-x C-d,org-clock-display}
6423 @vindex org-remove-highlights-with-change
6424 Display time summaries for each subtree in the current buffer. This puts
6425 overlays at the end of each headline, showing the total time recorded under
6426 that heading, including the time of any subheadings. You can use visibility
6427 cycling to study the tree, but the overlays disappear when you change the
6428 buffer (see variable @code{org-remove-highlights-with-change}) or press
6429 @kbd{C-c C-c}.
6430 @end table
6431
6432 The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
6433 the agenda (@pxref{Weekly/daily agenda}) to show which tasks have been
6434 worked on or closed during a day.
6435
6436 @strong{Important:} note that both @code{org-clock-out} and
6437 @code{org-clock-in-last} can have a global keybinding and will not
6438 modify the window disposition.
6439
6440 @node The clock table, Resolving idle time, Clocking commands, Clocking work time
6441 @subsection The clock table
6442 @cindex clocktable, dynamic block
6443 @cindex report, of clocked time
6444
6445 Org mode can produce quite complex reports based on the time clocking
6446 information. Such a report is called a @emph{clock table}, because it is
6447 formatted as one or several Org tables.
6448
6449 @table @kbd
6450 @orgcmd{C-c C-x C-r,org-clock-report}
6451 Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
6452 report as an Org mode table into the current file. When the cursor is
6453 at an existing clock table, just update it. When called with a prefix
6454 argument, jump to the first clock report in the current document and
6455 update it. The clock table always includes also trees with
6456 @code{:ARCHIVE:} tag.
6457 @orgcmdkkc{C-c C-c,C-c C-x C-u,org-dblock-update}
6458 Update dynamic block at point. The cursor needs to be in the
6459 @code{#+BEGIN} line of the dynamic block.
6460 @orgkey{C-u C-c C-x C-u}
6461 Update all dynamic blocks (@pxref{Dynamic blocks}). This is useful if
6462 you have several clock table blocks in a buffer.
6463 @orgcmdkxkc{S-@key{left},S-@key{right},org-clocktable-try-shift}
6464 Shift the current @code{:block} interval and update the table. The cursor
6465 needs to be in the @code{#+BEGIN: clocktable} line for this command. If
6466 @code{:block} is @code{today}, it will be shifted to @code{today-1} etc.
6467 @end table
6468
6469
6470 Here is an example of the frame for a clock table as it is inserted into the
6471 buffer with the @kbd{C-c C-x C-r} command:
6472
6473 @cindex #+BEGIN, clocktable
6474 @example
6475 #+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
6476 #+END: clocktable
6477 @end example
6478 @noindent
6479 @vindex org-clocktable-defaults
6480 The @samp{BEGIN} line and specify a number of options to define the scope,
6481 structure, and formatting of the report. Defaults for all these options can
6482 be configured in the variable @code{org-clocktable-defaults}.
6483
6484 @noindent First there are options that determine which clock entries are to
6485 be selected:
6486 @example
6487 :maxlevel @r{Maximum level depth to which times are listed in the table.}
6488 @r{Clocks at deeper levels will be summed into the upper level.}
6489 :scope @r{The scope to consider. This can be any of the following:}
6490 nil @r{the current buffer or narrowed region}
6491 file @r{the full current buffer}
6492 subtree @r{the subtree where the clocktable is located}
6493 tree@var{N} @r{the surrounding level @var{N} tree, for example @code{tree3}}
6494 tree @r{the surrounding level 1 tree}
6495 agenda @r{all agenda files}
6496 ("file"..) @r{scan these files}
6497 file-with-archives @r{current file and its archives}
6498 agenda-with-archives @r{all agenda files, including archives}
6499 :block @r{The time block to consider. This block is specified either}
6500 @r{absolute, or relative to the current time and may be any of}
6501 @r{these formats:}
6502 2007-12-31 @r{New year eve 2007}
6503 2007-12 @r{December 2007}
6504 2007-W50 @r{ISO-week 50 in 2007}
6505 2007-Q2 @r{2nd quarter in 2007}
6506 2007 @r{the year 2007}
6507 today, yesterday, today-@var{N} @r{a relative day}
6508 thisweek, lastweek, thisweek-@var{N} @r{a relative week}
6509 thismonth, lastmonth, thismonth-@var{N} @r{a relative month}
6510 thisyear, lastyear, thisyear-@var{N} @r{a relative year}
6511 @r{Use @kbd{S-@key{left}/@key{right}} keys to shift the time interval.}
6512 :tstart @r{A time string specifying when to start considering times.}
6513 @r{Relative times like @code{"<-2w>"} can also be used. See}
6514 @r{@ref{Matching tags and properties} for relative time syntax.}
6515 :tend @r{A time string specifying when to stop considering times.}
6516 @r{Relative times like @code{"<now>"} can also be used. See}
6517 @r{@ref{Matching tags and properties} for relative time syntax.}
6518 :wstart @r{The starting day of the week. The default is 1 for monday.}
6519 :mstart @r{The starting day of the month. The default 1 is for the first}
6520 @r{day of the month.}
6521 :step @r{@code{week} or @code{day}, to split the table into chunks.}
6522 @r{To use this, @code{:block} or @code{:tstart}, @code{:tend} are needed.}
6523 :stepskip0 @r{Do not show steps that have zero time.}
6524 :fileskip0 @r{Do not show table sections from files which did not contribute.}
6525 :tags @r{A tags match to select entries that should contribute. See}
6526 @r{@ref{Matching tags and properties} for the match syntax.}
6527 @end example
6528
6529 Then there are options which determine the formatting of the table. There
6530 options are interpreted by the function @code{org-clocktable-write-default},
6531 but you can specify your own function using the @code{:formatter} parameter.
6532 @example
6533 :emphasize @r{When @code{t}, emphasize level one and level two items.}
6534 :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".}
6535 :link @r{Link the item headlines in the table to their origins.}
6536 :narrow @r{An integer to limit the width of the headline column in}
6537 @r{the org table. If you write it like @samp{50!}, then the}
6538 @r{headline will also be shortened in export.}
6539 :indent @r{Indent each headline field according to its level.}
6540 :tcolumns @r{Number of columns to be used for times. If this is smaller}
6541 @r{than @code{:maxlevel}, lower levels will be lumped into one column.}
6542 :level @r{Should a level number column be included?}
6543 :compact @r{Abbreviation for @code{:level nil :indent t :narrow 40! :tcolumns 1}}
6544 @r{All are overwritten except if there is an explicit @code{:narrow}}
6545 :timestamp @r{A timestamp for the entry, when available. Look for SCHEDULED,}
6546 @r{DEADLINE, TIMESTAMP and TIMESTAMP_IA, in this order.}
6547 :properties @r{List of properties that should be shown in the table. Each}
6548 @r{property will get its own column.}
6549 :inherit-props @r{When this flag is @code{t}, the values for @code{:properties} will be inherited.}
6550 :formula @r{Content of a @code{#+TBLFM} line to be added and evaluated.}
6551 @r{As a special case, @samp{:formula %} adds a column with % time.}
6552 @r{If you do not specify a formula here, any existing formula}
6553 @r{below the clock table will survive updates and be evaluated.}
6554 :formatter @r{A function to format clock data and insert it into the buffer.}
6555 @end example
6556 To get a clock summary of the current level 1 tree, for the current
6557 day, you could write
6558 @example
6559 #+BEGIN: clocktable :maxlevel 2 :block today :scope tree1 :link t
6560 #+END: clocktable
6561 @end example
6562 @noindent
6563 and to use a specific time range you could write@footnote{Note that all
6564 parameters must be specified in a single line---the line is broken here
6565 only to fit it into the manual.}
6566 @example
6567 #+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>"
6568 :tend "<2006-08-10 Thu 12:00>"
6569 #+END: clocktable
6570 @end example
6571 A range starting a week ago and ending right now could be written as
6572 @example
6573 #+BEGIN: clocktable :tstart "<-1w>" :tend "<now>"
6574 #+END: clocktable
6575 @end example
6576 A summary of the current subtree with % times would be
6577 @example
6578 #+BEGIN: clocktable :scope subtree :link t :formula %
6579 #+END: clocktable
6580 @end example
6581 A horizontally compact representation of everything clocked during last week
6582 would be
6583 @example
6584 #+BEGIN: clocktable :scope agenda :block lastweek :compact t
6585 #+END: clocktable
6586 @end example
6587
6588 @node Resolving idle time, , The clock table, Clocking work time
6589 @subsection Resolving idle time and continuous clocking
6590
6591 @subsubheading Resolving idle time
6592 @cindex resolve idle time
6593 @vindex org-clock-x11idle-program-name
6594
6595 @cindex idle, resolve, dangling
6596 If you clock in on a work item, and then walk away from your
6597 computer---perhaps to take a phone call---you often need to ``resolve'' the
6598 time you were away by either subtracting it from the current clock, or
6599 applying it to another one.
6600
6601 @vindex org-clock-idle-time
6602 By customizing the variable @code{org-clock-idle-time} to some integer, such
6603 as 10 or 15, Emacs can alert you when you get back to your computer after
6604 being idle for that many minutes@footnote{On computers using Mac OS X,
6605 idleness is based on actual user idleness, not just Emacs' idle time. For
6606 X11, you can install a utility program @file{x11idle.c}, available in the
6607 @code{contrib/scripts} directory of the Org git distribution, or install the
6608 @file{xprintidle} package and set it to the variable
6609 @code{org-clock-x11idle-program-name} if you are running Debian, to get the
6610 same general treatment of idleness. On other systems, idle time refers to
6611 Emacs idle time only.}, and ask what you want to do with the idle time.
6612 There will be a question waiting for you when you get back, indicating how
6613 much idle time has passed (constantly updated with the current amount), as
6614 well as a set of choices to correct the discrepancy:
6615
6616 @table @kbd
6617 @item k
6618 To keep some or all of the minutes and stay clocked in, press @kbd{k}. Org
6619 will ask how many of the minutes to keep. Press @key{RET} to keep them all,
6620 effectively changing nothing, or enter a number to keep that many minutes.
6621 @item K
6622 If you use the shift key and press @kbd{K}, it will keep however many minutes
6623 you request and then immediately clock out of that task. If you keep all of
6624 the minutes, this is the same as just clocking out of the current task.
6625 @item s
6626 To keep none of the minutes, use @kbd{s} to subtract all the away time from
6627 the clock, and then check back in from the moment you returned.
6628 @item S
6629 To keep none of the minutes and just clock out at the start of the away time,
6630 use the shift key and press @kbd{S}. Remember that using shift will always
6631 leave you clocked out, no matter which option you choose.
6632 @item C
6633 To cancel the clock altogether, use @kbd{C}. Note that if instead of
6634 canceling you subtract the away time, and the resulting clock amount is less
6635 than a minute, the clock will still be canceled rather than clutter up the
6636 log with an empty entry.
6637 @end table
6638
6639 What if you subtracted those away minutes from the current clock, and now
6640 want to apply them to a new clock? Simply clock in to any task immediately
6641 after the subtraction. Org will notice that you have subtracted time ``on
6642 the books'', so to speak, and will ask if you want to apply those minutes to
6643 the next task you clock in on.
6644
6645 There is one other instance when this clock resolution magic occurs. Say you
6646 were clocked in and hacking away, and suddenly your cat chased a mouse who
6647 scared a hamster that crashed into your UPS's power button! You suddenly
6648 lose all your buffers, but thanks to auto-save you still have your recent Org
6649 mode changes, including your last clock in.
6650
6651 If you restart Emacs and clock into any task, Org will notice that you have a
6652 dangling clock which was never clocked out from your last session. Using
6653 that clock's starting time as the beginning of the unaccounted-for period,
6654 Org will ask how you want to resolve that time. The logic and behavior is
6655 identical to dealing with away time due to idleness; it is just happening due
6656 to a recovery event rather than a set amount of idle time.
6657
6658 You can also check all the files visited by your Org agenda for dangling
6659 clocks at any time using @kbd{M-x org-resolve-clocks RET} (or @kbd{C-c C-x C-z}).
6660
6661 @subsubheading Continuous clocking
6662 @cindex continuous clocking
6663 @vindex org-clock-continuously
6664
6665 You may want to start clocking from the time when you clocked out the
6666 previous task. To enable this systematically, set @code{org-clock-continuously}
6667 to @code{t}. Each time you clock in, Org retrieves the clock-out time of the
6668 last clocked entry for this session, and start the new clock from there.
6669
6670 If you only want this from time to time, use three universal prefix arguments
6671 with @code{org-clock-in} and two @kbd{C-u C-u} with @code{org-clock-in-last}.
6672
6673 @node Effort estimates, Relative timer, Clocking work time, Dates and Times
6674 @section Effort estimates
6675 @cindex effort estimates
6676
6677 @cindex property, Effort
6678 @vindex org-effort-property
6679 If you want to plan your work in a very detailed way, or if you need to
6680 produce offers with quotations of the estimated work effort, you may want to
6681 assign effort estimates to entries. If you are also clocking your work, you
6682 may later want to compare the planned effort with the actual working time, a
6683 great way to improve planning estimates. Effort estimates are stored in a
6684 special property @samp{Effort}@footnote{You may change the property being
6685 used with the variable @code{org-effort-property}.}. You can set the effort
6686 for an entry with the following commands:
6687
6688 @table @kbd
6689 @orgcmd{C-c C-x e,org-set-effort}
6690 Set the effort estimate for the current entry. With a numeric prefix
6691 argument, set it to the Nth allowed value (see below). This command is also
6692 accessible from the agenda with the @kbd{e} key.
6693 @orgcmd{C-c C-x C-e,org-clock-modify-effort-estimate}
6694 Modify the effort estimate of the item currently being clocked.
6695 @end table
6696
6697 Clearly the best way to work with effort estimates is through column view
6698 (@pxref{Column view}). You should start by setting up discrete values for
6699 effort estimates, and a @code{COLUMNS} format that displays these values
6700 together with clock sums (if you want to clock your time). For a specific
6701 buffer you can use
6702
6703 @example
6704 #+PROPERTY: Effort_ALL 0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00
6705 #+COLUMNS: %40ITEM(Task) %17Effort(Estimated Effort)@{:@} %CLOCKSUM
6706 @end example
6707
6708 @noindent
6709 @vindex org-global-properties
6710 @vindex org-columns-default-format
6711 or, even better, you can set up these values globally by customizing the
6712 variables @code{org-global-properties} and @code{org-columns-default-format}.
6713 In particular if you want to use this setup also in the agenda, a global
6714 setup may be advised.
6715
6716 The way to assign estimates to individual items is then to switch to column
6717 mode, and to use @kbd{S-@key{right}} and @kbd{S-@key{left}} to change the
6718 value. The values you enter will immediately be summed up in the hierarchy.
6719 In the column next to it, any clocked time will be displayed.
6720
6721 @vindex org-agenda-columns-add-appointments-to-effort-sum
6722 If you switch to column view in the daily/weekly agenda, the effort column
6723 will summarize the estimated work effort for each day@footnote{Please note
6724 the pitfalls of summing hierarchical data in a flat list (@pxref{Agenda
6725 column view}).}, and you can use this to find space in your schedule. To get
6726 an overview of the entire part of the day that is committed, you can set the
6727 option @code{org-agenda-columns-add-appointments-to-effort-sum}. The
6728 appointments on a day that take place over a specified time interval will
6729 then also be added to the load estimate of the day.
6730
6731 Effort estimates can be used in secondary agenda filtering that is triggered
6732 with the @kbd{/} key in the agenda (@pxref{Agenda commands}). If you have
6733 these estimates defined consistently, two or three key presses will narrow
6734 down the list to stuff that fits into an available time slot.
6735
6736 @node Relative timer, Countdown timer, Effort estimates, Dates and Times
6737 @section Taking notes with a relative timer
6738 @cindex relative timer
6739
6740 When taking notes during, for example, a meeting or a video viewing, it can
6741 be useful to have access to times relative to a starting time. Org provides
6742 such a relative timer and make it easy to create timed notes.
6743
6744 @table @kbd
6745 @orgcmd{C-c C-x .,org-timer}
6746 Insert a relative time into the buffer. The first time you use this, the
6747 timer will be started. When called with a prefix argument, the timer is
6748 restarted.
6749 @orgcmd{C-c C-x -,org-timer-item}
6750 Insert a description list item with the current relative time. With a prefix
6751 argument, first reset the timer to 0.
6752 @orgcmd{M-@key{RET},org-insert-heading}
6753 Once the timer list is started, you can also use @kbd{M-@key{RET}} to insert
6754 new timer items.
6755 @c for key sequences with a comma, command name macros fail :(
6756 @kindex C-c C-x ,
6757 @item C-c C-x ,
6758 Pause the timer, or continue it if it is already paused
6759 (@command{org-timer-pause-or-continue}).
6760 @c removed the sentence because it is redundant to the following item
6761 @kindex C-u C-c C-x ,
6762 @item C-u C-c C-x ,
6763 Stop the timer. After this, you can only start a new timer, not continue the
6764 old one. This command also removes the timer from the mode line.
6765 @orgcmd{C-c C-x 0,org-timer-start}
6766 Reset the timer without inserting anything into the buffer. By default, the
6767 timer is reset to 0. When called with a @kbd{C-u} prefix, reset the timer to
6768 specific starting offset. The user is prompted for the offset, with a
6769 default taken from a timer string at point, if any, So this can be used to
6770 restart taking notes after a break in the process. When called with a double
6771 prefix argument @kbd{C-u C-u}, change all timer strings in the active region
6772 by a certain amount. This can be used to fix timer strings if the timer was
6773 not started at exactly the right moment.
6774 @end table
6775
6776 @node Countdown timer, , Relative timer, Dates and Times
6777 @section Countdown timer
6778 @cindex Countdown timer
6779 @kindex C-c C-x ;
6780 @kindex ;
6781
6782 Calling @code{org-timer-set-timer} from an Org mode buffer runs a countdown
6783 timer. Use @kbd{;} from agenda buffers, @key{C-c C-x ;} everywhere else.
6784
6785 @code{org-timer-set-timer} prompts the user for a duration and displays a
6786 countdown timer in the modeline. @code{org-timer-default-timer} sets the
6787 default countdown value. Giving a prefix numeric argument overrides this
6788 default value.
6789
6790 @node Capture - Refile - Archive, Agenda Views, Dates and Times, Top
6791 @chapter Capture - Refile - Archive
6792 @cindex capture
6793
6794 An important part of any organization system is the ability to quickly
6795 capture new ideas and tasks, and to associate reference material with them.
6796 Org does this using a process called @i{capture}. It also can store files
6797 related to a task (@i{attachments}) in a special directory. Once in the
6798 system, tasks and projects need to be moved around. Moving completed project
6799 trees to an archive file keeps the system compact and fast.
6800
6801 @menu
6802 * Capture:: Capturing new stuff
6803 * Attachments:: Add files to tasks
6804 * RSS Feeds:: Getting input from RSS feeds
6805 * Protocols:: External (e.g., Browser) access to Emacs and Org
6806 * Refile and copy:: Moving/copying a tree from one place to another
6807 * Archiving:: What to do with finished projects
6808 @end menu
6809
6810 @node Capture, Attachments, Capture - Refile - Archive, Capture - Refile - Archive
6811 @section Capture
6812 @cindex capture
6813
6814 Capture lets you quickly store notes with little interruption of your work
6815 flow. Org's method for capturing new items is heavily inspired by John
6816 Wiegley excellent @file{remember.el} package. Up to version 6.36, Org
6817 used a special setup for @file{remember.el}, then replaced it with
6818 @file{org-remember.el}. As of version 8.0, @file{org-remember.el} has
6819 been completely replaced by @file{org-capture.el}.
6820
6821 If your configuration depends on @file{org-remember.el}, you need to update
6822 it and use the setup described below. To convert your
6823 @code{org-remember-templates}, run the command
6824 @example
6825 @kbd{M-x org-capture-import-remember-templates RET}
6826 @end example
6827 @noindent and then customize the new variable with @kbd{M-x
6828 customize-variable org-capture-templates}, check the result, and save the
6829 customization.
6830
6831 @menu
6832 * Setting up capture:: Where notes will be stored
6833 * Using capture:: Commands to invoke and terminate capture
6834 * Capture templates:: Define the outline of different note types
6835 @end menu
6836
6837 @node Setting up capture, Using capture, Capture, Capture
6838 @subsection Setting up capture
6839
6840 The following customization sets a default target file for notes, and defines
6841 a global key@footnote{Please select your own key, @kbd{C-c c} is only a
6842 suggestion.} for capturing new material.
6843
6844 @vindex org-default-notes-file
6845 @smalllisp
6846 @group
6847 (setq org-default-notes-file (concat org-directory "/notes.org"))
6848 (define-key global-map "\C-cc" 'org-capture)
6849 @end group
6850 @end smalllisp
6851
6852 @node Using capture, Capture templates, Setting up capture, Capture
6853 @subsection Using capture
6854
6855 @table @kbd
6856 @orgcmd{C-c c,org-capture}
6857 Call the command @code{org-capture}. Note that this keybinding is global and
6858 not active by default: you need to install it. If you have templates
6859 @cindex date tree
6860 defined @pxref{Capture templates}, it will offer these templates for
6861 selection or use a new Org outline node as the default template. It will
6862 insert the template into the target file and switch to an indirect buffer
6863 narrowed to this new node. You may then insert the information you want.
6864
6865 @orgcmd{C-c C-c,org-capture-finalize}
6866 Once you have finished entering information into the capture buffer, @kbd{C-c
6867 C-c} will return you to the window configuration before the capture process,
6868 so that you can resume your work without further distraction. When called
6869 with a prefix arg, finalize and then jump to the captured item.
6870
6871 @orgcmd{C-c C-w,org-capture-refile}
6872 Finalize the capture process by refiling (@pxref{Refile and copy}) the note to
6873 a different place. Please realize that this is a normal refiling command
6874 that will be executed---so the cursor position at the moment you run this
6875 command is important. If you have inserted a tree with a parent and
6876 children, first move the cursor back to the parent. Any prefix argument
6877 given to this command will be passed on to the @code{org-refile} command.
6878
6879 @orgcmd{C-c C-k,org-capture-kill}
6880 Abort the capture process and return to the previous state.
6881
6882 @end table
6883
6884 You can also call @code{org-capture} in a special way from the agenda, using
6885 the @kbd{k c} key combination. With this access, any timestamps inserted by
6886 the selected capture template will default to the cursor date in the agenda,
6887 rather than to the current date.
6888
6889 To find the locations of the last stored capture, use @code{org-capture} with
6890 prefix commands:
6891
6892 @table @kbd
6893 @orgkey{C-u C-c c}
6894 Visit the target location of a capture template. You get to select the
6895 template in the usual way.
6896 @orgkey{C-u C-u C-c c}
6897 Visit the last stored capture item in its buffer.
6898 @end table
6899
6900 @vindex org-capture-bookmark
6901 @cindex org-capture-last-stored
6902 You can also jump to the bookmark @code{org-capture-last-stored}, which will
6903 automatically be created unless you set @code{org-capture-bookmark} to
6904 @code{nil}.
6905
6906 To insert the capture at point in an Org buffer, call @code{org-capture} with
6907 a @code{C-0} prefix argument.
6908
6909 @node Capture templates, , Using capture, Capture
6910 @subsection Capture templates
6911 @cindex templates, for Capture
6912
6913 You can use templates for different types of capture items, and
6914 for different target locations. The easiest way to create such templates is
6915 through the customize interface.
6916
6917 @table @kbd
6918 @orgkey{C-c c C}
6919 Customize the variable @code{org-capture-templates}.
6920 @end table
6921
6922 Before we give the formal description of template definitions, let's look at
6923 an example. Say you would like to use one template to create general TODO
6924 entries, and you want to put these entries under the heading @samp{Tasks} in
6925 your file @file{~/org/gtd.org}. Also, a date tree in the file
6926 @file{journal.org} should capture journal entries. A possible configuration
6927 would look like:
6928
6929 @smalllisp
6930 @group
6931 (setq org-capture-templates
6932 '(("t" "Todo" entry (file+headline "~/org/gtd.org" "Tasks")
6933 "* TODO %?\n %i\n %a")
6934 ("j" "Journal" entry (file+datetree "~/org/journal.org")
6935 "* %?\nEntered on %U\n %i\n %a")))
6936 @end group
6937 @end smalllisp
6938
6939 @noindent If you then press @kbd{C-c c t}, Org will prepare the template
6940 for you like this:
6941 @example
6942 * TODO
6943 [[file:@var{link to where you initiated capture}]]
6944 @end example
6945
6946 @noindent
6947 During expansion of the template, @code{%a} has been replaced by a link to
6948 the location from where you called the capture command. This can be
6949 extremely useful for deriving tasks from emails, for example. You fill in
6950 the task definition, press @kbd{C-c C-c} and Org returns you to the same
6951 place where you started the capture process.
6952
6953 To define special keys to capture to a particular template without going
6954 through the interactive template selection, you can create your key binding
6955 like this:
6956
6957 @lisp
6958 (define-key global-map "\C-cx"
6959 (lambda () (interactive) (org-capture nil "x")))
6960 @end lisp
6961
6962 @menu
6963 * Template elements:: What is needed for a complete template entry
6964 * Template expansion:: Filling in information about time and context
6965 * Templates in contexts:: Only show a template in a specific context
6966 @end menu
6967
6968 @node Template elements, Template expansion, Capture templates, Capture templates
6969 @subsubsection Template elements
6970
6971 Now lets look at the elements of a template definition. Each entry in
6972 @code{org-capture-templates} is a list with the following items:
6973
6974 @table @var
6975 @item keys
6976 The keys that will select the template, as a string, characters
6977 only, for example @code{"a"} for a template to be selected with a
6978 single key, or @code{"bt"} for selection with two keys. When using
6979 several keys, keys using the same prefix key must be sequential
6980 in the list and preceded by a 2-element entry explaining the
6981 prefix key, for example
6982 @smalllisp
6983 ("b" "Templates for marking stuff to buy")
6984 @end smalllisp
6985 @noindent If you do not define a template for the @kbd{C} key, this key will
6986 be used to open the customize buffer for this complex variable.
6987
6988 @item description
6989 A short string describing the template, which will be shown during
6990 selection.
6991
6992 @item type
6993 The type of entry, a symbol. Valid values are:
6994
6995 @table @code
6996 @item entry
6997 An Org mode node, with a headline. Will be filed as the child of the target
6998 entry or as a top-level entry. The target file should be an Org mode file.
6999 @item item
7000 A plain list item, placed in the first plain list at the target
7001 location. Again the target file should be an Org file.
7002 @item checkitem
7003 A checkbox item. This only differs from the plain list item by the
7004 default template.
7005 @item table-line
7006 a new line in the first table at the target location. Where exactly the
7007 line will be inserted depends on the properties @code{:prepend} and
7008 @code{:table-line-pos} (see below).
7009 @item plain
7010 Text to be inserted as it is.
7011 @end table
7012
7013 @item target
7014 @vindex org-default-notes-file
7015 Specification of where the captured item should be placed. In Org mode
7016 files, targets usually define a node. Entries will become children of this
7017 node. Other types will be added to the table or list in the body of this
7018 node. Most target specifications contain a file name. If that file name is
7019 the empty string, it defaults to @code{org-default-notes-file}. A file can
7020 also be given as a variable, function, or Emacs Lisp form.
7021
7022 Valid values are:
7023
7024 @table @code
7025 @item (file "path/to/file")
7026 Text will be placed at the beginning or end of that file.
7027
7028 @item (id "id of existing org entry")
7029 Filing as child of this entry, or in the body of the entry.
7030
7031 @item (file+headline "path/to/file" "node headline")
7032 Fast configuration if the target heading is unique in the file.
7033
7034 @item (file+olp "path/to/file" "Level 1 heading" "Level 2" ...)
7035 For non-unique headings, the full path is safer.
7036
7037 @item (file+regexp "path/to/file" "regexp to find location")
7038 Use a regular expression to position the cursor.
7039
7040 @item (file+datetree "path/to/file")
7041 Will create a heading in a date tree for today's date@footnote{Datetree
7042 headlines for years accept tags, so if you use both @code{* 2013 :noexport:}
7043 and @code{* 2013} in your file, the capture will refile the note to the first
7044 one matched.}.
7045
7046 @item (file+datetree+prompt "path/to/file")
7047 Will create a heading in a date tree, but will prompt for the date.
7048
7049 @item (file+function "path/to/file" function-finding-location)
7050 A function to find the right location in the file.
7051
7052 @item (clock)
7053 File to the entry that is currently being clocked.
7054
7055 @item (function function-finding-location)
7056 Most general way, write your own function to find both
7057 file and location.
7058 @end table
7059
7060 @item template
7061 The template for creating the capture item. If you leave this empty, an
7062 appropriate default template will be used. Otherwise this is a string with
7063 escape codes, which will be replaced depending on time and context of the
7064 capture call. The string with escapes may be loaded from a template file,
7065 using the special syntax @code{(file "path/to/template")}. See below for
7066 more details.
7067
7068 @item properties
7069 The rest of the entry is a property list of additional options.
7070 Recognized properties are:
7071
7072 @table @code
7073 @item :prepend
7074 Normally new captured information will be appended at
7075 the target location (last child, last table line, last list item...).
7076 Setting this property will change that.
7077
7078 @item :immediate-finish
7079 When set, do not offer to edit the information, just
7080 file it away immediately. This makes sense if the template only needs
7081 information that can be added automatically.
7082
7083 @item :empty-lines
7084 Set this to the number of lines to insert
7085 before and after the new item. Default 0, only common other value is 1.
7086
7087 @item :clock-in
7088 Start the clock in this item.
7089
7090 @item :clock-keep
7091 Keep the clock running when filing the captured entry.
7092
7093 @item :clock-resume
7094 If starting the capture interrupted a clock, restart that clock when finished
7095 with the capture. Note that @code{:clock-keep} has precedence over
7096 @code{:clock-resume}. When setting both to @code{t}, the current clock will
7097 run and the previous one will not be resumed.
7098
7099 @item :unnarrowed
7100 Do not narrow the target buffer, simply show the full buffer. Default is to
7101 narrow it so that you only see the new material.
7102
7103 @item :table-line-pos
7104 Specification of the location in the table where the new line should be
7105 inserted. It should be a string like @code{"II-3"} meaning that the new
7106 line should become the third line before the second horizontal separator
7107 line.
7108
7109 @item :kill-buffer
7110 If the target file was not yet visited when capture was invoked, kill the
7111 buffer again after capture is completed.
7112 @end table
7113 @end table
7114
7115 @node Template expansion, Templates in contexts, Template elements, Capture templates
7116 @subsubsection Template expansion
7117
7118 In the template itself, special @kbd{%}-escapes@footnote{If you need one of
7119 these sequences literally, escape the @kbd{%} with a backslash.} allow
7120 dynamic insertion of content. The templates are expanded in the order given here:
7121
7122 @smallexample
7123 %[@var{file}] @r{Insert the contents of the file given by @var{file}.}
7124 %(@var{sexp}) @r{Evaluate Elisp @var{sexp} and replace with the result.}
7125 @r{For convenience, %:keyword (see below) placeholders}
7126 @r{within the expression will be expanded prior to this.}
7127 @r{The sexp must return a string.}
7128 %<...> @r{The result of format-time-string on the ... format specification.}
7129 %t @r{Timestamp, date only.}
7130 %T @r{Timestamp, with date and time.}
7131 %u, %U @r{Like the above, but inactive timestamps.}
7132 %i @r{Initial content, the region when capture is called while the}
7133 @r{region is active.}
7134 @r{The entire text will be indented like @code{%i} itself.}
7135 %a @r{Annotation, normally the link created with @code{org-store-link}.}
7136 %A @r{Like @code{%a}, but prompt for the description part.}
7137 %l @r{Like %a, but only insert the literal link.}
7138 %c @r{Current kill ring head.}
7139 %x @r{Content of the X clipboard.}
7140 %k @r{Title of the currently clocked task.}
7141 %K @r{Link to the currently clocked task.}
7142 %n @r{User name (taken from @code{user-full-name}).}
7143 %f @r{File visited by current buffer when org-capture was called.}
7144 %F @r{Full path of the file or directory visited by current buffer.}
7145 %:keyword @r{Specific information for certain link types, see below.}
7146 %^g @r{Prompt for tags, with completion on tags in target file.}
7147 %^G @r{Prompt for tags, with completion all tags in all agenda files.}
7148 %^t @r{Like @code{%t}, but prompt for date. Similarly @code{%^T}, @code{%^u}, @code{%^U}.}
7149 @r{You may define a prompt like @code{%^@{Birthday@}t}.}
7150 %^C @r{Interactive selection of which kill or clip to use.}
7151 %^L @r{Like @code{%^C}, but insert as link.}
7152 %^@{@var{prop}@}p @r{Prompt the user for a value for property @var{prop}.}
7153 %^@{@var{prompt}@} @r{prompt the user for a string and replace this sequence with it.}
7154 @r{You may specify a default value and a completion table with}
7155 @r{%^@{prompt|default|completion2|completion3...@}.}
7156 @r{The arrow keys access a prompt-specific history.}
7157 %\n @r{Insert the text entered at the nth %^@{@var{prompt}@}, where @code{n} is}
7158 @r{a number, starting from 1.}
7159 %? @r{After completing the template, position cursor here.}
7160 @end smallexample
7161
7162 @noindent
7163 For specific link types, the following keywords will be
7164 defined@footnote{If you define your own link types (@pxref{Adding
7165 hyperlink types}), any property you store with
7166 @code{org-store-link-props} can be accessed in capture templates in a
7167 similar way.}:
7168
7169 @vindex org-from-is-user-regexp
7170 @smallexample
7171 Link type | Available keywords
7172 ---------------------------------+----------------------------------------------
7173 bbdb | %:name %:company
7174 irc | %:server %:port %:nick
7175 vm, vm-imap, wl, mh, mew, rmail | %:type %:subject %:message-id
7176 | %:from %:fromname %:fromaddress
7177 | %:to %:toname %:toaddress
7178 | %:date @r{(message date header field)}
7179 | %:date-timestamp @r{(date as active timestamp)}
7180 | %:date-timestamp-inactive @r{(date as inactive timestamp)}
7181 | %: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}.}}
7182 gnus | %:group, @r{for messages also all email fields}
7183 w3, w3m | %:url
7184 info | %:file %:node
7185 calendar | %:date
7186 @end smallexample
7187
7188 @noindent
7189 To place the cursor after template expansion use:
7190
7191 @smallexample
7192 %? @r{After completing the template, position cursor here.}
7193 @end smallexample
7194
7195 @node Templates in contexts, , Template expansion, Capture templates
7196 @subsubsection Templates in contexts
7197
7198 @vindex org-capture-templates-contexts
7199 To control whether a capture template should be accessible from a specific
7200 context, you can customize @code{org-capture-templates-contexts}. Let's say
7201 for example that you have a capture template @code{"p"} for storing Gnus
7202 emails containing patches. Then you would configure this option like this:
7203
7204 @smalllisp
7205 (setq org-capture-templates-contexts
7206 '(("p" (in-mode . "message-mode"))))
7207 @end smalllisp
7208
7209 You can also tell that the command key @code{"p"} should refer to another
7210 template. In that case, add this command key like this:
7211
7212 @smalllisp
7213 (setq org-capture-templates-contexts
7214 '(("p" "q" (in-mode . "message-mode"))))
7215 @end smalllisp
7216
7217 See the docstring of the variable for more information.
7218
7219 @node Attachments, RSS Feeds, Capture, Capture - Refile - Archive
7220 @section Attachments
7221 @cindex attachments
7222
7223 @vindex org-attach-directory
7224 It is often useful to associate reference material with an outline node/task.
7225 Small chunks of plain text can simply be stored in the subtree of a project.
7226 Hyperlinks (@pxref{Hyperlinks}) can establish associations with
7227 files that live elsewhere on your computer or in the cloud, like emails or
7228 source code files belonging to a project. Another method is @i{attachments},
7229 which are files located in a directory belonging to an outline node. Org
7230 uses directories named by the unique ID of each entry. These directories are
7231 located in the @file{data} directory which lives in the same directory where
7232 your Org file lives@footnote{If you move entries or Org files from one
7233 directory to another, you may want to configure @code{org-attach-directory}
7234 to contain an absolute path.}. If you initialize this directory with
7235 @code{git init}, Org will automatically commit changes when it sees them.
7236 The attachment system has been contributed to Org by John Wiegley.
7237
7238 In cases where it seems better to do so, you can also attach a directory of your
7239 choice to an entry. You can also make children inherit the attachment
7240 directory from a parent, so that an entire subtree uses the same attached
7241 directory.
7242
7243 @noindent The following commands deal with attachments:
7244
7245 @table @kbd
7246 @orgcmd{C-c C-a,org-attach}
7247 The dispatcher for commands related to the attachment system. After these
7248 keys, a list of commands is displayed and you must press an additional key
7249 to select a command:
7250
7251 @table @kbd
7252 @orgcmdtkc{a,C-c C-a a,org-attach-attach}
7253 @vindex org-attach-method
7254 Select a file and move it into the task's attachment directory. The file
7255 will be copied, moved, or linked, depending on @code{org-attach-method}.
7256 Note that hard links are not supported on all systems.
7257
7258 @kindex C-c C-a c
7259 @kindex C-c C-a m
7260 @kindex C-c C-a l
7261 @item c/m/l
7262 Attach a file using the copy/move/link method.
7263 Note that hard links are not supported on all systems.
7264
7265 @orgcmdtkc{n,C-c C-a n,org-attach-new}
7266 Create a new attachment as an Emacs buffer.
7267
7268 @orgcmdtkc{z,C-c C-a z,org-attach-sync}
7269 Synchronize the current task with its attachment directory, in case you added
7270 attachments yourself.
7271
7272 @orgcmdtkc{o,C-c C-a o,org-attach-open}
7273 @vindex org-file-apps
7274 Open current task's attachment. If there is more than one, prompt for a
7275 file name first. Opening will follow the rules set by @code{org-file-apps}.
7276 For more details, see the information on following hyperlinks
7277 (@pxref{Handling links}).
7278
7279 @orgcmdtkc{O,C-c C-a O,org-attach-open-in-emacs}
7280 Also open the attachment, but force opening the file in Emacs.
7281
7282 @orgcmdtkc{f,C-c C-a f,org-attach-reveal}
7283 Open the current task's attachment directory.
7284
7285 @orgcmdtkc{F,C-c C-a F,org-attach-reveal-in-emacs}
7286 Also open the directory, but force using @command{dired} in Emacs.
7287
7288 @orgcmdtkc{d,C-c C-a d,org-attach-delete-one}
7289 Select and delete a single attachment.
7290
7291 @orgcmdtkc{D,C-c C-a D,org-attach-delete-all}
7292 Delete all of a task's attachments. A safer way is to open the directory in
7293 @command{dired} and delete from there.
7294
7295 @orgcmdtkc{s,C-c C-a s,org-attach-set-directory}
7296 @cindex property, ATTACH_DIR
7297 Set a specific directory as the entry's attachment directory. This works by
7298 putting the directory path into the @code{ATTACH_DIR} property.
7299
7300 @orgcmdtkc{i,C-c C-a i,org-attach-set-inherit}
7301 @cindex property, ATTACH_DIR_INHERIT
7302 Set the @code{ATTACH_DIR_INHERIT} property, so that children will use the
7303 same directory for attachments as the parent does.
7304 @end table
7305 @end table
7306
7307 @node RSS Feeds, Protocols, Attachments, Capture - Refile - Archive
7308 @section RSS feeds
7309 @cindex RSS feeds
7310 @cindex Atom feeds
7311
7312 Org can add and change entries based on information found in RSS feeds and
7313 Atom feeds. You could use this to make a task out of each new podcast in a
7314 podcast feed. Or you could use a phone-based note-creating service on the
7315 web to import tasks into Org. To access feeds, configure the variable
7316 @code{org-feed-alist}. The docstring of this variable has detailed
7317 information. Here is just an example:
7318
7319 @smalllisp
7320 @group
7321 (setq org-feed-alist
7322 '(("Slashdot"
7323 "http://rss.slashdot.org/Slashdot/slashdot"
7324 "~/txt/org/feeds.org" "Slashdot Entries")))
7325 @end group
7326 @end smalllisp
7327
7328 @noindent
7329 will configure that new items from the feed provided by
7330 @code{rss.slashdot.org} will result in new entries in the file
7331 @file{~/org/feeds.org} under the heading @samp{Slashdot Entries}, whenever
7332 the following command is used:
7333
7334 @table @kbd
7335 @orgcmd{C-c C-x g,org-feed-update-all}
7336 @item C-c C-x g
7337 Collect items from the feeds configured in @code{org-feed-alist} and act upon
7338 them.
7339 @orgcmd{C-c C-x G,org-feed-goto-inbox}
7340 Prompt for a feed name and go to the inbox configured for this feed.
7341 @end table
7342
7343 Under the same headline, Org will create a drawer @samp{FEEDSTATUS} in which
7344 it will store information about the status of items in the feed, to avoid
7345 adding the same item several times. You should add @samp{FEEDSTATUS} to the
7346 list of drawers in that file:
7347
7348 @example
7349 #+DRAWERS: LOGBOOK PROPERTIES FEEDSTATUS
7350 @end example
7351
7352 For more information, including how to read atom feeds, see
7353 @file{org-feed.el} and the docstring of @code{org-feed-alist}.
7354
7355 @node Protocols, Refile and copy, RSS Feeds, Capture - Refile - Archive
7356 @section Protocols for external access
7357 @cindex protocols, for external access
7358 @cindex emacsserver
7359
7360 You can set up Org for handling protocol calls from outside applications that
7361 are passed to Emacs through the @file{emacsserver}. For example, you can
7362 configure bookmarks in your web browser to send a link to the current page to
7363 Org and create a note from it using capture (@pxref{Capture}). Or you
7364 could create a bookmark that will tell Emacs to open the local source file of
7365 a remote website you are looking at with the browser. See
7366 @uref{http://orgmode.org/worg/org-contrib/org-protocol.php} for detailed
7367 documentation and setup instructions.
7368
7369 @node Refile and copy, Archiving, Protocols, Capture - Refile - Archive
7370 @section Refile and copy
7371 @cindex refiling notes
7372 @cindex copying notes
7373
7374 When reviewing the captured data, you may want to refile or to copy some of
7375 the entries into a different list, for example into a project. Cutting,
7376 finding the right location, and then pasting the note is cumbersome. To
7377 simplify this process, you can use the following special command:
7378
7379 @table @kbd
7380 @orgcmd{C-c M-w,org-copy}
7381 @findex org-copy
7382 Copying works like refiling, except that the original note is not deleted.
7383 @orgcmd{C-c C-w,org-refile}
7384 @findex org-refile
7385 @vindex org-reverse-note-order
7386 @vindex org-refile-targets
7387 @vindex org-refile-use-outline-path
7388 @vindex org-outline-path-complete-in-steps
7389 @vindex org-refile-allow-creating-parent-nodes
7390 @vindex org-log-refile
7391 @vindex org-refile-use-cache
7392 @vindex org-refile-keep
7393 Refile the entry or region at point. This command offers possible locations
7394 for refiling the entry and lets you select one with completion. The item (or
7395 all items in the region) is filed below the target heading as a subitem.
7396 Depending on @code{org-reverse-note-order}, it will be either the first or
7397 last subitem.@*
7398 By default, all level 1 headlines in the current buffer are considered to be
7399 targets, but you can have more complex definitions across a number of files.
7400 See the variable @code{org-refile-targets} for details. If you would like to
7401 select a location via a file-path-like completion along the outline path, see
7402 the variables @code{org-refile-use-outline-path} and
7403 @code{org-outline-path-complete-in-steps}. If you would like to be able to
7404 create new nodes as new parents for refiling on the fly, check the
7405 variable @code{org-refile-allow-creating-parent-nodes}.
7406 When the variable @code{org-log-refile}@footnote{with corresponding
7407 @code{#+STARTUP} keywords @code{logrefile}, @code{lognoterefile},
7408 and @code{nologrefile}} is set, a timestamp or a note will be
7409 recorded when an entry has been refiled.
7410 @orgkey{C-u C-c C-w}
7411 Use the refile interface to jump to a heading.
7412 @orgcmd{C-u C-u C-c C-w,org-refile-goto-last-stored}
7413 Jump to the location where @code{org-refile} last moved a tree to.
7414 @item C-2 C-c C-w
7415 Refile as the child of the item currently being clocked.
7416 @item C-3 C-c C-w
7417 Refile and keep the entry in place. Also see @code{org-refile-keep} to make
7418 this the default behavior, and beware that this may result in duplicated
7419 @code{ID} properties.
7420 @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}
7421 Clear the target cache. Caching of refile targets can be turned on by
7422 setting @code{org-refile-use-cache}. To make the command see new possible
7423 targets, you have to clear the cache with this command.
7424 @end table
7425
7426 @node Archiving, , Refile and copy, Capture - Refile - Archive
7427 @section Archiving
7428 @cindex archiving
7429
7430 When a project represented by a (sub)tree is finished, you may want
7431 to move the tree out of the way and to stop it from contributing to the
7432 agenda. Archiving is important to keep your working files compact and global
7433 searches like the construction of agenda views fast.
7434
7435 @table @kbd
7436 @orgcmd{C-c C-x C-a,org-archive-subtree-default}
7437 @vindex org-archive-default-command
7438 Archive the current entry using the command specified in the variable
7439 @code{org-archive-default-command}.
7440 @end table
7441
7442 @menu
7443 * Moving subtrees:: Moving a tree to an archive file
7444 * Internal archiving:: Switch off a tree but keep it in the file
7445 @end menu
7446
7447 @node Moving subtrees, Internal archiving, Archiving, Archiving
7448 @subsection Moving a tree to the archive file
7449 @cindex external archiving
7450
7451 The most common archiving action is to move a project tree to another file,
7452 the archive file.
7453
7454 @table @kbd
7455 @orgcmdkskc{C-c C-x C-s,C-c $,org-archive-subtree}
7456 @vindex org-archive-location
7457 Archive the subtree starting at the cursor position to the location
7458 given by @code{org-archive-location}.
7459 @orgkey{C-u C-c C-x C-s}
7460 Check if any direct children of the current headline could be moved to
7461 the archive. To do this, each subtree is checked for open TODO entries.
7462 If none are found, the command offers to move it to the archive
7463 location. If the cursor is @emph{not} on a headline when this command
7464 is invoked, the level 1 trees will be checked.
7465 @end table
7466
7467 @cindex archive locations
7468 The default archive location is a file in the same directory as the
7469 current file, with the name derived by appending @file{_archive} to the
7470 current file name. You can also choose what heading to file archived
7471 items under, with the possibility to add them to a datetree in a file.
7472 For information and examples on how to specify the file and the heading,
7473 see the documentation string of the variable
7474 @code{org-archive-location}.
7475
7476 There is also an in-buffer option for setting this variable, for
7477 example@footnote{For backward compatibility, the following also works:
7478 If there are several such lines in a file, each specifies the archive
7479 location for the text below it. The first such line also applies to any
7480 text before its definition. However, using this method is
7481 @emph{strongly} deprecated as it is incompatible with the outline
7482 structure of the document. The correct method for setting multiple
7483 archive locations in a buffer is using properties.}:
7484
7485 @cindex #+ARCHIVE
7486 @example
7487 #+ARCHIVE: %s_done::
7488 @end example
7489
7490 @cindex property, ARCHIVE
7491 @noindent
7492 If you would like to have a special ARCHIVE location for a single entry
7493 or a (sub)tree, give the entry an @code{:ARCHIVE:} property with the
7494 location as the value (@pxref{Properties and Columns}).
7495
7496 @vindex org-archive-save-context-info
7497 When a subtree is moved, it receives a number of special properties that
7498 record context information like the file from where the entry came, its
7499 outline path the archiving time etc. Configure the variable
7500 @code{org-archive-save-context-info} to adjust the amount of information
7501 added.
7502
7503
7504 @node Internal archiving, , Moving subtrees, Archiving
7505 @subsection Internal archiving
7506
7507 If you want to just switch off (for agenda views) certain subtrees without
7508 moving them to a different file, you can use the @code{ARCHIVE tag}.
7509
7510 A headline that is marked with the ARCHIVE tag (@pxref{Tags}) stays at
7511 its location in the outline tree, but behaves in the following way:
7512 @itemize @minus
7513 @item
7514 @vindex org-cycle-open-archived-trees
7515 It does not open when you attempt to do so with a visibility cycling
7516 command (@pxref{Visibility cycling}). You can force cycling archived
7517 subtrees with @kbd{C-@key{TAB}}, or by setting the option
7518 @code{org-cycle-open-archived-trees}. Also normal outline commands like
7519 @code{show-all} will open archived subtrees.
7520 @item
7521 @vindex org-sparse-tree-open-archived-trees
7522 During sparse tree construction (@pxref{Sparse trees}), matches in
7523 archived subtrees are not exposed, unless you configure the option
7524 @code{org-sparse-tree-open-archived-trees}.
7525 @item
7526 @vindex org-agenda-skip-archived-trees
7527 During agenda view construction (@pxref{Agenda Views}), the content of
7528 archived trees is ignored unless you configure the option
7529 @code{org-agenda-skip-archived-trees}, in which case these trees will always
7530 be included. In the agenda you can press @kbd{v a} to get archives
7531 temporarily included.
7532 @item
7533 @vindex org-export-with-archived-trees
7534 Archived trees are not exported (@pxref{Exporting}), only the headline
7535 is. Configure the details using the variable
7536 @code{org-export-with-archived-trees}.
7537 @item
7538 @vindex org-columns-skip-archived-trees
7539 Archived trees are excluded from column view unless the variable
7540 @code{org-columns-skip-archived-trees} is configured to @code{nil}.
7541 @end itemize
7542
7543 The following commands help manage the ARCHIVE tag:
7544
7545 @table @kbd
7546 @orgcmd{C-c C-x a,org-toggle-archive-tag}
7547 Toggle the ARCHIVE tag for the current headline. When the tag is set,
7548 the headline changes to a shadowed face, and the subtree below it is
7549 hidden.
7550 @orgkey{C-u C-c C-x a}
7551 Check if any direct children of the current headline should be archived.
7552 To do this, each subtree is checked for open TODO entries. If none are
7553 found, the command offers to set the ARCHIVE tag for the child. If the
7554 cursor is @emph{not} on a headline when this command is invoked, the
7555 level 1 trees will be checked.
7556 @orgcmd{C-@kbd{TAB},org-force-cycle-archived}
7557 Cycle a tree even if it is tagged with ARCHIVE.
7558 @orgcmd{C-c C-x A,org-archive-to-archive-sibling}
7559 Move the current entry to the @emph{Archive Sibling}. This is a sibling of
7560 the entry with the heading @samp{Archive} and the tag @samp{ARCHIVE}. The
7561 entry becomes a child of that sibling and in this way retains a lot of its
7562 original context, including inherited tags and approximate position in the
7563 outline.
7564 @end table
7565
7566
7567 @node Agenda Views, Markup, Capture - Refile - Archive, Top
7568 @chapter Agenda views
7569 @cindex agenda views
7570
7571 Due to the way Org works, TODO items, time-stamped items, and
7572 tagged headlines can be scattered throughout a file or even a number of
7573 files. To get an overview of open action items, or of events that are
7574 important for a particular date, this information must be collected,
7575 sorted and displayed in an organized way.
7576
7577 Org can select items based on various criteria and display them
7578 in a separate buffer. Seven different view types are provided:
7579
7580 @itemize @bullet
7581 @item
7582 an @emph{agenda} that is like a calendar and shows information
7583 for specific dates,
7584 @item
7585 a @emph{TODO list} that covers all unfinished
7586 action items,
7587 @item
7588 a @emph{match view}, showings headlines based on the tags, properties, and
7589 TODO state associated with them,
7590 @item
7591 a @emph{timeline view} that shows all events in a single Org file,
7592 in time-sorted view,
7593 @item
7594 a @emph{text search view} that shows all entries from multiple files
7595 that contain specified keywords,
7596 @item
7597 a @emph{stuck projects view} showing projects that currently don't move
7598 along, and
7599 @item
7600 @emph{custom views} that are special searches and combinations of different
7601 views.
7602 @end itemize
7603
7604 @noindent
7605 The extracted information is displayed in a special @emph{agenda
7606 buffer}. This buffer is read-only, but provides commands to visit the
7607 corresponding locations in the original Org files, and even to
7608 edit these files remotely.
7609
7610 @vindex org-agenda-window-setup
7611 @vindex org-agenda-restore-windows-after-quit
7612 Two variables control how the agenda buffer is displayed and whether the
7613 window configuration is restored when the agenda exits:
7614 @code{org-agenda-window-setup} and
7615 @code{org-agenda-restore-windows-after-quit}.
7616
7617 @menu
7618 * Agenda files:: Files being searched for agenda information
7619 * Agenda dispatcher:: Keyboard access to agenda views
7620 * Built-in agenda views:: What is available out of the box?
7621 * Presentation and sorting:: How agenda items are prepared for display
7622 * Agenda commands:: Remote editing of Org trees
7623 * Custom agenda views:: Defining special searches and views
7624 * Exporting Agenda Views:: Writing a view to a file
7625 * Agenda column view:: Using column view for collected entries
7626 @end menu
7627
7628 @node Agenda files, Agenda dispatcher, Agenda Views, Agenda Views
7629 @section Agenda files
7630 @cindex agenda files
7631 @cindex files for agenda
7632
7633 @vindex org-agenda-files
7634 The information to be shown is normally collected from all @emph{agenda
7635 files}, the files listed in the variable
7636 @code{org-agenda-files}@footnote{If the value of that variable is not a
7637 list, but a single file name, then the list of agenda files will be
7638 maintained in that external file.}. If a directory is part of this list,
7639 all files with the extension @file{.org} in this directory will be part
7640 of the list.
7641
7642 Thus, even if you only work with a single Org file, that file should
7643 be put into the list@footnote{When using the dispatcher, pressing
7644 @kbd{<} before selecting a command will actually limit the command to
7645 the current file, and ignore @code{org-agenda-files} until the next
7646 dispatcher command.}. You can customize @code{org-agenda-files}, but
7647 the easiest way to maintain it is through the following commands
7648
7649 @cindex files, adding to agenda list
7650 @table @kbd
7651 @orgcmd{C-c [,org-agenda-file-to-front}
7652 Add current file to the list of agenda files. The file is added to
7653 the front of the list. If it was already in the list, it is moved to
7654 the front. With a prefix argument, file is added/moved to the end.
7655 @orgcmd{C-c ],org-remove-file}
7656 Remove current file from the list of agenda files.
7657 @kindex C-,
7658 @cindex cycling, of agenda files
7659 @orgcmd{C-',org-cycle-agenda-files}
7660 @itemx C-,
7661 Cycle through agenda file list, visiting one file after the other.
7662 @kindex M-x org-iswitchb
7663 @item M-x org-iswitchb RET
7664 Command to use an @code{iswitchb}-like interface to switch to and between Org
7665 buffers.
7666 @end table
7667
7668 @noindent
7669 The Org menu contains the current list of files and can be used
7670 to visit any of them.
7671
7672 If you would like to focus the agenda temporarily on a file not in
7673 this list, or on just one file in the list, or even on only a subtree in a
7674 file, then this can be done in different ways. For a single agenda command,
7675 you may press @kbd{<} once or several times in the dispatcher
7676 (@pxref{Agenda dispatcher}). To restrict the agenda scope for an
7677 extended period, use the following commands:
7678
7679 @table @kbd
7680 @orgcmd{C-c C-x <,org-agenda-set-restriction-lock}
7681 Permanently restrict the agenda to the current subtree. When with a
7682 prefix argument, or with the cursor before the first headline in a file,
7683 the agenda scope is set to the entire file. This restriction remains in
7684 effect until removed with @kbd{C-c C-x >}, or by typing either @kbd{<}
7685 or @kbd{>} in the agenda dispatcher. If there is a window displaying an
7686 agenda view, the new restriction takes effect immediately.
7687 @orgcmd{C-c C-x >,org-agenda-remove-restriction-lock}
7688 Remove the permanent restriction created by @kbd{C-c C-x <}.
7689 @end table
7690
7691 @noindent
7692 When working with @file{speedbar.el}, you can use the following commands in
7693 the Speedbar frame:
7694
7695 @table @kbd
7696 @orgcmdtkc{< @r{in the speedbar frame},<,org-speedbar-set-agenda-restriction}
7697 Permanently restrict the agenda to the item---either an Org file or a subtree
7698 in such a file---at the cursor in the Speedbar frame.
7699 If there is a window displaying an agenda view, the new restriction takes
7700 effect immediately.
7701 @orgcmdtkc{> @r{in the speedbar frame},>,org-agenda-remove-restriction-lock}
7702 Lift the restriction.
7703 @end table
7704
7705 @node Agenda dispatcher, Built-in agenda views, Agenda files, Agenda Views
7706 @section The agenda dispatcher
7707 @cindex agenda dispatcher
7708 @cindex dispatching agenda commands
7709 The views are created through a dispatcher, which should be bound to a
7710 global key---for example @kbd{C-c a} (@pxref{Activation}). In the
7711 following we will assume that @kbd{C-c a} is indeed how the dispatcher
7712 is accessed and list keyboard access to commands accordingly. After
7713 pressing @kbd{C-c a}, an additional letter is required to execute a
7714 command. The dispatcher offers the following default commands:
7715
7716 @table @kbd
7717 @item a
7718 Create the calendar-like agenda (@pxref{Weekly/daily agenda}).
7719 @item t @r{/} T
7720 Create a list of all TODO items (@pxref{Global TODO list}).
7721 @item m @r{/} M
7722 Create a list of headlines matching a TAGS expression (@pxref{Matching
7723 tags and properties}).
7724 @item L
7725 Create the timeline view for the current buffer (@pxref{Timeline}).
7726 @item s
7727 Create a list of entries selected by a boolean expression of keywords
7728 and/or regular expressions that must or must not occur in the entry.
7729 @item /
7730 @vindex org-agenda-text-search-extra-files
7731 Search for a regular expression in all agenda files and additionally in
7732 the files listed in @code{org-agenda-text-search-extra-files}. This
7733 uses the Emacs command @code{multi-occur}. A prefix argument can be
7734 used to specify the number of context lines for each match, default is
7735 1.
7736 @item # @r{/} !
7737 Create a list of stuck projects (@pxref{Stuck projects}).
7738 @item <
7739 Restrict an agenda command to the current buffer@footnote{For backward
7740 compatibility, you can also press @kbd{1} to restrict to the current
7741 buffer.}. After pressing @kbd{<}, you still need to press the character
7742 selecting the command.
7743 @item < <
7744 If there is an active region, restrict the following agenda command to
7745 the region. Otherwise, restrict it to the current subtree@footnote{For
7746 backward compatibility, you can also press @kbd{0} to restrict to the
7747 current region/subtree.}. After pressing @kbd{< <}, you still need to press the
7748 character selecting the command.
7749
7750 @item *
7751 @vindex org-agenda-sticky
7752 Toggle sticky agenda views. By default, Org maintains only a single agenda
7753 buffer and rebuilds it each time you change the view, to make sure everything
7754 is always up to date. If you switch between views often and the build time
7755 bothers you, you can turn on sticky agenda buffers (make this the default by
7756 customizing the variable @code{org-agenda-sticky}). With sticky agendas, the
7757 dispatcher only switches to the selected view, you need to update it by hand
7758 with @kbd{r} or @kbd{g}. You can toggle sticky agenda view any time with
7759 @code{org-toggle-sticky-agenda}.
7760 @end table
7761
7762 You can also define custom commands that will be accessible through the
7763 dispatcher, just like the default commands. This includes the
7764 possibility to create extended agenda buffers that contain several
7765 blocks together, for example the weekly agenda, the global TODO list and
7766 a number of special tags matches. @xref{Custom agenda views}.
7767
7768 @node Built-in agenda views, Presentation and sorting, Agenda dispatcher, Agenda Views
7769 @section The built-in agenda views
7770
7771 In this section we describe the built-in views.
7772
7773 @menu
7774 * Weekly/daily agenda:: The calendar page with current tasks
7775 * Global TODO list:: All unfinished action items
7776 * Matching tags and properties:: Structured information with fine-tuned search
7777 * Timeline:: Time-sorted view for single file
7778 * Search view:: Find entries by searching for text
7779 * Stuck projects:: Find projects you need to review
7780 @end menu
7781
7782 @node Weekly/daily agenda, Global TODO list, Built-in agenda views, Built-in agenda views
7783 @subsection The weekly/daily agenda
7784 @cindex agenda
7785 @cindex weekly agenda
7786 @cindex daily agenda
7787
7788 The purpose of the weekly/daily @emph{agenda} is to act like a page of a
7789 paper agenda, showing all the tasks for the current week or day.
7790
7791 @table @kbd
7792 @cindex org-agenda, command
7793 @orgcmd{C-c a a,org-agenda-list}
7794 Compile an agenda for the current week from a list of Org files. The agenda
7795 shows the entries for each day. With a numeric prefix@footnote{For backward
7796 compatibility, the universal prefix @kbd{C-u} causes all TODO entries to be
7797 listed before the agenda. This feature is deprecated, use the dedicated TODO
7798 list, or a block agenda instead (@pxref{Block agenda}).} (like @kbd{C-u 2 1
7799 C-c a a}) you may set the number of days to be displayed.
7800 @end table
7801
7802 @vindex org-agenda-span
7803 @vindex org-agenda-ndays
7804 @vindex org-agenda-start-day
7805 @vindex org-agenda-start-on-weekday
7806 The default number of days displayed in the agenda is set by the variable
7807 @code{org-agenda-span} (or the obsolete @code{org-agenda-ndays}). This
7808 variable can be set to any number of days you want to see by default in the
7809 agenda, or to a span name, such as @code{day}, @code{week}, @code{month} or
7810 @code{year}. For weekly agendas, the default is to start on the previous
7811 monday (see @code{org-agenda-start-on-weekday}). You can also set the start
7812 date using a date shift: @code{(setq org-agenda-start-day "+10d")} will
7813 start the agenda ten days from today in the future.
7814
7815 Remote editing from the agenda buffer means, for example, that you can
7816 change the dates of deadlines and appointments from the agenda buffer.
7817 The commands available in the Agenda buffer are listed in @ref{Agenda
7818 commands}.
7819
7820 @subsubheading Calendar/Diary integration
7821 @cindex calendar integration
7822 @cindex diary integration
7823
7824 Emacs contains the calendar and diary by Edward M. Reingold. The
7825 calendar displays a three-month calendar with holidays from different
7826 countries and cultures. The diary allows you to keep track of
7827 anniversaries, lunar phases, sunrise/set, recurrent appointments
7828 (weekly, monthly) and more. In this way, it is quite complementary to
7829 Org. It can be very useful to combine output from Org with
7830 the diary.
7831
7832 In order to include entries from the Emacs diary into Org mode's
7833 agenda, you only need to customize the variable
7834
7835 @lisp
7836 (setq org-agenda-include-diary t)
7837 @end lisp
7838
7839 @noindent After that, everything will happen automatically. All diary
7840 entries including holidays, anniversaries, etc., will be included in the
7841 agenda buffer created by Org mode. @key{SPC}, @key{TAB}, and
7842 @key{RET} can be used from the agenda buffer to jump to the diary
7843 file in order to edit existing diary entries. The @kbd{i} command to
7844 insert new entries for the current date works in the agenda buffer, as
7845 well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
7846 Sunrise/Sunset times, show lunar phases and to convert to other
7847 calendars, respectively. @kbd{c} can be used to switch back and forth
7848 between calendar and agenda.
7849
7850 If you are using the diary only for sexp entries and holidays, it is
7851 faster to not use the above setting, but instead to copy or even move
7852 the entries into an Org file. Org mode evaluates diary-style sexp
7853 entries, and does it faster because there is no overhead for first
7854 creating the diary display. Note that the sexp entries must start at
7855 the left margin, no whitespace is allowed before them. For example,
7856 the following segment of an Org file will be processed and entries
7857 will be made in the agenda:
7858
7859 @example
7860 * Birthdays and similar stuff
7861 #+CATEGORY: Holiday
7862 %%(org-calendar-holiday) ; special function for holiday names
7863 #+CATEGORY: Ann
7864 %%(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
7865 %%(org-anniversary 1869 10 2) Mahatma Gandhi would be %d years old
7866 @end example
7867
7868 @subsubheading Anniversaries from BBDB
7869 @cindex BBDB, anniversaries
7870 @cindex anniversaries, from BBDB
7871
7872 If you are using the Big Brothers Database to store your contacts, you will
7873 very likely prefer to store anniversaries in BBDB rather than in a
7874 separate Org or diary file. Org supports this and will show BBDB
7875 anniversaries as part of the agenda. All you need to do is to add the
7876 following to one of your agenda files:
7877
7878 @example
7879 * Anniversaries
7880 :PROPERTIES:
7881 :CATEGORY: Anniv
7882 :END:
7883 %%(org-bbdb-anniversaries)
7884 @end example
7885
7886 You can then go ahead and define anniversaries for a BBDB record. Basically,
7887 you need to press @kbd{C-o anniversary @key{RET}} with the cursor in a BBDB
7888 record and then add the date in the format @code{YYYY-MM-DD} or @code{MM-DD},
7889 followed by a space and the class of the anniversary (@samp{birthday} or
7890 @samp{wedding}, or a format string). If you omit the class, it will default to
7891 @samp{birthday}. Here are a few examples, the header for the file
7892 @file{org-bbdb.el} contains more detailed information.
7893
7894 @example
7895 1973-06-22
7896 06-22
7897 1955-08-02 wedding
7898 2008-04-14 %s released version 6.01 of org mode, %d years ago
7899 @end example
7900
7901 After a change to BBDB, or for the first agenda display during an Emacs
7902 session, the agenda display will suffer a short delay as Org updates its
7903 hash with anniversaries. However, from then on things will be very fast---much
7904 faster in fact than a long list of @samp{%%(diary-anniversary)} entries
7905 in an Org or Diary file.
7906
7907 @subsubheading Appointment reminders
7908 @cindex @file{appt.el}
7909 @cindex appointment reminders
7910 @cindex appointment
7911 @cindex reminders
7912
7913 Org can interact with Emacs appointments notification facility. To add the
7914 appointments of your agenda files, use the command @code{org-agenda-to-appt}.
7915 This command lets you filter through the list of your appointments and add
7916 only those belonging to a specific category or matching a regular expression.
7917 It also reads a @code{APPT_WARNTIME} property which will then override the
7918 value of @code{appt-message-warning-time} for this appointment. See the
7919 docstring for details.
7920
7921 @node Global TODO list, Matching tags and properties, Weekly/daily agenda, Built-in agenda views
7922 @subsection The global TODO list
7923 @cindex global TODO list
7924 @cindex TODO list, global
7925
7926 The global TODO list contains all unfinished TODO items formatted and
7927 collected into a single place.
7928
7929 @table @kbd
7930 @orgcmd{C-c a t,org-todo-list}
7931 Show the global TODO list. This collects the TODO items from all agenda
7932 files (@pxref{Agenda Views}) into a single buffer. By default, this lists
7933 items with a state the is not a DONE state. The buffer is in
7934 @code{agenda-mode}, so there are commands to examine and manipulate the TODO
7935 entries directly from that buffer (@pxref{Agenda commands}).
7936 @orgcmd{C-c a T,org-todo-list}
7937 @cindex TODO keyword matching
7938 @vindex org-todo-keywords
7939 Like the above, but allows selection of a specific TODO keyword. You can
7940 also do this by specifying a prefix argument to @kbd{C-c a t}. You are
7941 prompted for a keyword, and you may also specify several keywords by
7942 separating them with @samp{|} as the boolean OR operator. With a numeric
7943 prefix, the Nth keyword in @code{org-todo-keywords} is selected.
7944 @kindex r
7945 The @kbd{r} key in the agenda buffer regenerates it, and you can give
7946 a prefix argument to this command to change the selected TODO keyword,
7947 for example @kbd{3 r}. If you often need a search for a specific
7948 keyword, define a custom command for it (@pxref{Agenda dispatcher}).@*
7949 Matching specific TODO keywords can also be done as part of a tags
7950 search (@pxref{Tag searches}).
7951 @end table
7952
7953 Remote editing of TODO items means that you can change the state of a
7954 TODO entry with a single key press. The commands available in the
7955 TODO list are described in @ref{Agenda commands}.
7956
7957 @cindex sublevels, inclusion into TODO list
7958 Normally the global TODO list simply shows all headlines with TODO
7959 keywords. This list can become very long. There are two ways to keep
7960 it more compact:
7961 @itemize @minus
7962 @item
7963 @vindex org-agenda-todo-ignore-scheduled
7964 @vindex org-agenda-todo-ignore-deadlines
7965 @vindex org-agenda-todo-ignore-timestamp
7966 @vindex org-agenda-todo-ignore-with-date
7967 Some people view a TODO item that has been @emph{scheduled} for execution or
7968 have a @emph{deadline} (@pxref{Timestamps}) as no longer @emph{open}.
7969 Configure the variables @code{org-agenda-todo-ignore-scheduled},
7970 @code{org-agenda-todo-ignore-deadlines},
7971 @code{org-agenda-todo-ignore-timestamp} and/or
7972 @code{org-agenda-todo-ignore-with-date} to exclude such items from the global
7973 TODO list.
7974 @item
7975 @vindex org-agenda-todo-list-sublevels
7976 TODO items may have sublevels to break up the task into subtasks. In
7977 such cases it may be enough to list only the highest level TODO headline
7978 and omit the sublevels from the global list. Configure the variable
7979 @code{org-agenda-todo-list-sublevels} to get this behavior.
7980 @end itemize
7981
7982 @node Matching tags and properties, Timeline, Global TODO list, Built-in agenda views
7983 @subsection Matching tags and properties
7984 @cindex matching, of tags
7985 @cindex matching, of properties
7986 @cindex tags view
7987 @cindex match view
7988
7989 If headlines in the agenda files are marked with @emph{tags} (@pxref{Tags}),
7990 or have properties (@pxref{Properties and Columns}), you can select headlines
7991 based on this metadata and collect them into an agenda buffer. The match
7992 syntax described here also applies when creating sparse trees with @kbd{C-c /
7993 m}.
7994
7995 @table @kbd
7996 @orgcmd{C-c a m,org-tags-view}
7997 Produce a list of all headlines that match a given set of tags. The
7998 command prompts for a selection criterion, which is a boolean logic
7999 expression with tags, like @samp{+work+urgent-withboss} or
8000 @samp{work|home} (@pxref{Tags}). If you often need a specific search,
8001 define a custom command for it (@pxref{Agenda dispatcher}).
8002 @orgcmd{C-c a M,org-tags-view}
8003 @vindex org-tags-match-list-sublevels
8004 @vindex org-agenda-tags-todo-honor-ignore-options
8005 Like @kbd{C-c a m}, but only select headlines that are also TODO items in a
8006 not-DONE state and force checking subitems (see variable
8007 @code{org-tags-match-list-sublevels}). To exclude scheduled/deadline items,
8008 see the variable @code{org-agenda-tags-todo-honor-ignore-options}. Matching
8009 specific TODO keywords together with a tags match is also possible, see
8010 @ref{Tag searches}.
8011 @end table
8012
8013 The commands available in the tags list are described in @ref{Agenda
8014 commands}.
8015
8016 @subsubheading Match syntax
8017
8018 @cindex Boolean logic, for tag/property searches
8019 A search string can use Boolean operators @samp{&} for @code{AND} and
8020 @samp{|} for @code{OR}@. @samp{&} binds more strongly than @samp{|}.
8021 Parentheses are not implemented. Each element in the search is either a
8022 tag, a regular expression matching tags, or an expression like
8023 @code{PROPERTY OPERATOR VALUE} with a comparison operator, accessing a
8024 property value. Each element may be preceded by @samp{-}, to select
8025 against it, and @samp{+} is syntactic sugar for positive selection. The
8026 @code{AND} operator @samp{&} is optional when @samp{+} or @samp{-} is
8027 present. Here are some examples, using only tags.
8028
8029 @table @samp
8030 @item work
8031 Select headlines tagged @samp{:work:}.
8032 @item work&boss
8033 Select headlines tagged @samp{:work:} and @samp{:boss:}.
8034 @item +work-boss
8035 Select headlines tagged @samp{:work:}, but discard those also tagged
8036 @samp{:boss:}.
8037 @item work|laptop
8038 Selects lines tagged @samp{:work:} or @samp{:laptop:}.
8039 @item work|laptop+night
8040 Like before, but require the @samp{:laptop:} lines to be tagged also
8041 @samp{:night:}.
8042 @end table
8043
8044 @cindex regular expressions, with tags search
8045 Instead of a tag, you may also specify a regular expression enclosed in curly
8046 braces. For example,
8047 @samp{work+@{^boss.*@}} matches headlines that contain the tag
8048 @samp{:work:} and any tag @i{starting} with @samp{boss}.
8049
8050 @cindex group tags, as regular expressions
8051 Group tags (@pxref{Tag groups}) are expanded as regular expressions. E.g.,
8052 if @samp{:work:} is a group tag for the group @samp{:work:lab:conf:}, then
8053 searching for @samp{work} will search for @samp{@{\(?:work\|lab\|conf\)@}}
8054 and searching for @samp{-work} will search for all headlines but those with
8055 one of the tag in the group (i.e., @samp{-@{\(?:work\|lab\|conf\)@}}).
8056
8057 @cindex TODO keyword matching, with tags search
8058 @cindex level, require for tags/property match
8059 @cindex category, require for tags/property match
8060 @vindex org-odd-levels-only
8061 You may also test for properties (@pxref{Properties and Columns}) at the same
8062 time as matching tags. The properties may be real properties, or special
8063 properties that represent other metadata (@pxref{Special properties}). For
8064 example, the ``property'' @code{TODO} represents the TODO keyword of the
8065 entry and the ``property'' @code{PRIORITY} represents the PRIORITY keyword of
8066 the entry. The ITEM special property cannot currently be used in tags/property
8067 searches@footnote{But @pxref{x-agenda-skip-entry-regexp,
8068 ,skipping entries based on regexp}.}.
8069
8070 Except the @pxref{Special properties}, one other ``property'' can also be
8071 used. @code{LEVEL} represents the level of an entry. So a search
8072 @samp{+LEVEL=3+boss-TODO="DONE"} lists all level three headlines that have
8073 the tag @samp{boss} and are @emph{not} marked with the TODO keyword DONE@.
8074 In buffers with @code{org-odd-levels-only} set, @samp{LEVEL} does not count
8075 the number of stars, but @samp{LEVEL=2} will correspond to 3 stars etc.
8076
8077 Here are more examples:
8078
8079 @table @samp
8080 @item work+TODO="WAITING"
8081 Select @samp{:work:}-tagged TODO lines with the specific TODO
8082 keyword @samp{WAITING}.
8083 @item work+TODO="WAITING"|home+TODO="WAITING"
8084 Waiting tasks both at work and at home.
8085 @end table
8086
8087 When matching properties, a number of different operators can be used to test
8088 the value of a property. Here is a complex example:
8089
8090 @example
8091 +work-boss+PRIORITY="A"+Coffee="unlimited"+Effort<2 \
8092 +With=@{Sarah\|Denny@}+SCHEDULED>="<2008-10-11>"
8093 @end example
8094
8095 @noindent
8096 The type of comparison will depend on how the comparison value is written:
8097 @itemize @minus
8098 @item
8099 If the comparison value is a plain number, a numerical comparison is done,
8100 and the allowed operators are @samp{<}, @samp{=}, @samp{>}, @samp{<=},
8101 @samp{>=}, and @samp{<>}.
8102 @item
8103 If the comparison value is enclosed in double-quotes,
8104 a string comparison is done, and the same operators are allowed.
8105 @item
8106 If the comparison value is enclosed in double-quotes @emph{and} angular
8107 brackets (like @samp{DEADLINE<="<2008-12-24 18:30>"}), both values are
8108 assumed to be date/time specifications in the standard Org way, and the
8109 comparison will be done accordingly. Special values that will be recognized
8110 are @code{"<now>"} for now (including time), and @code{"<today>"}, and
8111 @code{"<tomorrow>"} for these days at 0:00 hours, i.e., without a time
8112 specification. Also strings like @code{"<+5d>"} or @code{"<-2m>"} with units
8113 @code{d}, @code{w}, @code{m}, and @code{y} for day, week, month, and year,
8114 respectively, can be used.
8115 @item
8116 If the comparison value is enclosed
8117 in curly braces, a regexp match is performed, with @samp{=} meaning that the
8118 regexp matches the property value, and @samp{<>} meaning that it does not
8119 match.
8120 @end itemize
8121
8122 So the search string in the example finds entries tagged @samp{:work:} but
8123 not @samp{:boss:}, which also have a priority value @samp{A}, a
8124 @samp{:Coffee:} property with the value @samp{unlimited}, an @samp{Effort}
8125 property that is numerically smaller than 2, a @samp{:With:} property that is
8126 matched by the regular expression @samp{Sarah\|Denny}, and that are scheduled
8127 on or after October 11, 2008.
8128
8129 Accessing TODO, LEVEL, and CATEGORY during a search is fast. Accessing any
8130 other properties will slow down the search. However, once you have paid the
8131 price by accessing one property, testing additional properties is cheap
8132 again.
8133
8134 You can configure Org mode to use property inheritance during a search, but
8135 beware that this can slow down searches considerably. See @ref{Property
8136 inheritance}, for details.
8137
8138 For backward compatibility, and also for typing speed, there is also a
8139 different way to test TODO states in a search. For this, terminate the
8140 tags/property part of the search string (which may include several terms
8141 connected with @samp{|}) with a @samp{/} and then specify a Boolean
8142 expression just for TODO keywords. The syntax is then similar to that for
8143 tags, but should be applied with care: for example, a positive selection on
8144 several TODO keywords cannot meaningfully be combined with boolean AND@.
8145 However, @emph{negative selection} combined with AND can be meaningful. To
8146 make sure that only lines are checked that actually have any TODO keyword
8147 (resulting in a speed-up), use @kbd{C-c a M}, or equivalently start the TODO
8148 part after the slash with @samp{!}. Using @kbd{C-c a M} or @samp{/!} will
8149 not match TODO keywords in a DONE state. Examples:
8150
8151 @table @samp
8152 @item work/WAITING
8153 Same as @samp{work+TODO="WAITING"}
8154 @item work/!-WAITING-NEXT
8155 Select @samp{:work:}-tagged TODO lines that are neither @samp{WAITING}
8156 nor @samp{NEXT}
8157 @item work/!+WAITING|+NEXT
8158 Select @samp{:work:}-tagged TODO lines that are either @samp{WAITING} or
8159 @samp{NEXT}.
8160 @end table
8161
8162 @node Timeline, Search view, Matching tags and properties, Built-in agenda views
8163 @subsection Timeline for a single file
8164 @cindex timeline, single file
8165 @cindex time-sorted view
8166
8167 The timeline summarizes all time-stamped items from a single Org mode
8168 file in a @emph{time-sorted view}. The main purpose of this command is
8169 to give an overview over events in a project.
8170
8171 @table @kbd
8172 @orgcmd{C-c a L,org-timeline}
8173 Show a time-sorted view of the Org file, with all time-stamped items.
8174 When called with a @kbd{C-u} prefix, all unfinished TODO entries
8175 (scheduled or not) are also listed under the current date.
8176 @end table
8177
8178 @noindent
8179 The commands available in the timeline buffer are listed in
8180 @ref{Agenda commands}.
8181
8182 @node Search view, Stuck projects, Timeline, Built-in agenda views
8183 @subsection Search view
8184 @cindex search view
8185 @cindex text search
8186 @cindex searching, for text
8187
8188 This agenda view is a general text search facility for Org mode entries.
8189 It is particularly useful to find notes.
8190
8191 @table @kbd
8192 @orgcmd{C-c a s,org-search-view}
8193 This is a special search that lets you select entries by matching a substring
8194 or specific words using a boolean logic.
8195 @end table
8196 For example, the search string @samp{computer equipment} will find entries
8197 that contain @samp{computer equipment} as a substring. If the two words are
8198 separated by more space or a line break, the search will still match.
8199 Search view can also search for specific keywords in the entry, using Boolean
8200 logic. The search string @samp{+computer +wifi -ethernet -@{8\.11[bg]@}}
8201 will search for note entries that contain the keywords @code{computer}
8202 and @code{wifi}, but not the keyword @code{ethernet}, and which are also
8203 not matched by the regular expression @code{8\.11[bg]}, meaning to
8204 exclude both 8.11b and 8.11g. The first @samp{+} is necessary to turn on
8205 word search, other @samp{+} characters are optional. For more details, see
8206 the docstring of the command @code{org-search-view}.
8207
8208 @vindex org-agenda-text-search-extra-files
8209 Note that in addition to the agenda files, this command will also search
8210 the files listed in @code{org-agenda-text-search-extra-files}.
8211
8212 @node Stuck projects, , Search view, Built-in agenda views
8213 @subsection Stuck projects
8214 @pindex GTD, Getting Things Done
8215
8216 If you are following a system like David Allen's GTD to organize your
8217 work, one of the ``duties'' you have is a regular review to make sure
8218 that all projects move along. A @emph{stuck} project is a project that
8219 has no defined next actions, so it will never show up in the TODO lists
8220 Org mode produces. During the review, you need to identify such
8221 projects and define next actions for them.
8222
8223 @table @kbd
8224 @orgcmd{C-c a #,org-agenda-list-stuck-projects}
8225 List projects that are stuck.
8226 @kindex C-c a !
8227 @item C-c a !
8228 @vindex org-stuck-projects
8229 Customize the variable @code{org-stuck-projects} to define what a stuck
8230 project is and how to find it.
8231 @end table
8232
8233 You almost certainly will have to configure this view before it will
8234 work for you. The built-in default assumes that all your projects are
8235 level-2 headlines, and that a project is not stuck if it has at least
8236 one entry marked with a TODO keyword TODO or NEXT or NEXTACTION.
8237
8238 Let's assume that you, in your own way of using Org mode, identify
8239 projects with a tag PROJECT, and that you use a TODO keyword MAYBE to
8240 indicate a project that should not be considered yet. Let's further
8241 assume that the TODO keyword DONE marks finished projects, and that NEXT
8242 and TODO indicate next actions. The tag @@SHOP indicates shopping and
8243 is a next action even without the NEXT tag. Finally, if the project
8244 contains the special word IGNORE anywhere, it should not be listed
8245 either. In this case you would start by identifying eligible projects
8246 with a tags/todo match@footnote{@xref{Tag searches}.}
8247 @samp{+PROJECT/-MAYBE-DONE}, and then check for TODO, NEXT, @@SHOP, and
8248 IGNORE in the subtree to identify projects that are not stuck. The
8249 correct customization for this is
8250
8251 @lisp
8252 (setq org-stuck-projects
8253 '("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@@SHOP")
8254 "\\<IGNORE\\>"))
8255 @end lisp
8256
8257 Note that if a project is identified as non-stuck, the subtree of this entry
8258 will still be searched for stuck projects.
8259
8260 @node Presentation and sorting, Agenda commands, Built-in agenda views, Agenda Views
8261 @section Presentation and sorting
8262 @cindex presentation, of agenda items
8263
8264 @vindex org-agenda-prefix-format
8265 @vindex org-agenda-tags-column
8266 Before displaying items in an agenda view, Org mode visually prepares the
8267 items and sorts them. Each item occupies a single line. The line starts
8268 with a @emph{prefix} that contains the @emph{category} (@pxref{Categories})
8269 of the item and other important information. You can customize in which
8270 column tags will be displayed through @code{org-agenda-tags-column}. You can
8271 also customize the prefix using the option @code{org-agenda-prefix-format}.
8272 This prefix is followed by a cleaned-up version of the outline headline
8273 associated with the item.
8274
8275 @menu
8276 * Categories:: Not all tasks are equal
8277 * Time-of-day specifications:: How the agenda knows the time
8278 * Sorting agenda items:: The order of things
8279 * Filtering/limiting agenda items:: Dynamically narrow the agenda
8280 @end menu
8281
8282 @node Categories, Time-of-day specifications, Presentation and sorting, Presentation and sorting
8283 @subsection Categories
8284
8285 @cindex category
8286 @cindex #+CATEGORY
8287 The category is a broad label assigned to each agenda item. By default,
8288 the category is simply derived from the file name, but you can also
8289 specify it with a special line in the buffer, like this@footnote{For
8290 backward compatibility, the following also works: if there are several
8291 such lines in a file, each specifies the category for the text below it.
8292 The first category also applies to any text before the first CATEGORY
8293 line. However, using this method is @emph{strongly} deprecated as it is
8294 incompatible with the outline structure of the document. The correct
8295 method for setting multiple categories in a buffer is using a
8296 property.}:
8297
8298 @example
8299 #+CATEGORY: Thesis
8300 @end example
8301
8302 @noindent
8303 @cindex property, CATEGORY
8304 If you would like to have a special CATEGORY for a single entry or a
8305 (sub)tree, give the entry a @code{:CATEGORY:} property with the
8306 special category you want to apply as the value.
8307
8308 @noindent
8309 The display in the agenda buffer looks best if the category is not
8310 longer than 10 characters.
8311
8312 @noindent
8313 You can set up icons for category by customizing the
8314 @code{org-agenda-category-icon-alist} variable.
8315
8316 @node Time-of-day specifications, Sorting agenda items, Categories, Presentation and sorting
8317 @subsection Time-of-day specifications
8318 @cindex time-of-day specification
8319
8320 Org mode checks each agenda item for a time-of-day specification. The
8321 time can be part of the timestamp that triggered inclusion into the
8322 agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}. Time
8323 ranges can be specified with two timestamps, like
8324 @c
8325 @w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
8326
8327 In the headline of the entry itself, a time(range) may also appear as
8328 plain text (like @samp{12:45} or a @samp{8:30-1pm}). If the agenda
8329 integrates the Emacs diary (@pxref{Weekly/daily agenda}), time
8330 specifications in diary entries are recognized as well.
8331
8332 For agenda display, Org mode extracts the time and displays it in a
8333 standard 24 hour format as part of the prefix. The example times in
8334 the previous paragraphs would end up in the agenda like this:
8335
8336 @example
8337 8:30-13:00 Arthur Dent lies in front of the bulldozer
8338 12:45...... Ford Prefect arrives and takes Arthur to the pub
8339 19:00...... The Vogon reads his poem
8340 20:30-22:15 Marvin escorts the Hitchhikers to the bridge
8341 @end example
8342
8343 @cindex time grid
8344 If the agenda is in single-day mode, or for the display of today, the
8345 timed entries are embedded in a time grid, like
8346
8347 @example
8348 8:00...... ------------------
8349 8:30-13:00 Arthur Dent lies in front of the bulldozer
8350 10:00...... ------------------
8351 12:00...... ------------------
8352 12:45...... Ford Prefect arrives and takes Arthur to the pub
8353 14:00...... ------------------
8354 16:00...... ------------------
8355 18:00...... ------------------
8356 19:00...... The Vogon reads his poem
8357 20:00...... ------------------
8358 20:30-22:15 Marvin escorts the Hitchhikers to the bridge
8359 @end example
8360
8361 @vindex org-agenda-use-time-grid
8362 @vindex org-agenda-time-grid
8363 The time grid can be turned on and off with the variable
8364 @code{org-agenda-use-time-grid}, and can be configured with
8365 @code{org-agenda-time-grid}.
8366
8367 @node Sorting agenda items, Filtering/limiting agenda items, Time-of-day specifications, Presentation and sorting
8368 @subsection Sorting agenda items
8369 @cindex sorting, of agenda items
8370 @cindex priorities, of agenda items
8371 Before being inserted into a view, the items are sorted. How this is
8372 done depends on the type of view.
8373 @itemize @bullet
8374 @item
8375 @vindex org-agenda-files
8376 For the daily/weekly agenda, the items for each day are sorted. The
8377 default order is to first collect all items containing an explicit
8378 time-of-day specification. These entries will be shown at the beginning
8379 of the list, as a @emph{schedule} for the day. After that, items remain
8380 grouped in categories, in the sequence given by @code{org-agenda-files}.
8381 Within each category, items are sorted by priority (@pxref{Priorities}),
8382 which is composed of the base priority (2000 for priority @samp{A}, 1000
8383 for @samp{B}, and 0 for @samp{C}), plus additional increments for
8384 overdue scheduled or deadline items.
8385 @item
8386 For the TODO list, items remain in the order of categories, but within
8387 each category, sorting takes place according to priority
8388 (@pxref{Priorities}). The priority used for sorting derives from the
8389 priority cookie, with additions depending on how close an item is to its due
8390 or scheduled date.
8391 @item
8392 For tags matches, items are not sorted at all, but just appear in the
8393 sequence in which they are found in the agenda files.
8394 @end itemize
8395
8396 @vindex org-agenda-sorting-strategy
8397 Sorting can be customized using the variable
8398 @code{org-agenda-sorting-strategy}, and may also include criteria based on
8399 the estimated effort of an entry (@pxref{Effort estimates}).
8400
8401 @node Filtering/limiting agenda items, , Sorting agenda items, Presentation and sorting
8402 @subsection Filtering/limiting agenda items
8403
8404 Agenda built-in or customized commands are statically defined. Agenda
8405 filters and limits provide two ways of dynamically narrowing down the list of
8406 agenda entries: @emph{fitlers} and @emph{limits}. Filters only act on the
8407 display of the items, while limits take effect before the list of agenda
8408 entries is built. Filter are more often used interactively, while limits are
8409 mostly useful when defined as local variables within custom agenda commands.
8410
8411 @subsubheading Filtering in the agenda
8412 @cindex filtering, by tag, category, top headline and effort, in agenda
8413 @cindex tag filtering, in agenda
8414 @cindex category filtering, in agenda
8415 @cindex top headline filtering, in agenda
8416 @cindex effort filtering, in agenda
8417 @cindex query editing, in agenda
8418
8419 @table @kbd
8420 @orgcmd{/,org-agenda-filter-by-tag}
8421 @vindex org-agenda-tag-filter-preset
8422 Filter the agenda view with respect to a tag and/or effort estimates. The
8423 difference between this and a custom agenda command is that filtering is very
8424 fast, so that you can switch quickly between different filters without having
8425 to recreate the agenda.@footnote{Custom commands can preset a filter by
8426 binding the variable @code{org-agenda-tag-filter-preset} as an option. This
8427 filter will then be applied to the view and persist as a basic filter through
8428 refreshes and more secondary filtering. The filter is a global property of
8429 the entire agenda view---in a block agenda, you should only set this in the
8430 global options section, not in the section of an individual block.}
8431
8432 You will be prompted for a tag selection letter; @key{SPC} will mean any tag at
8433 all. Pressing @key{TAB} at that prompt will offer use completion to select a
8434 tag (including any tags that do not have a selection character). The command
8435 then hides all entries that do not contain or inherit this tag. When called
8436 with prefix arg, remove the entries that @emph{do} have the tag. A second
8437 @kbd{/} at the prompt will turn off the filter and unhide any hidden entries.
8438 If the first key you press is either @kbd{+} or @kbd{-}, the previous filter
8439 will be narrowed by requiring or forbidding the selected additional tag.
8440 Instead of pressing @kbd{+} or @kbd{-} after @kbd{/}, you can also
8441 immediately use the @kbd{\} command.
8442
8443 @vindex org-sort-agenda-noeffort-is-high
8444 In order to filter for effort estimates, you should set up allowed
8445 efforts globally, for example
8446 @lisp
8447 (setq org-global-properties
8448 '(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00")))
8449 @end lisp
8450 You can then filter for an effort by first typing an operator, one of
8451 @kbd{<}, @kbd{>}, and @kbd{=}, and then the one-digit index of an effort
8452 estimate in your array of allowed values, where @kbd{0} means the 10th value.
8453 The filter will then restrict to entries with effort smaller-or-equal, equal,
8454 or larger-or-equal than the selected value. If the digits 0--9 are not used
8455 as fast access keys to tags, you can also simply press the index digit
8456 directly without an operator. In this case, @kbd{<} will be assumed. For
8457 application of the operator, entries without a defined effort will be treated
8458 according to the value of @code{org-sort-agenda-noeffort-is-high}. To filter
8459 for tasks without effort definition, press @kbd{?} as the operator.
8460
8461 Org also supports automatic, context-aware tag filtering. If the variable
8462 @code{org-agenda-auto-exclude-function} is set to a user-defined function,
8463 that function can decide which tags should be excluded from the agenda
8464 automatically. Once this is set, the @kbd{/} command then accepts @kbd{RET}
8465 as a sub-option key and runs the auto exclusion logic. For example, let's
8466 say you use a @code{Net} tag to identify tasks which need network access, an
8467 @code{Errand} tag for errands in town, and a @code{Call} tag for making phone
8468 calls. You could auto-exclude these tags based on the availability of the
8469 Internet, and outside of business hours, with something like this:
8470
8471 @smalllisp
8472 @group
8473 (defun org-my-auto-exclude-function (tag)
8474 (and (cond
8475 ((string= tag "Net")
8476 (/= 0 (call-process "/sbin/ping" nil nil nil
8477 "-c1" "-q" "-t1" "mail.gnu.org")))
8478 ((or (string= tag "Errand") (string= tag "Call"))
8479 (let ((hour (nth 2 (decode-time))))
8480 (or (< hour 8) (> hour 21)))))
8481 (concat "-" tag)))
8482
8483 (setq org-agenda-auto-exclude-function 'org-my-auto-exclude-function)
8484 @end group
8485 @end smalllisp
8486
8487 @orgcmd{\\,org-agenda-filter-by-tag-refine}
8488 Narrow the current agenda filter by an additional condition. When called with
8489 prefix arg, remove the entries that @emph{do} have the tag, or that do match
8490 the effort criterion. You can achieve the same effect by pressing @kbd{+} or
8491 @kbd{-} as the first key after the @kbd{/} command.
8492
8493 @c
8494 @kindex [
8495 @kindex ]
8496 @kindex @{
8497 @kindex @}
8498 @item [ ] @{ @}
8499 @table @i
8500 @item @r{in} search view
8501 add new search words (@kbd{[} and @kbd{]}) or new regular expressions
8502 (@kbd{@{} and @kbd{@}}) to the query string. The opening bracket/brace will
8503 add a positive search term prefixed by @samp{+}, indicating that this search
8504 term @i{must} occur/match in the entry. The closing bracket/brace will add a
8505 negative search term which @i{must not} occur/match in the entry for it to be
8506 selected.
8507 @end table
8508
8509 @orgcmd{<,org-agenda-filter-by-category}
8510 @vindex org-agenda-category-filter-preset
8511
8512 Filter the current agenda view with respect to the category of the item at
8513 point. Pressing @code{<} another time will remove this filter. You can add
8514 a filter preset through the option @code{org-agenda-category-filter-preset}
8515 (see below.)
8516
8517 @orgcmd{^,org-agenda-filter-by-top-headline}
8518 Filter the current agenda view and only display the siblings and the parent
8519 headline of the one at point.
8520
8521 @orgcmd{=,org-agenda-filter-by-regexp}
8522 @vindex org-agenda-regexp-filter-preset
8523
8524 Filter the agenda view by a regular expression: only show agenda entries
8525 matching the regular expression the user entered. When called with a prefix
8526 argument, it will filter @emph{out} entries matching the regexp. With two
8527 universal prefix arguments, it will remove all the regexp filters, which can
8528 be accumulated. You can add a filter preset through the option
8529 @code{org-agenda-category-filter-preset} (see below.)
8530
8531 @orgcmd{|,org-agenda-filter-remove-all}
8532 Remove all filters in the current agenda view.
8533 @end table
8534
8535 @subsubheading Setting limits for the agenda
8536 @cindex limits, in agenda
8537 @vindex org-agenda-max-entries
8538 @vindex org-agenda-max-effort
8539 @vindex org-agenda-max-todos
8540 @vindex org-agenda-max-tags
8541
8542 Here is a list of options that you can set, either globally, or locally in
8543 your custom agenda views@pxref{Custom agenda views}.
8544
8545 @table @var
8546 @item org-agenda-max-entries
8547 Limit the number of entries.
8548 @item org-agenda-max-effort
8549 Limit the duration of accumulated efforts (as minutes).
8550 @item org-agenda-max-todos
8551 Limit the number of entries with TODO keywords.
8552 @item org-agenda-max-tags
8553 Limit the number of tagged entries.
8554 @end table
8555
8556 When set to a positive integer, each option will exclude entries from other
8557 categories: for example, @code{(setq org-agenda-max-effort 100)} will limit
8558 the agenda to 100 minutes of effort and exclude any entry that as no effort
8559 property. If you want to include entries with no effort property, use a
8560 negative value for @code{org-agenda-max-effort}.
8561
8562 One useful setup is to use @code{org-agenda-max-entries} locally in a custom
8563 command. For example, this custom command will display the next five entries
8564 with a @code{NEXT} TODO keyword.
8565
8566 @smalllisp
8567 (setq org-agenda-custom-commands
8568 '(("n" todo "NEXT"
8569 ((org-agenda-max-entries 5)))))
8570 @end smalllisp
8571
8572 Once you mark one of these five entry as @code{DONE}, rebuilding the agenda
8573 will again the next five entries again, including the first entry that was
8574 excluded so far.
8575
8576 You can also dynamically set temporary limits@footnote{Those temporary limits
8577 are lost when rebuilding the agenda.}:
8578
8579 @table @kbd
8580 @orgcmd{~,org-agenda-limit-interactively}
8581 This prompts for the type of limit to apply and its value.
8582 @end table
8583
8584 @node Agenda commands, Custom agenda views, Presentation and sorting, Agenda Views
8585 @section Commands in the agenda buffer
8586 @cindex commands, in agenda buffer
8587
8588 Entries in the agenda buffer are linked back to the Org file or diary
8589 file where they originate. You are not allowed to edit the agenda
8590 buffer itself, but commands are provided to show and jump to the
8591 original entry location, and to edit the Org files ``remotely'' from
8592 the agenda buffer. In this way, all information is stored only once,
8593 removing the risk that your agenda and note files may diverge.
8594
8595 Some commands can be executed with mouse clicks on agenda lines. For
8596 the other commands, the cursor needs to be in the desired line.
8597
8598 @table @kbd
8599 @tsubheading{Motion}
8600 @cindex motion commands in agenda
8601 @orgcmd{n,org-agenda-next-line}
8602 Next line (same as @key{down} and @kbd{C-n}).
8603 @orgcmd{p,org-agenda-previous-line}
8604 Previous line (same as @key{up} and @kbd{C-p}).
8605 @tsubheading{View/Go to Org file}
8606 @orgcmdkkc{@key{SPC},mouse-3,org-agenda-show-and-scroll-up}
8607 Display the original location of the item in another window.
8608 With prefix arg, make sure that the entire entry is made visible in the
8609 outline, not only the heading.
8610 @c
8611 @orgcmd{L,org-agenda-recenter}
8612 Display original location and recenter that window.
8613 @c
8614 @orgcmdkkc{@key{TAB},mouse-2,org-agenda-goto}
8615 Go to the original location of the item in another window.
8616 @c
8617 @orgcmd{@key{RET},org-agenda-switch-to}
8618 Go to the original location of the item and delete other windows.
8619 @c
8620 @orgcmd{F,org-agenda-follow-mode}
8621 @vindex org-agenda-start-with-follow-mode
8622 Toggle Follow mode. In Follow mode, as you move the cursor through
8623 the agenda buffer, the other window always shows the corresponding
8624 location in the Org file. The initial setting for this mode in new
8625 agenda buffers can be set with the variable
8626 @code{org-agenda-start-with-follow-mode}.
8627 @c
8628 @orgcmd{C-c C-x b,org-agenda-tree-to-indirect-buffer}
8629 Display the entire subtree of the current item in an indirect buffer. With a
8630 numeric prefix argument N, go up to level N and then take that tree. If N is
8631 negative, go up that many levels. With a @kbd{C-u} prefix, do not remove the
8632 previously used indirect buffer.
8633
8634 @orgcmd{C-c C-o,org-agenda-open-link}
8635 Follow a link in the entry. This will offer a selection of any links in the
8636 text belonging to the referenced Org node. If there is only one link, it
8637 will be followed without a selection prompt.
8638
8639 @tsubheading{Change display}
8640 @cindex display changing, in agenda
8641 @kindex A
8642 @item A
8643 Interactively select another agenda view and append it to the current view.
8644 @c
8645 @kindex o
8646 @item o
8647 Delete other windows.
8648 @c
8649 @orgcmdkskc{v d,d,org-agenda-day-view}
8650 @xorgcmdkskc{v w,w,org-agenda-week-view}
8651 @xorgcmd{v t,org-agenda-fortnight-view}
8652 @xorgcmd{v m,org-agenda-month-view}
8653 @xorgcmd{v y,org-agenda-year-view}
8654 @xorgcmd{v SPC,org-agenda-reset-view}
8655 @vindex org-agenda-span
8656 Switch to day/week/month/year view. When switching to day or week view, this
8657 setting becomes the default for subsequent agenda refreshes. Since month and
8658 year views are slow to create, they do not become the default. A numeric
8659 prefix argument may be used to jump directly to a specific day of the year,
8660 ISO week, month, or year, respectively. For example, @kbd{32 d} jumps to
8661 February 1st, @kbd{9 w} to ISO week number 9. When setting day, week, or
8662 month view, a year may be encoded in the prefix argument as well. For
8663 example, @kbd{200712 w} will jump to week 12 in 2007. If such a year
8664 specification has only one or two digits, it will be mapped to the interval
8665 1938--2037. @kbd{v @key{SPC}} will reset to what is set in
8666 @code{org-agenda-span}.
8667 @c
8668 @orgcmd{f,org-agenda-later}
8669 Go forward in time to display the following @code{org-agenda-current-span} days.
8670 For example, if the display covers a week, switch to the following week.
8671 With prefix arg, go forward that many times @code{org-agenda-current-span} days.
8672 @c
8673 @orgcmd{b,org-agenda-earlier}
8674 Go backward in time to display earlier dates.
8675 @c
8676 @orgcmd{.,org-agenda-goto-today}
8677 Go to today.
8678 @c
8679 @orgcmd{j,org-agenda-goto-date}
8680 Prompt for a date and go there.
8681 @c
8682 @orgcmd{J,org-agenda-clock-goto}
8683 Go to the currently clocked-in task @i{in the agenda buffer}.
8684 @c
8685 @orgcmd{D,org-agenda-toggle-diary}
8686 Toggle the inclusion of diary entries. See @ref{Weekly/daily agenda}.
8687 @c
8688 @orgcmdkskc{v l,l,org-agenda-log-mode}
8689 @kindex v L
8690 @vindex org-log-done
8691 @vindex org-agenda-log-mode-items
8692 Toggle Logbook mode. In Logbook mode, entries that were marked DONE while
8693 logging was on (variable @code{org-log-done}) are shown in the agenda, as are
8694 entries that have been clocked on that day. You can configure the entry
8695 types that should be included in log mode using the variable
8696 @code{org-agenda-log-mode-items}. When called with a @kbd{C-u} prefix, show
8697 all possible logbook entries, including state changes. When called with two
8698 prefix arguments @kbd{C-u C-u}, show only logging information, nothing else.
8699 @kbd{v L} is equivalent to @kbd{C-u v l}.
8700 @c
8701 @orgcmdkskc{v [,[,org-agenda-manipulate-query-add}
8702 Include inactive timestamps into the current view. Only for weekly/daily
8703 agenda and timeline views.
8704 @c
8705 @orgcmd{v a,org-agenda-archives-mode}
8706 @xorgcmd{v A,org-agenda-archives-mode 'files}
8707 Toggle Archives mode. In Archives mode, trees that are marked
8708 @code{ARCHIVED} are also scanned when producing the agenda. When you use the
8709 capital @kbd{A}, even all archive files are included. To exit archives mode,
8710 press @kbd{v a} again.
8711 @c
8712 @orgcmdkskc{v R,R,org-agenda-clockreport-mode}
8713 @vindex org-agenda-start-with-clockreport-mode
8714 @vindex org-clock-report-include-clocking-task
8715 Toggle Clockreport mode. In Clockreport mode, the daily/weekly agenda will
8716 always show a table with the clocked times for the time span and file scope
8717 covered by the current agenda view. The initial setting for this mode in new
8718 agenda buffers can be set with the variable
8719 @code{org-agenda-start-with-clockreport-mode}. By using a prefix argument
8720 when toggling this mode (i.e., @kbd{C-u R}), the clock table will not show
8721 contributions from entries that are hidden by agenda filtering@footnote{Only
8722 tags filtering will be respected here, effort filtering is ignored.}. See
8723 also the variable @code{org-clock-report-include-clocking-task}.
8724 @c
8725 @orgkey{v c}
8726 @vindex org-agenda-clock-consistency-checks
8727 Show overlapping clock entries, clocking gaps, and other clocking problems in
8728 the current agenda range. You can then visit clocking lines and fix them
8729 manually. See the variable @code{org-agenda-clock-consistency-checks} for
8730 information on how to customize the definition of what constituted a clocking
8731 problem. To return to normal agenda display, press @kbd{l} to exit Logbook
8732 mode.
8733 @c
8734 @orgcmdkskc{v E,E,org-agenda-entry-text-mode}
8735 @vindex org-agenda-start-with-entry-text-mode
8736 @vindex org-agenda-entry-text-maxlines
8737 Toggle entry text mode. In entry text mode, a number of lines from the Org
8738 outline node referenced by an agenda line will be displayed below the line.
8739 The maximum number of lines is given by the variable
8740 @code{org-agenda-entry-text-maxlines}. Calling this command with a numeric
8741 prefix argument will temporarily modify that number to the prefix value.
8742 @c
8743 @orgcmd{G,org-agenda-toggle-time-grid}
8744 @vindex org-agenda-use-time-grid
8745 @vindex org-agenda-time-grid
8746 Toggle the time grid on and off. See also the variables
8747 @code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
8748 @c
8749 @orgcmd{r,org-agenda-redo}
8750 Recreate the agenda buffer, for example to reflect the changes after
8751 modification of the timestamps of items with @kbd{S-@key{left}} and
8752 @kbd{S-@key{right}}. When the buffer is the global TODO list, a prefix
8753 argument is interpreted to create a selective list for a specific TODO
8754 keyword.
8755 @orgcmd{g,org-agenda-redo}
8756 Same as @kbd{r}.
8757 @c
8758 @orgcmdkskc{C-x C-s,s,org-save-all-org-buffers}
8759 Save all Org buffers in the current Emacs session, and also the locations of
8760 IDs.
8761 @c
8762 @orgcmd{C-c C-x C-c,org-agenda-columns}
8763 @vindex org-columns-default-format
8764 Invoke column view (@pxref{Column view}) in the agenda buffer. The column
8765 view format is taken from the entry at point, or (if there is no entry at
8766 point), from the first entry in the agenda view. So whatever the format for
8767 that entry would be in the original buffer (taken from a property, from a
8768 @code{#+COLUMNS} line, or from the default variable
8769 @code{org-columns-default-format}), will be used in the agenda.
8770
8771 @orgcmd{C-c C-x >,org-agenda-remove-restriction-lock}
8772 Remove the restriction lock on the agenda, if it is currently restricted to a
8773 file or subtree (@pxref{Agenda files}).
8774
8775 @tsubheading{Secondary filtering and query editing}
8776
8777 For a detailed description of these commands, see @pxref{Filtering/limiting
8778 agenda items}.
8779
8780 @orgcmd{/,org-agenda-filter-by-tag}
8781 @vindex org-agenda-tag-filter-preset
8782 Filter the agenda view with respect to a tag and/or effort estimates.
8783
8784 @orgcmd{\\,org-agenda-filter-by-tag-refine}
8785 Narrow the current agenda filter by an additional condition.
8786
8787 @orgcmd{<,org-agenda-filter-by-category}
8788 @vindex org-agenda-category-filter-preset
8789
8790 Filter the current agenda view with respect to the category of the item at
8791 point. Pressing @code{<} another time will remove this filter.
8792
8793 @orgcmd{^,org-agenda-filter-by-top-headline}
8794 Filter the current agenda view and only display the siblings and the parent
8795 headline of the one at point.
8796
8797 @orgcmd{=,org-agenda-filter-by-regexp}
8798 @vindex org-agenda-regexp-filter-preset
8799
8800 Filter the agenda view by a regular expression: only show agenda entries
8801 matching the regular expression the user entered. When called with a prefix
8802 argument, it will filter @emph{out} entries matching the regexp. With two
8803 universal prefix arguments, it will remove all the regexp filters, which can
8804 be accumulated. You can add a filter preset through the option
8805 @code{org-agenda-category-filter-preset} (see below.)
8806
8807 @orgcmd{|,org-agenda-filter-remove-all}
8808 Remove all filters in the current agenda view.
8809
8810 @tsubheading{Remote editing}
8811 @cindex remote editing, from agenda
8812
8813 @item 0--9
8814 Digit argument.
8815 @c
8816 @cindex undoing remote-editing events
8817 @cindex remote editing, undo
8818 @orgcmd{C-_,org-agenda-undo}
8819 Undo a change due to a remote editing command. The change is undone
8820 both in the agenda buffer and in the remote buffer.
8821 @c
8822 @orgcmd{t,org-agenda-todo}
8823 Change the TODO state of the item, both in the agenda and in the
8824 original org file.
8825 @c
8826 @orgcmd{C-S-@key{right},org-agenda-todo-nextset}
8827 @orgcmd{C-S-@key{left},org-agenda-todo-previousset}
8828 Switch to the next/previous set of TODO keywords.
8829 @c
8830 @orgcmd{C-k,org-agenda-kill}
8831 @vindex org-agenda-confirm-kill
8832 Delete the current agenda item along with the entire subtree belonging
8833 to it in the original Org file. If the text to be deleted remotely
8834 is longer than one line, the kill needs to be confirmed by the user. See
8835 variable @code{org-agenda-confirm-kill}.
8836 @c
8837 @orgcmd{C-c C-w,org-agenda-refile}
8838 Refile the entry at point.
8839 @c
8840 @orgcmdkskc{C-c C-x C-a,a,org-agenda-archive-default-with-confirmation}
8841 @vindex org-archive-default-command
8842 Archive the subtree corresponding to the entry at point using the default
8843 archiving command set in @code{org-archive-default-command}. When using the
8844 @code{a} key, confirmation will be required.
8845 @c
8846 @orgcmd{C-c C-x a,org-agenda-toggle-archive-tag}
8847 Toggle the ARCHIVE tag for the current headline.
8848 @c
8849 @orgcmd{C-c C-x A,org-agenda-archive-to-archive-sibling}
8850 Move the subtree corresponding to the current entry to its @emph{archive
8851 sibling}.
8852 @c
8853 @orgcmdkskc{C-c C-x C-s,$,org-agenda-archive}
8854 Archive the subtree corresponding to the current headline. This means the
8855 entry will be moved to the configured archive location, most likely a
8856 different file.
8857 @c
8858 @orgcmd{T,org-agenda-show-tags}
8859 @vindex org-agenda-show-inherited-tags
8860 Show all tags associated with the current item. This is useful if you have
8861 turned off @code{org-agenda-show-inherited-tags}, but still want to see all
8862 tags of a headline occasionally.
8863 @c
8864 @orgcmd{:,org-agenda-set-tags}
8865 Set tags for the current headline. If there is an active region in the
8866 agenda, change a tag for all headings in the region.
8867 @c
8868 @kindex ,
8869 @item ,
8870 Set the priority for the current item (@command{org-agenda-priority}).
8871 Org mode prompts for the priority character. If you reply with @key{SPC},
8872 the priority cookie is removed from the entry.
8873 @c
8874 @orgcmd{P,org-agenda-show-priority}
8875 Display weighted priority of current item.
8876 @c
8877 @orgcmdkkc{+,S-@key{up},org-agenda-priority-up}
8878 Increase the priority of the current item. The priority is changed in
8879 the original buffer, but the agenda is not resorted. Use the @kbd{r}
8880 key for this.
8881 @c
8882 @orgcmdkkc{-,S-@key{down},org-agenda-priority-down}
8883 Decrease the priority of the current item.
8884 @c
8885 @orgcmdkkc{z,C-c C-z,org-agenda-add-note}
8886 @vindex org-log-into-drawer
8887 Add a note to the entry. This note will be recorded, and then filed to the
8888 same location where state change notes are put. Depending on
8889 @code{org-log-into-drawer}, this may be inside a drawer.
8890 @c
8891 @orgcmd{C-c C-a,org-attach}
8892 Dispatcher for all command related to attachments.
8893 @c
8894 @orgcmd{C-c C-s,org-agenda-schedule}
8895 Schedule this item. With prefix arg remove the scheduling timestamp
8896 @c
8897 @orgcmd{C-c C-d,org-agenda-deadline}
8898 Set a deadline for this item. With prefix arg remove the deadline.
8899 @c
8900 @orgcmd{S-@key{right},org-agenda-do-date-later}
8901 Change the timestamp associated with the current line by one day into the
8902 future. If the date is in the past, the first call to this command will move
8903 it to today.@*
8904 With a numeric prefix argument, change it by that many days. For example,
8905 @kbd{3 6 5 S-@key{right}} will change it by a year. With a @kbd{C-u} prefix,
8906 change the time by one hour. If you immediately repeat the command, it will
8907 continue to change hours even without the prefix arg. With a double @kbd{C-u
8908 C-u} prefix, do the same for changing minutes.@*
8909 The stamp is changed in the original Org file, but the change is not directly
8910 reflected in the agenda buffer. Use @kbd{r} or @kbd{g} to update the buffer.
8911 @c
8912 @orgcmd{S-@key{left},org-agenda-do-date-earlier}
8913 Change the timestamp associated with the current line by one day
8914 into the past.
8915 @c
8916 @orgcmd{>,org-agenda-date-prompt}
8917 Change the timestamp associated with the current line. The key @kbd{>} has
8918 been chosen, because it is the same as @kbd{S-.} on my keyboard.
8919 @c
8920 @orgcmd{I,org-agenda-clock-in}
8921 Start the clock on the current item. If a clock is running already, it
8922 is stopped first.
8923 @c
8924 @orgcmd{O,org-agenda-clock-out}
8925 Stop the previously started clock.
8926 @c
8927 @orgcmd{X,org-agenda-clock-cancel}
8928 Cancel the currently running clock.
8929 @c
8930 @orgcmd{J,org-agenda-clock-goto}
8931 Jump to the running clock in another window.
8932 @c
8933 @orgcmd{k,org-agenda-capture}
8934 Like @code{org-capture}, but use the date at point as the default date for
8935 the capture template. See @code{org-capture-use-agenda-date} to make this
8936 the default behavior of @code{org-capture}.
8937 @cindex capturing, from agenda
8938 @vindex org-capture-use-agenda-date
8939
8940 @tsubheading{Dragging agenda lines forward/backward}
8941 @cindex dragging, agenda lines
8942
8943 @orgcmd{M-<up>,org-agenda-drag-line-backward}
8944 Drag the line at point backward one line@footnote{Moving agenda lines does
8945 not persist after an agenda refresh and does not modify the contributing
8946 @file{.org} files}. With a numeric prefix argument, drag backward by that
8947 many lines.
8948
8949 @orgcmd{M-<down>,org-agenda-drag-line-forward}
8950 Drag the line at point forward one line. With a numeric prefix argument,
8951 drag forward by that many lines.
8952
8953 @tsubheading{Bulk remote editing selected entries}
8954 @cindex remote editing, bulk, from agenda
8955 @vindex org-agenda-bulk-custom-functions
8956
8957 @orgcmd{m,org-agenda-bulk-mark}
8958 Mark the entry at point for bulk action. With numeric prefix argument, mark
8959 that many successive entries.
8960 @c
8961 @orgcmd{*,org-agenda-bulk-mark-all}
8962 Mark all visible agenda entries for bulk action.
8963 @c
8964 @orgcmd{u,org-agenda-bulk-unmark}
8965 Unmark entry at point for bulk action.
8966 @c
8967 @orgcmd{U,org-agenda-bulk-remove-all-marks}
8968 Unmark all marked entries for bulk action.
8969 @c
8970 @orgcmd{M-m,org-agenda-bulk-toggle}
8971 Toggle mark of the entry at point for bulk action.
8972 @c
8973 @orgcmd{M-*,org-agenda-bulk-toggle-all}
8974 Toggle marks of all visible entries for bulk action.
8975 @c
8976 @orgcmd{%,org-agenda-bulk-mark-regexp}
8977 Mark entries matching a regular expression for bulk action.
8978 @c
8979 @orgcmd{B,org-agenda-bulk-action}
8980 Bulk action: act on all marked entries in the agenda. This will prompt for
8981 another key to select the action to be applied. The prefix arg to @kbd{B}
8982 will be passed through to the @kbd{s} and @kbd{d} commands, to bulk-remove
8983 these special timestamps. By default, marks are removed after the bulk. If
8984 you want them to persist, set @code{org-agenda-bulk-persistent-marks} to
8985 @code{t} or hit @kbd{p} at the prompt.
8986
8987 @table @kbd
8988 @item *
8989 Toggle persistent marks.
8990 @item $
8991 Archive all selected entries.
8992 @item A
8993 Archive entries by moving them to their respective archive siblings.
8994 @item t
8995 Change TODO state. This prompts for a single TODO keyword and changes the
8996 state of all selected entries, bypassing blocking and suppressing logging
8997 notes (but not timestamps).
8998 @item +
8999 Add a tag to all selected entries.
9000 @item -
9001 Remove a tag from all selected entries.
9002 @item s
9003 Schedule all items to a new date. To shift existing schedule dates by a
9004 fixed number of days, use something starting with double plus at the prompt,
9005 for example @samp{++8d} or @samp{++2w}.
9006 @item d
9007 Set deadline to a specific date.
9008 @item r
9009 Prompt for a single refile target and move all entries. The entries will no
9010 longer be in the agenda; refresh (@kbd{g}) to bring them back.
9011 @item S
9012 Reschedule randomly into the coming N days. N will be prompted for. With
9013 prefix arg (@kbd{C-u B S}), scatter only across weekdays.
9014 @item f
9015 Apply a function@footnote{You can also create persistent custom functions
9016 through @code{org-agenda-bulk-custom-functions}.} to marked entries. For
9017 example, the function below sets the CATEGORY property of the entries to web.
9018
9019 @lisp
9020 @group
9021 (defun set-category ()
9022 (interactive "P")
9023 (let* ((marker (or (org-get-at-bol 'org-hd-marker)
9024 (org-agenda-error)))
9025 (buffer (marker-buffer marker)))
9026 (with-current-buffer buffer
9027 (save-excursion
9028 (save-restriction
9029 (widen)
9030 (goto-char marker)
9031 (org-back-to-heading t)
9032 (org-set-property "CATEGORY" "web"))))))
9033 @end group
9034 @end lisp
9035 @end table
9036
9037 @tsubheading{Calendar commands}
9038 @cindex calendar commands, from agenda
9039
9040 @orgcmd{c,org-agenda-goto-calendar}
9041 Open the Emacs calendar and move to the date at the agenda cursor.
9042 @c
9043 @orgcmd{c,org-calendar-goto-agenda}
9044 When in the calendar, compute and show the Org mode agenda for the
9045 date at the cursor.
9046 @c
9047 @cindex diary entries, creating from agenda
9048 @orgcmd{i,org-agenda-diary-entry}
9049 @vindex org-agenda-diary-file
9050 Insert a new entry into the diary, using the date at the cursor and (for
9051 block entries) the date at the mark. This will add to the Emacs diary
9052 file@footnote{This file is parsed for the agenda when
9053 @code{org-agenda-include-diary} is set.}, in a way similar to the @kbd{i}
9054 command in the calendar. The diary file will pop up in another window, where
9055 you can add the entry.
9056
9057 If you configure @code{org-agenda-diary-file} to point to an Org mode file,
9058 Org will create entries (in Org mode syntax) in that file instead. Most
9059 entries will be stored in a date-based outline tree that will later make it
9060 easy to archive appointments from previous months/years. The tree will be
9061 built under an entry with a @code{DATE_TREE} property, or else with years as
9062 top-level entries. Emacs will prompt you for the entry text---if you specify
9063 it, the entry will be created in @code{org-agenda-diary-file} without further
9064 interaction. If you directly press @key{RET} at the prompt without typing
9065 text, the target file will be shown in another window for you to finish the
9066 entry there. See also the @kbd{k r} command.
9067 @c
9068 @orgcmd{M,org-agenda-phases-of-moon}
9069 Show the phases of the moon for the three months around current date.
9070 @c
9071 @orgcmd{S,org-agenda-sunrise-sunset}
9072 Show sunrise and sunset times. The geographical location must be set
9073 with calendar variables, see the documentation for the Emacs calendar.
9074 @c
9075 @orgcmd{C,org-agenda-convert-date}
9076 Convert the date at cursor into many other cultural and historic
9077 calendars.
9078 @c
9079 @orgcmd{H,org-agenda-holidays}
9080 Show holidays for three months around the cursor date.
9081
9082 @item M-x org-icalendar-combine-agenda-files RET
9083 Export a single iCalendar file containing entries from all agenda files.
9084 This is a globally available command, and also available in the agenda menu.
9085
9086 @tsubheading{Exporting to a file}
9087 @orgcmd{C-x C-w,org-agenda-write}
9088 @cindex exporting agenda views
9089 @cindex agenda views, exporting
9090 @vindex org-agenda-exporter-settings
9091 Write the agenda view to a file. Depending on the extension of the selected
9092 file name, the view will be exported as HTML (@file{.html} or @file{.htm}),
9093 Postscript (@file{.ps}), PDF (@file{.pdf}), Org (@file{.org}) and plain text
9094 (any other extension). When exporting to Org, only the body of original
9095 headlines are exported, not subtrees or inherited tags. When called with a
9096 @kbd{C-u} prefix argument, immediately open the newly created file. Use the
9097 variable @code{org-agenda-exporter-settings} to set options for
9098 @file{ps-print} and for @file{htmlize} to be used during export.
9099
9100 @tsubheading{Quit and Exit}
9101 @orgcmd{q,org-agenda-quit}
9102 Quit agenda, remove the agenda buffer.
9103 @c
9104 @cindex agenda files, removing buffers
9105 @orgcmd{x,org-agenda-exit}
9106 Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
9107 for the compilation of the agenda. Buffers created by the user to
9108 visit Org files will not be removed.
9109 @end table
9110
9111
9112 @node Custom agenda views, Exporting Agenda Views, Agenda commands, Agenda Views
9113 @section Custom agenda views
9114 @cindex custom agenda views
9115 @cindex agenda views, custom
9116
9117 Custom agenda commands serve two purposes: to store and quickly access
9118 frequently used TODO and tags searches, and to create special composite
9119 agenda buffers. Custom agenda commands will be accessible through the
9120 dispatcher (@pxref{Agenda dispatcher}), just like the default commands.
9121
9122 @menu
9123 * Storing searches:: Type once, use often
9124 * Block agenda:: All the stuff you need in a single buffer
9125 * Setting Options:: Changing the rules
9126 @end menu
9127
9128 @node Storing searches, Block agenda, Custom agenda views, Custom agenda views
9129 @subsection Storing searches
9130
9131 The first application of custom searches is the definition of keyboard
9132 shortcuts for frequently used searches, either creating an agenda
9133 buffer, or a sparse tree (the latter covering of course only the current
9134 buffer).
9135 @kindex C-c a C
9136 @vindex org-agenda-custom-commands
9137 @cindex agenda views, main example
9138 @cindex agenda, as an agenda views
9139 @cindex agenda*, as an agenda views
9140 @cindex tags, as an agenda view
9141 @cindex todo, as an agenda view
9142 @cindex tags-todo
9143 @cindex todo-tree
9144 @cindex occur-tree
9145 @cindex tags-tree
9146
9147 Custom commands are configured in the variable
9148 @code{org-agenda-custom-commands}. You can customize this variable, for
9149 example by pressing @kbd{C-c a C}. You can also directly set it with Emacs
9150 Lisp in @file{.emacs}. The following example contains all valid agenda
9151 views:
9152
9153 @lisp
9154 @group
9155 (setq org-agenda-custom-commands
9156 '(("x" agenda)
9157 ("y" agenda*)
9158 ("w" todo "WAITING")
9159 ("W" todo-tree "WAITING")
9160 ("u" tags "+boss-urgent")
9161 ("v" tags-todo "+boss-urgent")
9162 ("U" tags-tree "+boss-urgent")
9163 ("f" occur-tree "\\<FIXME\\>")
9164 ("h" . "HOME+Name tags searches") ; description for "h" prefix
9165 ("hl" tags "+home+Lisa")
9166 ("hp" tags "+home+Peter")
9167 ("hk" tags "+home+Kim")))
9168 @end group
9169 @end lisp
9170
9171 @noindent
9172 The initial string in each entry defines the keys you have to press
9173 after the dispatcher command @kbd{C-c a} in order to access the command.
9174 Usually this will be just a single character, but if you have many
9175 similar commands, you can also define two-letter combinations where the
9176 first character is the same in several combinations and serves as a
9177 prefix key@footnote{You can provide a description for a prefix key by
9178 inserting a cons cell with the prefix and the description.}. The second
9179 parameter is the search type, followed by the string or regular
9180 expression to be used for the matching. The example above will
9181 therefore define:
9182
9183 @table @kbd
9184 @item C-c a x
9185 as a global search for agenda entries planned@footnote{@emph{Planned} means
9186 here that these entries have some planning information attached to them, like
9187 a time-stamp, a scheduled or a deadline string. See
9188 @code{org-agenda-entry-types} on how to set what planning information will be
9189 taken into account.} this week/day.
9190 @item C-c a y
9191 as a global search for agenda entries planned this week/day, but only those
9192 with an hour specification like @code{[h]h:mm}---think of them as appointments.
9193 @item C-c a w
9194 as a global search for TODO entries with @samp{WAITING} as the TODO
9195 keyword
9196 @item C-c a W
9197 as the same search, but only in the current buffer and displaying the
9198 results as a sparse tree
9199 @item C-c a u
9200 as a global tags search for headlines marked @samp{:boss:} but not
9201 @samp{:urgent:}
9202 @item C-c a v
9203 as the same search as @kbd{C-c a u}, but limiting the search to
9204 headlines that are also TODO items
9205 @item C-c a U
9206 as the same search as @kbd{C-c a u}, but only in the current buffer and
9207 displaying the result as a sparse tree
9208 @item C-c a f
9209 to create a sparse tree (again: current buffer only) with all entries
9210 containing the word @samp{FIXME}
9211 @item C-c a h
9212 as a prefix command for a HOME tags search where you have to press an
9213 additional key (@kbd{l}, @kbd{p} or @kbd{k}) to select a name (Lisa,
9214 Peter, or Kim) as additional tag to match.
9215 @end table
9216
9217 Note that the @code{*-tree} agenda views need to be called from an
9218 Org buffer as they operate on the current buffer only.
9219
9220 @node Block agenda, Setting Options, Storing searches, Custom agenda views
9221 @subsection Block agenda
9222 @cindex block agenda
9223 @cindex agenda, with block views
9224
9225 Another possibility is the construction of agenda views that comprise
9226 the results of @emph{several} commands, each of which creates a block in
9227 the agenda buffer. The available commands include @code{agenda} for the
9228 daily or weekly agenda (as created with @kbd{C-c a a}), @code{alltodo}
9229 for the global TODO list (as constructed with @kbd{C-c a t}), and the
9230 matching commands discussed above: @code{todo}, @code{tags}, and
9231 @code{tags-todo}. Here are two examples:
9232
9233 @lisp
9234 @group
9235 (setq org-agenda-custom-commands
9236 '(("h" "Agenda and Home-related tasks"
9237 ((agenda "")
9238 (tags-todo "home")
9239 (tags "garden")))
9240 ("o" "Agenda and Office-related tasks"
9241 ((agenda "")
9242 (tags-todo "work")
9243 (tags "office")))))
9244 @end group
9245 @end lisp
9246
9247 @noindent
9248 This will define @kbd{C-c a h} to create a multi-block view for stuff
9249 you need to attend to at home. The resulting agenda buffer will contain
9250 your agenda for the current week, all TODO items that carry the tag
9251 @samp{home}, and also all lines tagged with @samp{garden}. Finally the
9252 command @kbd{C-c a o} provides a similar view for office tasks.
9253
9254 @node Setting Options, , Block agenda, Custom agenda views
9255 @subsection Setting options for custom commands
9256 @cindex options, for custom agenda views
9257
9258 @vindex org-agenda-custom-commands
9259 Org mode contains a number of variables regulating agenda construction
9260 and display. The global variables define the behavior for all agenda
9261 commands, including the custom commands. However, if you want to change
9262 some settings just for a single custom view, you can do so. Setting
9263 options requires inserting a list of variable names and values at the
9264 right spot in @code{org-agenda-custom-commands}. For example:
9265
9266 @lisp
9267 @group
9268 (setq org-agenda-custom-commands
9269 '(("w" todo "WAITING"
9270 ((org-agenda-sorting-strategy '(priority-down))
9271 (org-agenda-prefix-format " Mixed: ")))
9272 ("U" tags-tree "+boss-urgent"
9273 ((org-show-following-heading nil)
9274 (org-show-hierarchy-above nil)))
9275 ("N" search ""
9276 ((org-agenda-files '("~org/notes.org"))
9277 (org-agenda-text-search-extra-files nil)))))
9278 @end group
9279 @end lisp
9280
9281 @noindent
9282 Now the @kbd{C-c a w} command will sort the collected entries only by
9283 priority, and the prefix format is modified to just say @samp{ Mixed: }
9284 instead of giving the category of the entry. The sparse tags tree of
9285 @kbd{C-c a U} will now turn out ultra-compact, because neither the
9286 headline hierarchy above the match, nor the headline following the match
9287 will be shown. The command @kbd{C-c a N} will do a text search limited
9288 to only a single file.
9289
9290 @vindex org-agenda-custom-commands
9291 For command sets creating a block agenda,
9292 @code{org-agenda-custom-commands} has two separate spots for setting
9293 options. You can add options that should be valid for just a single
9294 command in the set, and options that should be valid for all commands in
9295 the set. The former are just added to the command entry; the latter
9296 must come after the list of command entries. Going back to the block
9297 agenda example (@pxref{Block agenda}), let's change the sorting strategy
9298 for the @kbd{C-c a h} commands to @code{priority-down}, but let's sort
9299 the results for GARDEN tags query in the opposite order,
9300 @code{priority-up}. This would look like this:
9301
9302 @lisp
9303 @group
9304 (setq org-agenda-custom-commands
9305 '(("h" "Agenda and Home-related tasks"
9306 ((agenda)
9307 (tags-todo "home")
9308 (tags "garden"
9309 ((org-agenda-sorting-strategy '(priority-up)))))
9310 ((org-agenda-sorting-strategy '(priority-down))))
9311 ("o" "Agenda and Office-related tasks"
9312 ((agenda)
9313 (tags-todo "work")
9314 (tags "office")))))
9315 @end group
9316 @end lisp
9317
9318 As you see, the values and parentheses setting is a little complex.
9319 When in doubt, use the customize interface to set this variable---it
9320 fully supports its structure. Just one caveat: when setting options in
9321 this interface, the @emph{values} are just Lisp expressions. So if the
9322 value is a string, you need to add the double-quotes around the value
9323 yourself.
9324
9325 @vindex org-agenda-custom-commands-contexts
9326 To control whether an agenda command should be accessible from a specific
9327 context, you can customize @code{org-agenda-custom-commands-contexts}. Let's
9328 say for example that you have an agenda commands @code{"o"} displaying a view
9329 that you only need when reading emails. Then you would configure this option
9330 like this:
9331
9332 @lisp
9333 (setq org-agenda-custom-commands-contexts
9334 '(("o" (in-mode . "message-mode"))))
9335 @end lisp
9336
9337 You can also tell that the command key @code{"o"} should refer to another
9338 command key @code{"r"}. In that case, add this command key like this:
9339
9340 @lisp
9341 (setq org-agenda-custom-commands-contexts
9342 '(("o" "r" (in-mode . "message-mode"))))
9343 @end lisp
9344
9345 See the docstring of the variable for more information.
9346
9347 @node Exporting Agenda Views, Agenda column view, Custom agenda views, Agenda Views
9348 @section Exporting Agenda Views
9349 @cindex agenda views, exporting
9350
9351 If you are away from your computer, it can be very useful to have a printed
9352 version of some agenda views to carry around. Org mode can export custom
9353 agenda views as plain text, HTML@footnote{You need to install Hrvoje Niksic's
9354 @file{htmlize.el}.}, Postscript, PDF@footnote{To create PDF output, the
9355 ghostscript @file{ps2pdf} utility must be installed on the system. Selecting
9356 a PDF file will also create the postscript file.}, and iCalendar files. If
9357 you want to do this only occasionally, use the command
9358
9359 @table @kbd
9360 @orgcmd{C-x C-w,org-agenda-write}
9361 @cindex exporting agenda views
9362 @cindex agenda views, exporting
9363 @vindex org-agenda-exporter-settings
9364 Write the agenda view to a file. Depending on the extension of the selected
9365 file name, the view will be exported as HTML (extension @file{.html} or
9366 @file{.htm}), Postscript (extension @file{.ps}), iCalendar (extension
9367 @file{.ics}), or plain text (any other extension). Use the variable
9368 @code{org-agenda-exporter-settings} to set options for @file{ps-print} and
9369 for @file{htmlize} to be used during export, for example
9370
9371 @vindex org-agenda-add-entry-text-maxlines
9372 @vindex htmlize-output-type
9373 @vindex ps-number-of-columns
9374 @vindex ps-landscape-mode
9375 @lisp
9376 (setq org-agenda-exporter-settings
9377 '((ps-number-of-columns 2)
9378 (ps-landscape-mode t)
9379 (org-agenda-add-entry-text-maxlines 5)
9380 (htmlize-output-type 'css)))
9381 @end lisp
9382 @end table
9383
9384 If you need to export certain agenda views frequently, you can associate
9385 any custom agenda command with a list of output file names
9386 @footnote{If you want to store standard views like the weekly agenda
9387 or the global TODO list as well, you need to define custom commands for
9388 them in order to be able to specify file names.}. Here is an example
9389 that first defines custom commands for the agenda and the global
9390 TODO list, together with a number of files to which to export them.
9391 Then we define two block agenda commands and specify file names for them
9392 as well. File names can be relative to the current working directory,
9393 or absolute.
9394
9395 @lisp
9396 @group
9397 (setq org-agenda-custom-commands
9398 '(("X" agenda "" nil ("agenda.html" "agenda.ps"))
9399 ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
9400 ("h" "Agenda and Home-related tasks"
9401 ((agenda "")
9402 (tags-todo "home")
9403 (tags "garden"))
9404 nil
9405 ("~/views/home.html"))
9406 ("o" "Agenda and Office-related tasks"
9407 ((agenda)
9408 (tags-todo "work")
9409 (tags "office"))
9410 nil
9411 ("~/views/office.ps" "~/calendars/office.ics"))))
9412 @end group
9413 @end lisp
9414
9415 The extension of the file name determines the type of export. If it is
9416 @file{.html}, Org mode will use the @file{htmlize.el} package to convert
9417 the buffer to HTML and save it to this file name. If the extension is
9418 @file{.ps}, @code{ps-print-buffer-with-faces} is used to produce
9419 Postscript output. If the extension is @file{.ics}, iCalendar export is
9420 run export over all files that were used to construct the agenda, and
9421 limit the export to entries listed in the agenda. Any other
9422 extension produces a plain ASCII file.
9423
9424 The export files are @emph{not} created when you use one of those
9425 commands interactively because this might use too much overhead.
9426 Instead, there is a special command to produce @emph{all} specified
9427 files in one step:
9428
9429 @table @kbd
9430 @orgcmd{C-c a e,org-store-agenda-views}
9431 Export all agenda views that have export file names associated with
9432 them.
9433 @end table
9434
9435 You can use the options section of the custom agenda commands to also
9436 set options for the export commands. For example:
9437
9438 @lisp
9439 (setq org-agenda-custom-commands
9440 '(("X" agenda ""
9441 ((ps-number-of-columns 2)
9442 (ps-landscape-mode t)
9443 (org-agenda-prefix-format " [ ] ")
9444 (org-agenda-with-colors nil)
9445 (org-agenda-remove-tags t))
9446 ("theagenda.ps"))))
9447 @end lisp
9448
9449 @noindent
9450 This command sets two options for the Postscript exporter, to make it
9451 print in two columns in landscape format---the resulting page can be cut
9452 in two and then used in a paper agenda. The remaining settings modify
9453 the agenda prefix to omit category and scheduling information, and
9454 instead include a checkbox to check off items. We also remove the tags
9455 to make the lines compact, and we don't want to use colors for the
9456 black-and-white printer. Settings specified in
9457 @code{org-agenda-exporter-settings} will also apply, but the settings
9458 in @code{org-agenda-custom-commands} take precedence.
9459
9460 @noindent
9461 From the command line you may also use
9462 @example
9463 emacs -eval (org-batch-store-agenda-views) -kill
9464 @end example
9465 @noindent
9466 or, if you need to modify some parameters@footnote{Quoting depends on the
9467 system you use, please check the FAQ for examples.}
9468 @example
9469 emacs -eval '(org-batch-store-agenda-views \
9470 org-agenda-span (quote month) \
9471 org-agenda-start-day "2007-11-01" \
9472 org-agenda-include-diary nil \
9473 org-agenda-files (quote ("~/org/project.org")))' \
9474 -kill
9475 @end example
9476 @noindent
9477 which will create the agenda views restricted to the file
9478 @file{~/org/project.org}, without diary entries and with a 30-day
9479 extent.
9480
9481 You can also extract agenda information in a way that allows further
9482 processing by other programs. See @ref{Extracting agenda information}, for
9483 more information.
9484
9485
9486 @node Agenda column view, , Exporting Agenda Views, Agenda Views
9487 @section Using column view in the agenda
9488 @cindex column view, in agenda
9489 @cindex agenda, column view
9490
9491 Column view (@pxref{Column view}) is normally used to view and edit
9492 properties embedded in the hierarchical structure of an Org file. It can be
9493 quite useful to use column view also from the agenda, where entries are
9494 collected by certain criteria.
9495
9496 @table @kbd
9497 @orgcmd{C-c C-x C-c,org-agenda-columns}
9498 Turn on column view in the agenda.
9499 @end table
9500
9501 To understand how to use this properly, it is important to realize that the
9502 entries in the agenda are no longer in their proper outline environment.
9503 This causes the following issues:
9504
9505 @enumerate
9506 @item
9507 @vindex org-columns-default-format
9508 @vindex org-overriding-columns-format
9509 Org needs to make a decision which @code{COLUMNS} format to use. Since the
9510 entries in the agenda are collected from different files, and different files
9511 may have different @code{COLUMNS} formats, this is a non-trivial problem.
9512 Org first checks if the variable @code{org-agenda-overriding-columns-format} is
9513 currently set, and if so, takes the format from there. Otherwise it takes
9514 the format associated with the first item in the agenda, or, if that item
9515 does not have a specific format (defined in a property, or in its file), it
9516 uses @code{org-columns-default-format}.
9517 @item
9518 @cindex property, special, CLOCKSUM
9519 If any of the columns has a summary type defined (@pxref{Column attributes}),
9520 turning on column view in the agenda will visit all relevant agenda files and
9521 make sure that the computations of this property are up to date. This is
9522 also true for the special @code{CLOCKSUM} property. Org will then sum the
9523 values displayed in the agenda. In the daily/weekly agenda, the sums will
9524 cover a single day; in all other views they cover the entire block. It is
9525 vital to realize that the agenda may show the same entry @emph{twice} (for
9526 example as scheduled and as a deadline), and it may show two entries from the
9527 same hierarchy (for example a @emph{parent} and its @emph{child}). In these
9528 cases, the summation in the agenda will lead to incorrect results because
9529 some values will count double.
9530 @item
9531 When the column view in the agenda shows the @code{CLOCKSUM}, that is always
9532 the entire clocked time for this item. So even in the daily/weekly agenda,
9533 the clocksum listed in column view may originate from times outside the
9534 current view. This has the advantage that you can compare these values with
9535 a column listing the planned total effort for a task---one of the major
9536 applications for column view in the agenda. If you want information about
9537 clocked time in the displayed period use clock table mode (press @kbd{R} in
9538 the agenda).
9539
9540 @item
9541 @cindex property, special, CLOCKSUM_T
9542 When the column view in the agenda shows the @code{CLOCKSUM_T}, that is
9543 always today's clocked time for this item. So even in the weekly agenda,
9544 the clocksum listed in column view only originates from today. This lets
9545 you compare the time you spent on a task for today, with the time already
9546 spent (via @code{CLOCKSUM}) and with the planned total effort for it.
9547 @end enumerate
9548
9549
9550 @node Markup, Exporting, Agenda Views, Top
9551 @chapter Markup for rich export
9552
9553 When exporting Org mode documents, the exporter tries to reflect the
9554 structure of the document as accurately as possible in the back-end. Since
9555 export targets like HTML, @LaTeX{} allow much richer formatting, Org mode has
9556 rules on how to prepare text for rich export. This section summarizes the
9557 markup rules used in an Org mode buffer.
9558
9559 @menu
9560 * Structural markup elements:: The basic structure as seen by the exporter
9561 * Images and tables:: Images, tables and caption mechanism
9562 * Literal examples:: Source code examples with special formatting
9563 * Include files:: Include additional files into a document
9564 * Index entries:: Making an index
9565 * Macro replacement:: Use macros to create templates
9566 * Embedded @LaTeX{}:: LaTeX can be freely used inside Org documents
9567 * Special blocks:: Containers targeted at export back-ends
9568 @end menu
9569
9570 @node Structural markup elements, Images and tables, Markup, Markup
9571 @section Structural markup elements
9572
9573 @menu
9574 * Document title:: Where the title is taken from
9575 * Headings and sections:: The document structure as seen by the exporter
9576 * Table of contents:: The if and where of the table of contents
9577 * Lists:: Lists
9578 * Paragraphs:: Paragraphs
9579 * Footnote markup:: Footnotes
9580 * Emphasis and monospace:: Bold, italic, etc.
9581 * Horizontal rules:: Make a line
9582 * Comment lines:: What will *not* be exported
9583 @end menu
9584
9585 @node Document title, Headings and sections, Structural markup elements, Structural markup elements
9586 @subheading Document title
9587 @cindex document title, markup rules
9588
9589 @noindent
9590 The title of the exported document is taken from the special line
9591
9592 @cindex #+TITLE
9593 @example
9594 #+TITLE: This is the title of the document
9595 @end example
9596
9597 @noindent
9598 If this line does not exist, the title will be the name of the file
9599 associated to buffer, without extension, or the buffer name.
9600
9601 @cindex property, EXPORT_TITLE
9602 If you are exporting only a subtree, its heading will become the title of the
9603 document. If the subtree has a property @code{EXPORT_TITLE}, that will take
9604 precedence.
9605
9606 @node Headings and sections, Table of contents, Document title, Structural markup elements
9607 @subheading Headings and sections
9608 @cindex headings and sections, markup rules
9609
9610 @vindex org-export-headline-levels
9611 The outline structure of the document as described in @ref{Document
9612 Structure}, forms the basis for defining sections of the exported document.
9613 However, since the outline structure is also used for (for example) lists of
9614 tasks, only the first three outline levels will be used as headings. Deeper
9615 levels will become itemized lists. You can change the location of this
9616 switch globally by setting the variable @code{org-export-headline-levels}, or on a
9617 per-file basis with a line
9618
9619 @cindex #+OPTIONS
9620 @example
9621 #+OPTIONS: H:4
9622 @end example
9623
9624 @node Table of contents, Lists, Headings and sections, Structural markup elements
9625 @subheading Table of contents
9626 @cindex table of contents, markup rules
9627
9628 @cindex #+TOC
9629 @vindex org-export-with-toc
9630 The table of contents is normally inserted directly before the first headline
9631 of the file. The depth of the table is by default the same as the number of
9632 headline levels, but you can choose a smaller number, or turn off the table
9633 of contents entirely, by configuring the variable @code{org-export-with-toc},
9634 or on a per-file basis with a line like
9635
9636 @example
9637 #+OPTIONS: toc:2 (only to two levels in TOC)
9638 #+OPTIONS: toc:nil (no default TOC at all)
9639 @end example
9640
9641 If you would like to move the table of contents to a different location, you
9642 should turn off the default table using @code{org-export-with-toc} or
9643 @code{#+OPTIONS} and insert @code{#+TOC: headlines N} at the desired
9644 location(s).
9645
9646 @example
9647 #+OPTIONS: toc:nil (no default TOC)
9648 ...
9649 #+TOC: headlines 2 (insert TOC here, with two headline levels)
9650 @end example
9651
9652 Multiple @code{#+TOC: headline} lines are allowed. The same @code{TOC}
9653 keyword can also generate a list of all tables (resp.@: all listings) with a
9654 caption in the buffer.
9655
9656 @example
9657 #+TOC: listings (build a list of listings)
9658 #+TOC: tables (build a list of tables)
9659 @end example
9660
9661 @cindex property, ALT_TITLE
9662 The headline's title usually determines its corresponding entry in a table of
9663 contents. However, it is possible to specify an alternative title by
9664 setting @code{ALT_TITLE} property accordingly. It will then be used when
9665 building the table.
9666
9667 @node Lists, Paragraphs, Table of contents, Structural markup elements
9668 @subheading Lists
9669 @cindex lists, markup rules
9670
9671 Plain lists as described in @ref{Plain lists}, are translated to the back-end's
9672 syntax for such lists. Most back-ends support unordered, ordered, and
9673 description lists.
9674
9675 @node Paragraphs, Footnote markup, Lists, Structural markup elements
9676 @subheading Paragraphs, line breaks, and quoting
9677 @cindex paragraphs, markup rules
9678
9679 Paragraphs are separated by at least one empty line. If you need to enforce
9680 a line break within a paragraph, use @samp{\\} at the end of a line.
9681
9682 To keep the line breaks in a region, but otherwise use normal formatting, you
9683 can use this construct, which can also be used to format poetry.
9684
9685 @cindex #+BEGIN_VERSE
9686 @example
9687 #+BEGIN_VERSE
9688 Great clouds overhead
9689 Tiny black birds rise and fall
9690 Snow covers Emacs
9691
9692 -- AlexSchroeder
9693 #+END_VERSE
9694 @end example
9695
9696 When quoting a passage from another document, it is customary to format this
9697 as a paragraph that is indented on both the left and the right margin. You
9698 can include quotations in Org mode documents like this:
9699
9700 @cindex #+BEGIN_QUOTE
9701 @example
9702 #+BEGIN_QUOTE
9703 Everything should be made as simple as possible,
9704 but not any simpler -- Albert Einstein
9705 #+END_QUOTE
9706 @end example
9707
9708 If you would like to center some text, do it like this:
9709 @cindex #+BEGIN_CENTER
9710 @example
9711 #+BEGIN_CENTER
9712 Everything should be made as simple as possible, \\
9713 but not any simpler
9714 #+END_CENTER
9715 @end example
9716
9717
9718 @node Footnote markup, Emphasis and monospace, Paragraphs, Structural markup elements
9719 @subheading Footnote markup
9720 @cindex footnotes, markup rules
9721 @cindex @file{footnote.el}
9722
9723 Footnotes defined in the way described in @ref{Footnotes}, will be exported
9724 by all back-ends. Org allows multiple references to the same note, and
9725 multiple footnotes side by side.
9726
9727 @node Emphasis and monospace, Horizontal rules, Footnote markup, Structural markup elements
9728 @subheading Emphasis and monospace
9729
9730 @cindex underlined text, markup rules
9731 @cindex bold text, markup rules
9732 @cindex italic text, markup rules
9733 @cindex verbatim text, markup rules
9734 @cindex code text, markup rules
9735 @cindex strike-through text, markup rules
9736 @vindex org-fontify-emphasized-text
9737 @vindex org-emphasis-regexp-components
9738 @vindex org-emphasis-alist
9739 You can make words @b{*bold*}, @i{/italic/}, _underlined_, @code{=verbatim=}
9740 and @code{~code~}, and, if you must, @samp{+strike-through+}. Text
9741 in the code and verbatim string is not processed for Org mode specific
9742 syntax, it is exported verbatim.
9743
9744 To turn off fontification for marked up text, you can set
9745 @code{org-fontify-emphasized-text} to @code{nil}. To narrow down the list of
9746 available markup syntax, you can customize @code{org-emphasis-alist}. To fine
9747 tune what characters are allowed before and after the markup characters, you
9748 can tweak @code{org-emphasis-regexp-components}. Beware that changing one of
9749 the above variables will no take effect until you reload Org, for which you
9750 may need to restart Emacs.
9751
9752 @node Horizontal rules, Comment lines, Emphasis and monospace, Structural markup elements
9753 @subheading Horizontal rules
9754 @cindex horizontal rules, markup rules
9755 A line consisting of only dashes, and at least 5 of them, will be exported as
9756 a horizontal line.
9757
9758 @node Comment lines, , Horizontal rules, Structural markup elements
9759 @subheading Comment lines
9760 @cindex comment lines
9761 @cindex exporting, not
9762 @cindex #+BEGIN_COMMENT
9763
9764 Lines starting with zero or more whitespace characters followed by one
9765 @samp{#} and a whitespace are treated as comments and will never be exported.
9766 Also entire subtrees starting with the word @samp{COMMENT} will never be
9767 exported. Finally, regions surrounded by @samp{#+BEGIN_COMMENT}
9768 ... @samp{#+END_COMMENT} will not be exported.
9769
9770 @table @kbd
9771 @kindex C-c ;
9772 @item C-c ;
9773 Toggle the COMMENT keyword at the beginning of an entry.
9774 @end table
9775
9776
9777 @node Images and tables, Literal examples, Structural markup elements, Markup
9778 @section Images and Tables
9779
9780 @cindex tables, markup rules
9781 @cindex #+CAPTION
9782 @cindex #+NAME
9783 Both the native Org mode tables (@pxref{Tables}) and tables formatted with
9784 the @file{table.el} package will be exported properly. For Org mode tables,
9785 the lines before the first horizontal separator line will become table header
9786 lines. You can use the following lines somewhere before the table to assign
9787 a caption and a label for cross references, and in the text you can refer to
9788 the object with @code{[[tab:basic-data]]} (@pxref{Internal links}):
9789
9790 @example
9791 #+CAPTION: This is the caption for the next table (or link)
9792 #+NAME: tab:basic-data
9793 | ... | ...|
9794 |-----|----|
9795 @end example
9796
9797 Optionally, the caption can take the form:
9798 @example
9799 #+CAPTION[Caption for list of tables]: Caption for table.
9800 @end example
9801
9802 @cindex inlined images, markup rules
9803 Some back-ends allow you to directly include images into the exported
9804 document. Org does this, if a link to an image files does not have
9805 a description part, for example @code{[[./img/a.jpg]]}. If you wish to
9806 define a caption for the image and maybe a label for internal cross
9807 references, make sure that the link is on a line by itself and precede it
9808 with @code{#+CAPTION} and @code{#+NAME} as follows:
9809
9810 @example
9811 #+CAPTION: This is the caption for the next figure link (or table)
9812 #+NAME: fig:SED-HR4049
9813 [[./img/a.jpg]]
9814 @end example
9815
9816 @noindent
9817 Such images can be displayed within the buffer. @xref{Handling links,the
9818 discussion of image links}.
9819
9820 Even though images and tables are prominent examples of captioned structures,
9821 the same caption mechanism can apply to many others (e.g., @LaTeX{}
9822 equations, source code blocks). Depending on the export back-end, those may
9823 or may not be handled.
9824
9825 @node Literal examples, Include files, Images and tables, Markup
9826 @section Literal examples
9827 @cindex literal examples, markup rules
9828 @cindex code line references, markup rules
9829
9830 You can include literal examples that should not be subjected to
9831 markup. Such examples will be typeset in monospace, so this is well suited
9832 for source code and similar examples.
9833 @cindex #+BEGIN_EXAMPLE
9834
9835 @example
9836 #+BEGIN_EXAMPLE
9837 Some example from a text file.
9838 #+END_EXAMPLE
9839 @end example
9840
9841 Note that such blocks may be @i{indented} in order to align nicely with
9842 indented text and in particular with plain list structure (@pxref{Plain
9843 lists}). For simplicity when using small examples, you can also start the
9844 example lines with a colon followed by a space. There may also be additional
9845 whitespace before the colon:
9846
9847 @example
9848 Here is an example
9849 : Some example from a text file.
9850 @end example
9851
9852 @cindex formatting source code, markup rules
9853 If the example is source code from a programming language, or any other text
9854 that can be marked up by font-lock in Emacs, you can ask for the example to
9855 look like the fontified Emacs buffer@footnote{This works automatically for
9856 the HTML back-end (it requires version 1.34 of the @file{htmlize.el} package,
9857 which is distributed with Org). Fontified code chunks in @LaTeX{} can be
9858 achieved using either the listings or the
9859 @url{http://code.google.com/p/minted, minted,} package. Refer to
9860 @code{org-latex-listings} documentation for details.}. This is done
9861 with the @samp{src} block, where you also need to specify the name of the
9862 major mode that should be used to fontify the example@footnote{Code in
9863 @samp{src} blocks may also be evaluated either interactively or on export.
9864 See @pxref{Working With Source Code} for more information on evaluating code
9865 blocks.}, see @ref{Easy Templates} for shortcuts to easily insert code
9866 blocks.
9867 @cindex #+BEGIN_SRC
9868
9869 @example
9870 #+BEGIN_SRC emacs-lisp
9871 (defun org-xor (a b)
9872 "Exclusive or."
9873 (if a (not b) b))
9874 #+END_SRC
9875 @end example
9876
9877 Both in @code{example} and in @code{src} snippets, you can add a @code{-n}
9878 switch to the end of the @code{BEGIN} line, to get the lines of the example
9879 numbered. If you use a @code{+n} switch, the numbering from the previous
9880 numbered snippet will be continued in the current one. In literal examples,
9881 Org will interpret strings like @samp{(ref:name)} as labels, and use them as
9882 targets for special hyperlinks like @code{[[(name)]]} (i.e., the reference name
9883 enclosed in single parenthesis). In HTML, hovering the mouse over such a
9884 link will remote-highlight the corresponding code line, which is kind of
9885 cool.
9886
9887 You can also add a @code{-r} switch which @i{removes} the labels from the
9888 source code@footnote{Adding @code{-k} to @code{-n -r} will @i{keep} the
9889 labels in the source code while using line numbers for the links, which might
9890 be useful to explain those in an Org mode example code.}. With the @code{-n}
9891 switch, links to these references will be labeled by the line numbers from
9892 the code listing, otherwise links will use the labels with no parentheses.
9893 Here is an example:
9894
9895 @example
9896 #+BEGIN_SRC emacs-lisp -n -r
9897 (save-excursion (ref:sc)
9898 (goto-char (point-min))) (ref:jump)
9899 #+END_SRC
9900 In line [[(sc)]] we remember the current position. [[(jump)][Line (jump)]]
9901 jumps to point-min.
9902 @end example
9903
9904 @vindex org-coderef-label-format
9905 If the syntax for the label format conflicts with the language syntax, use a
9906 @code{-l} switch to change the format, for example @samp{#+BEGIN_SRC pascal
9907 -n -r -l "((%s))"}. See also the variable @code{org-coderef-label-format}.
9908
9909 HTML export also allows examples to be published as text areas (@pxref{Text
9910 areas in HTML export}).
9911
9912 Because the @code{#+BEGIN_...} and @code{#+END_...} patterns need to be added
9913 so often, shortcuts are provided using the Easy Templates facility
9914 (@pxref{Easy Templates}).
9915
9916 @table @kbd
9917 @kindex C-c '
9918 @item C-c '
9919 Edit the source code example at point in its native mode. This works by
9920 switching to a temporary buffer with the source code. You need to exit by
9921 pressing @kbd{C-c '} again@footnote{Upon exit, lines starting with @samp{*},
9922 @samp{,*}, @samp{#+} and @samp{,#+} will get a comma prepended, to keep them
9923 from being interpreted by Org as outline nodes or special syntax. These
9924 commas will be stripped for editing with @kbd{C-c '}, and also for export.}.
9925 The edited version will then replace the old version in the Org buffer.
9926 Fixed-width regions (where each line starts with a colon followed by a space)
9927 will be edited using @code{artist-mode}@footnote{You may select
9928 a different-mode with the variable @code{org-edit-fixed-width-region-mode}.}
9929 to allow creating ASCII drawings easily. Using this command in an empty line
9930 will create a new fixed-width region.
9931 @kindex C-c l
9932 @item C-c l
9933 Calling @code{org-store-link} while editing a source code example in a
9934 temporary buffer created with @kbd{C-c '} will prompt for a label. Make sure
9935 that it is unique in the current buffer, and insert it with the proper
9936 formatting like @samp{(ref:label)} at the end of the current line. Then the
9937 label is stored as a link @samp{(label)}, for retrieval with @kbd{C-c C-l}.
9938 @end table
9939
9940
9941 @node Include files, Index entries, Literal examples, Markup
9942 @section Include files
9943 @cindex include files, markup rules
9944
9945 During export, you can include the content of another file. For example, to
9946 include your @file{.emacs} file, you could use:
9947 @cindex #+INCLUDE
9948
9949 @example
9950 #+INCLUDE: "~/.emacs" src emacs-lisp
9951 @end example
9952
9953 @noindent
9954 The optional second and third parameter are the markup (e.g., @samp{quote},
9955 @samp{example}, or @samp{src}), and, if the markup is @samp{src}, the
9956 language for formatting the contents. The markup is optional; if it is not
9957 given, the text will be assumed to be in Org mode format and will be
9958 processed normally.
9959
9960 Contents of the included file will belong to the same structure (headline,
9961 item) containing the @code{INCLUDE} keyword. In particular, headlines within
9962 the file will become children of the current section. That behavior can be
9963 changed by providing an additional keyword parameter, @code{:minlevel}. In
9964 that case, all headlines in the included file will be shifted so the one with
9965 the lowest level reaches that specified level. For example, to make a file
9966 become a sibling of the current top-level headline, use
9967
9968 @example
9969 #+INCLUDE: "~/my-book/chapter2.org" :minlevel 1
9970 @end example
9971
9972 You can also include a portion of a file by specifying a lines range using
9973 the @code{:lines} parameter. The line at the upper end of the range will not
9974 be included. The start and/or the end of the range may be omitted to use the
9975 obvious defaults.
9976
9977 @example
9978 #+INCLUDE: "~/.emacs" :lines "5-10" @r{Include lines 5 to 10, 10 excluded}
9979 #+INCLUDE: "~/.emacs" :lines "-10" @r{Include lines 1 to 10, 10 excluded}
9980 #+INCLUDE: "~/.emacs" :lines "10-" @r{Include lines from 10 to EOF}
9981 @end example
9982
9983 @table @kbd
9984 @kindex C-c '
9985 @item C-c '
9986 Visit the include file at point.
9987 @end table
9988
9989 @node Index entries, Macro replacement, Include files, Markup
9990 @section Index entries
9991 @cindex index entries, for publishing
9992
9993 You can specify entries that will be used for generating an index during
9994 publishing. This is done by lines starting with @code{#+INDEX}. An entry
9995 the contains an exclamation mark will create a sub item. See @ref{Generating
9996 an index} for more information.
9997
9998 @example
9999 * Curriculum Vitae
10000 #+INDEX: CV
10001 #+INDEX: Application!CV
10002 @end example
10003
10004
10005
10006
10007 @node Macro replacement, Embedded @LaTeX{}, Index entries, Markup
10008 @section Macro replacement
10009 @cindex macro replacement, during export
10010 @cindex #+MACRO
10011
10012 You can define text snippets with
10013
10014 @example
10015 #+MACRO: name replacement text $1, $2 are arguments
10016 @end example
10017
10018 @noindent which can be referenced in
10019 paragraphs, verse blocks, table cells and some keywords with
10020 @code{@{@{@{name(arg1,arg2)@}@}@}}@footnote{Since commas separate arguments,
10021 commas within arguments have to be escaped with a backslash character.
10022 Conversely, backslash characters before a comma, and only them, need to be
10023 escaped with another backslash character.}. In addition to defined macros,
10024 @code{@{@{@{title@}@}@}}, @code{@{@{@{author@}@}@}}, etc., will reference
10025 information set by the @code{#+TITLE:}, @code{#+AUTHOR:}, and similar lines.
10026 Also, @code{@{@{@{time(@var{FORMAT})@}@}@}} and
10027 @code{@{@{@{modification-time(@var{FORMAT})@}@}@}} refer to current date time
10028 and to the modification time of the file being exported, respectively.
10029 @var{FORMAT} should be a format string understood by
10030 @code{format-time-string}.
10031
10032 Macro expansion takes place during export.
10033
10034
10035 @node Embedded @LaTeX{}, Special blocks, Macro replacement, Markup
10036 @section Embedded @LaTeX{}
10037 @cindex @TeX{} interpretation
10038 @cindex @LaTeX{} interpretation
10039
10040 Plain ASCII is normally sufficient for almost all note taking. Exceptions
10041 include scientific notes, which often require mathematical symbols and the
10042 occasional formula. @LaTeX{}@footnote{@LaTeX{} is a macro system based on
10043 Donald E. Knuth's @TeX{} system. Many of the features described here as
10044 ``@LaTeX{}'' are really from @TeX{}, but for simplicity I am blurring this
10045 distinction.} is widely used to typeset scientific documents. Org mode
10046 supports embedding @LaTeX{} code into its files, because many academics are
10047 used to writing and reading @LaTeX{} source code, and because it can be
10048 readily processed to produce pretty output for a number of export back-ends.
10049
10050 @menu
10051 * Special symbols:: Greek letters and other symbols
10052 * Subscripts and superscripts:: Simple syntax for raising/lowering text
10053 * @LaTeX{} fragments:: Complex formulas made easy
10054 * Previewing @LaTeX{} fragments:: What will this snippet look like?
10055 * CDLaTeX mode:: Speed up entering of formulas
10056 @end menu
10057
10058 @node Special symbols, Subscripts and superscripts, Embedded @LaTeX{}, Embedded @LaTeX{}
10059 @subsection Special symbols
10060 @cindex math symbols
10061 @cindex special symbols
10062 @cindex @TeX{} macros
10063 @cindex @LaTeX{} fragments, markup rules
10064 @cindex HTML entities
10065 @cindex @LaTeX{} entities
10066
10067 You can use @LaTeX{}-like syntax to insert special symbols like @samp{\alpha}
10068 to indicate the Greek letter, or @samp{\to} to indicate an arrow. Completion
10069 for these symbols is available, just type @samp{\} and maybe a few letters,
10070 and press @kbd{M-@key{TAB}} to see possible completions. Unlike @LaTeX{}
10071 code, Org mode allows these symbols to be present without surrounding math
10072 delimiters, for example:
10073
10074 @example
10075 Angles are written as Greek letters \alpha, \beta and \gamma.
10076 @end example
10077
10078 @vindex org-entities
10079 During export, these symbols will be transformed into the native format of
10080 the exporter back-end. Strings like @code{\alpha} will be exported as
10081 @code{&alpha;} in the HTML output, and as @code{$\alpha$} in the @LaTeX{}
10082 output. Similarly, @code{\nbsp} will become @code{&nbsp;} in HTML and
10083 @code{~} in @LaTeX{}. If you need such a symbol inside a word, terminate it
10084 like this: @samp{\Aacute@{@}stor}.
10085
10086 A large number of entities is provided, with names taken from both HTML and
10087 @LaTeX{}; see the variable @code{org-entities} for the complete list.
10088 @samp{\-} is treated as a shy hyphen, and @samp{--}, @samp{---}, and
10089 @samp{...} are all converted into special commands creating hyphens of
10090 different lengths or a compact set of dots.
10091
10092 If you would like to see entities displayed as UTF-8 characters, use the
10093 following command@footnote{You can turn this on by default by setting the
10094 variable @code{org-pretty-entities}, or on a per-file base with the
10095 @code{#+STARTUP} option @code{entitiespretty}.}:
10096
10097 @table @kbd
10098 @cindex @code{entitiespretty}, STARTUP keyword
10099 @kindex C-c C-x \
10100 @item C-c C-x \
10101 Toggle display of entities as UTF-8 characters. This does not change the
10102 buffer content which remains plain ASCII, but it overlays the UTF-8 character
10103 for display purposes only.
10104 @end table
10105
10106 @node Subscripts and superscripts, @LaTeX{} fragments, Special symbols, Embedded @LaTeX{}
10107 @subsection Subscripts and superscripts
10108 @cindex subscript
10109 @cindex superscript
10110
10111 Just like in @LaTeX{}, @samp{^} and @samp{_} are used to indicate super- and
10112 subscripts. Again, these can be used without embedding them in math-mode
10113 delimiters. To increase the readability of ASCII text, it is not necessary
10114 (but OK) to surround multi-character sub- and superscripts with curly braces.
10115 For example
10116
10117 @example
10118 The mass of the sun is M_sun = 1.989 x 10^30 kg. The radius of
10119 the sun is R_@{sun@} = 6.96 x 10^8 m.
10120 @end example
10121
10122 @vindex org-use-sub-superscripts
10123 If you write a text where the underscore is often used in a different
10124 context, Org's convention to always interpret these as subscripts can get in
10125 your way. Configure the variable @code{org-use-sub-superscripts} to change
10126 this convention. For example, when setting this variable to @code{@{@}},
10127 @samp{a_b} will not be interpreted as a subscript, but @samp{a_@{b@}} will.
10128
10129 @table @kbd
10130 @kindex C-c C-x \
10131 @item C-c C-x \
10132 In addition to showing entities as UTF-8 characters, this command will also
10133 format sub- and superscripts in a WYSIWYM way.
10134 @end table
10135
10136 @node @LaTeX{} fragments, Previewing @LaTeX{} fragments, Subscripts and superscripts, Embedded @LaTeX{}
10137 @subsection @LaTeX{} fragments
10138 @cindex @LaTeX{} fragments
10139
10140 @vindex org-format-latex-header
10141 Going beyond symbols and sub- and superscripts, a full formula language is
10142 needed. Org mode can contain @LaTeX{} math fragments, and it supports ways
10143 to process these for several export back-ends. When exporting to @LaTeX{},
10144 the code is obviously left as it is. When exporting to HTML, Org invokes the
10145 @uref{http://www.mathjax.org, MathJax library} (@pxref{Math formatting in
10146 HTML export}) to process and display the math@footnote{If you plan to use
10147 this regularly or on pages with significant page views, you should install
10148 @file{MathJax} on your own server in order to limit the load of our server.}.
10149 Finally, it can also process the mathematical expressions into
10150 images@footnote{For this to work you need to be on a system with a working
10151 @LaTeX{} installation. You also need the @file{dvipng} program or the
10152 @file{convert}, respectively available at
10153 @url{http://sourceforge.net/projects/dvipng/} and from the @file{imagemagick}
10154 suite. The @LaTeX{} header that will be used when processing a fragment can
10155 be configured with the variable @code{org-format-latex-header}.} that can be
10156 displayed in a browser.
10157
10158 @LaTeX{} fragments don't need any special marking at all. The following
10159 snippets will be identified as @LaTeX{} source code:
10160 @itemize @bullet
10161 @item
10162 Environments of any kind@footnote{When @file{MathJax} is used, only the
10163 environments recognized by @file{MathJax} will be processed. When
10164 @file{dvipng} program or @file{imagemagick} suite is used to create images,
10165 any @LaTeX{} environment will be handled.}. The only requirement is that the
10166 @code{\begin} and @code{\end} statements appear on a new line, at the
10167 beginning of the line or after whitespaces only.
10168 @item
10169 Text within the usual @LaTeX{} math delimiters. To avoid conflicts with
10170 currency specifications, single @samp{$} characters are only recognized as
10171 math delimiters if the enclosed text contains at most two line breaks, is
10172 directly attached to the @samp{$} characters with no whitespace in between,
10173 and if the closing @samp{$} is followed by whitespace, punctuation or a dash.
10174 For the other delimiters, there is no such restriction, so when in doubt, use
10175 @samp{\(...\)} as inline math delimiters.
10176 @end itemize
10177
10178 @noindent For example:
10179
10180 @example
10181 \begin@{equation@}
10182 x=\sqrt@{b@}
10183 \end@{equation@}
10184
10185 If $a^2=b$ and \( b=2 \), then the solution must be
10186 either $$ a=+\sqrt@{2@} $$ or \[ a=-\sqrt@{2@} \].
10187 @end example
10188
10189 @c FIXME
10190 @c @noindent
10191 @c @vindex org-format-latex-options
10192 @c If you need any of the delimiter ASCII sequences for other purposes, you
10193 @c can configure the option @code{org-format-latex-options} to deselect the
10194 @c ones you do not wish to have interpreted by the @LaTeX{} converter.
10195
10196 @vindex org-export-with-latex
10197 @LaTeX{} processing can be configured with the variable
10198 @code{org-export-with-latex}. The default setting is @code{t} which means
10199 @file{MathJax} for HTML, and no processing for ASCII and @LaTeX{} back-ends.
10200 You can also set this variable on a per-file basis using one of these
10201 lines:
10202
10203 @example
10204 #+OPTIONS: tex:t @r{Do the right thing automatically (MathJax)}
10205 #+OPTIONS: tex:nil @r{Do not process @LaTeX{} fragments at all}
10206 #+OPTIONS: tex:verbatim @r{Verbatim export, for jsMath or so}
10207 @end example
10208
10209 @node Previewing @LaTeX{} fragments, CDLaTeX mode, @LaTeX{} fragments, Embedded @LaTeX{}
10210 @subsection Previewing @LaTeX{} fragments
10211 @cindex @LaTeX{} fragments, preview
10212
10213 @vindex org-latex-create-formula-image-program
10214 If you have @file{dvipng} or @file{imagemagick} installed@footnote{Choose the
10215 converter by setting the variable
10216 @code{org-latex-create-formula-image-program} accordingly.}, @LaTeX{}
10217 fragments can be processed to produce preview images of the typeset
10218 expressions:
10219
10220 @table @kbd
10221 @kindex C-c C-x C-l
10222 @item C-c C-x C-l
10223 Produce a preview image of the @LaTeX{} fragment at point and overlay it
10224 over the source code. If there is no fragment at point, process all
10225 fragments in the current entry (between two headlines). When called
10226 with a prefix argument, process the entire subtree. When called with
10227 two prefix arguments, or when the cursor is before the first headline,
10228 process the entire buffer.
10229 @kindex C-c C-c
10230 @item C-c C-c
10231 Remove the overlay preview images.
10232 @end table
10233
10234 @vindex org-format-latex-options
10235 You can customize the variable @code{org-format-latex-options} to influence
10236 some aspects of the preview. In particular, the @code{:scale} (and for HTML
10237 export, @code{:html-scale}) property can be used to adjust the size of the
10238 preview images.
10239
10240 @vindex org-startup-with-latex-preview
10241 You can turn on the previewing of all @LaTeX{} fragments in a file with
10242
10243 @example
10244 #+STARTUP: latexpreview
10245 @end example
10246
10247 To disable it, simply use
10248
10249 @example
10250 #+STARTUP: nolatexpreview
10251 @end example
10252
10253 @node CDLaTeX mode, , Previewing @LaTeX{} fragments, Embedded @LaTeX{}
10254 @subsection Using CD@LaTeX{} to enter math
10255 @cindex CD@LaTeX{}
10256
10257 CD@LaTeX{} mode is a minor mode that is normally used in combination with a
10258 major @LaTeX{} mode like AUC@TeX{} in order to speed-up insertion of
10259 environments and math templates. Inside Org mode, you can make use of
10260 some of the features of CD@LaTeX{} mode. You need to install
10261 @file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
10262 AUC@TeX{}) from @url{http://www.astro.uva.nl/~dominik/Tools/cdlatex}.
10263 Don't use CD@LaTeX{} mode itself under Org mode, but use the light
10264 version @code{org-cdlatex-mode} that comes as part of Org mode. Turn it
10265 on for the current buffer with @kbd{M-x org-cdlatex-mode RET}, or for all
10266 Org files with
10267
10268 @lisp
10269 (add-hook 'org-mode-hook 'turn-on-org-cdlatex)
10270 @end lisp
10271
10272 When this mode is enabled, the following features are present (for more
10273 details see the documentation of CD@LaTeX{} mode):
10274 @itemize @bullet
10275 @kindex C-c @{
10276 @item
10277 Environment templates can be inserted with @kbd{C-c @{}.
10278 @item
10279 @kindex @key{TAB}
10280 The @key{TAB} key will do template expansion if the cursor is inside a
10281 @LaTeX{} fragment@footnote{Org mode has a method to test if the cursor is
10282 inside such a fragment, see the documentation of the function
10283 @code{org-inside-LaTeX-fragment-p}.}. For example, @key{TAB} will
10284 expand @code{fr} to @code{\frac@{@}@{@}} and position the cursor
10285 correctly inside the first brace. Another @key{TAB} will get you into
10286 the second brace. Even outside fragments, @key{TAB} will expand
10287 environment abbreviations at the beginning of a line. For example, if
10288 you write @samp{equ} at the beginning of a line and press @key{TAB},
10289 this abbreviation will be expanded to an @code{equation} environment.
10290 To get a list of all abbreviations, type @kbd{M-x cdlatex-command-help RET}.
10291 @item
10292 @kindex _
10293 @kindex ^
10294 @vindex cdlatex-simplify-sub-super-scripts
10295 Pressing @kbd{_} and @kbd{^} inside a @LaTeX{} fragment will insert these
10296 characters together with a pair of braces. If you use @key{TAB} to move
10297 out of the braces, and if the braces surround only a single character or
10298 macro, they are removed again (depending on the variable
10299 @code{cdlatex-simplify-sub-super-scripts}).
10300 @item
10301 @kindex `
10302 Pressing the backquote @kbd{`} followed by a character inserts math
10303 macros, also outside @LaTeX{} fragments. If you wait more than 1.5 seconds
10304 after the backquote, a help window will pop up.
10305 @item
10306 @kindex '
10307 Pressing the single-quote @kbd{'} followed by another character modifies
10308 the symbol before point with an accent or a font. If you wait more than
10309 1.5 seconds after the single-quote, a help window will pop up. Character
10310 modification will work only inside @LaTeX{} fragments; outside the quote
10311 is normal.
10312 @end itemize
10313
10314 @node Special blocks, , Embedded @LaTeX{}, Markup
10315 @section Special blocks
10316 @cindex Special blocks
10317
10318 Org syntax includes pre-defined blocks (@pxref{Paragraphs} and @ref{Literal
10319 examples}). It is also possible to create blocks containing raw code
10320 targeted at a specific back-ends (e.g., @samp{#+BEGIN_LATEX}).
10321
10322 Any other block is a @emph{special block}.
10323
10324 For example, @samp{#+BEGIN_ABSTRACT} and @samp{#+BEGIN_VIDEO} are special
10325 blocks. The first one is useful when exporting to @LaTeX{}, the second one
10326 when exporting to HTML5.
10327
10328 Each export back-end decides if they should be exported, and how. When the
10329 block is ignored, its contents are still exported, as if the opening and
10330 closing block lines were not there. For example, when exporting a
10331 @samp{#+BEGIN_TEST} block, HTML back-end wraps its contents within a
10332 @samp{<div name="test">} tag.
10333
10334 Refer to back-end specific documentation for more information.
10335
10336 @node Exporting, Publishing, Markup, Top
10337 @chapter Exporting
10338 @cindex exporting
10339
10340 The Org mode export facilities can be used to export Org documents or parts
10341 of Org documents to a variety of other formats. In addition, these
10342 facilities can be used with @code{orgtbl-mode} and/or @code{orgstruct-mode}
10343 in foreign buffers so you can author tables and lists in Org syntax and
10344 convert them in place to the target language.
10345
10346 ASCII export produces a readable and simple version of an Org file for
10347 printing and sharing notes. HTML export allows you to easily publish notes
10348 on the web, or to build full-fledged websites. @LaTeX{} export lets you use
10349 Org mode and its structured editing functions to create arbitrarily complex
10350 @LaTeX{} files for any kind of document. OpenDocument Text (ODT) export
10351 allows seamless collaboration across organizational boundaries. Markdown
10352 export lets you seamlessly collaborate with other developers. Finally, iCal
10353 export can extract entries with deadlines or appointments to produce a file
10354 in the iCalendar format.
10355
10356 @menu
10357 * The Export Dispatcher:: The main exporter interface
10358 * Export back-ends:: Built-in export formats
10359 * Export settings:: Generic export settings
10360 * ASCII/Latin-1/UTF-8 export:: Exporting to flat files with encoding
10361 * Beamer export:: Exporting as a Beamer presentation
10362 * HTML export:: Exporting to HTML
10363 * @LaTeX{} and PDF export:: Exporting to @LaTeX{}, and processing to PDF
10364 * Markdown export:: Exporting to Markdown
10365 * OpenDocument Text export:: Exporting to OpenDocument Text
10366 * Org export:: Exporting to Org
10367 * iCalendar export:: Exporting to iCalendar
10368 * Other built-in back-ends:: Exporting to @code{Texinfo} or a man page
10369 * Export in foreign buffers:: Author tables and lists in Org syntax
10370 * Advanced configuration:: Fine-tuning the export output
10371 @end menu
10372
10373 @node The Export Dispatcher, Export back-ends, Exporting, Exporting
10374 @section The Export Dispatcher
10375 @vindex org-export-dispatch-use-expert-ui
10376 @cindex Export, dispatcher
10377
10378 The main entry point for export related tasks is the dispatcher, a
10379 hierarchical menu from which it is possible to select an export format and
10380 toggle export options@footnote{It is also possible to use a less intrusive
10381 interface by setting @code{org-export-dispatch-use-expert-ui} to a
10382 non-@code{nil} value. In that case, only a prompt is visible from the
10383 minibuffer. From there one can still switch back to regular menu by pressing
10384 @key{?}.} from which it is possible to select an export format and to toggle
10385 export options.
10386
10387 @c @quotation
10388 @table @asis
10389 @orgcmd{C-c C-e,org-export-dispatch}
10390
10391 Dispatch for export and publishing commands. When called with a @kbd{C-u}
10392 prefix argument, repeat the last export command on the current buffer while
10393 preserving toggled options. If the current buffer hasn't changed and subtree
10394 export was activated, the command will affect that same subtree.
10395 @end table
10396 @c @end quotation
10397
10398 Normally the entire buffer is exported, but if there is an active region
10399 only that part of the buffer will be exported.
10400
10401 Several export options (@pxref{Export settings}) can be toggled from the
10402 export dispatcher with the following key combinations:
10403
10404 @table @kbd
10405 @item C-a
10406 @vindex org-export-async-init-file
10407 Toggle asynchronous export. Asynchronous export uses an external Emacs
10408 process that is configured with a specified initialization file.
10409
10410 While exporting asynchronously, the output is not displayed, but stored in
10411 a place called ``the export stack''. This stack can be displayed by calling
10412 the dispatcher with a double @kbd{C-u} prefix argument, or with @kbd{&} key
10413 from the dispatcher menu.
10414
10415 @vindex org-export-in-background
10416 To make this behavior the default, customize the variable
10417 @code{org-export-in-background}.
10418
10419 @item C-b
10420 Toggle body-only export. Its effect depends on the back-end used.
10421 Typically, if the back-end has a header section (like @code{<head>...</head>}
10422 in the HTML back-end), a body-only export will not include this header.
10423
10424 @item C-s
10425 @vindex org-export-initial-scope
10426 Toggle subtree export. The top heading becomes the document title.
10427
10428 You can change the default state of this option by setting
10429 @code{org-export-initial-scope}.
10430
10431 @item C-v
10432 Toggle visible-only export. Only export the text that is currently
10433 visible, i.e. not hidden by outline visibility in the buffer.
10434
10435 @end table
10436
10437 @vindex org-export-copy-to-kill-ring
10438 With the exception of asynchronous export, a successful export process writes
10439 its output to the kill-ring. You can configure this behavior by altering the
10440 option @code{org-export-copy-to-kill-ring}.
10441
10442 @node Export back-ends, Export settings, The Export Dispatcher, Exporting
10443 @section Export back-ends
10444 @cindex Export, back-ends
10445
10446 An export back-end is a library that translates Org syntax into a foreign
10447 format. An export format is not available until the proper back-end has been
10448 loaded.
10449
10450 @vindex org-export-backends
10451 By default, the following four back-ends are loaded: @code{ascii},
10452 @code{html}, @code{icalendar} and @code{latex}. It is possible to add more
10453 (or remove some) by customizing @code{org-export-backends}.
10454
10455 Built-in back-ends include:
10456
10457 @itemize
10458 @item ascii (ASCII format)
10459 @item beamer (@LaTeX{} Beamer format)
10460 @item html (HTML format)
10461 @item icalendar (iCalendar format)
10462 @item latex (@LaTeX{} format)
10463 @item man (Man page format)
10464 @item md (Markdown format)
10465 @item odt (OpenDocument Text format)
10466 @item org (Org format)
10467 @item texinfo (Texinfo format)
10468 @end itemize
10469
10470 Other back-ends might be found in the @code{contrib/} directory
10471 (@pxref{Installation}).
10472
10473 @node Export settings, ASCII/Latin-1/UTF-8 export, Export back-ends, Exporting
10474 @section Export settings
10475 @cindex Export, settings
10476
10477 Export options can be set: globally with variables; for an individual file by
10478 making variables buffer-local with in-buffer settings (@pxref{In-buffer
10479 settings}), by setting individual keywords, or by specifying them in a
10480 compact form with the @code{#+OPTIONS} keyword; or for a tree by setting
10481 properties (@pxref{Properties and Columns}). Options set at a specific level
10482 override options set at a more general level.
10483
10484 @cindex #+SETUPFILE
10485 In-buffer settings may appear anywhere in the file, either directly or
10486 indirectly through a file included using @samp{#+SETUPFILE: filename} syntax.
10487 Option keyword sets tailored to a particular back-end can be inserted from
10488 the export dispatcher (@pxref{The Export Dispatcher}) using the @code{Insert
10489 template} command by pressing @key{#}. To insert keywords individually,
10490 a good way to make sure the keyword is correct is to type @code{#+} and then
10491 to use @kbd{M-<TAB>} for completion.
10492
10493 The export keywords available for every back-end, and their equivalent global
10494 variables, include:
10495
10496 @table @samp
10497 @item AUTHOR
10498 @vindex user-full-name
10499 The document author (@code{user-full-name}).
10500
10501 @item CREATOR
10502 @vindex org-export-creator-string
10503 Entity responsible for output generation (@code{org-export-creator-string}).
10504
10505 @item DATE
10506 @vindex org-export-date-timestamp-format
10507 A date or a time-stamp@footnote{The variable
10508 @code{org-export-date-timestamp-format} defines how this time-stamp will be
10509 exported.}.
10510
10511 @item DESCRIPTION
10512 The document description. Back-ends handle it as they see fit (e.g., for the
10513 XHTML meta tag), if at all. You can use several such keywords for long
10514 descriptions.
10515
10516 @item EMAIL
10517 @vindex user-mail-address
10518 The email address (@code{user-mail-address}).
10519
10520 @item KEYWORDS
10521 The keywords defining the contents of the document. Back-ends handle it as
10522 they see fit (e.g., for the XHTML meta tag), if at all. You can use several
10523 such keywords if the list is long.
10524
10525 @item LANGUAGE
10526 @vindex org-export-default-language
10527 The language used for translating some strings
10528 (@code{org-export-default-language}). E.g., @samp{#+LANGUAGE: fr} will tell
10529 Org to translate @emph{File} (english) into @emph{Fichier} (french) in the
10530 clocktable.
10531
10532 @item SELECT_TAGS
10533 @vindex org-export-select-tags
10534 The tags that select a tree for export (@code{org-export-select-tags}). The
10535 default value is @code{:export:}. Within a subtree tagged with
10536 @code{:export:}, you can still exclude entries with @code{:noexport:} (see
10537 below). When headlines are selectively exported with @code{:export:}
10538 anywhere in a file, text before the first headline is ignored.
10539
10540 @item EXCLUDE_TAGS
10541 The tags that exclude a tree from export (@code{org-export-exclude-tags}).
10542 The default value is @code{:noexport:}. Entries with the @code{:noexport:}
10543 tag will be unconditionally excluded from the export, even if they have an
10544 @code{:export:} tag.
10545
10546 @item TITLE
10547 The title to be shown (otherwise derived from buffer's name). You can use
10548 several such keywords for long titles.
10549 @end table
10550
10551 The @code{#+OPTIONS} keyword is a compact@footnote{If you want to configure
10552 many options this way, you can use several @code{#+OPTIONS} lines.} form that
10553 recognizes the following arguments:
10554
10555 @table @code
10556 @item ':
10557 @vindex org-export-with-smart-quotes
10558 Toggle smart quotes (@code{org-export-with-smart-quotes}).
10559
10560 @item *:
10561 Toggle emphasized text (@code{org-export-with-emphasize}).
10562
10563 @item -:
10564 @vindex org-export-with-special-strings
10565 Toggle conversion of special strings
10566 (@code{org-export-with-special-strings}).
10567
10568 @item ::
10569 @vindex org-export-with-fixed-width
10570 Toggle fixed-width sections
10571 (@code{org-export-with-fixed-width}).
10572
10573 @item <:
10574 @vindex org-export-with-timestamps
10575 Toggle inclusion of any time/date active/inactive stamps
10576 (@code{org-export-with-timestamps}).
10577
10578 @item :
10579 @vindex org-export-preserve-breaks
10580 Toggle line-break-preservation (@code{org-export-preserve-breaks}).
10581
10582 @item ^:
10583 @vindex org-export-with-sub-superscripts
10584 Toggle @TeX{}-like syntax for sub- and superscripts. If you write "^:@{@}",
10585 @samp{a_@{b@}} will be interpreted, but the simple @samp{a_b} will be left as
10586 it is (@code{org-export-with-sub-superscripts}).
10587
10588 @item arch:
10589 @vindex org-export-with-archived-trees
10590 Configure export of archived trees. Can be set to @code{headline} to only
10591 process the headline, skipping its contents
10592 (@code{org-export-with-archived-trees}).
10593
10594 @item author:
10595 @vindex org-export-with-author
10596 Toggle inclusion of author name into exported file
10597 (@code{org-export-with-author}).
10598
10599 @item c:
10600 @vindex org-export-with-clocks
10601 Toggle inclusion of CLOCK keywords (@code{org-export-with-clocks}).
10602
10603 @item creator:
10604 @vindex org-export-with-creator
10605 Configure inclusion of creator info into exported file. It may be set to
10606 @code{comment} (@code{org-export-with-creator}).
10607
10608 @item d:
10609 @vindex org-export-with-drawers
10610 Toggle inclusion of drawers, or list drawers to include
10611 (@code{org-export-with-drawers}).
10612
10613 @item e:
10614 @vindex org-export-with-entities
10615 Toggle inclusion of entities (@code{org-export-with-entities}).
10616
10617 @item email:
10618 @vindex org-export-with-email
10619 Toggle inclusion of the author's e-mail into exported file
10620 (@code{org-export-with-email}).
10621
10622 @item f:
10623 @vindex org-export-with-footnotes
10624 Toggle the inclusion of footnotes (@code{org-export-with-footnotes}).
10625
10626 @item H:
10627 @vindex org-export-headline-levels
10628 Set the number of headline levels for export
10629 (@code{org-export-headline-levels}). Below that level, headlines are treated
10630 differently. In most back-ends, they become list items.
10631
10632 @item inline:
10633 @vindex org-export-with-inlinetasks
10634 Toggle inclusion of inlinetasks (@code{org-export-with-inlinetasks}).
10635
10636 @item num:
10637 @vindex org-export-with-section-numbers
10638 Toggle section-numbers (@code{org-export-with-section-numbers}). It can also
10639 be set to a number @samp{n}, so only headlines at that level or above will be
10640 numbered.
10641
10642 @item p:
10643 @vindex org-export-with-planning
10644 Toggle export of planning information (@code{org-export-with-planning}).
10645 ``Planning information'' is the line containing the @code{SCHEDULED:}, the
10646 @code{DEADLINE:} or the @code{CLOSED:} cookies or a combination of them.
10647
10648 @item pri:
10649 @vindex org-export-with-priority
10650 Toggle inclusion of priority cookies (@code{org-export-with-priority}).
10651
10652 @item stat:
10653 @vindex org-export-with-statistics-cookies
10654 Toggle inclusion of statistics cookies
10655 (@code{org-export-with-statistics-cookies}).
10656
10657 @item tags:
10658 @vindex org-export-with-tags
10659 Toggle inclusion of tags, may also be @code{not-in-toc}
10660 (@code{org-export-with-tags}).
10661
10662 @item tasks:
10663 @vindex org-export-with-tasks
10664 Toggle inclusion of tasks (TODO items), can be @code{nil} to remove all
10665 tasks, @code{todo} to remove DONE tasks, or a list of keywords to keep
10666 (@code{org-export-with-tasks}).
10667
10668 @item tex:
10669 @vindex org-export-with-latex
10670 Configure export of @LaTeX{} fragments and environments. It may be set to
10671 @code{verbatim} (@code{org-export-with-latex}).
10672
10673 @item timestamp:
10674 @vindex org-export-time-stamp-file
10675 Toggle inclusion of the creation time into exported file
10676 (@code{org-export-time-stamp-file}).
10677
10678 @item toc:
10679 @vindex org-export-with-toc
10680 Toggle inclusion of the table of contents, or set the level limit
10681 (@code{org-export-with-toc}).
10682
10683 @item todo:
10684 @vindex org-export-with-todo-keywords
10685 Toggle inclusion of TODO keywords into exported text
10686 (@code{org-export-with-todo-keywords}).
10687
10688 @item |:
10689 @vindex org-export-with-tables
10690 Toggle inclusion of tables (@code{org-export-with-tables}).
10691 @end table
10692
10693 @cindex property, EXPORT_FILE_NAME
10694 When exporting only a subtree, each of the previous keywords@footnote{With
10695 the exception of @samp{SETUPFILE}.} can be overridden locally by special node
10696 properties. These begin with @samp{EXPORT_}, followed by the name of the
10697 keyword they supplant. For example, @samp{DATE} and @samp{OPTIONS} keywords
10698 become, respectively, @samp{EXPORT_DATE} and @samp{EXPORT_OPTIONS}
10699 properties. Subtree export also supports the self-explicit
10700 @samp{EXPORT_FILE_NAME} property@footnote{There is no buffer-wide equivalent
10701 for this property. The file name in this case is derived from the file
10702 associated to the buffer, if possible, or asked to the user otherwise.}.
10703
10704 @cindex #+BIND
10705 @vindex org-export-allow-bind-keywords
10706 If @code{org-export-allow-bind-keywords} is non-@code{nil}, Emacs variables
10707 can become buffer-local during export by using the BIND keyword. Its syntax
10708 is @samp{#+BIND: variable value}. This is particularly useful for in-buffer
10709 settings that cannot be changed using specific keywords.
10710
10711 @node ASCII/Latin-1/UTF-8 export, Beamer export, Export settings, Exporting
10712 @section ASCII/Latin-1/UTF-8 export
10713 @cindex ASCII export
10714 @cindex Latin-1 export
10715 @cindex UTF-8 export
10716
10717 ASCII export produces a simple and very readable version of an Org mode
10718 file, containing only plain ASCII@. Latin-1 and UTF-8 export augment the file
10719 with special characters and symbols available in these encodings.
10720
10721 @vindex org-ascii-links-to-notes
10722 Links are exported in a footnote-like style, with the descriptive part in the
10723 text and the link in a note before the next heading. See the variable
10724 @code{org-ascii-links-to-notes} for details and other options.
10725
10726 @subheading ASCII export commands
10727
10728 @table @kbd
10729 @orgcmd{C-c C-e t a/l/u,org-ascii-export-to-ascii}
10730 Export as an ASCII file. For an Org file, @file{myfile.org}, the ASCII file
10731 will be @file{myfile.txt}. The file will be overwritten without warning.
10732 When the original file is @file{myfile.txt}, the resulting file becomes
10733 @file{myfile.txt.txt} in order to prevent data loss.
10734 @orgcmd{C-c C-e t A/L/U,org-ascii-export-as-ascii}
10735 Export to a temporary buffer. Do not create a file.
10736 @end table
10737
10738 @subheading Header and sectioning structure
10739
10740 In the exported version, the first three outline levels become headlines,
10741 defining a general document structure. Additional levels are exported as
10742 lists. The transition can also occur at a different level (@pxref{Export
10743 settings}).
10744
10745 @subheading Quoting ASCII text
10746
10747 You can insert text that will only appear when using @code{ASCII} back-end
10748 with the following constructs:
10749
10750 @cindex #+ASCII
10751 @cindex #+BEGIN_ASCII
10752 @example
10753 Text @@@@ascii:and additional text@@@@ within a paragraph.
10754
10755 #+ASCII: Some text
10756
10757 #+BEGIN_ASCII
10758 All lines in this block will appear only when using this back-end.
10759 #+END_ASCII
10760 @end example
10761
10762 @subheading ASCII specific attributes
10763 @cindex #+ATTR_ASCII
10764 @cindex horizontal rules, in ASCII export
10765
10766 @code{ASCII} back-end only understands one attribute, @code{:width}, which
10767 specifies the length, in characters, of a given horizontal rule. It must be
10768 specified using an @code{ATTR_ASCII} line, directly preceding the rule.
10769
10770 @example
10771 #+ATTR_ASCII: :width 10
10772 -----
10773 @end example
10774
10775 @node Beamer export, HTML export, ASCII/Latin-1/UTF-8 export, Exporting
10776 @section Beamer export
10777 @cindex Beamer export
10778
10779 The @LaTeX{} class @emph{Beamer} allows production of high quality
10780 presentations using @LaTeX{} and pdf processing. Org mode has special
10781 support for turning an Org mode file or tree into a Beamer presentation.
10782
10783 @subheading Beamer export commands
10784
10785 @table @kbd
10786 @orgcmd{C-c C-e l b,org-beamer-export-to-latex}
10787 Export as a @LaTeX{} file. For an Org file @file{myfile.org}, the @LaTeX{}
10788 file will be @file{myfile.tex}. The file will be overwritten without
10789 warning.
10790 @orgcmd{C-c C-e l B,org-beamer-export-as-latex}
10791 Export to a temporary buffer. Do not create a file.
10792 @orgcmd{C-c C-e l P,org-beamer-export-to-pdf}
10793 Export as @LaTeX{} and then process to PDF.
10794 @item C-c C-e l O
10795 Export as @LaTeX{} and then process to PDF, then open the resulting PDF file.
10796 @end table
10797
10798 @subheading Sectioning, Frames and Blocks
10799
10800 Any tree with not-too-deep level nesting should in principle be exportable as
10801 a Beamer presentation. Headlines fall into three categories: sectioning
10802 elements, frames and blocks.
10803
10804 @itemize @minus
10805 @item
10806 @vindex org-beamer-frame-level
10807 Headlines become frames when their level is equal to
10808 @code{org-beamer-frame-level} or @code{H} value in an @code{OPTIONS} line
10809 (@pxref{Export settings}).
10810
10811 @cindex property, BEAMER_ENV
10812 Though, if a headline in the current tree has a @code{BEAMER_ENV} property
10813 set to either to @code{frame} or @code{fullframe}, its level overrides the
10814 variable. A @code{fullframe} is a frame with an empty (ignored) title.
10815
10816 @item
10817 @vindex org-beamer-environments-default
10818 @vindex org-beamer-environments-extra
10819 All frame's children become @code{block} environments. Special block types
10820 can be enforced by setting headline's @code{BEAMER_ENV} property@footnote{If
10821 this property is set, the entry will also get a @code{:B_environment:} tag to
10822 make this visible. This tag has no semantic meaning, it is only a visual
10823 aid.} to an appropriate value (see @code{org-beamer-environments-default} for
10824 supported values and @code{org-beamer-environments-extra} for adding more).
10825
10826 @item
10827 @cindex property, BEAMER_REF
10828 As a special case, if the @code{BEAMER_ENV} property is set to either
10829 @code{appendix}, @code{note}, @code{noteNH} or @code{againframe}, the
10830 headline will become, respectively, an appendix, a note (within frame or
10831 between frame, depending on its level), a note with its title ignored or an
10832 @code{\againframe} command. In the latter case, a @code{BEAMER_REF} property
10833 is mandatory in order to refer to the frame being resumed, and contents are
10834 ignored.
10835
10836 Also, a headline with an @code{ignoreheading} environment will have its
10837 contents only inserted in the output. This special value is useful to have
10838 data between frames, or to properly close a @code{column} environment.
10839 @end itemize
10840
10841 @cindex property, BEAMER_ACT
10842 @cindex property, BEAMER_OPT
10843 Headlines also support @code{BEAMER_ACT} and @code{BEAMER_OPT} properties.
10844 The former is translated as an overlay/action specification, or a default
10845 overlay specification when enclosed within square brackets. The latter
10846 specifies options@footnote{The @code{fragile} option is added automatically
10847 if it contains code that requires a verbatim environment, though.} for the
10848 current frame or block. The export back-end will automatically wrap
10849 properties within angular or square brackets when appropriate.
10850
10851 @cindex property, BEAMER_COL
10852 Moreover, headlines handle the @code{BEAMER_COL} property. Its value should
10853 be a decimal number representing the width of the column as a fraction of the
10854 total text width. If the headline has no specific environment, its title
10855 will be ignored and its contents will fill the column created. Otherwise,
10856 the block will fill the whole column and the title will be preserved. Two
10857 contiguous headlines with a non-@code{nil} @code{BEAMER_COL} value share the same
10858 @code{columns} @LaTeX{} environment. It will end before the next headline
10859 without such a property. This environment is generated automatically.
10860 Although, it can also be explicitly created, with a special @code{columns}
10861 value for @code{BEAMER_ENV} property (if it needs to be set up with some
10862 specific options, for example).
10863
10864 @subheading Beamer specific syntax
10865
10866 Beamer back-end is an extension of @LaTeX{} back-end. As such, all @LaTeX{}
10867 specific syntax (e.g., @samp{#+LATEX:} or @samp{#+ATTR_LATEX:}) is
10868 recognized. See @ref{@LaTeX{} and PDF export} for more information.
10869
10870 @cindex #+BEAMER_THEME
10871 @cindex #+BEAMER_COLOR_THEME
10872 @cindex #+BEAMER_FONT_THEME
10873 @cindex #+BEAMER_INNER_THEME
10874 @cindex #+BEAMER_OUTER_THEME
10875 Beamer export introduces a number of keywords to insert code in the
10876 document's header. Four control appearance of the presentation:
10877 @code{#+BEAMER_THEME}, @code{#+BEAMER_COLOR_THEME},
10878 @code{#+BEAMER_FONT_THEME}, @code{#+BEAMER_INNER_THEME} and
10879 @code{#+BEAMER_OUTER_THEME}. All of them accept optional arguments
10880 within square brackets. The last one, @code{#+BEAMER_HEADER}, is more
10881 generic and allows you to append any line of code in the header.
10882
10883 @example
10884 #+BEAMER_THEME: Rochester [height=20pt]
10885 #+BEAMER_COLOR_THEME: spruce
10886 @end example
10887
10888 Table of contents generated from @code{toc:t} @code{OPTION} keyword are
10889 wrapped within a @code{frame} environment. Those generated from a @code{TOC}
10890 keyword (@pxref{Table of contents}) are not. In that case, it is also
10891 possible to specify options, enclosed within square brackets.
10892
10893 @example
10894 #+TOC: headlines [currentsection]
10895 @end example
10896
10897 Beamer specific code can be inserted with the following constructs:
10898
10899 @cindex #+BEAMER
10900 @cindex #+BEGIN_BEAMER
10901 @example
10902 #+BEAMER: \pause
10903
10904 #+BEGIN_BEAMER
10905 All lines in this block will appear only when using this back-end.
10906 #+END_BEAMER
10907
10908 Text @@@@beamer:some code@@@@ within a paragraph.
10909 @end example
10910
10911 In particular, this last example can be used to add overlay specifications to
10912 objects whose type is among @code{bold}, @code{item}, @code{link},
10913 @code{radio-target} and @code{target}, when the value is enclosed within
10914 angular brackets and put at the beginning the object.
10915
10916 @example
10917 A *@@@@beamer:<2->@@@@useful* feature
10918 @end example
10919
10920 @cindex #+ATTR_BEAMER
10921 Eventually, every plain list has support for @code{:environment},
10922 @code{:overlay} and @code{:options} attributes through
10923 @code{ATTR_BEAMER} affiliated keyword. The first one allows the use
10924 of a different environment, the second sets overlay specifications and
10925 the last one inserts optional arguments in current list environment.
10926
10927 @example
10928 #+ATTR_BEAMER: :overlay +-
10929 - item 1
10930 - item 2
10931 @end example
10932
10933 @subheading Editing support
10934
10935 You can turn on a special minor mode @code{org-beamer-mode} for faster
10936 editing with:
10937
10938 @example
10939 #+STARTUP: beamer
10940 @end example
10941
10942 @table @kbd
10943 @orgcmd{C-c C-b,org-beamer-select-environment}
10944 In @code{org-beamer-mode}, this key offers fast selection of a Beamer
10945 environment or the @code{BEAMER_COL} property.
10946 @end table
10947
10948 Also, a template for useful in-buffer settings or properties can be inserted
10949 into the buffer with @kbd{M-x org-beamer-insert-options-template}. Among
10950 other things, this will install a column view format which is very handy for
10951 editing special properties used by Beamer.
10952
10953 @subheading An example
10954
10955 Here is a simple example Org document that is intended for Beamer export.
10956
10957 @smallexample
10958 #+TITLE: Example Presentation
10959 #+AUTHOR: Carsten Dominik
10960 #+OPTIONS: H:2
10961 #+LATEX_CLASS: beamer
10962 #+LATEX_CLASS_OPTIONS: [presentation]
10963 #+BEAMER_THEME: Madrid
10964 #+COLUMNS: %45ITEM %10BEAMER_ENV(Env) %10BEAMER_ACT(Act) %4BEAMER_COL(Col) %8BEAMER_OPT(Opt)
10965
10966 * This is the first structural section
10967
10968 ** Frame 1
10969 *** Thanks to Eric Fraga :B_block:BMCOL:
10970 :PROPERTIES:
10971 :BEAMER_COL: 0.48
10972 :BEAMER_ENV: block
10973 :END:
10974 for the first viable Beamer setup in Org
10975 *** Thanks to everyone else :B_block:BMCOL:
10976 :PROPERTIES:
10977 :BEAMER_COL: 0.48
10978 :BEAMER_ACT: <2->
10979 :BEAMER_ENV: block
10980 :END:
10981 for contributing to the discussion
10982 **** This will be formatted as a beamer note :B_note:
10983 :PROPERTIES:
10984 :BEAMER_env: note
10985 :END:
10986 ** Frame 2 (where we will not use columns)
10987 *** Request
10988 Please test this stuff!
10989 @end smallexample
10990
10991 @node HTML export, @LaTeX{} and PDF export, Beamer export, Exporting
10992 @section HTML export
10993 @cindex HTML export
10994
10995 Org mode contains an HTML (XHTML 1.0 strict) exporter with extensive
10996 HTML formatting, in ways similar to John Gruber's @emph{markdown}
10997 language, but with additional support for tables.
10998
10999 @menu
11000 * HTML Export commands:: How to invoke HTML export
11001 * HTML doctypes:: Org can export to various (X)HTML flavors
11002 * HTML preamble and postamble:: How to insert a preamble and a postamble
11003 * Quoting HTML tags:: Using direct HTML in Org mode
11004 * Links in HTML export:: How links will be interpreted and formatted
11005 * Tables in HTML export:: How to modify the formatting of tables
11006 * Images in HTML export:: How to insert figures into HTML output
11007 * Math formatting in HTML export:: Beautiful math also on the web
11008 * Text areas in HTML export:: An alternative way to show an example
11009 * CSS support:: Changing the appearance of the output
11010 * JavaScript support:: Info and Folding in a web browser
11011 @end menu
11012
11013 @node HTML Export commands, HTML doctypes, HTML export, HTML export
11014 @subsection HTML export commands
11015
11016 @table @kbd
11017 @orgcmd{C-c C-e h h,org-html-export-to-html}
11018 Export as an HTML file. For an Org file @file{myfile.org},
11019 the HTML file will be @file{myfile.html}. The file will be overwritten
11020 without warning.
11021 @kbd{C-c C-e h o}
11022 Export as an HTML file and immediately open it with a browser.
11023 @orgcmd{C-c C-e h H,org-html-export-as-html}
11024 Export to a temporary buffer. Do not create a file.
11025 @end table
11026
11027 @c FIXME Exporting sublevels
11028 @c @cindex headline levels, for exporting
11029 @c In the exported version, the first 3 outline levels will become headlines,
11030 @c defining a general document structure. Additional levels will be exported as
11031 @c itemized lists. If you want that transition to occur at a different level,
11032 @c specify it with a numeric prefix argument. For example,
11033
11034 @c @example
11035 @c @kbd{C-2 C-c C-e b}
11036 @c @end example
11037
11038 @c @noindent
11039 @c creates two levels of headings and does the rest as items.
11040
11041 @node HTML doctypes, HTML preamble and postamble, HTML Export commands, HTML export
11042 @subsection HTML doctypes
11043 @vindex org-html-doctype
11044 @vindex org-html-doctype-alist
11045
11046 Org can export to various (X)HTML flavors.
11047
11048 Setting the variable @code{org-html-doctype} allows you to export to different
11049 (X)HTML variants. The exported HTML will be adjusted according to the syntax
11050 requirements of that variant. You can either set this variable to a doctype
11051 string directly, in which case the exporter will try to adjust the syntax
11052 automatically, or you can use a ready-made doctype. The ready-made options
11053 are:
11054
11055 @itemize
11056 @item
11057 ``html4-strict''
11058 @item
11059 ``html4-transitional''
11060 @item
11061 ``html4-frameset''
11062 @item
11063 ``xhtml-strict''
11064 @item
11065 ``xhtml-transitional''
11066 @item
11067 ``xhtml-frameset''
11068 @item
11069 ``xhtml-11''
11070 @item
11071 ``html5''
11072 @item
11073 ``xhtml5''
11074 @end itemize
11075
11076 See the variable @code{org-html-doctype-alist} for details. The default is
11077 ``xhtml-strict''.
11078
11079 @subsubheading Fancy HTML5 export
11080 @vindex org-html-html5-fancy
11081 @vindex org-html-html5-elements
11082
11083 HTML5 introduces several new element types. By default, Org will not make
11084 use of these element types, but you can set @code{org-html-html5-fancy} to
11085 @code{t} (or set @code{html5-fancy} item in an @code{OPTIONS} line), to
11086 enable a few new block-level elements. These are created using arbitrary
11087 #+BEGIN and #+END blocks. For instance:
11088
11089 @example
11090 #+BEGIN_ASIDE
11091 Lorem ipsum
11092 #+END_ASIDE
11093 @end example
11094
11095 Will export to:
11096
11097 @example
11098 <aside>
11099 <p>Lorem ipsum</p>
11100 </aside>
11101 @end example
11102
11103 While this:
11104
11105 @example
11106 #+ATTR_HTML: :controls controls :width 350
11107 #+BEGIN_VIDEO
11108 #+HTML: <source src="movie.mp4" type="video/mp4">
11109 #+HTML: <source src="movie.ogg" type="video/ogg">
11110 Your browser does not support the video tag.
11111 #+END_VIDEO
11112 @end example
11113
11114 Becomes:
11115
11116 @example
11117 <video controls="controls" width="350">
11118 <source src="movie.mp4" type="video/mp4">
11119 <source src="movie.ogg" type="video/ogg">
11120 <p>Your browser does not support the video tag.</p>
11121 </video>
11122 @end example
11123
11124 Special blocks that do not correspond to HTML5 elements (see
11125 @code{org-html-html5-elements}) will revert to the usual behavior, i.e.,
11126 @code{#+BEGIN_LEDERHOSEN} will still export to @samp{<div class="lederhosen">}.
11127
11128 Headlines cannot appear within special blocks. To wrap a headline and its
11129 contents in e.g., @samp{<section>} or @samp{<article>} tags, set the
11130 @code{HTML_CONTAINER} property on the headline itself.
11131
11132 @node HTML preamble and postamble, Quoting HTML tags, HTML doctypes, HTML export
11133 @subsection HTML preamble and postamble
11134 @vindex org-html-preamble
11135 @vindex org-html-postamble
11136 @vindex org-html-preamble-format
11137 @vindex org-html-postamble-format
11138 @vindex org-html-validation-link
11139 @vindex org-export-creator-string
11140 @vindex org-export-time-stamp-file
11141
11142 The HTML exporter lets you define a preamble and a postamble.
11143
11144 The default value for @code{org-html-preamble} is @code{t}, which means
11145 that the preamble is inserted depending on the relevant format string in
11146 @code{org-html-preamble-format}.
11147
11148 Setting @code{org-html-preamble} to a string will override the default format
11149 string. If you set it to a function, it will insert the output of the
11150 function, which must be a string. Setting to @code{nil} will not insert any
11151 preamble.
11152
11153 The default value for @code{org-html-postamble} is @code{'auto}, which means
11154 that the HTML exporter will look for information about the author, the email,
11155 the creator and the date, and build the postamble from these values. Setting
11156 @code{org-html-postamble} to @code{t} will insert the postamble from the
11157 relevant format string found in @code{org-html-postamble-format}. Setting it
11158 to @code{nil} will not insert any postamble.
11159
11160 @node Quoting HTML tags, Links in HTML export, HTML preamble and postamble, HTML export
11161 @subsection Quoting HTML tags
11162
11163 Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
11164 @samp{&gt;} in HTML export. If you want to include raw HTML code, which
11165 should only appear in HTML export, mark it with @samp{@@@@html:} as in
11166 @samp{@@@@html:<b>@@@@bold text@@@@html:</b>@@@@}. For more extensive HTML
11167 that should be copied verbatim to the exported file use either
11168
11169 @cindex #+HTML
11170 @cindex #+BEGIN_HTML
11171 @example
11172 #+HTML: Literal HTML code for export
11173 @end example
11174
11175 @noindent or
11176 @cindex #+BEGIN_HTML
11177
11178 @example
11179 #+BEGIN_HTML
11180 All lines between these markers are exported literally
11181 #+END_HTML
11182 @end example
11183
11184
11185 @node Links in HTML export, Tables in HTML export, Quoting HTML tags, HTML export
11186 @subsection Links in HTML export
11187
11188 @cindex links, in HTML export
11189 @cindex internal links, in HTML export
11190 @cindex external links, in HTML export
11191 Internal links (@pxref{Internal links}) will continue to work in HTML@. This
11192 includes automatic links created by radio targets (@pxref{Radio
11193 targets}). Links to external files will still work if the target file is on
11194 the same @i{relative} path as the published Org file. Links to other
11195 @file{.org} files will be translated into HTML links under the assumption
11196 that an HTML version also exists of the linked file, at the same relative
11197 path. @samp{id:} links can then be used to jump to specific entries across
11198 files. For information related to linking files while publishing them to a
11199 publishing directory see @ref{Publishing links}.
11200
11201 If you want to specify attributes for links, you can do so using a special
11202 @code{#+ATTR_HTML} line to define attributes that will be added to the
11203 @code{<a>} or @code{<img>} tags. Here is an example that sets @code{title}
11204 and @code{style} attributes for a link:
11205
11206 @cindex #+ATTR_HTML
11207 @example
11208 #+ATTR_HTML: :title The Org mode homepage :style color:red;
11209 [[http://orgmode.org]]
11210 @end example
11211
11212 @node Tables in HTML export, Images in HTML export, Links in HTML export, HTML export
11213 @subsection Tables
11214 @cindex tables, in HTML
11215 @vindex org-html-table-default-attributes
11216
11217 Org mode tables are exported to HTML using the table attributes defined in
11218 @code{org-html-table-default-attributes}. The default setting makes tables
11219 without cell borders and frame. If you would like to change this for
11220 individual tables, place something like the following before the table:
11221
11222 @cindex #+CAPTION
11223 @cindex #+ATTR_HTML
11224 @example
11225 #+CAPTION: This is a table with lines around and between cells
11226 #+ATTR_HTML: :border 2 :rules all :frame border
11227 @end example
11228
11229 @vindex org-html-table-row-tags
11230 You can also modify the default tags used for each row by setting
11231 @code{org-html-table-row-tags}. See the docstring for an example on
11232 how to use this option.
11233
11234 @node Images in HTML export, Math formatting in HTML export, Tables in HTML export, HTML export
11235 @subsection Images in HTML export
11236
11237 @cindex images, inline in HTML
11238 @cindex inlining images in HTML
11239 @vindex org-html-inline-images
11240 HTML export can inline images given as links in the Org file, and
11241 it can make an image the clickable part of a link. By
11242 default@footnote{But see the variable
11243 @code{org-html-inline-images}.}, images are inlined if a link does
11244 not have a description. So @samp{[[file:myimg.jpg]]} will be inlined,
11245 while @samp{[[file:myimg.jpg][the image]]} will just produce a link
11246 @samp{the image} that points to the image. If the description part
11247 itself is a @code{file:} link or a @code{http:} URL pointing to an
11248 image, this image will be inlined and activated so that clicking on the
11249 image will activate the link. For example, to include a thumbnail that
11250 will link to a high resolution version of the image, you could use:
11251
11252 @example
11253 [[file:highres.jpg][file:thumb.jpg]]
11254 @end example
11255
11256 If you need to add attributes to an inlined image, use a @code{#+ATTR_HTML}.
11257 In the example below we specify the @code{alt} and @code{title} attributes to
11258 support text viewers and accessibility, and align it to the right.
11259
11260 @cindex #+CAPTION
11261 @cindex #+ATTR_HTML
11262 @example
11263 #+CAPTION: A black cat stalking a spider
11264 #+ATTR_HTML: :alt cat/spider image :title Action! :align right
11265 [[./img/a.jpg]]
11266 @end example
11267
11268 @noindent
11269 You could use @code{http} addresses just as well.
11270
11271 @node Math formatting in HTML export, Text areas in HTML export, Images in HTML export, HTML export
11272 @subsection Math formatting in HTML export
11273 @cindex MathJax
11274 @cindex dvipng
11275 @cindex imagemagick
11276
11277 @LaTeX{} math snippets (@pxref{@LaTeX{} fragments}) can be displayed in two
11278 different ways on HTML pages. The default is to use the
11279 @uref{http://www.mathjax.org, MathJax system} which should work out of the
11280 box with Org mode installation because @uref{http://orgmode.org} serves
11281 @file{MathJax} for Org mode users for small applications and for testing
11282 purposes. @b{If you plan to use this regularly or on pages with significant
11283 page views, you should install@footnote{Installation instructions can be
11284 found on the MathJax website, see
11285 @uref{http://www.mathjax.org/resources/docs/?installation.html}.} MathJax on
11286 your own server in order to limit the load of our server.} To configure
11287 @file{MathJax}, use the variable @code{org-html-mathjax-options} or
11288 insert something like the following into the buffer:
11289
11290 @example
11291 #+HTML_MATHJAX: align:"left" mathml:t path:"/MathJax/MathJax.js"
11292 @end example
11293
11294 @noindent See the docstring of the variable
11295 @code{org-html-mathjax-options} for the meaning of the parameters in
11296 this line.
11297
11298 If you prefer, you can also request that @LaTeX{} fragments are processed
11299 into small images that will be inserted into the browser page. Before the
11300 availability of MathJax, this was the default method for Org files. This
11301 method requires that the @file{dvipng} program or @file{imagemagick} suite is
11302 available on your system. You can still get this processing with
11303
11304 @example
11305 #+OPTIONS: tex:dvipng
11306 @end example
11307
11308 or:
11309
11310 @example
11311 #+OPTIONS: tex:imagemagick
11312 @end example
11313
11314 @node Text areas in HTML export, CSS support, Math formatting in HTML export, HTML export
11315 @subsection Text areas in HTML export
11316
11317 @cindex text areas, in HTML
11318 An alternative way to publish literal code examples in HTML is to use text
11319 areas, where the example can even be edited before pasting it into an
11320 application. It is triggered by @code{:textarea} attribute at an
11321 @code{example} or @code{src} block.
11322
11323 You may also use @code{:height} and @code{:width} attributes to specify the
11324 height and width of the text area, which default to the number of lines in
11325 the example, and 80, respectively. For example
11326
11327 @example
11328 #+ATTR_HTML: :textarea t :width 40
11329 #+BEGIN_EXAMPLE
11330 (defun org-xor (a b)
11331 "Exclusive or."
11332 (if a (not b) b))
11333 #+END_EXAMPLE
11334 @end example
11335
11336
11337 @node CSS support, JavaScript support, Text areas in HTML export, HTML export
11338 @subsection CSS support
11339 @cindex CSS, for HTML export
11340 @cindex HTML export, CSS
11341
11342 @vindex org-html-todo-kwd-class-prefix
11343 @vindex org-html-tag-class-prefix
11344 You can modify the CSS style definitions for the exported file. The HTML
11345 exporter assigns the following special CSS classes@footnote{If the classes on
11346 TODO keywords and tags lead to conflicts, use the variables
11347 @code{org-html-todo-kwd-class-prefix} and @code{org-html-tag-class-prefix} to
11348 make them unique.} to appropriate parts of the document---your style
11349 specifications may change these, in addition to any of the standard classes
11350 like for headlines, tables, etc.
11351 @example
11352 p.author @r{author information, including email}
11353 p.date @r{publishing date}
11354 p.creator @r{creator info, about org mode version}
11355 .title @r{document title}
11356 .todo @r{TODO keywords, all not-done states}
11357 .done @r{the DONE keywords, all states that count as done}
11358 .WAITING @r{each TODO keyword also uses a class named after itself}
11359 .timestamp @r{timestamp}
11360 .timestamp-kwd @r{keyword associated with a timestamp, like SCHEDULED}
11361 .timestamp-wrapper @r{span around keyword plus timestamp}
11362 .tag @r{tag in a headline}
11363 ._HOME @r{each tag uses itself as a class, "@@" replaced by "_"}
11364 .target @r{target for links}
11365 .linenr @r{the line number in a code example}
11366 .code-highlighted @r{for highlighting referenced code lines}
11367 div.outline-N @r{div for outline level N (headline plus text))}
11368 div.outline-text-N @r{extra div for text at outline level N}
11369 .section-number-N @r{section number in headlines, different for each level}
11370 .figure-number @r{label like "Figure 1:"}
11371 .table-number @r{label like "Table 1:"}
11372 .listing-number @r{label like "Listing 1:"}
11373 div.figure @r{how to format an inlined image}
11374 pre.src @r{formatted source code}
11375 pre.example @r{normal example}
11376 p.verse @r{verse paragraph}
11377 div.footnotes @r{footnote section headline}
11378 p.footnote @r{footnote definition paragraph, containing a footnote}
11379 .footref @r{a footnote reference number (always a <sup>)}
11380 .footnum @r{footnote number in footnote definition (always <sup>)}
11381 @end example
11382
11383 @vindex org-html-style-default
11384 @vindex org-html-head-include-default-style
11385 @vindex org-html-head
11386 @vindex org-html-head-extra
11387 @cindex #+HTML_INCLUDE_STYLE
11388 Each exported file contains a compact default style that defines these
11389 classes in a basic way@footnote{This style is defined in the constant
11390 @code{org-html-style-default}, which you should not modify. To turn
11391 inclusion of these defaults off, customize
11392 @code{org-html-head-include-default-style} or set @code{html-style} to
11393 @code{nil} in an @code{OPTIONS} line.}. You may overwrite these settings, or
11394 add to them by using the variables @code{org-html-head} and
11395 @code{org-html-head-extra}. You can override the global values of these
11396 variables for each file by using these keywords:
11397
11398 @cindex #+HTML_HEAD
11399 @cindex #+HTML_HEAD_EXTRA
11400 @example
11401 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="style1.css" />
11402 #+HTML_HEAD_EXTRA: <link rel="alternate stylesheet" type="text/css" href="style2.css" />
11403 @end example
11404
11405 @noindent
11406 For longer style definitions, you can use several such lines. You could also
11407 directly write a @code{<style>} @code{</style>} section in this way, without
11408 referring to an external file.
11409
11410 In order to add styles to a subtree, use the @code{:HTML_CONTAINER_CLASS:}
11411 property to assign a class to the tree. In order to specify CSS styles for a
11412 particular headline, you can use the id specified in a @code{:CUSTOM_ID:}
11413 property.
11414
11415 @c FIXME: More about header and footer styles
11416 @c FIXME: Talk about links and targets.
11417
11418 @node JavaScript support, , CSS support, HTML export
11419 @subsection JavaScript supported display of web pages
11420
11421 @cindex Rose, Sebastian
11422 Sebastian Rose has written a JavaScript program especially designed to
11423 enhance the web viewing experience of HTML files created with Org. This
11424 program allows you to view large files in two different ways. The first one
11425 is an @emph{Info}-like mode where each section is displayed separately and
11426 navigation can be done with the @kbd{n} and @kbd{p} keys (and some other keys
11427 as well, press @kbd{?} for an overview of the available keys). The second
11428 view type is a @emph{folding} view much like Org provides inside Emacs. The
11429 script is available at @url{http://orgmode.org/org-info.js} and you can find
11430 the documentation for it at @url{http://orgmode.org/worg/code/org-info-js/}.
11431 We host the script at our site, but if you use it a lot, you might not want
11432 to be dependent on @url{http://orgmode.org} and prefer to install a local
11433 copy on your own web server.
11434
11435 All it then takes to use this program is adding a single line to the Org
11436 file:
11437
11438 @cindex #+INFOJS_OPT
11439 @example
11440 #+INFOJS_OPT: view:info toc:nil
11441 @end example
11442
11443 @noindent
11444 If this line is found, the HTML header will automatically contain the code
11445 needed to invoke the script. Using the line above, you can set the following
11446 viewing options:
11447
11448 @example
11449 path: @r{The path to the script. The default is to grab the script from}
11450 @r{@url{http://orgmode.org/org-info.js}, but you might want to have}
11451 @r{a local copy and use a path like @samp{../scripts/org-info.js}.}
11452 view: @r{Initial view when the website is first shown. Possible values are:}
11453 info @r{Info-like interface with one section per page.}
11454 overview @r{Folding interface, initially showing only top-level.}
11455 content @r{Folding interface, starting with all headlines visible.}
11456 showall @r{Folding interface, all headlines and text visible.}
11457 sdepth: @r{Maximum headline level that will still become an independent}
11458 @r{section for info and folding modes. The default is taken from}
11459 @r{@code{org-export-headline-levels} (= the @code{H} switch in @code{#+OPTIONS}).}
11460 @r{If this is smaller than in @code{org-export-headline-levels}, each}
11461 @r{info/folding section can still contain child headlines.}
11462 toc: @r{Should the table of contents @emph{initially} be visible?}
11463 @r{Even when @code{nil}, you can always get to the "toc" with @kbd{i}.}
11464 tdepth: @r{The depth of the table of contents. The defaults are taken from}
11465 @r{the variables @code{org-export-headline-levels} and @code{org-export-with-toc}.}
11466 ftoc: @r{Does the CSS of the page specify a fixed position for the "toc"?}
11467 @r{If yes, the toc will never be displayed as a section.}
11468 ltoc: @r{Should there be short contents (children) in each section?}
11469 @r{Make this @code{above} if the section should be above initial text.}
11470 mouse: @r{Headings are highlighted when the mouse is over them. Should be}
11471 @r{@samp{underline} (default) or a background color like @samp{#cccccc}.}
11472 buttons: @r{Should view-toggle buttons be everywhere? When @code{nil} (the}
11473 @r{default), only one such button will be present.}
11474 @end example
11475 @noindent
11476 @vindex org-html-infojs-options
11477 @vindex org-html-use-infojs
11478 You can choose default values for these options by customizing the variable
11479 @code{org-html-infojs-options}. If you always want to apply the script to your
11480 pages, configure the variable @code{org-html-use-infojs}.
11481
11482 @node @LaTeX{} and PDF export, Markdown export, HTML export, Exporting
11483 @section @LaTeX{} and PDF export
11484 @cindex @LaTeX{} export
11485 @cindex PDF export
11486
11487 @LaTeX{} export can produce an arbitrarily complex LaTeX document of any
11488 standard or custom document class. With further processing@footnote{The
11489 default @LaTeX{} output is designed for processing with @code{pdftex} or
11490 @LaTeX{}. It includes packages that are not compatible with @code{xetex} and
11491 possibly @code{luatex}. The @LaTeX{} exporter can be configured to support
11492 alternative TeX engines, see the options
11493 @code{org-latex-default-packages-alist} and @code{org-latex-packages-alist}.},
11494 which the @LaTeX{} exporter is able to control, this back-end is able to
11495 produce PDF output. Because the @LaTeX{} exporter can be configured to use
11496 the @code{hyperref} package, the default setup produces fully-linked PDF
11497 output.
11498
11499 As in @LaTeX{}, blank lines are meaningful for this back-end: a paragraph
11500 will not be started if two contiguous syntactical elements are not separated
11501 by an empty line.
11502
11503 This back-end also offers enhanced support for footnotes. Thus, it handles
11504 nested footnotes, footnotes in tables and footnotes in a list item's
11505 description.
11506
11507 @menu
11508 * @LaTeX{} export commands:: How to export to LaTeX and PDF
11509 * Header and sectioning:: Setting up the export file structure
11510 * Quoting @LaTeX{} code:: Incorporating literal @LaTeX{} code
11511 * @LaTeX{} specific attributes:: Controlling @LaTeX{} output
11512 @end menu
11513
11514 @node @LaTeX{} export commands, Header and sectioning, @LaTeX{} and PDF export, @LaTeX{} and PDF export
11515 @subsection @LaTeX{} export commands
11516
11517 @table @kbd
11518 @orgcmd{C-c C-e l l,org-latex-export-to-latex}
11519 Export as a @LaTeX{} file. For an Org file @file{myfile.org}, the @LaTeX{}
11520 file will be @file{myfile.tex}. The file will be overwritten without
11521 warning.
11522 @orgcmd{C-c C-e l L,org-latex-export-as-latex}
11523 Export to a temporary buffer. Do not create a file.
11524 @orgcmd{C-c C-e l p,org-latex-export-to-pdf}
11525 Export as @LaTeX{} and then process to PDF.
11526 @item C-c C-e l o
11527 Export as @LaTeX{} and then process to PDF, then open the resulting PDF file.
11528 @end table
11529
11530 @node Header and sectioning, Quoting @LaTeX{} code, @LaTeX{} export commands, @LaTeX{} and PDF export
11531 @subsection Header and sectioning structure
11532 @cindex @LaTeX{} class
11533 @cindex @LaTeX{} sectioning structure
11534 @cindex @LaTeX{} header
11535 @cindex header, for @LaTeX{} files
11536 @cindex sectioning structure, for @LaTeX{} export
11537
11538 By default, the first three outline levels become headlines, defining a
11539 general document structure. Additional levels are exported as @code{itemize}
11540 or @code{enumerate} lists. The transition can also occur at a different
11541 level (@pxref{Export settings}).
11542
11543 By default, the @LaTeX{} output uses the class @code{article}.
11544
11545 @vindex org-latex-default-class
11546 @vindex org-latex-classes
11547 @vindex org-latex-default-packages-alist
11548 @vindex org-latex-packages-alist
11549 You can change this globally by setting a different value for
11550 @code{org-latex-default-class} or locally by adding an option like
11551 @code{#+LATEX_CLASS: myclass} in your file, or with
11552 a @code{EXPORT_LATEX_CLASS} property that applies when exporting a region
11553 containing only this (sub)tree. The class must be listed in
11554 @code{org-latex-classes}. This variable defines a header template for each
11555 class@footnote{Into which the values of
11556 @code{org-latex-default-packages-alist} and @code{org-latex-packages-alist}
11557 are spliced.}, and allows you to define the sectioning structure for each
11558 class. You can also define your own classes there.
11559
11560 @cindex #+LATEX_CLASS
11561 @cindex #+LATEX_CLASS_OPTIONS
11562 @cindex property, EXPORT_LATEX_CLASS
11563 @cindex property, EXPORT_LATEX_CLASS_OPTIONS
11564 The @code{LATEX_CLASS_OPTIONS} keyword or @code{EXPORT_LATEX_CLASS_OPTIONS}
11565 property can specify the options for the @code{\documentclass} macro. These
11566 options have to be provided, as expected by @LaTeX{}, within square brackets.
11567
11568 @cindex #+LATEX_HEADER
11569 @cindex #+LATEX_HEADER_EXTRA
11570 You can also use the @code{LATEX_HEADER} and
11571 @code{LATEX_HEADER_EXTRA}@footnote{Unlike @code{LATEX_HEADER}, contents
11572 from @code{LATEX_HEADER_EXTRA} keywords will not be loaded when previewing
11573 @LaTeX{} snippets (@pxref{Previewing @LaTeX{} fragments}).} keywords in order
11574 to add lines to the header. See the docstring of @code{org-latex-classes} for
11575 more information.
11576
11577 An example is shown below.
11578
11579 @example
11580 #+LATEX_CLASS: article
11581 #+LATEX_CLASS_OPTIONS: [a4paper]
11582 #+LATEX_HEADER: \usepackage@{xyz@}
11583
11584 * Headline 1
11585 some text
11586 @end example
11587
11588 @node Quoting @LaTeX{} code, @LaTeX{} specific attributes, Header and sectioning, @LaTeX{} and PDF export
11589 @subsection Quoting @LaTeX{} code
11590
11591 Embedded @LaTeX{} as described in @ref{Embedded @LaTeX{}}, will be correctly
11592 inserted into the @LaTeX{} file. Furthermore, you can add special code that
11593 should only be present in @LaTeX{} export with the following constructs:
11594
11595 @cindex #+LATEX
11596 @cindex #+BEGIN_LATEX
11597 @example
11598 Code within @@@@latex:some code@@@@ a paragraph.
11599
11600 #+LATEX: Literal @LaTeX{} code for export
11601
11602 #+BEGIN_LATEX
11603 All lines between these markers are exported literally
11604 #+END_LATEX
11605 @end example
11606
11607 @node @LaTeX{} specific attributes, , Quoting @LaTeX{} code, @LaTeX{} and PDF export
11608 @subsection @LaTeX{} specific attributes
11609 @cindex #+ATTR_LATEX
11610
11611 @LaTeX{} understands attributes specified in an @code{ATTR_LATEX} line. They
11612 affect tables, images, plain lists, special blocks and source blocks.
11613
11614 @subsubheading Tables in @LaTeX{} export
11615 @cindex tables, in @LaTeX{} export
11616
11617 For @LaTeX{} export of a table, you can specify a label and a caption
11618 (@pxref{Images and tables}). You can also use attributes to control table
11619 layout and contents. Valid @LaTeX{} attributes include:
11620
11621 @table @code
11622 @item :mode
11623 @vindex org-latex-default-table-mode
11624 Nature of table's contents. It can be set to @code{table}, @code{math},
11625 @code{inline-math} or @code{verbatim}. In particular, when in @code{math} or
11626 @code{inline-math} mode, every cell is exported as-is, horizontal rules are
11627 ignored and the table will be wrapped in a math environment. Also,
11628 contiguous tables sharing the same math mode will be wrapped within the same
11629 environment. Default mode is determined in
11630 @code{org-latex-default-table-mode}.
11631 @item :environment
11632 @vindex org-latex-default-table-environment
11633 Environment used for the table. It can be set to any @LaTeX{} table
11634 environment, like @code{tabularx}@footnote{Requires adding the
11635 @code{tabularx} package to @code{org-latex-packages-alist}.},
11636 @code{longtable}, @code{array}, @code{tabu}@footnote{Requires adding the
11637 @code{tabu} package to @code{org-latex-packages-alist}.},
11638 @code{bmatrix}@enddots{} It defaults to
11639 @code{org-latex-default-table-environment} value.
11640 @item :caption
11641 @code{#+CAPTION} keyword is the simplest way to set a caption for a table
11642 (@pxref{Images and tables}). If you need more advanced commands for that
11643 task, you can use @code{:caption} attribute instead. Its value should be raw
11644 @LaTeX{} code. It has precedence over @code{#+CAPTION}.
11645 @item :float
11646 @itemx :placement
11647 Float environment for the table. Possible values are @code{sidewaystable},
11648 @code{multicolumn}, @code{t} and @code{nil}. When unspecified, a table with
11649 a caption will have a @code{table} environment. Moreover, @code{:placement}
11650 attribute can specify the positioning of the float.
11651 @item :align
11652 @itemx :font
11653 @itemx :width
11654 Set, respectively, the alignment string of the table, its font size and its
11655 width. They only apply on regular tables.
11656 @item :spread
11657 Boolean specific to the @code{tabu} and @code{longtabu} environments, and
11658 only takes effect when used in conjunction with the @code{:width} attribute.
11659 When @code{:spread} is non-@code{nil}, the table will be spread or shrunk by the
11660 value of @code{:width}.
11661 @item :booktabs
11662 @itemx :center
11663 @itemx :rmlines
11664 @vindex org-latex-tables-booktabs
11665 @vindex org-latex-tables-centered
11666 They toggle, respectively, @code{booktabs} usage (assuming the package is
11667 properly loaded), table centering and removal of every horizontal rule but
11668 the first one (in a "table.el" table only). In particular,
11669 @code{org-latex-tables-booktabs} (respectively @code{org-latex-tables-centered})
11670 activates the first (respectively second) attribute globally.
11671 @item :math-prefix
11672 @itemx :math-suffix
11673 @itemx :math-arguments
11674 A string that will be inserted, respectively, before the table within the
11675 math environment, after the table within the math environment, and between
11676 the macro name and the contents of the table. The @code{:math-arguments}
11677 attribute is used for matrix macros that require more than one argument
11678 (e.g., @code{qbordermatrix}).
11679 @end table
11680
11681 Thus, attributes can be used in a wide array of situations, like writing
11682 a table that will span over multiple pages, or a matrix product:
11683
11684 @example
11685 #+ATTR_LATEX: :environment longtable :align l|lp@{3cm@}r|l
11686 | ..... | ..... |
11687 | ..... | ..... |
11688
11689 #+ATTR_LATEX: :mode math :environment bmatrix :math-suffix \times
11690 | a | b |
11691 | c | d |
11692 #+ATTR_LATEX: :mode math :environment bmatrix
11693 | 1 | 2 |
11694 | 3 | 4 |
11695 @end example
11696
11697 In the example below, @LaTeX{} command
11698 @code{\bicaption@{HeadingA@}@{HeadingB@}} will set the caption.
11699
11700 @example
11701 #+ATTR_LATEX: :caption \bicaption@{HeadingA@}@{HeadingB@}
11702 | ..... | ..... |
11703 | ..... | ..... |
11704 @end example
11705
11706
11707 @subsubheading Images in @LaTeX{} export
11708 @cindex images, inline in @LaTeX{}
11709 @cindex inlining images in @LaTeX{}
11710
11711 Images that are linked to without a description part in the link, like
11712 @samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]} will be inserted into the PDF
11713 output file resulting from @LaTeX{} processing. Org will use an
11714 @code{\includegraphics} macro to insert the image@footnote{In the case of
11715 TikZ (@url{http://sourceforge.net/projects/pgf/}) images, it will become an
11716 @code{\input} macro wrapped within a @code{tikzpicture} environment.}.
11717
11718 You can specify specify image width or height with, respectively,
11719 @code{:width} and @code{:height} attributes. It is also possible to add any
11720 other option with the @code{:options} attribute, as shown in the following
11721 example:
11722
11723 @example
11724 #+ATTR_LATEX: :width 5cm :options angle=90
11725 [[./img/sed-hr4049.pdf]]
11726 @end example
11727
11728 If you need a specific command for the caption, use @code{:caption}
11729 attribute. It will override standard @code{#+CAPTION} value, if any.
11730
11731 @example
11732 #+ATTR_LATEX: :caption \bicaption@{HeadingA@}@{HeadingB@}
11733 [[./img/sed-hr4049.pdf]]
11734 @end example
11735
11736 If you have specified a caption as described in @ref{Images and tables}, the
11737 picture will be wrapped into a @code{figure} environment and thus become
11738 a floating element. You can also ask Org to export an image as a float
11739 without specifying caption by setting the @code{:float} attribute. You may
11740 also set it to:
11741 @itemize @minus
11742 @item
11743 @code{t}: if you want to use the standard @samp{figure} environment. It is
11744 used by default if you provide a caption to the image.
11745 @item
11746 @code{multicolumn}: if you wish to include an image which spans multiple
11747 columns in a page. This will export the image wrapped in a @code{figure*}
11748 environment.
11749 @item
11750 @code{wrap}: if you would like to let text flow around the image. It will
11751 make the figure occupy the left half of the page.
11752 @item
11753 @code{nil}: if you need to avoid any floating environment, even when
11754 a caption is provided.
11755 @end itemize
11756 @noindent
11757 To modify the placement option of any floating environment, set the
11758 @code{placement} attribute.
11759
11760 @example
11761 #+ATTR_LATEX: :float wrap :width 0.38\textwidth :placement @{r@}@{0.4\textwidth@}
11762 [[./img/hst.png]]
11763 @end example
11764
11765 If the @code{:comment-include} attribute is set to a non-@code{nil} value,
11766 the @LaTeX{} @code{\includegraphics} macro will be commented out.
11767
11768 @subsubheading Plain lists in @LaTeX{} export
11769 @cindex plain lists, in @LaTeX{} export
11770
11771 Plain lists accept two optional attributes: @code{:environment} and
11772 @code{:options}. The first one allows the use of a non-standard environment
11773 (e.g., @samp{inparaenum}). The second one specifies additional arguments for
11774 that environment.
11775
11776 @example
11777 #+ATTR_LATEX: :environment compactitem :options [$\circ$]
11778 - you need ``paralist'' package to reproduce this example.
11779 @end example
11780
11781 @subsubheading Source blocks in @LaTeX{} export
11782 @cindex source blocks, in @LaTeX{} export
11783
11784 In addition to syntax defined in @ref{Literal examples}, names and captions
11785 (@pxref{Images and tables}), source blocks also accept a @code{:float}
11786 attribute. You may set it to:
11787 @itemize @minus
11788 @item
11789 @code{t}: if you want to make the source block a float. It is the default
11790 value when a caption is provided.
11791 @item
11792 @code{multicolumn}: if you wish to include a source block which spans multiple
11793 columns in a page.
11794 @item
11795 @code{nil}: if you need to avoid any floating environment, even when a caption
11796 is provided. It is useful for source code that may not fit in a single page.
11797 @end itemize
11798
11799 @example
11800 #+ATTR_LATEX: :float nil
11801 #+BEGIN_SRC emacs-lisp
11802 Code that may not fit in a single page.
11803 #+END_SRC
11804 @end example
11805
11806 @subsubheading Special blocks in @LaTeX{} export
11807 @cindex special blocks, in @LaTeX{} export
11808 @cindex abstract, in @LaTeX{} export
11809 @cindex proof, in @LaTeX{} export
11810
11811 In @LaTeX{} back-end, special blocks become environments of the same name.
11812 Value of @code{:options} attribute will be appended as-is to that
11813 environment's opening string. For example:
11814
11815 @example
11816 #+BEGIN_ABSTRACT
11817 We demonstrate how to solve the Syracuse problem.
11818 #+END_ABSTRACT
11819
11820 #+ATTR_LATEX: :options [Proof of important theorem]
11821 #+BEGIN_PROOF
11822 ...
11823 Therefore, any even number greater than 2 is the sum of two primes.
11824 #+END_PROOF
11825 @end example
11826
11827 @noindent
11828 becomes
11829
11830 @example
11831 \begin@{abstract@}
11832 We demonstrate how to solve the Syracuse problem.
11833 \end@{abstract@}
11834
11835 \begin@{proof@}[Proof of important theorem]
11836 ...
11837 Therefore, any even number greater than 2 is the sum of two primes.
11838 \end@{proof@}
11839 @end example
11840
11841 If you need to insert a specific caption command, use @code{:caption}
11842 attribute. It will override standard @code{#+CAPTION} value, if any. For
11843 example:
11844
11845 @example
11846 #+ATTR_LATEX: :caption \MyCaption@{HeadingA@}
11847 #+BEGIN_PROOF
11848 ...
11849 #+END_PROOF
11850 @end example
11851
11852 @subsubheading Horizontal rules
11853 @cindex horizontal rules, in @LaTeX{} export
11854
11855 Width and thickness of a given horizontal rule can be controlled with,
11856 respectively, @code{:width} and @code{:thickness} attributes:
11857
11858 @example
11859 #+ATTR_LATEX: :width .6\textwidth :thickness 0.8pt
11860 -----
11861 @end example
11862
11863 @node Markdown export, OpenDocument Text export, @LaTeX{} and PDF export, Exporting
11864 @section Markdown export
11865 @cindex Markdown export
11866
11867 @code{md} export back-end generates Markdown syntax@footnote{Vanilla flavor,
11868 as defined at @url{http://daringfireball.net/projects/markdown/}.} for an Org
11869 mode buffer.
11870
11871 It is built over HTML back-end: any construct not supported by Markdown
11872 syntax (e.g., tables) will be controlled and translated by @code{html}
11873 back-end (@pxref{HTML export}).
11874
11875 @subheading Markdown export commands
11876
11877 @table @kbd
11878 @orgcmd{C-c C-e m m,org-md-export-to-markdown}
11879 Export as a text file written in Markdown syntax. For an Org file,
11880 @file{myfile.org}, the resulting file will be @file{myfile.md}. The file
11881 will be overwritten without warning.
11882 @orgcmd{C-c C-e m M,org-md-export-as-markdown}
11883 Export to a temporary buffer. Do not create a file.
11884 @item C-c C-e m o
11885 Export as a text file with Markdown syntax, then open it.
11886 @end table
11887
11888 @subheading Header and sectioning structure
11889
11890 @vindex org-md-headline-style
11891 Markdown export can generate both @code{atx} and @code{setext} types for
11892 headlines, according to @code{org-md-headline-style}. The former introduces
11893 a hard limit of two levels, whereas the latter pushes it to six. Headlines
11894 below that limit are exported as lists. You can also set a soft limit before
11895 that one (@pxref{Export settings}).
11896
11897 @c begin opendocument
11898
11899 @node OpenDocument Text export, Org export, Markdown export, Exporting
11900 @section OpenDocument Text export
11901 @cindex ODT
11902 @cindex OpenDocument
11903 @cindex export, OpenDocument
11904 @cindex LibreOffice
11905
11906 Org mode@footnote{Versions 7.8 or later} supports export to OpenDocument Text
11907 (ODT) format. Documents created by this exporter use the
11908 @cite{OpenDocument-v1.2
11909 specification}@footnote{@url{http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html,
11910 Open Document Format for Office Applications (OpenDocument) Version 1.2}} and
11911 are compatible with LibreOffice 3.4.
11912
11913 @menu
11914 * Pre-requisites for ODT export:: What packages ODT exporter relies on
11915 * ODT export commands:: How to invoke ODT export
11916 * Extending ODT export:: How to produce @samp{doc}, @samp{pdf} files
11917 * Applying custom styles:: How to apply custom styles to the output
11918 * Links in ODT export:: How links will be interpreted and formatted
11919 * Tables in ODT export:: How Tables are exported
11920 * Images in ODT export:: How to insert images
11921 * Math formatting in ODT export:: How @LaTeX{} fragments are formatted
11922 * Labels and captions in ODT export:: How captions are rendered
11923 * Literal examples in ODT export:: How source and example blocks are formatted
11924 * Advanced topics in ODT export:: Read this if you are a power user
11925 @end menu
11926
11927 @node Pre-requisites for ODT export, ODT export commands, OpenDocument Text export, OpenDocument Text export
11928 @subsection Pre-requisites for ODT export
11929 @cindex zip
11930 The ODT exporter relies on the @file{zip} program to create the final
11931 output. Check the availability of this program before proceeding further.
11932
11933 @node ODT export commands, Extending ODT export, Pre-requisites for ODT export, OpenDocument Text export
11934 @subsection ODT export commands
11935
11936 @subsubheading Exporting to ODT
11937 @anchor{x-export-to-odt}
11938
11939 @cindex region, active
11940 @cindex active region
11941 @cindex transient-mark-mode
11942 @table @kbd
11943 @orgcmd{C-c C-e o o,org-odt-export-to-odt}
11944 @cindex property EXPORT_FILE_NAME
11945
11946 Export as OpenDocument Text file.
11947
11948 @vindex org-odt-preferred-output-format
11949 If @code{org-odt-preferred-output-format} is specified, automatically convert
11950 the exported file to that format. @xref{x-export-to-other-formats, ,
11951 Automatically exporting to other formats}.
11952
11953 For an Org file @file{myfile.org}, the ODT file will be
11954 @file{myfile.odt}. The file will be overwritten without warning. If there
11955 is an active region,@footnote{This requires @code{transient-mark-mode} to be
11956 turned on} only the region will be exported. If the selected region is a
11957 single tree,@footnote{To select the current subtree, use @kbd{C-c @@}} the
11958 tree head will become the document title. If the tree head entry has, or
11959 inherits, an @code{EXPORT_FILE_NAME} property, that name will be used for the
11960 export.
11961
11962 @kbd{C-c C-e o O}
11963 Export as an OpenDocument Text file and open the resulting file.
11964
11965 @vindex org-odt-preferred-output-format
11966 If @code{org-odt-preferred-output-format} is specified, open the converted
11967 file instead. @xref{x-export-to-other-formats, , Automatically exporting to
11968 other formats}.
11969 @end table
11970
11971 @node Extending ODT export, Applying custom styles, ODT export commands, OpenDocument Text export
11972 @subsection Extending ODT export
11973
11974 The ODT exporter can interface with a variety of document
11975 converters and supports popular converters out of the box. As a result, you
11976 can use it to export to formats like @samp{doc} or convert a document from
11977 one format (say @samp{csv}) to another format (say @samp{ods} or @samp{xls}).
11978
11979 @cindex @file{unoconv}
11980 @cindex LibreOffice
11981 If you have a working installation of LibreOffice, a document converter is
11982 pre-configured for you and you can use it right away. If you would like to
11983 use @file{unoconv} as your preferred converter, customize the variable
11984 @code{org-odt-convert-process} to point to @code{unoconv}. You can
11985 also use your own favorite converter or tweak the default settings of the
11986 @file{LibreOffice} and @samp{unoconv} converters. @xref{Configuring a
11987 document converter}.
11988
11989 @subsubsection Automatically exporting to other formats
11990 @anchor{x-export-to-other-formats}
11991
11992 @vindex org-odt-preferred-output-format
11993 Very often, you will find yourself exporting to ODT format, only to
11994 immediately save the exported document to other formats like @samp{doc},
11995 @samp{docx}, @samp{rtf}, @samp{pdf} etc. In such cases, you can specify your
11996 preferred output format by customizing the variable
11997 @code{org-odt-preferred-output-format}. This way, the export commands
11998 (@pxref{x-export-to-odt,,Exporting to ODT}) can be extended to export to a
11999 format that is of immediate interest to you.
12000
12001 @subsubsection Converting between document formats
12002 @anchor{x-convert-to-other-formats}
12003
12004 There are many document converters in the wild which support conversion to
12005 and from various file formats, including, but not limited to the
12006 ODT format. LibreOffice converter, mentioned above, is one such
12007 converter. Once a converter is configured, you can interact with it using
12008 the following command.
12009
12010 @vindex org-odt-convert
12011 @table @kbd
12012
12013 @item M-x org-odt-convert RET
12014 Convert an existing document from one format to another. With a prefix
12015 argument, also open the newly produced file.
12016 @end table
12017
12018 @node Applying custom styles, Links in ODT export, Extending ODT export, OpenDocument Text export
12019 @subsection Applying custom styles
12020 @cindex styles, custom
12021 @cindex template, custom
12022
12023 The ODT exporter ships with a set of OpenDocument styles
12024 (@pxref{Working with OpenDocument style files}) that ensure a well-formatted
12025 output. These factory styles, however, may not cater to your specific
12026 tastes. To customize the output, you can either modify the above styles
12027 files directly, or generate the required styles using an application like
12028 LibreOffice. The latter method is suitable for expert and non-expert
12029 users alike, and is described here.
12030
12031 @subsubsection Applying custom styles: the easy way
12032
12033 @enumerate
12034 @item
12035 Create a sample @file{example.org} file with the below settings and export it
12036 to ODT format.
12037
12038 @example
12039 #+OPTIONS: H:10 num:t
12040 @end example
12041
12042 @item
12043 Open the above @file{example.odt} using LibreOffice. Use the @file{Stylist}
12044 to locate the target styles---these typically have the @samp{Org} prefix---and
12045 modify those to your taste. Save the modified file either as an
12046 OpenDocument Text (@file{.odt}) or OpenDocument Template (@file{.ott}) file.
12047
12048 @item
12049 @cindex #+ODT_STYLES_FILE
12050 @vindex org-odt-styles-file
12051 Customize the variable @code{org-odt-styles-file} and point it to the
12052 newly created file. For additional configuration options
12053 @pxref{x-overriding-factory-styles,,Overriding factory styles}.
12054
12055 If you would like to choose a style on a per-file basis, you can use the
12056 @code{#+ODT_STYLES_FILE} option. A typical setting will look like
12057
12058 @example
12059 #+ODT_STYLES_FILE: "/path/to/example.ott"
12060 @end example
12061
12062 or
12063
12064 @example
12065 #+ODT_STYLES_FILE: ("/path/to/file.ott" ("styles.xml" "image/hdr.png"))
12066 @end example
12067
12068 @end enumerate
12069
12070 @subsubsection Using third-party styles and templates
12071
12072 You can use third-party styles and templates for customizing your output.
12073 This will produce the desired output only if the template provides all
12074 style names that the @samp{ODT} exporter relies on. Unless this condition is
12075 met, the output is going to be less than satisfactory. So it is highly
12076 recommended that you only work with templates that are directly derived from
12077 the factory settings.
12078
12079 @node Links in ODT export, Tables in ODT export, Applying custom styles, OpenDocument Text export
12080 @subsection Links in ODT export
12081 @cindex links, in ODT export
12082
12083 ODT exporter creates native cross-references for internal links. It creates
12084 Internet-style links for all other links.
12085
12086 A link with no description and destined to a regular (un-itemized) outline
12087 heading is replaced with a cross-reference and section number of the heading.
12088
12089 A @samp{\ref@{label@}}-style reference to an image, table etc. is replaced
12090 with a cross-reference and sequence number of the labeled entity.
12091 @xref{Labels and captions in ODT export}.
12092
12093 @node Tables in ODT export, Images in ODT export, Links in ODT export, OpenDocument Text export
12094 @subsection Tables in ODT export
12095 @cindex tables, in ODT export
12096
12097 Export of native Org mode tables (@pxref{Tables}) and simple @file{table.el}
12098 tables is supported. However, export of complex @file{table.el} tables---tables
12099 that have column or row spans---is not supported. Such tables are
12100 stripped from the exported document.
12101
12102 By default, a table is exported with top and bottom frames and with rules
12103 separating row and column groups (@pxref{Column groups}). Furthermore, all
12104 tables are typeset to occupy the same width. If the table specifies
12105 alignment and relative width for its columns (@pxref{Column width and
12106 alignment}) then these are honored on export.@footnote{The column widths are
12107 interpreted as weighted ratios with the default weight being 1}
12108
12109 @cindex #+ATTR_ODT
12110 You can control the width of the table by specifying @code{:rel-width}
12111 property using an @code{#+ATTR_ODT} line.
12112
12113 For example, consider the following table which makes use of all the rules
12114 mentioned above.
12115
12116 @example
12117 #+ATTR_ODT: :rel-width 50
12118 | Area/Month | Jan | Feb | Mar | Sum |
12119 |---------------+-------+-------+-------+-------|
12120 | / | < | | | < |
12121 | <l13> | <r5> | <r5> | <r5> | <r6> |
12122 | North America | 1 | 21 | 926 | 948 |
12123 | Middle East | 6 | 75 | 844 | 925 |
12124 | Asia Pacific | 9 | 27 | 790 | 826 |
12125 |---------------+-------+-------+-------+-------|
12126 | Sum | 16 | 123 | 2560 | 2699 |
12127 @end example
12128
12129 On export, the table will occupy 50% of text area. The columns will be sized
12130 (roughly) in the ratio of 13:5:5:5:6. The first column will be left-aligned
12131 and rest of the columns will be right-aligned. There will be vertical rules
12132 after separating the header and last columns from other columns. There will
12133 be horizontal rules separating the header and last rows from other rows.
12134
12135 If you are not satisfied with the above formatting options, you can create
12136 custom table styles and associate them with a table using the
12137 @code{#+ATTR_ODT} line. @xref{Customizing tables in ODT export}.
12138
12139 @node Images in ODT export, Math formatting in ODT export, Tables in ODT export, OpenDocument Text export
12140 @subsection Images in ODT export
12141 @cindex images, embedding in ODT
12142 @cindex embedding images in ODT
12143
12144 @subsubheading Embedding images
12145 You can embed images within the exported document by providing a link to the
12146 desired image file with no link description. For example, to embed
12147 @samp{img.png} do either of the following:
12148
12149 @example
12150 [[file:img.png]]
12151 @end example
12152
12153 @example
12154 [[./img.png]]
12155 @end example
12156
12157 @subsubheading Embedding clickable images
12158 You can create clickable images by providing a link whose description is a
12159 link to an image file. For example, to embed a image
12160 @file{org-mode-unicorn.png} which when clicked jumps to
12161 @uref{http://Orgmode.org} website, do the following
12162
12163 @example
12164 [[http://orgmode.org][./org-mode-unicorn.png]]
12165 @end example
12166
12167 @subsubheading Sizing and scaling of embedded images
12168
12169 @cindex #+ATTR_ODT
12170 You can control the size and scale of the embedded images using the
12171 @code{#+ATTR_ODT} attribute.
12172
12173 @cindex identify, ImageMagick
12174 @vindex org-odt-pixels-per-inch
12175 The exporter specifies the desired size of the image in the final document in
12176 units of centimeters. In order to scale the embedded images, the exporter
12177 queries for pixel dimensions of the images using one of a) ImageMagick's
12178 @file{identify} program or b) Emacs `create-image' and `image-size'
12179 APIs@footnote{Use of @file{ImageMagick} is only desirable. However, if you
12180 routinely produce documents that have large images or you export your Org
12181 files that has images using a Emacs batch script, then the use of
12182 @file{ImageMagick} is mandatory.}. The pixel dimensions are subsequently
12183 converted in to units of centimeters using
12184 @code{org-odt-pixels-per-inch}. The default value of this variable is
12185 set to @code{display-pixels-per-inch}. You can tweak this variable to
12186 achieve the best results.
12187
12188 The examples below illustrate the various possibilities.
12189
12190 @table @asis
12191 @item Explicitly size the image
12192 To embed @file{img.png} as a 10 cm x 10 cm image, do the following:
12193
12194 @example
12195 #+ATTR_ODT: :width 10 :height 10
12196 [[./img.png]]
12197 @end example
12198
12199 @item Scale the image
12200 To embed @file{img.png} at half its size, do the following:
12201
12202 @example
12203 #+ATTR_ODT: :scale 0.5
12204 [[./img.png]]
12205 @end example
12206
12207 @item Scale the image to a specific width
12208 To embed @file{img.png} with a width of 10 cm while retaining the original
12209 height:width ratio, do the following:
12210
12211 @example
12212 #+ATTR_ODT: :width 10
12213 [[./img.png]]
12214 @end example
12215
12216 @item Scale the image to a specific height
12217 To embed @file{img.png} with a height of 10 cm while retaining the original
12218 height:width ratio, do the following
12219
12220 @example
12221 #+ATTR_ODT: :height 10
12222 [[./img.png]]
12223 @end example
12224 @end table
12225
12226 @subsubheading Anchoring of images
12227
12228 @cindex #+ATTR_ODT
12229 You can control the manner in which an image is anchored by setting the
12230 @code{:anchor} property of it's @code{#+ATTR_ODT} line. You can specify one
12231 of the following three values for the @code{:anchor} property:
12232 @samp{"as-char"}, @samp{"paragraph"} and @samp{"page"}.
12233
12234 To create an image that is anchored to a page, do the following:
12235 @example
12236 #+ATTR_ODT: :anchor "page"
12237 [[./img.png]]
12238 @end example
12239
12240 @node Math formatting in ODT export, Labels and captions in ODT export, Images in ODT export, OpenDocument Text export
12241 @subsection Math formatting in ODT export
12242
12243 The ODT exporter has special support for handling math.
12244
12245 @menu
12246 * Working with @LaTeX{} math snippets:: How to embed @LaTeX{} math fragments
12247 * Working with MathML or OpenDocument formula files:: How to embed equations in native format
12248 @end menu
12249
12250 @node Working with @LaTeX{} math snippets, Working with MathML or OpenDocument formula files, Math formatting in ODT export, Math formatting in ODT export
12251 @subsubsection Working with @LaTeX{} math snippets
12252
12253 @LaTeX{} math snippets (@pxref{@LaTeX{} fragments}) can be embedded in the ODT
12254 document in one of the following ways:
12255
12256 @cindex MathML
12257 @enumerate
12258 @item MathML
12259
12260 This option is activated on a per-file basis with
12261
12262 @example
12263 #+OPTIONS: LaTeX:t
12264 @end example
12265
12266 With this option, @LaTeX{} fragments are first converted into MathML
12267 fragments using an external @LaTeX{}-to-MathML converter program. The
12268 resulting MathML fragments are then embedded as an OpenDocument Formula in
12269 the exported document.
12270
12271 @vindex org-latex-to-mathml-convert-command
12272 @vindex org-latex-to-mathml-jar-file
12273
12274 You can specify the @LaTeX{}-to-MathML converter by customizing the variables
12275 @code{org-latex-to-mathml-convert-command} and
12276 @code{org-latex-to-mathml-jar-file}.
12277
12278 If you prefer to use @file{MathToWeb}@footnote{See
12279 @uref{http://www.mathtoweb.com/cgi-bin/mathtoweb_home.pl, MathToWeb}} as your
12280 converter, you can configure the above variables as shown below.
12281
12282 @lisp
12283 (setq org-latex-to-mathml-convert-command
12284 "java -jar %j -unicode -force -df %o %I"
12285 org-latex-to-mathml-jar-file
12286 "/path/to/mathtoweb.jar")
12287 @end lisp
12288
12289 You can use the following commands to quickly verify the reliability of
12290 the @LaTeX{}-to-MathML converter.
12291
12292 @table @kbd
12293 @item M-x org-odt-export-as-odf RET
12294 Convert a @LaTeX{} math snippet to an OpenDocument formula (@file{.odf}) file.
12295
12296 @item M-x org-odt-export-as-odf-and-open RET
12297 Convert a @LaTeX{} math snippet to an OpenDocument formula (@file{.odf}) file
12298 and open the formula file with the system-registered application.
12299 @end table
12300
12301 @cindex dvipng
12302 @cindex imagemagick
12303 @item PNG images
12304
12305 This option is activated on a per-file basis with
12306
12307 @example
12308 #+OPTIONS: tex:dvipng
12309 @end example
12310
12311 or:
12312
12313 @example
12314 #+OPTIONS: tex:imagemagick
12315 @end example
12316
12317 With this option, @LaTeX{} fragments are processed into PNG images and the
12318 resulting images are embedded in the exported document. This method requires
12319 that the @file{dvipng} program or @file{imagemagick} suite be available on
12320 your system.
12321 @end enumerate
12322
12323 @node Working with MathML or OpenDocument formula files, , Working with @LaTeX{} math snippets, Math formatting in ODT export
12324 @subsubsection Working with MathML or OpenDocument formula files
12325
12326 For various reasons, you may find embedding @LaTeX{} math snippets in an
12327 ODT document less than reliable. In that case, you can embed a
12328 math equation by linking to its MathML (@file{.mml}) source or its
12329 OpenDocument formula (@file{.odf}) file as shown below:
12330
12331 @example
12332 [[./equation.mml]]
12333 @end example
12334
12335 or
12336
12337 @example
12338 [[./equation.odf]]
12339 @end example
12340
12341 @node Labels and captions in ODT export, Literal examples in ODT export, Math formatting in ODT export, OpenDocument Text export
12342 @subsection Labels and captions in ODT export
12343
12344 You can label and caption various category of objects---an inline image, a
12345 table, a @LaTeX{} fragment or a Math formula---using @code{#+LABEL} and
12346 @code{#+CAPTION} lines. @xref{Images and tables}. ODT exporter enumerates
12347 each labeled or captioned object of a given category separately. As a
12348 result, each such object is assigned a sequence number based on order of it's
12349 appearance in the Org file.
12350
12351 In the exported document, a user-provided caption is augmented with the
12352 category and sequence number. Consider the following inline image in an Org
12353 file.
12354
12355 @example
12356 #+CAPTION: Bell curve
12357 #+LABEL: fig:SED-HR4049
12358 [[./img/a.png]]
12359 @end example
12360
12361 It could be rendered as shown below in the exported document.
12362
12363 @example
12364 Figure 2: Bell curve
12365 @end example
12366
12367 @vindex org-odt-category-map-alist
12368 You can modify the category component of the caption by customizing the
12369 option @code{org-odt-category-map-alist}. For example, to tag all embedded
12370 images with the string @samp{Illustration} (instead of the default
12371 @samp{Figure}) use the following setting:
12372
12373 @lisp
12374 (setq org-odt-category-map-alist
12375 (("__Figure__" "Illustration" "value" "Figure" org-odt--enumerable-image-p)))
12376 @end lisp
12377
12378 With this, previous image will be captioned as below in the exported
12379 document.
12380
12381 @example
12382 Illustration 2: Bell curve
12383 @end example
12384
12385 @node Literal examples in ODT export, Advanced topics in ODT export, Labels and captions in ODT export, OpenDocument Text export
12386 @subsection Literal examples in ODT export
12387
12388 Export of literal examples (@pxref{Literal examples}) with full fontification
12389 is supported. Internally, the exporter relies on @file{htmlfontify.el} to
12390 generate all style definitions needed for a fancy listing.@footnote{Your
12391 @file{htmlfontify.el} library must at least be at Emacs 24.1 levels for
12392 fontification to be turned on.} The auto-generated styles have @samp{OrgSrc}
12393 as prefix and inherit their color from the faces used by Emacs
12394 @code{font-lock} library for the source language.
12395
12396 @vindex org-odt-fontify-srcblocks
12397 If you prefer to use your own custom styles for fontification, you can do
12398 so by customizing the option
12399 @code{org-odt-create-custom-styles-for-srcblocks}.
12400
12401 @vindex org-odt-create-custom-styles-for-srcblocks
12402 You can turn off fontification of literal examples by customizing the
12403 option @code{org-odt-fontify-srcblocks}.
12404
12405 @node Advanced topics in ODT export, , Literal examples in ODT export, OpenDocument Text export
12406 @subsection Advanced topics in ODT export
12407
12408 If you rely heavily on ODT export, you may want to exploit the full
12409 set of features that the exporter offers. This section describes features
12410 that would be of interest to power users.
12411
12412 @menu
12413 * Configuring a document converter:: How to register a document converter
12414 * Working with OpenDocument style files:: Explore the internals
12415 * Creating one-off styles:: How to produce custom highlighting etc
12416 * Customizing tables in ODT export:: How to define and use Table templates
12417 * Validating OpenDocument XML:: How to debug corrupt OpenDocument files
12418 @end menu
12419
12420 @node Configuring a document converter, Working with OpenDocument style files, Advanced topics in ODT export, Advanced topics in ODT export
12421 @subsubsection Configuring a document converter
12422 @cindex convert
12423 @cindex doc, docx, rtf
12424 @cindex converter
12425
12426 The ODT exporter can work with popular converters with little or no
12427 extra configuration from your side. @xref{Extending ODT export}.
12428 If you are using a converter that is not supported by default or if you would
12429 like to tweak the default converter settings, proceed as below.
12430
12431 @enumerate
12432 @item Register the converter
12433
12434 @vindex org-odt-convert-processes
12435 Name your converter and add it to the list of known converters by
12436 customizing the option @code{org-odt-convert-processes}. Also specify how
12437 the converter can be invoked via command-line to effect the conversion.
12438
12439 @item Configure its capabilities
12440
12441 @vindex org-odt-convert-capabilities
12442 @anchor{x-odt-converter-capabilities} Specify the set of formats the
12443 converter can handle by customizing the variable
12444 @code{org-odt-convert-capabilities}. Use the default value for this
12445 variable as a guide for configuring your converter. As suggested by the
12446 default setting, you can specify the full set of formats supported by the
12447 converter and not limit yourself to specifying formats that are related to
12448 just the OpenDocument Text format.
12449
12450 @item Choose the converter
12451
12452 @vindex org-odt-convert-process
12453 Select the newly added converter as the preferred one by customizing the
12454 option @code{org-odt-convert-process}.
12455 @end enumerate
12456
12457 @node Working with OpenDocument style files, Creating one-off styles, Configuring a document converter, Advanced topics in ODT export
12458 @subsubsection Working with OpenDocument style files
12459 @cindex styles, custom
12460 @cindex template, custom
12461
12462 This section explores the internals of the ODT exporter and the
12463 means by which it produces styled documents. Read this section if you are
12464 interested in exploring the automatic and custom OpenDocument styles used by
12465 the exporter.
12466
12467 @anchor{x-factory-styles}
12468 @subsubheading Factory styles
12469
12470 The ODT exporter relies on two files for generating its output.
12471 These files are bundled with the distribution under the directory pointed to
12472 by the variable @code{org-odt-styles-dir}. The two files are:
12473
12474 @itemize
12475 @anchor{x-orgodtstyles-xml}
12476 @item
12477 @file{OrgOdtStyles.xml}
12478
12479 This file contributes to the @file{styles.xml} file of the final @samp{ODT}
12480 document. This file gets modified for the following purposes:
12481 @enumerate
12482
12483 @item
12484 To control outline numbering based on user settings.
12485
12486 @item
12487 To add styles generated by @file{htmlfontify.el} for fontification of code
12488 blocks.
12489 @end enumerate
12490
12491 @anchor{x-orgodtcontenttemplate-xml}
12492 @item
12493 @file{OrgOdtContentTemplate.xml}
12494
12495 This file contributes to the @file{content.xml} file of the final @samp{ODT}
12496 document. The contents of the Org outline are inserted between the
12497 @samp{<office:text>}@dots{}@samp{</office:text>} elements of this file.
12498
12499 Apart from serving as a template file for the final @file{content.xml}, the
12500 file serves the following purposes:
12501 @enumerate
12502
12503 @item
12504 It contains automatic styles for formatting of tables which are referenced by
12505 the exporter.
12506
12507 @item
12508 It contains @samp{<text:sequence-decl>}@dots{}@samp{</text:sequence-decl>}
12509 elements that control how various entities---tables, images, equations,
12510 etc.---are numbered.
12511 @end enumerate
12512 @end itemize
12513
12514 @anchor{x-overriding-factory-styles}
12515 @subsubheading Overriding factory styles
12516 The following two variables control the location from which the ODT
12517 exporter picks up the custom styles and content template files. You can
12518 customize these variables to override the factory styles used by the
12519 exporter.
12520
12521 @itemize
12522 @anchor{x-org-odt-styles-file}
12523 @item
12524 @code{org-odt-styles-file}
12525
12526 Use this variable to specify the @file{styles.xml} that will be used in the
12527 final output. You can specify one of the following values:
12528
12529 @enumerate
12530 @item A @file{styles.xml} file
12531
12532 Use this file instead of the default @file{styles.xml}
12533
12534 @item A @file{.odt} or @file{.ott} file
12535
12536 Use the @file{styles.xml} contained in the specified OpenDocument Text or
12537 Template file
12538
12539 @item A @file{.odt} or @file{.ott} file and a subset of files contained within them
12540
12541 Use the @file{styles.xml} contained in the specified OpenDocument Text or
12542 Template file. Additionally extract the specified member files and embed
12543 those within the final @samp{ODT} document.
12544
12545 Use this option if the @file{styles.xml} file references additional files
12546 like header and footer images.
12547
12548 @item @code{nil}
12549
12550 Use the default @file{styles.xml}
12551 @end enumerate
12552
12553 @anchor{x-org-odt-content-template-file}
12554 @item
12555 @code{org-odt-content-template-file}
12556
12557 Use this variable to specify the blank @file{content.xml} that will be used
12558 in the final output.
12559 @end itemize
12560
12561 @node Creating one-off styles, Customizing tables in ODT export, Working with OpenDocument style files, Advanced topics in ODT export
12562 @subsubsection Creating one-off styles
12563
12564 There are times when you would want one-off formatting in the exported
12565 document. You can achieve this by embedding raw OpenDocument XML in the Org
12566 file. The use of this feature is better illustrated with couple of examples.
12567
12568 @enumerate
12569 @item Embedding ODT tags as part of regular text
12570
12571 You can inline OpenDocument syntax by enclosing it within
12572 @samp{@@@@odt:...@@@@} markup. For example, to highlight a region of text do
12573 the following:
12574
12575 @example
12576 @@@@odt:<text:span text:style-name="Highlight">This is a highlighted
12577 text</text:span>@@@@. But this is a regular text.
12578 @end example
12579
12580 @strong{Hint:} To see the above example in action, edit your
12581 @file{styles.xml} (@pxref{x-orgodtstyles-xml,,Factory styles}) and add a
12582 custom @samp{Highlight} style as shown below.
12583
12584 @example
12585 <style:style style:name="Highlight" style:family="text">
12586 <style:text-properties fo:background-color="#ff0000"/>
12587 </style:style>
12588 @end example
12589
12590 @item Embedding a one-line OpenDocument XML
12591
12592 You can add a simple OpenDocument one-liner using the @code{#+ODT:}
12593 directive. For example, to force a page break do the following:
12594
12595 @example
12596 #+ODT: <text:p text:style-name="PageBreak"/>
12597 @end example
12598
12599 @strong{Hint:} To see the above example in action, edit your
12600 @file{styles.xml} (@pxref{x-orgodtstyles-xml,,Factory styles}) and add a
12601 custom @samp{PageBreak} style as shown below.
12602
12603 @example
12604 <style:style style:name="PageBreak" style:family="paragraph"
12605 style:parent-style-name="Text_20_body">
12606 <style:paragraph-properties fo:break-before="page"/>
12607 </style:style>
12608 @end example
12609
12610 @item Embedding a block of OpenDocument XML
12611
12612 You can add a large block of OpenDocument XML using the
12613 @code{#+BEGIN_ODT}@dots{}@code{#+END_ODT} construct.
12614
12615 For example, to create a one-off paragraph that uses bold text, do the
12616 following:
12617
12618 @example
12619 #+BEGIN_ODT
12620 <text:p text:style-name="Text_20_body_20_bold">
12621 This paragraph is specially formatted and uses bold text.
12622 </text:p>
12623 #+END_ODT
12624 @end example
12625
12626 @end enumerate
12627
12628 @node Customizing tables in ODT export, Validating OpenDocument XML, Creating one-off styles, Advanced topics in ODT export
12629 @subsubsection Customizing tables in ODT export
12630 @cindex tables, in ODT export
12631
12632 @cindex #+ATTR_ODT
12633 You can override the default formatting of the table by specifying a custom
12634 table style with the @code{#+ATTR_ODT} line. For a discussion on default
12635 formatting of tables @pxref{Tables in ODT export}.
12636
12637 This feature closely mimics the way table templates are defined in the
12638 OpenDocument-v1.2
12639 specification.@footnote{@url{http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html,
12640 OpenDocument-v1.2 Specification}}
12641
12642 @subsubheading Custom table styles: an illustration
12643
12644 @vindex org-odt-table-styles
12645 To have a quick preview of this feature, install the below setting and
12646 export the table that follows:
12647
12648 @lisp
12649 (setq org-odt-table-styles
12650 (append org-odt-table-styles
12651 '(("TableWithHeaderRowAndColumn" "Custom"
12652 ((use-first-row-styles . t)
12653 (use-first-column-styles . t)))
12654 ("TableWithFirstRowandLastRow" "Custom"
12655 ((use-first-row-styles . t)
12656 (use-last-row-styles . t))))))
12657 @end lisp
12658
12659 @example
12660 #+ATTR_ODT: :style "TableWithHeaderRowAndColumn"
12661 | Name | Phone | Age |
12662 | Peter | 1234 | 17 |
12663 | Anna | 4321 | 25 |
12664 @end example
12665
12666 In the above example, you used a template named @samp{Custom} and installed
12667 two table styles with the names @samp{TableWithHeaderRowAndColumn} and
12668 @samp{TableWithFirstRowandLastRow}. (@strong{Important:} The OpenDocument
12669 styles needed for producing the above template have been pre-defined for
12670 you. These styles are available under the section marked @samp{Custom
12671 Table Template} in @file{OrgOdtContentTemplate.xml}
12672 (@pxref{x-orgodtcontenttemplate-xml,,Factory styles}). If you need
12673 additional templates you have to define these styles yourselves.
12674
12675 @subsubheading Custom table styles: the nitty-gritty
12676 To use this feature proceed as follows:
12677
12678 @enumerate
12679 @item
12680 Create a table template@footnote{See the @code{<table:table-template>}
12681 element of the OpenDocument-v1.2 specification}
12682
12683 A table template is nothing but a set of @samp{table-cell} and
12684 @samp{paragraph} styles for each of the following table cell categories:
12685
12686 @itemize @minus
12687 @item Body
12688 @item First column
12689 @item Last column
12690 @item First row
12691 @item Last row
12692 @item Even row
12693 @item Odd row
12694 @item Even column
12695 @item Odd Column
12696 @end itemize
12697
12698 The names for the above styles must be chosen based on the name of the table
12699 template using a well-defined convention.
12700
12701 The naming convention is better illustrated with an example. For a table
12702 template with the name @samp{Custom}, the needed style names are listed in
12703 the following table.
12704
12705 @multitable {Table cell type} {CustomEvenColumnTableCell} {CustomEvenColumnTableParagraph}
12706 @headitem Table cell type
12707 @tab @code{table-cell} style
12708 @tab @code{paragraph} style
12709 @item
12710 @tab
12711 @tab
12712 @item Body
12713 @tab @samp{CustomTableCell}
12714 @tab @samp{CustomTableParagraph}
12715 @item First column
12716 @tab @samp{CustomFirstColumnTableCell}
12717 @tab @samp{CustomFirstColumnTableParagraph}
12718 @item Last column
12719 @tab @samp{CustomLastColumnTableCell}
12720 @tab @samp{CustomLastColumnTableParagraph}
12721 @item First row
12722 @tab @samp{CustomFirstRowTableCell}
12723 @tab @samp{CustomFirstRowTableParagraph}
12724 @item Last row
12725 @tab @samp{CustomLastRowTableCell}
12726 @tab @samp{CustomLastRowTableParagraph}
12727 @item Even row
12728 @tab @samp{CustomEvenRowTableCell}
12729 @tab @samp{CustomEvenRowTableParagraph}
12730 @item Odd row
12731 @tab @samp{CustomOddRowTableCell}
12732 @tab @samp{CustomOddRowTableParagraph}
12733 @item Even column
12734 @tab @samp{CustomEvenColumnTableCell}
12735 @tab @samp{CustomEvenColumnTableParagraph}
12736 @item Odd column
12737 @tab @samp{CustomOddColumnTableCell}
12738 @tab @samp{CustomOddColumnTableParagraph}
12739 @end multitable
12740
12741 To create a table template with the name @samp{Custom}, define the above
12742 styles in the
12743 @code{<office:automatic-styles>}...@code{</office:automatic-styles>} element
12744 of the content template file (@pxref{x-orgodtcontenttemplate-xml,,Factory
12745 styles}).
12746
12747 @item
12748 Define a table style@footnote{See the attributes @code{table:template-name},
12749 @code{table:use-first-row-styles}, @code{table:use-last-row-styles},
12750 @code{table:use-first-column-styles}, @code{table:use-last-column-styles},
12751 @code{table:use-banding-rows-styles}, and
12752 @code{table:use-banding-column-styles} of the @code{<table:table>} element in
12753 the OpenDocument-v1.2 specification}
12754
12755 @vindex org-odt-table-styles
12756 To define a table style, create an entry for the style in the variable
12757 @code{org-odt-table-styles} and specify the following:
12758
12759 @itemize @minus
12760 @item the name of the table template created in step (1)
12761 @item the set of cell styles in that template that are to be activated
12762 @end itemize
12763
12764 For example, the entry below defines two different table styles
12765 @samp{TableWithHeaderRowAndColumn} and @samp{TableWithFirstRowandLastRow}
12766 based on the same template @samp{Custom}. The styles achieve their intended
12767 effect by selectively activating the individual cell styles in that template.
12768
12769 @lisp
12770 (setq org-odt-table-styles
12771 (append org-odt-table-styles
12772 '(("TableWithHeaderRowAndColumn" "Custom"
12773 ((use-first-row-styles . t)
12774 (use-first-column-styles . t)))
12775 ("TableWithFirstRowandLastRow" "Custom"
12776 ((use-first-row-styles . t)
12777 (use-last-row-styles . t))))))
12778 @end lisp
12779
12780 @item
12781 Associate a table with the table style
12782
12783 To do this, specify the table style created in step (2) as part of
12784 the @code{ATTR_ODT} line as shown below.
12785
12786 @example
12787 #+ATTR_ODT: :style "TableWithHeaderRowAndColumn"
12788 | Name | Phone | Age |
12789 | Peter | 1234 | 17 |
12790 | Anna | 4321 | 25 |
12791 @end example
12792 @end enumerate
12793
12794 @node Validating OpenDocument XML, , Customizing tables in ODT export, Advanced topics in ODT export
12795 @subsubsection Validating OpenDocument XML
12796
12797 Occasionally, you will discover that the document created by the
12798 ODT exporter cannot be opened by your favorite application. One of
12799 the common reasons for this is that the @file{.odt} file is corrupt. In such
12800 cases, you may want to validate the document against the OpenDocument RELAX
12801 NG Compact Syntax (RNC) schema.
12802
12803 For de-compressing the @file{.odt} file@footnote{@file{.odt} files are
12804 nothing but @samp{zip} archives}: @inforef{File Archives,,emacs}. For
12805 general help with validation (and schema-sensitive editing) of XML files:
12806 @inforef{Introduction,,nxml-mode}.
12807
12808 @vindex org-odt-schema-dir
12809 If you have ready access to OpenDocument @file{.rnc} files and the needed
12810 schema-locating rules in a single folder, you can customize the variable
12811 @code{org-odt-schema-dir} to point to that directory. The ODT exporter
12812 will take care of updating the @code{rng-schema-locating-files} for you.
12813
12814 @c end opendocument
12815
12816 @node Org export
12817 @section Org export
12818 @cindex Org export
12819
12820 @code{org} export back-end creates a normalized version of the Org document
12821 in current buffer. In particular, it evaluates Babel code (@pxref{Evaluating
12822 code blocks}) and removes other back-ends specific contents.
12823
12824 @subheading Org export commands
12825
12826 @table @kbd
12827 @orgcmd{C-c C-e O o,org-org-export-to-org}
12828 Export as an Org document. For an Org file, @file{myfile.org}, the resulting
12829 file will be @file{myfile.org.org}. The file will be overwritten without
12830 warning.
12831 @orgcmd{C-c C-e O O,org-org-export-as-org}
12832 Export to a temporary buffer. Do not create a file.
12833 @item C-c C-e O v
12834 Export to an Org file, then open it.
12835 @end table
12836
12837 @node iCalendar export, Other built-in back-ends, Org export, Exporting
12838 @section iCalendar export
12839 @cindex iCalendar export
12840
12841 @vindex org-icalendar-include-todo
12842 @vindex org-icalendar-use-deadline
12843 @vindex org-icalendar-use-scheduled
12844 @vindex org-icalendar-categories
12845 @vindex org-icalendar-alarm-time
12846 Some people use Org mode for keeping track of projects, but still prefer a
12847 standard calendar application for anniversaries and appointments. In this
12848 case it can be useful to show deadlines and other time-stamped items in Org
12849 files in the calendar application. Org mode can export calendar information
12850 in the standard iCalendar format. If you also want to have TODO entries
12851 included in the export, configure the variable
12852 @code{org-icalendar-include-todo}. Plain timestamps are exported as VEVENT,
12853 and TODO items as VTODO@. It will also create events from deadlines that are
12854 in non-TODO items. Deadlines and scheduling dates in TODO items will be used
12855 to set the start and due dates for the TODO entry@footnote{See the variables
12856 @code{org-icalendar-use-deadline} and @code{org-icalendar-use-scheduled}.}.
12857 As categories, it will use the tags locally defined in the heading, and the
12858 file/tree category@footnote{To add inherited tags or the TODO state,
12859 configure the variable @code{org-icalendar-categories}.}. See the variable
12860 @code{org-icalendar-alarm-time} for a way to assign alarms to entries with a
12861 time.
12862
12863 @vindex org-icalendar-store-UID
12864 @cindex property, ID
12865 The iCalendar standard requires each entry to have a globally unique
12866 identifier (UID). Org creates these identifiers during export. If you set
12867 the variable @code{org-icalendar-store-UID}, the UID will be stored in the
12868 @code{:ID:} property of the entry and re-used next time you report this
12869 entry. Since a single entry can give rise to multiple iCalendar entries (as
12870 a timestamp, a deadline, a scheduled item, and as a TODO item), Org adds
12871 prefixes to the UID, depending on what triggered the inclusion of the entry.
12872 In this way the UID remains unique, but a synchronization program can still
12873 figure out from which entry all the different instances originate.
12874
12875 @table @kbd
12876 @orgcmd{C-c C-e c f,org-icalendar-export-to-ics}
12877 Create iCalendar entries for the current buffer and store them in the same
12878 directory, using a file extension @file{.ics}.
12879 @orgcmd{C-c C-e c a, org-icalendar-export-agenda-files}
12880 @vindex org-agenda-files
12881 Like @kbd{C-c C-e c f}, but do this for all files in
12882 @code{org-agenda-files}. For each of these files, a separate iCalendar
12883 file will be written.
12884 @orgcmd{C-c C-e c c,org-icalendar-combine-agenda-files}
12885 @vindex org-icalendar-combined-agenda-file
12886 Create a single large iCalendar file from all files in
12887 @code{org-agenda-files} and write it to the file given by
12888 @code{org-icalendar-combined-agenda-file}.
12889 @end table
12890
12891 @vindex org-use-property-inheritance
12892 @vindex org-icalendar-include-body
12893 @cindex property, SUMMARY
12894 @cindex property, DESCRIPTION
12895 @cindex property, LOCATION
12896 The export will honor SUMMARY, DESCRIPTION and LOCATION@footnote{The LOCATION
12897 property can be inherited from higher in the hierarchy if you configure
12898 @code{org-use-property-inheritance} accordingly.} properties if the selected
12899 entries have them. If not, the summary will be derived from the headline,
12900 and the description from the body (limited to
12901 @code{org-icalendar-include-body} characters).
12902
12903 How this calendar is best read and updated, depends on the application
12904 you are using. The FAQ covers this issue.
12905
12906 @node Other built-in back-ends, Export in foreign buffers, iCalendar export, Exporting
12907 @section Other built-in back-ends
12908 @cindex export back-ends, built-in
12909 @vindex org-export-backends
12910
12911 On top of the aforementioned back-ends, Org comes with other built-in ones:
12912
12913 @itemize
12914 @item @file{ox-man.el}: export to a man page.
12915 @item @file{ox-texinfo.el}: export to @code{Texinfo} format.
12916 @end itemize
12917
12918 To activate these export back-end, customize @code{org-export-backends} or
12919 load them directly with e.g., @code{(require 'ox-texinfo)}. This will add
12920 new keys in the export dispatcher (@pxref{The Export Dispatcher}).
12921
12922 See the comment section of these files for more information on how to use
12923 them.
12924
12925 @node Export in foreign buffers, Advanced configuration, Other built-in back-ends, Exporting
12926 @section Export in foreign buffers
12927
12928 Most built-in back-ends come with a command to convert the selected region
12929 into a selected format and replace this region by the exported output. Here
12930 is a list of such conversion commands:
12931
12932 @table @code
12933 @item org-html-convert-region-to-html
12934 Convert the selected region into HTML.
12935 @item org-latex-convert-region-to-latex
12936 Convert the selected region into @LaTeX{}.
12937 @item org-texinfo-convert-region-to-texinfo
12938 Convert the selected region into @code{Texinfo}.
12939 @item org-md-convert-region-to-md
12940 Convert the selected region into @code{MarkDown}.
12941 @end table
12942
12943 This is particularly useful for converting tables and lists in foreign
12944 buffers. E.g., in an HTML buffer, you can turn on @code{orgstruct-mode}, then
12945 use Org commands for editing a list, and finally select and convert the list
12946 with @code{M-x org-html-convert-region-to-html RET}.
12947
12948 @node Advanced configuration, , Export in foreign buffers, Exporting
12949 @section Advanced configuration
12950
12951 @subheading Hooks
12952
12953 @vindex org-export-before-processing-hook
12954 @vindex org-export-before-parsing-hook
12955 Two hooks are run during the first steps of the export process. The first
12956 one, @code{org-export-before-processing-hook} is called before expanding
12957 macros, Babel code and include keywords in the buffer. The second one,
12958 @code{org-export-before-parsing-hook}, as its name suggests, happens just
12959 before parsing the buffer. Their main use is for heavy duties, that is
12960 duties involving structural modifications of the document. For example, one
12961 may want to remove every headline in the buffer during export. The following
12962 code can achieve this:
12963
12964 @lisp
12965 @group
12966 (defun my-headline-removal (backend)
12967 "Remove all headlines in the current buffer.
12968 BACKEND is the export back-end being used, as a symbol."
12969 (org-map-entries
12970 (lambda () (delete-region (point) (progn (forward-line) (point))))))
12971
12972 (add-hook 'org-export-before-parsing-hook 'my-headline-removal)
12973 @end group
12974 @end lisp
12975
12976 Note that functions used in these hooks require a mandatory argument,
12977 a symbol representing the back-end used.
12978
12979 @subheading Filters
12980
12981 @cindex Filters, exporting
12982 Filters are lists of functions applied on a specific part of the output from
12983 a given back-end. More explicitly, each time a back-end transforms an Org
12984 object or element into another language, all functions within a given filter
12985 type are called in turn on the string produced. The string returned by the
12986 last function will be the one used in the final output.
12987
12988 There are filters sets for each type of element or object, for plain text,
12989 for the parse tree, for the export options and for the final output. They
12990 are all named after the same scheme: @code{org-export-filter-TYPE-functions},
12991 where @code{TYPE} is the type targeted by the filter. Valid types are:
12992
12993 @multitable @columnfractions .33 .33 .33
12994 @item bold
12995 @tab babel-call
12996 @tab center-block
12997 @item clock
12998 @tab code
12999 @tab comment
13000 @item comment-block
13001 @tab diary-sexp
13002 @tab drawer
13003 @item dynamic-block
13004 @tab entity
13005 @tab example-block
13006 @item export-block
13007 @tab export-snippet
13008 @tab final-output
13009 @item fixed-width
13010 @tab footnote-definition
13011 @tab footnote-reference
13012 @item headline
13013 @tab horizontal-rule
13014 @tab inline-babel-call
13015 @item inline-src-block
13016 @tab inlinetask
13017 @tab italic
13018 @item item
13019 @tab keyword
13020 @tab latex-environment
13021 @item latex-fragment
13022 @tab line-break
13023 @tab link
13024 @item node-property
13025 @tab options
13026 @tab paragraph
13027 @item parse-tree
13028 @tab plain-list
13029 @tab plain-text
13030 @item planning
13031 @tab property-drawer
13032 @tab quote-block
13033 @item quote-section
13034 @tab radio-target
13035 @tab section
13036 @item special-block
13037 @tab src-block
13038 @tab statistics-cookie
13039 @item strike-through
13040 @tab subscript
13041 @tab superscript
13042 @item table
13043 @tab table-cell
13044 @tab table-row
13045 @item target
13046 @tab timestamp
13047 @tab underline
13048 @item verbatim
13049 @tab verse-block
13050 @tab
13051 @end multitable
13052
13053 For example, the following snippet allows me to use non-breaking spaces in
13054 the Org buffer and get them translated into @LaTeX{} without using the
13055 @code{\nbsp} macro (where @code{_} stands for the non-breaking space):
13056
13057 @lisp
13058 @group
13059 (defun my-latex-filter-nobreaks (text backend info)
13060 "Ensure \" \" are properly handled in LaTeX export."
13061 (when (org-export-derived-backend-p backend 'latex)
13062 (replace-regexp-in-string " " "~" text)))
13063
13064 (add-to-list 'org-export-filter-plain-text-functions
13065 'my-latex-filter-nobreaks)
13066 @end group
13067 @end lisp
13068
13069 Three arguments must be provided to a filter: the code being changed, the
13070 back-end used, and some information about the export process. You can safely
13071 ignore the third argument for most purposes. Note the use of
13072 @code{org-export-derived-backend-p}, which ensures that the filter will only
13073 be applied when using @code{latex} back-end or any other back-end derived
13074 from it (e.g., @code{beamer}).
13075
13076 @subheading Extending an existing back-end
13077
13078 This is obviously the most powerful customization, since the changes happen
13079 at the parser level. Indeed, some export back-ends are built as extensions
13080 of other ones (e.g. Markdown back-end an extension of HTML back-end).
13081
13082 Extending a back-end means that if an element type is not transcoded by the
13083 new back-end, it will be handled by the original one. Hence you can extend
13084 specific parts of a back-end without too much work.
13085
13086 As an example, imagine we want the @code{ascii} back-end to display the
13087 language used in a source block, when it is available, but only when some
13088 attribute is non-@code{nil}, like the following:
13089
13090 @example
13091 #+ATTR_ASCII: :language t
13092 @end example
13093
13094 Because that back-end is lacking in that area, we are going to create a new
13095 back-end, @code{my-ascii} that will do the job.
13096
13097 @lisp
13098 @group
13099 (defun my-ascii-src-block (src-block contents info)
13100 "Transcode a SRC-BLOCK element from Org to ASCII.
13101 CONTENTS is nil. INFO is a plist used as a communication
13102 channel."
13103 (if (not (org-export-read-attribute :attr_ascii src-block :language))
13104 (org-export-with-backend 'ascii src-block contents info)
13105 (concat
13106 (format ",--[ %s ]--\n%s`----"
13107 (org-element-property :language src-block)
13108 (replace-regexp-in-string
13109 "^" "| "
13110 (org-element-normalize-string
13111 (org-export-format-code-default src-block info)))))))
13112
13113 (org-export-define-derived-backend 'my-ascii 'ascii
13114 :translate-alist '((src-block . my-ascii-src-block)))
13115 @end group
13116 @end lisp
13117
13118 The @code{my-ascii-src-block} function looks at the attribute above the
13119 element. If it isn't true, it gives hand to the @code{ascii} back-end.
13120 Otherwise, it creates a box around the code, leaving room for the language.
13121 A new back-end is then created. It only changes its behavior when
13122 translating @code{src-block} type element. Now, all it takes to use the new
13123 back-end is calling the following from an Org buffer:
13124
13125 @smalllisp
13126 (org-export-to-buffer 'my-ascii "*Org MY-ASCII Export*")
13127 @end smalllisp
13128
13129 It is obviously possible to write an interactive function for this, install
13130 it in the export dispatcher menu, and so on.
13131
13132 @node Publishing, Working With Source Code, Exporting, Top
13133 @chapter Publishing
13134 @cindex publishing
13135
13136 Org includes a publishing management system that allows you to configure
13137 automatic HTML conversion of @emph{projects} composed of interlinked org
13138 files. You can also configure Org to automatically upload your exported HTML
13139 pages and related attachments, such as images and source code files, to a web
13140 server.
13141
13142 You can also use Org to convert files into PDF, or even combine HTML and PDF
13143 conversion so that files are available in both formats on the server.
13144
13145 Publishing has been contributed to Org by David O'Toole.
13146
13147 @menu
13148 * Configuration:: Defining projects
13149 * Uploading files:: How to get files up on the server
13150 * Sample configuration:: Example projects
13151 * Triggering publication:: Publication commands
13152 @end menu
13153
13154 @node Configuration, Uploading files, Publishing, Publishing
13155 @section Configuration
13156
13157 Publishing needs significant configuration to specify files, destination
13158 and many other properties of a project.
13159
13160 @menu
13161 * Project alist:: The central configuration variable
13162 * Sources and destinations:: From here to there
13163 * Selecting files:: What files are part of the project?
13164 * Publishing action:: Setting the function doing the publishing
13165 * Publishing options:: Tweaking HTML/@LaTeX{} export
13166 * Publishing links:: Which links keep working after publishing?
13167 * Sitemap:: Generating a list of all pages
13168 * Generating an index:: An index that reaches across pages
13169 @end menu
13170
13171 @node Project alist, Sources and destinations, Configuration, Configuration
13172 @subsection The variable @code{org-publish-project-alist}
13173 @cindex org-publish-project-alist
13174 @cindex projects, for publishing
13175
13176 @vindex org-publish-project-alist
13177 Publishing is configured almost entirely through setting the value of one
13178 variable, called @code{org-publish-project-alist}. Each element of the list
13179 configures one project, and may be in one of the two following forms:
13180
13181 @lisp
13182 ("project-name" :property value :property value ...)
13183 @r{i.e., a well-formed property list with alternating keys and values}
13184 @r{or}
13185 ("project-name" :components ("project-name" "project-name" ...))
13186
13187 @end lisp
13188
13189 In both cases, projects are configured by specifying property values. A
13190 project defines the set of files that will be published, as well as the
13191 publishing configuration to use when publishing those files. When a project
13192 takes the second form listed above, the individual members of the
13193 @code{:components} property are taken to be sub-projects, which group
13194 together files requiring different publishing options. When you publish such
13195 a ``meta-project'', all the components will also be published, in the
13196 sequence given.
13197
13198 @node Sources and destinations, Selecting files, Project alist, Configuration
13199 @subsection Sources and destinations for files
13200 @cindex directories, for publishing
13201
13202 Most properties are optional, but some should always be set. In
13203 particular, Org needs to know where to look for source files,
13204 and where to put published files.
13205
13206 @multitable @columnfractions 0.3 0.7
13207 @item @code{:base-directory}
13208 @tab Directory containing publishing source files
13209 @item @code{:publishing-directory}
13210 @tab Directory where output files will be published. You can directly
13211 publish to a web server using a file name syntax appropriate for
13212 the Emacs @file{tramp} package. Or you can publish to a local directory and
13213 use external tools to upload your website (@pxref{Uploading files}).
13214 @item @code{:preparation-function}
13215 @tab Function or list of functions to be called before starting the
13216 publishing process, for example, to run @code{make} for updating files to be
13217 published. The project property list is scoped into this call as the
13218 variable @code{project-plist}.
13219 @item @code{:completion-function}
13220 @tab Function or list of functions called after finishing the publishing
13221 process, for example, to change permissions of the resulting files. The
13222 project property list is scoped into this call as the variable
13223 @code{project-plist}.
13224 @end multitable
13225 @noindent
13226
13227 @node Selecting files, Publishing action, Sources and destinations, Configuration
13228 @subsection Selecting files
13229 @cindex files, selecting for publishing
13230
13231 By default, all files with extension @file{.org} in the base directory
13232 are considered part of the project. This can be modified by setting the
13233 properties
13234 @multitable @columnfractions 0.25 0.75
13235 @item @code{:base-extension}
13236 @tab Extension (without the dot!) of source files. This actually is a
13237 regular expression. Set this to the symbol @code{any} if you want to get all
13238 files in @code{:base-directory}, even without extension.
13239
13240 @item @code{:exclude}
13241 @tab Regular expression to match file names that should not be
13242 published, even though they have been selected on the basis of their
13243 extension.
13244
13245 @item @code{:include}
13246 @tab List of files to be included regardless of @code{:base-extension}
13247 and @code{:exclude}.
13248
13249 @item @code{:recursive}
13250 @tab non-@code{nil} means, check base-directory recursively for files to publish.
13251 @end multitable
13252
13253 @node Publishing action, Publishing options, Selecting files, Configuration
13254 @subsection Publishing action
13255 @cindex action, for publishing
13256
13257 Publishing means that a file is copied to the destination directory and
13258 possibly transformed in the process. The default transformation is to export
13259 Org files as HTML files, and this is done by the function
13260 @code{org-html-publish-to-html}, which calls the HTML exporter (@pxref{HTML
13261 export}). But you also can publish your content as PDF files using
13262 @code{org-latex-publish-to-pdf} or as @code{ascii}, @code{Texinfo}, etc.,
13263 using the corresponding functions.
13264
13265 If you want to publish the Org file as an @code{.org} file but with the
13266 @i{archived}, @i{commented} and @i{tag-excluded} trees removed, use the
13267 function @code{org-org-publish-to-org}. This will produce @file{file.org}
13268 and put it in the publishing directory. If you want a htmlized version of
13269 this file, set the parameter @code{:htmlized-source} to @code{t}, it will
13270 produce @file{file.org.html} in the publishing directory@footnote{If the
13271 publishing directory is the same than the source directory, @file{file.org}
13272 will be exported as @file{file.org.org}, so probably don't want to do this.}.
13273
13274 Other files like images only need to be copied to the publishing destination.
13275 For this you can use @code{org-publish-attachment}. For non-org files, you
13276 always need to specify the publishing function:
13277
13278 @multitable @columnfractions 0.3 0.7
13279 @item @code{:publishing-function}
13280 @tab Function executing the publication of a file. This may also be a
13281 list of functions, which will all be called in turn.
13282 @item @code{:htmlized-source}
13283 @tab non-@code{nil} means, publish htmlized source.
13284 @end multitable
13285
13286 The function must accept three arguments: a property list containing at least
13287 a @code{:publishing-directory} property, the name of the file to be published
13288 and the path to the publishing directory of the output file. It should take
13289 the specified file, make the necessary transformation (if any) and place the
13290 result into the destination folder.
13291
13292 @node Publishing options, Publishing links, Publishing action, Configuration
13293 @subsection Options for the exporters
13294 @cindex options, for publishing
13295
13296 The property list can be used to set many export options for the exporters.
13297 In most cases, these properties correspond to user variables in Org. The
13298 first table below lists these properties along with the variable they belong
13299 to. The second table list HTML specific properties. See the documentation
13300 string of these options for details.
13301
13302 @vindex org-display-custom-times
13303 @vindex org-export-default-language
13304 @vindex org-export-exclude-tags
13305 @vindex org-export-headline-levels
13306 @vindex org-export-preserve-breaks
13307 @vindex org-export-publishing-directory
13308 @vindex org-export-select-tags
13309 @vindex org-export-with-archived-trees
13310 @vindex org-export-with-author
13311 @vindex org-export-with-creator
13312 @vindex org-export-with-drawers
13313 @vindex org-export-with-email
13314 @vindex org-export-with-emphasize
13315 @vindex org-export-with-fixed-width
13316 @vindex org-export-with-footnotes
13317 @vindex org-export-with-latex
13318 @vindex org-export-with-planning
13319 @vindex org-export-with-priority
13320 @vindex org-export-with-section-numbers
13321 @vindex org-export-with-special-strings
13322 @vindex org-export-with-sub-superscripts
13323 @vindex org-export-with-tables
13324 @vindex org-export-with-tags
13325 @vindex org-export-with-tasks
13326 @vindex org-export-with-timestamps
13327 @vindex org-export-with-toc
13328 @vindex org-export-with-todo-keywords
13329 @vindex user-mail-address
13330
13331 @multitable @columnfractions 0.32 0.68
13332 @item @code{:archived-trees} @tab @code{org-export-with-archived-trees}
13333 @item @code{:exclude-tags} @tab @code{org-export-exclude-tags}
13334 @item @code{:headline-levels} @tab @code{org-export-headline-levels}
13335 @item @code{:language} @tab @code{org-export-default-language}
13336 @item @code{:preserve-breaks} @tab @code{org-export-preserve-breaks}
13337 @item @code{:publishing-directory} @tab @code{org-export-publishing-directory}
13338 @item @code{:section-numbers} @tab @code{org-export-with-section-numbers}
13339 @item @code{:select-tags} @tab @code{org-export-select-tags}
13340 @item @code{:with-author} @tab @code{org-export-with-author}
13341 @item @code{:with-creator} @tab @code{org-export-with-creator}
13342 @item @code{:with-drawers} @tab @code{org-export-with-drawers}
13343 @item @code{:with-email} @tab @code{org-export-with-email}
13344 @item @code{:with-emphasize} @tab @code{org-export-with-emphasize}
13345 @item @code{:with-fixed-width} @tab @code{org-export-with-fixed-width}
13346 @item @code{:with-footnotes} @tab @code{org-export-with-footnotes}
13347 @item @code{:with-latex} @tab @code{org-export-with-latex}
13348 @item @code{:with-planning} @tab @code{org-export-with-planning}
13349 @item @code{:with-priority} @tab @code{org-export-with-priority}
13350 @item @code{:with-special-strings} @tab @code{org-export-with-special-strings}
13351 @item @code{:with-sub-superscript} @tab @code{org-export-with-sub-superscripts}
13352 @item @code{:with-tables} @tab @code{org-export-with-tables}
13353 @item @code{:with-tags} @tab @code{org-export-with-tags}
13354 @item @code{:with-tasks} @tab @code{org-export-with-tasks}
13355 @item @code{:with-timestamps} @tab @code{org-export-with-timestamps}
13356 @item @code{:with-toc} @tab @code{org-export-with-toc}
13357 @item @code{:with-todo-keywords} @tab @code{org-export-with-todo-keywords}
13358 @end multitable
13359
13360 @vindex org-html-doctype
13361 @vindex org-html-container-element
13362 @vindex org-html-html5-fancy
13363 @vindex org-html-xml-declaration
13364 @vindex org-html-link-up
13365 @vindex org-html-link-home
13366 @vindex org-html-link-org-files-as-html
13367 @vindex org-html-link-use-abs-url
13368 @vindex org-html-head
13369 @vindex org-html-head-extra
13370 @vindex org-html-inline-images
13371 @vindex org-html-extension
13372 @vindex org-html-preamble
13373 @vindex org-html-postamble
13374 @vindex org-html-table-default-attributes
13375 @vindex org-html-table-row-tags
13376 @vindex org-html-head-include-default-style
13377 @vindex org-html-head-include-scripts
13378 @multitable @columnfractions 0.32 0.68
13379 @item @code{:html-doctype} @tab @code{org-html-doctype}
13380 @item @code{:html-container} @tab @code{org-html-container-element}
13381 @item @code{:html-html5-fancy} @tab @code{org-html-html5-fancy}
13382 @item @code{:html-xml-declaration} @tab @code{org-html-xml-declaration}
13383 @item @code{:html-link-up} @tab @code{org-html-link-up}
13384 @item @code{:html-link-home} @tab @code{org-html-link-home}
13385 @item @code{:html-link-org-as-html} @tab @code{org-html-link-org-files-as-html}
13386 @item @code{:html-link-use-abs-url} @tab @code{org-html-link-use-abs-url}
13387 @item @code{:html-head} @tab @code{org-html-head}
13388 @item @code{:html-head-extra} @tab @code{org-html-head-extra}
13389 @item @code{:html-inline-images} @tab @code{org-html-inline-images}
13390 @item @code{:html-extension} @tab @code{org-html-extension}
13391 @item @code{:html-preamble} @tab @code{org-html-preamble}
13392 @item @code{:html-postamble} @tab @code{org-html-postamble}
13393 @item @code{:html-table-attributes} @tab @code{org-html-table-default-attributes}
13394 @item @code{:html-table-row-tags} @tab @code{org-html-table-row-tags}
13395 @item @code{:html-head-include-default-style} @tab @code{org-html-head-include-default-style}
13396 @item @code{:html-head-include-scripts} @tab @code{org-html-head-include-scripts}
13397 @end multitable
13398
13399 Most of the @code{org-export-with-*} variables have the same effect in each
13400 exporter.
13401
13402 @vindex org-publish-project-alist
13403 When a property is given a value in @code{org-publish-project-alist}, its
13404 setting overrides the value of the corresponding user variable (if any)
13405 during publishing. Options set within a file (@pxref{Export settings}),
13406 however, override everything.
13407
13408 @node Publishing links, Sitemap, Publishing options, Configuration
13409 @subsection Links between published files
13410 @cindex links, publishing
13411
13412 To create a link from one Org file to another, you would use something like
13413 @samp{[[file:foo.org][The foo]]} or simply @samp{file:foo.org.}
13414 (@pxref{Hyperlinks}). When published, this link becomes a link to
13415 @file{foo.html}. You can thus interlink the pages of your "org web" project
13416 and the links will work as expected when you publish them to HTML@. If you
13417 also publish the Org source file and want to link to it, use an @code{http:}
13418 link instead of a @code{file:} link, because @code{file:} links are converted
13419 to link to the corresponding @file{html} file.
13420
13421 You may also link to related files, such as images. Provided you are careful
13422 with relative file names, and provided you have also configured Org to upload
13423 the related files, these links will work too. See @ref{Complex example}, for
13424 an example of this usage.
13425
13426 @node Sitemap, Generating an index, Publishing links, Configuration
13427 @subsection Generating a sitemap
13428 @cindex sitemap, of published pages
13429
13430 The following properties may be used to control publishing of
13431 a map of files for a given project.
13432
13433 @multitable @columnfractions 0.35 0.65
13434 @item @code{:auto-sitemap}
13435 @tab When non-@code{nil}, publish a sitemap during @code{org-publish-current-project}
13436 or @code{org-publish-all}.
13437
13438 @item @code{:sitemap-filename}
13439 @tab Filename for output of sitemap. Defaults to @file{sitemap.org} (which
13440 becomes @file{sitemap.html}).
13441
13442 @item @code{:sitemap-title}
13443 @tab Title of sitemap page. Defaults to name of file.
13444
13445 @item @code{:sitemap-function}
13446 @tab Plug-in function to use for generation of the sitemap.
13447 Defaults to @code{org-publish-org-sitemap}, which generates a plain list
13448 of links to all files in the project.
13449
13450 @item @code{:sitemap-sort-folders}
13451 @tab Where folders should appear in the sitemap. Set this to @code{first}
13452 (default) or @code{last} to display folders first or last,
13453 respectively. Any other value will mix files and folders.
13454
13455 @item @code{:sitemap-sort-files}
13456 @tab How the files are sorted in the site map. Set this to
13457 @code{alphabetically} (default), @code{chronologically} or
13458 @code{anti-chronologically}. @code{chronologically} sorts the files with
13459 older date first while @code{anti-chronologically} sorts the files with newer
13460 date first. @code{alphabetically} sorts the files alphabetically. The date of
13461 a file is retrieved with @code{org-publish-find-date}.
13462
13463 @item @code{:sitemap-ignore-case}
13464 @tab Should sorting be case-sensitive? Default @code{nil}.
13465
13466 @item @code{:sitemap-file-entry-format}
13467 @tab With this option one can tell how a sitemap's entry is formatted in the
13468 sitemap. This is a format string with some escape sequences: @code{%t} stands
13469 for the title of the file, @code{%a} stands for the author of the file and
13470 @code{%d} stands for the date of the file. The date is retrieved with the
13471 @code{org-publish-find-date} function and formatted with
13472 @code{org-publish-sitemap-date-format}. Default @code{%t}.
13473
13474 @item @code{:sitemap-date-format}
13475 @tab Format string for the @code{format-time-string} function that tells how
13476 a sitemap entry's date is to be formatted. This property bypasses
13477 @code{org-publish-sitemap-date-format} which defaults to @code{%Y-%m-%d}.
13478
13479 @item @code{:sitemap-sans-extension}
13480 @tab When non-@code{nil}, remove filenames' extensions from the generated sitemap.
13481 Useful to have cool URIs (see @uref{http://www.w3.org/Provider/Style/URI}).
13482 Defaults to @code{nil}.
13483
13484 @end multitable
13485
13486 @node Generating an index, , Sitemap, Configuration
13487 @subsection Generating an index
13488 @cindex index, in a publishing project
13489
13490 Org mode can generate an index across the files of a publishing project.
13491
13492 @multitable @columnfractions 0.25 0.75
13493 @item @code{:makeindex}
13494 @tab When non-@code{nil}, generate in index in the file @file{theindex.org} and
13495 publish it as @file{theindex.html}.
13496 @end multitable
13497
13498 The file will be created when first publishing a project with the
13499 @code{:makeindex} set. The file only contains a statement @code{#+INCLUDE:
13500 "theindex.inc"}. You can then build around this include statement by adding
13501 a title, style information, etc.
13502
13503 @node Uploading files, Sample configuration, Configuration, Publishing
13504 @section Uploading files
13505 @cindex rsync
13506 @cindex unison
13507
13508 For those people already utilizing third party sync tools such as
13509 @command{rsync} or @command{unison}, it might be preferable not to use the built in
13510 @i{remote} publishing facilities of Org mode which rely heavily on
13511 Tramp. Tramp, while very useful and powerful, tends not to be
13512 so efficient for multiple file transfer and has been known to cause problems
13513 under heavy usage.
13514
13515 Specialized synchronization utilities offer several advantages. In addition
13516 to timestamp comparison, they also do content and permissions/attribute
13517 checks. For this reason you might prefer to publish your web to a local
13518 directory (possibly even @i{in place} with your Org files) and then use
13519 @file{unison} or @file{rsync} to do the synchronization with the remote host.
13520
13521 Since Unison (for example) can be configured as to which files to transfer to
13522 a certain remote destination, it can greatly simplify the project publishing
13523 definition. Simply keep all files in the correct location, process your Org
13524 files with @code{org-publish} and let the synchronization tool do the rest.
13525 You do not need, in this scenario, to include attachments such as @file{jpg},
13526 @file{css} or @file{gif} files in the project definition since the 3rd party
13527 tool syncs them.
13528
13529 Publishing to a local directory is also much faster than to a remote one, so
13530 that you can afford more easily to republish entire projects. If you set
13531 @code{org-publish-use-timestamps-flag} to @code{nil}, you gain the main
13532 benefit of re-including any changed external files such as source example
13533 files you might include with @code{#+INCLUDE:}. The timestamp mechanism in
13534 Org is not smart enough to detect if included files have been modified.
13535
13536 @node Sample configuration, Triggering publication, Uploading files, Publishing
13537 @section Sample configuration
13538
13539 Below we provide two example configurations. The first one is a simple
13540 project publishing only a set of Org files. The second example is
13541 more complex, with a multi-component project.
13542
13543 @menu
13544 * Simple example:: One-component publishing
13545 * Complex example:: A multi-component publishing example
13546 @end menu
13547
13548 @node Simple example, Complex example, Sample configuration, Sample configuration
13549 @subsection Example: simple publishing configuration
13550
13551 This example publishes a set of Org files to the @file{public_html}
13552 directory on the local machine.
13553
13554 @lisp
13555 (setq org-publish-project-alist
13556 '(("org"
13557 :base-directory "~/org/"
13558 :publishing-directory "~/public_html"
13559 :section-numbers nil
13560 :with-toc nil
13561 :html-head "<link rel=\"stylesheet\"
13562 href=\"../other/mystyle.css\"
13563 type=\"text/css\"/>")))
13564 @end lisp
13565
13566 @node Complex example, , Simple example, Sample configuration
13567 @subsection Example: complex publishing configuration
13568
13569 This more complicated example publishes an entire website, including
13570 Org files converted to HTML, image files, Emacs Lisp source code, and
13571 style sheets. The publishing directory is remote and private files are
13572 excluded.
13573
13574 To ensure that links are preserved, care should be taken to replicate
13575 your directory structure on the web server, and to use relative file
13576 paths. For example, if your Org files are kept in @file{~/org} and your
13577 publishable images in @file{~/images}, you would link to an image with
13578 @c
13579 @example
13580 file:../images/myimage.png
13581 @end example
13582 @c
13583 On the web server, the relative path to the image should be the
13584 same. You can accomplish this by setting up an "images" folder in the
13585 right place on the web server, and publishing images to it.
13586
13587 @lisp
13588 (setq org-publish-project-alist
13589 '(("orgfiles"
13590 :base-directory "~/org/"
13591 :base-extension "org"
13592 :publishing-directory "/ssh:user@@host:~/html/notebook/"
13593 :publishing-function org-html-publish-to-html
13594 :exclude "PrivatePage.org" ;; regexp
13595 :headline-levels 3
13596 :section-numbers nil
13597 :with-toc nil
13598 :html-head "<link rel=\"stylesheet\"
13599 href=\"../other/mystyle.css\" type=\"text/css\"/>"
13600 :html-preamble t)
13601
13602 ("images"
13603 :base-directory "~/images/"
13604 :base-extension "jpg\\|gif\\|png"
13605 :publishing-directory "/ssh:user@@host:~/html/images/"
13606 :publishing-function org-publish-attachment)
13607
13608 ("other"
13609 :base-directory "~/other/"
13610 :base-extension "css\\|el"
13611 :publishing-directory "/ssh:user@@host:~/html/other/"
13612 :publishing-function org-publish-attachment)
13613 ("website" :components ("orgfiles" "images" "other"))))
13614 @end lisp
13615
13616 @node Triggering publication, , Sample configuration, Publishing
13617 @section Triggering publication
13618
13619 Once properly configured, Org can publish with the following commands:
13620
13621 @table @kbd
13622 @orgcmd{C-c C-e P x,org-publish}
13623 Prompt for a specific project and publish all files that belong to it.
13624 @orgcmd{C-c C-e P p,org-publish-current-project}
13625 Publish the project containing the current file.
13626 @orgcmd{C-c C-e P f,org-publish-current-file}
13627 Publish only the current file.
13628 @orgcmd{C-c C-e P a,org-publish-all}
13629 Publish every project.
13630 @end table
13631
13632 @vindex org-publish-use-timestamps-flag
13633 Org uses timestamps to track when a file has changed. The above functions
13634 normally only publish changed files. You can override this and force
13635 publishing of all files by giving a prefix argument to any of the commands
13636 above, or by customizing the variable @code{org-publish-use-timestamps-flag}.
13637 This may be necessary in particular if files include other files via
13638 @code{#+SETUPFILE:} or @code{#+INCLUDE:}.
13639
13640 @comment node-name, next, previous, up
13641 @comment Working With Source Code, Miscellaneous, Publishing, Top
13642
13643 @node Working With Source Code, Miscellaneous, Publishing, Top
13644 @chapter Working with source code
13645 @cindex Schulte, Eric
13646 @cindex Davison, Dan
13647 @cindex source code, working with
13648
13649 Source code can be included in Org mode documents using a @samp{src} block,
13650 e.g.:
13651
13652 @example
13653 #+BEGIN_SRC emacs-lisp
13654 (defun org-xor (a b)
13655 "Exclusive or."
13656 (if a (not b) b))
13657 #+END_SRC
13658 @end example
13659
13660 Org mode provides a number of features for working with live source code,
13661 including editing of code blocks in their native major-mode, evaluation of
13662 code blocks, converting code blocks into source files (known as @dfn{tangling}
13663 in literate programming), and exporting code blocks and their
13664 results in several formats. This functionality was contributed by Eric
13665 Schulte and Dan Davison, and was originally named Org-babel.
13666
13667 The following sections describe Org mode's code block handling facilities.
13668
13669 @menu
13670 * Structure of code blocks:: Code block syntax described
13671 * Editing source code:: Language major-mode editing
13672 * Exporting code blocks:: Export contents and/or results
13673 * Extracting source code:: Create pure source code files
13674 * Evaluating code blocks:: Place results of evaluation in the Org mode buffer
13675 * Library of Babel:: Use and contribute to a library of useful code blocks
13676 * Languages:: List of supported code block languages
13677 * Header arguments:: Configure code block functionality
13678 * Results of evaluation:: How evaluation results are handled
13679 * Noweb reference syntax:: Literate programming in Org mode
13680 * Key bindings and useful functions:: Work quickly with code blocks
13681 * Batch execution:: Call functions from the command line
13682 @end menu
13683
13684 @comment node-name, next, previous, up
13685 @comment Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
13686
13687 @node Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
13688 @section Structure of code blocks
13689 @cindex code block, structure
13690 @cindex source code, block structure
13691 @cindex #+NAME
13692 @cindex #+BEGIN_SRC
13693
13694 Live code blocks can be specified with a @samp{src} block or
13695 inline.@footnote{Note that @samp{src} blocks may be inserted using Org mode's
13696 @ref{Easy Templates} system} The structure of a @samp{src} block is
13697
13698 @example
13699 #+NAME: <name>
13700 #+BEGIN_SRC <language> <switches> <header arguments>
13701 <body>
13702 #+END_SRC
13703 @end example
13704
13705 The @code{#+NAME:} line is optional, and can be used to name the code
13706 block. Live code blocks require that a language be specified on the
13707 @code{#+BEGIN_SRC} line. Switches and header arguments are optional.
13708 @cindex source code, inline
13709
13710 Live code blocks can also be specified inline using
13711
13712 @example
13713 src_<language>@{<body>@}
13714 @end example
13715
13716 or
13717
13718 @example
13719 src_<language>[<header arguments>]@{<body>@}
13720 @end example
13721
13722 @table @code
13723 @item <#+NAME: name>
13724 This line associates a name with the code block. This is similar to the
13725 @code{#+NAME: Name} lines that can be used to name tables in Org mode
13726 files. Referencing the name of a code block makes it possible to evaluate
13727 the block from other places in the file, from other files, or from Org mode
13728 table formulas (see @ref{The spreadsheet}). Names are assumed to be unique
13729 and the behavior of Org mode when two or more blocks share the same name is
13730 undefined.
13731 @cindex #+NAME
13732 @item <language>
13733 The language of the code in the block (see @ref{Languages}).
13734 @cindex source code, language
13735 @item <switches>
13736 Optional switches control code block export (see the discussion of switches in
13737 @ref{Literal examples})
13738 @cindex source code, switches
13739 @item <header arguments>
13740 Optional header arguments control many aspects of evaluation, export and
13741 tangling of code blocks (see @ref{Header arguments}).
13742 Header arguments can also be set on a per-buffer or per-subtree
13743 basis using properties.
13744 @item source code, header arguments
13745 @item <body>
13746 Source code in the specified language.
13747 @end table
13748
13749 @comment node-name, next, previous, up
13750 @comment Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
13751
13752 @node Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
13753 @section Editing source code
13754 @cindex code block, editing
13755 @cindex source code, editing
13756
13757 @vindex org-edit-src-auto-save-idle-delay
13758 @vindex org-edit-src-turn-on-auto-save
13759 @kindex C-c '
13760 Use @kbd{C-c '} to edit the current code block. This brings up a language
13761 major-mode edit buffer containing the body of the code block. Manually
13762 saving this buffer with @key{C-x C-s} will write the contents back to the Org
13763 buffer. You can also set @code{org-edit-src-auto-save-idle-delay} to save the
13764 base buffer after some idle delay, or @code{org-edit-src-turn-on-auto-save}
13765 to auto-save this buffer into a separate file using @code{auto-save-mode}.
13766 Use @kbd{C-c '} again to exit.
13767
13768 The @code{org-src-mode} minor mode will be active in the edit buffer. The
13769 following variables can be used to configure the behavior of the edit
13770 buffer. See also the customization group @code{org-edit-structure} for
13771 further configuration options.
13772
13773 @table @code
13774 @item org-src-lang-modes
13775 If an Emacs major-mode named @code{<lang>-mode} exists, where
13776 @code{<lang>} is the language named in the header line of the code block,
13777 then the edit buffer will be placed in that major-mode. This variable
13778 can be used to map arbitrary language names to existing major modes.
13779 @item org-src-window-setup
13780 Controls the way Emacs windows are rearranged when the edit buffer is created.
13781 @item org-src-preserve-indentation
13782 By default, the value is @code{nil}, which means that when code blocks are
13783 evaluated during export or tangled, they are re-inserted into the code block,
13784 which may replace sequences of spaces with tab characters. When non-nil,
13785 whitespace in code blocks will be preserved during export or tangling,
13786 exactly as it appears. This variable is especially useful for tangling
13787 languages such as Python, in which whitespace indentation in the output is
13788 critical.
13789 @item org-src-ask-before-returning-to-edit-buffer
13790 By default, Org will ask before returning to an open edit buffer. Set this
13791 variable to @code{nil} to switch without asking.
13792 @end table
13793
13794 To turn on native code fontification in the @emph{Org} buffer, configure the
13795 variable @code{org-src-fontify-natively}.
13796
13797 @comment node-name, next, previous, up
13798 @comment Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
13799
13800 @node Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
13801 @section Exporting code blocks
13802 @cindex code block, exporting
13803 @cindex source code, exporting
13804
13805 It is possible to export the @emph{code} of code blocks, the @emph{results}
13806 of code block evaluation, @emph{both} the code and the results of code block
13807 evaluation, or @emph{none}. For most languages, the default exports code.
13808 However, for some languages (e.g., @code{ditaa}) the default exports the
13809 results of code block evaluation. For information on exporting code block
13810 bodies, see @ref{Literal examples}.
13811
13812 The @code{:exports} header argument can be used to specify export
13813 behavior:
13814
13815 @subsubheading Header arguments:
13816
13817 @table @code
13818 @item :exports code
13819 The default in most languages. The body of the code block is exported, as
13820 described in @ref{Literal examples}.
13821 @item :exports results
13822 The code block will be evaluated and the results will be placed in the
13823 Org mode buffer for export, either updating previous results of the code
13824 block located anywhere in the buffer or, if no previous results exist,
13825 placing the results immediately after the code block. The body of the code
13826 block will not be exported.
13827 @item :exports both
13828 Both the code block and its results will be exported.
13829 @item :exports none
13830 Neither the code block nor its results will be exported.
13831 @end table
13832
13833 It is possible to inhibit the evaluation of code blocks during export.
13834 Setting the @code{org-export-babel-evaluate} variable to @code{nil} will
13835 ensure that no code blocks are evaluated as part of the export process. This
13836 can be useful in situations where potentially untrusted Org mode files are
13837 exported in an automated fashion, for example when Org mode is used as the
13838 markup language for a wiki. It is also possible to set this variable to
13839 @code{'inline-only}. In that case, only inline code blocks will be
13840 evaluated, in order to insert their results. Non-inline code blocks are
13841 assumed to have their results already inserted in the buffer by manual
13842 evaluation. This setting is useful to avoid expensive recalculations during
13843 export, not to provide security.
13844
13845 @comment node-name, next, previous, up
13846 @comment Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
13847 @node Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
13848 @section Extracting source code
13849 @cindex tangling
13850 @cindex source code, extracting
13851 @cindex code block, extracting source code
13852
13853 Creating pure source code files by extracting code from source blocks is
13854 referred to as ``tangling''---a term adopted from the literate programming
13855 community. During ``tangling'' of code blocks their bodies are expanded
13856 using @code{org-babel-expand-src-block} which can expand both variable and
13857 ``noweb'' style references (see @ref{Noweb reference syntax}).
13858
13859 @subsubheading Header arguments
13860
13861 @table @code
13862 @item :tangle no
13863 The default. The code block is not included in the tangled output.
13864 @item :tangle yes
13865 Include the code block in the tangled output. The output file name is the
13866 name of the org file with the extension @samp{.org} replaced by the extension
13867 for the block language.
13868 @item :tangle filename
13869 Include the code block in the tangled output to file @samp{filename}.
13870 @end table
13871
13872 @kindex C-c C-v t
13873 @subsubheading Functions
13874
13875 @table @code
13876 @item org-babel-tangle
13877 Tangle the current file. Bound to @kbd{C-c C-v t}.
13878
13879 With prefix argument only tangle the current code block.
13880 @item org-babel-tangle-file
13881 Choose a file to tangle. Bound to @kbd{C-c C-v f}.
13882 @end table
13883
13884 @subsubheading Hooks
13885
13886 @table @code
13887 @item org-babel-post-tangle-hook
13888 This hook is run from within code files tangled by @code{org-babel-tangle}.
13889 Example applications could include post-processing, compilation or evaluation
13890 of tangled code files.
13891 @end table
13892
13893 @subsubheading Jumping between code and Org
13894
13895 When tangling code from an Org-mode buffer to a source code file, you'll
13896 frequently find yourself viewing the file of tangled source code (e.g., many
13897 debuggers point to lines of the source code file). It is useful to be able
13898 to navigate from the tangled source to the Org-mode buffer from which the
13899 code originated.
13900
13901 The @code{org-babel-tangle-jump-to-org} function provides this jumping from
13902 code to Org-mode functionality. Two header arguments are required for
13903 jumping to work, first the @code{padline} (@ref{padline}) option must be set
13904 to true (the default setting), second the @code{comments} (@ref{comments})
13905 header argument must be set to @code{links}, which will insert comments into
13906 the source code buffer which point back to the original Org-mode file.
13907
13908 @node Evaluating code blocks, Library of Babel, Extracting source code, Working With Source Code
13909 @section Evaluating code blocks
13910 @cindex code block, evaluating
13911 @cindex source code, evaluating
13912 @cindex #+RESULTS
13913
13914 Code blocks can be evaluated@footnote{Whenever code is evaluated there is a
13915 potential for that code to do harm. Org mode provides safeguards to ensure
13916 that code is only evaluated after explicit confirmation from the user. For
13917 information on these safeguards (and on how to disable them) see @ref{Code
13918 evaluation security}.} and the results of evaluation optionally placed in the
13919 Org mode buffer. The results of evaluation are placed following a line that
13920 begins by default with @code{#+RESULTS} and optionally a cache identifier
13921 and/or the name of the evaluated code block. The default value of
13922 @code{#+RESULTS} can be changed with the customizable variable
13923 @code{org-babel-results-keyword}.
13924
13925 By default, the evaluation facility is only enabled for Lisp code blocks
13926 specified as @code{emacs-lisp}. However, source code blocks in many languages
13927 can be evaluated within Org mode (see @ref{Languages} for a list of supported
13928 languages and @ref{Structure of code blocks} for information on the syntax
13929 used to define a code block).
13930
13931 @kindex C-c C-c
13932 There are a number of ways to evaluate code blocks. The simplest is to press
13933 @kbd{C-c C-c} or @kbd{C-c C-v e} with the point on a code block@footnote{The
13934 option @code{org-babel-no-eval-on-ctrl-c-ctrl-c} can be used to remove code
13935 evaluation from the @kbd{C-c C-c} key binding.}. This will call the
13936 @code{org-babel-execute-src-block} function to evaluate the block and insert
13937 its results into the Org mode buffer.
13938 @cindex #+CALL
13939
13940 It is also possible to evaluate named code blocks from anywhere in an Org
13941 mode buffer or an Org mode table. Live code blocks located in the current
13942 Org mode buffer or in the ``Library of Babel'' (see @ref{Library of Babel})
13943 can be executed. Named code blocks can be executed with a separate
13944 @code{#+CALL:} line or inline within a block of text.
13945
13946 The syntax of the @code{#+CALL:} line is
13947
13948 @example
13949 #+CALL: <name>(<arguments>)
13950 #+CALL: <name>[<inside header arguments>](<arguments>) <end header arguments>
13951 @end example
13952
13953 The syntax for inline evaluation of named code blocks is
13954
13955 @example
13956 ... call_<name>(<arguments>) ...
13957 ... call_<name>[<inside header arguments>](<arguments>)[<end header arguments>] ...
13958 @end example
13959
13960 @table @code
13961 @item <name>
13962 The name of the code block to be evaluated (see @ref{Structure of code blocks}).
13963 @item <arguments>
13964 Arguments specified in this section will be passed to the code block. These
13965 arguments use standard function call syntax, rather than
13966 header argument syntax. For example, a @code{#+CALL:} line that passes the
13967 number four to a code block named @code{double}, which declares the header
13968 argument @code{:var n=2}, would be written as @code{#+CALL: double(n=4)}.
13969 @item <inside header arguments>
13970 Inside header arguments are passed through and applied to the named code
13971 block. These arguments use header argument syntax rather than standard
13972 function call syntax. Inside header arguments affect how the code block is
13973 evaluated. For example, @code{[:results output]} will collect the results of
13974 everything printed to @code{STDOUT} during execution of the code block.
13975 @item <end header arguments>
13976 End header arguments are applied to the calling instance and do not affect
13977 evaluation of the named code block. They affect how the results are
13978 incorporated into the Org mode buffer and how the call line is exported. For
13979 example, @code{:results html} will insert the results of the call line
13980 evaluation in the Org buffer, wrapped in a @code{BEGIN_HTML:} block.
13981
13982 For more examples of passing header arguments to @code{#+CALL:} lines see
13983 @ref{Header arguments in function calls}.
13984 @end table
13985
13986 @node Library of Babel, Languages, Evaluating code blocks, Working With Source Code
13987 @section Library of Babel
13988 @cindex babel, library of
13989 @cindex source code, library
13990 @cindex code block, library
13991
13992 The ``Library of Babel'' consists of code blocks that can be called from any
13993 Org mode file. Code blocks defined in the ``Library of Babel'' can be called
13994 remotely as if they were in the current Org mode buffer (see @ref{Evaluating
13995 code blocks} for information on the syntax of remote code block evaluation).
13996
13997
13998 The central repository of code blocks in the ``Library of Babel'' is housed
13999 in an Org mode file located in the @samp{contrib} directory of Org mode.
14000
14001 Users can add code blocks they believe to be generally useful to their
14002 ``Library of Babel.'' The code blocks can be stored in any Org mode file and
14003 then loaded into the library with @code{org-babel-lob-ingest}.
14004
14005
14006 @kindex C-c C-v i
14007 Code blocks located in any Org mode file can be loaded into the ``Library of
14008 Babel'' with the @code{org-babel-lob-ingest} function, bound to @kbd{C-c C-v
14009 i}.
14010
14011 @node Languages, Header arguments, Library of Babel, Working With Source Code
14012 @section Languages
14013 @cindex babel, languages
14014 @cindex source code, languages
14015 @cindex code block, languages
14016
14017 Code blocks in the following languages are supported.
14018
14019 @multitable @columnfractions 0.28 0.3 0.22 0.2
14020 @item @b{Language} @tab @b{Identifier} @tab @b{Language} @tab @b{Identifier}
14021 @item Asymptote @tab asymptote @tab Awk @tab awk
14022 @item Emacs Calc @tab calc @tab C @tab C
14023 @item C++ @tab C++ @tab Clojure @tab clojure
14024 @item CSS @tab css @tab ditaa @tab ditaa
14025 @item Graphviz @tab dot @tab Emacs Lisp @tab emacs-lisp
14026 @item gnuplot @tab gnuplot @tab Haskell @tab haskell
14027 @item Java @tab java @tab @tab
14028 @item Javascript @tab js @tab LaTeX @tab latex
14029 @item Ledger @tab ledger @tab Lisp @tab lisp
14030 @item Lilypond @tab lilypond @tab MATLAB @tab matlab
14031 @item Mscgen @tab mscgen @tab Objective Caml @tab ocaml
14032 @item Octave @tab octave @tab Org mode @tab org
14033 @item Oz @tab oz @tab Perl @tab perl
14034 @item Plantuml @tab plantuml @tab Python @tab python
14035 @item R @tab R @tab Ruby @tab ruby
14036 @item Sass @tab sass @tab Scheme @tab scheme
14037 @item GNU Screen @tab screen @tab shell @tab sh
14038 @item SQL @tab sql @tab SQLite @tab sqlite
14039 @end multitable
14040
14041 Language-specific documentation is available for some languages. If
14042 available, it can be found at
14043 @uref{http://orgmode.org/worg/org-contrib/babel/languages.html}.
14044
14045 The option @code{org-babel-load-languages} controls which languages are
14046 enabled for evaluation (by default only @code{emacs-lisp} is enabled). This
14047 variable can be set using the customization interface or by adding code like
14048 the following to your emacs configuration.
14049
14050 @quotation
14051 The following disables @code{emacs-lisp} evaluation and enables evaluation of
14052 @code{R} code blocks.
14053 @end quotation
14054
14055 @lisp
14056 (org-babel-do-load-languages
14057 'org-babel-load-languages
14058 '((emacs-lisp . nil)
14059 (R . t)))
14060 @end lisp
14061
14062 It is also possible to enable support for a language by loading the related
14063 elisp file with @code{require}.
14064
14065 @quotation
14066 The following adds support for evaluating @code{clojure} code blocks.
14067 @end quotation
14068
14069 @lisp
14070 (require 'ob-clojure)
14071 @end lisp
14072
14073 @node Header arguments, Results of evaluation, Languages, Working With Source Code
14074 @section Header arguments
14075 @cindex code block, header arguments
14076 @cindex source code, block header arguments
14077
14078 Code block functionality can be configured with header arguments. This
14079 section provides an overview of the use of header arguments, and then
14080 describes each header argument in detail.
14081
14082 @menu
14083 * Using header arguments:: Different ways to set header arguments
14084 * Specific header arguments:: List of header arguments
14085 @end menu
14086
14087 @node Using header arguments, Specific header arguments, Header arguments, Header arguments
14088 @subsection Using header arguments
14089
14090 The values of header arguments can be set in several way. When the header
14091 arguments in each layer have been determined, they are combined in order from
14092 the first, least specific (having the lowest priority) up to the last, most
14093 specific (having the highest priority). A header argument with a higher
14094 priority replaces the same header argument specified at lower priority.
14095 @menu
14096 * System-wide header arguments:: Set global default values
14097 * Language-specific header arguments:: Set default values by language
14098 * Header arguments in Org mode properties:: Set default values for a buffer or heading
14099 * Language-specific header arguments in Org mode properties:: Set language-specific default values for a buffer or heading
14100 * Code block specific header arguments:: The most common way to set values
14101 * Header arguments in function calls:: The most specific level
14102 @end menu
14103
14104
14105 @node System-wide header arguments, Language-specific header arguments, Using header arguments, Using header arguments
14106 @subsubheading System-wide header arguments
14107 @vindex org-babel-default-header-args
14108 System-wide values of header arguments can be specified by adapting the
14109 @code{org-babel-default-header-args} variable:
14110
14111 @example
14112 :session => "none"
14113 :results => "replace"
14114 :exports => "code"
14115 :cache => "no"
14116 :noweb => "no"
14117 @end example
14118
14119 For example, the following example could be used to set the default value of
14120 @code{:noweb} header arguments to @code{yes}. This would have the effect of
14121 expanding @code{:noweb} references by default when evaluating source code
14122 blocks.
14123
14124 @lisp
14125 (setq org-babel-default-header-args
14126 (cons '(:noweb . "yes")
14127 (assq-delete-all :noweb org-babel-default-header-args)))
14128 @end lisp
14129
14130 @node Language-specific header arguments, Header arguments in Org mode properties, System-wide header arguments, Using header arguments
14131 @subsubheading Language-specific header arguments
14132 Each language can define its own set of default header arguments in variable
14133 @code{org-babel-default-header-args:<lang>}, where @code{<lang>} is the name
14134 of the language. See the language-specific documentation available online at
14135 @uref{http://orgmode.org/worg/org-contrib/babel}.
14136
14137 @node Header arguments in Org mode properties, Language-specific header arguments in Org mode properties, Language-specific header arguments, Using header arguments
14138 @subsubheading Header arguments in Org mode properties
14139
14140 Buffer-wide header arguments may be specified as properties through the use
14141 of @code{#+PROPERTY:} lines placed anywhere in an Org mode file (see
14142 @ref{Property syntax}).
14143
14144 For example the following would set @code{session} to @code{*R*} (only for R
14145 code blocks), and @code{results} to @code{silent} for every code block in the
14146 buffer, ensuring that all execution took place in the same session, and no
14147 results would be inserted into the buffer.
14148
14149 @example
14150 #+PROPERTY: header-args:R :session *R*
14151 #+PROPERTY: header-args :results silent
14152 @end example
14153
14154 Header arguments read from Org mode properties can also be set on a
14155 per-subtree basis using property drawers (see @ref{Property syntax}).
14156 @vindex org-use-property-inheritance
14157 When properties are used to set default header arguments, they are always
14158 looked up with inheritance, regardless of the value of
14159 @code{org-use-property-inheritance}. Properties are evaluated as seen by the
14160 outermost call or source block.@footnote{The deprecated syntax for default
14161 header argument properties, using the name of the header argument as a
14162 property name directly, evaluates the property as seen by the corresponding
14163 source block definition. This behavior has been kept for backwards
14164 compatibility.}
14165
14166 In the following example the value of
14167 the @code{:cache} header argument will default to @code{yes} in all code
14168 blocks in the subtree rooted at the following heading:
14169
14170 @example
14171 * outline header
14172 :PROPERTIES:
14173 :header-args: :cache yes
14174 :END:
14175 @end example
14176
14177 @kindex C-c C-x p
14178 @vindex org-babel-default-header-args
14179 Properties defined in this way override the properties set in
14180 @code{org-babel-default-header-args} and are applied for all activated
14181 languages. It is convenient to use the @code{org-set-property} function
14182 bound to @kbd{C-c C-x p} to set properties in Org mode documents.
14183
14184 @node Language-specific header arguments in Org mode properties, Code block specific header arguments, Header arguments in Org mode properties, Using header arguments
14185 @subsubheading Language-specific header arguments in Org mode properties
14186
14187 Language-specific header arguments are also read from properties
14188 @code{header-args:<lang>} where @code{<lang>} is the name of the language
14189 targeted. As an example
14190
14191 @example
14192 * Heading
14193 :PROPERTIES:
14194 :header-args:clojure: :session *clojure-1*
14195 :header-args:R: :session *R*
14196 :END:
14197 ** Subheading
14198 :PROPERTIES:
14199 :header-args:clojure: :session *clojure-2*
14200 :END:
14201 @end example
14202
14203 would independently set a default session header argument for R and clojure
14204 for calls and source blocks under subtree ``Heading'' and change to a
14205 different clojure setting for evaluations under subtree ``Subheading'', while
14206 the R session is inherited from ``Heading'' and therefore unchanged.
14207
14208 @node Code block specific header arguments, Header arguments in function calls, Language-specific header arguments in Org mode properties, Using header arguments
14209 @subsubheading Code block specific header arguments
14210
14211 The most common way to assign values to header arguments is at the
14212 code block level. This can be done by listing a sequence of header
14213 arguments and their values as part of the @code{#+BEGIN_SRC} line.
14214 Properties set in this way override both the values of
14215 @code{org-babel-default-header-args} and header arguments specified as
14216 properties. In the following example, the @code{:results} header argument
14217 is set to @code{silent}, meaning the results of execution will not be
14218 inserted in the buffer, and the @code{:exports} header argument is set to
14219 @code{code}, meaning only the body of the code block will be
14220 preserved on export to HTML or @LaTeX{}.
14221
14222 @example
14223 #+NAME: factorial
14224 #+BEGIN_SRC haskell :results silent :exports code :var n=0
14225 fac 0 = 1
14226 fac n = n * fac (n-1)
14227 #+END_SRC
14228 @end example
14229 Similarly, it is possible to set header arguments for inline code blocks
14230
14231 @example
14232 src_haskell[:exports both]@{fac 5@}
14233 @end example
14234
14235 Code block header arguments can span multiple lines using @code{#+HEADER:} or
14236 @code{#+HEADERS:} lines preceding a code block or nested between the
14237 @code{#+NAME:} line and the @code{#+BEGIN_SRC} line of a named code block.
14238 @cindex #+HEADER:
14239 @cindex #+HEADERS:
14240
14241 Multi-line header arguments on an un-named code block:
14242
14243 @example
14244 #+HEADERS: :var data1=1
14245 #+BEGIN_SRC emacs-lisp :var data2=2
14246 (message "data1:%S, data2:%S" data1 data2)
14247 #+END_SRC
14248
14249 #+RESULTS:
14250 : data1:1, data2:2
14251 @end example
14252
14253 Multi-line header arguments on a named code block:
14254
14255 @example
14256 #+NAME: named-block
14257 #+HEADER: :var data=2
14258 #+BEGIN_SRC emacs-lisp
14259 (message "data:%S" data)
14260 #+END_SRC
14261
14262 #+RESULTS: named-block
14263 : data:2
14264 @end example
14265
14266 @node Header arguments in function calls, , Code block specific header arguments, Using header arguments
14267 @comment node-name, next, previous, up
14268 @subsubheading Header arguments in function calls
14269
14270 At the most specific level, header arguments for ``Library of Babel'' or
14271 @code{#+CALL:} lines can be set as shown in the two examples below. For more
14272 information on the structure of @code{#+CALL:} lines see @ref{Evaluating code
14273 blocks}.
14274
14275 The following will apply the @code{:exports results} header argument to the
14276 evaluation of the @code{#+CALL:} line.
14277
14278 @example
14279 #+CALL: factorial(n=5) :exports results
14280 @end example
14281
14282 The following will apply the @code{:session special} header argument to the
14283 evaluation of the @code{factorial} code block.
14284
14285 @example
14286 #+CALL: factorial[:session special](n=5)
14287 @end example
14288
14289 @node Specific header arguments, , Using header arguments, Header arguments
14290 @subsection Specific header arguments
14291 Header arguments consist of an initial colon followed by the name of the
14292 argument in lowercase letters. The following header arguments are defined:
14293
14294 @menu
14295 * var:: Pass arguments to code blocks
14296 * results:: Specify the type of results and how they will
14297 be collected and handled
14298 * file:: Specify a path for file output
14299 * file-desc:: Specify a description for file results
14300 * dir:: Specify the default (possibly remote)
14301 directory for code block execution
14302 * exports:: Export code and/or results
14303 * tangle:: Toggle tangling and specify file name
14304 * mkdirp:: Toggle creation of parent directories of target
14305 files during tangling
14306 * comments:: Toggle insertion of comments in tangled
14307 code files
14308 * padline:: Control insertion of padding lines in tangled
14309 code files
14310 * no-expand:: Turn off variable assignment and noweb
14311 expansion during tangling
14312 * session:: Preserve the state of code evaluation
14313 * noweb:: Toggle expansion of noweb references
14314 * noweb-ref:: Specify block's noweb reference resolution target
14315 * noweb-sep:: String used to separate noweb references
14316 * cache:: Avoid re-evaluating unchanged code blocks
14317 * sep:: Delimiter for writing tabular results outside Org
14318 * hlines:: Handle horizontal lines in tables
14319 * colnames:: Handle column names in tables
14320 * rownames:: Handle row names in tables
14321 * shebang:: Make tangled files executable
14322 * tangle-mode:: Set permission of tangled files
14323 * eval:: Limit evaluation of specific code blocks
14324 * wrap:: Mark source block evaluation results
14325 * post:: Post processing of code block results
14326 * prologue:: Text to prepend to code block body
14327 * epilogue:: Text to append to code block body
14328 @end menu
14329
14330 Additional header arguments are defined on a language-specific basis, see
14331 @ref{Languages}.
14332
14333 @node var, results, Specific header arguments, Specific header arguments
14334 @subsubsection @code{:var}
14335 The @code{:var} header argument is used to pass arguments to code blocks.
14336 The specifics of how arguments are included in a code block vary by language;
14337 these are addressed in the language-specific documentation. However, the
14338 syntax used to specify arguments is the same across all languages. In every
14339 case, variables require a default value when they are declared.
14340
14341 The values passed to arguments can either be literal values, references, or
14342 Emacs Lisp code (see @ref{var, Emacs Lisp evaluation of variables}).
14343 References include anything in the Org mode file that takes a @code{#+NAME:}
14344 or @code{#+RESULTS:} line: tables, lists, @code{#+BEGIN_EXAMPLE} blocks,
14345 other code blocks and the results of other code blocks.
14346
14347 Note: When a reference is made to another code block, the referenced block
14348 will be evaluated unless it has current cached results (see @ref{cache}).
14349
14350 Argument values can be indexed in a manner similar to arrays (see @ref{var,
14351 Indexable variable values}).
14352
14353 The following syntax is used to pass arguments to code blocks using the
14354 @code{:var} header argument.
14355
14356 @example
14357 :var name=assign
14358 @end example
14359
14360 The argument, @code{assign}, can either be a literal value, such as a string
14361 @samp{"string"} or a number @samp{9}, or a reference to a table, a list, a
14362 literal example, another code block (with or without arguments), or the
14363 results of evaluating another code block.
14364
14365 Here are examples of passing values by reference:
14366
14367 @table @dfn
14368
14369 @item table
14370 an Org mode table named with either a @code{#+NAME:} line
14371
14372 @example
14373 #+NAME: example-table
14374 | 1 |
14375 | 2 |
14376 | 3 |
14377 | 4 |
14378
14379 #+NAME: table-length
14380 #+BEGIN_SRC emacs-lisp :var table=example-table
14381 (length table)
14382 #+END_SRC
14383
14384 #+RESULTS: table-length
14385 : 4
14386 @end example
14387
14388 @item list
14389 a simple list named with a @code{#+NAME:} line (note that nesting is not
14390 carried through to the source code block)
14391
14392 @example
14393 #+NAME: example-list
14394 - simple
14395 - not
14396 - nested
14397 - list
14398
14399 #+BEGIN_SRC emacs-lisp :var x=example-list
14400 (print x)
14401 #+END_SRC
14402
14403 #+RESULTS:
14404 | simple | list |
14405 @end example
14406
14407 @item code block without arguments
14408 a code block name (from the example above), as assigned by @code{#+NAME:},
14409 optionally followed by parentheses
14410
14411 @example
14412 #+BEGIN_SRC emacs-lisp :var length=table-length()
14413 (* 2 length)
14414 #+END_SRC
14415
14416 #+RESULTS:
14417 : 8
14418 @end example
14419
14420 @item code block with arguments
14421 a code block name, as assigned by @code{#+NAME:}, followed by parentheses and
14422 optional arguments passed within the parentheses following the
14423 code block name using standard function call syntax
14424
14425 @example
14426 #+NAME: double
14427 #+BEGIN_SRC emacs-lisp :var input=8
14428 (* 2 input)
14429 #+END_SRC
14430
14431 #+RESULTS: double
14432 : 16
14433
14434 #+NAME: squared
14435 #+BEGIN_SRC emacs-lisp :var input=double(input=1)
14436 (* input input)
14437 #+END_SRC
14438
14439 #+RESULTS: squared
14440 : 4
14441 @end example
14442
14443 @item literal example
14444 a literal example block named with a @code{#+NAME:} line
14445
14446 @example
14447 #+NAME: literal-example
14448 #+BEGIN_EXAMPLE
14449 A literal example
14450 on two lines
14451 #+END_EXAMPLE
14452
14453 #+NAME: read-literal-example
14454 #+BEGIN_SRC emacs-lisp :var x=literal-example
14455 (concatenate 'string x " for you.")
14456 #+END_SRC
14457
14458 #+RESULTS: read-literal-example
14459 : A literal example
14460 : on two lines for you.
14461
14462 @end example
14463
14464 @end table
14465
14466 @subsubheading Indexable variable values
14467 It is possible to reference portions of variable values by ``indexing'' into
14468 the variables. Indexes are 0 based with negative values counting back from
14469 the end. If an index is separated by @code{,}s then each subsequent section
14470 will index into the next deepest nesting or dimension of the value. Note
14471 that this indexing occurs @emph{before} other table related header arguments
14472 like @code{:hlines}, @code{:colnames} and @code{:rownames} are applied. The
14473 following example assigns the last cell of the first row the table
14474 @code{example-table} to the variable @code{data}:
14475
14476 @example
14477 #+NAME: example-table
14478 | 1 | a |
14479 | 2 | b |
14480 | 3 | c |
14481 | 4 | d |
14482
14483 #+BEGIN_SRC emacs-lisp :var data=example-table[0,-1]
14484 data
14485 #+END_SRC
14486
14487 #+RESULTS:
14488 : a
14489 @end example
14490
14491 Ranges of variable values can be referenced using two integers separated by a
14492 @code{:}, in which case the entire inclusive range is referenced. For
14493 example the following assigns the middle three rows of @code{example-table}
14494 to @code{data}.
14495
14496 @example
14497 #+NAME: example-table
14498 | 1 | a |
14499 | 2 | b |
14500 | 3 | c |
14501 | 4 | d |
14502 | 5 | 3 |
14503
14504 #+BEGIN_SRC emacs-lisp :var data=example-table[1:3]
14505 data
14506 #+END_SRC
14507
14508 #+RESULTS:
14509 | 2 | b |
14510 | 3 | c |
14511 | 4 | d |
14512 @end example
14513
14514 Additionally, an empty index, or the single character @code{*}, are both
14515 interpreted to mean the entire range and as such are equivalent to
14516 @code{0:-1}, as shown in the following example in which the entire first
14517 column is referenced.
14518
14519 @example
14520 #+NAME: example-table
14521 | 1 | a |
14522 | 2 | b |
14523 | 3 | c |
14524 | 4 | d |
14525
14526 #+BEGIN_SRC emacs-lisp :var data=example-table[,0]
14527 data
14528 #+END_SRC
14529
14530 #+RESULTS:
14531 | 1 | 2 | 3 | 4 |
14532 @end example
14533
14534 It is possible to index into the results of code blocks as well as tables.
14535 Any number of dimensions can be indexed. Dimensions are separated from one
14536 another by commas, as shown in the following example.
14537
14538 @example
14539 #+NAME: 3D
14540 #+BEGIN_SRC emacs-lisp
14541 '(((1 2 3) (4 5 6) (7 8 9))
14542 ((10 11 12) (13 14 15) (16 17 18))
14543 ((19 20 21) (22 23 24) (25 26 27)))
14544 #+END_SRC
14545
14546 #+BEGIN_SRC emacs-lisp :var data=3D[1,,1]
14547 data
14548 #+END_SRC
14549
14550 #+RESULTS:
14551 | 11 | 14 | 17 |
14552 @end example
14553
14554 @subsubheading Emacs Lisp evaluation of variables
14555
14556 Emacs lisp code can be used to initialize variable values. When a variable
14557 value starts with @code{(}, @code{[}, @code{'} or @code{`} it will be
14558 evaluated as Emacs Lisp and the result of the evaluation will be assigned as
14559 the variable value. The following example demonstrates use of this
14560 evaluation to reliably pass the file-name of the Org mode buffer to a code
14561 block---note that evaluation of header arguments is guaranteed to take place
14562 in the original Org mode file, while there is no such guarantee for
14563 evaluation of the code block body.
14564
14565 @example
14566 #+BEGIN_SRC sh :var filename=(buffer-file-name) :exports both
14567 wc -w $filename
14568 #+END_SRC
14569 @end example
14570
14571 Note that values read from tables and lists will not be evaluated as
14572 Emacs Lisp, as shown in the following example.
14573
14574 @example
14575 #+NAME: table
14576 | (a b c) |
14577
14578 #+HEADERS: :var data=table[0,0]
14579 #+BEGIN_SRC perl
14580 $data
14581 #+END_SRC
14582
14583 #+RESULTS:
14584 : (a b c)
14585 @end example
14586
14587 @node results, file, var, Specific header arguments
14588 @subsubsection @code{:results}
14589
14590 There are four classes of @code{:results} header argument. Only one option
14591 per class may be supplied per code block.
14592
14593 @itemize @bullet
14594 @item
14595 @b{collection} header arguments specify how the results should be collected
14596 from the code block
14597 @item
14598 @b{type} header arguments specify what type of result the code block will
14599 return---which has implications for how they will be processed before
14600 insertion into the Org mode buffer
14601 @item
14602 @b{format} header arguments specify what type of result the code block will
14603 return---which has implications for how they will be inserted into the
14604 Org mode buffer
14605 @item
14606 @b{handling} header arguments specify how the results of evaluating the code
14607 block should be handled.
14608 @end itemize
14609
14610 @subsubheading Collection
14611 The following options are mutually exclusive, and specify how the results
14612 should be collected from the code block.
14613
14614 @itemize @bullet
14615 @item @code{value}
14616 This is the default. The result is the value of the last statement in the
14617 code block. This header argument places the evaluation in functional
14618 mode. Note that in some languages, e.g., Python, use of this result type
14619 requires that a @code{return} statement be included in the body of the source
14620 code block. E.g., @code{:results value}.
14621 @item @code{output}
14622 The result is the collection of everything printed to STDOUT during the
14623 execution of the code block. This header argument places the
14624 evaluation in scripting mode. E.g., @code{:results output}.
14625 @end itemize
14626
14627 @subsubheading Type
14628
14629 The following options are mutually exclusive and specify what type of results
14630 the code block will return. By default, results are inserted as either a
14631 table or scalar depending on their value.
14632
14633 @itemize @bullet
14634 @item @code{table}, @code{vector}
14635 The results should be interpreted as an Org mode table. If a single value is
14636 returned, it will be converted into a table with one row and one column.
14637 E.g., @code{:results value table}.
14638 @item @code{list}
14639 The results should be interpreted as an Org mode list. If a single scalar
14640 value is returned it will be converted into a list with only one element.
14641 @item @code{scalar}, @code{verbatim}
14642 The results should be interpreted literally---they will not be
14643 converted into a table. The results will be inserted into the Org mode
14644 buffer as quoted text. E.g., @code{:results value verbatim}.
14645 @item @code{file}
14646 The results will be interpreted as the path to a file, and will be inserted
14647 into the Org mode buffer as a file link. E.g., @code{:results value file}.
14648 @end itemize
14649
14650 @subsubheading Format
14651
14652 The following options are mutually exclusive and specify what type of results
14653 the code block will return. By default, results are inserted according to the
14654 type as specified above.
14655
14656 @itemize @bullet
14657 @item @code{raw}
14658 The results are interpreted as raw Org mode code and are inserted directly
14659 into the buffer. If the results look like a table they will be aligned as
14660 such by Org mode. E.g., @code{:results value raw}.
14661 @item @code{org}
14662 The results are will be enclosed in a @code{BEGIN_SRC org} block.
14663 They are not comma-escaped by default but they will be if you hit @kbd{TAB}
14664 in the block and/or if you export the file. E.g., @code{:results value org}.
14665 @item @code{html}
14666 Results are assumed to be HTML and will be enclosed in a @code{BEGIN_HTML}
14667 block. E.g., @code{:results value html}.
14668 @item @code{latex}
14669 Results assumed to be @LaTeX{} and are enclosed in a @code{BEGIN_LaTeX} block.
14670 E.g., @code{:results value latex}.
14671 @item @code{code}
14672 Result are assumed to be parsable code and are enclosed in a code block.
14673 E.g., @code{:results value code}.
14674 @item @code{pp}
14675 The result is converted to pretty-printed code and is enclosed in a code
14676 block. This option currently supports Emacs Lisp, Python, and Ruby. E.g.,
14677 @code{:results value pp}.
14678 @item @code{drawer}
14679 The result is wrapped in a RESULTS drawer. This can be useful for
14680 inserting @code{raw} or @code{org} syntax results in such a way that their
14681 extent is known and they can be automatically removed or replaced.
14682 @end itemize
14683
14684 @subsubheading Handling
14685 The following results options indicate what happens with the
14686 results once they are collected.
14687
14688 @itemize @bullet
14689 @item @code{silent}
14690 The results will be echoed in the minibuffer but will not be inserted into
14691 the Org mode buffer. E.g., @code{:results output silent}.
14692 @item @code{replace}
14693 The default value. Any existing results will be removed, and the new results
14694 will be inserted into the Org mode buffer in their place. E.g.,
14695 @code{:results output replace}.
14696 @item @code{append}
14697 If there are pre-existing results of the code block then the new results will
14698 be appended to the existing results. Otherwise the new results will be
14699 inserted as with @code{replace}.
14700 @item @code{prepend}
14701 If there are pre-existing results of the code block then the new results will
14702 be prepended to the existing results. Otherwise the new results will be
14703 inserted as with @code{replace}.
14704 @end itemize
14705
14706 @node file, file-desc, results, Specific header arguments
14707 @subsubsection @code{:file}
14708
14709 The header argument @code{:file} is used to specify an external file in which
14710 to save code block results. After code block evaluation an Org mode style
14711 @code{[[file:]]} link (see @ref{Link format}) to the file will be inserted
14712 into the Org mode buffer. Some languages including R, gnuplot, dot, and
14713 ditaa provide special handling of the @code{:file} header argument
14714 automatically wrapping the code block body in the boilerplate code required
14715 to save output to the specified file. This is often useful for saving
14716 graphical output of a code block to the specified file.
14717
14718 The argument to @code{:file} should be either a string specifying the path to
14719 a file, or a list of two strings in which case the first element of the list
14720 should be the path to a file and the second a description for the link.
14721
14722 @node file-desc, dir, file, Specific header arguments
14723 @subsubsection @code{:file-desc}
14724
14725 The value of the @code{:file-desc} header argument is used to provide a
14726 description for file code block results which are inserted as Org mode links
14727 (see @ref{Link format}). If the @code{:file-desc} header argument is given
14728 with no value the link path will be placed in both the ``link'' and the
14729 ``description'' portion of the Org mode link.
14730
14731 @node dir, exports, file-desc, Specific header arguments
14732 @subsubsection @code{:dir} and remote execution
14733
14734 While the @code{:file} header argument can be used to specify the path to the
14735 output file, @code{:dir} specifies the default directory during code block
14736 execution. If it is absent, then the directory associated with the current
14737 buffer is used. In other words, supplying @code{:dir path} temporarily has
14738 the same effect as changing the current directory with @kbd{M-x cd path RET}, and
14739 then not supplying @code{:dir}. Under the surface, @code{:dir} simply sets
14740 the value of the Emacs variable @code{default-directory}.
14741
14742 When using @code{:dir}, you should supply a relative path for file output
14743 (e.g., @code{:file myfile.jpg} or @code{:file results/myfile.jpg}) in which
14744 case that path will be interpreted relative to the default directory.
14745
14746 In other words, if you want your plot to go into a folder called @file{Work}
14747 in your home directory, you could use
14748
14749 @example
14750 #+BEGIN_SRC R :file myplot.png :dir ~/Work
14751 matplot(matrix(rnorm(100), 10), type="l")
14752 #+END_SRC
14753 @end example
14754
14755 @subsubheading Remote execution
14756 A directory on a remote machine can be specified using tramp file syntax, in
14757 which case the code will be evaluated on the remote machine. An example is
14758
14759 @example
14760 #+BEGIN_SRC R :file plot.png :dir /dand@@yakuba.princeton.edu:
14761 plot(1:10, main=system("hostname", intern=TRUE))
14762 #+END_SRC
14763 @end example
14764
14765 Text results will be returned to the local Org mode buffer as usual, and file
14766 output will be created on the remote machine with relative paths interpreted
14767 relative to the remote directory. An Org mode link to the remote file will be
14768 created.
14769
14770 So, in the above example a plot will be created on the remote machine,
14771 and a link of the following form will be inserted in the org buffer:
14772
14773 @example
14774 [[file:/scp:dand@@yakuba.princeton.edu:/home/dand/plot.png][plot.png]]
14775 @end example
14776
14777 Most of this functionality follows immediately from the fact that @code{:dir}
14778 sets the value of the Emacs variable @code{default-directory}, thanks to
14779 tramp. Those using XEmacs, or GNU Emacs prior to version 23 may need to
14780 install tramp separately in order for these features to work correctly.
14781
14782 @subsubheading Further points
14783
14784 @itemize @bullet
14785 @item
14786 If @code{:dir} is used in conjunction with @code{:session}, although it will
14787 determine the starting directory for a new session as expected, no attempt is
14788 currently made to alter the directory associated with an existing session.
14789 @item
14790 @code{:dir} should typically not be used to create files during export with
14791 @code{:exports results} or @code{:exports both}. The reason is that, in order
14792 to retain portability of exported material between machines, during export
14793 links inserted into the buffer will @emph{not} be expanded against @code{default
14794 directory}. Therefore, if @code{default-directory} is altered using
14795 @code{:dir}, it is probable that the file will be created in a location to
14796 which the link does not point.
14797 @end itemize
14798
14799 @node exports, tangle, dir, Specific header arguments
14800 @subsubsection @code{:exports}
14801
14802 The @code{:exports} header argument specifies what should be included in HTML
14803 or @LaTeX{} exports of the Org mode file.
14804
14805 @itemize @bullet
14806 @item @code{code}
14807 The default. The body of code is included into the exported file. E.g.,
14808 @code{:exports code}.
14809 @item @code{results}
14810 The result of evaluating the code is included in the exported file. E.g.,
14811 @code{:exports results}.
14812 @item @code{both}
14813 Both the code and results are included in the exported file. E.g.,
14814 @code{:exports both}.
14815 @item @code{none}
14816 Nothing is included in the exported file. E.g., @code{:exports none}.
14817 @end itemize
14818
14819 @node tangle, mkdirp, exports, Specific header arguments
14820 @subsubsection @code{:tangle}
14821
14822 The @code{:tangle} header argument specifies whether or not the code
14823 block should be included in tangled extraction of source code files.
14824
14825 @itemize @bullet
14826 @item @code{tangle}
14827 The code block is exported to a source code file named after the full path
14828 (including the directory) and file name (w/o extension) of the Org mode file.
14829 E.g., @code{:tangle yes}.
14830 @item @code{no}
14831 The default. The code block is not exported to a source code file.
14832 E.g., @code{:tangle no}.
14833 @item other
14834 Any other string passed to the @code{:tangle} header argument is interpreted
14835 as a path (directory and file name relative to the directory of the Org mode
14836 file) to which the block will be exported. E.g., @code{:tangle path}.
14837 @end itemize
14838
14839 @node mkdirp, comments, tangle, Specific header arguments
14840 @subsubsection @code{:mkdirp}
14841
14842 The @code{:mkdirp} header argument can be used to create parent directories
14843 of tangled files when missing. This can be set to @code{yes} to enable
14844 directory creation or to @code{no} to inhibit directory creation.
14845
14846 @node comments, padline, mkdirp, Specific header arguments
14847 @subsubsection @code{:comments}
14848 By default code blocks are tangled to source-code files without any insertion
14849 of comments beyond those which may already exist in the body of the code
14850 block. The @code{:comments} header argument can be set as follows to control
14851 the insertion of extra comments into the tangled code file.
14852
14853 @itemize @bullet
14854 @item @code{no}
14855 The default. No extra comments are inserted during tangling.
14856 @item @code{link}
14857 The code block is wrapped in comments which contain pointers back to the
14858 original Org file from which the code was tangled.
14859 @item @code{yes}
14860 A synonym for ``link'' to maintain backwards compatibility.
14861 @item @code{org}
14862 Include text from the Org mode file as a comment.
14863 The text is picked from the leading context of the tangled code and is
14864 limited by the nearest headline or source block as the case may be.
14865 @item @code{both}
14866 Turns on both the ``link'' and ``org'' comment options.
14867 @item @code{noweb}
14868 Turns on the ``link'' comment option, and additionally wraps expanded noweb
14869 references in the code block body in link comments.
14870 @end itemize
14871
14872 @node padline, no-expand, comments, Specific header arguments
14873 @subsubsection @code{:padline}
14874 Control in insertion of padding lines around code block bodies in tangled
14875 code files. The default value is @code{yes} which results in insertion of
14876 newlines before and after each tangled code block. The following arguments
14877 are accepted.
14878
14879 @itemize @bullet
14880 @item @code{yes}
14881 Insert newlines before and after each code block body in tangled code files.
14882 @item @code{no}
14883 Do not insert any newline padding in tangled output.
14884 @end itemize
14885
14886 @node no-expand, session, padline, Specific header arguments
14887 @subsubsection @code{:no-expand}
14888
14889 By default, code blocks are expanded with @code{org-babel-expand-src-block}
14890 during tangling. This has the effect of assigning values to variables
14891 specified with @code{:var} (see @ref{var}), and of replacing ``noweb''
14892 references (see @ref{Noweb reference syntax}) with their targets. The
14893 @code{:no-expand} header argument can be used to turn off this behavior.
14894
14895 @node session, noweb, no-expand, Specific header arguments
14896 @subsubsection @code{:session}
14897
14898 The @code{:session} header argument starts a session for an interpreted
14899 language where state is preserved.
14900
14901 By default, a session is not started.
14902
14903 A string passed to the @code{:session} header argument will give the session
14904 a name. This makes it possible to run concurrent sessions for each
14905 interpreted language.
14906
14907 @node noweb, noweb-ref, session, Specific header arguments
14908 @subsubsection @code{:noweb}
14909
14910 The @code{:noweb} header argument controls expansion of ``noweb'' syntax
14911 references (see @ref{Noweb reference syntax}) when the code block is
14912 evaluated, tangled, or exported. The @code{:noweb} header argument can have
14913 one of the five values: @code{no}, @code{yes}, @code{tangle}, or
14914 @code{no-export} @code{strip-export}.
14915
14916 @itemize @bullet
14917 @item @code{no}
14918 The default. ``Noweb'' syntax references in the body of the code block will
14919 not be expanded before the code block is evaluated, tangled or exported.
14920 @item @code{yes}
14921 ``Noweb'' syntax references in the body of the code block will be
14922 expanded before the code block is evaluated, tangled or exported.
14923 @item @code{tangle}
14924 ``Noweb'' syntax references in the body of the code block will be expanded
14925 before the code block is tangled. However, ``noweb'' syntax references will
14926 not be expanded when the code block is evaluated or exported.
14927 @item @code{no-export}
14928 ``Noweb'' syntax references in the body of the code block will be expanded
14929 before the block is evaluated or tangled. However, ``noweb'' syntax
14930 references will not be expanded when the code block is exported.
14931 @item @code{strip-export}
14932 ``Noweb'' syntax references in the body of the code block will be expanded
14933 before the block is evaluated or tangled. However, ``noweb'' syntax
14934 references will be removed when the code block is exported.
14935 @item @code{eval}
14936 ``Noweb'' syntax references in the body of the code block will only be
14937 expanded before the block is evaluated.
14938 @end itemize
14939
14940 @subsubheading Noweb prefix lines
14941 Noweb insertions are now placed behind the line prefix of the
14942 @code{<<reference>>}.
14943 This behavior is illustrated in the following example. Because the
14944 @code{<<example>>} noweb reference appears behind the SQL comment syntax,
14945 each line of the expanded noweb reference will be commented.
14946
14947 This code block:
14948
14949 @example
14950 -- <<example>>
14951 @end example
14952
14953 expands to:
14954
14955 @example
14956 -- this is the
14957 -- multi-line body of example
14958 @end example
14959
14960 Note that noweb replacement text that does not contain any newlines will not
14961 be affected by this change, so it is still possible to use inline noweb
14962 references.
14963
14964 @node noweb-ref, noweb-sep, noweb, Specific header arguments
14965 @subsubsection @code{:noweb-ref}
14966 When expanding ``noweb'' style references the bodies of all code block with
14967 @emph{either} a block name matching the reference name @emph{or} a
14968 @code{:noweb-ref} header argument matching the reference name will be
14969 concatenated together to form the replacement text.
14970
14971 By setting this header argument at the sub-tree or file level, simple code
14972 block concatenation may be achieved. For example, when tangling the
14973 following Org mode file, the bodies of code blocks will be concatenated into
14974 the resulting pure code file@footnote{(The example needs property inheritance
14975 to be turned on for the @code{noweb-ref} property, see @ref{Property
14976 inheritance}).}.
14977
14978 @example
14979 #+BEGIN_SRC sh :tangle yes :noweb yes :shebang #!/bin/sh
14980 <<fullest-disk>>
14981 #+END_SRC
14982 * the mount point of the fullest disk
14983 :PROPERTIES:
14984 :noweb-ref: fullest-disk
14985 :END:
14986
14987 ** query all mounted disks
14988 #+BEGIN_SRC sh
14989 df \
14990 #+END_SRC
14991
14992 ** strip the header row
14993 #+BEGIN_SRC sh
14994 |sed '1d' \
14995 #+END_SRC
14996
14997 ** sort by the percent full
14998 #+BEGIN_SRC sh
14999 |awk '@{print $5 " " $6@}'|sort -n |tail -1 \
15000 #+END_SRC
15001
15002 ** extract the mount point
15003 #+BEGIN_SRC sh
15004 |awk '@{print $2@}'
15005 #+END_SRC
15006 @end example
15007
15008 The @code{:noweb-sep} (see @ref{noweb-sep}) header argument holds the string
15009 used to separate accumulate noweb references like those above. By default a
15010 newline is used.
15011
15012 @node noweb-sep, cache, noweb-ref, Specific header arguments
15013 @subsubsection @code{:noweb-sep}
15014
15015 The @code{:noweb-sep} header argument holds the string used to separate
15016 accumulate noweb references (see @ref{noweb-ref}). By default a newline is
15017 used.
15018
15019 @node cache, sep, noweb-sep, Specific header arguments
15020 @subsubsection @code{:cache}
15021
15022 The @code{:cache} header argument controls the use of in-buffer caching of
15023 the results of evaluating code blocks. It can be used to avoid re-evaluating
15024 unchanged code blocks. Note that the @code{:cache} header argument will not
15025 attempt to cache results when the @code{:session} header argument is used,
15026 because the results of the code block execution may be stored in the session
15027 outside of the Org mode buffer. The @code{:cache} header argument can have
15028 one of two values: @code{yes} or @code{no}.
15029
15030 @itemize @bullet
15031 @item @code{no}
15032 The default. No caching takes place, and the code block will be evaluated
15033 every time it is called.
15034 @item @code{yes}
15035 Every time the code block is run a SHA1 hash of the code and arguments
15036 passed to the block will be generated. This hash is packed into the
15037 @code{#+RESULTS:} line and will be checked on subsequent
15038 executions of the code block. If the code block has not
15039 changed since the last time it was evaluated, it will not be re-evaluated.
15040 @end itemize
15041
15042 Code block caches notice if the value of a variable argument
15043 to the code block has changed. If this is the case, the cache is
15044 invalidated and the code block is re-run. In the following example,
15045 @code{caller} will not be re-run unless the results of @code{random} have
15046 changed since it was last run.
15047
15048 @example
15049 #+NAME: random
15050 #+BEGIN_SRC R :cache yes
15051 runif(1)
15052 #+END_SRC
15053
15054 #+RESULTS[a2a72cd647ad44515fab62e144796432793d68e1]: random
15055 0.4659510825295
15056
15057 #+NAME: caller
15058 #+BEGIN_SRC emacs-lisp :var x=random :cache yes
15059 x
15060 #+END_SRC
15061
15062 #+RESULTS[bec9c8724e397d5df3b696502df3ed7892fc4f5f]: caller
15063 0.254227238707244
15064 @end example
15065
15066 @node sep, hlines, cache, Specific header arguments
15067 @subsubsection @code{:sep}
15068
15069 The @code{:sep} header argument can be used to control the delimiter used
15070 when writing tabular results out to files external to Org mode. This is used
15071 either when opening tabular results of a code block by calling the
15072 @code{org-open-at-point} function bound to @kbd{C-c C-o} on the code block,
15073 or when writing code block results to an external file (see @ref{file})
15074 header argument.
15075
15076 By default, when @code{:sep} is not specified output tables are tab
15077 delimited.
15078
15079 @node hlines, colnames, sep, Specific header arguments
15080 @subsubsection @code{:hlines}
15081
15082 Tables are frequently represented with one or more horizontal lines, or
15083 hlines. The @code{:hlines} argument to a code block accepts the
15084 values @code{yes} or @code{no}, with a default value of @code{no}.
15085
15086 @itemize @bullet
15087 @item @code{no}
15088 Strips horizontal lines from the input table. In most languages this is the
15089 desired effect because an @code{hline} symbol is interpreted as an unbound
15090 variable and raises an error. Setting @code{:hlines no} or relying on the
15091 default value yields the following results.
15092
15093 @example
15094 #+NAME: many-cols
15095 | a | b | c |
15096 |---+---+---|
15097 | d | e | f |
15098 |---+---+---|
15099 | g | h | i |
15100
15101 #+NAME: echo-table
15102 #+BEGIN_SRC python :var tab=many-cols
15103 return tab
15104 #+END_SRC
15105
15106 #+RESULTS: echo-table
15107 | a | b | c |
15108 | d | e | f |
15109 | g | h | i |
15110 @end example
15111
15112 @item @code{yes}
15113 Leaves hlines in the table. Setting @code{:hlines yes} has this effect.
15114
15115 @example
15116 #+NAME: many-cols
15117 | a | b | c |
15118 |---+---+---|
15119 | d | e | f |
15120 |---+---+---|
15121 | g | h | i |
15122
15123 #+NAME: echo-table
15124 #+BEGIN_SRC python :var tab=many-cols :hlines yes
15125 return tab
15126 #+END_SRC
15127
15128 #+RESULTS: echo-table
15129 | a | b | c |
15130 |---+---+---|
15131 | d | e | f |
15132 |---+---+---|
15133 | g | h | i |
15134 @end example
15135 @end itemize
15136
15137 @node colnames, rownames, hlines, Specific header arguments
15138 @subsubsection @code{:colnames}
15139
15140 The @code{:colnames} header argument accepts the values @code{yes},
15141 @code{no}, or @code{nil} for unassigned. The default value is @code{nil}.
15142 Note that the behavior of the @code{:colnames} header argument may differ
15143 across languages.
15144
15145 @itemize @bullet
15146 @item @code{nil}
15147 If an input table looks like it has column names
15148 (because its second row is an hline), then the column
15149 names will be removed from the table before
15150 processing, then reapplied to the results.
15151
15152 @example
15153 #+NAME: less-cols
15154 | a |
15155 |---|
15156 | b |
15157 | c |
15158
15159 #+NAME: echo-table-again
15160 #+BEGIN_SRC python :var tab=less-cols
15161 return [[val + '*' for val in row] for row in tab]
15162 #+END_SRC
15163
15164 #+RESULTS: echo-table-again
15165 | a |
15166 |----|
15167 | b* |
15168 | c* |
15169 @end example
15170
15171 Please note that column names are not removed before the table is indexed
15172 using variable indexing @xref{var, Indexable variable values}.
15173
15174 @item @code{no}
15175 No column name pre-processing takes place
15176
15177 @item @code{yes}
15178 Column names are removed and reapplied as with @code{nil} even if the table
15179 does not ``look like'' it has column names (i.e., the second row is not an
15180 hline)
15181 @end itemize
15182
15183 @node rownames, shebang, colnames, Specific header arguments
15184 @subsubsection @code{:rownames}
15185
15186 The @code{:rownames} header argument can take on the values @code{yes} or
15187 @code{no}, with a default value of @code{no}. Note that Emacs Lisp code
15188 blocks ignore the @code{:rownames} header argument entirely given the ease
15189 with which tables with row names may be handled directly in Emacs Lisp.
15190
15191 @itemize @bullet
15192 @item @code{no}
15193 No row name pre-processing will take place.
15194
15195 @item @code{yes}
15196 The first column of the table is removed from the table before processing,
15197 and is then reapplied to the results.
15198
15199 @example
15200 #+NAME: with-rownames
15201 | one | 1 | 2 | 3 | 4 | 5 |
15202 | two | 6 | 7 | 8 | 9 | 10 |
15203
15204 #+NAME: echo-table-once-again
15205 #+BEGIN_SRC python :var tab=with-rownames :rownames yes
15206 return [[val + 10 for val in row] for row in tab]
15207 #+END_SRC
15208
15209 #+RESULTS: echo-table-once-again
15210 | one | 11 | 12 | 13 | 14 | 15 |
15211 | two | 16 | 17 | 18 | 19 | 20 |
15212 @end example
15213
15214 Please note that row names are not removed before the table is indexed using
15215 variable indexing @xref{var, Indexable variable values}.
15216
15217 @end itemize
15218
15219 @node shebang, tangle-mode, rownames, Specific header arguments
15220 @subsubsection @code{:shebang}
15221
15222 Setting the @code{:shebang} header argument to a string value
15223 (e.g., @code{:shebang "#!/bin/bash"}) causes the string to be inserted as the
15224 first line of any tangled file holding the code block, and the file
15225 permissions of the tangled file are set to make it executable.
15226
15227
15228 @node tangle-mode, eval, shebang, Specific header arguments
15229 @subsubsection @code{:tangle-mode}
15230
15231 The @code{tangle-mode} header argument controls the permission set on tangled
15232 files. The value of this header argument will be passed to
15233 @code{set-file-modes}. For example, to set a tangled file as read only use
15234 @code{:tangle-mode (identity #o444)}, or to set a tangled file as executable
15235 use @code{:tangle-mode (identity #o755)}. Blocks with @code{shebang}
15236 (@ref{shebang}) header arguments will automatically be made executable unless
15237 the @code{tangle-mode} header argument is also used. The behavior is
15238 undefined if multiple code blocks with different values for the
15239 @code{tangle-mode} header argument are tangled to the same file.
15240
15241 @node eval, wrap, tangle-mode, Specific header arguments
15242 @subsubsection @code{:eval}
15243 The @code{:eval} header argument can be used to limit the evaluation of
15244 specific code blocks. The @code{:eval} header argument can be useful for
15245 protecting against the evaluation of dangerous code blocks or to ensure that
15246 evaluation will require a query regardless of the value of the
15247 @code{org-confirm-babel-evaluate} variable. The possible values of
15248 @code{:eval} and their effects are shown below.
15249
15250 @table @code
15251 @item never or no
15252 The code block will not be evaluated under any circumstances.
15253 @item query
15254 Evaluation of the code block will require a query.
15255 @item never-export or no-export
15256 The code block will not be evaluated during export but may still be called
15257 interactively.
15258 @item query-export
15259 Evaluation of the code block during export will require a query.
15260 @end table
15261
15262 If this header argument is not set then evaluation is determined by the value
15263 of the @code{org-confirm-babel-evaluate} variable see @ref{Code evaluation
15264 security}.
15265
15266 @node wrap, post, eval, Specific header arguments
15267 @subsubsection @code{:wrap}
15268 The @code{:wrap} header argument is used to mark the results of source block
15269 evaluation. The header argument can be passed a string that will be appended
15270 to @code{#+BEGIN_} and @code{#+END_}, which will then be used to wrap the
15271 results. If not string is specified then the results will be wrapped in a
15272 @code{#+BEGIN/END_RESULTS} block.
15273
15274 @node post, prologue, wrap, Specific header arguments
15275 @subsubsection @code{:post}
15276 The @code{:post} header argument is used to post-process the results of a
15277 code block execution. When a post argument is given, the results of the code
15278 block will temporarily be bound to the @code{*this*} variable. This variable
15279 may then be included in header argument forms such as those used in @ref{var}
15280 header argument specifications allowing passing of results to other code
15281 blocks, or direct execution via Emacs Lisp.
15282
15283 The following example illustrates the usage of the @code{:post} header
15284 argument.
15285
15286 @example
15287 #+name: attr_wrap
15288 #+begin_src sh :var data="" :var width="\\textwidth" :results output
15289 echo "#+ATTR_LATEX :width $width"
15290 echo "$data"
15291 #+end_src
15292
15293 #+header: :file /tmp/it.png
15294 #+begin_src dot :post attr_wrap(width="5cm", data=*this*) :results drawer
15295 digraph@{
15296 a -> b;
15297 b -> c;
15298 c -> a;
15299 @}
15300 #+end_src
15301
15302 #+RESULTS:
15303 :RESULTS:
15304 #+ATTR_LATEX :width 5cm
15305 [[file:/tmp/it.png]]
15306 :END:
15307 @end example
15308
15309 @node prologue, epilogue, post, Specific header arguments
15310 @subsubsection @code{:prologue}
15311 The value of the @code{prologue} header argument will be prepended to the
15312 code block body before execution. For example, @code{:prologue "reset"} may
15313 be used to reset a gnuplot session before execution of a particular code
15314 block, or the following configuration may be used to do this for all gnuplot
15315 code blocks. Also see @ref{epilogue}.
15316
15317 @lisp
15318 (add-to-list 'org-babel-default-header-args:gnuplot
15319 '((:prologue . "reset")))
15320 @end lisp
15321
15322 @node epilogue, , prologue, Specific header arguments
15323 @subsubsection @code{:epilogue}
15324 The value of the @code{epilogue} header argument will be appended to the code
15325 block body before execution. Also see @ref{prologue}.
15326
15327 @node Results of evaluation, Noweb reference syntax, Header arguments, Working With Source Code
15328 @section Results of evaluation
15329 @cindex code block, results of evaluation
15330 @cindex source code, results of evaluation
15331
15332 The way in which results are handled depends on whether a session is invoked,
15333 as well as on whether @code{:results value} or @code{:results output} is
15334 used. The following table shows the table possibilities. For a full listing
15335 of the possible results header arguments see @ref{results}.
15336
15337 @multitable @columnfractions 0.26 0.33 0.41
15338 @item @tab @b{Non-session} @tab @b{Session}
15339 @item @code{:results value} @tab value of last expression @tab value of last expression
15340 @item @code{:results output} @tab contents of STDOUT @tab concatenation of interpreter output
15341 @end multitable
15342
15343 Note: With @code{:results value}, the result in both @code{:session} and
15344 non-session is returned to Org mode as a table (a one- or two-dimensional
15345 vector of strings or numbers) when appropriate.
15346
15347 @subsection Non-session
15348 @subsubsection @code{:results value}
15349 This is the default. Internally, the value is obtained by wrapping the code
15350 in a function definition in the external language, and evaluating that
15351 function. Therefore, code should be written as if it were the body of such a
15352 function. In particular, note that Python does not automatically return a
15353 value from a function unless a @code{return} statement is present, and so a
15354 @samp{return} statement will usually be required in Python.
15355
15356 This is the only one of the four evaluation contexts in which the code is
15357 automatically wrapped in a function definition.
15358
15359 @subsubsection @code{:results output}
15360 The code is passed to the interpreter as an external process, and the
15361 contents of the standard output stream are returned as text. (In certain
15362 languages this also contains the error output stream; this is an area for
15363 future work.)
15364
15365 @subsection Session
15366 @subsubsection @code{:results value}
15367 The code is passed to an interpreter running as an interactive Emacs inferior
15368 process. Only languages which provide tools for interactive evaluation of
15369 code have session support, so some language (e.g., C and ditaa) do not
15370 support the @code{:session} header argument, and in other languages (e.g.,
15371 Python and Haskell) which have limitations on the code which may be entered
15372 into interactive sessions, those limitations apply to the code in code blocks
15373 using the @code{:session} header argument as well.
15374
15375 Unless the @code{:results output} option is supplied (see below) the result
15376 returned is the result of the last evaluation performed by the
15377 interpreter. (This is obtained in a language-specific manner: the value of
15378 the variable @code{_} in Python and Ruby, and the value of @code{.Last.value}
15379 in R).
15380
15381 @subsubsection @code{:results output}
15382 The code is passed to the interpreter running as an interactive Emacs
15383 inferior process. The result returned is the concatenation of the sequence of
15384 (text) output from the interactive interpreter. Notice that this is not
15385 necessarily the same as what would be sent to @code{STDOUT} if the same code
15386 were passed to a non-interactive interpreter running as an external
15387 process. For example, compare the following two blocks:
15388
15389 @example
15390 #+BEGIN_SRC python :results output
15391 print "hello"
15392 2
15393 print "bye"
15394 #+END_SRC
15395
15396 #+RESULTS:
15397 : hello
15398 : bye
15399 @end example
15400
15401 In non-session mode, the `2' is not printed and does not appear.
15402
15403 @example
15404 #+BEGIN_SRC python :results output :session
15405 print "hello"
15406 2
15407 print "bye"
15408 #+END_SRC
15409
15410 #+RESULTS:
15411 : hello
15412 : 2
15413 : bye
15414 @end example
15415
15416 But in @code{:session} mode, the interactive interpreter receives input `2'
15417 and prints out its value, `2'. (Indeed, the other print statements are
15418 unnecessary here).
15419
15420 @node Noweb reference syntax, Key bindings and useful functions, Results of evaluation, Working With Source Code
15421 @section Noweb reference syntax
15422 @cindex code block, noweb reference
15423 @cindex syntax, noweb
15424 @cindex source code, noweb reference
15425
15426 The ``noweb'' (see @uref{http://www.cs.tufts.edu/~nr/noweb/}) Literate
15427 Programming system allows named blocks of code to be referenced by using the
15428 familiar Noweb syntax:
15429
15430 @example
15431 <<code-block-name>>
15432 @end example
15433
15434 When a code block is tangled or evaluated, whether or not ``noweb''
15435 references are expanded depends upon the value of the @code{:noweb} header
15436 argument. If @code{:noweb yes}, then a Noweb reference is expanded before
15437 evaluation. If @code{:noweb no}, the default, then the reference is not
15438 expanded before evaluation. See the @ref{noweb-ref} header argument for
15439 a more flexible way to resolve noweb references.
15440
15441 It is possible to include the @emph{results} of a code block rather than the
15442 body. This is done by appending parenthesis to the code block name which may
15443 optionally contain arguments to the code block as shown below.
15444
15445 @example
15446 <<code-block-name(optional arguments)>>
15447 @end example
15448
15449 Note: the default value, @code{:noweb no}, was chosen to ensure that
15450 correct code is not broken in a language, such as Ruby, where
15451 @code{<<arg>>} is a syntactically valid construct. If @code{<<arg>>} is not
15452 syntactically valid in languages that you use, then please consider setting
15453 the default value.
15454
15455 Note: if noweb tangling is slow in large Org mode files consider setting the
15456 @code{org-babel-use-quick-and-dirty-noweb-expansion} variable to @code{t}.
15457 This will result in faster noweb reference resolution at the expense of not
15458 correctly resolving inherited values of the @code{:noweb-ref} header
15459 argument.
15460
15461 @node Key bindings and useful functions, Batch execution, Noweb reference syntax, Working With Source Code
15462 @section Key bindings and useful functions
15463 @cindex code block, key bindings
15464
15465 Many common Org mode key sequences are re-bound depending on
15466 the context.
15467
15468 Within a code block, the following key bindings
15469 are active:
15470
15471 @multitable @columnfractions 0.25 0.75
15472 @kindex C-c C-c
15473 @item @kbd{C-c C-c} @tab @code{org-babel-execute-src-block}
15474 @kindex C-c C-o
15475 @item @kbd{C-c C-o} @tab @code{org-babel-open-src-block-result}
15476 @kindex C-up
15477 @item @kbd{C-@key{up}} @tab @code{org-babel-load-in-session}
15478 @kindex M-down
15479 @item @kbd{M-@key{down}} @tab @code{org-babel-pop-to-session}
15480 @end multitable
15481
15482 In an Org mode buffer, the following key bindings are active:
15483
15484 @multitable @columnfractions 0.45 0.55
15485 @kindex C-c C-v p
15486 @kindex C-c C-v C-p
15487 @item @kbd{C-c C-v p} @ @ @r{or} @ @ @kbd{C-c C-v C-p} @tab @code{org-babel-previous-src-block}
15488 @kindex C-c C-v n
15489 @kindex C-c C-v C-n
15490 @item @kbd{C-c C-v n} @ @ @r{or} @ @ @kbd{C-c C-v C-n} @tab @code{org-babel-next-src-block}
15491 @kindex C-c C-v e
15492 @kindex C-c C-v C-e
15493 @item @kbd{C-c C-v e} @ @ @r{or} @ @ @kbd{C-c C-v C-e} @tab @code{org-babel-execute-maybe}
15494 @kindex C-c C-v o
15495 @kindex C-c C-v C-o
15496 @item @kbd{C-c C-v o} @ @ @r{or} @ @ @kbd{C-c C-v C-o} @tab @code{org-babel-open-src-block-result}
15497 @kindex C-c C-v v
15498 @kindex C-c C-v C-v
15499 @item @kbd{C-c C-v v} @ @ @r{or} @ @ @kbd{C-c C-v C-v} @tab @code{org-babel-expand-src-block}
15500 @kindex C-c C-v u
15501 @kindex C-c C-v C-u
15502 @item @kbd{C-c C-v u} @ @ @r{or} @ @ @kbd{C-c C-v C-u} @tab @code{org-babel-goto-src-block-head}
15503 @kindex C-c C-v g
15504 @kindex C-c C-v C-g
15505 @item @kbd{C-c C-v g} @ @ @r{or} @ @ @kbd{C-c C-v C-g} @tab @code{org-babel-goto-named-src-block}
15506 @kindex C-c C-v r
15507 @kindex C-c C-v C-r
15508 @item @kbd{C-c C-v r} @ @ @r{or} @ @ @kbd{C-c C-v C-r} @tab @code{org-babel-goto-named-result}
15509 @kindex C-c C-v b
15510 @kindex C-c C-v C-b
15511 @item @kbd{C-c C-v b} @ @ @r{or} @ @ @kbd{C-c C-v C-b} @tab @code{org-babel-execute-buffer}
15512 @kindex C-c C-v s
15513 @kindex C-c C-v C-s
15514 @item @kbd{C-c C-v s} @ @ @r{or} @ @ @kbd{C-c C-v C-s} @tab @code{org-babel-execute-subtree}
15515 @kindex C-c C-v d
15516 @kindex C-c C-v C-d
15517 @item @kbd{C-c C-v d} @ @ @r{or} @ @ @kbd{C-c C-v C-d} @tab @code{org-babel-demarcate-block}
15518 @kindex C-c C-v t
15519 @kindex C-c C-v C-t
15520 @item @kbd{C-c C-v t} @ @ @r{or} @ @ @kbd{C-c C-v C-t} @tab @code{org-babel-tangle}
15521 @kindex C-c C-v f
15522 @kindex C-c C-v C-f
15523 @item @kbd{C-c C-v f} @ @ @r{or} @ @ @kbd{C-c C-v C-f} @tab @code{org-babel-tangle-file}
15524 @kindex C-c C-v c
15525 @kindex C-c C-v C-c
15526 @item @kbd{C-c C-v c} @ @ @r{or} @ @ @kbd{C-c C-v C-c} @tab @code{org-babel-check-src-block}
15527 @kindex C-c C-v j
15528 @kindex C-c C-v C-j
15529 @item @kbd{C-c C-v j} @ @ @r{or} @ @ @kbd{C-c C-v C-j} @tab @code{org-babel-insert-header-arg}
15530 @kindex C-c C-v l
15531 @kindex C-c C-v C-l
15532 @item @kbd{C-c C-v l} @ @ @r{or} @ @ @kbd{C-c C-v C-l} @tab @code{org-babel-load-in-session}
15533 @kindex C-c C-v i
15534 @kindex C-c C-v C-i
15535 @item @kbd{C-c C-v i} @ @ @r{or} @ @ @kbd{C-c C-v C-i} @tab @code{org-babel-lob-ingest}
15536 @kindex C-c C-v I
15537 @kindex C-c C-v C-I
15538 @item @kbd{C-c C-v I} @ @ @r{or} @ @ @kbd{C-c C-v C-I} @tab @code{org-babel-view-src-block-info}
15539 @kindex C-c C-v z
15540 @kindex C-c C-v C-z
15541 @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}
15542 @kindex C-c C-v a
15543 @kindex C-c C-v C-a
15544 @item @kbd{C-c C-v a} @ @ @r{or} @ @ @kbd{C-c C-v C-a} @tab @code{org-babel-sha1-hash}
15545 @kindex C-c C-v h
15546 @kindex C-c C-v C-h
15547 @item @kbd{C-c C-v h} @ @ @r{or} @ @ @kbd{C-c C-v C-h} @tab @code{org-babel-describe-bindings}
15548 @kindex C-c C-v x
15549 @kindex C-c C-v C-x
15550 @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}
15551 @end multitable
15552
15553 @c When possible these keybindings were extended to work when the control key is
15554 @c kept pressed, resulting in the following additional keybindings.
15555
15556 @c @multitable @columnfractions 0.25 0.75
15557 @c @item @kbd{C-c C-v C-a} @tab @code{org-babel-sha1-hash}
15558 @c @item @kbd{C-c C-v C-b} @tab @code{org-babel-execute-buffer}
15559 @c @item @kbd{C-c C-v C-f} @tab @code{org-babel-tangle-file}
15560 @c @item @kbd{C-c C-v C-l} @tab @code{org-babel-lob-ingest}
15561 @c @item @kbd{C-c C-v C-p} @tab @code{org-babel-expand-src-block}
15562 @c @item @kbd{C-c C-v C-s} @tab @code{org-babel-execute-subtree}
15563 @c @item @kbd{C-c C-v C-t} @tab @code{org-babel-tangle}
15564 @c @item @kbd{C-c C-v C-z} @tab @code{org-babel-switch-to-session}
15565 @c @end multitable
15566
15567 @node Batch execution, , Key bindings and useful functions, Working With Source Code
15568 @section Batch execution
15569 @cindex code block, batch execution
15570 @cindex source code, batch execution
15571
15572 It is possible to call functions from the command line. This shell
15573 script calls @code{org-babel-tangle} on every one of its arguments.
15574
15575 Be sure to adjust the paths to fit your system.
15576
15577 @example
15578 #!/bin/sh
15579 # -*- mode: shell-script -*-
15580 #
15581 # tangle files with org-mode
15582 #
15583 DIR=`pwd`
15584 FILES=""
15585
15586 # wrap each argument in the code required to call tangle on it
15587 for i in $@@; do
15588 FILES="$FILES \"$i\""
15589 done
15590
15591 emacs -Q --batch \
15592 --eval "(progn
15593 (add-to-list 'load-path (expand-file-name \"~/src/org/lisp/\"))
15594 (add-to-list 'load-path (expand-file-name \"~/src/org/contrib/lisp/\" t))
15595 (require 'org)(require 'org-exp)(require 'ob)(require 'ob-tangle)
15596 (mapc (lambda (file)
15597 (find-file (expand-file-name file \"$DIR\"))
15598 (org-babel-tangle)
15599 (kill-buffer)) '($FILES)))" 2>&1 |grep tangled
15600 @end example
15601
15602 @node Miscellaneous, Hacking, Working With Source Code, Top
15603 @chapter Miscellaneous
15604
15605 @menu
15606 * Completion:: M-TAB knows what you need
15607 * Easy Templates:: Quick insertion of structural elements
15608 * Speed keys:: Electric commands at the beginning of a headline
15609 * Code evaluation security:: Org mode files evaluate inline code
15610 * Customization:: Adapting Org to your taste
15611 * In-buffer settings:: Overview of the #+KEYWORDS
15612 * The very busy C-c C-c key:: When in doubt, press C-c C-c
15613 * Clean view:: Getting rid of leading stars in the outline
15614 * TTY keys:: Using Org on a tty
15615 * Interaction:: Other Emacs packages
15616 * org-crypt:: Encrypting Org files
15617 @end menu
15618
15619
15620 @node Completion, Easy Templates, Miscellaneous, Miscellaneous
15621 @section Completion
15622 @cindex completion, of @TeX{} symbols
15623 @cindex completion, of TODO keywords
15624 @cindex completion, of dictionary words
15625 @cindex completion, of option keywords
15626 @cindex completion, of tags
15627 @cindex completion, of property keys
15628 @cindex completion, of link abbreviations
15629 @cindex @TeX{} symbol completion
15630 @cindex TODO keywords completion
15631 @cindex dictionary word completion
15632 @cindex option keyword completion
15633 @cindex tag completion
15634 @cindex link abbreviations, completion of
15635
15636 Emacs would not be Emacs without completion, and Org mode uses it whenever it
15637 makes sense. If you prefer an @i{iswitchb}- or @i{ido}-like interface for
15638 some of the completion prompts, you can specify your preference by setting at
15639 most one of the variables @code{org-completion-use-iswitchb}
15640 @code{org-completion-use-ido}.
15641
15642 Org supports in-buffer completion. This type of completion does
15643 not make use of the minibuffer. You simply type a few letters into
15644 the buffer and use the key to complete text right there.
15645
15646 @table @kbd
15647 @kindex M-@key{TAB}
15648 @item M-@key{TAB}
15649 Complete word at point
15650 @itemize @bullet
15651 @item
15652 At the beginning of a headline, complete TODO keywords.
15653 @item
15654 After @samp{\}, complete @TeX{} symbols supported by the exporter.
15655 @item
15656 After @samp{*}, complete headlines in the current buffer so that they
15657 can be used in search links like @samp{[[*find this headline]]}.
15658 @item
15659 After @samp{:} in a headline, complete tags. The list of tags is taken
15660 from the variable @code{org-tag-alist} (possibly set through the
15661 @samp{#+TAGS} in-buffer option, @pxref{Setting tags}), or it is created
15662 dynamically from all tags used in the current buffer.
15663 @item
15664 After @samp{:} and not in a headline, complete property keys. The list
15665 of keys is constructed dynamically from all keys used in the current
15666 buffer.
15667 @item
15668 After @samp{[}, complete link abbreviations (@pxref{Link abbreviations}).
15669 @item
15670 After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
15671 @samp{OPTIONS} which set file-specific options for Org mode. When the
15672 option keyword is already complete, pressing @kbd{M-@key{TAB}} again
15673 will insert example settings for this keyword.
15674 @item
15675 In the line after @samp{#+STARTUP: }, complete startup keywords,
15676 i.e., valid keys for this line.
15677 @item
15678 Elsewhere, complete dictionary words using Ispell.
15679 @end itemize
15680 @end table
15681
15682 @node Easy Templates, Speed keys, Completion, Miscellaneous
15683 @section Easy Templates
15684 @cindex template insertion
15685 @cindex insertion, of templates
15686
15687 Org mode supports insertion of empty structural elements (like
15688 @code{#+BEGIN_SRC} and @code{#+END_SRC} pairs) with just a few key
15689 strokes. This is achieved through a native template expansion mechanism.
15690 Note that Emacs has several other template mechanisms which could be used in
15691 a similar way, for example @file{yasnippet}.
15692
15693 To insert a structural element, type a @samp{<}, followed by a template
15694 selector and @kbd{@key{TAB}}. Completion takes effect only when the above
15695 keystrokes are typed on a line by itself.
15696
15697 The following template selectors are currently supported.
15698
15699 @multitable @columnfractions 0.1 0.9
15700 @item @kbd{s} @tab @code{#+BEGIN_SRC ... #+END_SRC}
15701 @item @kbd{e} @tab @code{#+BEGIN_EXAMPLE ... #+END_EXAMPLE}
15702 @item @kbd{q} @tab @code{#+BEGIN_QUOTE ... #+END_QUOTE}
15703 @item @kbd{v} @tab @code{#+BEGIN_VERSE ... #+END_VERSE}
15704 @item @kbd{c} @tab @code{#+BEGIN_CENTER ... #+END_CENTER}
15705 @item @kbd{l} @tab @code{#+BEGIN_LaTeX ... #+END_LaTeX}
15706 @item @kbd{L} @tab @code{#+LaTeX:}
15707 @item @kbd{h} @tab @code{#+BEGIN_HTML ... #+END_HTML}
15708 @item @kbd{H} @tab @code{#+HTML:}
15709 @item @kbd{a} @tab @code{#+BEGIN_ASCII ... #+END_ASCII}
15710 @item @kbd{A} @tab @code{#+ASCII:}
15711 @item @kbd{i} @tab @code{#+INDEX:} line
15712 @item @kbd{I} @tab @code{#+INCLUDE:} line
15713 @end multitable
15714
15715 For example, on an empty line, typing "<e" and then pressing TAB, will expand
15716 into a complete EXAMPLE template.
15717
15718 You can install additional templates by customizing the variable
15719 @code{org-structure-template-alist}. See the docstring of the variable for
15720 additional details.
15721
15722 @node Speed keys, Code evaluation security, Easy Templates, Miscellaneous
15723 @section Speed keys
15724 @cindex speed keys
15725 @vindex org-use-speed-commands
15726 @vindex org-speed-commands-user
15727
15728 Single keys can be made to execute commands when the cursor is at the
15729 beginning of a headline, i.e., before the first star. Configure the variable
15730 @code{org-use-speed-commands} to activate this feature. There is a
15731 pre-defined list of commands, and you can add more such commands using the
15732 variable @code{org-speed-commands-user}. Speed keys do not only speed up
15733 navigation and other commands, but they also provide an alternative way to
15734 execute commands bound to keys that are not or not easily available on a TTY,
15735 or on a small mobile device with a limited keyboard.
15736
15737 To see which commands are available, activate the feature and press @kbd{?}
15738 with the cursor at the beginning of a headline.
15739
15740 @node Code evaluation security, Customization, Speed keys, Miscellaneous
15741 @section Code evaluation and security issues
15742
15743 Org provides tools to work with the code snippets, including evaluating them.
15744
15745 Running code on your machine always comes with a security risk. Badly
15746 written or malicious code can be executed on purpose or by accident. Org has
15747 default settings which will only evaluate such code if you give explicit
15748 permission to do so, and as a casual user of these features you should leave
15749 these precautions intact.
15750
15751 For people who regularly work with such code, the confirmation prompts can
15752 become annoying, and you might want to turn them off. This can be done, but
15753 you must be aware of the risks that are involved.
15754
15755 Code evaluation can happen under the following circumstances:
15756
15757 @table @i
15758 @item Source code blocks
15759 Source code blocks can be evaluated during export, or when pressing @kbd{C-c
15760 C-c} in the block. The most important thing to realize here is that Org mode
15761 files which contain code snippets are, in a certain sense, like executable
15762 files. So you should accept them and load them into Emacs only from trusted
15763 sources---just like you would do with a program you install on your computer.
15764
15765 Make sure you know what you are doing before customizing the variables
15766 which take off the default security brakes.
15767
15768 @defopt org-confirm-babel-evaluate
15769 When t (the default), the user is asked before every code block evaluation.
15770 When @code{nil}, the user is not asked. When set to a function, it is called with
15771 two arguments (language and body of the code block) and should return t to
15772 ask and @code{nil} not to ask.
15773 @end defopt
15774
15775 For example, here is how to execute "ditaa" code (which is considered safe)
15776 without asking:
15777
15778 @lisp
15779 (defun my-org-confirm-babel-evaluate (lang body)
15780 (not (string= lang "ditaa"))) ; don't ask for ditaa
15781 (setq org-confirm-babel-evaluate 'my-org-confirm-babel-evaluate)
15782 @end lisp
15783
15784 @item Following @code{shell} and @code{elisp} links
15785 Org has two link types that can directly evaluate code (@pxref{External
15786 links}). These links can be problematic because the code to be evaluated is
15787 not visible.
15788
15789 @defopt org-confirm-shell-link-function
15790 Function to queries user about shell link execution.
15791 @end defopt
15792 @defopt org-confirm-elisp-link-function
15793 Functions to query user for Emacs Lisp link execution.
15794 @end defopt
15795
15796 @item Formulas in tables
15797 Formulas in tables (@pxref{The spreadsheet}) are code that is evaluated
15798 either by the @i{calc} interpreter, or by the @i{Emacs Lisp} interpreter.
15799 @end table
15800
15801 @node Customization, In-buffer settings, Code evaluation security, Miscellaneous
15802 @section Customization
15803 @cindex customization
15804 @cindex options, for customization
15805 @cindex variables, for customization
15806
15807 There are more than 500 variables that can be used to customize
15808 Org. For the sake of compactness of the manual, I am not
15809 describing the variables here. A structured overview of customization
15810 variables is available with @kbd{M-x org-customize RET}. Or select
15811 @code{Browse Org Group} from the @code{Org->Customization} menu. Many
15812 settings can also be activated on a per-file basis, by putting special
15813 lines into the buffer (@pxref{In-buffer settings}).
15814
15815 @node In-buffer settings, The very busy C-c C-c key, Customization, Miscellaneous
15816 @section Summary of in-buffer settings
15817 @cindex in-buffer settings
15818 @cindex special keywords
15819
15820 Org mode uses special lines in the buffer to define settings on a
15821 per-file basis. These lines start with a @samp{#+} followed by a
15822 keyword, a colon, and then individual words defining a setting. Several
15823 setting words can be in the same line, but you can also have multiple
15824 lines for the keyword. While these settings are described throughout
15825 the manual, here is a summary. After changing any of those lines in the
15826 buffer, press @kbd{C-c C-c} with the cursor still in the line to
15827 activate the changes immediately. Otherwise they become effective only
15828 when the file is visited again in a new Emacs session.
15829
15830 @vindex org-archive-location
15831 @table @kbd
15832 @item #+ARCHIVE: %s_done::
15833 This line sets the archive location for the agenda file. It applies for
15834 all subsequent lines until the next @samp{#+ARCHIVE} line, or the end
15835 of the file. The first such line also applies to any entries before it.
15836 The corresponding variable is @code{org-archive-location}.
15837 @item #+CATEGORY:
15838 This line sets the category for the agenda file. The category applies
15839 for all subsequent lines until the next @samp{#+CATEGORY} line, or the
15840 end of the file. The first such line also applies to any entries before it.
15841 @item #+COLUMNS: %25ITEM ...
15842 @cindex property, COLUMNS
15843 Set the default format for columns view. This format applies when
15844 columns view is invoked in locations where no @code{COLUMNS} property
15845 applies.
15846 @item #+CONSTANTS: name1=value1 ...
15847 @vindex org-table-formula-constants
15848 @vindex org-table-formula
15849 Set file-local values for constants to be used in table formulas. This
15850 line sets the local variable @code{org-table-formula-constants-local}.
15851 The global version of this variable is
15852 @code{org-table-formula-constants}.
15853 @item #+FILETAGS: :tag1:tag2:tag3:
15854 Set tags that can be inherited by any entry in the file, including the
15855 top-level entries.
15856 @item #+DRAWERS: NAME1 ...
15857 @vindex org-drawers
15858 Set the file-local set of additional drawers. The corresponding global
15859 variable is @code{org-drawers}.
15860 @item #+LINK: linkword replace
15861 @vindex org-link-abbrev-alist
15862 These lines (several are allowed) specify link abbreviations.
15863 @xref{Link abbreviations}. The corresponding variable is
15864 @code{org-link-abbrev-alist}.
15865 @item #+PRIORITIES: highest lowest default
15866 @vindex org-highest-priority
15867 @vindex org-lowest-priority
15868 @vindex org-default-priority
15869 This line sets the limits and the default for the priorities. All three
15870 must be either letters A--Z or numbers 0--9. The highest priority must
15871 have a lower ASCII number than the lowest priority.
15872 @item #+PROPERTY: Property_Name Value
15873 This line sets a default inheritance value for entries in the current
15874 buffer, most useful for specifying the allowed values of a property.
15875 @cindex #+SETUPFILE
15876 @item #+SETUPFILE: file
15877 This line defines a file that holds more in-buffer setup. Normally this is
15878 entirely ignored. Only when the buffer is parsed for option-setting lines
15879 (i.e., when starting Org mode for a file, when pressing @kbd{C-c C-c} in a
15880 settings line, or when exporting), then the contents of this file are parsed
15881 as if they had been included in the buffer. In particular, the file can be
15882 any other Org mode file with internal setup. You can visit the file the
15883 cursor is in the line with @kbd{C-c '}.
15884 @item #+STARTUP:
15885 @cindex #+STARTUP
15886 This line sets options to be used at startup of Org mode, when an
15887 Org file is being visited.
15888
15889 The first set of options deals with the initial visibility of the outline
15890 tree. The corresponding variable for global default settings is
15891 @code{org-startup-folded}, with a default value @code{t}, which means
15892 @code{overview}.
15893 @vindex org-startup-folded
15894 @cindex @code{overview}, STARTUP keyword
15895 @cindex @code{content}, STARTUP keyword
15896 @cindex @code{showall}, STARTUP keyword
15897 @cindex @code{showeverything}, STARTUP keyword
15898 @example
15899 overview @r{top-level headlines only}
15900 content @r{all headlines}
15901 showall @r{no folding of any entries}
15902 showeverything @r{show even drawer contents}
15903 @end example
15904
15905 @vindex org-startup-indented
15906 @cindex @code{indent}, STARTUP keyword
15907 @cindex @code{noindent}, STARTUP keyword
15908 Dynamic virtual indentation is controlled by the variable
15909 @code{org-startup-indented}@footnote{Emacs 23 and Org mode 6.29 are required}
15910 @example
15911 indent @r{start with @code{org-indent-mode} turned on}
15912 noindent @r{start with @code{org-indent-mode} turned off}
15913 @end example
15914
15915 @vindex org-startup-align-all-tables
15916 Then there are options for aligning tables upon visiting a file. This
15917 is useful in files containing narrowed table columns. The corresponding
15918 variable is @code{org-startup-align-all-tables}, with a default value
15919 @code{nil}.
15920 @cindex @code{align}, STARTUP keyword
15921 @cindex @code{noalign}, STARTUP keyword
15922 @example
15923 align @r{align all tables}
15924 noalign @r{don't align tables on startup}
15925 @end example
15926
15927 @vindex org-startup-with-inline-images
15928 When visiting a file, inline images can be automatically displayed. The
15929 corresponding variable is @code{org-startup-with-inline-images}, with a
15930 default value @code{nil} to avoid delays when visiting a file.
15931 @cindex @code{inlineimages}, STARTUP keyword
15932 @cindex @code{noinlineimages}, STARTUP keyword
15933 @example
15934 inlineimages @r{show inline images}
15935 noinlineimages @r{don't show inline images on startup}
15936 @end example
15937
15938 @vindex org-startup-with-latex-preview
15939 When visiting a file, @LaTeX{} fragments can be converted to images
15940 automatically. The variable @code{org-startup-with-latex-preview} which
15941 controls this behavior, is set to @code{nil} by default to avoid delays on
15942 startup.
15943 @cindex @code{latexpreview}, STARTUP keyword
15944 @cindex @code{nolatexpreview}, STARTUP keyword
15945 @example
15946 latexpreview @r{preview @LaTeX{} fragments}
15947 nolatexpreview @r{don't preview @LaTeX{} fragments}
15948 @end example
15949
15950 @vindex org-log-done
15951 @vindex org-log-note-clock-out
15952 @vindex org-log-repeat
15953 Logging the closing and reopening of TODO items and clock intervals can be
15954 configured using these options (see variables @code{org-log-done},
15955 @code{org-log-note-clock-out} and @code{org-log-repeat})
15956 @cindex @code{logdone}, STARTUP keyword
15957 @cindex @code{lognotedone}, STARTUP keyword
15958 @cindex @code{nologdone}, STARTUP keyword
15959 @cindex @code{lognoteclock-out}, STARTUP keyword
15960 @cindex @code{nolognoteclock-out}, STARTUP keyword
15961 @cindex @code{logrepeat}, STARTUP keyword
15962 @cindex @code{lognoterepeat}, STARTUP keyword
15963 @cindex @code{nologrepeat}, STARTUP keyword
15964 @cindex @code{logreschedule}, STARTUP keyword
15965 @cindex @code{lognotereschedule}, STARTUP keyword
15966 @cindex @code{nologreschedule}, STARTUP keyword
15967 @cindex @code{logredeadline}, STARTUP keyword
15968 @cindex @code{lognoteredeadline}, STARTUP keyword
15969 @cindex @code{nologredeadline}, STARTUP keyword
15970 @cindex @code{logrefile}, STARTUP keyword
15971 @cindex @code{lognoterefile}, STARTUP keyword
15972 @cindex @code{nologrefile}, STARTUP keyword
15973 @cindex @code{logdrawer}, STARTUP keyword
15974 @cindex @code{nologdrawer}, STARTUP keyword
15975 @cindex @code{logstatesreversed}, STARTUP keyword
15976 @cindex @code{nologstatesreversed}, STARTUP keyword
15977 @example
15978 logdone @r{record a timestamp when an item is marked DONE}
15979 lognotedone @r{record timestamp and a note when DONE}
15980 nologdone @r{don't record when items are marked DONE}
15981 logrepeat @r{record a time when reinstating a repeating item}
15982 lognoterepeat @r{record a note when reinstating a repeating item}
15983 nologrepeat @r{do not record when reinstating repeating item}
15984 lognoteclock-out @r{record a note when clocking out}
15985 nolognoteclock-out @r{don't record a note when clocking out}
15986 logreschedule @r{record a timestamp when scheduling time changes}
15987 lognotereschedule @r{record a note when scheduling time changes}
15988 nologreschedule @r{do not record when a scheduling date changes}
15989 logredeadline @r{record a timestamp when deadline changes}
15990 lognoteredeadline @r{record a note when deadline changes}
15991 nologredeadline @r{do not record when a deadline date changes}
15992 logrefile @r{record a timestamp when refiling}
15993 lognoterefile @r{record a note when refiling}
15994 nologrefile @r{do not record when refiling}
15995 logdrawer @r{store log into drawer}
15996 nologdrawer @r{store log outside of drawer}
15997 logstatesreversed @r{reverse the order of states notes}
15998 nologstatesreversed @r{do not reverse the order of states notes}
15999 @end example
16000
16001 @vindex org-hide-leading-stars
16002 @vindex org-odd-levels-only
16003 Here are the options for hiding leading stars in outline headings, and for
16004 indenting outlines. The corresponding variables are
16005 @code{org-hide-leading-stars} and @code{org-odd-levels-only}, both with a
16006 default setting @code{nil} (meaning @code{showstars} and @code{oddeven}).
16007 @cindex @code{hidestars}, STARTUP keyword
16008 @cindex @code{showstars}, STARTUP keyword
16009 @cindex @code{odd}, STARTUP keyword
16010 @cindex @code{even}, STARTUP keyword
16011 @example
16012 hidestars @r{make all but one of the stars starting a headline invisible.}
16013 showstars @r{show all stars starting a headline}
16014 indent @r{virtual indentation according to outline level}
16015 noindent @r{no virtual indentation according to outline level}
16016 odd @r{allow only odd outline levels (1,3,...)}
16017 oddeven @r{allow all outline levels}
16018 @end example
16019
16020 @vindex org-put-time-stamp-overlays
16021 @vindex org-time-stamp-overlay-formats
16022 To turn on custom format overlays over timestamps (variables
16023 @code{org-put-time-stamp-overlays} and
16024 @code{org-time-stamp-overlay-formats}), use
16025 @cindex @code{customtime}, STARTUP keyword
16026 @example
16027 customtime @r{overlay custom time format}
16028 @end example
16029
16030 @vindex constants-unit-system
16031 The following options influence the table spreadsheet (variable
16032 @code{constants-unit-system}).
16033 @cindex @code{constcgs}, STARTUP keyword
16034 @cindex @code{constSI}, STARTUP keyword
16035 @example
16036 constcgs @r{@file{constants.el} should use the c-g-s unit system}
16037 constSI @r{@file{constants.el} should use the SI unit system}
16038 @end example
16039
16040 @vindex org-footnote-define-inline
16041 @vindex org-footnote-auto-label
16042 @vindex org-footnote-auto-adjust
16043 To influence footnote settings, use the following keywords. The
16044 corresponding variables are @code{org-footnote-define-inline},
16045 @code{org-footnote-auto-label}, and @code{org-footnote-auto-adjust}.
16046 @cindex @code{fninline}, STARTUP keyword
16047 @cindex @code{nofninline}, STARTUP keyword
16048 @cindex @code{fnlocal}, STARTUP keyword
16049 @cindex @code{fnprompt}, STARTUP keyword
16050 @cindex @code{fnauto}, STARTUP keyword
16051 @cindex @code{fnconfirm}, STARTUP keyword
16052 @cindex @code{fnplain}, STARTUP keyword
16053 @cindex @code{fnadjust}, STARTUP keyword
16054 @cindex @code{nofnadjust}, STARTUP keyword
16055 @example
16056 fninline @r{define footnotes inline}
16057 fnnoinline @r{define footnotes in separate section}
16058 fnlocal @r{define footnotes near first reference, but not inline}
16059 fnprompt @r{prompt for footnote labels}
16060 fnauto @r{create @code{[fn:1]}-like labels automatically (default)}
16061 fnconfirm @r{offer automatic label for editing or confirmation}
16062 fnplain @r{create @code{[1]}-like labels automatically}
16063 fnadjust @r{automatically renumber and sort footnotes}
16064 nofnadjust @r{do not renumber and sort automatically}
16065 @end example
16066
16067 @cindex org-hide-block-startup
16068 To hide blocks on startup, use these keywords. The corresponding variable is
16069 @code{org-hide-block-startup}.
16070 @cindex @code{hideblocks}, STARTUP keyword
16071 @cindex @code{nohideblocks}, STARTUP keyword
16072 @example
16073 hideblocks @r{Hide all begin/end blocks on startup}
16074 nohideblocks @r{Do not hide blocks on startup}
16075 @end example
16076
16077 @cindex org-pretty-entities
16078 The display of entities as UTF-8 characters is governed by the variable
16079 @code{org-pretty-entities} and the keywords
16080 @cindex @code{entitiespretty}, STARTUP keyword
16081 @cindex @code{entitiesplain}, STARTUP keyword
16082 @example
16083 entitiespretty @r{Show entities as UTF-8 characters where possible}
16084 entitiesplain @r{Leave entities plain}
16085 @end example
16086
16087 @item #+TAGS: TAG1(c1) TAG2(c2)
16088 @vindex org-tag-alist
16089 These lines (several such lines are allowed) specify the valid tags in
16090 this file, and (potentially) the corresponding @emph{fast tag selection}
16091 keys. The corresponding variable is @code{org-tag-alist}.
16092 @cindex #+TBLFM
16093 @item #+TBLFM:
16094 This line contains the formulas for the table directly above the line.
16095
16096 Table can have multiple lines containing @samp{#+TBLFM:}. Note
16097 that only the first line of @samp{#+TBLFM:} will be applied when
16098 you recalculate the table. For more details see @ref{Using
16099 multiple #+TBLFM lines} in @ref{Editing and debugging formulas}.
16100
16101 @item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+DATE:,
16102 @itemx #+OPTIONS:, #+BIND:,
16103 @itemx #+DESCRIPTION:, #+KEYWORDS:,
16104 @itemx #+LaTeX_HEADER:, #+LaTeX_HEADER_EXTRA:,
16105 @itemx #+HTML_HEAD:, #+HTML_HEAD_EXTRA:, #+HTML_LINK_UP:, #+HTML_LINK_HOME:,
16106 @itemx #+SELECT_TAGS:, #+EXCLUDE_TAGS:
16107 These lines provide settings for exporting files. For more details see
16108 @ref{Export settings}.
16109 @item #+TODO: #+SEQ_TODO: #+TYP_TODO:
16110 @vindex org-todo-keywords
16111 These lines set the TODO keywords and their interpretation in the
16112 current file. The corresponding variable is @code{org-todo-keywords}.
16113 @end table
16114
16115 @node The very busy C-c C-c key, Clean view, In-buffer settings, Miscellaneous
16116 @section The very busy C-c C-c key
16117 @kindex C-c C-c
16118 @cindex C-c C-c, overview
16119
16120 The key @kbd{C-c C-c} has many purposes in Org, which are all
16121 mentioned scattered throughout this manual. One specific function of
16122 this key is to add @emph{tags} to a headline (@pxref{Tags}). In many
16123 other circumstances it means something like @emph{``Hey Org, look
16124 here and update according to what you see here''}. Here is a summary of
16125 what this means in different contexts.
16126
16127 @itemize @minus
16128 @item
16129 If there are highlights in the buffer from the creation of a sparse
16130 tree, or from clock display, remove these highlights.
16131 @item
16132 If the cursor is in one of the special @code{#+KEYWORD} lines, this
16133 triggers scanning the buffer for these lines and updating the
16134 information.
16135 @item
16136 If the cursor is inside a table, realign the table. This command
16137 works even if the automatic table editor has been turned off.
16138 @item
16139 If the cursor is on a @code{#+TBLFM} line, re-apply the formulas to
16140 the entire table.
16141 @item
16142 If the current buffer is a capture buffer, close the note and file it.
16143 With a prefix argument, file it, without further interaction, to the
16144 default location.
16145 @item
16146 If the cursor is on a @code{<<<target>>>}, update radio targets and
16147 corresponding links in this buffer.
16148 @item
16149 If the cursor is in a property line or at the start or end of a property
16150 drawer, offer property commands.
16151 @item
16152 If the cursor is at a footnote reference, go to the corresponding
16153 definition, and @emph{vice versa}.
16154 @item
16155 If the cursor is on a statistics cookie, update it.
16156 @item
16157 If the cursor is in a plain list item with a checkbox, toggle the status
16158 of the checkbox.
16159 @item
16160 If the cursor is on a numbered item in a plain list, renumber the
16161 ordered list.
16162 @item
16163 If the cursor is on the @code{#+BEGIN} line of a dynamic block, the
16164 block is updated.
16165 @item
16166 If the cursor is at a timestamp, fix the day name in the timestamp.
16167 @end itemize
16168
16169 @node Clean view, TTY keys, The very busy C-c C-c key, Miscellaneous
16170 @section A cleaner outline view
16171 @cindex hiding leading stars
16172 @cindex dynamic indentation
16173 @cindex odd-levels-only outlines
16174 @cindex clean outline view
16175
16176 Some people find it noisy and distracting that the Org headlines start with a
16177 potentially large number of stars, and that text below the headlines is not
16178 indented. While this is no problem when writing a @emph{book-like} document
16179 where the outline headings are really section headings, in a more
16180 @emph{list-oriented} outline, indented structure is a lot cleaner:
16181
16182 @example
16183 @group
16184 * Top level headline | * Top level headline
16185 ** Second level | * Second level
16186 *** 3rd level | * 3rd level
16187 some text | some text
16188 *** 3rd level | * 3rd level
16189 more text | more text
16190 * Another top level headline | * Another top level headline
16191 @end group
16192 @end example
16193
16194 @noindent
16195
16196 If you are using at least Emacs 23.2@footnote{Emacs 23.1 can actually crash
16197 with @code{org-indent-mode}} and version 6.29 of Org, this kind of view can
16198 be achieved dynamically at display time using @code{org-indent-mode}. In
16199 this minor mode, all lines are prefixed for display with the necessary amount
16200 of space@footnote{@code{org-indent-mode} also sets the @code{wrap-prefix}
16201 property, such that @code{visual-line-mode} (or purely setting
16202 @code{word-wrap}) wraps long lines (including headlines) correctly indented.
16203 }. Also headlines are prefixed with additional stars, so that the amount of
16204 indentation shifts by two@footnote{See the variable
16205 @code{org-indent-indentation-per-level}.} spaces per level. All headline
16206 stars but the last one are made invisible using the @code{org-hide}
16207 face@footnote{Turning on @code{org-indent-mode} sets
16208 @code{org-hide-leading-stars} to @code{t} and @code{org-adapt-indentation} to
16209 @code{nil}.}; see below under @samp{2.} for more information on how this
16210 works. You can turn on @code{org-indent-mode} for all files by customizing
16211 the variable @code{org-startup-indented}, or you can turn it on for
16212 individual files using
16213
16214 @example
16215 #+STARTUP: indent
16216 @end example
16217
16218 If you want a similar effect in an earlier version of Emacs and/or Org, or if
16219 you want the indentation to be hard space characters so that the plain text
16220 file looks as similar as possible to the Emacs display, Org supports you in
16221 the following way:
16222
16223 @enumerate
16224 @item
16225 @emph{Indentation of text below headlines}@*
16226 You may indent text below each headline to make the left boundary line up
16227 with the headline, like
16228
16229 @example
16230 *** 3rd level
16231 more text, now indented
16232 @end example
16233
16234 @vindex org-adapt-indentation
16235 Org supports this with paragraph filling, line wrapping, and structure
16236 editing@footnote{See also the variable @code{org-adapt-indentation}.},
16237 preserving or adapting the indentation as appropriate.
16238
16239 @item
16240 @vindex org-hide-leading-stars
16241 @emph{Hiding leading stars}@* You can modify the display in such a way that
16242 all leading stars become invisible. To do this in a global way, configure
16243 the variable @code{org-hide-leading-stars} or change this on a per-file basis
16244 with
16245
16246 @example
16247 #+STARTUP: hidestars
16248 #+STARTUP: showstars
16249 @end example
16250
16251 With hidden stars, the tree becomes:
16252
16253 @example
16254 @group
16255 * Top level headline
16256 * Second level
16257 * 3rd level
16258 ...
16259 @end group
16260 @end example
16261
16262 @noindent
16263 @vindex org-hide @r{(face)}
16264 The leading stars are not truly replaced by whitespace, they are only
16265 fontified with the face @code{org-hide} that uses the background color as
16266 font color. If you are not using either white or black background, you may
16267 have to customize this face to get the wanted effect. Another possibility is
16268 to set this font such that the extra stars are @i{almost} invisible, for
16269 example using the color @code{grey90} on a white background.
16270
16271 @item
16272 @vindex org-odd-levels-only
16273 Things become cleaner still if you skip all the even levels and use only odd
16274 levels 1, 3, 5..., effectively adding two stars to go from one outline level
16275 to the next@footnote{When you need to specify a level for a property search
16276 or refile targets, @samp{LEVEL=2} will correspond to 3 stars, etc.}. In this
16277 way we get the outline view shown at the beginning of this section. In order
16278 to make the structure editing and export commands handle this convention
16279 correctly, configure the variable @code{org-odd-levels-only}, or set this on
16280 a per-file basis with one of the following lines:
16281
16282 @example
16283 #+STARTUP: odd
16284 #+STARTUP: oddeven
16285 @end example
16286
16287 You can convert an Org file from single-star-per-level to the
16288 double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels
16289 RET} in that file. The reverse operation is @kbd{M-x
16290 org-convert-to-oddeven-levels}.
16291 @end enumerate
16292
16293 @node TTY keys, Interaction, Clean view, Miscellaneous
16294 @section Using Org on a tty
16295 @cindex tty key bindings
16296
16297 Because Org contains a large number of commands, by default many of
16298 Org's core commands are bound to keys that are generally not
16299 accessible on a tty, such as the cursor keys (@key{left}, @key{right},
16300 @key{up}, @key{down}), @key{TAB} and @key{RET}, in particular when used
16301 together with modifiers like @key{Meta} and/or @key{Shift}. To access
16302 these commands on a tty when special keys are unavailable, the following
16303 alternative bindings can be used. The tty bindings below will likely be
16304 more cumbersome; you may find for some of the bindings below that a
16305 customized workaround suits you better. For example, changing a timestamp
16306 is really only fun with @kbd{S-@key{cursor}} keys, whereas on a
16307 tty you would rather use @kbd{C-c .} to re-insert the timestamp.
16308
16309 @multitable @columnfractions 0.15 0.2 0.1 0.2
16310 @item @b{Default} @tab @b{Alternative 1} @tab @b{Speed key} @tab @b{Alternative 2}
16311 @item @kbd{S-@key{TAB}} @tab @kbd{C-u @key{TAB}} @tab @kbd{C} @tab
16312 @item @kbd{M-@key{left}} @tab @kbd{C-c C-x l} @tab @kbd{l} @tab @kbd{@key{Esc} @key{left}}
16313 @item @kbd{M-S-@key{left}} @tab @kbd{C-c C-x L} @tab @kbd{L} @tab
16314 @item @kbd{M-@key{right}} @tab @kbd{C-c C-x r} @tab @kbd{r} @tab @kbd{@key{Esc} @key{right}}
16315 @item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R} @tab @kbd{R} @tab
16316 @item @kbd{M-@key{up}} @tab @kbd{C-c C-x u} @tab @kbd{ } @tab @kbd{@key{Esc} @key{up}}
16317 @item @kbd{M-S-@key{up}} @tab @kbd{C-c C-x U} @tab @kbd{U} @tab
16318 @item @kbd{M-@key{down}} @tab @kbd{C-c C-x d} @tab @kbd{ } @tab @kbd{@key{Esc} @key{down}}
16319 @item @kbd{M-S-@key{down}} @tab @kbd{C-c C-x D} @tab @kbd{D} @tab
16320 @item @kbd{S-@key{RET}} @tab @kbd{C-c C-x c} @tab @kbd{ } @tab
16321 @item @kbd{M-@key{RET}} @tab @kbd{C-c C-x m} @tab @kbd{ } @tab @kbd{@key{Esc} @key{RET}}
16322 @item @kbd{M-S-@key{RET}} @tab @kbd{C-c C-x M} @tab @kbd{ } @tab
16323 @item @kbd{S-@key{left}} @tab @kbd{C-c @key{left}} @tab @kbd{ } @tab
16324 @item @kbd{S-@key{right}} @tab @kbd{C-c @key{right}} @tab @kbd{ } @tab
16325 @item @kbd{S-@key{up}} @tab @kbd{C-c @key{up}} @tab @kbd{ } @tab
16326 @item @kbd{S-@key{down}} @tab @kbd{C-c @key{down}} @tab @kbd{ } @tab
16327 @item @kbd{C-S-@key{left}} @tab @kbd{C-c C-x @key{left}} @tab @kbd{ } @tab
16328 @item @kbd{C-S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab @kbd{ } @tab
16329 @end multitable
16330
16331
16332 @node Interaction, org-crypt, TTY keys, Miscellaneous
16333 @section Interaction with other packages
16334 @cindex packages, interaction with other
16335 Org lives in the world of GNU Emacs and interacts in various ways
16336 with other code out there.
16337
16338 @menu
16339 * Cooperation:: Packages Org cooperates with
16340 * Conflicts:: Packages that lead to conflicts
16341 @end menu
16342
16343 @node Cooperation, Conflicts, Interaction, Interaction
16344 @subsection Packages that Org cooperates with
16345
16346 @table @asis
16347 @cindex @file{calc.el}
16348 @cindex Gillespie, Dave
16349 @item @file{calc.el} by Dave Gillespie
16350 Org uses the Calc package for implementing spreadsheet
16351 functionality in its tables (@pxref{The spreadsheet}). Org
16352 checks for the availability of Calc by looking for the function
16353 @code{calc-eval} which will have been autoloaded during setup if Calc has
16354 been installed properly. As of Emacs 22, Calc is part of the Emacs
16355 distribution. Another possibility for interaction between the two
16356 packages is using Calc for embedded calculations. @xref{Embedded Mode,
16357 , Embedded Mode, calc, GNU Emacs Calc Manual}.
16358 @item @file{constants.el} by Carsten Dominik
16359 @cindex @file{constants.el}
16360 @cindex Dominik, Carsten
16361 @vindex org-table-formula-constants
16362 In a table formula (@pxref{The spreadsheet}), it is possible to use
16363 names for natural constants or units. Instead of defining your own
16364 constants in the variable @code{org-table-formula-constants}, install
16365 the @file{constants} package which defines a large number of constants
16366 and units, and lets you use unit prefixes like @samp{M} for
16367 @samp{Mega}, etc. You will need version 2.0 of this package, available
16368 at @url{http://www.astro.uva.nl/~dominik/Tools}. Org checks for
16369 the function @code{constants-get}, which has to be autoloaded in your
16370 setup. See the installation instructions in the file
16371 @file{constants.el}.
16372 @item @file{cdlatex.el} by Carsten Dominik
16373 @cindex @file{cdlatex.el}
16374 @cindex Dominik, Carsten
16375 Org mode can make use of the CD@LaTeX{} package to efficiently enter
16376 @LaTeX{} fragments into Org files. See @ref{CDLaTeX mode}.
16377 @item @file{imenu.el} by Ake Stenhoff and Lars Lindberg
16378 @cindex @file{imenu.el}
16379 Imenu allows menu access to an index of items in a file. Org mode
16380 supports Imenu---all you need to do to get the index is the following:
16381 @lisp
16382 (add-hook 'org-mode-hook
16383 (lambda () (imenu-add-to-menubar "Imenu")))
16384 @end lisp
16385 @vindex org-imenu-depth
16386 By default the index is two levels deep---you can modify the depth using
16387 the option @code{org-imenu-depth}.
16388 @item @file{remember.el} by John Wiegley
16389 @cindex @file{remember.el}
16390 @cindex Wiegley, John
16391 Org used to use this package for capture, but no longer does.
16392 @item @file{speedbar.el} by Eric M. Ludlam
16393 @cindex @file{speedbar.el}
16394 @cindex Ludlam, Eric M.
16395 Speedbar is a package that creates a special frame displaying files and
16396 index items in files. Org mode supports Speedbar and allows you to
16397 drill into Org files directly from the Speedbar. It also allows you to
16398 restrict the scope of agenda commands to a file or a subtree by using
16399 the command @kbd{<} in the Speedbar frame.
16400 @cindex @file{table.el}
16401 @item @file{table.el} by Takaaki Ota
16402 @kindex C-c C-c
16403 @cindex table editor, @file{table.el}
16404 @cindex @file{table.el}
16405 @cindex Ota, Takaaki
16406
16407 Complex ASCII tables with automatic line wrapping, column- and row-spanning,
16408 and alignment can be created using the Emacs table package by Takaaki Ota
16409 (@uref{http://sourceforge.net/projects/table}, and also part of Emacs 22).
16410 Org mode will recognize these tables and export them properly. Because of
16411 interference with other Org mode functionality, you unfortunately cannot edit
16412 these tables directly in the buffer. Instead, you need to use the command
16413 @kbd{C-c '} to edit them, similar to source code snippets.
16414
16415 @table @kbd
16416 @orgcmd{C-c ',org-edit-special}
16417 Edit a @file{table.el} table. Works when the cursor is in a table.el table.
16418 @c
16419 @orgcmd{C-c ~,org-table-create-with-table.el}
16420 Insert a @file{table.el} table. If there is already a table at point, this
16421 command converts it between the @file{table.el} format and the Org mode
16422 format. See the documentation string of the command
16423 @code{org-convert-table} for the restrictions under which this is
16424 possible.
16425 @end table
16426 @file{table.el} is part of Emacs since Emacs 22.
16427 @item @file{footnote.el} by Steven L. Baur
16428 @cindex @file{footnote.el}
16429 @cindex Baur, Steven L.
16430 Org mode recognizes numerical footnotes as provided by this package.
16431 However, Org mode also has its own footnote support (@pxref{Footnotes}),
16432 which makes using @file{footnote.el} unnecessary.
16433 @end table
16434
16435 @node Conflicts, , Cooperation, Interaction
16436 @subsection Packages that lead to conflicts with Org mode
16437
16438 @table @asis
16439
16440 @cindex @code{shift-selection-mode}
16441 @vindex org-support-shift-select
16442 In Emacs 23, @code{shift-selection-mode} is on by default, meaning that
16443 cursor motions combined with the shift key should start or enlarge regions.
16444 This conflicts with the use of @kbd{S-@key{cursor}} commands in Org to change
16445 timestamps, TODO keywords, priorities, and item bullet types if the cursor is
16446 at such a location. By default, @kbd{S-@key{cursor}} commands outside
16447 special contexts don't do anything, but you can customize the variable
16448 @code{org-support-shift-select}. Org mode then tries to accommodate shift
16449 selection by (i) using it outside of the special contexts where special
16450 commands apply, and by (ii) extending an existing active region even if the
16451 cursor moves across a special context.
16452
16453 @item @file{CUA.el} by Kim. F. Storm
16454 @cindex @file{CUA.el}
16455 @cindex Storm, Kim. F.
16456 @vindex org-replace-disputed-keys
16457 Key bindings in Org conflict with the @kbd{S-<cursor>} keys used by CUA mode
16458 (as well as @code{pc-select-mode} and @code{s-region-mode}) to select and extend the
16459 region. In fact, Emacs 23 has this built-in in the form of
16460 @code{shift-selection-mode}, see previous paragraph. If you are using Emacs
16461 23, you probably don't want to use another package for this purpose. However,
16462 if you prefer to leave these keys to a different package while working in
16463 Org mode, configure the variable @code{org-replace-disputed-keys}. When set,
16464 Org will move the following key bindings in Org files, and in the agenda
16465 buffer (but not during date selection).
16466
16467 @example
16468 S-UP @result{} M-p S-DOWN @result{} M-n
16469 S-LEFT @result{} M-- S-RIGHT @result{} M-+
16470 C-S-LEFT @result{} M-S-- C-S-RIGHT @result{} M-S-+
16471 @end example
16472
16473 @vindex org-disputed-keys
16474 Yes, these are unfortunately more difficult to remember. If you want
16475 to have other replacement keys, look at the variable
16476 @code{org-disputed-keys}.
16477
16478 @item @file{ecomplete.el} by Lars Magne Ingebrigtsen @email{larsi@@gnus.org}
16479 @cindex @file{ecomplete.el}
16480
16481 Ecomplete provides ``electric'' address completion in address header
16482 lines in message buffers. Sadly Orgtbl mode cuts ecompletes power
16483 supply: No completion happens when Orgtbl mode is enabled in message
16484 buffers while entering text in address header lines. If one wants to
16485 use ecomplete one should @emph{not} follow the advice to automagically
16486 turn on Orgtbl mode in message buffers (see @ref{Orgtbl mode}), but
16487 instead---after filling in the message headers---turn on Orgtbl mode
16488 manually when needed in the messages body.
16489
16490 @item @file{filladapt.el} by Kyle Jones
16491 @cindex @file{filladapt.el}
16492
16493 Org mode tries to do the right thing when filling paragraphs, list items and
16494 other elements. Many users reported they had problems using both
16495 @file{filladapt.el} and Org mode, so a safe thing to do is to disable it like
16496 this:
16497
16498 @lisp
16499 (add-hook 'org-mode-hook 'turn-off-filladapt-mode)
16500 @end lisp
16501
16502 @item @file{yasnippet.el}
16503 @cindex @file{yasnippet.el}
16504 The way Org mode binds the @key{TAB} key (binding to @code{[tab]} instead of
16505 @code{"\t"}) overrules YASnippet's access to this key. The following code
16506 fixed this problem:
16507
16508 @lisp
16509 (add-hook 'org-mode-hook
16510 (lambda ()
16511 (org-set-local 'yas/trigger-key [tab])
16512 (define-key yas/keymap [tab] 'yas/next-field-or-maybe-expand)))
16513 @end lisp
16514
16515 The latest version of yasnippet doesn't play well with Org mode. If the
16516 above code does not fix the conflict, start by defining the following
16517 function:
16518
16519 @lisp
16520 (defun yas/org-very-safe-expand ()
16521 (let ((yas/fallback-behavior 'return-nil)) (yas/expand)))
16522 @end lisp
16523
16524 Then, tell Org mode what to do with the new function:
16525
16526 @lisp
16527 (add-hook 'org-mode-hook
16528 (lambda ()
16529 (make-variable-buffer-local 'yas/trigger-key)
16530 (setq yas/trigger-key [tab])
16531 (add-to-list 'org-tab-first-hook 'yas/org-very-safe-expand)
16532 (define-key yas/keymap [tab] 'yas/next-field)))
16533 @end lisp
16534
16535 @item @file{windmove.el} by Hovav Shacham
16536 @cindex @file{windmove.el}
16537 This package also uses the @kbd{S-<cursor>} keys, so everything written
16538 in the paragraph above about CUA mode also applies here. If you want make
16539 the windmove function active in locations where Org mode does not have
16540 special functionality on @kbd{S-@key{cursor}}, add this to your
16541 configuration:
16542
16543 @lisp
16544 ;; Make windmove work in org-mode:
16545 (add-hook 'org-shiftup-final-hook 'windmove-up)
16546 (add-hook 'org-shiftleft-final-hook 'windmove-left)
16547 (add-hook 'org-shiftdown-final-hook 'windmove-down)
16548 (add-hook 'org-shiftright-final-hook 'windmove-right)
16549 @end lisp
16550
16551 @item @file{viper.el} by Michael Kifer
16552 @cindex @file{viper.el}
16553 @kindex C-c /
16554 Viper uses @kbd{C-c /} and therefore makes this key not access the
16555 corresponding Org mode command @code{org-sparse-tree}. You need to find
16556 another key for this command, or override the key in
16557 @code{viper-vi-global-user-map} with
16558
16559 @lisp
16560 (define-key viper-vi-global-user-map "C-c /" 'org-sparse-tree)
16561 @end lisp
16562
16563
16564
16565 @end table
16566
16567 @node org-crypt, , Interaction, Miscellaneous
16568 @section org-crypt.el
16569 @cindex @file{org-crypt.el}
16570 @cindex @code{org-decrypt-entry}
16571
16572 Org-crypt will encrypt the text of an entry, but not the headline, or
16573 properties. Org-crypt uses the Emacs EasyPG library to encrypt and decrypt
16574 files.
16575
16576 Any text below a headline that has a @samp{:crypt:} tag will be automatically
16577 be encrypted when the file is saved. If you want to use a different tag just
16578 customize the @code{org-crypt-tag-matcher} setting.
16579
16580 To use org-crypt it is suggested that you have the following in your
16581 @file{.emacs}:
16582
16583 @lisp
16584 (require 'org-crypt)
16585 (org-crypt-use-before-save-magic)
16586 (setq org-tags-exclude-from-inheritance (quote ("crypt")))
16587
16588 (setq org-crypt-key nil)
16589 ;; GPG key to use for encryption
16590 ;; Either the Key ID or set to nil to use symmetric encryption.
16591
16592 (setq auto-save-default nil)
16593 ;; Auto-saving does not cooperate with org-crypt.el: so you need
16594 ;; to turn it off if you plan to use org-crypt.el quite often.
16595 ;; Otherwise, you'll get an (annoying) message each time you
16596 ;; start Org.
16597
16598 ;; To turn it off only locally, you can insert this:
16599 ;;
16600 ;; # -*- buffer-auto-save-file-name: nil; -*-
16601 @end lisp
16602
16603 Excluding the crypt tag from inheritance prevents already encrypted text
16604 being encrypted again.
16605
16606 @node Hacking, MobileOrg, Miscellaneous, Top
16607 @appendix Hacking
16608 @cindex hacking
16609
16610 This appendix covers some aspects where users can extend the functionality of
16611 Org.
16612
16613 @menu
16614 * Hooks:: How to reach into Org's internals
16615 * Add-on packages:: Available extensions
16616 * Adding hyperlink types:: New custom link types
16617 * Adding export back-ends:: How to write new export back-ends
16618 * Context-sensitive commands:: How to add functionality to such commands
16619 * Tables in arbitrary syntax:: Orgtbl for @LaTeX{} and other programs
16620 * Dynamic blocks:: Automatically filled blocks
16621 * Special agenda views:: Customized views
16622 * Speeding up your agendas:: Tips on how to speed up your agendas
16623 * Extracting agenda information:: Post-processing of agenda information
16624 * Using the property API:: Writing programs that use entry properties
16625 * Using the mapping API:: Mapping over all or selected entries
16626 @end menu
16627
16628 @node Hooks, Add-on packages, Hacking, Hacking
16629 @section Hooks
16630 @cindex hooks
16631
16632 Org has a large number of hook variables that can be used to add
16633 functionality. This appendix about hacking is going to illustrate the
16634 use of some of them. A complete list of all hooks with documentation is
16635 maintained by the Worg project and can be found at
16636 @uref{http://orgmode.org/worg/org-configs/org-hooks.php}.
16637
16638 @node Add-on packages, Adding hyperlink types, Hooks, Hacking
16639 @section Add-on packages
16640 @cindex add-on packages
16641
16642 A large number of add-on packages have been written by various authors.
16643
16644 These packages are not part of Emacs, but they are distributed as contributed
16645 packages with the separate release available at @uref{http://orgmode.org}.
16646 See the @file{contrib/README} file in the source code directory for a list of
16647 contributed files. You may also find some more information on the Worg page:
16648 @uref{http://orgmode.org/worg/org-contrib/}.
16649
16650 @node Adding hyperlink types, Adding export back-ends, Add-on packages, Hacking
16651 @section Adding hyperlink types
16652 @cindex hyperlinks, adding new types
16653
16654 Org has a large number of hyperlink types built-in
16655 (@pxref{Hyperlinks}). If you would like to add new link types, Org
16656 provides an interface for doing so. Let's look at an example file,
16657 @file{org-man.el}, that will add support for creating links like
16658 @samp{[[man:printf][The printf manpage]]} to show Unix manual pages inside
16659 Emacs:
16660
16661 @lisp
16662 ;;; org-man.el - Support for links to manpages in Org
16663
16664 (require 'org)
16665
16666 (org-add-link-type "man" 'org-man-open)
16667 (add-hook 'org-store-link-functions 'org-man-store-link)
16668
16669 (defcustom org-man-command 'man
16670 "The Emacs command to be used to display a man page."
16671 :group 'org-link
16672 :type '(choice (const man) (const woman)))
16673
16674 (defun org-man-open (path)
16675 "Visit the manpage on PATH.
16676 PATH should be a topic that can be thrown at the man command."
16677 (funcall org-man-command path))
16678
16679 (defun org-man-store-link ()
16680 "Store a link to a manpage."
16681 (when (memq major-mode '(Man-mode woman-mode))
16682 ;; This is a man page, we do make this link
16683 (let* ((page (org-man-get-page-name))
16684 (link (concat "man:" page))
16685 (description (format "Manpage for %s" page)))
16686 (org-store-link-props
16687 :type "man"
16688 :link link
16689 :description description))))
16690
16691 (defun org-man-get-page-name ()
16692 "Extract the page name from the buffer name."
16693 ;; This works for both `Man-mode' and `woman-mode'.
16694 (if (string-match " \\(\\S-+\\)\\*" (buffer-name))
16695 (match-string 1 (buffer-name))
16696 (error "Cannot create link to this man page")))
16697
16698 (provide 'org-man)
16699
16700 ;;; org-man.el ends here
16701 @end lisp
16702
16703 @noindent
16704 You would activate this new link type in @file{.emacs} with
16705
16706 @lisp
16707 (require 'org-man)
16708 @end lisp
16709
16710 @noindent
16711 Let's go through the file and see what it does.
16712 @enumerate
16713 @item
16714 It does @code{(require 'org)} to make sure that @file{org.el} has been
16715 loaded.
16716 @item
16717 The next line calls @code{org-add-link-type} to define a new link type
16718 with prefix @samp{man}. The call also contains the name of a function
16719 that will be called to follow such a link.
16720 @item
16721 @vindex org-store-link-functions
16722 The next line adds a function to @code{org-store-link-functions}, in
16723 order to allow the command @kbd{C-c l} to record a useful link in a
16724 buffer displaying a man page.
16725 @end enumerate
16726
16727 The rest of the file defines the necessary variables and functions.
16728 First there is a customization variable that determines which Emacs
16729 command should be used to display man pages. There are two options,
16730 @code{man} and @code{woman}. Then the function to follow a link is
16731 defined. It gets the link path as an argument---in this case the link
16732 path is just a topic for the manual command. The function calls the
16733 value of @code{org-man-command} to display the man page.
16734
16735 Finally the function @code{org-man-store-link} is defined. When you try
16736 to store a link with @kbd{C-c l}, this function will be called to
16737 try to make a link. The function must first decide if it is supposed to
16738 create the link for this buffer type; we do this by checking the value
16739 of the variable @code{major-mode}. If not, the function must exit and
16740 return the value @code{nil}. If yes, the link is created by getting the
16741 manual topic from the buffer name and prefixing it with the string
16742 @samp{man:}. Then it must call the command @code{org-store-link-props}
16743 and set the @code{:type} and @code{:link} properties. Optionally you
16744 can also set the @code{:description} property to provide a default for
16745 the link description when the link is later inserted into an Org
16746 buffer with @kbd{C-c C-l}.
16747
16748 When it makes sense for your new link type, you may also define a function
16749 @code{org-PREFIX-complete-link} that implements special (e.g., completion)
16750 support for inserting such a link with @kbd{C-c C-l}. Such a function should
16751 not accept any arguments, and return the full link with prefix.
16752
16753 @node Adding export back-ends, Context-sensitive commands, Adding hyperlink types, Hacking
16754 @section Adding export back-ends
16755 @cindex Export, writing back-ends
16756
16757 Org 8.0 comes with a completely rewritten export engine which makes it easy
16758 to write new export back-ends, either from scratch, or from deriving them
16759 from existing ones.
16760
16761 Your two entry points are respectively @code{org-export-define-backend} and
16762 @code{org-export-define-derived-backend}. To grok these functions, you
16763 should first have a look at @file{ox-latex.el} (for how to define a new
16764 back-end from scratch) and @file{ox-beamer.el} (for how to derive a new
16765 back-end from an existing one.
16766
16767 When creating a new back-end from scratch, the basic idea is to set the name
16768 of the back-end (as a symbol) and an an alist of elements and export
16769 functions. On top of this, you will need to set additional keywords like
16770 @code{:menu-entry} (to display the back-end in the export dispatcher),
16771 @code{:export-block} (to specify what blocks should not be exported by this
16772 back-end), and @code{:options-alist} (to let the user set export options that
16773 are specific to this back-end.)
16774
16775 Deriving a new back-end is similar, except that you need to set
16776 @code{:translate-alist} to an alist of export functions that should be used
16777 instead of the parent back-end functions.
16778
16779 For a complete reference documentation, see
16780 @url{http://orgmode.org/worg/dev/org-export-reference.html, the Org Export
16781 Reference on Worg}.
16782
16783 @node Context-sensitive commands, Tables in arbitrary syntax, Adding export back-ends, Hacking
16784 @section Context-sensitive commands
16785 @cindex context-sensitive commands, hooks
16786 @cindex add-ons, context-sensitive commands
16787 @vindex org-ctrl-c-ctrl-c-hook
16788
16789 Org has several commands that act differently depending on context. The most
16790 important example is the @kbd{C-c C-c} (@pxref{The very busy C-c C-c key}).
16791 Also the @kbd{M-cursor} and @kbd{M-S-cursor} keys have this property.
16792
16793 Add-ons can tap into this functionality by providing a function that detects
16794 special context for that add-on and executes functionality appropriate for
16795 the context. Here is an example from Dan Davison's @file{org-R.el} which
16796 allows you to evaluate commands based on the @file{R} programming language
16797 @footnote{@file{org-R.el} has been replaced by the Org mode functionality
16798 described in @ref{Working With Source Code} and is now obsolete.}. For this
16799 package, special contexts are lines that start with @code{#+R:} or
16800 @code{#+RR:}.
16801
16802 @lisp
16803 (defun org-R-apply-maybe ()
16804 "Detect if this is context for org-R and execute R commands."
16805 (if (save-excursion
16806 (beginning-of-line 1)
16807 (looking-at "#\\+RR?:"))
16808 (progn (call-interactively 'org-R-apply)
16809 t) ;; to signal that we took action
16810 nil)) ;; to signal that we did not
16811
16812 (add-hook 'org-ctrl-c-ctrl-c-hook 'org-R-apply-maybe)
16813 @end lisp
16814
16815 The function first checks if the cursor is in such a line. If that is the
16816 case, @code{org-R-apply} is called and the function returns @code{t} to
16817 signal that action was taken, and @kbd{C-c C-c} will stop looking for other
16818 contexts. If the function finds it should do nothing locally, it returns
16819 @code{nil} so that other, similar functions can have a try.
16820
16821
16822 @node Tables in arbitrary syntax, Dynamic blocks, Context-sensitive commands, Hacking
16823 @section Tables and lists in arbitrary syntax
16824 @cindex tables, in other modes
16825 @cindex lists, in other modes
16826 @cindex Orgtbl mode
16827
16828 Since Orgtbl mode can be used as a minor mode in arbitrary buffers, a
16829 frequent feature request has been to make it work with native tables in
16830 specific languages, for example @LaTeX{}. However, this is extremely
16831 hard to do in a general way, would lead to a customization nightmare,
16832 and would take away much of the simplicity of the Orgtbl mode table
16833 editor.
16834
16835 This appendix describes a different approach. We keep the Orgtbl mode
16836 table in its native format (the @i{source table}), and use a custom
16837 function to @i{translate} the table to the correct syntax, and to
16838 @i{install} it in the right location (the @i{target table}). This puts
16839 the burden of writing conversion functions on the user, but it allows
16840 for a very flexible system.
16841
16842 Bastien added the ability to do the same with lists, in Orgstruct mode. You
16843 can use Org's facilities to edit and structure lists by turning
16844 @code{orgstruct-mode} on, then locally exporting such lists in another format
16845 (HTML, @LaTeX{} or Texinfo.)
16846
16847
16848 @menu
16849 * Radio tables:: Sending and receiving radio tables
16850 * A @LaTeX{} example:: Step by step, almost a tutorial
16851 * Translator functions:: Copy and modify
16852 * Radio lists:: Sending and receiving lists
16853 @end menu
16854
16855 @node Radio tables, A @LaTeX{} example, Tables in arbitrary syntax, Tables in arbitrary syntax
16856 @subsection Radio tables
16857 @cindex radio tables
16858
16859 To define the location of the target table, you first need to create two
16860 lines that are comments in the current mode, but contain magic words
16861 @code{BEGIN/END RECEIVE ORGTBL} for Orgtbl mode to find. Orgtbl mode will
16862 insert the translated table between these lines, replacing whatever was there
16863 before. For example in C mode where comments are between @code{/* ... */}:
16864
16865 @example
16866 /* BEGIN RECEIVE ORGTBL table_name */
16867 /* END RECEIVE ORGTBL table_name */
16868 @end example
16869
16870 @noindent
16871 Just above the source table, we put a special line that tells
16872 Orgtbl mode how to translate this table and where to install it. For
16873 example:
16874 @cindex #+ORGTBL
16875 @example
16876 #+ORGTBL: SEND table_name translation_function arguments...
16877 @end example
16878
16879 @noindent
16880 @code{table_name} is the reference name for the table that is also used
16881 in the receiver lines. @code{translation_function} is the Lisp function
16882 that does the translation. Furthermore, the line can contain a list of
16883 arguments (alternating key and value) at the end. The arguments will be
16884 passed as a property list to the translation function for
16885 interpretation. A few standard parameters are already recognized and
16886 acted upon before the translation function is called:
16887
16888 @table @code
16889 @item :skip N
16890 Skip the first N lines of the table. Hlines do count as separate lines for
16891 this parameter!
16892
16893 @item :skipcols (n1 n2 ...)
16894 List of columns that should be skipped. If the table has a column with
16895 calculation marks, that column is automatically discarded as well.
16896 Please note that the translator function sees the table @emph{after} the
16897 removal of these columns, the function never knows that there have been
16898 additional columns.
16899
16900 @item :no-escape t
16901 When non-@code{nil}, do not escape special characters @code{&%#_^} when exporting
16902 the table. The default value is @code{nil}.
16903 @end table
16904
16905 @noindent
16906 The one problem remaining is how to keep the source table in the buffer
16907 without disturbing the normal workings of the file, for example during
16908 compilation of a C file or processing of a @LaTeX{} file. There are a
16909 number of different solutions:
16910
16911 @itemize @bullet
16912 @item
16913 The table could be placed in a block comment if that is supported by the
16914 language. For example, in C mode you could wrap the table between
16915 @samp{/*} and @samp{*/} lines.
16916 @item
16917 Sometimes it is possible to put the table after some kind of @i{END}
16918 statement, for example @samp{\bye} in @TeX{} and @samp{\end@{document@}}
16919 in @LaTeX{}.
16920 @item
16921 You can just comment the table line-by-line whenever you want to process
16922 the file, and uncomment it whenever you need to edit the table. This
16923 only sounds tedious---the command @kbd{M-x orgtbl-toggle-comment RET}
16924 makes this comment-toggling very easy, in particular if you bind it to a
16925 key.
16926 @end itemize
16927
16928 @node A @LaTeX{} example, Translator functions, Radio tables, Tables in arbitrary syntax
16929 @subsection A @LaTeX{} example of radio tables
16930 @cindex @LaTeX{}, and Orgtbl mode
16931
16932 The best way to wrap the source table in @LaTeX{} is to use the
16933 @code{comment} environment provided by @file{comment.sty}. It has to be
16934 activated by placing @code{\usepackage@{comment@}} into the document
16935 header. Orgtbl mode can insert a radio table skeleton@footnote{By
16936 default this works only for @LaTeX{}, HTML, and Texinfo. Configure the
16937 variable @code{orgtbl-radio-table-templates} to install templates for other
16938 modes.} with the command @kbd{M-x orgtbl-insert-radio-table RET}. You will
16939 be prompted for a table name, let's say we use @samp{salesfigures}. You
16940 will then get the following template:
16941
16942 @cindex #+ORGTBL, SEND
16943 @example
16944 % BEGIN RECEIVE ORGTBL salesfigures
16945 % END RECEIVE ORGTBL salesfigures
16946 \begin@{comment@}
16947 #+ORGTBL: SEND salesfigures orgtbl-to-latex
16948 | | |
16949 \end@{comment@}
16950 @end example
16951
16952 @noindent
16953 @vindex @LaTeX{}-verbatim-environments
16954 The @code{#+ORGTBL: SEND} line tells Orgtbl mode to use the function
16955 @code{orgtbl-to-latex} to convert the table into @LaTeX{} and to put it
16956 into the receiver location with name @code{salesfigures}. You may now
16957 fill in the table---feel free to use the spreadsheet features@footnote{If
16958 the @samp{#+TBLFM} line contains an odd number of dollar characters,
16959 this may cause problems with font-lock in @LaTeX{} mode. As shown in the
16960 example you can fix this by adding an extra line inside the
16961 @code{comment} environment that is used to balance the dollar
16962 expressions. If you are using AUC@TeX{} with the font-latex library, a
16963 much better solution is to add the @code{comment} environment to the
16964 variable @code{LaTeX-verbatim-environments}.}:
16965
16966 @example
16967 % BEGIN RECEIVE ORGTBL salesfigures
16968 % END RECEIVE ORGTBL salesfigures
16969 \begin@{comment@}
16970 #+ORGTBL: SEND salesfigures orgtbl-to-latex
16971 | Month | Days | Nr sold | per day |
16972 |-------+------+---------+---------|
16973 | Jan | 23 | 55 | 2.4 |
16974 | Feb | 21 | 16 | 0.8 |
16975 | March | 22 | 278 | 12.6 |
16976 #+TBLFM: $4=$3/$2;%.1f
16977 % $ (optional extra dollar to keep font-lock happy, see footnote)
16978 \end@{comment@}
16979 @end example
16980
16981 @noindent
16982 When you are done, press @kbd{C-c C-c} in the table to get the converted
16983 table inserted between the two marker lines.
16984
16985 Now let's assume you want to make the table header by hand, because you
16986 want to control how columns are aligned, etc. In this case we make sure
16987 that the table translator skips the first 2 lines of the source
16988 table, and tell the command to work as a @i{splice}, i.e., to not produce
16989 header and footer commands of the target table:
16990
16991 @example
16992 \begin@{tabular@}@{lrrr@}
16993 Month & \multicolumn@{1@}@{c@}@{Days@} & Nr.\ sold & per day\\
16994 % BEGIN RECEIVE ORGTBL salesfigures
16995 % END RECEIVE ORGTBL salesfigures
16996 \end@{tabular@}
16997 %
16998 \begin@{comment@}
16999 #+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2
17000 | Month | Days | Nr sold | per day |
17001 |-------+------+---------+---------|
17002 | Jan | 23 | 55 | 2.4 |
17003 | Feb | 21 | 16 | 0.8 |
17004 | March | 22 | 278 | 12.6 |
17005 #+TBLFM: $4=$3/$2;%.1f
17006 \end@{comment@}
17007 @end example
17008
17009 The @LaTeX{} translator function @code{orgtbl-to-latex} is already part of
17010 Orgtbl mode. It uses a @code{tabular} environment to typeset the table
17011 and marks horizontal lines with @code{\hline}. Furthermore, it
17012 interprets the following parameters (see also @pxref{Translator functions}):
17013
17014 @table @code
17015 @item :splice nil/t
17016 When set to t, return only table body lines, don't wrap them into a
17017 tabular environment. Default is @code{nil}.
17018
17019 @item :fmt fmt
17020 A format to be used to wrap each field, it should contain @code{%s} for the
17021 original field value. For example, to wrap each field value in dollars,
17022 you could use @code{:fmt "$%s$"}. This may also be a property list with
17023 column numbers and formats, for example @code{:fmt (2 "$%s$" 4 "%s\\%%")}.
17024 A function of one argument can be used in place of the strings; the
17025 function must return a formatted string.
17026
17027 @item :efmt efmt
17028 Use this format to print numbers with exponentials. The format should
17029 have @code{%s} twice for inserting mantissa and exponent, for example
17030 @code{"%s\\times10^@{%s@}"}. The default is @code{"%s\\,(%s)"}. This
17031 may also be a property list with column numbers and formats, for example
17032 @code{:efmt (2 "$%s\\times10^@{%s@}$" 4 "$%s\\cdot10^@{%s@}$")}. After
17033 @code{efmt} has been applied to a value, @code{fmt} will also be
17034 applied. Similar to @code{fmt}, functions of two arguments can be
17035 supplied instead of strings.
17036 @end table
17037
17038 @node Translator functions, Radio lists, A @LaTeX{} example, Tables in arbitrary syntax
17039 @subsection Translator functions
17040 @cindex HTML, and Orgtbl mode
17041 @cindex translator function
17042
17043 Orgtbl mode has several translator functions built-in: @code{orgtbl-to-csv}
17044 (comma-separated values), @code{orgtbl-to-tsv} (TAB-separated values)
17045 @code{orgtbl-to-latex}, @code{orgtbl-to-html}, and @code{orgtbl-to-texinfo}.
17046 Except for @code{orgtbl-to-html}@footnote{The HTML translator uses the same
17047 code that produces tables during HTML export.}, these all use a generic
17048 translator, @code{orgtbl-to-generic}. For example, @code{orgtbl-to-latex}
17049 itself is a very short function that computes the column definitions for the
17050 @code{tabular} environment, defines a few field and line separators and then
17051 hands processing over to the generic translator. Here is the entire code:
17052
17053 @lisp
17054 @group
17055 (defun orgtbl-to-latex (table params)
17056 "Convert the Orgtbl mode TABLE to LaTeX."
17057 (let* ((alignment (mapconcat (lambda (x) (if x "r" "l"))
17058 org-table-last-alignment ""))
17059 (params2
17060 (list
17061 :tstart (concat "\\begin@{tabular@}@{" alignment "@}")
17062 :tend "\\end@{tabular@}"
17063 :lstart "" :lend " \\\\" :sep " & "
17064 :efmt "%s\\,(%s)" :hline "\\hline")))
17065 (orgtbl-to-generic table (org-combine-plists params2 params))))
17066 @end group
17067 @end lisp
17068
17069 As you can see, the properties passed into the function (variable
17070 @var{PARAMS}) are combined with the ones newly defined in the function
17071 (variable @var{PARAMS2}). The ones passed into the function (i.e., the
17072 ones set by the @samp{ORGTBL SEND} line) take precedence. So if you
17073 would like to use the @LaTeX{} translator, but wanted the line endings to
17074 be @samp{\\[2mm]} instead of the default @samp{\\}, you could just
17075 overrule the default with
17076
17077 @example
17078 #+ORGTBL: SEND test orgtbl-to-latex :lend " \\\\[2mm]"
17079 @end example
17080
17081 For a new language, you can either write your own converter function in
17082 analogy with the @LaTeX{} translator, or you can use the generic function
17083 directly. For example, if you have a language where a table is started
17084 with @samp{!BTBL!}, ended with @samp{!ETBL!}, and where table lines are
17085 started with @samp{!BL!}, ended with @samp{!EL!}, and where the field
17086 separator is a TAB, you could call the generic translator like this (on
17087 a single line!):
17088
17089 @example
17090 #+ORGTBL: SEND test orgtbl-to-generic :tstart "!BTBL!" :tend "!ETBL!"
17091 :lstart "!BL! " :lend " !EL!" :sep "\t"
17092 @end example
17093
17094 @noindent
17095 Please check the documentation string of the function
17096 @code{orgtbl-to-generic} for a full list of parameters understood by
17097 that function, and remember that you can pass each of them into
17098 @code{orgtbl-to-latex}, @code{orgtbl-to-texinfo}, and any other function
17099 using the generic function.
17100
17101 Of course you can also write a completely new function doing complicated
17102 things the generic translator cannot do. A translator function takes
17103 two arguments. The first argument is the table, a list of lines, each
17104 line either the symbol @code{hline} or a list of fields. The second
17105 argument is the property list containing all parameters specified in the
17106 @samp{#+ORGTBL: SEND} line. The function must return a single string
17107 containing the formatted table. If you write a generally useful
17108 translator, please post it on @email{emacs-orgmode@@gnu.org} so that
17109 others can benefit from your work.
17110
17111 @node Radio lists, , Translator functions, Tables in arbitrary syntax
17112 @subsection Radio lists
17113 @cindex radio lists
17114 @cindex org-list-insert-radio-list
17115
17116 Sending and receiving radio lists works exactly the same way as sending and
17117 receiving radio tables (@pxref{Radio tables}). As for radio tables, you can
17118 insert radio list templates in HTML, @LaTeX{} and Texinfo modes by calling
17119 @code{org-list-insert-radio-list}.
17120
17121 Here are the differences with radio tables:
17122
17123 @itemize @minus
17124 @item
17125 Orgstruct mode must be active.
17126 @item
17127 Use the @code{ORGLST} keyword instead of @code{ORGTBL}.
17128 @item
17129 The available translation functions for radio lists don't take
17130 parameters.
17131 @item
17132 @kbd{C-c C-c} will work when pressed on the first item of the list.
17133 @end itemize
17134
17135 Here is a @LaTeX{} example. Let's say that you have this in your
17136 @LaTeX{} file:
17137
17138 @cindex #+ORGLST
17139 @example
17140 % BEGIN RECEIVE ORGLST to-buy
17141 % END RECEIVE ORGLST to-buy
17142 \begin@{comment@}
17143 #+ORGLST: SEND to-buy org-list-to-latex
17144 - a new house
17145 - a new computer
17146 + a new keyboard
17147 + a new mouse
17148 - a new life
17149 \end@{comment@}
17150 @end example
17151
17152 Pressing @kbd{C-c C-c} on @code{a new house} and will insert the converted
17153 @LaTeX{} list between the two marker lines.
17154
17155 @node Dynamic blocks, Special agenda views, Tables in arbitrary syntax, Hacking
17156 @section Dynamic blocks
17157 @cindex dynamic blocks
17158
17159 Org documents can contain @emph{dynamic blocks}. These are
17160 specially marked regions that are updated by some user-written function.
17161 A good example for such a block is the clock table inserted by the
17162 command @kbd{C-c C-x C-r} (@pxref{Clocking work time}).
17163
17164 Dynamic blocks are enclosed by a BEGIN-END structure that assigns a name
17165 to the block and can also specify parameters for the function producing
17166 the content of the block.
17167
17168 @cindex #+BEGIN:dynamic block
17169 @example
17170 #+BEGIN: myblock :parameter1 value1 :parameter2 value2 ...
17171
17172 #+END:
17173 @end example
17174
17175 Dynamic blocks are updated with the following commands
17176
17177 @table @kbd
17178 @orgcmd{C-c C-x C-u,org-dblock-update}
17179 Update dynamic block at point.
17180 @orgkey{C-u C-c C-x C-u}
17181 Update all dynamic blocks in the current file.
17182 @end table
17183
17184 Updating a dynamic block means to remove all the text between BEGIN and
17185 END, parse the BEGIN line for parameters and then call the specific
17186 writer function for this block to insert the new content. If you want
17187 to use the original content in the writer function, you can use the
17188 extra parameter @code{:content}.
17189
17190 For a block with name @code{myblock}, the writer function is
17191 @code{org-dblock-write:myblock} with as only parameter a property list
17192 with the parameters given in the begin line. Here is a trivial example
17193 of a block that keeps track of when the block update function was last
17194 run:
17195
17196 @example
17197 #+BEGIN: block-update-time :format "on %m/%d/%Y at %H:%M"
17198
17199 #+END:
17200 @end example
17201
17202 @noindent
17203 The corresponding block writer function could look like this:
17204
17205 @lisp
17206 (defun org-dblock-write:block-update-time (params)
17207 (let ((fmt (or (plist-get params :format) "%d. %m. %Y")))
17208 (insert "Last block update at: "
17209 (format-time-string fmt (current-time)))))
17210 @end lisp
17211
17212 If you want to make sure that all dynamic blocks are always up-to-date,
17213 you could add the function @code{org-update-all-dblocks} to a hook, for
17214 example @code{before-save-hook}. @code{org-update-all-dblocks} is
17215 written in a way such that it does nothing in buffers that are not in
17216 @code{org-mode}.
17217
17218 You can narrow the current buffer to the current dynamic block (like any
17219 other block) with @code{org-narrow-to-block}.
17220
17221 @node Special agenda views, Speeding up your agendas, Dynamic blocks, Hacking
17222 @section Special agenda views
17223 @cindex agenda views, user-defined
17224
17225 @vindex org-agenda-skip-function
17226 @vindex org-agenda-skip-function-global
17227 Org provides a special hook that can be used to narrow down the selection
17228 made by these agenda views: @code{agenda}, @code{agenda*}@footnote{The
17229 @code{agenda*} view is the same than @code{agenda} except that it only
17230 considers @emph{appointments}, i.e., scheduled and deadline items that have a
17231 time specification @code{[h]h:mm} in their time-stamps.}, @code{todo},
17232 @code{alltodo}, @code{tags}, @code{tags-todo}, @code{tags-tree}. You may
17233 specify a function that is used at each match to verify if the match should
17234 indeed be part of the agenda view, and if not, how much should be skipped.
17235 You can specify a global condition that will be applied to all agenda views,
17236 this condition would be stored in the variable
17237 @code{org-agenda-skip-function-global}. More commonly, such a definition is
17238 applied only to specific custom searches, using
17239 @code{org-agenda-skip-function}.
17240
17241 Let's say you want to produce a list of projects that contain a WAITING
17242 tag anywhere in the project tree. Let's further assume that you have
17243 marked all tree headings that define a project with the TODO keyword
17244 PROJECT@. In this case you would run a TODO search for the keyword
17245 PROJECT, but skip the match unless there is a WAITING tag anywhere in
17246 the subtree belonging to the project line.
17247
17248 To achieve this, you must write a function that searches the subtree for
17249 the tag. If the tag is found, the function must return @code{nil} to
17250 indicate that this match should not be skipped. If there is no such
17251 tag, return the location of the end of the subtree, to indicate that
17252 search should continue from there.
17253
17254 @lisp
17255 (defun my-skip-unless-waiting ()
17256 "Skip trees that are not waiting"
17257 (let ((subtree-end (save-excursion (org-end-of-subtree t))))
17258 (if (re-search-forward ":waiting:" subtree-end t)
17259 nil ; tag found, do not skip
17260 subtree-end))) ; tag not found, continue after end of subtree
17261 @end lisp
17262
17263 Now you may use this function in an agenda custom command, for example
17264 like this:
17265
17266 @lisp
17267 (org-add-agenda-custom-command
17268 '("b" todo "PROJECT"
17269 ((org-agenda-skip-function 'my-skip-unless-waiting)
17270 (org-agenda-overriding-header "Projects waiting for something: "))))
17271 @end lisp
17272
17273 @vindex org-agenda-overriding-header
17274 Note that this also binds @code{org-agenda-overriding-header} to get a
17275 meaningful header in the agenda view.
17276
17277 @vindex org-odd-levels-only
17278 @vindex org-agenda-skip-function
17279 A general way to create custom searches is to base them on a search for
17280 entries with a certain level limit. If you want to study all entries with
17281 your custom search function, simply do a search for
17282 @samp{LEVEL>0}@footnote{Note that, when using @code{org-odd-levels-only}, a
17283 level number corresponds to order in the hierarchy, not to the number of
17284 stars.}, and then use @code{org-agenda-skip-function} to select the entries
17285 you really want to have.
17286
17287 You may also put a Lisp form into @code{org-agenda-skip-function}. In
17288 particular, you may use the functions @code{org-agenda-skip-entry-if}
17289 and @code{org-agenda-skip-subtree-if} in this form, for example:
17290
17291 @table @code
17292 @item (org-agenda-skip-entry-if 'scheduled)
17293 Skip current entry if it has been scheduled.
17294 @item (org-agenda-skip-entry-if 'notscheduled)
17295 Skip current entry if it has not been scheduled.
17296 @item (org-agenda-skip-entry-if 'deadline)
17297 Skip current entry if it has a deadline.
17298 @item (org-agenda-skip-entry-if 'scheduled 'deadline)
17299 Skip current entry if it has a deadline, or if it is scheduled.
17300 @item (org-agenda-skip-entry-if 'todo '("TODO" "WAITING"))
17301 Skip current entry if the TODO keyword is TODO or WAITING.
17302 @item (org-agenda-skip-entry-if 'todo 'done)
17303 Skip current entry if the TODO keyword marks a DONE state.
17304 @item (org-agenda-skip-entry-if 'timestamp)
17305 Skip current entry if it has any timestamp, may also be deadline or scheduled.
17306 @anchor{x-agenda-skip-entry-regexp}
17307 @item (org-agenda-skip-entry-if 'regexp "regular expression")
17308 Skip current entry if the regular expression matches in the entry.
17309 @item (org-agenda-skip-entry-if 'notregexp "regular expression")
17310 Skip current entry unless the regular expression matches.
17311 @item (org-agenda-skip-subtree-if 'regexp "regular expression")
17312 Same as above, but check and skip the entire subtree.
17313 @end table
17314
17315 Therefore we could also have written the search for WAITING projects
17316 like this, even without defining a special function:
17317
17318 @lisp
17319 (org-add-agenda-custom-command
17320 '("b" todo "PROJECT"
17321 ((org-agenda-skip-function '(org-agenda-skip-subtree-if
17322 'regexp ":waiting:"))
17323 (org-agenda-overriding-header "Projects waiting for something: "))))
17324 @end lisp
17325
17326 @node Speeding up your agendas, Extracting agenda information, Special agenda views, Hacking
17327 @section Speeding up your agendas
17328 @cindex agenda views, optimization
17329
17330 When your Org files grow in both number and size, agenda commands may start
17331 to become slow. Below are some tips on how to speed up the agenda commands.
17332
17333 @enumerate
17334 @item
17335 Reduce the number of Org agenda files: this will reduce the slowness caused
17336 by accessing a hard drive.
17337 @item
17338 Reduce the number of DONE and archived headlines: this way the agenda does
17339 not need to skip them.
17340 @item
17341 @vindex org-agenda-dim-blocked-tasks
17342 Inhibit the dimming of blocked tasks:
17343 @lisp
17344 (setq org-agenda-dim-blocked-tasks nil)
17345 @end lisp
17346 @item
17347 @vindex org-startup-folded
17348 @vindex org-agenda-inhibit-startup
17349 Inhibit agenda files startup options:
17350 @lisp
17351 (setq org-agenda-inhibit-startup nil)
17352 @end lisp
17353 @item
17354 @vindex org-agenda-show-inherited-tags
17355 @vindex org-agenda-use-tag-inheritance
17356 Disable tag inheritance in agenda:
17357 @lisp
17358 (setq org-agenda-use-tag-inheritance nil)
17359 @end lisp
17360 @end enumerate
17361
17362 You can set these options for specific agenda views only. See the docstrings
17363 of these variables for details on why they affect the agenda generation, and
17364 this @uref{http://orgmode.org/worg/agenda-optimization.html, dedicated Worg
17365 page} for further explanations.
17366
17367 @node Extracting agenda information, Using the property API, Speeding up your agendas, Hacking
17368 @section Extracting agenda information
17369 @cindex agenda, pipe
17370 @cindex Scripts, for agenda processing
17371
17372 @vindex org-agenda-custom-commands
17373 Org provides commands to access agenda information for the command
17374 line in Emacs batch mode. This extracted information can be sent
17375 directly to a printer, or it can be read by a program that does further
17376 processing of the data. The first of these commands is the function
17377 @code{org-batch-agenda}, that produces an agenda view and sends it as
17378 ASCII text to STDOUT@. The command takes a single string as parameter.
17379 If the string has length 1, it is used as a key to one of the commands
17380 you have configured in @code{org-agenda-custom-commands}, basically any
17381 key you can use after @kbd{C-c a}. For example, to directly print the
17382 current TODO list, you could use
17383
17384 @example
17385 emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
17386 @end example
17387
17388 If the parameter is a string with 2 or more characters, it is used as a
17389 tags/TODO match string. For example, to print your local shopping list
17390 (all items with the tag @samp{shop}, but excluding the tag
17391 @samp{NewYork}), you could use
17392
17393 @example
17394 emacs -batch -l ~/.emacs \
17395 -eval '(org-batch-agenda "+shop-NewYork")' | lpr
17396 @end example
17397
17398 @noindent
17399 You may also modify parameters on the fly like this:
17400
17401 @example
17402 emacs -batch -l ~/.emacs \
17403 -eval '(org-batch-agenda "a" \
17404 org-agenda-span (quote month) \
17405 org-agenda-include-diary nil \
17406 org-agenda-files (quote ("~/org/project.org")))' \
17407 | lpr
17408 @end example
17409
17410 @noindent
17411 which will produce a 30-day agenda, fully restricted to the Org file
17412 @file{~/org/projects.org}, not even including the diary.
17413
17414 If you want to process the agenda data in more sophisticated ways, you
17415 can use the command @code{org-batch-agenda-csv} to get a comma-separated
17416 list of values for each agenda item. Each line in the output will
17417 contain a number of fields separated by commas. The fields in a line
17418 are:
17419
17420 @example
17421 category @r{The category of the item}
17422 head @r{The headline, without TODO keyword, TAGS and PRIORITY}
17423 type @r{The type of the agenda entry, can be}
17424 todo @r{selected in TODO match}
17425 tagsmatch @r{selected in tags match}
17426 diary @r{imported from diary}
17427 deadline @r{a deadline}
17428 scheduled @r{scheduled}
17429 timestamp @r{appointment, selected by timestamp}
17430 closed @r{entry was closed on date}
17431 upcoming-deadline @r{warning about nearing deadline}
17432 past-scheduled @r{forwarded scheduled item}
17433 block @r{entry has date block including date}
17434 todo @r{The TODO keyword, if any}
17435 tags @r{All tags including inherited ones, separated by colons}
17436 date @r{The relevant date, like 2007-2-14}
17437 time @r{The time, like 15:00-16:50}
17438 extra @r{String with extra planning info}
17439 priority-l @r{The priority letter if any was given}
17440 priority-n @r{The computed numerical priority}
17441 @end example
17442
17443 @noindent
17444 Time and date will only be given if a timestamp (or deadline/scheduled)
17445 led to the selection of the item.
17446
17447 A CSV list like this is very easy to use in a post-processing script.
17448 For example, here is a Perl program that gets the TODO list from
17449 Emacs/Org and prints all the items, preceded by a checkbox:
17450
17451 @example
17452 #!/usr/bin/perl
17453
17454 # define the Emacs command to run
17455 $cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'";
17456
17457 # run it and capture the output
17458 $agenda = qx@{$cmd 2>/dev/null@};
17459
17460 # loop over all lines
17461 foreach $line (split(/\n/,$agenda)) @{
17462 # get the individual values
17463 ($category,$head,$type,$todo,$tags,$date,$time,$extra,
17464 $priority_l,$priority_n) = split(/,/,$line);
17465 # process and print
17466 print "[ ] $head\n";
17467 @}
17468 @end example
17469
17470 @node Using the property API, Using the mapping API, Extracting agenda information, Hacking
17471 @section Using the property API
17472 @cindex API, for properties
17473 @cindex properties, API
17474
17475 Here is a description of the functions that can be used to work with
17476 properties.
17477
17478 @defun org-entry-properties &optional pom which
17479 Get all properties of the entry at point-or-marker POM.@*
17480 This includes the TODO keyword, the tags, time strings for deadline,
17481 scheduled, and clocking, and any additional properties defined in the
17482 entry. The return value is an alist. Keys may occur multiple times
17483 if the property key was used several times.@*
17484 POM may also be @code{nil}, in which case the current entry is used.
17485 If WHICH is @code{nil} or `all', get all properties. If WHICH is
17486 `special' or `standard', only get that subclass.
17487 @end defun
17488 @vindex org-use-property-inheritance
17489 @findex org-insert-property-drawer
17490 @defun org-entry-get pom property &optional inherit
17491 Get value of @code{PROPERTY} for entry at point-or-marker @code{POM}@. By default,
17492 this only looks at properties defined locally in the entry. If @code{INHERIT}
17493 is non-@code{nil} and the entry does not have the property, then also check
17494 higher levels of the hierarchy. If @code{INHERIT} is the symbol
17495 @code{selective}, use inheritance if and only if the setting of
17496 @code{org-use-property-inheritance} selects @code{PROPERTY} for inheritance.
17497 @end defun
17498
17499 @defun org-entry-delete pom property
17500 Delete the property @code{PROPERTY} from entry at point-or-marker POM.
17501 @end defun
17502
17503 @defun org-entry-put pom property value
17504 Set @code{PROPERTY} to @code{VALUE} for entry at point-or-marker POM.
17505 @end defun
17506
17507 @defun org-buffer-property-keys &optional include-specials
17508 Get all property keys in the current buffer.
17509 @end defun
17510
17511 @defun org-insert-property-drawer
17512 Insert a property drawer for the current entry. Also
17513 @end defun
17514
17515 @defun org-entry-put-multivalued-property pom property &rest values
17516 Set @code{PROPERTY} at point-or-marker @code{POM} to @code{VALUES}@.
17517 @code{VALUES} should be a list of strings. They will be concatenated, with
17518 spaces as separators.
17519 @end defun
17520
17521 @defun org-entry-get-multivalued-property pom property
17522 Treat the value of the property @code{PROPERTY} as a whitespace-separated
17523 list of values and return the values as a list of strings.
17524 @end defun
17525
17526 @defun org-entry-add-to-multivalued-property pom property value
17527 Treat the value of the property @code{PROPERTY} as a whitespace-separated
17528 list of values and make sure that @code{VALUE} is in this list.
17529 @end defun
17530
17531 @defun org-entry-remove-from-multivalued-property pom property value
17532 Treat the value of the property @code{PROPERTY} as a whitespace-separated
17533 list of values and make sure that @code{VALUE} is @emph{not} in this list.
17534 @end defun
17535
17536 @defun org-entry-member-in-multivalued-property pom property value
17537 Treat the value of the property @code{PROPERTY} as a whitespace-separated
17538 list of values and check if @code{VALUE} is in this list.
17539 @end defun
17540
17541 @defopt org-property-allowed-value-functions
17542 Hook for functions supplying allowed values for a specific property.
17543 The functions must take a single argument, the name of the property, and
17544 return a flat list of allowed values. If @samp{:ETC} is one of
17545 the values, use the values as completion help, but allow also other values
17546 to be entered. The functions must return @code{nil} if they are not
17547 responsible for this property.
17548 @end defopt
17549
17550 @node Using the mapping API, , Using the property API, Hacking
17551 @section Using the mapping API
17552 @cindex API, for mapping
17553 @cindex mapping entries, API
17554
17555 Org has sophisticated mapping capabilities to find all entries satisfying
17556 certain criteria. Internally, this functionality is used to produce agenda
17557 views, but there is also an API that can be used to execute arbitrary
17558 functions for each or selected entries. The main entry point for this API
17559 is:
17560
17561 @defun org-map-entries func &optional match scope &rest skip
17562 Call @code{FUNC} at each headline selected by @code{MATCH} in @code{SCOPE}.
17563
17564 @code{FUNC} is a function or a Lisp form. The function will be called
17565 without arguments, with the cursor positioned at the beginning of the
17566 headline. The return values of all calls to the function will be collected
17567 and returned as a list.
17568
17569 The call to @code{FUNC} will be wrapped into a save-excursion form, so
17570 @code{FUNC} does not need to preserve point. After evaluation, the cursor
17571 will be moved to the end of the line (presumably of the headline of the
17572 processed entry) and search continues from there. Under some circumstances,
17573 this may not produce the wanted results. For example, if you have removed
17574 (e.g., archived) the current (sub)tree it could mean that the next entry will
17575 be skipped entirely. In such cases, you can specify the position from where
17576 search should continue by making @code{FUNC} set the variable
17577 @code{org-map-continue-from} to the desired buffer position.
17578
17579 @code{MATCH} is a tags/property/todo match as it is used in the agenda match
17580 view. Only headlines that are matched by this query will be considered
17581 during the iteration. When @code{MATCH} is @code{nil} or @code{t}, all
17582 headlines will be visited by the iteration.
17583
17584 @code{SCOPE} determines the scope of this command. It can be any of:
17585
17586 @example
17587 nil @r{the current buffer, respecting the restriction if any}
17588 tree @r{the subtree started with the entry at point}
17589 region @r{The entries within the active region, if any}
17590 file @r{the current buffer, without restriction}
17591 file-with-archives
17592 @r{the current buffer, and any archives associated with it}
17593 agenda @r{all agenda files}
17594 agenda-with-archives
17595 @r{all agenda files with any archive files associated with them}
17596 (file1 file2 ...)
17597 @r{if this is a list, all files in the list will be scanned}
17598 @end example
17599 @noindent
17600 The remaining args are treated as settings for the skipping facilities of
17601 the scanner. The following items can be given here:
17602
17603 @vindex org-agenda-skip-function
17604 @example
17605 archive @r{skip trees with the archive tag}
17606 comment @r{skip trees with the COMMENT keyword}
17607 function or Lisp form
17608 @r{will be used as value for @code{org-agenda-skip-function},}
17609 @r{so whenever the function returns t, FUNC}
17610 @r{will not be called for that entry and search will}
17611 @r{continue from the point where the function leaves it}
17612 @end example
17613 @end defun
17614
17615 The function given to that mapping routine can really do anything you like.
17616 It can use the property API (@pxref{Using the property API}) to gather more
17617 information about the entry, or in order to change metadata in the entry.
17618 Here are a couple of functions that might be handy:
17619
17620 @defun org-todo &optional arg
17621 Change the TODO state of the entry. See the docstring of the functions for
17622 the many possible values for the argument @code{ARG}.
17623 @end defun
17624
17625 @defun org-priority &optional action
17626 Change the priority of the entry. See the docstring of this function for the
17627 possible values for @code{ACTION}.
17628 @end defun
17629
17630 @defun org-toggle-tag tag &optional onoff
17631 Toggle the tag @code{TAG} in the current entry. Setting @code{ONOFF} to
17632 either @code{on} or @code{off} will not toggle tag, but ensure that it is
17633 either on or off.
17634 @end defun
17635
17636 @defun org-promote
17637 Promote the current entry.
17638 @end defun
17639
17640 @defun org-demote
17641 Demote the current entry.
17642 @end defun
17643
17644 Here is a simple example that will turn all entries in the current file with
17645 a tag @code{TOMORROW} into TODO entries with the keyword @code{UPCOMING}.
17646 Entries in comment trees and in archive trees will be ignored.
17647
17648 @lisp
17649 (org-map-entries
17650 '(org-todo "UPCOMING")
17651 "+TOMORROW" 'file 'archive 'comment)
17652 @end lisp
17653
17654 The following example counts the number of entries with TODO keyword
17655 @code{WAITING}, in all agenda files.
17656
17657 @lisp
17658 (length (org-map-entries t "/+WAITING" 'agenda))
17659 @end lisp
17660
17661 @node MobileOrg, History and Acknowledgments, Hacking, Top
17662 @appendix MobileOrg
17663 @cindex iPhone
17664 @cindex MobileOrg
17665
17666 @i{MobileOrg} is the name of the mobile companion app for Org mode, currently
17667 available for iOS and for Android. @i{MobileOrg} offers offline viewing and
17668 capture support for an Org mode system rooted on a ``real'' computer. It
17669 does also allow you to record changes to existing entries. The
17670 @uref{https://github.com/MobileOrg/, iOS implementation} for the
17671 @i{iPhone/iPod Touch/iPad} series of devices, was started by Richard Moreland
17672 and is now in the hands Sean Escriva. Android users should check out
17673 @uref{http://wiki.github.com/matburt/mobileorg-android/, MobileOrg Android}
17674 by Matt Jones. The two implementations are not identical but offer similar
17675 features.
17676
17677 This appendix describes the support Org has for creating agenda views in a
17678 format that can be displayed by @i{MobileOrg}, and for integrating notes
17679 captured and changes made by @i{MobileOrg} into the main system.
17680
17681 For changing tags and TODO states in MobileOrg, you should have set up the
17682 customization variables @code{org-todo-keywords} and @code{org-tag-alist} to
17683 cover all important tags and TODO keywords, even if individual files use only
17684 part of these. MobileOrg will also offer you states and tags set up with
17685 in-buffer settings, but it will understand the logistics of TODO state
17686 @i{sets} (@pxref{Per-file keywords}) and @i{mutually exclusive} tags
17687 (@pxref{Setting tags}) only for those set in these variables.
17688
17689 @menu
17690 * Setting up the staging area:: Where to interact with the mobile device
17691 * Pushing to MobileOrg:: Uploading Org files and agendas
17692 * Pulling from MobileOrg:: Integrating captured and flagged items
17693 @end menu
17694
17695 @node Setting up the staging area, Pushing to MobileOrg, MobileOrg, MobileOrg
17696 @section Setting up the staging area
17697
17698 MobileOrg needs to interact with Emacs through a directory on a server. If you
17699 are using a public server, you should consider to encrypt the files that are
17700 uploaded to the server. This can be done with Org mode 7.02 and with
17701 @i{MobileOrg 1.5} (iPhone version), and you need an @file{openssl}
17702 installation on your system. To turn on encryption, set a password in
17703 @i{MobileOrg} and, on the Emacs side, configure the variable
17704 @code{org-mobile-use-encryption}@footnote{If you can safely store the
17705 password in your Emacs setup, you might also want to configure
17706 @code{org-mobile-encryption-password}. Please read the docstring of that
17707 variable. Note that encryption will apply only to the contents of the
17708 @file{.org} files. The file names themselves will remain visible.}.
17709
17710 The easiest way to create that directory is to use a free
17711 @uref{http://dropbox.com,Dropbox.com} account@footnote{If you cannot use
17712 Dropbox, or if your version of MobileOrg does not support it, you can use a
17713 webdav server. For more information, check out the documentation of MobileOrg and also this
17714 @uref{http://orgmode.org/worg/org-faq.html#mobileorg_webdav, FAQ entry}.}.
17715 When MobileOrg first connects to your Dropbox, it will create a directory
17716 @i{MobileOrg} inside the Dropbox. After the directory has been created, tell
17717 Emacs about it:
17718
17719 @lisp
17720 (setq org-mobile-directory "~/Dropbox/MobileOrg")
17721 @end lisp
17722
17723 Org mode has commands to put files for @i{MobileOrg} into that directory,
17724 and to read captured notes from there.
17725
17726 @node Pushing to MobileOrg, Pulling from MobileOrg, Setting up the staging area, MobileOrg
17727 @section Pushing to MobileOrg
17728
17729 This operation copies all files currently listed in @code{org-mobile-files}
17730 to the directory @code{org-mobile-directory}. By default this list contains
17731 all agenda files (as listed in @code{org-agenda-files}), but additional files
17732 can be included by customizing @code{org-mobile-files}. File names will be
17733 staged with paths relative to @code{org-directory}, so all files should be
17734 inside this directory@footnote{Symbolic links in @code{org-directory} need to
17735 have the same name than their targets.}.
17736
17737 The push operation also creates a special Org file @file{agendas.org} with
17738 all custom agenda view defined by the user@footnote{While creating the
17739 agendas, Org mode will force ID properties on all referenced entries, so that
17740 these entries can be uniquely identified if @i{MobileOrg} flags them for
17741 further action. If you do not want to get these properties in so many
17742 entries, you can set the variable @code{org-mobile-force-id-on-agenda-items}
17743 to @code{nil}. Org mode will then rely on outline paths, in the hope that
17744 these will be unique enough.}.
17745
17746 Finally, Org writes the file @file{index.org}, containing links to all other
17747 files. @i{MobileOrg} first reads this file from the server, and then
17748 downloads all agendas and Org files listed in it. To speed up the download,
17749 MobileOrg will only read files whose checksums@footnote{Checksums are stored
17750 automatically in the file @file{checksums.dat}} have changed.
17751
17752 @node Pulling from MobileOrg, , Pushing to MobileOrg, MobileOrg
17753 @section Pulling from MobileOrg
17754
17755 When @i{MobileOrg} synchronizes with the server, it not only pulls the Org
17756 files for viewing. It also appends captured entries and pointers to flagged
17757 and changed entries to the file @file{mobileorg.org} on the server. Org has
17758 a @emph{pull} operation that integrates this information into an inbox file
17759 and operates on the pointers to flagged entries. Here is how it works:
17760
17761 @enumerate
17762 @item
17763 Org moves all entries found in
17764 @file{mobileorg.org}@footnote{@file{mobileorg.org} will be empty after this
17765 operation.} and appends them to the file pointed to by the variable
17766 @code{org-mobile-inbox-for-pull}. Each captured entry and each editing event
17767 will be a top-level entry in the inbox file.
17768 @item
17769 After moving the entries, Org will attempt to implement the changes made in
17770 @i{MobileOrg}. Some changes are applied directly and without user
17771 interaction. Examples are all changes to tags, TODO state, headline and body
17772 text that can be cleanly applied. Entries that have been flagged for further
17773 action will receive a tag @code{:FLAGGED:}, so that they can be easily found
17774 again. When there is a problem finding an entry or applying the change, the
17775 pointer entry will remain in the inbox and will be marked with an error
17776 message. You need to later resolve these issues by hand.
17777 @item
17778 Org will then generate an agenda view with all flagged entries. The user
17779 should then go through these entries and do whatever actions are necessary.
17780 If a note has been stored while flagging an entry in @i{MobileOrg}, that note
17781 will be displayed in the echo area when the cursor is on the corresponding
17782 agenda line.
17783
17784 @table @kbd
17785 @kindex ?
17786 @item ?
17787 Pressing @kbd{?} in that special agenda will display the full flagging note in
17788 another window and also push it onto the kill ring. So you could use @kbd{?
17789 z C-y C-c C-c} to store that flagging note as a normal note in the entry.
17790 Pressing @kbd{?} twice in succession will offer to remove the
17791 @code{:FLAGGED:} tag along with the recorded flagging note (which is stored
17792 in a property). In this way you indicate that the intended processing for
17793 this flagged entry is finished.
17794 @end table
17795 @end enumerate
17796
17797 @kindex C-c a ?
17798 If you are not able to process all flagged entries directly, you can always
17799 return to this agenda view@footnote{Note, however, that there is a subtle
17800 difference. The view created automatically by @kbd{M-x org-mobile-pull RET}
17801 is guaranteed to search all files that have been addressed by the last pull.
17802 This might include a file that is not currently in your list of agenda files.
17803 If you later use @kbd{C-c a ?} to regenerate the view, only the current
17804 agenda files will be searched.} using @kbd{C-c a ?}.
17805
17806 @node History and Acknowledgments, GNU Free Documentation License, MobileOrg, Top
17807 @appendix History and acknowledgments
17808 @cindex acknowledgments
17809 @cindex history
17810 @cindex thanks
17811
17812 @section From Carsten
17813
17814 Org was born in 2003, out of frustration over the user interface of the Emacs
17815 Outline mode. I was trying to organize my notes and projects, and using
17816 Emacs seemed to be the natural way to go. However, having to remember eleven
17817 different commands with two or three keys per command, only to hide and show
17818 parts of the outline tree, that seemed entirely unacceptable to me. Also,
17819 when using outlines to take notes, I constantly wanted to restructure the
17820 tree, organizing it parallel to my thoughts and plans. @emph{Visibility
17821 cycling} and @emph{structure editing} were originally implemented in the
17822 package @file{outline-magic.el}, but quickly moved to the more general
17823 @file{org.el}. As this environment became comfortable for project planning,
17824 the next step was adding @emph{TODO entries}, basic @emph{timestamps}, and
17825 @emph{table support}. These areas highlighted the two main goals that Org
17826 still has today: to be a new, outline-based, plain text mode with innovative
17827 and intuitive editing features, and to incorporate project planning
17828 functionality directly into a notes file.
17829
17830 Since the first release, literally thousands of emails to me or to
17831 @email{emacs-orgmode@@gnu.org} have provided a constant stream of bug
17832 reports, feedback, new ideas, and sometimes patches and add-on code.
17833 Many thanks to everyone who has helped to improve this package. I am
17834 trying to keep here a list of the people who had significant influence
17835 in shaping one or more aspects of Org. The list may not be
17836 complete, if I have forgotten someone, please accept my apologies and
17837 let me know.
17838
17839 Before I get to this list, a few special mentions are in order:
17840
17841 @table @i
17842 @item Bastien Guerry
17843 Bastien has written a large number of extensions to Org (most of them
17844 integrated into the core by now), including the @LaTeX{} exporter and the plain
17845 list parser. His support during the early days, when he basically acted as
17846 co-maintainer, was central to the success of this project. Bastien also
17847 invented Worg, helped establishing the Web presence of Org, and sponsored
17848 hosting costs for the orgmode.org website.
17849 @item Eric Schulte and Dan Davison
17850 Eric and Dan are jointly responsible for the Org-babel system, which turns
17851 Org into a multi-language environment for evaluating code and doing literate
17852 programming and reproducible research.
17853 @item John Wiegley
17854 John has contributed a number of great ideas and patches directly to Org,
17855 including the attachment system (@file{org-attach.el}), integration with
17856 Apple Mail (@file{org-mac-message.el}), hierarchical dependencies of TODO
17857 items, habit tracking (@file{org-habits.el}), and encryption
17858 (@file{org-crypt.el}). Also, the capture system is really an extended copy
17859 of his great @file{remember.el}.
17860 @item Sebastian Rose
17861 Without Sebastian, the HTML/XHTML publishing of Org would be the pitiful work
17862 of an ignorant amateur. Sebastian has pushed this part of Org onto a much
17863 higher level. He also wrote @file{org-info.js}, a Java script for displaying
17864 web pages derived from Org using an Info-like or a folding interface with
17865 single-key navigation.
17866 @end table
17867
17868 @noindent See below for the full list of contributions! Again, please
17869 let me know what I am missing here!
17870
17871 @section From Bastien
17872
17873 I (Bastien) have been maintaining Org since January 2011. This appendix
17874 would not be complete without adding a few more acknowledgements and thanks
17875 to Carsten's ones above.
17876
17877 I am first grateful to Carsten for his trust while handing me over the
17878 maintainership of Org. His unremitting support is what really helped me
17879 getting more confident over time, with both the community and the code.
17880
17881 When I took over maintainership, I knew I would have to make Org more
17882 collaborative than ever, as I would have to rely on people that are more
17883 knowledgeable than I am on many parts of the code. Here is a list of the
17884 persons I could rely on, they should really be considered co-maintainers,
17885 either of the code or the community:
17886
17887 @table @i
17888 @item Eric Schulte
17889 Eric is maintaining the Babel parts of Org. His reactivity here kept me away
17890 from worrying about possible bugs here and let me focus on other parts.
17891
17892 @item Nicolas Goaziou
17893 Nicolas is maintaining the consistency of the deepest parts of Org. His
17894 work on @file{org-element.el} and @file{ox.el} has been outstanding, and
17895 opened the doors for many new ideas and features. He rewrote many of the
17896 old exporters to use the new export engine, and helped with documenting
17897 this major change. More importantly (if that's possible), he has been more
17898 than reliable during all the work done for Org 8.0, and always very
17899 reactive on the mailing list.
17900
17901 @item Achim Gratz
17902 Achim rewrote the building process of Org, turning some @emph{ad hoc} tools
17903 into a flexible and conceptually clean process. He patiently coped with the
17904 many hiccups that such a change can create for users.
17905
17906 @item Nick Dokos
17907 The Org mode mailing list would not be such a nice place without Nick, who
17908 patiently helped users so many times. It is impossible to overestimate such
17909 a great help, and the list would not be so active without him.
17910 @end table
17911
17912 I received support from so many users that it is clearly impossible to be
17913 fair when shortlisting a few of them, but Org's history would not be
17914 complete if the ones above were not mentioned in this manual.
17915
17916 @section List of contributions
17917
17918 @itemize @bullet
17919
17920 @item
17921 @i{Russel Adams} came up with the idea for drawers.
17922 @item
17923 @i{Suvayu Ali} has steadily helped on the mailing list, providing useful
17924 feedback on many features and several patches.
17925 @item
17926 @i{Luis Anaya} wrote @file{ox-man.el}.
17927 @item
17928 @i{Thomas Baumann} wrote @file{org-bbdb.el} and @file{org-mhe.el}.
17929 @item
17930 @i{Michael Brand} helped by reporting many bugs and testing many features.
17931 He also implemented the distinction between empty fields and 0-value fields
17932 in Org's spreadsheets.
17933 @item
17934 @i{Christophe Bataillon} created the great unicorn logo that we use on the
17935 Org mode website.
17936 @item
17937 @i{Alex Bochannek} provided a patch for rounding timestamps.
17938 @item
17939 @i{Jan Böcker} wrote @file{org-docview.el}.
17940 @item
17941 @i{Brad Bozarth} showed how to pull RSS feed data into Org mode files.
17942 @item
17943 @i{Tom Breton} wrote @file{org-choose.el}.
17944 @item
17945 @i{Charles Cave}'s suggestion sparked the implementation of templates
17946 for Remember, which are now templates for capture.
17947 @item
17948 @i{Pavel Chalmoviansky} influenced the agenda treatment of items with
17949 specified time.
17950 @item
17951 @i{Gregory Chernov} patched support for Lisp forms into table
17952 calculations and improved XEmacs compatibility, in particular by porting
17953 @file{nouline.el} to XEmacs.
17954 @item
17955 @i{Sacha Chua} suggested copying some linking code from Planner.
17956 @item
17957 @i{Toby S. Cubitt} contributed to the code for clock formats.
17958 @item
17959 @i{Baoqiu Cui} contributed the DocBook exporter. It has been deleted from
17960 Org 8.0: you can now export to Texinfo and export the @file{.texi} file to
17961 DocBook using @code{makeinfo}.
17962 @item
17963 @i{Eddward DeVilla} proposed and tested checkbox statistics. He also
17964 came up with the idea of properties, and that there should be an API for
17965 them.
17966 @item
17967 @i{Nick Dokos} tracked down several nasty bugs.
17968 @item
17969 @i{Kees Dullemond} used to edit projects lists directly in HTML and so
17970 inspired some of the early development, including HTML export. He also
17971 asked for a way to narrow wide table columns.
17972 @item
17973 @i{Jason Dunsmore} has been maintaining the Org-Mode server at Rackspace for
17974 several years now. He also sponsored the hosting costs until Rackspace
17975 started to host us for free.
17976 @item
17977 @i{Thomas S. Dye} contributed documentation on Worg and helped integrating
17978 the Org-Babel documentation into the manual.
17979 @item
17980 @i{Christian Egli} converted the documentation into Texinfo format, inspired
17981 the agenda, patched CSS formatting into the HTML exporter, and wrote
17982 @file{org-taskjuggler.el}, which has been rewritten by Nicolas Goaziou as
17983 @file{ox-taskjuggler.el} for Org 8.0.
17984 @item
17985 @i{David Emery} provided a patch for custom CSS support in exported
17986 HTML agendas.
17987 @item
17988 @i{Sean Escriva} took over MobileOrg development on the iPhone platform.
17989 @item
17990 @i{Nic Ferrier} contributed mailcap and XOXO support.
17991 @item
17992 @i{Miguel A. Figueroa-Villanueva} implemented hierarchical checkboxes.
17993 @item
17994 @i{John Foerch} figured out how to make incremental search show context
17995 around a match in a hidden outline tree.
17996 @item
17997 @i{Raimar Finken} wrote @file{org-git-line.el}.
17998 @item
17999 @i{Mikael Fornius} works as a mailing list moderator.
18000 @item
18001 @i{Austin Frank} works as a mailing list moderator.
18002 @item
18003 @i{Eric Fraga} drove the development of BEAMER export with ideas and
18004 testing.
18005 @item
18006 @i{Barry Gidden} did proofreading the manual in preparation for the book
18007 publication through Network Theory Ltd.
18008 @item
18009 @i{Niels Giesen} had the idea to automatically archive DONE trees.
18010 @item
18011 @i{Nicolas Goaziou} rewrote much of the plain list code. He also wrote
18012 @file{org-element.el} and @file{org-export.el}, which was a huge step forward
18013 in implementing a clean framework for Org exporters.
18014 @item
18015 @i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
18016 @item
18017 @i{Brian Gough} of Network Theory Ltd publishes the Org mode manual as a
18018 book.
18019 @item
18020 @i{Bernt Hansen} has driven much of the support for auto-repeating tasks,
18021 task state change logging, and the clocktable. His clear explanations have
18022 been critical when we started to adopt the Git version control system.
18023 @item
18024 @i{Manuel Hermenegildo} has contributed various ideas, small fixes and
18025 patches.
18026 @item
18027 @i{Phil Jackson} wrote @file{org-irc.el}.
18028 @item
18029 @i{Scott Jaderholm} proposed footnotes, control over whitespace between
18030 folded entries, and column view for properties.
18031 @item
18032 @i{Matt Jones} wrote @i{MobileOrg Android}.
18033 @item
18034 @i{Tokuya Kameshima} wrote @file{org-wl.el} and @file{org-mew.el}.
18035 @item
18036 @i{Jonathan Leech-Pepin} wrote @file{ox-texinfo.el}.
18037 @item
18038 @i{Shidai Liu} ("Leo") asked for embedded @LaTeX{} and tested it. He also
18039 provided frequent feedback and some patches.
18040 @item
18041 @i{Matt Lundin} has proposed last-row references for table formulas and named
18042 invisible anchors. He has also worked a lot on the FAQ.
18043 @item
18044 @i{David Maus} wrote @file{org-atom.el}, maintains the issues file for Org,
18045 and is a prolific contributor on the mailing list with competent replies,
18046 small fixes and patches.
18047 @item
18048 @i{Jason F. McBrayer} suggested agenda export to CSV format.
18049 @item
18050 @i{Max Mikhanosha} came up with the idea of refiling and sticky agendas.
18051 @item
18052 @i{Dmitri Minaev} sent a patch to set priority limits on a per-file
18053 basis.
18054 @item
18055 @i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler
18056 happy.
18057 @item
18058 @i{Richard Moreland} wrote @i{MobileOrg} for the iPhone.
18059 @item
18060 @i{Rick Moynihan} proposed allowing multiple TODO sequences in a file
18061 and being able to quickly restrict the agenda to a subtree.
18062 @item
18063 @i{Todd Neal} provided patches for links to Info files and Elisp forms.
18064 @item
18065 @i{Greg Newman} refreshed the unicorn logo into its current form.
18066 @item
18067 @i{Tim O'Callaghan} suggested in-file links, search options for general
18068 file links, and TAGS.
18069 @item
18070 @i{Osamu Okano} wrote @file{orgcard2ref.pl}, a Perl program to create a text
18071 version of the reference card.
18072 @item
18073 @i{Takeshi Okano} translated the manual and David O'Toole's tutorial
18074 into Japanese.
18075 @item
18076 @i{Oliver Oppitz} suggested multi-state TODO items.
18077 @item
18078 @i{Scott Otterson} sparked the introduction of descriptive text for
18079 links, among other things.
18080 @item
18081 @i{Pete Phillips} helped during the development of the TAGS feature, and
18082 provided frequent feedback.
18083 @item
18084 @i{Francesco Pizzolante} provided patches that helped speeding up the agenda
18085 generation.
18086 @item
18087 @i{Martin Pohlack} provided the code snippet to bundle character insertion
18088 into bundles of 20 for undo.
18089 @item
18090 @i{Rackspace.com} is hosting our website for free. Thank you Rackspace!
18091 @item
18092 @i{T.V. Raman} reported bugs and suggested improvements.
18093 @item
18094 @i{Matthias Rempe} (Oelde) provided ideas, Windows support, and quality
18095 control.
18096 @item
18097 @i{Paul Rivier} provided the basic implementation of named footnotes. He
18098 also acted as mailing list moderator for some time.
18099 @item
18100 @i{Kevin Rogers} contributed code to access VM files on remote hosts.
18101 @item
18102 @i{Frank Ruell} solved the mystery of the @code{keymapp nil} bug, a
18103 conflict with @file{allout.el}.
18104 @item
18105 @i{Jason Riedy} generalized the send-receive mechanism for Orgtbl tables with
18106 extensive patches.
18107 @item
18108 @i{Philip Rooke} created the Org reference card, provided lots
18109 of feedback, developed and applied standards to the Org documentation.
18110 @item
18111 @i{Christian Schlauer} proposed angular brackets around links, among
18112 other things.
18113 @item
18114 @i{Christopher Schmidt} reworked @code{orgstruct-mode} so that users can
18115 enjoy folding in non-org buffers by using Org headlines in comments.
18116 @item
18117 @i{Paul Sexton} wrote @file{org-ctags.el}.
18118 @item
18119 Linking to VM/BBDB/Gnus was first inspired by @i{Tom Shannon}'s
18120 @file{organizer-mode.el}.
18121 @item
18122 @i{Ilya Shlyakhter} proposed the Archive Sibling, line numbering in literal
18123 examples, and remote highlighting for referenced code lines.
18124 @item
18125 @i{Stathis Sideris} wrote the @file{ditaa.jar} ASCII to PNG converter that is
18126 now packaged into Org's @file{contrib} directory.
18127 @item
18128 @i{Daniel Sinder} came up with the idea of internal archiving by locking
18129 subtrees.
18130 @item
18131 @i{Dale Smith} proposed link abbreviations.
18132 @item
18133 @i{James TD Smith} has contributed a large number of patches for useful
18134 tweaks and features.
18135 @item
18136 @i{Adam Spiers} asked for global linking commands, inspired the link
18137 extension system, added support for mairix, and proposed the mapping API.
18138 @item
18139 @i{Ulf Stegemann} created the table to translate special symbols to HTML,
18140 @LaTeX{}, UTF-8, Latin-1 and ASCII.
18141 @item
18142 @i{Andy Stewart} contributed code to @file{org-w3m.el}, to copy HTML content
18143 with links transformation to Org syntax.
18144 @item
18145 @i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
18146 chapter about publishing.
18147 @item
18148 @i{Jambunathan K} contributed the ODT exporter and rewrote the HTML exporter.
18149 @item
18150 @i{Sebastien Vauban} reported many issues with @LaTeX{} and BEAMER export and
18151 enabled source code highlighting in Gnus.
18152 @item
18153 @i{Stefan Vollmar} organized a video-recorded talk at the
18154 Max-Planck-Institute for Neurology. He also inspired the creation of a
18155 concept index for HTML export.
18156 @item
18157 @i{J@"urgen Vollmer} contributed code generating the table of contents
18158 in HTML output.
18159 @item
18160 @i{Samuel Wales} has provided important feedback and bug reports.
18161 @item
18162 @i{Chris Wallace} provided a patch implementing the @samp{QUOTE}
18163 keyword.
18164 @item
18165 @i{David Wainberg} suggested archiving, and improvements to the linking
18166 system.
18167 @item
18168 @i{Carsten Wimmer} suggested some changes and helped fix a bug in
18169 linking to Gnus.
18170 @item
18171 @i{Roland Winkler} requested additional key bindings to make Org
18172 work on a tty.
18173 @item
18174 @i{Piotr Zielinski} wrote @file{org-mouse.el}, proposed agenda blocks
18175 and contributed various ideas and code snippets.
18176 @end itemize
18177
18178
18179 @node GNU Free Documentation License, Main Index, History and Acknowledgments, Top
18180 @appendix GNU Free Documentation License
18181 @include doclicense.texi
18182
18183
18184 @node Main Index, Key Index, GNU Free Documentation License, Top
18185 @unnumbered Concept index
18186
18187 @printindex cp
18188
18189 @node Key Index, Command and Function Index, Main Index, Top
18190 @unnumbered Key index
18191
18192 @printindex ky
18193
18194 @node Command and Function Index, Variable Index, Key Index, Top
18195 @unnumbered Command and function index
18196
18197 @printindex fn
18198
18199 @node Variable Index, , Command and Function Index, Top
18200 @unnumbered Variable index
18201
18202 This is not a complete index of variables and faces, only the ones that are
18203 mentioned in the manual. For a more complete list, use @kbd{M-x
18204 org-customize @key{RET}} and then click yourself through the tree.
18205
18206 @printindex vr
18207
18208 @bye
18209
18210 @c Local variables:
18211 @c coding: utf-8
18212 @c fill-column: 77
18213 @c indent-tabs-mode: nil
18214 @c paragraph-start: "\b\\|^@[a-zA-Z]*[ \n]\\|^@x?org\\(key\\|cmd\\)\\|\f\\|[ ]*$"
18215 @c paragraph-separate: "\b\\|^@[a-zA-Z]*[ \n]\\|^@x?org\\(key\\|cmd\\)\\|[ \f]*$"
18216 @c End:
18217
18218
18219 @c LocalWords: webdavhost pre