This is ../../info/org, produced by makeinfo version 4.11 from org.texi. This manual is for Org version 6.33x. Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with the Front-Cover texts being "A GNU Manual," and with the Back-Cover Texts as in (a) below. A copy of the license is included in the section entitled "GNU Free Documentation License." (a) The FSF's Back-Cover Text is: "You have the freedom to copy and modify this GNU manual. Buying copies from the FSF supports it in developing GNU and promoting software freedom." This document is part of a collection distributed under the GNU Free Documentation License. If you want to distribute this document separately from the collection, you can do so by adding a copy of the license to the document, as described in section 6 of the license. INFO-DIR-SECTION Emacs START-INFO-DIR-ENTRY * Org Mode: (org). Outline-based notes management and organizer END-INFO-DIR-ENTRY  File: org, Node: Setting Options, Prev: Block agenda, Up: Custom agenda views 10.6.3 Setting options for custom commands ------------------------------------------ Org mode contains a number of variables regulating agenda construction and display. The global variables define the behavior for all agenda commands, including the custom commands. However, if you want to change some settings just for a single custom view, you can do so. Setting options requires inserting a list of variable names and values at the right spot in `org-agenda-custom-commands'. For example: (setq org-agenda-custom-commands '(("w" todo "WAITING" ((org-agenda-sorting-strategy '(priority-down)) (org-agenda-prefix-format " Mixed: "))) ("U" tags-tree "+boss-urgent" ((org-show-following-heading nil) (org-show-hierarchy-above nil))) ("N" search "" ((org-agenda-files '("~org/notes.org")) (org-agenda-text-search-extra-files nil))))) Now the `C-c a w' command will sort the collected entries only by priority, and the prefix format is modified to just say ` Mixed: ' instead of giving the category of the entry. The sparse tags tree of `C-c a U' will now turn out ultra-compact, because neither the headline hierarchy above the match, nor the headline following the match will be shown. The command `C-c a N' will do a text search limited to only a single file. For command sets creating a block agenda, `org-agenda-custom-commands' has two separate spots for setting options. You can add options that should be valid for just a single command in the set, and options that should be valid for all commands in the set. The former are just added to the command entry, the latter must come after the list of command entries. Going back to the block agenda example (*note Block agenda::), let's change the sorting strategy for the `C-c a h' commands to `priority-down', but let's sort the results for GARDEN tags query in the opposite order, `priority-up'. This would look like this: (setq org-agenda-custom-commands '(("h" "Agenda and Home-related tasks" ((agenda) (tags-todo "home") (tags "garden" ((org-agenda-sorting-strategy '(priority-up))))) ((org-agenda-sorting-strategy '(priority-down)))) ("o" "Agenda and Office-related tasks" ((agenda) (tags-todo "work") (tags "office"))))) As you see, the values and parentheses setting is a little complex. When in doubt, use the customize interface to set this variable--it fully supports its structure. Just one caveat: when setting options in this interface, the _values_ are just Lisp expressions. So if the value is a string, you need to add the double-quotes around the value yourself.  File: org, Node: Exporting Agenda Views, Next: Agenda column view, Prev: Custom agenda views, Up: Agenda Views 10.7 Exporting Agenda Views =========================== If you are away from your computer, it can be very useful to have a printed version of some agenda views to carry around. Org mode can export custom agenda views as plain text, HTML(1), Postscript, PDF(2), and iCalendar files. If you want to do this only occasionally, use the command `C-x C-w' Write the agenda view to a file. Depending on the extension of the selected file name, the view will be exported as HTML (extension `.html' or `.htm'), Postscript (extension `.ps'), iCalendar (extension `.ics'), or plain text (any other extension). Use the variable `org-agenda-exporter-settings' to set options for `ps-print' and for `htmlize' to be used during export, for example (setq org-agenda-exporter-settings '((ps-number-of-columns 2) (ps-landscape-mode t) (org-agenda-add-entry-text-maxlines 5) (htmlize-output-type 'css))) If you need to export certain agenda views frequently, you can associate any custom agenda command with a list of output file names (3). Here is an example that first defines custom commands for the agenda and the global TODO list, together with a number of files to which to export them. Then we define two block agenda commands and specify file names for them as well. File names can be relative to the current working directory, or absolute. (setq org-agenda-custom-commands '(("X" agenda "" nil ("agenda.html" "agenda.ps")) ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps")) ("h" "Agenda and Home-related tasks" ((agenda "") (tags-todo "home") (tags "garden")) nil ("~/views/home.html")) ("o" "Agenda and Office-related tasks" ((agenda) (tags-todo "work") (tags "office")) nil ("~/views/office.ps" "~/calendars/office.ics")))) The extension of the file name determines the type of export. If it is `.html', Org mode will use the `htmlize.el' package to convert the buffer to HTML and save it to this file name. If the extension is `.ps', `ps-print-buffer-with-faces' is used to produce Postscript output. If the extension is `.ics', iCalendar export is run export over all files that were used to construct the agenda, and limit the export to entries listed in the agenda. Any other extension produces a plain ASCII file. The export files are _not_ created when you use one of those commands interactively because this might use too much overhead. Instead, there is a special command to produce _all_ specified files in one step: `C-c a e' Export all agenda views that have export file names associated with them. You can use the options section of the custom agenda commands to also set options for the export commands. For example: (setq org-agenda-custom-commands '(("X" agenda "" ((ps-number-of-columns 2) (ps-landscape-mode t) (org-agenda-prefix-format " [ ] ") (org-agenda-with-colors nil) (org-agenda-remove-tags t)) ("theagenda.ps")))) This command sets two options for the Postscript exporter, to make it print in two columns in landscape format--the resulting page can be cut in two and then used in a paper agenda. The remaining settings modify the agenda prefix to omit category and scheduling information, and instead include a checkbox to check off items. We also remove the tags to make the lines compact, and we don't want to use colors for the black-and-white printer. Settings specified in `org-agenda-exporter-settings' will also apply, but the settings in `org-agenda-custom-commands' take precedence. From the command line you may also use emacs -f org-batch-store-agenda-views -kill or, if you need to modify some parameters(4) emacs -eval '(org-batch-store-agenda-views \ org-agenda-ndays 30 \ org-agenda-start-day "2007-11-01" \ org-agenda-include-diary nil \ org-agenda-files (quote ("~/org/project.org")))' \ -kill which will create the agenda views restricted to the file `~/org/project.org', without diary entries and with a 30-day extent. You can also extract agenda information in a way that allows further processing by other programs. See *note Extracting agenda information::, for more information. ---------- Footnotes ---------- (1) You need to install Hrvoje Niksic's `htmlize.el'. (2) To create PDF output, the ghostscript `ps2pdf' utility must be installed on the system. Selecting a PDF file with also create the postscript file. (3) If you want to store standard views like the weekly agenda or the global TODO list as well, you need to define custom commands for them in order to be able to specify file names. (4) Quoting depends on the system you use, please check the FAQ for examples.  File: org, Node: Agenda column view, Prev: Exporting Agenda Views, Up: Agenda Views 10.8 Using column view in the agenda ==================================== Column view (*note Column view::) is normally used to view and edit properties embedded in the hierarchical structure of an Org file. It can be quite useful to use column view also from the agenda, where entries are collected by certain criteria. `C-c C-x C-c' Turn on column view in the agenda. To understand how to use this properly, it is important to realize that the entries in the agenda are no longer in their proper outline environment. This causes the following issues: 1. Org needs to make a decision which `COLUMNS' format to use. Since the entries in the agenda are collected from different files, and different files may have different `COLUMNS' formats, this is a non-trivial problem. Org first checks if the variable `org-overriding-columns-format' is currently set, and if so, takes the format from there. Otherwise it takes the format associated with the first item in the agenda, or, if that item does not have a specific format (defined in a property, or in its file), it uses `org-columns-default-format'. 2. If any of the columns has a summary type defined (*note Column attributes::), turning on column view in the agenda will visit all relevant agenda files and make sure that the computations of this property are up to date. This is also true for the special `CLOCKSUM' property. Org will then sum the values displayed in the agenda. In the daily/weekly agenda, the sums will cover a single day, in all other views they cover the entire block. It is vital to realize that the agenda may show the same entry _twice_ (for example as scheduled and as a deadline), and it may show two entries from the same hierarchy (for example a _parent_ and its _child_). In these cases, the summation in the agenda will lead to incorrect results because some values will count double. 3. When the column view in the agenda shows the `CLOCKSUM', that is always the entire clocked time for this item. So even in the daily/weekly agenda, the clocksum listed in column view may originate from times outside the current view. This has the advantage that you can compare these values with a column listing the planned total effort for a task--one of the major applications for column view in the agenda. If you want information about clocked time in the displayed period use clock table mode (press `R' in the agenda).  File: org, Node: Markup, Next: Exporting, Prev: Agenda Views, Up: Top 11 Markup for rich export ************************* When exporting Org-mode documents, the exporter tries to reflect the structure of the document as accurately as possible in the backend. Since export targets like HTML, LaTeX, or DocBook allow much richer formatting, Org mode has rules on how to prepare text for rich export. This section summarizes the markup rules used in an Org-mode buffer. * Menu: * Structural markup elements:: The basic structure as seen by the exporter * Images and tables:: Tables and Images will be included * Literal examples:: Source code examples with special formatting * Include files:: Include additional files into a document * Macro replacement:: Use macros to create complex output * Embedded LaTeX:: LaTeX can be freely used inside Org documents  File: org, Node: Structural markup elements, Next: Images and tables, Prev: Markup, Up: Markup 11.1 Structural markup elements =============================== * Menu: * Document title:: Where the title is taken from * Headings and sections:: The document structure as seen by the exporter * Table of contents:: The if and where of the table of contents * Initial text:: Text before the first heading? * Lists:: Lists * Paragraphs:: Paragraphs * Footnote markup:: Footnotes * Emphasis and monospace:: Bold, italic, etc. * Horizontal rules:: Make a line * Comment lines:: What will *not* be exported  File: org, Node: Document title, Next: Headings and sections, Prev: Structural markup elements, Up: Structural markup elements Document title -------------- The title of the exported document is taken from the special line #+TITLE: This is the title of the document If this line does not exist, the title is derived from the first non-empty, non-comment line in the buffer. If no such line exists, or if you have turned off exporting of the text before the first headline (see below), the title will be the file name without extension. If you are exporting only a subtree by marking is as the region, the heading of the subtree will become the title of the document. If the subtree has a property `EXPORT_TITLE', that will take precedence.  File: org, Node: Headings and sections, Next: Table of contents, Prev: Document title, Up: Structural markup elements Headings and sections --------------------- The outline structure of the document as described in *note Document Structure::, forms the basis for defining sections of the exported document. However, since the outline structure is also used for (for example) lists of tasks, only the first three outline levels will be used as headings. Deeper levels will become itemized lists. You can change the location of this switch globally by setting the variable `org-export-headline-levels', or on a per-file basis with a line #+OPTIONS: H:4  File: org, Node: Table of contents, Next: Initial text, Prev: Headings and sections, Up: Structural markup elements Table of contents ----------------- The table of contents is normally inserted directly before the first headline of the file. If you would like to get it to a different location, insert the string `[TABLE-OF-CONTENTS]' on a line by itself at the desired location. The depth of the table of contents is by default the same as the number of headline levels, but you can choose a smaller number, or turn off the table of contents entirely, by configuring the variable `org-export-with-toc', or on a per-file basis with a line like #+OPTIONS: toc:2 (only to two levels in TOC) #+OPTIONS: toc:nil (no TOC at all)  File: org, Node: Initial text, Next: Lists, Prev: Table of contents, Up: Structural markup elements Text before the first headline ------------------------------ Org mode normally exports the text before the first headline, and even uses the first line as the document title. The text will be fully marked up. If you need to include literal HTML, LaTeX, or DocBook code, use the special constructs described below in the sections for the individual exporters. Some people like to use the space before the first headline for setup and internal links and therefore would like to control the exported text before the first headline in a different way. You can do so by setting the variable `org-export-skip-text-before-1st-heading' to `t'. On a per-file basis, you can get the same effect with `#+OPTIONS: skip:t'. If you still want to have some text before the first headline, use the `#+TEXT' construct: #+OPTIONS: skip:t #+TEXT: This text will go before the *first* headline. #+TEXT: [TABLE-OF-CONTENTS] #+TEXT: This goes between the table of contents and the first headline  File: org, Node: Lists, Next: Paragraphs, Prev: Initial text, Up: Structural markup elements Lists ----- Plain lists as described in *note Plain lists::, are translated to the backend's syntax for such lists. Most backends support unordered, ordered, and description lists.  File: org, Node: Paragraphs, Next: Footnote markup, Prev: Lists, Up: Structural markup elements Paragraphs, line breaks, and quoting ------------------------------------ Paragraphs are separated by at least one empty line. If you need to enforce a line break within a paragraph, use `\\' at the end of a line. To keep the line breaks in a region, but otherwise use normal formatting, you can use this construct, which can also be used to format poetry. #+BEGIN_VERSE Great clouds overhead Tiny black birds rise and fall Snow covers Emacs -- AlexSchroeder #+END_VERSE When quoting a passage from another document, it is customary to format this as a paragraph that is indented on both the left and the right margin. You can include quotations in Org-mode documents like this: #+BEGIN_QUOTE Everything should be made as simple as possible, but not any simpler -- Albert Einstein #+END_QUOTE If you would like to center some text, do it like this: #+BEGIN_CENTER Everything should be made as simple as possible, \\ but not any simpler #+END_CENTER  File: org, Node: Footnote markup, Next: Emphasis and monospace, Prev: Paragraphs, Up: Structural markup elements Footnote markup --------------- Footnotes defined in the way described in *note Footnotes::, will be exported by all backends. Org allows multiple references to the same note, and different backends support this to varying degrees.  File: org, Node: Emphasis and monospace, Next: Horizontal rules, Prev: Footnote markup, Up: Structural markup elements Emphasis and monospace ---------------------- You can make words *bold*, /italic/, _underlined_, `=code=' and `~verbatim~', and, if you must, `+strike-through+'. Text in the code and verbatim string is not processed for Org-mode specific syntax, it is exported verbatim.  File: org, Node: Horizontal rules, Next: Comment lines, Prev: Emphasis and monospace, Up: Structural markup elements Horizontal rules ---------------- A line consisting of only dashes, and at least 5 of them, will be exported as a horizontal line (`
' in HTML).  File: org, Node: Comment lines, Prev: Horizontal rules, Up: Structural markup elements Comment lines ------------- Lines starting with `#' in column zero are treated as comments and will never be exported. If you want an indented line to be treated as a comment, start it with `#+ '. Also entire subtrees starting with the word `COMMENT' will never be exported. Finally, regions surrounded by `#+BEGIN_COMMENT' ... `#+END_COMMENT' will not be exported. `C-c ;' Toggle the COMMENT keyword at the beginning of an entry.  File: org, Node: Images and tables, Next: Literal examples, Prev: Structural markup elements, Up: Markup 11.2 Images and Tables ====================== Both the native Org mode tables (*note Tables::) and tables formatted with the `table.el' package will be exported properly. For Org mode tables, the lines before the first horizontal separator line will become table header lines. You can use the following lines somewhere before the table to assign a caption and a label for cross references: #+CAPTION: This is the caption for the next table (or link) #+LABEL: tbl:basic-data | ... | ...| |-----|----| Some backends (HTML, LaTeX, and DocBook) allow you to directly include images into the exported document. Org does this, if a link to an image files does not have a description part, for example `[[./img/a.jpg]]'. If you wish to define a caption for the image and maybe a label for internal cross references, you sure that the link is on a line by itself precede it with: #+CAPTION: This is the caption for the next figure link (or table) #+LABEL: fig:SED-HR4049 [[./img/a.jpg]] You may also define additional attributes for the figure. As this is backend-specific, see the sections about the individual backends for more information.  File: org, Node: Literal examples, Next: Include files, Prev: Images and tables, Up: Markup 11.3 Literal examples ===================== You can include literal examples that should not be subjected to markup. Such examples will be typeset in monospace, so this is well suited for source code and similar examples. #+BEGIN_EXAMPLE Some example from a text file. #+END_EXAMPLE Note that such blocks may be indented in order to align nicely with indented text and in particular with plain list structure (*note Plain lists::). For simplicity when using small examples, you can also start the example lines with a colon followed by a space. There may also be additional whitespace before the colon: Here is an example : Some example from a text file. If the example is source code from a programming language, or any other text that can be marked up by font-lock in Emacs, you can ask for the example to look like the fontified Emacs buffer(1). This is done with the `src' block, where you also need to specify the name of the major mode that should be used to fontify the example: #+BEGIN_SRC emacs-lisp (defun org-xor (a b) "Exclusive or." (if a (not b) b)) #+END_SRC Both in `example' and in `src' snippets, you can add a `-n' switch to the end of the `BEGIN' line, to get the lines of the example numbered. If you use a `+n' switch, the numbering from the previous numbered snippet will be continued in the current one. In literal examples, Org will interpret strings like `(ref:name)' as labels, and use them as targets for special hyperlinks like `[[(name)]]' (i.e. the reference name enclosed in single parenthesis). In HTML, hovering the mouse over such a link will remote-highlight the corresponding code line, which is kind of cool. You can also add a `-r' switch which removes the labels from the source code(2). With the `-n' switch, links to these references will be labeled by the line numbers from the code listing, otherwise links will use the labels with no parentheses. Here is an example: #+BEGIN_SRC emacs-lisp -n -r (save-excursion (ref:sc) (goto-char (point-min)) (ref:jump) #+END_SRC In line [[(sc)]] we remember the current position. [[(jump)][Line (jump)]] jumps to point-min. If the syntax for the label format conflicts with the language syntax, use a `-l' switch to change the format, for example `#+BEGIN_SRC pascal -n -r -l "((%s))"'. See also the variable `org-coderef-label-format'. HTML export also allows examples to be published as text areas, *Note Text areas in HTML export::. `C-c '' Edit the source code example at point in its native mode. This works by switching to a temporary buffer with the source code. You need to exit by pressing `C-c '' again(3), the edited version will then replace the old version in the Org buffer. Fixed-width regions (where each line starts with a colon followed by a space) will be edited using `artist-mode'(4) to allow creating ASCII drawings easily. Using this command in an empty line will create a new fixed-width region. `C-c l' Calling `org-store-link' while editing a source code example in a temporary buffer created with `C-c '' will prompt for a label, make sure that it is unique in the current buffer, and insert it with the proper formatting like `(ref:label)' at the end of the current line. Then the label is stored as a link `(label)', for retrieval with `C-c C-l'. ---------- Footnotes ---------- (1) Currently this works for the HTML backend, and requires the `htmlize.el' package version 1.34 or later. It also works for LaTeX with the listings package, if you turn on the option `org-export-latex-listings' and make sure that the listings package is included by the LaTeX header. (2) Adding `-k' to `-n -r' will keep the labels in the source code while using line numbers for the links, which might be useful to explain those in an org-mode example code. (3) Upon exit, lines starting with `*' or `#' will get a comma prepended, to keep them from being interpreted by Org as outline nodes or special comments. These commas will be striped for editing with `C-c '', and also for export. (4) You may select a different-mode with the variable `org-edit-fixed-width-region-mode'.  File: org, Node: Include files, Next: Macro replacement, Prev: Literal examples, Up: Markup 11.4 Include files ================== During export, you can include the content of another file. For example, to include your `.emacs' file, you could use: #+INCLUDE: "~/.emacs" src emacs-lisp The optional second and third parameter are the markup (e.g. `quote', `example', or `src'), and, if the markup is `src', the language for formatting the contents. The markup is optional, if it is not given, the text will be assumed to be in Org mode format and will be processed normally. The include line will also allow additional keyword parameters `:prefix1' and `:prefix' to specify prefixes for the first line and for each following line, as well as any options accepted by the selected markup. For example, to include a file as an item, use #+INCLUDE: "~/snippets/xx" :prefix1 " + " :prefix " " `C-c '' Visit the include file at point.  File: org, Node: Macro replacement, Next: Embedded LaTeX, Prev: Include files, Up: Markup 11.5 Macro replacement ====================== You can define text snippets with #+MACRO: name replacement text $1, $2 are arguments which can be referenced anywhere in the document (even in code examples) with `{{{name(arg1,arg2)}}}'. In addition to defined macros, `{{{title}}}', `{{{author}}}', etc., will reference information set by the `#+TITLE:', `#+AUTHOR:', and similar lines. Also, `{{{date(FORMAT)}}}' and `{{{modification-time(FORMAT)}}}' refer to current date time and to the modification time of the file being exported, respectively. FORMAT should be a format string understood by `format-time-string'. Macro expansion takes place during export, and some people use it to construct complex HTML code.  File: org, Node: Embedded LaTeX, Prev: Macro replacement, Up: Markup 11.6 Embedded LaTeX =================== Plain ASCII is normally sufficient for almost all note taking. One exception, however, are scientific notes which need to be able to contain mathematical symbols and the occasional formula. LaTeX(1) is widely used to typeset scientific documents. Org mode supports embedding LaTeX code into its files, because many academics are used to reading LaTeX source code, and because it can be readily processed into images for HTML production. It is not necessary to mark LaTeX macros and code in any special way. If you observe a few conventions, Org mode knows how to find it and what to do with it. * Menu: * Special symbols:: Greek letters and other symbols * Subscripts and superscripts:: Simple syntax for raising/lowering text * LaTeX fragments:: Complex formulas made easy * Previewing LaTeX fragments:: What will this snippet look like? * CDLaTeX mode:: Speed up entering of formulas ---------- Footnotes ---------- (1) LaTeX is a macro system based on Donald E. Knuth's TeX system. Many of the features described here as "LaTeX" are really from TeX, but for simplicity I am blurring this distinction.  File: org, Node: Special symbols, Next: Subscripts and superscripts, Prev: Embedded LaTeX, Up: Embedded LaTeX 11.6.1 Special symbols ---------------------- You can use LaTeX macros to insert special symbols like `\alpha' to indicate the Greek letter, or `\to' to indicate an arrow. Completion for these macros is available, just type `\' and maybe a few letters, and press `M-' to see possible completions. Unlike LaTeX code, Org mode allows these macros to be present without surrounding math delimiters, for example: Angles are written as Greek letters \alpha, \beta and \gamma. During export, these symbols will be transformed into the native format of the exporter backend. Strings like `\alpha' will be exported as `α' in the HTML output, and as `$\alpha$' in the LaTeX output. Similarly, `\nbsp' will become ` ' in HTML and `~' in LaTeX. If you need such a symbol inside a word, terminate it like this: `\Aacute{}stor'. A large number of entities is provided, with names taken from both HTML and LaTeX, see the variable `org-html-entities' for the complete list. `\-' is treated as a shy hyphen, and `--', `---', and `...' are all converted into special commands creating hyphens of different lengths or a compact set of dots.  File: org, Node: Subscripts and superscripts, Next: LaTeX fragments, Prev: Special symbols, Up: Embedded LaTeX 11.6.2 Subscripts and superscripts ---------------------------------- Just like in LaTeX, `^' and `_' are used to indicate super- and subscripts. Again, these can be used without embedding them in math-mode delimiters. To increase the readability of ASCII text, it is not necessary (but OK) to surround multi-character sub- and superscripts with curly braces. For example The mass if the sun is M_sun = 1.989 x 10^30 kg. The radius of the sun is R_{sun} = 6.96 x 10^8 m. To avoid interpretation as raised or lowered text, you can quote `^' and `_' with a backslash: `\^' and `\_'. If you write a text where the underscore is often used in a different context, Org's convention to always interpret these as subscripts can get in your way. Configure the variable `org-export-with-sub-superscripts' to globally change this convention, or use, on a per-file basis: #+OPTIONS: ^:{}  File: org, Node: LaTeX fragments, Next: Previewing LaTeX fragments, Prev: Subscripts and superscripts, Up: Embedded LaTeX 11.6.3 LaTeX fragments ---------------------- With symbols, sub- and superscripts, HTML is pretty much at its end when it comes to representing mathematical formulas(1). More complex expressions need a dedicated formula processor. To this end, Org mode can contain arbitrary LaTeX fragments. It provides commands to preview the typeset result of these fragments, and upon export to HTML, all fragments will be converted to images and inlined into the HTML document(2). For this to work you need to be on a system with a working LaTeX installation. You also need the `dvipng' program, available at `http://sourceforge.net/projects/dvipng/'. The LaTeX header that will be used when processing a fragment can be configured with the variable `org-format-latex-header'. LaTeX fragments don't need any special marking at all. The following snippets will be identified as LaTeX source code: * Environments of any kind. The only requirement is that the `\begin' statement appears on a new line, preceded by only whitespace. * Text within the usual LaTeX math delimiters. To avoid conflicts with currency specifications, single `$' characters are only recognized as math delimiters if the enclosed text contains at most two line breaks, is directly attached to the `$' characters with no whitespace in between, and if the closing `$' is followed by whitespace, punctuation or a dash. For the other delimiters, there is no such restriction, so when in doubt, use `\(...\)' as inline math delimiters. For example: \begin{equation} % arbitrary environments, x=\sqrt{b} % even tables, figures \end{equation} % etc If $a^2=b$ and \( b=2 \), then the solution must be either $$ a=+\sqrt{2} $$ or \[ a=-\sqrt{2} \]. If you need any of the delimiter ASCII sequences for other purposes, you can configure the option `org-format-latex-options' to deselect the ones you do not wish to have interpreted by the LaTeX converter. ---------- Footnotes ---------- (1) Yes, there is MathML, but that is not yet fully supported by many browsers, and there is no decent converter for turning LaTeX or ASCII representations of formulas into MathML. So for the time being, converting formulas into images seems the way to go. (2) The LaTeX export will not use images for displaying LaTeX fragments but include these fragments directly into the LaTeX code.  File: org, Node: Previewing LaTeX fragments, Next: CDLaTeX mode, Prev: LaTeX fragments, Up: Embedded LaTeX 11.6.4 Previewing LaTeX fragments --------------------------------- LaTeX fragments can be processed to produce preview images of the typeset expressions: `C-c C-x C-l' Produce a preview image of the LaTeX fragment at point and overlay it over the source code. If there is no fragment at point, process all fragments in the current entry (between two headlines). When called with a prefix argument, process the entire subtree. When called with two prefix arguments, or when the cursor is before the first headline, process the entire buffer. `C-c C-c' Remove the overlay preview images. You can customize the variable `org-format-latex-options' to influence some aspects of the preview. In particular, the `:scale' (and for HTML export, `:html-scale') property can be used to adjust the size of the preview images. During HTML export (*note HTML export::), all LaTeX fragments are converted into images and inlined into the document if the following setting is active: (setq org-export-with-LaTeX-fragments t)  File: org, Node: CDLaTeX mode, Prev: Previewing LaTeX fragments, Up: Embedded LaTeX 11.6.5 Using CDLaTeX to enter math ---------------------------------- CDLaTeX mode is a minor mode that is normally used in combination with a major LaTeX mode like AUCTeX in order to speed-up insertion of environments and math templates. Inside Org mode, you can make use of some of the features of CDLaTeX mode. You need to install `cdlatex.el' and `texmathp.el' (the latter comes also with AUCTeX) from `http://www.astro.uva.nl/~dominik/Tools/cdlatex'. Don't use CDLaTeX mode itself under Org mode, but use the light version `org-cdlatex-mode' that comes as part of Org mode. Turn it on for the current buffer with `M-x org-cdlatex-mode', or for all Org files with (add-hook 'org-mode-hook 'turn-on-org-cdlatex) When this mode is enabled, the following features are present (for more details see the documentation of CDLaTeX mode): * Environment templates can be inserted with `C-c {'. * The key will do template expansion if the cursor is inside a LaTeX fragment(1). For example, will expand `fr' to `\frac{}{}' and position the cursor correctly inside the first brace. Another will get you into the second brace. Even outside fragments, will expand environment abbreviations at the beginning of a line. For example, if you write `equ' at the beginning of a line and press , this abbreviation will be expanded to an `equation' environment. To get a list of all abbreviations, type `M-x cdlatex-command-help'. * Pressing `_' and `^' inside a LaTeX fragment will insert these characters together with a pair of braces. If you use to move out of the braces, and if the braces surround only a single character or macro, they are removed again (depending on the variable `cdlatex-simplify-sub-super-scripts'). * Pressing the backquote ``' followed by a character inserts math macros, also outside LaTeX fragments. If you wait more than 1.5 seconds after the backquote, a help window will pop up. * Pressing the single-quote `'' followed by another character modifies the symbol before point with an accent or a font. If you wait more than 1.5 seconds after the backquote, a help window will pop up. Character modification will work only inside LaTeX fragments, outside the quote is normal. ---------- Footnotes ---------- (1) Org mode has a method to test if the cursor is inside such a fragment, see the documentation of the function `org-inside-LaTeX-fragment-p'.  File: org, Node: Exporting, Next: Publishing, Prev: Markup, Up: Top 12 Exporting ************ Org-mode documents can be exported into a variety of other formats. For printing and sharing of notes, ASCII export produces a readable and simple version of an Org file. HTML export allows you to publish a notes file on the web, while the XOXO format provides a solid base for exchange with a broad range of other applications. LaTeX export lets you use Org mode and its structured editing functions to easily create LaTeX files. DocBook export makes it possible to convert Org files to many other formats using DocBook tools. To incorporate entries with associated times like deadlines or appointments into a desktop calendar program like iCal, Org mode can also produce extracts in the iCalendar format. Currently Org mode only supports export, not import of these different formats. Org supports export of selected regions when `transient-mark-mode' is enabled (default in Emacs 23). * Menu: * Selective export:: Using tags to select and exclude trees * Export options:: Per-file export settings * The export dispatcher:: How to access exporter commands * ASCII export:: Exporting to plain ASCII * HTML export:: Exporting to HTML * LaTeX and PDF export:: Exporting to LaTeX, and processing to PDF * DocBook export:: Exporting to DocBook * Freemind export:: Exporting to Freemind mind maps * XOXO export:: Exporting to XOXO * iCalendar export:: Exporting in iCalendar format  File: org, Node: Selective export, Next: Export options, Prev: Exporting, Up: Exporting 12.1 Selective export ===================== You may use tags to select the parts of a document that should be exported, or to exclude parts from export. This behavior is governed by two variables: `org-export-select-tags' and `org-export-exclude-tags'. Org first checks if any of the _select_ tags is present in the buffer. If yes, all trees that do not carry one of these tags will be excluded. If a selected tree is a subtree, the heading hierarchy above it will also be selected for export, but not the text below those headings. If none of the select tags is found, the whole buffer will be selected for export. Finally, all subtrees that are marked by any of the _exclude_ tags will be removed from the export buffer.  File: org, Node: Export options, Next: The export dispatcher, Prev: Selective export, Up: Exporting 12.2 Export options =================== The exporter recognizes special lines in the buffer which provide additional information. These lines may be put anywhere in the file. The whole set of lines can be inserted into the buffer with `C-c C-e t'. For individual lines, a good way to make sure the keyword is correct is to type `#+' and then use `M-' completion (*note Completion::). For a summary of other in-buffer settings not specifically related to export, see *note In-buffer settings::. In particular, note that you can place commonly-used (export) options in a separate file which can be included using `#+SETUPFILE'. `C-c C-e t' Insert template with export options, see example below. #+TITLE: the title to be shown (default is the buffer name) #+AUTHOR: the author (default taken from `user-full-name') #+DATE: a date, fixed, of a format string for `format-time-string' #+EMAIL: his/her email address (default from `user-mail-address') #+DESCRIPTION: the page description, e.g. for the XHTML meta tag #+KEYWORDS: the page keywords, e.g. for the XHTML meta tag #+LANGUAGE: language for HTML, e.g. `en' (`org-export-default-language') #+TEXT: Some descriptive text to be inserted at the beginning. #+TEXT: Several lines may be given. #+OPTIONS: H:2 num:t toc:t \n:nil @:t ::t |:t ^:t f:t TeX:t ... #+BIND: lisp-var lisp-val, e.g.: org-export-latex-low-levels itemize You need to confirm using these, or configure `org-export-allow-BIND' #+LINK_UP: the ``up'' link of an exported page #+LINK_HOME: the ``home'' link of an exported page #+LATEX_HEADER: extra line(s) for the LaTeX header, like \usepackage{xyz} #+EXPORT_SELECT_TAGS: Tags that select a tree for export #+EXPORT_EXCLUDE_TAGS: Tags that exclude a tree from export The OPTIONS line is a compact(1) form to specify export settings. Here you can: H: set the number of headline levels for export num: turn on/off section-numbers toc: turn on/off table of contents, or set level limit (integer) \n: turn on/off line-break-preservation @: turn on/off quoted HTML tags :: turn on/off fixed-width sections |: turn on/off tables ^: turn on/off TeX-like syntax for sub- and superscripts. If you write "^:{}", `a_{b}' will be interpreted, but the simple `a_b' will be left as it is. -: turn on/off conversion of special strings. f: turn on/off footnotes like this[1]. todo: turn on/off inclusion of TODO keywords into exported text pri: turn on/off priority cookies tags: turn on/off inclusion of tags, may also be `not-in-toc' <: turn on/off inclusion of any time/date stamps like DEADLINES *: turn on/off emphasized text (bold, italic, underlined) TeX: turn on/off simple TeX macros in plain text LaTeX: turn on/off LaTeX fragments skip: turn on/off skipping the text before the first heading author: turn on/off inclusion of author name/email into exported file creator: turn on/off inclusion of creator info into exported file timestamp: turn on/off inclusion creation time into exported file d: turn on/off inclusion of drawers These options take effect in both the HTML and LaTeX export, except for `TeX' and `LaTeX', which are respectively `t' and `nil' for the LaTeX export. When exporting only a single subtree by selecting it with `C-c @' before calling an export command, the subtree can overrule some of the file's export settings with properties `EXPORT_FILE_NAME', `EXPORT_TITLE', `EXPORT_TEXT', `EXPORT_AUTHOR', `EXPORT_DATE', and `EXPORT_OPTIONS'. ---------- Footnotes ---------- (1) If you want to configure many options this way, you can use several OPTIONS lines.  File: org, Node: The export dispatcher, Next: ASCII export, Prev: Export options, Up: Exporting 12.3 The export dispatcher ========================== All export commands can be reached using the export dispatcher, which is a prefix key that prompts for an additional key specifying the command. Normally the entire file is exported, but if there is an active region that contains one outline tree, the first heading is used as document title and the subtrees are exported. `C-c C-e' Dispatcher for export and publishing commands. Displays a help-window listing the additional key(s) needed to launch an export or publishing command. The prefix arg is passed through to the exporter. A double prefix `C-u C-u' causes most commands to be executed in the background, in a separate Emacs process(1). `C-c C-e v' Like `C-c C-e', but only export the text that is currently visible (i.e. not hidden by outline visibility). `C-u C-u C-c C-e' Call an the exporter, but reverse the setting of `org-export-run-in-background', i.e. request background processing if not set, or force processing in the current Emacs process if set. ---------- Footnotes ---------- (1) To make this behavior the default, customize the variable `org-export-run-in-background'.  File: org, Node: ASCII export, Next: HTML export, Prev: The export dispatcher, Up: Exporting 12.4 ASCII export ================= ASCII export produces a simple and very readable version of an Org-mode file. `C-c C-e a' Export as ASCII file. For an Org file, `myfile.org', the ASCII file will be `myfile.txt'. The file will be overwritten without warning. If there is an active region(1), only the region will be exported. If the selected region is a single tree(2), the tree head will become the document title. If the tree head entry has or inherits an `EXPORT_FILE_NAME' property, that name will be used for the export. `C-c C-e A' Export to a temporary buffer, do not create a file. `C-c C-e v a' Export only the visible part of the document. In the exported version, the first 3 outline levels will become headlines, defining a general document structure. Additional levels will be exported as itemized lists. If you want that transition to occur at a different level, specify it with a prefix argument. For example, C-1 C-c C-e a creates only top level headlines and does the rest as items. When headlines are converted to items, the indentation of the text following the headline is changed to fit nicely under the item. This is done with the assumption that the first body line indicates the base indentation of the body text. Any indentation larger than this is adjusted to preserve the layout relative to the first line. Should there be lines with less indentation than the first, these are left alone. Links will be exported in a footnote-like style, with the descriptive part in the text and the link in a note before the next heading. See the variable `org-export-ascii-links-to-notes' for details and other options. ---------- Footnotes ---------- (1) This requires `transient-mark-mode' be turned on. (2) To select the current subtree, use `C-c @'.  File: org, Node: HTML export, Next: LaTeX and PDF export, Prev: ASCII export, Up: Exporting 12.5 HTML export ================ Org mode contains an HTML (XHTML 1.0 strict) exporter with extensive HTML formatting, in ways similar to John Gruber's _markdown_ language, but with additional support for tables. * Menu: * HTML Export commands:: How to invoke HTML export * Quoting HTML tags:: Using direct HTML in Org mode * Links in HTML export:: How links will be interpreted and formatted * Tables in HTML export:: How to modify the formatting of tables * Images in HTML export:: How to insert figures into HTML output * Text areas in HTML export:: An alternative way to show an example * CSS support:: Changing the appearance of the output * Javascript support:: Info and Folding in a web browser  File: org, Node: HTML Export commands, Next: Quoting HTML tags, Prev: HTML export, Up: HTML export 12.5.1 HTML export commands --------------------------- `C-c C-e h' Export as HTML file `myfile.html'. For an Org file `myfile.org', the ASCII file will be `myfile.html'. The file will be overwritten without warning. If there is an active region(1), only the region will be exported. If the selected region is a single tree(2), the tree head will become the document title. If the tree head entry has, or inherits, an `EXPORT_FILE_NAME' property, that name will be used for the export. `C-c C-e b' Export as HTML file and immediately open it with a browser. `C-c C-e H' Export to a temporary buffer, do not create a file. `C-c C-e R' Export the active region to a temporary buffer. With a prefix argument, do not produce the file header and footer, but just the plain HTML section for the region. This is good for cut-and-paste operations. `C-c C-e v h' `C-c C-e v b' `C-c C-e v H' `C-c C-e v R' Export only the visible part of the document. `M-x org-export-region-as-html' Convert the region to HTML under the assumption that it was Org-mode syntax before. This is a global command that can be invoked in any buffer. `M-x org-replace-region-by-HTML' Replace the active region (assumed to be in Org-mode syntax) by HTML code. In the exported version, the first 3 outline levels will become headlines, defining a general document structure. Additional levels will be exported as itemized lists. If you want that transition to occur at a different level, specify it with a numeric prefix argument. For example, C-2 C-c C-e b creates two levels of headings and does the rest as items. ---------- Footnotes ---------- (1) This requires `transient-mark-mode' be turned on. (2) To select the current subtree, use `C-c @'.  File: org, Node: Quoting HTML tags, Next: Links in HTML export, Prev: HTML Export commands, Up: HTML export 12.5.2 Quoting HTML tags ------------------------ Plain `<' and `>' are always transformed to `<' and `>' in HTML export. If you want to include simple HTML tags which should be interpreted as such, mark them with `@' as in `@bold text@'. Note that this really works only for simple tags. For more extensive HTML that should be copied verbatim to the exported file use either #+HTML: Literal HTML code for export or #+BEGIN_HTML All lines between these markers are exported literally #+END_HTML  File: org, Node: Links in HTML export, Next: Tables in HTML export, Prev: Quoting HTML tags, Up: HTML export 12.5.3 Links in HTML export --------------------------- Internal links (*note Internal links::) will continue to work in HTML. This includes automatic links created by radio targets (*note Radio targets::). Links to external files will still work if the target file is on the same relative path as the published Org file. Links to other `.org' files will be translated into HTML links under the assumption that an HTML version also exists of the linked file, at the same relative path. `id:' links can then be used to jump to specific entries across files. For information related to linking files while publishing them to a publishing directory see *note Publishing links::. If you want to specify attributes for links, you can do so using a special `#+ATTR_HTML' line to define attributes that will be added to the `' or `' tags. Here is an example that sets `title' and `style' attributes for a link: #+ATTR_HTML: title="The Org-mode homepage" style="color:red;" [[http://orgmode.org]]  File: org, Node: Tables in HTML export, Next: Images in HTML export, Prev: Links in HTML export, Up: HTML export 12.5.4 Tables ------------- Org-mode tables are exported to HTML using the table tag defined in `org-export-html-table-tag'. The default setting makes tables without cell borders and frame. If you would like to change this for individual tables, place somthing like the following before the table: #+CAPTION: This is a table with lines around and between cells #+ATTR_HTML: border="2" rules="all" frame="all"  File: org, Node: Images in HTML export, Next: Text areas in HTML export, Prev: Tables in HTML export, Up: HTML export 12.5.5 Images in HTML export ---------------------------- HTML export can inline images given as links in the Org file, and it can make an image the clickable part of a link. By default(1), images are inlined if a link does not have a description. So `[[file:myimg.jpg]]' will be inlined, while `[[file:myimg.jpg][the image]]' will just produce a link `the image' that points to the image. If the description part itself is a `file:' link or a `http:' URL pointing to an image, this image will be inlined and activated so that clicking on the image will activate the link. For example, to include a thumbnail that will link to a high resolution version of the image, you could use: [[file:highres.jpg][file:thumb.jpg]] If you need to add attributes to an inlines image, use a `#+ATTR_HTML'. In the example below we specify the `alt' and `title' attributes to support text viewers and accessibility, and align it to the right. #+CAPTION: A black cat stalking a spider #+ATTR_HTML: alt="cat/spider image" title="Action!" align="right" [[./img/a.jpg]] and you could use `http' addresses just as well. ---------- Footnotes ---------- (1) But see the variable `org-export-html-inline-images'.  File: org, Node: Text areas in HTML export, Next: CSS support, Prev: Images in HTML export, Up: HTML export 12.5.6 Text areas in HTML export -------------------------------- An alternative way to publish literal code examples in HTML is to use text areas, where the example can even be edited before pasting it into an application. It is triggered by a `-t' switch at an `example' or `src' block. Using this switch disables any options for syntax and label highlighting, and line numbering, which may be present. You may also use `-h' and `-w' switches to specify the height and width of the text area, which default to the number of lines in the example, and 80, respectively. For example #+BEGIN_EXAMPLE -t -w 40 (defun org-xor (a b) "Exclusive or." (if a (not b) b)) #+END_EXAMPLE  File: org, Node: CSS support, Next: Javascript support, Prev: Text areas in HTML export, Up: HTML export 12.5.7 CSS support ------------------ You can also give style information for the exported file. The HTML exporter assigns the following special CSS classes(1) to appropriate parts of the document--your style specifications may change these, in addition to any of the standard classes like for headlines, tables, etc. p.author author information, including email p.date publishing date p.creator creator info, about org-mode version .title document title .todo TODO keywords, all not-done states .done the DONE keywords, all stated the count as done .WAITING each TODO keyword also uses a class named after itself .timestamp timestamp .timestamp-kwd keyword associated with a timestamp, like SCHEDULED .timestamp-wrapper span around keyword plus timestamp .tag tag in a headline ._HOME each tag uses itself as a class, "@" replaced by "_" .target target for links .linenr the line number in a code example .code-highlighted for highlighting referenced code lines div.outline-N div for outline level N (headline plus text)) div.outline-text-N extra div for text at outline level N .section-number-N section number in headlines, different for each level div.figure how to format an inlined image pre.src formatted source code pre.example normal example p.verse verse paragraph div.footnotes footnote section headline p.footnote footnote definition paragraph, containing a footnote .footref a footnote reference number (always a ) .footnum footnote number in footnote definition (always ) Each exported file contains a compact default style that defines these classes in a basic way(2). You may overwrite these settings, or add to them by using the variables `org-export-html-style' (for Org-wide settings) and `org-export-html-style-extra' (for more granular settings, like file-local settings). To set the latter variable individually for each file, you can use #+STYLE: For longer style definitions, you can use several such lines. You could also directly write a `' section in this way, without referring to an external file. ---------- Footnotes ---------- (1) If the classes on TODO keywords and tags lead to conflicts, use the variables `org-export-html-todo-kwd-class-prefix' and `org-export-html-tag-class-prefix' to make them unique. (2) This style is defined in the constant `org-export-html-style-default', which you should not modify. To turn inclusion of these defaults off, customize `org-export-html-style-include-default'  File: org, Node: Javascript support, Prev: CSS support, Up: HTML export 12.5.8 Javascript supported display of web pages ------------------------------------------------ Sebastian Rose has written a JavaScript program especially designed to enhance the web viewing experience of HTML files created with Org. This program allows you to view large files in two different ways. The first one is an _Info_-like mode where each section is displayed separately and navigation can be done with the `n' and `p' keys (and some other keys as well, press `?' for an overview of the available keys). The second view type is a _folding_ view much like Org provides inside Emacs. The script is available at `http://orgmode.org/org-info.js' and you can find the documentation for it at `http://orgmode.org/worg/code/org-info-js/'. We host the script at our site, but if you use it a lot, you might not want to be dependent on `orgmode.org' and prefer to install a local copy on your own web server. To use the script, you need to make sure that the `org-jsinfo.el' module gets loaded. It should be loaded by default, but you can try `M-x customize-variable org-modules ' to convince yourself that this is indeed the case. All it then takes to make use of the program is adding a single line to the Org file: #+INFOJS_OPT: view:info toc:nil If this line is found, the HTML header will automatically contain the code needed to invoke the script. Using the line above, you can set the following viewing options: path: The path to the script. The default is to grab the script from `http://orgmode.org/org-info.js', but you might want to have a local copy and use a path like `../scripts/org-info.js'. view: Initial view when website is first shown. Possible values are: info Info-like interface with one section per page. overview Folding interface, initially showing only top-level. content Folding interface, starting with all headlines visible. showall Folding interface, all headlines and text visible. sdepth: Maximum headline level that will still become an independent section for info and folding modes. The default is taken from `org-export-headline-levels' (= the `H' switch in `#+OPTIONS'). If this is smaller than in `org-export-headline-levels', each info/folding section can still contain child headlines. toc: Should the table of content _initially_ be visible? Even when `nil', you can always get to the "toc" with `i'. tdepth: The depth of the table of contents. The defaults are taken from the variables `org-export-headline-levels' and `org-export-with-toc'. ftoc: Does the css of the page specify a fixed position for the "toc"? If yes, the toc will never be displayed as a section. ltoc: Should there be short contents (children) in each section? Make this `above' if the section should be above initial text. mouse: Headings are highlighted when the mouse is over them. Should be `underline' (default) or a background color like `#cccccc'. buttons: Should view-toggle buttons be everywhere? When `nil' (the default), only one such button will be present. You can choose default values for these options by customizing the variable `org-infojs-options'. If you always want to apply the script to your pages, configure the variable `org-export-html-use-infojs'.  File: org, Node: LaTeX and PDF export, Next: DocBook export, Prev: HTML export, Up: Exporting 12.6 LaTeX and PDF export ========================= Org mode contains a LaTeX exporter written by Bastien Guerry. With further processing, this backend is also used to produce PDF output. Since the LaTeX output uses `hyperref' to implement links and cross references, the PDF output file will be fully linked. * Menu: * LaTeX/PDF export commands:: Which key invokes which commands * Quoting LaTeX code:: Incorporating literal LaTeX code * Sectioning structure:: Changing sectioning in LaTeX output * Tables in LaTeX export:: Options for exporting tables to LaTeX * Images in LaTeX export:: How to insert figures into LaTeX output  File: org, Node: LaTeX/PDF export commands, Next: Quoting LaTeX code, Prev: LaTeX and PDF export, Up: LaTeX and PDF export 12.6.1 LaTeX export commands ---------------------------- `C-c C-e l' Export as LaTeX file `myfile.tex'. For an Org file `myfile.org', the ASCII file will be `myfile.tex'. The file will be overwritten without warning. If there is an active region(1), only the region will be exported. If the selected region is a single tree(2), the tree head will become the document title. If the tree head entry has or inherits an `EXPORT_FILE_NAME' property, that name will be used for the export. `C-c C-e L' Export to a temporary buffer, do not create a file. `C-c C-e v l' `C-c C-e v L' Export only the visible part of the document. `M-x org-export-region-as-latex' Convert the region to LaTeX under the assumption that it was Org mode syntax before. This is a global command that can be invoked in any buffer. `M-x org-replace-region-by-latex' Replace the active region (assumed to be in Org mode syntax) by LaTeX code. `C-c C-e p' Export as LaTeX and then process to PDF. `C-c C-e d' Export as LaTeX and then process to PDF, then open the resulting PDF file. In the exported version, the first 3 outline levels will become headlines, defining a general document structure. Additional levels will be exported as description lists. The exporter can ignore them or convert them to a custom string depending on `org-latex-low-levels'. If you want that transition to occur at a different level, specify it with a numeric prefix argument. For example, C-2 C-c C-e l creates two levels of headings and does the rest as items. ---------- Footnotes ---------- (1) This requires `transient-mark-mode' be turned on. (2) To select the current subtree, use `C-c @'.  File: org, Node: Quoting LaTeX code, Next: Sectioning structure, Prev: LaTeX/PDF export commands, Up: LaTeX and PDF export 12.6.2 Quoting LaTeX code ------------------------- Embedded LaTeX as described in *note Embedded LaTeX::, will be correctly inserted into the LaTeX file. This includes simple macros like `\ref{LABEL}' to create a cross reference to a figure. Furthermore, you can add special code that should only be present in LaTeX export with the following constructs: #+LaTeX: Literal LaTeX code for export or #+BEGIN_LaTeX All lines between these markers are exported literally #+END_LaTeX  File: org, Node: Sectioning structure, Next: Tables in LaTeX export, Prev: Quoting LaTeX code, Up: LaTeX and PDF export 12.6.3 Sectioning structure --------------------------- By default, the LaTeX output uses the class `article'. You can change this globally by setting a different value for `org-export-latex-default-class' or locally by adding an option like `#+LaTeX_CLASS: myclass' in your file, or with a `:LaTeX_CLASS:' property that applies when exporting a region containing only this (sub)tree. The class should be listed in `org-export-latex-classes', where you can also define the sectioning structure for each class, as well as defining additional classes. You can also use `#+LATEX_HEADER: \usepackage{xyz}' to add lines to the header.  File: org, Node: Tables in LaTeX export, Next: Images in LaTeX export, Prev: Sectioning structure, Up: LaTeX and PDF export 12.6.4 Tables in LaTeX export ----------------------------- For LaTeX export of a table, you can specify a label and a caption (*note Images and tables::). You can also use the `ATTR_LaTeX' line to request a longtable environment for the table, so that it may span several pages. Finally, you can set the alignment string: #+CAPTION: A long table #+LABEL: tbl:long #+ATTR_LaTeX: longtable align=l|lp{3cm}r|l | ..... | ..... | | ..... | ..... |  File: org, Node: Images in LaTeX export, Prev: Tables in LaTeX export, Up: LaTeX and PDF export 12.6.5 Images in LaTeX export ----------------------------- Images that are linked to without a description part in the link, like `[[file:img.jpg]]' or `[[./img.jpg]]' will be inserted into the PDF output file resulting from LaTeX processing. Org will use an `\includegraphics' macro to insert the image. If you have specified a caption and/or a label as described in *note Images and tables::, the figure will be wrapped into a `figure' environment and thus become a floating element. You can use an `#+ATTR_LaTeX:' line to specify the various options that can be used in the optional argument of the `\includegraphics' macro. To modify the placement option of the `figure' environment, add something like `placement=[h!]' to the Attributes. If you'd like to let text flow around the image, add the word `wrap' to the `#+ATTR_LaTeX:' line, which will make the figure occupy the left half of the page. To fine-tune, the `placement' field will be the set of additional arguments needed by the `wrapfigure' environment. Note that if you change the size of the image, you need to use compatible settings for `\includegraphics' and `wrapfigure'. #+CAPTION: The black-body emission of the disk around HR 4049 #+LABEL: fig:SED-HR4049 #+ATTR_LaTeX: width=5cm,angle=90 [[./img/sed-hr4049.pdf]] #+ATTR_LaTeX: width=0.38\textwidth wrap placement={r}{0.4\textwidth} [[./img/hst.png]] If you need references to a label created in this way, write `\ref{fig:SED-HR4049}' just like in LaTeX.  File: org, Node: DocBook export, Next: Freemind export, Prev: LaTeX and PDF export, Up: Exporting 12.7 DocBook export =================== Org contains a DocBook exporter written by Baoqiu Cui. Once an Org file is exported to DocBook format, it can be further processed to produce other formats, including PDF, HTML, man pages, etc., using many available DocBook tools and stylesheets. Currently DocBook exporter only supports DocBook V5.0. * Menu: * DocBook export commands:: How to invoke DocBook export * Quoting DocBook code:: Incorporating DocBook code in Org files * Recursive sections:: Recursive sections in DocBook * Tables in DocBook export:: Tables are exported as HTML tables * Images in DocBook export:: How to insert figures into DocBook output * Special characters:: How to handle special characters  File: org, Node: DocBook export commands, Next: Quoting DocBook code, Prev: DocBook export, Up: DocBook export 12.7.1 DocBook export commands ------------------------------ `C-c C-e D' Export as DocBook file. For an Org file, `myfile.org', the DocBook XML file will be `myfile.xml'. The file will be overwritten without warning. If there is an active region(1), only the region will be exported. If the selected region is a single tree(2), the tree head will become the document title. If the tree head entry has, or inherits, an `EXPORT_FILE_NAME' property, that name will be used for the export. `C-c C-e V' Export as DocBook file, process to PDF, then open the resulting PDF file. Note that, in order to produce PDF output based on exported DocBook file, you need to have XSLT processor and XSL-FO processor software installed on your system. Check variables `org-export-docbook-xslt-proc-command' and `org-export-docbook-xsl-fo-proc-command'. `C-c C-e v D' Export only the visible part of the document. ---------- Footnotes ---------- (1) This requires `transient-mark-mode' to be turned on (2) To select the current subtree, use `C-c @'.  File: org, Node: Quoting DocBook code, Next: Recursive sections, Prev: DocBook export commands, Up: DocBook export 12.7.2 Quoting DocBook code --------------------------- You can quote DocBook code in Org files and copy it verbatim into exported DocBook file with the following constructs: #+DOCBOOK: Literal DocBook code for export or #+BEGIN_DOCBOOK All lines between these markers are exported by DocBook exporter literally. #+END_DOCBOOK For example, you can use the following lines to include a DocBook warning admonition. As to what this warning says, you should pay attention to the document context when quoting DocBook code in Org files. You may make exported DocBook XML files invalid by not quoting DocBook code correctly. #+BEGIN_DOCBOOK You should know what you are doing when quoting DocBook XML code in your Org file. Invalid DocBook XML file may be generated by DocBook exporter if you are not careful! #+END_DOCBOOK  File: org, Node: Recursive sections, Next: Tables in DocBook export, Prev: Quoting DocBook code, Up: DocBook export 12.7.3 Recursive sections ------------------------- DocBook exporter exports Org files as articles using the `article' element in DocBook. Recursive sections, i.e. `section' elements, are used in exported articles. Top level headlines in Org files are exported as top level sections, and lower level headlines are exported as nested sections. The entire structure of Org files will be exported completely, no matter how many nested levels of headlines there are. Using recursive sections makes it easy to port and reuse exported DocBook code in other DocBook document types like `book' or `set'.  File: org, Node: Tables in DocBook export, Next: Images in DocBook export, Prev: Recursive sections, Up: DocBook export 12.7.4 Tables in DocBook export ------------------------------- Tables in Org files are exported as HTML tables, which have been supported since DocBook V4.3. If a table does not have a caption, an informal table is generated using the `informaltable' element; otherwise, a formal table will be generated using the `table' element.  File: org, Node: Images in DocBook export, Next: Special characters, Prev: Tables in DocBook export, Up: DocBook export 12.7.5 Images in DocBook export ------------------------------- Images that are linked to without a description part in the link, like `[[file:img.jpg]]' or `[[./img.jpg]]', will be exported to DocBook using `mediaobject' elements. Each `mediaobject' element contains an `imageobject' that wraps an `imagedata' element. If you have specified a caption for an image as described in *note Images and tables::, a `caption' element will be added in `mediaobject'. If a label is also specified, it will be exported as an `xml:id' attribute of the `mediaobject' element. Image attributes supported by the `imagedata' element, like `align' or `width', can be specified in two ways: you can either customize variable `org-export-docbook-default-image-attributes' or use the `#+ATTR_DOCBOOK:' line. Attributes specified in variable `org-export-docbook-default-image-attributes' are applied to all inline images in the Org file to be exported (unless they are overwritten by image attributes specified in `#+ATTR_DOCBOOK:' lines). The `#+ATTR_DOCBOOK:' line can be used to specify additional image attributes or overwrite default image attributes for individual images. If the same attribute appears in both the `#+ATTR_DOCBOOK:' line and variable `org-export-docbook-default-image-attributes', the former overwrites the latter. Here is an example about how image attributes can be set: #+CAPTION: The logo of Org mode #+LABEL: unicorn-svg #+ATTR_DOCBOOK: scalefit="1" width="100%" depth="100%" [[./img/org-mode-unicorn.svg]] By default, DocBook exporter recognizes the following image file types: `jpeg', `jpg', `png', `gif', and `svg'. You can customize variable `org-export-docbook-inline-image-extensions' to add more types to this list as long as DocBook supports them.  File: org, Node: Special characters, Prev: Images in DocBook export, Up: DocBook export 12.7.6 Special characters in DocBook export ------------------------------------------- Special characters that are written in TeX-like syntax, such as `\alpha', `\Gamma', and `\Zeta', are supported by DocBook exporter. These characters are rewritten to XML entities, like `α', `Γ', and `Ζ', based on the list saved in variable `org-html-entities'. As long as the generated DocBook file includes the corresponding entities, these special characters are recognized. You can customize variable `org-export-docbook-doctype' to include the entities you need. For example, you can set variable `org-export-docbook-doctype' to the following value to recognize all special characters included in XHTML entities: " %xhtml1-symbol; ]> "  File: org, Node: Freemind export, Next: XOXO export, Prev: DocBook export, Up: Exporting 12.8 Freemind export ==================== The freemind exporter was written by Lennart Borgman. `C-c C-e m' Export as Freemind mind map `myfile.mm'.  File: org, Node: XOXO export, Next: iCalendar export, Prev: Freemind export, Up: Exporting 12.9 XOXO export ================ Org mode contains an exporter that produces XOXO-style output. Currently, this exporter only handles the general outline structure and does not interpret any additional Org-mode features. `C-c C-e x' Export as XOXO file `myfile.html'. `C-c C-e v x' Export only the visible part of the document.  File: org, Node: iCalendar export, Prev: XOXO export, Up: Exporting 12.10 iCalendar export ====================== Some people use Org mode for keeping track of projects, but still prefer a standard calendar application for anniversaries and appointments. In this case it can be useful to show deadlines and other time-stamped items in Org files in the calendar application. Org mode can export calendar information in the standard iCalendar format. If you also want to have TODO entries included in the export, configure the variable `org-icalendar-include-todo'. Plain timestamps are exported as VEVENT, and TODO items as VTODO. It will also create events from deadlines that are in non-TODO items. Deadlines and scheduling dates in TODO items will be used to set the start and due dates for the TODO entry(1). As categories, it will use the tags locally defined in the heading, and the file/tree category(2). The iCalendar standard requires each entry to have a globally unique identifier (UID). Org creates these identifiers during export. If you set the variable `org-icalendar-store-UID', the UID will be stored in the `:ID:' property of the entry and re-used next time you report this entry. Since a single entry can give rise to multiple iCalendar entries (as a timestamp, a deadline, a scheduled item, and as a TODO item), Org adds prefixes to the UID, depending on what triggered the inclusion of the entry. In this way the UID remains unique, but a synchronization program can still figure out from which entry all the different instances originate. `C-c C-e i' Create iCalendar entries for the current file and store them in the same directory, using a file extension `.ics'. `C-c C-e I' Like `C-c C-e i', but do this for all files in `org-agenda-files'. For each of these files, a separate iCalendar file will be written. `C-c C-e c' Create a single large iCalendar file from all files in `org-agenda-files' and write it to the file given by `org-combined-agenda-icalendar-file'. The export will honor SUMMARY, DESCRIPTION and LOCATION(3) properties if the selected entries have them. If not, the summary will be derived from the headline, and the description from the body (limited to `org-icalendar-include-body' characters). How this calendar is best read and updated, depends on the application you are using. The FAQ covers this issue. ---------- Footnotes ---------- (1) See the variables `org-icalendar-use-deadline' and `org-icalendar-use-scheduled'. (2) To add inherited tags or the TODO state, configure the variable `org-icalendar-categories'. (3) The LOCATION property can be inherited from higher in the hierarchy if you configure `org-use-property-inheritance' accordingly.  File: org, Node: Publishing, Next: Miscellaneous, Prev: Exporting, Up: Top 13 Publishing ************* Org includes a publishing management system that allows you to configure automatic HTML conversion of _projects_ composed of interlinked org files. You can also configure Org to automatically upload your exported HTML pages and related attachments, such as images and source code files, to a web server. You can also use Org to convert files into PDF, or even combine HTML and PDF conversion so that files are available in both formats on the server. Publishing has been contributed to Org by David O'Toole. * Menu: * Configuration:: Defining projects * Uploading files:: How to get files up on the server * Sample configuration:: Example projects * Triggering publication:: Publication commands  File: org, Node: Configuration, Next: Uploading files, Prev: Publishing, Up: Publishing 13.1 Configuration ================== Publishing needs significant configuration to specify files, destination and many other properties of a project. * Menu: * Project alist:: The central configuration variable * Sources and destinations:: From here to there * Selecting files:: What files are part of the project? * Publishing action:: Setting the function doing the publishing * Publishing options:: Tweaking HTML export * Publishing links:: Which links keep working after publishing? * Project page index:: Publishing a list of project files  File: org, Node: Project alist, Next: Sources and destinations, Prev: Configuration, Up: Configuration 13.1.1 The variable `org-publish-project-alist' ----------------------------------------------- Publishing is configured almost entirely through setting the value of one variable, called `org-publish-project-alist'. Each element of the list configures one project, and may be in one of the two following forms: ("project-name" :property value :property value ...) or ("project-name" :components ("project-name" "project-name" ...)) In both cases, projects are configured by specifying property values. A project defines the set of files that will be published, as well as the publishing configuration to use when publishing those files. When a project takes the second form listed above, the individual members of the `:components' property are taken to be sub-projects, which group together files requiring different publishing options. When you publish such a "meta-project", all the components will also be published, in the sequence given.  File: org, Node: Sources and destinations, Next: Selecting files, Prev: Project alist, Up: Configuration 13.1.2 Sources and destinations for files ----------------------------------------- Most properties are optional, but some should always be set. In particular, Org needs to know where to look for source files, and where to put published files. `:base-directory' Directory containing publishing source files `:publishing-directory'Directory where output files will be published. You can directly publish to a webserver using a file name syntax appropriate for the Emacs `tramp' package. Or you can publish to a local directory and use external tools to upload your website (*note Uploading files::). `:preparation-function'Function called before starting the publishing process, for example, to run `make' for updating files to be published. `:completion-function' Function called after finishing the publishing process, for example, to change permissions of the resulting files.  File: org, Node: Selecting files, Next: Publishing action, Prev: Sources and destinations, Up: Configuration 13.1.3 Selecting files ---------------------- By default, all files with extension `.org' in the base directory are considered part of the project. This can be modified by setting the properties `:base-extension' Extension (without the dot!) of source files. This actually is a regular expression. Set this to the symbol `any' if you want to get all files in `:base-directory', even without extension. `:exclude' Regular expression to match file names that should not be published, even though they have been selected on the basis of their extension. `:include' List of files to be included regardless of `:base-extension' and `:exclude'.  File: org, Node: Publishing action, Next: Publishing options, Prev: Selecting files, Up: Configuration 13.1.4 Publishing action ------------------------ Publishing means that a file is copied to the destination directory and possibly transformed in the process. The default transformation is to export Org files as HTML files, and this is done by the function `org-publish-org-to-html' which calls the HTML exporter (*note HTML export::). But you also can publish your content as PDF files using `org-publish-org-to-pdf'. If you want to publish the Org file itself, but with archived, commented, and tag-excluded trees removed, use `org-publish-org-to-org' and set the parameters `:plain-source' and/or `:htmlized-source'. This will produce `file.org' and `file.org.html' in the publishing directory(1). Other files like images only need to be copied to the publishing destination, for this you may use `org-publish-attachment'. For non-Org files, you always need to specify the publishing function: `:publishing-function' Function executing the publication of a file. This may also be a list of functions, which will all be called in turn. `:plain-source' Non-nil means, publish plain source. `:htmlized-source' Non-nil means, publish htmlized source. The function must accept two arguments: a property list containing at least a `:publishing-directory' property, and the name of the file to be published. It should take the specified file, make the necessary transformation (if any) and place the result into the destination folder. ---------- Footnotes ---------- (1) `file-source.org' and `file-source.org.html' if source and publishing directories are equal. Note that with this kind of setup, you need to add `:exclude "-source\\.org"' to the project definition in `org-publish-project-alist' to avoid that the published source files will be considered as new org files the next time the project is published.  File: org, Node: Publishing options, Next: Publishing links, Prev: Publishing action, Up: Configuration 13.1.5 Options for the HTML/LaTeX exporters ------------------------------------------- The property list can be used to set many export options for the HTML and LaTeX exporters. In most cases, these properties correspond to user variables in Org. The table below lists these properties along with the variable they belong to. See the documentation string for the respective variable for details. `:link-up' `org-export-html-link-up' `:link-home' `org-export-html-link-home' `:language' `org-export-default-language' `:customtime' `org-display-custom-times' `:headline-levels' `org-export-headline-levels' `:section-numbers' `org-export-with-section-numbers' `:section-number-format'`org-export-section-number-format' `:table-of-contents' `org-export-with-toc' `:preserve-breaks' `org-export-preserve-breaks' `:archived-trees' `org-export-with-archived-trees' `:emphasize' `org-export-with-emphasize' `:sub-superscript' `org-export-with-sub-superscripts' `:special-strings' `org-export-with-special-strings' `:footnotes' `org-export-with-footnotes' `:drawers' `org-export-with-drawers' `:tags' `org-export-with-tags' `:todo-keywords' `org-export-with-todo-keywords' `:priority' `org-export-with-priority' `:TeX-macros' `org-export-with-TeX-macros' `:LaTeX-fragments' `org-export-with-LaTeX-fragments' `:latex-listings' `org-export-latex-listings' `:skip-before-1st-heading'`org-export-skip-text-before-1st-heading' `:fixed-width' `org-export-with-fixed-width' `:timestamps' `org-export-with-timestamps' `:author-info' `org-export-author-info' `:creator-info' `org-export-creator-info' `:tables' `org-export-with-tables' `:table-auto-headline' `org-export-highlight-first-table-line' `:style-include-default'`org-export-html-style-include-default' `:style' `org-export-html-style' `:style-extra' `org-export-html-style-extra' `:convert-org-links' `org-export-html-link-org-files-as-html' `:inline-images' `org-export-html-inline-images' `:html-extension' `org-export-html-extension' `:xml-declaration' `org-export-html-xml-declaration' `:html-table-tag' `org-export-html-table-tag' `:expand-quoted-html' `org-export-html-expand' `:timestamp' `org-export-html-with-timestamp' `:publishing-directory' `org-export-publishing-directory' `:preamble' `org-export-html-preamble' `:postamble' `org-export-html-postamble' `:auto-preamble' `org-export-html-auto-preamble' `:auto-postamble' `org-export-html-auto-postamble' `:author' `user-full-name' `:email' `user-mail-address' : `addr;addr;..' `:select-tags' `org-export-select-tags' `:exclude-tags' `org-export-exclude-tags' `:latex-image-options' `org-export-latex-image-default-option' Most of the `org-export-with-*' variables have the same effect in both HTML and LaTeX exporters, except for `:TeX-macros' and `:LaTeX-fragments', respectively `nil' and `t' in the LaTeX export. When a property is given a value in `org-publish-project-alist', its setting overrides the value of the corresponding user variable (if any) during publishing. Options set within a file (*note Export options::), however, override everything.  File: org, Node: Publishing links, Next: Project page index, Prev: Publishing options, Up: Configuration 13.1.6 Links between published files ------------------------------------ To create a link from one Org file to another, you would use something like `[[file:foo.org][The foo]]' or simply `file:foo.org.' (*note Hyperlinks::). When published, this link becomes a link to `foo.html'. In this way, you can interlink the pages of your "org web" project and the links will work as expected when you publish them to HTML. If you also publish the Org source file and want to link to that, use an `http:' link instead of a `file:' link, because `file:' links are converted to link to the corresponding `html' file. You may also link to related files, such as images. Provided you are careful with relative file names, and provided you have also configured Org to upload the related files, these links will work too. See *note Complex example::, for an example of this usage. Sometimes an Org file to be published may contain links that are only valid in your production environment, but not in the publishing location. In this case, use the property `:link-validation-function' Function to validate links to define a function for checking link validity. This function must accept two arguments, the file name and a directory relative to which the file name is interpreted in the production environment. If this function returns `nil', then the HTML generator will only insert a description into the HTML file, but no link. One option for this function is `org-publish-validate-link' which checks if the given file is part of any project in `org-publish-project-alist'.  File: org, Node: Project page index, Prev: Publishing links, Up: Configuration 13.1.7 Project page index ------------------------- The following properties may be used to control publishing of an index of files or a summary page for a given project. `:auto-index' When non-nil, publish an index during `org-publish-current-project' or `org-publish-all'. `:index-filename' Filename for output of index. Defaults to `sitemap.org' (which becomes `sitemap.html'). `:index-title' Title of index page. Defaults to name of file. `:index-function' Plug-in function to use for generation of index. Defaults to `org-publish-org-index', which generates a plain list of links to all files in the project.  File: org, Node: Uploading files, Next: Sample configuration, Prev: Configuration, Up: Publishing 13.2 Uploading files ==================== For those people already utilizing third party sync tools such as `rsync' or `unison', it might be preferable not to use the built in remote publishing facilities of Org mode which rely heavily on Tramp. Tramp, while very useful and powerful, tends not to be so efficient for multiple file transfer and has been known to cause problems under heavy usage. Specialized synchronization utilities offer several advantages. In addition to timestamp comparison, they also do content and permissions/attribute checks. For this reason you might prefer to publish your web to a local directory (possibly even in place with your Org files) and then use `unison' or `rsync' to do the synchronization with the remote host. Since Unison (for example) can be configured as to which files to transfer to a certain remote destination, it can greatly simplify the project publishing definition. Simply keep all files in the correct location, process your Org files with `org-publish' and let the synchronization tool do the rest. You do not need, in this scenario, to include attachments such as `jpg', `css' or `gif' files in the project definition since the 3rd party tool syncs them. Publishing to a local directory is also much faster than to a remote one, so that you can afford more easily to republish entire projects. If you set `org-publish-use-timestamps-flag' to `nil', you gain the main benefit of re-including any changed external files such as source example files you might include with `#+INCLUDE'. The timestamp mechanism in Org is not smart enough to detect if included files have been modified.  File: org, Node: Sample configuration, Next: Triggering publication, Prev: Uploading files, Up: Publishing 13.3 Sample configuration ========================= Below we provide two example configurations. The first one is a simple project publishing only a set of Org files. The second example is more complex, with a multi-component project. * Menu: * Simple example:: One-component publishing * Complex example:: A multi-component publishing example  File: org, Node: Simple example, Next: Complex example, Prev: Sample configuration, Up: Sample configuration 13.3.1 Example: simple publishing configuration ----------------------------------------------- This example publishes a set of Org files to the `public_html' directory on the local machine. (setq org-publish-project-alist '(("org" :base-directory "~/org/" :publishing-directory "~/public_html" :section-numbers nil :table-of-contents nil :style "")))  File: org, Node: Complex example, Prev: Simple example, Up: Sample configuration 13.3.2 Example: complex publishing configuration ------------------------------------------------ This more complicated example publishes an entire website, including Org files converted to HTML, image files, Emacs Lisp source code, and style sheets. The publishing directory is remote and private files are excluded. To ensure that links are preserved, care should be taken to replicate your directory structure on the web server, and to use relative file paths. For example, if your Org files are kept in `~/org' and your publishable images in `~/images', you'd link to an image with file:../images/myimage.png On the web server, the relative path to the image should be the same. You can accomplish this by setting up an "images" folder in the right place on the web server, and publishing images to it. (setq org-publish-project-alist '(("orgfiles" :base-directory "~/org/" :base-extension "org" :publishing-directory "/ssh:user@host:~/html/notebook/" :publishing-function org-publish-org-to-html :exclude "PrivatePage.org" ;; regexp :headline-levels 3 :section-numbers nil :table-of-contents nil :style "" :auto-preamble t :auto-postamble nil) ("images" :base-directory "~/images/" :base-extension "jpg\\|gif\\|png" :publishing-directory "/ssh:user@host:~/html/images/" :publishing-function org-publish-attachment) ("other" :base-directory "~/other/" :base-extension "css\\|el" :publishing-directory "/ssh:user@host:~/html/other/" :publishing-function org-publish-attachment) ("website" :components ("orgfiles" "images" "other"))))  File: org, Node: Triggering publication, Prev: Sample configuration, Up: Publishing 13.4 Triggering publication =========================== Once properly configured, Org can publish with the following commands: `C-c C-e C' Prompt for a specific project and publish all files that belong to it. `C-c C-e P' Publish the project containing the current file. `C-c C-e F' Publish only the current file. `C-c C-e E' Publish every project. Org uses timestamps to track when a file has changed. The above functions normally only publish changed files. You can override this and force publishing of all files by giving a prefix argument to any of the commands above, or by customizing the variable `org-publish-use-timestamps-flag'. This may be necessary in particular if files include other files via `#+SETUPFILE:' or `#+INCLUDE:'.  File: org, Node: Miscellaneous, Next: Hacking, Prev: Publishing, Up: Top 14 Miscellaneous **************** * Menu: * Completion:: M-TAB knows what you need * Speed keys:: Electic commands at the beginning of a headline * Customization:: Adapting Org to your taste * In-buffer settings:: Overview of the #+KEYWORDS * The very busy C-c C-c key:: When in doubt, press C-c C-c * Clean view:: Getting rid of leading stars in the outline * TTY keys:: Using Org on a tty * Interaction:: Other Emacs packages  File: org, Node: Completion, Next: Speed keys, Prev: Miscellaneous, Up: Miscellaneous 14.1 Completion =============== Emacs would not be Emacs without completion, and Org-mode uses it whenever it makes sense. If you prefer an iswitchb- or ido-like interface for some of the completion prompts, you can specify your preference by setting at most one of the variables `org-completion-use-iswitchb' `org-completion-use-ido'. Org supports in-buffer completion. This type of completion does not make use of the minibuffer. You simply type a few letters into the buffer and use the key to complete text right there. `M-' Complete word at point * At the beginning of a headline, complete TODO keywords. * After `\', complete TeX symbols supported by the exporter. * After `*', complete headlines in the current buffer so that they can be used in search links like `[[*find this headline]]'. * After `:' in a headline, complete tags. The list of tags is taken from the variable `org-tag-alist' (possibly set through the `#+TAGS' in-buffer option, *note Setting tags::), or it is created dynamically from all tags used in the current buffer. * After `:' and not in a headline, complete property keys. The list of keys is constructed dynamically from all keys used in the current buffer. * After `[', complete link abbreviations (*note Link abbreviations::). * After `#+', complete the special keywords like `TYP_TODO' or `OPTIONS' which set file-specific options for Org mode. When the option keyword is already complete, pressing `M-' again will insert example settings for this keyword. * In the line after `#+STARTUP: ', complete startup keywords, i.e. valid keys for this line. * Elsewhere, complete dictionary words using Ispell.  File: org, Node: Speed keys, Next: Customization, Prev: Completion, Up: Miscellaneous 14.2 Speed keys =============== Single keys can be made to execute commands when the cursor is at the beginning of a headline, i.e. before the first star. Configure the variable `org-use-speed-commands' to activate this feature. There is a pre-defined list of commands, and you can add more such commands using the variable `org-speed-commands-user'. Speed keys do not only speed up navigation and other commands, but they also provide an alternative way to execute commands bound to keys that are not or not easily available on a tty, or on a small mobile device with a limited keyboard. To see which commands are available, activate the feature and press `?' with the cursor at the beginning of a headline.  File: org, Node: Customization, Next: In-buffer settings, Prev: Speed keys, Up: Miscellaneous 14.3 Customization ================== There are more than 180 variables that can be used to customize Org. For the sake of compactness of the manual, I am not describing the variables here. A structured overview of customization variables is available with `M-x org-customize'. Or select `Browse Org Group' from the `Org->Customization' menu. Many settings can also be activated on a per-file basis, by putting special lines into the buffer (*note In-buffer settings::).  File: org, Node: In-buffer settings, Next: The very busy C-c C-c key, Prev: Customization, Up: Miscellaneous 14.4 Summary of in-buffer settings ================================== Org mode uses special lines in the buffer to define settings on a per-file basis. These lines start with a `#+' followed by a keyword, a colon, and then individual words defining a setting. Several setting words can be in the same line, but you can also have multiple lines for the keyword. While these settings are described throughout the manual, here is a summary. After changing any of those lines in the buffer, press `C-c C-c' with the cursor still in the line to activate the changes immediately. Otherwise they become effective only when the file is visited again in a new Emacs session. `#+ARCHIVE: %s_done::' This line sets the archive location for the agenda file. It applies for all subsequent lines until the next `#+ARCHIVE' line, or the end of the file. The first such line also applies to any entries before it. The corresponding variable is `org-archive-location'. `#+CATEGORY:' This line sets the category for the agenda file. The category applies for all subsequent lines until the next `#+CATEGORY' line, or the end of the file. The first such line also applies to any entries before it. `#+COLUMNS: %25ITEM .....' Set the default format for columns view. This format applies when columns view is invoked in locations where no `COLUMNS' property applies. `#+CONSTANTS: name1=value1 ...' Set file-local values for constants to be used in table formulas. This line set the local variable `org-table-formula-constants-local'. The global version of this variable is `org-table-formula-constants'. `#+FILETAGS: :tag1:tag2:tag3:' Set tags that can be inherited by any entry in the file, including the top-level entries. `#+DRAWERS: NAME1 .....' Set the file-local set of drawers. The corresponding global variable is `org-drawers'. `#+LINK: linkword replace' These lines (several are allowed) specify link abbreviations. *Note Link abbreviations::. The corresponding variable is `org-link-abbrev-alist'. `#+PRIORITIES: highest lowest default' This line sets the limits and the default for the priorities. All three must be either letters A-Z or numbers 0-9. The highest priority must have a lower ASCII number that the lowest priority. `#+PROPERTY: Property_Name Value' This line sets a default inheritance value for entries in the current buffer, most useful for specifying the allowed values of a property. `#+SETUPFILE: file' This line defines a file that holds more in-buffer setup. Normally this is entirely ignored. Only when the buffer is parsed for option-setting lines (i.e. when starting Org mode for a file, when pressing `C-c C-c' in a settings line, or when exporting), then the contents of this file are parsed as if they had been included in the buffer. In particular, the file can be any other Org mode file with internal setup. You can visit the file the cursor is in the line with `C-c ''. `#+STARTUP:' This line sets options to be used at startup of Org mode, when an Org file is being visited. The first set of options deals with the initial visibility of the outline tree. The corresponding variable for global default settings is `org-startup-folded', with a default value `t', which means `overview'. overview top-level headlines only content all headlines showall no folding of any entries showeverything show even drawer contents Dynamic virtual indentation is controlled by the variable `org-startup-indented'(1) indent start with `org-indent-mode' turned on noindent start with `org-indent-mode' turned off Then there are options for aligning tables upon visiting a file. This is useful in files containing narrowed table columns. The corresponding variable is `org-startup-align-all-tables', with a default value `nil'. align align all tables noalign don't align tables on startup Logging the closing and reopening of TODO items and clock intervals can be configured using these options (see variables `org-log-done', `org-log-note-clock-out' and `org-log-repeat') logdone record a timestamp when an item is marked DONE lognotedone record timestamp and a note when DONE nologdone don't record when items are marked DONE logrepeat record a time when reinstating a repeating item lognoterepeat record a note when reinstating a repeating item nologrepeat do not record when reinstating repeating item lognoteclock-out record a note when clocking out nolognoteclock-out don't record a note when clocking out logreschedule record a timestamp when scheduling time changes lognotereschedule record a note when scheduling time changes nologreschedule do not record when a scheduling date changes logredeadline record a timestamp when deadline changes lognoteredeadline record a note when deadline changes nologredeadline do not record when a deadline date changes Here are the options for hiding leading stars in outline headings, and for indenting outlines. The corresponding variables are `org-hide-leading-stars' and `org-odd-levels-only', both with a default setting `nil' (meaning `showstars' and `oddeven'). hidestars make all but one of the stars starting a headline invisible. showstars show all stars starting a headline indent virtual indentation according to outline level noindent no virtual indentation according to outline level odd allow only odd outline levels (1,3,...) oddeven allow all outline levels To turn on custom format overlays over timestamps (variables `org-put-time-stamp-overlays' and `org-time-stamp-overlay-formats'), use customtime overlay custom time format The following options influence the table spreadsheet (variable `constants-unit-system'). constcgs `constants.el' should use the c-g-s unit system constSI `constants.el' should use the SI unit system To influence footnote settings, use the following keywords. The corresponding variables are `org-footnote-define-inline', `org-footnote-auto-label', and `org-footnote-auto-adjust'. fninline define footnotes inline fnnoinline define footnotes in separate section fnlocal define footnotes near first reference, but not inline fnprompt prompt for footnote labels fnauto create [fn:1]-like labels automatically (default) fnconfirm offer automatic label for editing or confirmation fnplain create [1]-like labels automatically fnadjust automatically renumber and sort footnotes nofnadjust do not renumber and sort automatically To hide blocks on startup, use these keywords. The corresponding variable is `org-hide-block-startup'. hideblocks Hide all begin/end blocks on startup nohideblocks Do not hide blocks on startup `#+TAGS: TAG1(c1) TAG2(c2)' These lines (several such lines are allowed) specify the valid tags in this file, and (potentially) the corresponding _fast tag selection_ keys. The corresponding variable is `org-tag-alist'. `#+TBLFM:' This line contains the formulas for the table directly above the line. `#+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+DATE:,' `#+OPTIONS:, #+BIND:' `#+DESCRIPTION:, #+KEYWORDS:' `#+LATEX_HEADER:, #+STYLE:, #+LINK_UP:, #+LINK_HOME:,' `#+EXPORT_SELECT_TAGS:, #+EXPORT_EXCLUDE_TAGS:' These lines provide settings for exporting files. For more details see *note Export options::. `#+TODO: #+SEQ_TODO: #+TYP_TODO:' These lines set the TODO keywords and their interpretation in the current file. The corresponding variable is `org-todo-keywords'. ---------- Footnotes ---------- (1) Emacs 23 and Org-mode 6.29 are required  File: org, Node: The very busy C-c C-c key, Next: Clean view, Prev: In-buffer settings, Up: Miscellaneous 14.5 The very busy C-c C-c key ============================== The key `C-c C-c' has many purposes in Org, which are all mentioned scattered throughout this manual. One specific function of this key is to add _tags_ to a headline (*note Tags::). In many other circumstances it means something like _"Hey Org, look here and update according to what you see here"_. Here is a summary of what this means in different contexts. - If there are highlights in the buffer from the creation of a sparse tree, or from clock display, remove these highlights. - If the cursor is in one of the special `#+KEYWORD' lines, this triggers scanning the buffer for these lines and updating the information. - If the cursor is inside a table, realign the table. This command works even if the automatic table editor has been turned off. - If the cursor is on a `#+TBLFM' line, re-apply the formulas to the entire table. - If the cursor is inside a table created by the `table.el' package, activate that table. - If the current buffer is a Remember buffer, close the note and file it. With a prefix argument, file it, without further interaction, to the default location. - If the cursor is on a `<<>>', update radio targets and corresponding links in this buffer. - If the cursor is in a property line or at the start or end of a property drawer, offer property commands. - If the cursor is at a footnote reference, go to the corresponding definition, and vice versa. - If the cursor is on a statistics cookie, update it. - If the cursor is in a plain list item with a checkbox, toggle the status of the checkbox. - If the cursor is on a numbered item in a plain list, renumber the ordered list. - If the cursor is on the `#+BEGIN' line of a dynamic block, the block is updated.  File: org, Node: Clean view, Next: TTY keys, Prev: The very busy C-c C-c key, Up: Miscellaneous 14.6 A cleaner outline view =========================== Some people find it noisy and distracting that the Org headlines start with a potentially large number of stars, and that text below the headlines is not indented. While this is no problem when writing a _book-like_ document where the outline headings are really section headings, in a more _list-oriented_ outline, indented structure is a lot cleaner: * Top level headline | * Top level headline ** Second level | * Second level *** 3rd level | * 3rd level some text | some text *** 3rd level | * 3rd level more text | more text * Another top level headline | * Another top level headline If you are using at least Emacs 23.1.50.3 and version 6.29 of Org, this kind of view can be achieved dynamically at display time using `org-indent-mode'. In this minor mode, all lines are prefixed for display with the necessary amount of space. Also headlines are prefixed with additional stars, so that the amount of indentation shifts by two(1) spaces per level. All headline stars but the last one are made invisible using the `org-hide' face(2) - see below under `2.' for more information on how this works. You can turn on `org-indent-mode' for all files by customizing the variable `org-startup-indented', or you can turn it on for individual files using #+STARTUP: indent If you want a similar effect in earlier version of Emacs and/or Org, or if you want the indentation to be hard space characters so that the plain text file looks as similar as possible to the Emacs display, Org supports you in the following way: 1. _Indentation of text below headlines_ You may indent text below each headline to make the left boundary line up with the headline, like *** 3rd level more text, now indented Org supports this with paragraph filling, line wrapping, and structure editing(3), preserving or adapting the indentation as appropriate. 2. _Hiding leading stars_ You can modify the display in such a way that all leading stars become invisible. To do this in a global way, configure the variable `org-hide-leading-stars' or change this on a per-file basis with #+STARTUP: hidestars #+STARTUP: showstars With hidden stars, the tree becomes: * Top level headline * Second level * 3rd level ... The leading stars are not truly replaced by whitespace, they are only fontified with the face `org-hide' that uses the background color as font color. If you are not using either white or black background, you may have to customize this face to get the wanted effect. Another possibility is to set this font such that the extra stars are almost invisible, for example using the color `grey90' on a white background. 3. Things become cleaner still if you skip all the even levels and use only odd levels 1, 3, 5..., effectively adding two stars to go from one outline level to the next(4). In this way we get the outline view shown at the beginning of this section. In order to make the structure editing and export commands handle this convention correctly, configure the variable `org-odd-levels-only', or set this on a per-file basis with one of the following lines: #+STARTUP: odd #+STARTUP: oddeven You can convert an Org file from single-star-per-level to the double-star-per-level convention with `M-x org-convert-to-odd-levels RET' in that file. The reverse operation is `M-x org-convert-to-oddeven-levels'. ---------- Footnotes ---------- (1) See the variable `org-indent-indentation-per-level'. (2) Turning on `org-indent-mode' sets `org-hide-leading-stars' to `t' and `org-adapt-indentation' to `nil'. (3) See also the variable `org-adapt-indentation'. (4) When you need to specify a level for a property search or refile targets, `LEVEL=2' will correspond to 3 stars, etc.  File: org, Node: TTY keys, Next: Interaction, Prev: Clean view, Up: Miscellaneous 14.7 Using Org on a tty ======================= Because Org contains a large number of commands, by default many of Org's core commands are bound to keys that are generally not accessible on a tty, such as the cursor keys (, , , ), and , in particular when used together with modifiers like and/or . To access these commands on a tty when special keys are unavailable, the following alternative bindings can be used. The tty bindings below will likely be more cumbersome; you may find for some of the bindings below that a customized workaround suits you better. For example, changing a timestamp is really only fun with `S-' keys, whereas on a tty you would rather use `C-c .' to re-insert the timestamp. Default Alternative 1 Speed Alternative 2 key `S-' `C-u ' `C' `M-' `C-c C-x l' `l' ` ' `M-S-'`C-c C-x L' `L' `M-' `C-c C-x r' `r' ` ' `M-S-'`C-c C-x R' `R' `M-' `C-c C-x u' ` ' ` ' `M-S-' `C-c C-x U' `U' `M-' `C-c C-x d' ` ' ` ' `M-S-'`C-c C-x D' `D' `S-' `C-c C-x c' ` ' `M-' `C-c C-x m' ` ' ` ' `M-S-' `C-c C-x M' ` ' `S-' `C-c ' ` ' `S-' `C-c ' ` ' `S-' `C-c ' ` ' `S-' `C-c ' ` ' `C-S-'`C-c C-x ` ' ' `C-S-'`C-c C-x ` ' '  File: org, Node: Interaction, Prev: TTY keys, Up: Miscellaneous 14.8 Interaction with other packages ==================================== Org lives in the world of GNU Emacs and interacts in various ways with other code out there. * Menu: * Cooperation:: Packages Org cooperates with * Conflicts:: Packages that lead to conflicts  File: org, Node: Cooperation, Next: Conflicts, Prev: Interaction, Up: Interaction 14.8.1 Packages that Org cooperates with ---------------------------------------- `calc.el' by Dave Gillespie Org uses the Calc package for implementing spreadsheet functionality in its tables (*note The spreadsheet::). Org checks for the availability of Calc by looking for the function `calc-eval' which will have been autoloaded during setup if Calc has been installed properly. As of Emacs 22, Calc is part of the Emacs distribution. Another possibility for interaction between the two packages is using Calc for embedded calculations. *Note Embedded Mode: (Calc)Embedded Mode. `constants.el' by Carsten Dominik In a table formula (*note The spreadsheet::), it is possible to use names for natural constants or units. Instead of defining your own constants in the variable `org-table-formula-constants', install the `constants' package which defines a large number of constants and units, and lets you use unit prefixes like `M' for `Mega', etc. You will need version 2.0 of this package, available at `http://www.astro.uva.nl/~dominik/Tools'. Org checks for the function `constants-get', which has to be autoloaded in your setup. See the installation instructions in the file `constants.el'. `cdlatex.el' by Carsten Dominik Org mode can make use of the CDLaTeX package to efficiently enter LaTeX fragments into Org files. See *note CDLaTeX mode::. `imenu.el' by Ake Stenhoff and Lars Lindberg Imenu allows menu access to an index of items in a file. Org mode supports Imenu--all you need to do to get the index is the following: (add-hook 'org-mode-hook (lambda () (imenu-add-to-menubar "Imenu"))) By default the index is two levels deep--you can modify the depth using the option `org-imenu-depth'. `remember.el' by John Wiegley Org cooperates with remember, see *note Remember::. `Remember.el' is not part of Emacs, find it on the web. `speedbar.el' by Eric M. Ludlam Speedbar is a package that creates a special frame displaying files and index items in files. Org mode supports Speedbar and allows you to drill into Org files directly from the Speedbar. It also allows you to restrict the scope of agenda commands to a file or a subtree by using the command `<' in the Speedbar frame. `table.el' by Takaaki Ota Complex ASCII tables with automatic line wrapping, column- and row-spanning, and alignment can be created using the Emacs table package by Takaaki Ota (`http://sourceforge.net/projects/table', and also part of Emacs 22). When or `C-c C-c' is pressed in such a table, Org mode will call `table-recognize-table' and move the cursor into the table. Inside a table, the keymap of Org mode is inactive. In order to execute Org mode-related commands, leave the table. `C-c C-c' Recognize `table.el' table. Works when the cursor is in a table.el table. `C-c ~' Insert a `table.el' table. If there is already a table at point, this command converts it between the `table.el' format and the Org-mode format. See the documentation string of the command `org-convert-table' for the restrictions under which this is possible. `table.el' is part of Emacs 22. `footnote.el' by Steven L. Baur Org mode recognizes numerical footnotes as provided by this package. However, Org mode also has its own footnote support (*note Footnotes::), which makes using `footnote.el' unnecessary.  File: org, Node: Conflicts, Prev: Cooperation, Up: Interaction 14.8.2 Packages that lead to conflicts with Org mode ---------------------------------------------------- In Emacs 23, `shift-selection-mode' is on by default, meaning that cursor motions combined with the shift key should start or enlarge regions. This conflicts with the use of `S-' commands in Org to change timestamps, TODO keywords, priorities, and item bullet types if the cursor is at such a location. By default, `S-' commands outside special contexts don't do anything, but you can customize the variable `org-support-shift-select'. Org mode then tries to accommodate shift selection by (i) using it outside of the special contexts where special commands apply, and by (ii) extending an existing active region even if the cursor moves across a special context. `CUA.el' by Kim. F. Storm Key bindings in Org conflict with the `S-' keys used by CUA mode (as well as `pc-select-mode' and `s-region-mode') to select and extend the region. In fact, Emacs 23 has this built-in in the form of `shift-selection-mode', see previous paragraph. If you are using Emacs 23, you probably don't want to use another package for this purpose. However, if you prefer to leave these keys to a different package while working in Org mode, configure the variable `org-replace-disputed-keys'. When set, Org will move the following key bindings in Org files, and in the agenda buffer (but not during date selection). S-UP -> M-p S-DOWN -> M-n S-LEFT -> M-- S-RIGHT -> M-+ C-S-LEFT -> M-S-- C-S-RIGHT -> M-S-+ Yes, these are unfortunately more difficult to remember. If you want to have other replacement keys, look at the variable `org-disputed-keys'. `yasnippet.el' The way Org-mode binds the TAB key (binding to `[tab]' instead of `"\t"') overrules yasnippets' access to this key. The following code fixed this problem: (add-hook 'org-mode-hook (lambda () (org-set-local 'yas/trigger-key [tab]) (define-key yas/keymap [tab] 'yas/next-field-group))) `windmove.el' by Hovav Shacham This package also uses the `S-' keys, so everything written in the paragraph above about CUA mode also applies here. `viper.el' by Michael Kifer Viper uses `C-c /' and therefore makes this key not access the corresponding Org-mode command `org-sparse-tree'. You need to find another key for this command, or override the key in `viper-vi-global-user-map' with (define-key viper-vi-global-user-map "C-c /" 'org-sparse-tree)  File: org, Node: Hacking, Next: MobileOrg, Prev: Miscellaneous, Up: Top Appendix A Hacking ****************** This appendix covers some aspects where users can extend the functionality of Org. * Menu: * Hooks:: Who to reach into Org's internals * Add-on packages:: Available extensions * Adding hyperlink types:: New custom link types * Context-sensitive commands:: How to add functionality to such commands * Tables in arbitrary syntax:: Orgtbl for LaTeX and other programs * Dynamic blocks:: Automatically filled blocks * Special agenda views:: Customized views * Extracting agenda information:: Postprocessing of agenda information * Using the property API:: Writing programs that use entry properties * Using the mapping API:: Mapping over all or selected entries  File: org, Node: Hooks, Next: Add-on packages, Prev: Hacking, Up: Hacking A.1 Hooks ========= Org has a large number of hook variables that can be used to add functionality. This appendix about hacking is going to illustrate the use of some of them. A complete list of all hooks with documentation is maintained by the Worg project and can be found at `http://orgmode.org/worg/org-configs/org-hooks.php'.  File: org, Node: Add-on packages, Next: Adding hyperlink types, Prev: Hooks, Up: Hacking A.2 Add-on packages =================== A large number of add-on packages have been written by various authors. These packages are not part of Emacs, but they are distributed as contributed packages with the separate release available at the Org mode home page at `http://orgmode.org'. The list of contributed packages, along with documentation about each package, is maintained by the Worg project at `http://orgmode.org/worg/org-contrib/'.  File: org, Node: Adding hyperlink types, Next: Context-sensitive commands, Prev: Add-on packages, Up: Hacking A.3 Adding hyperlink types ========================== Org has a large number of hyperlink types built-in (*note Hyperlinks::). If you would like to add new link types, Org provides an interface for doing so. Let's look at an example file, `org-man.el', that will add support for creating links like `[[man:printf][The printf manpage]]' to show Unix manual pages inside Emacs: ;;; org-man.el - Support for links to manpages in Org (require 'org) (org-add-link-type "man" 'org-man-open) (add-hook 'org-store-link-functions 'org-man-store-link) (defcustom org-man-command 'man "The Emacs command to be used to display a man page." :group 'org-link :type '(choice (const man) (const woman))) (defun org-man-open (path) "Visit the manpage on PATH. PATH should be a topic that can be thrown at the man command." (funcall org-man-command path)) (defun org-man-store-link () "Store a link to a manpage." (when (memq major-mode '(Man-mode woman-mode)) ;; This is a man page, we do make this link (let* ((page (org-man-get-page-name)) (link (concat "man:" page)) (description (format "Manpage for %s" page))) (org-store-link-props :type "man" :link link :description description)))) (defun org-man-get-page-name () "Extract the page name from the buffer name." ;; This works for both `Man-mode' and `woman-mode'. (if (string-match " \\(\\S-+\\)\\*" (buffer-name)) (match-string 1 (buffer-name)) (error "Cannot create link to this man page"))) (provide 'org-man) ;;; org-man.el ends here You would activate this new link type in `.emacs' with (require 'org-man) Let's go through the file and see what it does. 1. It does `(require 'org)' to make sure that `org.el' has been loaded. 2. The next line calls `org-add-link-type' to define a new link type with prefix `man'. The call also contains the name of a function that will be called to follow such a link. 3. The next line adds a function to `org-store-link-functions', in order to allow the command `C-c l' to record a useful link in a buffer displaying a man page. The rest of the file defines the necessary variables and functions. First there is a customization variable that determines which Emacs command should be used to display man pages. There are two options, `man' and `woman'. Then the function to follow a link is defined. It gets the link path as an argument--in this case the link path is just a topic for the manual command. The function calls the value of `org-man-command' to display the man page. Finally the function `org-man-store-link' is defined. When you try to store a link with `C-c l', this function will be called to try to make a link. The function must first decide if it is supposed to create the link for this buffer type; we do this by checking the value of the variable `major-mode'. If not, the function must exit and return the value `nil'. If yes, the link is created by getting the manual topic from the buffer name and prefixing it with the string `man:'. Then it must call the command `org-store-link-props' and set the `:type' and `:link' properties. Optionally you can also set the `:description' property to provide a default for the link description when the link is later inserted into an Org buffer with `C-c C-l'. When is makes sense for your new link type, you may also define a function `org-PREFIX-complete-link' that implements special (e.g. completion) support for inserting such a link with `C-c C-l'. Such a function should not accept any arguments, and return the full link with prefix.  File: org, Node: Context-sensitive commands, Next: Tables in arbitrary syntax, Prev: Adding hyperlink types, Up: Hacking A.4 Context-sensitive commands ============================== Org has several commands that act differently depending on context. The most important example it the `C-c C-c' (*note The very busy C-c C-c key::). Also the `M-cursor' and `M-S-cursor' keys have this property. Add-ons can tap into this functionality by providing a function that detects special context for that add-on and executes functionality appropriate for the context. Here is an example from Dan Davison's `org-R.el' which allows you to evaluate commands based on the `R' programming language. For this package, special contexts are lines that start with `#+R:' or `#+RR:'. (defun org-R-apply-maybe () "Detect if this is context for org-R and execute R commands." (if (save-excursion (beginning-of-line 1) (looking-at "#\\+RR?:")) (progn (call-interactively 'org-R-apply) t) ;; to signal that we took action nil)) ;; to signal that we did not (add-hook 'org-ctrl-c-ctrl-c-hook 'org-R-apply-maybe) The function first checks if the cursor is in such a line. If that is the case, `org-R-apply' is called and the function returns `t' to signal that action was taken, and `C-c C-c' will stop looking for other contexts. If the function finds it should do nothing locally, it returns `nil' so that other, similar functions can have a try.  File: org, Node: Tables in arbitrary syntax, Next: Dynamic blocks, Prev: Context-sensitive commands, Up: Hacking A.5 Tables and lists in arbitrary syntax ======================================== Since Orgtbl mode can be used as a minor mode in arbitrary buffers, a frequent feature request has been to make it work with native tables in specific languages, for example LaTeX. However, this is extremely hard to do in a general way, would lead to a customization nightmare, and would take away much of the simplicity of the Orgtbl-mode table editor. This appendix describes a different approach. We keep the Orgtbl mode table in its native format (the source table), and use a custom function to translate the table to the correct syntax, and to install it in the right location (the target table). This puts the burden of writing conversion functions on the user, but it allows for a very flexible system. Bastien added the ability to do the same with lists. You can use Org's facilities to edit and structure lists by turning `orgstruct-mode' on, then locally exporting such lists in another format (HTML, LaTeX or Texinfo.) * Menu: * Radio tables:: Sending and receiving radio tables * A LaTeX example:: Step by step, almost a tutorial * Translator functions:: Copy and modify * Radio lists:: Doing the same for lists  File: org, Node: Radio tables, Next: A LaTeX example, Prev: Tables in arbitrary syntax, Up: Tables in arbitrary syntax A.5.1 Radio tables ------------------ To define the location of the target table, you first need to create two lines that are comments in the current mode, but contain magic words for Orgtbl mode to find. Orgtbl mode will insert the translated table between these lines, replacing whatever was there before. For example: /* BEGIN RECEIVE ORGTBL table_name */ /* END RECEIVE ORGTBL table_name */ Just above the source table, we put a special line that tells Orgtbl mode how to translate this table and where to install it. For example: #+ORGTBL: SEND table_name translation_function arguments.... `table_name' is the reference name for the table that is also used in the receiver lines. `translation_function' is the Lisp function that does the translation. Furthermore, the line can contain a list of arguments (alternating key and value) at the end. The arguments will be passed as a property list to the translation function for interpretation. A few standard parameters are already recognized and acted upon before the translation function is called: `:skip N' Skip the first N lines of the table. Hlines do count as separate lines for this parameter! `:skipcols (n1 n2 ...)' List of columns that should be skipped. If the table has a column with calculation marks, that column is automatically discarded as well. Please note that the translator function sees the table _after_ the removal of these columns, the function never knows that there have been additional columns. The one problem remaining is how to keep the source table in the buffer without disturbing the normal workings of the file, for example during compilation of a C file or processing of a LaTeX file. There are a number of different solutions: * The table could be placed in a block comment if that is supported by the language. For example, in C mode you could wrap the table between `/*' and `*/' lines. * Sometimes it is possible to put the table after some kind of END statement, for example `\bye' in TeX and `\end{document}' in LaTeX. * You can just comment the table line-by-line whenever you want to process the file, and uncomment it whenever you need to edit the table. This only sounds tedious--the command `M-x orgtbl-toggle-comment' makes this comment-toggling very easy, in particular if you bind it to a key.  File: org, Node: A LaTeX example, Next: Translator functions, Prev: Radio tables, Up: Tables in arbitrary syntax A.5.2 A LaTeX example of radio tables ------------------------------------- The best way to wrap the source table in LaTeX is to use the `comment' environment provided by `comment.sty'. It has to be activated by placing `\usepackage{comment}' into the document header. Orgtbl mode can insert a radio table skeleton(1) with the command `M-x orgtbl-insert-radio-table'. You will be prompted for a table name, let's say we use `salesfigures'. You will then get the following template: % BEGIN RECEIVE ORGTBL salesfigures % END RECEIVE ORGTBL salesfigures \begin{comment} #+ORGTBL: SEND salesfigures orgtbl-to-latex | | | \end{comment} The `#+ORGTBL: SEND' line tells Orgtbl mode to use the function `orgtbl-to-latex' to convert the table into LaTeX and to put it into the receiver location with name `salesfigures'. You may now fill in the table, feel free to use the spreadsheet features(2): % BEGIN RECEIVE ORGTBL salesfigures % END RECEIVE ORGTBL salesfigures \begin{comment} #+ORGTBL: SEND salesfigures orgtbl-to-latex | Month | Days | Nr sold | per day | |-------+------+---------+---------| | Jan | 23 | 55 | 2.4 | | Feb | 21 | 16 | 0.8 | | March | 22 | 278 | 12.6 | #+TBLFM: $4=$3/$2;%.1f % $ (optional extra dollar to keep font-lock happy, see footnote) \end{comment} When you are done, press `C-c C-c' in the table to get the converted table inserted between the two marker lines. Now let's assume you want to make the table header by hand, because you want to control how columns are aligned, etc. In this case we make sure that the table translator skips the first 2 lines of the source table, and tell the command to work as a splice, i.e. to not produce header and footer commands of the target table: \begin{tabular}{lrrr} Month & \multicolumn{1}{c}{Days} & Nr.\ sold & per day\\ % BEGIN RECEIVE ORGTBL salesfigures % END RECEIVE ORGTBL salesfigures \end{tabular} % \begin{comment} #+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2 | Month | Days | Nr sold | per day | |-------+------+---------+---------| | Jan | 23 | 55 | 2.4 | | Feb | 21 | 16 | 0.8 | | March | 22 | 278 | 12.6 | #+TBLFM: $4=$3/$2;%.1f \end{comment} The LaTeX translator function `orgtbl-to-latex' is already part of Orgtbl mode. It uses a `tabular' environment to typeset the table and marks horizontal lines with `\hline'. Furthermore, it interprets the following parameters (see also *note Translator functions::): `:splice nil/t' When set to t, return only table body lines, don't wrap them into a tabular environment. Default is nil. `:fmt fmt' A format to be used to wrap each field, it should contain `%s' for the original field value. For example, to wrap each field value in dollars, you could use `:fmt "$%s$"'. This may also be a property list with column numbers and formats. for example `:fmt (2 "$%s$" 4 "%s\\%%")'. A function of one argument can be used in place of the strings; the function must return a formatted string. `:efmt efmt' Use this format to print numbers with exponentials. The format should have `%s' twice for inserting mantissa and exponent, for example `"%s\\times10^{%s}"'. The default is `"%s\\,(%s)"'. This may also be a property list with column numbers and formats, for example `:efmt (2 "$%s\\times10^{%s}$" 4 "$%s\\cdot10^{%s}$")'. After `efmt' has been applied to a value, `fmt' will also be applied. Similar to `fmt', functions of two arguments can be supplied instead of strings. ---------- Footnotes ---------- (1) By default this works only for LaTeX, HTML, and Texinfo. Configure the variable `orgtbl-radio-tables' to install templates for other modes. (2) If the `#+TBLFM' line contains an odd number of dollar characters, this may cause problems with font-lock in LaTeX mode. As shown in the example you can fix this by adding an extra line inside the `comment' environment that is used to balance the dollar expressions. If you are using AUCTeX with the font-latex library, a much better solution is to add the `comment' environment to the variable `LaTeX-verbatim-environments'.  File: org, Node: Translator functions, Next: Radio lists, Prev: A LaTeX example, Up: Tables in arbitrary syntax A.5.3 Translator functions -------------------------- Orgtbl mode has several translator functions built-in: `orgtbl-to-csv' (comma-separated values), `orgtbl-to-tsv' (TAB-separated values) `orgtbl-to-latex', `orgtbl-to-html', and `orgtbl-to-texinfo'. Except for `orgtbl-to-html'(1), these all use a generic translator, `orgtbl-to-generic'. For example, `orgtbl-to-latex' itself is a very short function that computes the column definitions for the `tabular' environment, defines a few field and line separators and then hands processing over to the generic translator. Here is the entire code: (defun orgtbl-to-latex (table params) "Convert the Orgtbl mode TABLE to LaTeX." (let* ((alignment (mapconcat (lambda (x) (if x "r" "l")) org-table-last-alignment "")) (params2 (list :tstart (concat "\\begin{tabular}{" alignment "}") :tend "\\end{tabular}" :lstart "" :lend " \\\\" :sep " & " :efmt "%s\\,(%s)" :hline "\\hline"))) (orgtbl-to-generic table (org-combine-plists params2 params)))) As you can see, the properties passed into the function (variable PARAMS) are combined with the ones newly defined in the function (variable PARAMS2). The ones passed into the function (i.e. the ones set by the `ORGTBL SEND' line) take precedence. So if you would like to use the LaTeX translator, but wanted the line endings to be `\\[2mm]' instead of the default `\\', you could just overrule the default with #+ORGTBL: SEND test orgtbl-to-latex :lend " \\\\[2mm]" For a new language, you can either write your own converter function in analogy with the LaTeX translator, or you can use the generic function directly. For example, if you have a language where a table is started with `!BTBL!', ended with `!ETBL!', and where table lines are started with `!BL!', ended with `!EL!', and where the field separator is a TAB, you could call the generic translator like this (on a single line!): #+ORGTBL: SEND test orgtbl-to-generic :tstart "!BTBL!" :tend "!ETBL!" :lstart "!BL! " :lend " !EL!" :sep "\t" Please check the documentation string of the function `orgtbl-to-generic' for a full list of parameters understood by that function, and remember that you can pass each of them into `orgtbl-to-latex', `orgtbl-to-texinfo', and any other function using the generic function. Of course you can also write a completely new function doing complicated things the generic translator cannot do. A translator function takes two arguments. The first argument is the table, a list of lines, each line either the symbol `hline' or a list of fields. The second argument is the property list containing all parameters specified in the `#+ORGTBL: SEND' line. The function must return a single string containing the formatted table. If you write a generally useful translator, please post it on so that others can benefit from your work. ---------- Footnotes ---------- (1) The HTML translator uses the same code that produces tables during HTML export.  File: org, Node: Radio lists, Prev: Translator functions, Up: Tables in arbitrary syntax A.5.4 Radio lists ----------------- Sending and receiving radio lists works exactly the same way than sending and receiving radio tables (*note Radio tables::). As for radio tables, you can insert radio lists templates in HTML, LaTeX and Texinfo modes by calling `org-list-insert-radio-list'. Here are the differences with radio tables: - Use `ORGLST' instead of `ORGTBL'. - The available translation functions for radio lists don't take parameters. - `C-c C-c' will work when pressed on the first item of the list. Here is a LaTeX example. Let's say that you have this in your LaTeX file: % BEGIN RECEIVE ORGLST to-buy % END RECEIVE ORGLST to-buy \begin{comment} #+ORGLIST: SEND to-buy orgtbl-to-latex - a new house - a new computer + a new keyboard + a new mouse - a new life \end{comment} Pressing `C-c C-c' on `a new house' and will insert the converted LaTeX list between the two marker lines.  File: org, Node: Dynamic blocks, Next: Special agenda views, Prev: Tables in arbitrary syntax, Up: Hacking A.6 Dynamic blocks ================== Org documents can contain _dynamic blocks_. These are specially marked regions that are updated by some user-written function. A good example for such a block is the clock table inserted by the command `C-c C-x C-r' (*note Clocking work time::). Dynamic block are enclosed by a BEGIN-END structure that assigns a name to the block and can also specify parameters for the function producing the content of the block. #+BEGIN:dynamic block #+BEGIN: myblock :parameter1 value1 :parameter2 value2 ... #+END: Dynamic blocks are updated with the following commands `C-c C-x C-u' Update dynamic block at point. `C-u C-c C-x C-u' Update all dynamic blocks in the current file. Updating a dynamic block means to remove all the text between BEGIN and END, parse the BEGIN line for parameters and then call the specific writer function for this block to insert the new content. If you want to use the original content in the writer function, you can use the extra parameter `:content'. For a block with name `myblock', the writer function is `org-dblock-write:myblock' with as only parameter a property list with the parameters given in the begin line. Here is a trivial example of a block that keeps track of when the block update function was last run: #+BEGIN: block-update-time :format "on %m/%d/%Y at %H:%M" #+END: The corresponding block writer function could look like this: (defun org-dblock-write:block-update-time (params) (let ((fmt (or (plist-get params :format) "%d. %m. %Y"))) (insert "Last block update at: " (format-time-string fmt (current-time))))) If you want to make sure that all dynamic blocks are always up-to-date, you could add the function `org-update-all-dblocks' to a hook, for example `before-save-hook'. `org-update-all-dblocks' is written in a way such that it does nothing in buffers that are not in `org-mode'.  File: org, Node: Special agenda views, Next: Extracting agenda information, Prev: Dynamic blocks, Up: Hacking A.7 Special agenda views ======================== Org provides a special hook that can be used to narrow down the selection made by any of the agenda views. You may specify a function that is used at each match to verify if the match should indeed be part of the agenda view, and if not, how much should be skipped. Let's say you want to produce a list of projects that contain a WAITING tag anywhere in the project tree. Let's further assume that you have marked all tree headings that define a project with the TODO keyword PROJECT. In this case you would run a TODO search for the keyword PROJECT, but skip the match unless there is a WAITING tag anywhere in the subtree belonging to the project line. To achieve this, you must write a function that searches the subtree for the tag. If the tag is found, the function must return `nil' to indicate that this match should not be skipped. If there is no such tag, return the location of the end of the subtree, to indicate that search should continue from there. (defun my-skip-unless-waiting () "Skip trees that are not waiting" (let ((subtree-end (save-excursion (org-end-of-subtree t)))) (if (re-search-forward ":waiting:" subtree-end t) nil ; tag found, do not skip subtree-end))) ; tag not found, continue after end of subtree Now you may use this function in an agenda custom command, for example like this: (org-add-agenda-custom-command '("b" todo "PROJECT" ((org-agenda-skip-function 'my-skip-unless-waiting) (org-agenda-overriding-header "Projects waiting for something: ")))) Note that this also binds `org-agenda-overriding-header' to get a meaningful header in the agenda view. A general way to create custom searches is to base them on a search for entries with a certain level limit. If you want to study all entries with your custom search function, simply do a search for `LEVEL>0'(1), and then use `org-agenda-skip-function' to select the entries you really want to have. You may also put a Lisp form into `org-agenda-skip-function'. In particular, you may use the functions `org-agenda-skip-entry-if' and `org-agenda-skip-subtree-if' in this form, for example: `'(org-agenda-skip-entry-if 'scheduled)' Skip current entry if it has been scheduled. `'(org-agenda-skip-entry-if 'notscheduled)' Skip current entry if it has not been scheduled. `'(org-agenda-skip-entry-if 'deadline)' Skip current entry if it has a deadline. `'(org-agenda-skip-entry-if 'scheduled 'deadline)' Skip current entry if it has a deadline, or if it is scheduled. `'(org-agenda-skip-entry-if 'timestamp)' Skip current entry if it has any timestamp, may also be deadline or scheduled. `'(org-agenda-skip-entry 'regexp "regular expression")' Skip current entry if the regular expression matches in the entry. `'(org-agenda-skip-entry 'notregexp "regular expression")' Skip current entry unless the regular expression matches. `'(org-agenda-skip-subtree-if 'regexp "regular expression")' Same as above, but check and skip the entire subtree. Therefore we could also have written the search for WAITING projects like this, even without defining a special function: (org-add-agenda-custom-command '("b" todo "PROJECT" ((org-agenda-skip-function '(org-agenda-skip-subtree-if 'regexp ":waiting:")) (org-agenda-overriding-header "Projects waiting for something: ")))) ---------- Footnotes ---------- (1) Note that, when using `org-odd-levels-only', a level number corresponds to order in the hierarchy, not to the number of stars.  File: org, Node: Extracting agenda information, Next: Using the property API, Prev: Special agenda views, Up: Hacking A.8 Extracting agenda information ================================= Org provides commands to access agenda information for the command line in Emacs batch mode. This extracted information can be sent directly to a printer, or it can be read by a program that does further processing of the data. The first of these commands is the function `org-batch-agenda', that produces an agenda view and sends it as ASCII text to STDOUT. The command takes a single string as parameter. If the string has length 1, it is used as a key to one of the commands you have configured in `org-agenda-custom-commands', basically any key you can use after `C-c a'. For example, to directly print the current TODO list, you could use emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr If the parameter is a string with 2 or more characters, it is used as a tags/TODO match string. For example, to print your local shopping list (all items with the tag `shop', but excluding the tag `NewYork'), you could use emacs -batch -l ~/.emacs \ -eval '(org-batch-agenda "+shop-NewYork")' | lpr You may also modify parameters on the fly like this: emacs -batch -l ~/.emacs \ -eval '(org-batch-agenda "a" \ org-agenda-ndays 30 \ org-agenda-include-diary nil \ org-agenda-files (quote ("~/org/project.org")))' \ | lpr which will produce a 30-day agenda, fully restricted to the Org file `~/org/projects.org', not even including the diary. If you want to process the agenda data in more sophisticated ways, you can use the command `org-batch-agenda-csv' to get a comma-separated list of values for each agenda item. Each line in the output will contain a number of fields separated by commas. The fields in a line are: category The category of the item head The headline, without TODO keyword, TAGS and PRIORITY type The type of the agenda entry, can be todo selected in TODO match tagsmatch selected in tags match diary imported from diary deadline a deadline scheduled scheduled timestamp appointment, selected by timestamp closed entry was closed on date upcoming-deadline warning about nearing deadline past-scheduled forwarded scheduled item block entry has date block including date todo The TODO keyword, if any tags All tags including inherited ones, separated by colons date The relevant date, like 2007-2-14 time The time, like 15:00-16:50 extra String with extra planning info priority-l The priority letter if any was given priority-n The computed numerical priority Time and date will only be given if a timestamp (or deadline/scheduled) led to the selection of the item. A CSV list like this is very easy to use in a post-processing script. For example, here is a Perl program that gets the TODO list from Emacs/Org and prints all the items, preceded by a checkbox: #!/usr/bin/perl # define the Emacs command to run $cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'"; # run it and capture the output $agenda = qx{$cmd 2>/dev/null}; # loop over all lines foreach $line (split(/\n/,$agenda)) { # get the individual values ($category,$head,$type,$todo,$tags,$date,$time,$extra, $priority_l,$priority_n) = split(/,/,$line); # process and print print "[ ] $head\n"; }  File: org, Node: Using the property API, Next: Using the mapping API, Prev: Extracting agenda information, Up: Hacking A.9 Using the property API ========================== Here is a description of the functions that can be used to work with properties. -- Function: org-entry-properties &optional pom which Get all properties of the entry at point-or-marker POM. This includes the TODO keyword, the tags, time strings for deadline, scheduled, and clocking, and any additional properties defined in the entry. The return value is an alist, keys may occur multiple times if the property key was used several times. POM may also be nil, in which case the current entry is used. If WHICH is nil or `all', get all properties. If WHICH is `special' or `standard', only get that subclass. -- Function: org-entry-get pom property &optional inherit Get value of PROPERTY for entry at point-or-marker POM. By default, this only looks at properties defined locally in the entry. If INHERIT is non-nil and the entry does not have the property, then also check higher levels of the hierarchy. If INHERIT is the symbol `selective', use inheritance if and only if the setting of `org-use-property-inheritance' selects PROPERTY for inheritance. -- Function: org-entry-delete pom property Delete the property PROPERTY from entry at point-or-marker POM. -- Function: org-entry-put pom property value Set PROPERTY to VALUE for entry at point-or-marker POM. -- Function: org-buffer-property-keys &optional include-specials Get all property keys in the current buffer. -- Function: org-insert-property-drawer Insert a property drawer at point. -- Function: org-entry-put-multivalued-property pom property &rest values Set PROPERTY at point-or-marker POM to VALUES. VALUES should be a list of strings. They will be concatenated, with spaces as separators. -- Function: org-entry-get-multivalued-property pom property Treat the value of the property PROPERTY as a whitespace-separated list of values and return the values as a list of strings. -- Function: org-entry-add-to-multivalued-property pom property value Treat the value of the property PROPERTY as a whitespace-separated list of values and make sure that VALUE is in this list. -- Function: org-entry-remove-from-multivalued-property pom property value Treat the value of the property PROPERTY as a whitespace-separated list of values and make sure that VALUE is _not_ in this list. -- Function: org-entry-member-in-multivalued-property pom property value Treat the value of the property PROPERTY as a whitespace-separated list of values and check if VALUE is in this list.  File: org, Node: Using the mapping API, Prev: Using the property API, Up: Hacking A.10 Using the mapping API ========================== Org has sophisticated mapping capabilities to find all entries satisfying certain criteria. Internally, this functionality is used to produce agenda views, but there is also an API that can be used to execute arbitrary functions for each or selected entries. The main entry point for this API is: -- Function: org-map-entries func &optional match scope &rest skip Call FUNC at each headline selected by MATCH in SCOPE. FUNC is a function or a Lisp form. The function will be called without arguments, with the cursor positioned at the beginning of the headline. The return values of all calls to the function will be collected and returned as a list. The call to FUNC will be wrapped into a save-excursion form, so FUNC does not need to preserve point. After evaluation, the cursor will be moved to the end of the line (presumably of the headline of the processed entry) and search continues from there. Under some circumstances, this may not produce the wanted results. For example, if you have removed (e.g. archived) the current (sub)tree it could mean that the next entry will be skipped entirely. In such cases, you can specify the position from where search should continue by making FUNC set the variable `org-map-continue-from' to the desired buffer position. MATCH is a tags/property/todo match as it is used in the agenda match view. Only headlines that are matched by this query will be considered during the iteration. When MATCH is nil or t, all headlines will be visited by the iteration. SCOPE determines the scope of this command. It can be any of: nil the current buffer, respecting the restriction if any tree the subtree started with the entry at point file the current buffer, without restriction file-with-archives the current buffer, and any archives associated with it agenda all agenda files agenda-with-archives all agenda files with any archive files associated with them (file1 file2 ...) if this is a list, all files in the list will be scanned The remaining args are treated as settings for the skipping facilities of the scanner. The following items can be given here: archive skip trees with the archive tag comment skip trees with the COMMENT keyword function or Lisp form will be used as value for `org-agenda-skip-function', so whenever the function returns t, FUNC will not be called for that entry and search will continue from the point where the function leaves it The function given to that mapping routine can really do anything you like. It can use the property API (*note Using the property API::) to gather more information about the entry, or in order to change metadata in the entry. Here are a couple of functions that might be handy: -- Function: org-todo &optional arg Change the TODO state of the entry, see the docstring of the functions for the many possible values for the argument ARG. -- Function: org-priority &optional action Change the priority of the entry, see the docstring of this function for the possible values for ACTION. -- Function: org-toggle-tag tag &optional onoff Toggle the tag TAG in the current entry. Setting ONOFF to either `on' or `off' will not toggle tag, but ensure that it is either on or off. -- Function: org-promote Promote the current entry. -- Function: org-demote Demote the current entry. Here is a simple example that will turn all entries in the current file with a tag `TOMORROW' into TODO entries with the keyword `UPCOMING'. Entries in comment trees and in archive trees will be ignored. (org-map-entries '(org-todo "UPCOMING") "+TOMORROW" 'file 'archive 'comment) The following example counts the number of entries with TODO keyword `WAITING', in all agenda files. (length (org-map-entries t "/+WAITING" 'agenda))  File: org, Node: MobileOrg, Next: History and Acknowledgments, Prev: Hacking, Up: Top Appendix B MobileOrg ******************** MobileOrg is an application for the iPhone/iPod Touch series of devices, developed by Richard Moreland. MobileOrg offers offline viewing and capture support for an Org-mode system rooted on a "real" computer. It does also allow you to record changes to existing entries. For information about MobileOrg, see `http://mobileorg.ncogni.to/'). This appendix describes the support Org has for creating agenda views in a format that can be displayed by MobileOrg, and for integrating notes captured and changes made by MobileOrg into the main system. For changing tags and TODO states in MobileOrg, you should have set up the customization variables `org-todo-keywords' and `org-tags-alist' to cover all important tags and todo keywords, even if individual files use only part of these. MobileOrg will also offer you states and tags set up with in-buffer settings, but it will understand the logistics of todo state sets (*note Per-file keywords::) and mutually exclusive tags (*note Setting tags::) only for those set in these variables. * Menu: * Setting up the staging area:: Where to interact with the mobile device * Pushing to MobileOrg:: Uploading Org files and agendas * Pulling from MobileOrg:: Integrating captured and flagged items  File: org, Node: Setting up the staging area, Next: Pushing to MobileOrg, Prev: MobileOrg, Up: MobileOrg B.1 Setting up the staging area =============================== Org-mode has commands to prepare a directory with files for MobileOrg, and to read captured notes from there. If Emacs can directly write to the WebDAV directory accessed by MobileOrg, just point to this directory using the variable `org-mobile-directory'. Using the `tramp' method, `org-mobile-directory' may point to a remote directory accessible through, for example, `ssh/scp': (setq org-mobile-directory "/scpc:user@remote.host:org/webdav/") If Emacs cannot access the WebDAV directory directly using a `tramp' method, or you prefer to maintain a local copy, you can use a local directory for staging. Other means must then be used to keep this directory in sync with the WebDAV directory. In the following example, files are staged in `~/stage', and Org-mode hooks take care of moving files to and from the WebDAV directory using `scp'. (setq org-mobile-directory "~/stage/") (add-hook 'org-mobile-post-push-hook (lambda () (shell-command "scp -r ~/stage/* user@wdhost:mobile/"))) (add-hook 'org-mobile-pre-pull-hook (lambda () (shell-command "scp user@wdhost:mobile/mobileorg.org ~/stage/ "))) (add-hook 'org-mobile-post-pull-hook (lambda () (shell-command "scp ~/stage/mobileorg.org user@wdhost:mobile/")))  File: org, Node: Pushing to MobileOrg, Next: Pulling from MobileOrg, Prev: Setting up the staging area, Up: MobileOrg B.2 Pushing to MobileOrg ======================== This operation copies all files currently listed in `org-mobile-files' to the directory `org-mobile-directory'. By default this list contains all agenda files (as listed in `org-agenda-files'), but additional files can be included by customizing `org-mobiles-files'. File names will be staged with path relative to `org-directory', so all files should be inside this directory. The push operation also creates (in the same directory) a special Org file `agendas.org'. This file is an Org-mode style outline, containing every custom agenda view defined by the user. While creating the agendas, Org-mode will force(1) an ID property on all entries referenced by the agendas, so that these entries can be uniquely identified if MobileOrg flags them for further action. Finally, Org writes the file `index.org', containing links to all other files. If MobileOrg is configured to request this file from the WebDAV server, all agendas and Org files will be downloaded to the device. To speed up the download, MobileOrg will only read files whose checksums(2) have changed. ---------- Footnotes ---------- (1) See the variable `org-mobile-force-id-on-agenda-items'. (2) stored automatically in the file `checksums.dat'  File: org, Node: Pulling from MobileOrg, Prev: Pushing to MobileOrg, Up: MobileOrg B.3 Pulling from MobileOrg ========================== When MobileOrg synchronizes with the WebDAV server, it not only pulls the Org files for viewing. It also appends captured entries and pointers to flagged and changed entries to the file `mobileorg.org' on the server. Org has a _pull_ operation that integrates this information into an inbox file and operates on the pointers to flagged entries. Here is how it works: 1. Org moves all entries found in `mobileorg.org'(1) and appends them to the file pointed to by the variable `org-mobile-inbox-for-pull'. Each captured entry and each editing event will be a top-level entry in the inbox file. 2. After moving the entries, Org will attempt to implement the changes made in MobileOrg. Some changes are applied directly and without user interaction. Examples are all changes to tags, TODO state, headline and body text that can be cleanly applied. Entries that have been flagged for further action will receive a tag `:FLAGGED:', so that they can be easily found again. When there is a problem finding an entry or applying the change, the pointer entry will remain in the inbox and will be marked with an error message. You need to later resolve these issues by hand. 3. Org will then generate an agenda view with all flagged entries. The user should then go through these entries and do whatever actions are necessary. If a note has been stored while flagging an entry in MobileOrg, that note will be displayed in the echo area when the cursor is on the corresponding agenda line. `?' Pressing `?' in that special agenda will display the full flagging note in another window and also push it onto the kill ring. So you could use `? z C-y C-c C-c' to store that flagging note as a normal note in the entry. Pressing `?' twice in succession will offer to remove the `:FLAGGED:' tag along with the recorded flagging note (which is stored in a property). In this way you indicate, that the intended processing for this flagged entry is finished. If you are not able to process all flagged entries directly, you can always return to this agenda view using `C-c a ?'. Note, however, that there is a subtle difference. The view created automatically by `M-x org-mobile-pull RET' is guaranteed to search all files that have been addressed by the last pull. This might include a file that is not currently in your list of agenda files. If you later use `C-c a ?' to regenerate the view, only the current agenda files will be searched. ---------- Footnotes ---------- (1) `mobileorg.org' will be empty after this operation.  File: org, Node: History and Acknowledgments, Next: Main Index, Prev: MobileOrg, Up: Top Appendix C History and Acknowledgments ************************************** Org was born in 2003, out of frustration over the user interface of the Emacs Outline mode. I was trying to organize my notes and projects, and using Emacs seemed to be the natural way to go. However, having to remember eleven different commands with two or three keys per command, only to hide and show parts of the outline tree, that seemed entirely unacceptable to me. Also, when using outlines to take notes, I constantly wanted to restructure the tree, organizing it parallel to my thoughts and plans. _Visibility cycling_ and _structure editing_ were originally implemented in the package `outline-magic.el', but quickly moved to the more general `org.el'. As this environment became comfortable for project planning, the next step was adding _TODO entries_, basic _timestamps_, and _table support_. These areas highlighted the two main goals that Org still has today: to be a new, outline-based, plain text mode with innovative and intuitive editing features, and to incorporate project planning functionality directly into a notes file. A special thanks goes to Bastien Guerry who has not only written a large number of extensions to Org (most of them integrated into the core by now), but who has also helped in the development and maintenance of Org so much that he should be considered the main co-contributor to this package. Since the first release, literally thousands of emails to me or to have provided a constant stream of bug reports, feedback, new ideas, and sometimes patches and add-on code. Many thanks to everyone who has helped to improve this package. I am trying to keep here a list of the people who had significant influence in shaping one or more aspects of Org. The list may not be complete, if I have forgotten someone, please accept my apologies and let me know. * Russel Adams came up with the idea for drawers. * Thomas Baumann wrote `org-bbdb.el' and `org-mhe.el'. * Christophe Bataillon created the great unicorn logo that we use on the Org-mode website. * Alex Bochannek provided a patch for rounding timestamps. * Brad Bozarth showed how to pull RSS feed data into Org-mode files. * Tom Breton wrote `org-choose.el'. * Charles Cave's suggestion sparked the implementation of templates for Remember. * Pavel Chalmoviansky influenced the agenda treatment of items with specified time. * Gregory Chernov patched support for Lisp forms into table calculations and improved XEmacs compatibility, in particular by porting `nouline.el' to XEmacs. * Sacha Chua suggested copying some linking code from Planner. * Baoqiu Cui contributed the DocBook exporter. * Dan Davison wrote (together with Eric Schulte) Org Babel. * Eddward DeVilla proposed and tested checkbox statistics. He also came up with the idea of properties, and that there should be an API for them. * Nick Dokos tracked down several nasty bugs. * Kees Dullemond used to edit projects lists directly in HTML and so inspired some of the early development, including HTML export. He also asked for a way to narrow wide table columns. * Christian Egli converted the documentation into Texinfo format, patched CSS formatting into the HTML exporter, and inspired the agenda. * David Emery provided a patch for custom CSS support in exported HTML agendas. * Nic Ferrier contributed mailcap and XOXO support. * Miguel A. Figueroa-Villanueva implemented hierarchical checkboxes. * John Foerch figured out how to make incremental search show context around a match in a hidden outline tree. * Raimar Finken wrote `org-git-line.el'. * Mikael Fornius works as a mailing list moderator. * Austin Frank works as a mailing list moderator. * Niels Giesen had the idea to automatically archive DONE trees. * Bastien Guerry wrote the LaTeX exporter and `org-bibtex.el', and has been prolific with patches, ideas, and bug reports. * Kai Grossjohann pointed out key-binding conflicts with other packages. * Bernt Hansen has driven much of the support for auto-repeating tasks, task state change logging, and the clocktable. His clear explanations have been critical when we started to adopt the Git version control system. * Manuel Hermenegildo has contributed various ideas, small fixes and patches. * Phil Jackson wrote `org-irc.el'. * Scott Jaderholm proposed footnotes, control over whitespace between folded entries, and column view for properties. * Tokuya Kameshima wrote `org-wl.el' and `org-mew.el'. * Shidai Liu ("Leo") asked for embedded LaTeX and tested it. He also provided frequent feedback and some patches. * Matt Lundin has proposed last-row references for table formulas and named invisible anchors. He has also worked a lot on the FAQ. * Jason F. McBrayer suggested agenda export to CSV format. * Max Mikhanosha came up with the idea of refiling. * Dmitri Minaev sent a patch to set priority limits on a per-file basis. * Stefan Monnier provided a patch to keep the Emacs-Lisp compiler happy. * Richard Moreland wrote MobileOrg for the iPhone. * Rick Moynihan proposed allowing multiple TODO sequences in a file and being able to quickly restrict the agenda to a subtree. * Todd Neal provided patches for links to Info files and Elisp forms. * Greg Newman refreshed the unicorn logo into its current form. * Tim O'Callaghan suggested in-file links, search options for general file links, and TAGS. * Takeshi Okano translated the manual and David O'Toole's tutorial into Japanese. * Oliver Oppitz suggested multi-state TODO items. * Scott Otterson sparked the introduction of descriptive text for links, among other things. * Pete Phillips helped during the development of the TAGS feature, and provided frequent feedback. * Martin Pohlack provided the code snippet to bundle character insertion into bundles of 20 for undo. * T.V. Raman reported bugs and suggested improvements. * Matthias Rempe (Oelde) provided ideas, Windows support, and quality control. * Paul Rivier provided the basic implementation of named footnotes. He also acted as mailing list moderator for some time. * Kevin Rogers contributed code to access VM files on remote hosts. * Sebastian Rose wrote `org-info.js', a Java script for displaying webpages derived from Org using an Info-like or a folding interface with single-key navigation. * Frank Ruell solved the mystery of the `keymapp nil' bug, a conflict with `allout.el'. * Jason Riedy generalized the send-receive mechanism for Orgtbl tables with extensive patches. * Philip Rooke created the Org reference card, provided lots of feedback, developed and applied standards to the Org documentation. * Christian Schlauer proposed angular brackets around links, among other things. * Eric Schulte wrote `org-plot.el' and (together with Dan Davison) Org Babel, and contributed various patches, small features and modules. * Linking to VM/BBDB/Gnus was first inspired by Tom Shannon's `organizer-mode.el'. * Ilya Shlyakhter proposed the Archive Sibling, line numbering in literal examples, and remote highlighting for referenced code lines. * Stathis Sideris wrote the `ditaa.jar' ASCII to PNG converter that is now packaged into Org's `contrib' directory. * Daniel Sinder came up with the idea of internal archiving by locking subtrees. * Dale Smith proposed link abbreviations. * James TD Smith has contributed a large number of patches for useful tweaks and features. * Adam Spiers asked for global linking commands, inspired the link extension system, added support for mairix, and proposed the mapping API. * Andy Stewart contributed code to `org-w3m.el', to copy HTML content with links transformation to Org syntax. * David O'Toole wrote `org-publish.el' and drafted the manual chapter about publishing. * Ju"rgen Vollmer contributed code generating the table of contents in HTML output. * Chris Wallace provided a patch implementing the `QUOTE' keyword. * David Wainberg suggested archiving, and improvements to the linking system. * John Wiegley wrote `emacs-wiki.el', `planner.el', and `muse.el', which have some overlap with Org. Initially the development of Org was fully independent because I was not aware of the existence of these packages. But with time I have occasionally looked at John's code and learned a lot from it. John has also contributed a number of great ideas and patches directly to Org, including the attachment system (`org-attach.el'), integration with Apple Mail (`org-mac-message.el'), hierarchical dependencies of TODO items, habit tracking (`org-habits.el') and support for pcomplete. * Carsten Wimmer suggested some changes and helped fix a bug in linking to Gnus. * Roland Winkler requested additional key bindings to make Org work on a tty. * Piotr Zielinski wrote `org-mouse.el', proposed agenda blocks and contributed various ideas and code snippets.  File: org, Node: Main Index, Next: Key Index, Prev: History and Acknowledgments, Up: Top Concept Index ************* [index] * Menu: * #+ARCHIVE: Moving subtrees. (line 27) * #+ATTR_DOCBOOK: Images in DocBook export. (line 30) * #+ATTR_HTML <1>: Images in HTML export. (line 24) * #+ATTR_HTML <2>: Tables in HTML export. (line 11) * #+ATTR_HTML: Links in HTML export. (line 21) * #+ATTR_LaTeX <1>: Images in LaTeX export. (line 25) * #+ATTR_LaTeX: Tables in LaTeX export. (line 11) * #+AUTHOR: Export options. (line 19) * #+BEGIN, clocktable: Clocking work time. (line 89) * #+BEGIN, columnview: Capturing column view. (line 11) * #+BEGIN_CENTER: Paragraphs. (line 31) * #+BEGIN_COMMENT: Comment lines. (line 6) * #+BEGIN_DOCBOOK: Quoting DocBook code. (line 9) * #+BEGIN_EXAMPLE: Literal examples. (line 8) * #+BEGIN_HTML: Quoting HTML tags. (line 12) * #+BEGIN_LaTeX: Quoting LaTeX code. (line 12) * #+BEGIN_QUOTE: Paragraphs. (line 26) * #+BEGIN_SRC: Literal examples. (line 27) * #+BEGIN_VERSE: Paragraphs. (line 13) * #+BIND: Export options. (line 19) * #+CAPTION <1>: Images in DocBook export. (line 30) * #+CAPTION <2>: Images in LaTeX export. (line 25) * #+CAPTION <3>: Tables in LaTeX export. (line 11) * #+CAPTION <4>: Images in HTML export. (line 24) * #+CAPTION <5>: Tables in HTML export. (line 11) * #+CAPTION: Images and tables. (line 6) * #+COLUMNS: Scope of column definitions. (line 8) * #+CONSTANTS: References. (line 84) * #+DATE: Export options. (line 19) * #+DESCRIPTION: Export options. (line 19) * #+DOCBOOK: Quoting DocBook code. (line 9) * #+DRAWERS: Drawers. (line 6) * #+EMAIL: Export options. (line 19) * #+EXPORT_EXCLUDE_TAGS: Export options. (line 19) * #+EXPORT_SELECT_TAGS: Export options. (line 19) * #+FILETAGS: Tag inheritance. (line 20) * #+HTML: Quoting HTML tags. (line 12) * #+INCLUDE: Include files. (line 7) * #+INFOJS_OPT: Javascript support. (line 26) * #+KEYWORDS: Export options. (line 19) * #+LABEL <1>: Images in DocBook export. (line 30) * #+LABEL <2>: Images in LaTeX export. (line 25) * #+LABEL <3>: Tables in LaTeX export. (line 11) * #+LABEL: Images and tables. (line 6) * #+LANGUAGE: Export options. (line 19) * #+LaTeX: Quoting LaTeX code. (line 12) * #+LATEX_CLASS: Sectioning structure. (line 8) * #+LATEX_HEADER <1>: Sectioning structure. (line 8) * #+LATEX_HEADER: Export options. (line 19) * #+LINK: Link abbreviations. (line 36) * #+LINK_HOME: Export options. (line 19) * #+LINK_UP: Export options. (line 19) * #+MACRO: Macro replacement. (line 6) * #+OPTIONS <1>: Export options. (line 19) * #+OPTIONS: Headings and sections. (line 14) * #+ORGLIST: Radio lists. (line 23) * #+ORGTBL: Radio tables. (line 15) * #+ORGTBL, SEND: A LaTeX example. (line 14) * #+PLOT: Org-Plot. (line 6) * #+PRIORITIES: Priorities. (line 41) * #+PROPERTY: Property syntax. (line 37) * #+SEQ_TODO: Per-file keywords. (line 6) * #+SETUPFILE: In-buffer settings. (line 61) * #+STARTUP:: In-buffer settings. (line 74) * #+STYLE: CSS support. (line 44) * #+TAGS: Setting tags. (line 29) * #+TBLFM: Field formulas. (line 12) * #+TBLNAME: References. (line 105) * #+TEXT <1>: Export options. (line 19) * #+TEXT: Initial text. (line 6) * #+TITLE <1>: Export options. (line 19) * #+TITLE: Document title. (line 8) * #+TODO: Per-file keywords. (line 6) * #+TYP_TODO: Per-file keywords. (line 6) * abbreviation, links: Link abbreviations. (line 6) * acknowledgements: History and Acknowledgments. (line 6) * action, for publishing: Publishing action. (line 6) * activation: Activation. (line 6) * active region <1>: DocBook export commands. (line 6) * active region <2>: LaTeX/PDF export commands. (line 6) * active region <3>: HTML Export commands. (line 6) * active region <4>: ASCII export. (line 9) * active region <5>: Built-in table editor. (line 158) * active region: Structure editing. (line 124) * add-on packages: Add-on packages. (line 6) * add-ons, context-sensitive commands: Context-sensitive commands. (line 6) * agenda: Weekly/daily agenda. (line 6) * agenda dispatcher: Agenda dispatcher. (line 6) * agenda files: Agenda files. (line 6) * agenda files, removing buffers: Agenda commands. (line 478) * agenda views: Agenda Views. (line 6) * agenda views, custom: Custom agenda views. (line 6) * agenda views, exporting <1>: Exporting Agenda Views. (line 6) * agenda views, exporting: Agenda commands. (line 465) * agenda views, user-defined: Special agenda views. (line 6) * agenda, column view: Agenda column view. (line 6) * agenda, pipe: Extracting agenda information. (line 6) * agenda, with block views: Block agenda. (line 6) * align, STARTUP keyword: In-buffer settings. (line 94) * alignment in tables: Column width and alignment. (line 6) * anniversaries, from BBDB: Weekly/daily agenda. (line 64) * API, for mapping: Using the mapping API. (line 6) * API, for properties <1>: Using the property API. (line 6) * API, for properties: Property API. (line 6) * appointment reminders: Weekly/daily agenda. (line 97) * appt.el: Weekly/daily agenda. (line 97) * archive locations: Moving subtrees. (line 20) * archiving: Archiving. (line 6) * ASCII export: ASCII export. (line 6) * attachments: Attachments. (line 6) * author: Feedback. (line 6) * author info, in export: Export options. (line 38) * autoload: Activation. (line 6) * backtrace of an error: Feedback. (line 35) * Baur, Steven L.: Cooperation. (line 75) * BBDB links: External links. (line 6) * BBDB, anniversaries: Weekly/daily agenda. (line 64) * block agenda: Block agenda. (line 6) * blocking, of checkboxes: Checkboxes. (line 46) * blocks, folding: Blocks. (line 6) * bold text, markup rules: Emphasis and monospace. (line 6) * Boolean logic, for tag/property searches: Matching tags and properties. (line 34) * bug reports: Feedback. (line 6) * C-c C-c, overview: The very busy C-c C-c key. (line 6) * calc package: The spreadsheet. (line 6) * calc.el: Cooperation. (line 6) * calculations, in tables <1>: The spreadsheet. (line 6) * calculations, in tables: Built-in table editor. (line 158) * calendar commands, from agenda: Agenda commands. (line 414) * calendar integration: Weekly/daily agenda. (line 23) * calendar, for selecting date: The date/time prompt. (line 59) * capture: Capture - Refile - Archive. (line 6) * category: Categories. (line 6) * category, require for tags/property match: Matching tags and properties. (line 59) * CDLaTeX: CDLaTeX mode. (line 6) * cdlatex.el: Cooperation. (line 29) * checkbox blocking: Checkboxes. (line 46) * checkbox statistics: Checkboxes. (line 30) * checkboxes: Checkboxes. (line 6) * checkboxes and TODO dependencies: TODO dependencies. (line 44) * children, subtree visibility state: Visibility cycling. (line 10) * clean outline view: Clean view. (line 6) * code line references, markup rules: Literal examples. (line 6) * code text, markup rules: Emphasis and monospace. (line 6) * column formula: Column formulas. (line 6) * column view, for properties: Defining columns. (line 6) * column view, in agenda: Agenda column view. (line 6) * commands, in agenda buffer: Agenda commands. (line 6) * comment lines: Comment lines. (line 6) * completion, of dictionary words: Completion. (line 6) * completion, of file names: Handling links. (line 86) * completion, of link abbreviations: Completion. (line 6) * completion, of links: Handling links. (line 65) * completion, of option keywords <1>: Completion. (line 6) * completion, of option keywords <2>: Export options. (line 6) * completion, of option keywords: Per-file keywords. (line 24) * completion, of property keys: Completion. (line 6) * completion, of tags <1>: Completion. (line 6) * completion, of tags: Setting tags. (line 11) * completion, of TeX symbols: Completion. (line 6) * completion, of TODO keywords <1>: Completion. (line 6) * completion, of TODO keywords: Workflow states. (line 15) * constants, in calculations: References. (line 84) * constants.el: Cooperation. (line 17) * constcgs, STARTUP keyword: In-buffer settings. (line 129) * constSI, STARTUP keyword: In-buffer settings. (line 129) * content, STARTUP keyword <1>: In-buffer settings. (line 80) * content, STARTUP keyword: Visibility cycling. (line 50) * contents, global visibility state: Visibility cycling. (line 22) * context-sensitive commands, hooks: Context-sensitive commands. (line 6) * copying, of subtrees: Structure editing. (line 6) * creating timestamps: Creating timestamps. (line 6) * CSS, for HTML export: CSS support. (line 6) * CUA.el: Conflicts. (line 19) * Cui, Baoqui: DocBook export. (line 6) * custom agenda views: Custom agenda views. (line 6) * custom date/time format: Custom time format. (line 6) * custom search strings: Custom searches. (line 6) * customization: Customization. (line 6) * customtime, STARTUP keyword: In-buffer settings. (line 126) * cutting, of subtrees: Structure editing. (line 6) * cycling, of TODO states: TODO basics. (line 13) * cycling, visibility: Visibility cycling. (line 6) * daily agenda: Weekly/daily agenda. (line 6) * date format, custom: Custom time format. (line 6) * date range: Timestamps. (line 40) * date stamp: Dates and Times. (line 6) * date stamps: Timestamps. (line 6) * date, reading in minibuffer: The date/time prompt. (line 6) * dates: Dates and Times. (line 6) * DEADLINE keyword: Deadlines and scheduling. (line 9) * deadlines: Timestamps. (line 6) * debugging, of table formulas: Editing and debugging formulas. (line 96) * demotion, of subtrees: Structure editing. (line 6) * dependencies, of TODO states: TODO dependencies. (line 6) * diary entries, creating from agenda: Agenda commands. (line 419) * diary integration: Weekly/daily agenda. (line 23) * dictionary word completion: Completion. (line 6) * directories, for publishing: Sources and destinations. (line 6) * dispatcher, for export commands: The export dispatcher. (line 6) * dispatching agenda commands: Agenda dispatcher. (line 6) * display changing, in agenda: Agenda commands. (line 68) * DocBook export: DocBook export. (line 6) * DocBook recursive sections: Recursive sections. (line 6) * document structure: Document Structure. (line 6) * document title, markup rules: Document title. (line 6) * Dominik, Carsten: Cooperation. (line 17) * DONE, final TODO keyword: Per-file keywords. (line 27) * drawer, for properties: Property syntax. (line 6) * drawer, for state change recording: Tracking TODO state changes. (line 6) * drawers: Drawers. (line 6) * dynamic blocks: Dynamic blocks. (line 6) * dynamic indentation: Clean view. (line 6) * editing tables: Tables. (line 6) * editing, of table formulas: Editing and debugging formulas. (line 6) * effort estimates: Effort estimates. (line 6) * effort filtering, in agenda: Agenda commands. (line 177) * Elisp links: External links. (line 6) * emacsserver: Protocols. (line 6) * emphasized text: Export options. (line 38) * evaluate time range: Creating timestamps. (line 56) * even, STARTUP keyword: In-buffer settings. (line 117) * export, selective by tags: Selective export. (line 6) * exporting: Exporting. (line 6) * exporting agenda views <1>: Exporting Agenda Views. (line 13) * exporting agenda views: Agenda commands. (line 465) * exporting, not: Comment lines. (line 6) * extended TODO keywords: TODO extensions. (line 6) * external archiving: Moving subtrees. (line 6) * external links: External links. (line 6) * external links, in HTML export: Links in HTML export. (line 6) * faces, for TODO keywords: Faces for TODO keywords. (line 6) * FAQ: Summary. (line 54) * feedback: Feedback. (line 6) * field formula: Field formulas. (line 6) * field references: References. (line 15) * file links: External links. (line 6) * file links, searching: Search options. (line 6) * file name completion: Handling links. (line 86) * files for agenda: Agenda files. (line 6) * files, adding to agenda list: Agenda files. (line 15) * files, selecting for publishing: Selecting files. (line 6) * filtering, by tag and effort, in agenda: Agenda commands. (line 177) * fixed-width sections: Export options. (line 38) * fnadjust, STARTUP keyword: In-buffer settings. (line 134) * fnauto, STARTUP keyword: In-buffer settings. (line 134) * fnconfirm, STARTUP keyword: In-buffer settings. (line 134) * fninline, STARTUP keyword: In-buffer settings. (line 134) * fnlocal, STARTUP keyword: In-buffer settings. (line 134) * fnplain, STARTUP keyword: In-buffer settings. (line 134) * fnprompt, STARTUP keyword: In-buffer settings. (line 134) * folded, subtree visibility state: Visibility cycling. (line 10) * folding, sparse trees: Sparse trees. (line 6) * following links: Handling links. (line 101) * footnote.el <1>: Cooperation. (line 75) * footnote.el: Footnote markup. (line 6) * footnotes <1>: Export options. (line 38) * footnotes: Footnotes. (line 6) * footnotes, markup rules: Footnote markup. (line 6) * format specifier: Formula syntax for Calc. (line 14) * format, of links: Link format. (line 6) * formatting source code, markup rules: Literal examples. (line 23) * formula debugging: Editing and debugging formulas. (line 96) * formula editing: Editing and debugging formulas. (line 6) * formula syntax, Calc: Formula syntax for Calc. (line 6) * formula, for individual table field: Field formulas. (line 6) * formula, for table column: Column formulas. (line 6) * formula, in tables: Built-in table editor. (line 158) * Freemind export: Freemind export. (line 6) * Gillespie, Dave: Cooperation. (line 6) * global cycling: Visibility cycling. (line 22) * global key bindings: Activation. (line 6) * global TODO list: Global TODO list. (line 6) * global visibility states: Visibility cycling. (line 22) * Gnus links: External links. (line 6) * graph, in tables: Org-Plot. (line 6) * grouping columns in tables: Column groups. (line 6) * Guerry, Bastien: LaTeX and PDF export. (line 6) * habits: Tracking your habits. (line 6) * hacking: Hacking. (line 6) * headings and sections, markup rules: Headings and sections. (line 6) * headline levels: Export options. (line 38) * headline levels, for exporting <1>: LaTeX/PDF export commands. (line 39) * headline levels, for exporting <2>: HTML Export commands. (line 45) * headline levels, for exporting: ASCII export. (line 24) * headline navigation: Motion. (line 6) * headline tagging: Tags. (line 6) * headline, promotion and demotion: Structure editing. (line 6) * headlines: Headlines. (line 6) * hide text: Visibility cycling. (line 6) * hideblocks, STARTUP keyword <1>: In-buffer settings. (line 145) * hideblocks, STARTUP keyword: Blocks. (line 13) * hidestars, STARTUP keyword: In-buffer settings. (line 117) * hiding leading stars: Clean view. (line 6) * history: History and Acknowledgments. (line 6) * hooks: Hooks. (line 6) * horizontal rules, markup rules: Horizontal rules. (line 6) * HTML entities: Special symbols. (line 6) * HTML export: HTML export. (line 6) * HTML export, CSS: CSS support. (line 6) * HTML, and Orgtbl mode: Translator functions. (line 6) * hyperlinks: Hyperlinks. (line 6) * hyperlinks, adding new types: Adding hyperlink types. (line 6) * iCalendar export: iCalendar export. (line 6) * idle, resolve, dangling: Resolving idle time. (line 6) * images, inline in DocBook: Images in DocBook export. (line 6) * images, inline in HTML: Images in HTML export. (line 6) * images, inline in LaTeX: Images in LaTeX export. (line 6) * imenu.el: Cooperation. (line 33) * in-buffer settings: In-buffer settings. (line 6) * inactive timestamp: Timestamps. (line 49) * include files, markup rules: Include files. (line 6) * indent, STARTUP keyword: In-buffer settings. (line 86) * index, of published pages: Project page index. (line 6) * Info links: External links. (line 6) * inheritance, of properties: Property inheritance. (line 6) * inheritance, of tags: Tag inheritance. (line 6) * inlined images, markup rules: Images and tables. (line 17) * inlining images in DocBook: Images in DocBook export. (line 6) * inlining images in HTML: Images in HTML export. (line 6) * inlining images in LaTeX: Images in LaTeX export. (line 6) * inserting links: Handling links. (line 65) * installation: Installation. (line 6) * internal links: Internal links. (line 6) * internal links, in HTML export: Links in HTML export. (line 6) * introduction: Introduction. (line 6) * iPhone: MobileOrg. (line 6) * IRC links: External links. (line 6) * italic text, markup rules: Emphasis and monospace. (line 6) * jumping, to headlines: Motion. (line 6) * key bindings, global: Activation. (line 6) * keyword options: Per-file keywords. (line 6) * LaTeX class: Sectioning structure. (line 6) * LaTeX entities: Special symbols. (line 6) * LaTeX export: LaTeX and PDF export. (line 6) * LaTeX fragments <1>: Export options. (line 38) * LaTeX fragments: LaTeX fragments. (line 6) * LaTeX fragments, markup rules: Special symbols. (line 6) * LaTeX fragments, preview: Previewing LaTeX fragments. (line 6) * LaTeX interpretation: Embedded LaTeX. (line 6) * LaTeX sectioning structure: Sectioning structure. (line 6) * LaTeX, and Orgtbl mode: A LaTeX example. (line 6) * level, require for tags/property match: Matching tags and properties. (line 59) * line-break preservation: Export options. (line 38) * link abbreviations: Link abbreviations. (line 6) * link abbreviations, completion of: Completion. (line 6) * link completion: Handling links. (line 65) * link format: Link format. (line 6) * links, external: External links. (line 6) * links, finding next/previous: Handling links. (line 137) * links, handling: Handling links. (line 6) * links, in HTML export: Links in HTML export. (line 6) * links, internal: Internal links. (line 6) * links, publishing: Publishing links. (line 6) * links, radio targets: Radio targets. (line 6) * links, returning to: Handling links. (line 131) * Lisp forms, as table formulas: Formula syntax for Lisp. (line 6) * lists, in other modes: Tables in arbitrary syntax. (line 6) * lists, markup rules: Lists. (line 6) * lists, ordered: Plain lists. (line 6) * lists, plain: Plain lists. (line 6) * literal examples, markup rules: Literal examples. (line 6) * logdone, STARTUP keyword: In-buffer settings. (line 99) * logging, of progress: Progress logging. (line 6) * lognoteclock-out, STARTUP keyword: In-buffer settings. (line 99) * lognotedone, STARTUP keyword: In-buffer settings. (line 99) * lognoteredeadline, STARTUP keyword: In-buffer settings. (line 99) * lognoterepeat, STARTUP keyword: In-buffer settings. (line 99) * lognotereschedule, STARTUP keyword: In-buffer settings. (line 99) * logredeadline, STARTUP keyword: In-buffer settings. (line 99) * logrepeat, STARTUP keyword: In-buffer settings. (line 99) * logreschedule, STARTUP keyword: In-buffer settings. (line 99) * Ludlam, Eric M.: Cooperation. (line 46) * macro replacement, during export: Macro replacement. (line 6) * maintainer: Feedback. (line 6) * mapping entries, API: Using the mapping API. (line 6) * mark ring: Handling links. (line 127) * marking characters, tables: Advanced features. (line 38) * match view: Matching tags and properties. (line 6) * matching, of properties: Matching tags and properties. (line 6) * matching, of tags: Matching tags and properties. (line 6) * matching, tags: Tags. (line 6) * math symbols: Special symbols. (line 6) * MH-E links: External links. (line 6) * mind map: Freemind export. (line 6) * minor mode for structure editing: Orgstruct mode. (line 6) * minor mode for tables: Orgtbl mode. (line 6) * MobileOrg: MobileOrg. (line 6) * mode, for calc: Formula syntax for Calc. (line 14) * motion commands in agenda: Agenda commands. (line 19) * motion, between headlines: Motion. (line 6) * name, of column or field: References. (line 84) * named references: References. (line 84) * names as TODO keywords: TODO types. (line 6) * narrow columns in tables: Column width and alignment. (line 6) * noalign, STARTUP keyword: In-buffer settings. (line 94) * nofnadjust, STARTUP keyword: In-buffer settings. (line 134) * nofninline, STARTUP keyword: In-buffer settings. (line 134) * nohideblocks, STARTUP keyword <1>: In-buffer settings. (line 145) * nohideblocks, STARTUP keyword: Blocks. (line 13) * noindent, STARTUP keyword: In-buffer settings. (line 86) * nologdone, STARTUP keyword: In-buffer settings. (line 99) * nolognoteclock-out, STARTUP keyword: In-buffer settings. (line 99) * nologredeadline, STARTUP keyword: In-buffer settings. (line 99) * nologrepeat, STARTUP keyword: In-buffer settings. (line 99) * nologreschedule, STARTUP keyword: In-buffer settings. (line 99) * O'Toole, David: Publishing. (line 6) * occur, command: Sparse trees. (line 6) * odd, STARTUP keyword: In-buffer settings. (line 117) * odd-levels-only outlines: Clean view. (line 6) * option keyword completion: Completion. (line 6) * options, for custom agenda views: Setting Options. (line 6) * options, for customization: Customization. (line 6) * options, for export: Export options. (line 6) * options, for publishing: Publishing options. (line 6) * ordered lists: Plain lists. (line 6) * Org mode, turning on: Activation. (line 23) * org-agenda, command: Weekly/daily agenda. (line 9) * org-hide-block-startup: In-buffer settings. (line 144) * org-list-insert-radio-list: Radio lists. (line 6) * org-publish-project-alist: Project alist. (line 6) * Orgstruct mode: Orgstruct mode. (line 6) * Orgtbl mode <1>: Tables in arbitrary syntax. (line 6) * Orgtbl mode: Orgtbl mode. (line 6) * Ota, Takaaki: Cooperation. (line 53) * Outline mode: Outlines. (line 6) * outline tree: Headlines. (line 6) * outlines: Outlines. (line 6) * overview, global visibility state: Visibility cycling. (line 22) * overview, STARTUP keyword <1>: In-buffer settings. (line 80) * overview, STARTUP keyword: Visibility cycling. (line 50) * packages, interaction with other: Interaction. (line 6) * paragraphs, markup rules: Paragraphs. (line 6) * pasting, of subtrees: Structure editing. (line 6) * PDF export <1>: DocBook export. (line 6) * PDF export: LaTeX and PDF export. (line 6) * per-file keywords: Per-file keywords. (line 6) * plain lists: Plain lists. (line 6) * plain text external links: External links. (line 52) * plot tables using gnuplot: Org-Plot. (line 6) * presentation, of agenda items: Presentation and sorting. (line 6) * printing sparse trees: Sparse trees. (line 47) * priorities: Priorities. (line 6) * priorities, of agenda items: Sorting of agenda items. (line 6) * progress logging: Progress logging. (line 6) * projects, for publishing: Project alist. (line 6) * promotion, of subtrees: Structure editing. (line 6) * properties: Properties and Columns. (line 6) * properties, API <1>: Using the property API. (line 6) * properties, API: Property API. (line 6) * properties, column view: Defining columns. (line 6) * properties, inheritance: Property inheritance. (line 6) * properties, searching: Property searches. (line 6) * properties, special: Special properties. (line 6) * property EXPORT_FILE_NAME <1>: DocBook export commands. (line 7) * property EXPORT_FILE_NAME: LaTeX/PDF export commands. (line 7) * property syntax: Property syntax. (line 6) * property, _ALL: Property syntax. (line 37) * property, ARCHIVE <1>: Moving subtrees. (line 29) * property, ARCHIVE: Property inheritance. (line 32) * property, ATTACH_DIR: Attachments. (line 71) * property, ATTACH_DIR_INHERIT: Attachments. (line 76) * property, CATEGORY <1>: Categories. (line 12) * property, CATEGORY: Property inheritance. (line 28) * property, COLUMNS <1>: In-buffer settings. (line 30) * property, COLUMNS: Property inheritance. (line 20) * property, COOKIE_DATA <1>: Checkboxes. (line 30) * property, COOKIE_DATA: Breaking down tasks. (line 21) * property, CUSTOM_ID <1>: Handling links. (line 21) * property, CUSTOM_ID: Internal links. (line 6) * property, DESCRIPTION: iCalendar export. (line 43) * property, Effort: Effort estimates. (line 6) * property, EXPORT_FILE_NAME <1>: HTML Export commands. (line 7) * property, EXPORT_FILE_NAME: ASCII export. (line 10) * property, EXPORT_TITLE: Document title. (line 15) * property, ID <1>: iCalendar export. (line 19) * property, ID <2>: Capturing column view. (line 22) * property, ID: Handling links. (line 21) * property, LATEX_CLASS: Sectioning structure. (line 8) * property, LOCATION: iCalendar export. (line 43) * property, LOG_INTO_DRAWER: Tracking TODO state changes. (line 6) * property, LOGGING <1>: Property inheritance. (line 36) * property, LOGGING: Tracking TODO state changes. (line 41) * property, ORDERED <1>: Checkboxes. (line 46) * property, ORDERED: TODO dependencies. (line 6) * property, special, ALLTAGS: Special properties. (line 13) * property, special, CATEGORY: Special properties. (line 13) * property, special, CLOCKSUM <1>: Agenda column view. (line 28) * property, special, CLOCKSUM: Special properties. (line 13) * property, special, CLOSED: Special properties. (line 13) * property, special, DEADLINE: Special properties. (line 13) * property, special, ITEM: Special properties. (line 13) * property, special, PRIORITY: Special properties. (line 13) * property, special, SCHEDULED: Special properties. (line 13) * property, special, TAGS: Special properties. (line 13) * property, special, TIMESTAMP: Special properties. (line 13) * property, special, TIMESTAMP_IA: Special properties. (line 13) * property, special, TODO: Special properties. (line 13) * property, SUMMARY: iCalendar export. (line 43) * property, VISIBILITY: Visibility cycling. (line 60) * property: CLOCK_MODELINE_TOTAL: Clocking work time. (line 31) * property: LAST_REPEAT: Clocking work time. (line 31) * protocols, for external access: Protocols. (line 6) * publishing: Publishing. (line 6) * query editing, in agenda: Agenda commands. (line 177) * quoted HTML tags: Export options. (line 38) * radio lists: Radio lists. (line 6) * radio tables: Radio tables. (line 6) * radio targets: Radio targets. (line 6) * range references: References. (line 62) * ranges, time: Timestamps. (line 6) * recomputing table fields: Updating the table. (line 6) * references: References. (line 6) * references, named: References. (line 84) * references, remote: References. (line 105) * references, to a different table: References. (line 105) * references, to fields: References. (line 15) * references, to ranges: References. (line 62) * refiling notes: Refiling notes. (line 6) * region, active <1>: DocBook export commands. (line 6) * region, active <2>: LaTeX/PDF export commands. (line 6) * region, active <3>: HTML Export commands. (line 6) * region, active <4>: ASCII export. (line 9) * region, active <5>: Built-in table editor. (line 158) * region, active: Structure editing. (line 124) * regular expressions, with tags search: Matching tags and properties. (line 55) * relative timer: Relative timer. (line 6) * remember.el <1>: Cooperation. (line 42) * remember.el: Remember. (line 6) * remote editing, bulk, from agenda: Agenda commands. (line 385) * remote editing, from agenda: Agenda commands. (line 256) * remote editing, undo: Agenda commands. (line 257) * remote references: References. (line 105) * repeated tasks: Repeated tasks. (line 6) * resolve idle time: Resolving idle time. (line 6) * RMAIL links: External links. (line 6) * Rose, Sebastian: Javascript support. (line 6) * RSS feeds: RSS Feeds. (line 6) * rsync: Uploading files. (line 6) * SCHEDULED keyword: Deadlines and scheduling. (line 27) * scheduling: Timestamps. (line 6) * Scripts, for agenda processing: Extracting agenda information. (line 6) * search option in file links: Search options. (line 6) * search strings, custom: Custom searches. (line 6) * search view: Search view. (line 6) * searching for tags: Tag searches. (line 6) * searching, for text: Search view. (line 6) * searching, of properties: Property searches. (line 6) * section-numbers: Export options. (line 38) * setting tags: Setting tags. (line 6) * SHELL links: External links. (line 6) * shift-selection-mode <1>: Conflicts. (line 6) * shift-selection-mode: Plain lists. (line 88) * show all, command: Visibility cycling. (line 33) * show all, global visibility state: Visibility cycling. (line 22) * show hidden text: Visibility cycling. (line 6) * showall, STARTUP keyword <1>: In-buffer settings. (line 80) * showall, STARTUP keyword: Visibility cycling. (line 50) * showeverything, STARTUP keyword <1>: In-buffer settings. (line 80) * showeverything, STARTUP keyword: Visibility cycling. (line 50) * showstars, STARTUP keyword: In-buffer settings. (line 117) * sorting, of agenda items: Sorting of agenda items. (line 6) * sorting, of subtrees: Structure editing. (line 6) * sparse tree, for deadlines: Inserting deadline/schedule. (line 28) * sparse tree, for TODO: TODO basics. (line 34) * sparse tree, tag based: Tags. (line 6) * sparse trees: Sparse trees. (line 6) * Special characters in DocBook export: Special characters. (line 6) * special keywords: In-buffer settings. (line 6) * special strings: Export options. (line 38) * special symbols: Special symbols. (line 6) * speed keys: Speed keys. (line 6) * speedbar.el: Cooperation. (line 46) * spreadsheet capabilities: The spreadsheet. (line 6) * square brackets, around links: External links. (line 52) * statistics, for checkboxes: Checkboxes. (line 30) * statistics, for TODO items: Breaking down tasks. (line 6) * storing links: Handling links. (line 9) * Storm, Kim. F.: Conflicts. (line 19) * strike-through text, markup rules: Emphasis and monospace. (line 6) * structure editing: Structure editing. (line 6) * structure of document: Document Structure. (line 6) * sublevels, inclusion into tags match: Tag inheritance. (line 6) * sublevels, inclusion into TODO list: Global TODO list. (line 34) * subscript: Subscripts and superscripts. (line 6) * subtree cycling: Visibility cycling. (line 10) * subtree visibility states: Visibility cycling. (line 10) * subtree, cut and paste: Structure editing. (line 6) * subtree, subtree visibility state: Visibility cycling. (line 10) * subtrees, cut and paste: Structure editing. (line 6) * summary: Summary. (line 6) * superscript: Subscripts and superscripts. (line 6) * syntax, of formulas: Formula syntax for Calc. (line 6) * table editor, built-in: Built-in table editor. (line 6) * table editor, table.el: Cooperation. (line 53) * table of contents: Export options. (line 38) * table of contents, markup rules: Table of contents. (line 6) * table.el: Cooperation. (line 50) * tables <1>: Export options. (line 38) * tables: Tables. (line 6) * tables, in DocBook export: Tables in DocBook export. (line 6) * tables, in HTML: Tables in HTML export. (line 6) * tables, in LaTeX export: Tables in LaTeX export. (line 6) * tables, in other modes: Tables in arbitrary syntax. (line 6) * tables, markup rules: Images and tables. (line 6) * tag completion: Completion. (line 6) * tag filtering, in agenda: Agenda commands. (line 177) * tag inheritance: Tag inheritance. (line 6) * tag searches: Tag searches. (line 6) * tags: Tags. (line 6) * tags view: Matching tags and properties. (line 6) * tags, setting: Setting tags. (line 6) * targets, for links: Internal links. (line 6) * targets, radio: Radio targets. (line 6) * tasks, breaking down: Breaking down tasks. (line 6) * tasks, repeated: Repeated tasks. (line 6) * templates, for Remember: Remember templates. (line 6) * TeX interpretation: Embedded LaTeX. (line 6) * TeX macros <1>: Export options. (line 38) * TeX macros: Special symbols. (line 6) * TeX symbol completion: Completion. (line 6) * TeX-like syntax for sub- and superscripts: Export options. (line 38) * text areas, in HTML: Text areas in HTML export. (line 6) * text before first headline, markup rules: Initial text. (line 6) * text search: Search view. (line 6) * thanks: History and Acknowledgments. (line 6) * time format, custom: Custom time format. (line 6) * time grid: Time-of-day specifications. (line 26) * time info, in export: Export options. (line 38) * time, reading in minibuffer: The date/time prompt. (line 6) * time-of-day specification: Time-of-day specifications. (line 6) * time-sorted view: Timeline. (line 6) * timeline, single file: Timeline. (line 6) * timerange: Timestamps. (line 40) * times: Dates and Times. (line 6) * timestamp <1>: Timestamps. (line 14) * timestamp: Dates and Times. (line 6) * timestamp, inactive: Timestamps. (line 49) * timestamp, with repeater interval: Timestamps. (line 24) * timestamps: Timestamps. (line 6) * timestamps, creating: Creating timestamps. (line 6) * TODO dependencies: TODO dependencies. (line 6) * TODO items: TODO Items. (line 6) * TODO keyword matching: Global TODO list. (line 17) * TODO keyword matching, with tags search: Matching tags and properties. (line 59) * TODO keyword sets: Multiple sets in one file. (line 6) * TODO keywords completion: Completion. (line 6) * TODO list, global: Global TODO list. (line 6) * TODO types: TODO types. (line 6) * TODO workflow: Workflow states. (line 6) * transient mark mode <1>: Built-in table editor. (line 158) * transient mark mode: Structure editing. (line 124) * transient-mark-mode <1>: DocBook export commands. (line 6) * transient-mark-mode <2>: LaTeX/PDF export commands. (line 6) * transient-mark-mode <3>: HTML Export commands. (line 6) * transient-mark-mode: ASCII export. (line 9) * translator function: Translator functions. (line 6) * trees, sparse: Sparse trees. (line 6) * trees, visibility: Visibility cycling. (line 6) * tty key bindings: TTY keys. (line 6) * types as TODO keywords: TODO types. (line 6) * underlined text, markup rules: Emphasis and monospace. (line 6) * undoing remote-editing events: Agenda commands. (line 257) * unison: Uploading files. (line 6) * updating, table: Updating the table. (line 6) * URL links: External links. (line 6) * USENET links: External links. (line 6) * variables, for customization: Customization. (line 6) * vectors, in table calculations: Formula syntax for Calc. (line 11) * verbatim text, markup rules: Emphasis and monospace. (line 6) * viper.el: Conflicts. (line 53) * visibility cycling: Visibility cycling. (line 6) * visibility cycling, drawers: Drawers. (line 6) * visible text, printing: Sparse trees. (line 47) * VM links: External links. (line 6) * WANDERLUST links: External links. (line 6) * weekly agenda: Weekly/daily agenda. (line 6) * Wiegley, John: Cooperation. (line 42) * windmove.el: Conflicts. (line 49) * workflow states as TODO keywords: Workflow states. (line 6) * XEmacs: Installation. (line 6) * XOXO export: XOXO export. (line 6) * yasnippet.el: Conflicts. (line 39)  File: org, Node: Key Index, Next: Variable Index, Prev: Main Index, Up: Top Key Index ********* [index] * Menu: * $: Agenda commands. (line 289) * ': CDLaTeX mode. (line 42) * +: Agenda commands. (line 311) * ,: Agenda commands. (line 303) * -: Agenda commands. (line 317) * .: Agenda commands. (line 94) * /: Agenda commands. (line 177) * :: Agenda commands. (line 299) * < <1>: Agenda files. (line 56) * < <2>: The date/time prompt. (line 65) * <: Using column view. (line 69) * <1>: Agenda commands. (line 41) * <2>: The date/time prompt. (line 65) * <3>: Setting tags. (line 115) * : Built-in table editor. (line 65) * <1>: Agenda commands. (line 28) * : Setting tags. (line 112) * <1>: CDLaTeX mode. (line 22) * <2>: Agenda commands. (line 35) * <3>: Setting tags. (line 107) * <4>: Editing and debugging formulas. (line 56) * <5>: Built-in table editor. (line 58) * <6>: Plain lists. (line 55) * <7>: Structure editing. (line 32) * : Visibility cycling. (line 10) * > <1>: Agenda commands. (line 362) * > <2>: Agenda files. (line 60) * > <3>: The date/time prompt. (line 65) * >: Using column view. (line 69) * ?: Pulling from MobileOrg. (line 33) * [: Agenda commands. (line 114) * \: Agenda commands. (line 236) * ]: Agenda commands. (line 243) * ^: CDLaTeX mode. (line 32) * _: CDLaTeX mode. (line 32) * `: CDLaTeX mode. (line 38) * a <1>: Agenda commands. (line 277) * a: Using column view. (line 58) * B: Agenda commands. (line 394) * b: Agenda commands. (line 91) * C: Agenda commands. (line 447) * c: Agenda commands. (line 414) * C-#: Advanced features. (line 9) * C-': Agenda files. (line 22) * C-,: Agenda files. (line 22) * C-: Structure editing. (line 18) * C-_: Agenda commands. (line 257) * C-c !: Creating timestamps. (line 15) * C-c #: Checkboxes. (line 83) * C-c $: Moving subtrees. (line 9) * C-c %: Handling links. (line 127) * C-c &: Handling links. (line 131) * C-c ' <1>: Include files. (line 21) * C-c ' <2>: Literal examples. (line 65) * C-c ': Editing and debugging formulas. (line 35) * C-c * <1>: Updating the table. (line 13) * C-c * <2>: Plain lists. (line 123) * C-c *: Structure editing. (line 113) * C-c +: Built-in table editor. (line 158) * C-c ,: Priorities. (line 21) * C-c - <1>: Built-in table editor. (line 101) * C-c -: Plain lists. (line 113) * C-c .: Creating timestamps. (line 10) * C-c / <1>: Conflicts. (line 53) * C-c /: Sparse trees. (line 15) * C-c / a: Inserting deadline/schedule. (line 38) * C-c / b: Inserting deadline/schedule. (line 35) * C-c / d: Inserting deadline/schedule. (line 28) * C-c / m <1>: Property searches. (line 9) * C-c / m: Tag searches. (line 9) * C-c / p: Property searches. (line 29) * C-c / r: Sparse trees. (line 17) * C-c / t: TODO basics. (line 34) * C-c ;: Comment lines. (line 12) * C-c <: Creating timestamps. (line 26) * C-c : Built-in table editor. (line 105) * C-c = <1>: Editing and debugging formulas. (line 13) * C-c =: Column formulas. (line 27) * C-c >: Creating timestamps. (line 30) * C-c ?: Editing and debugging formulas. (line 23) * C-c [: Agenda files. (line 15) * C-c \ <1>: Property searches. (line 9) * C-c \: Tag searches. (line 9) * C-c ]: Agenda files. (line 19) * C-c ^ <1>: Built-in table editor. (line 109) * C-c ^ <2>: Plain lists. (line 133) * C-c ^: Structure editing. (line 94) * C-c `: Built-in table editor. (line 176) * C-c a !: Stuck projects. (line 14) * C-c a #: Stuck projects. (line 13) * C-c a ?: Pulling from MobileOrg. (line 43) * C-c a a: Weekly/daily agenda. (line 9) * C-c a C: Storing searches. (line 9) * C-c a e: Exporting Agenda Views. (line 64) * C-c a L: Timeline. (line 10) * C-c a M: Matching tags and properties. (line 17) * C-c a m: Matching tags and properties. (line 12) * C-c a M: Property searches. (line 16) * C-c a m: Property searches. (line 12) * C-c a M: Tag searches. (line 17) * C-c a m: Tag searches. (line 13) * C-c a s: Search view. (line 9) * C-c a T: Global TODO list. (line 14) * C-c a t <1>: Global TODO list. (line 9) * C-c a t: TODO basics. (line 46) * C-c C-a <1>: Agenda commands. (line 326) * C-c C-a: Attachments. (line 26) * C-c C-a a: Attachments. (line 31) * C-c C-a c: Attachments. (line 37) * C-c C-a D: Attachments. (line 66) * C-c C-a d: Attachments. (line 63) * C-c C-a F: Attachments. (line 60) * C-c C-a f: Attachments. (line 57) * C-c C-a i: Attachments. (line 75) * C-c C-a l: Attachments. (line 37) * C-c C-a m: Attachments. (line 37) * C-c C-a n: Attachments. (line 41) * C-c C-a O: Attachments. (line 54) * C-c C-a o: Attachments. (line 48) * C-c C-a s: Attachments. (line 70) * C-c C-a z: Attachments. (line 44) * C-c C-b: Motion. (line 15) * C-c C-c <1>: Cooperation. (line 53) * C-c C-c <2>: The very busy C-c C-c key. (line 6) * C-c C-c <3>: Previewing LaTeX fragments. (line 15) * C-c C-c <4>: Clocking work time. (line 56) * C-c C-c <5>: Capturing column view. (line 51) * C-c C-c <6>: Using column view. (line 51) * C-c C-c <7>: Property syntax. (line 57) * C-c C-c <8>: Setting tags. (line 18) * C-c C-c <9>: Checkboxes. (line 52) * C-c C-c <10>: Editing and debugging formulas. (line 45) * C-c C-c <11>: Built-in table editor. (line 57) * C-c C-c <12>: Footnotes. (line 87) * C-c C-c: Plain lists. (line 106) * C-c C-d <1>: Agenda commands. (line 332) * C-c C-d: Inserting deadline/schedule. (line 9) * C-c C-e: The export dispatcher. (line 12) * C-c C-e A: ASCII export. (line 16) * C-c C-e a: ASCII export. (line 9) * C-c C-e b: HTML Export commands. (line 13) * C-c C-e C: Triggering publication. (line 8) * C-c C-e c: iCalendar export. (line 36) * C-c C-e D: DocBook export commands. (line 6) * C-c C-e d: LaTeX/PDF export commands. (line 33) * C-c C-e E: Triggering publication. (line 16) * C-c C-e F: Triggering publication. (line 13) * C-c C-e H: HTML Export commands. (line 16) * C-c C-e h: HTML Export commands. (line 6) * C-c C-e I: iCalendar export. (line 32) * C-c C-e i: iCalendar export. (line 30) * C-c C-e L: LaTeX/PDF export commands. (line 13) * C-c C-e l: LaTeX/PDF export commands. (line 6) * C-c C-e m: Freemind export. (line 8) * C-c C-e P: Triggering publication. (line 10) * C-c C-e p: LaTeX/PDF export commands. (line 30) * C-c C-e R: HTML Export commands. (line 19) * C-c C-e t: Export options. (line 16) * C-c C-e v: XOXO export. (line 11) * C-c C-e V: DocBook export commands. (line 13) * C-c C-e v <1>: The export dispatcher. (line 17) * C-c C-e v: Sparse trees. (line 47) * C-c C-e v a: ASCII export. (line 19) * C-c C-e v b: HTML Export commands. (line 25) * C-c C-e v D: DocBook export commands. (line 25) * C-c C-e v H: HTML Export commands. (line 25) * C-c C-e v h: HTML Export commands. (line 25) * C-c C-e v L: LaTeX/PDF export commands. (line 16) * C-c C-e v l: LaTeX/PDF export commands. (line 16) * C-c C-e v R: HTML Export commands. (line 25) * C-c C-e x: XOXO export. (line 10) * C-c C-f: Motion. (line 12) * C-c C-j: Motion. (line 21) * C-c C-l: Handling links. (line 65) * C-c C-n: Motion. (line 8) * C-c C-o <1>: Agenda commands. (line 60) * C-c C-o <2>: Creating timestamps. (line 35) * C-c C-o <3>: Handling links. (line 101) * C-c C-o: Footnotes. (line 91) * C-c C-p: Motion. (line 9) * C-c C-q <1>: Setting tags. (line 10) * C-c C-q: Editing and debugging formulas. (line 49) * C-c C-r <1>: Editing and debugging formulas. (line 52) * C-c C-r: Visibility cycling. (line 34) * C-c C-s <1>: Agenda commands. (line 329) * C-c C-s: Inserting deadline/schedule. (line 14) * C-c C-t <1>: Clocking work time. (line 61) * C-c C-t: TODO basics. (line 13) * C-c C-u: Motion. (line 18) * C-c C-v: TODO basics. (line 34) * C-c C-w <1>: Agenda commands. (line 274) * C-c C-w <2>: Refiling notes. (line 11) * C-c C-w: Structure editing. (line 90) * C-c C-x ,: Relative timer. (line 21) * C-c C-x -: Relative timer. (line 13) * C-c C-x .: Relative timer. (line 10) * C-c C-x 0: Relative timer. (line 29) * C-c C-x <: Agenda files. (line 42) * C-c C-x > <1>: Agenda commands. (line 170) * C-c C-x >: Agenda files. (line 49) * C-c C-x A: Agenda commands. (line 285) * C-c C-x a: Agenda commands. (line 282) * C-c C-x A: Internal archiving. (line 49) * C-c C-x a: Internal archiving. (line 36) * C-c C-x b <1>: Agenda commands. (line 51) * C-c C-x b: Visibility cycling. (line 42) * C-c C-x c: Structure editing. (line 82) * C-c C-x C-a <1>: Agenda commands. (line 277) * C-c C-x C-a: Archiving. (line 11) * C-c C-x C-b: Checkboxes. (line 55) * C-c C-x C-c <1>: Agenda column view. (line 11) * C-c C-x C-c <2>: Agenda commands. (line 159) * C-c C-x C-c: Using column view. (line 9) * C-c C-x C-d: Clocking work time. (line 74) * C-c C-x C-e <1>: Effort estimates. (line 17) * C-c C-x C-e: Clocking work time. (line 53) * C-c C-x C-i: Clocking work time. (line 21) * C-c C-x C-j: Clocking work time. (line 69) * C-c C-x C-k: Inserting deadline/schedule. (line 22) * C-c C-x C-l: Previewing LaTeX fragments. (line 9) * C-c C-x C-n: Handling links. (line 137) * C-c C-x C-o: Clocking work time. (line 45) * C-c C-x C-p: Handling links. (line 137) * C-c C-x C-r: Clocking work time. (line 82) * C-c C-x C-s <1>: Agenda commands. (line 289) * C-c C-x C-s: Moving subtrees. (line 9) * C-c C-x C-t: Custom time format. (line 12) * C-c C-x C-u <1>: Dynamic blocks. (line 22) * C-c C-x C-u <2>: Clocking work time. (line 142) * C-c C-x C-u: Capturing column view. (line 54) * C-c C-x C-w <1>: Built-in table editor. (line 130) * C-c C-x C-w: Structure editing. (line 56) * C-c C-x C-x: Clocking work time. (line 65) * C-c C-x C-y <1>: Built-in table editor. (line 134) * C-c C-x C-y: Structure editing. (line 64) * C-c C-x e: Effort estimates. (line 14) * C-c C-x f: Footnotes. (line 51) * C-c C-x G: RSS Feeds. (line 23) * C-c C-x g: RSS Feeds. (line 21) * C-c C-x i: Capturing column view. (line 49) * C-c C-x M-w <1>: Built-in table editor. (line 126) * C-c C-x M-w: Structure editing. (line 60) * C-c C-x o <1>: Checkboxes. (line 75) * C-c C-x o: TODO dependencies. (line 29) * C-c C-x p: Property syntax. (line 48) * C-c C-y <1>: Clocking work time. (line 56) * C-c C-y: Creating timestamps. (line 56) * C-c l <1>: Literal examples. (line 73) * C-c l: Handling links. (line 9) * C-c { <1>: CDLaTeX mode. (line 20) * C-c {: Editing and debugging formulas. (line 32) * C-c |: Built-in table editor. (line 41) * C-c }: Editing and debugging formulas. (line 27) * C-c ~: Cooperation. (line 64) * C-k: Agenda commands. (line 268) * C-S- <1>: Agenda commands. (line 265) * C-S-: Multiple sets in one file. (line 25) * C-S-: Structure editing. (line 27) * C-S- <1>: Agenda commands. (line 265) * C-S-: Multiple sets in one file. (line 25) * C-TAB: Internal archiving. (line 46) * C-u C-c !: Creating timestamps. (line 19) * C-u C-c *: Updating the table. (line 16) * C-u C-c .: Creating timestamps. (line 19) * C-u C-c = <1>: Editing and debugging formulas. (line 13) * C-u C-c =: Field formulas. (line 26) * C-u C-c C-c: Updating the table. (line 19) * C-u C-c C-l: Handling links. (line 86) * C-u C-c C-t: TODO basics. (line 22) * C-u C-c C-w: Refiling notes. (line 26) * C-u C-c C-x ,: Relative timer. (line 24) * C-u C-c C-x a: Internal archiving. (line 39) * C-u C-c C-x C-s: Moving subtrees. (line 11) * C-u C-c C-x C-u <1>: Dynamic blocks. (line 23) * C-u C-c C-x C-u <2>: Clocking work time. (line 144) * C-u C-c C-x C-u: Capturing column view. (line 56) * C-u C-u : Visibility cycling. (line 63) * C-u C-u C-c *: Updating the table. (line 22) * C-u C-u C-c =: Editing and debugging formulas. (line 17) * C-u C-u C-c C-c: Updating the table. (line 22) * C-u C-u C-c C-e: The export dispatcher. (line 21) * C-u C-u C-c C-t: Multiple sets in one file. (line 25) * C-u C-u C-c C-w: Refiling notes. (line 29) * C-u C-u C-u : Visibility cycling. (line 33) * C-u C-u C-u C-c C-t: TODO dependencies. (line 34) * C-x C-s <1>: Agenda commands. (line 154) * C-x C-s: Editing and debugging formulas. (line 45) * C-x C-w <1>: Exporting Agenda Views. (line 12) * C-x C-w: Agenda commands. (line 464) * C-x n s: Structure editing. (line 107) * C-x n w: Structure editing. (line 110) * C-y: Structure editing. (line 70) * D: Agenda commands. (line 100) * d: Agenda commands. (line 69) * E: Agenda commands. (line 132) * e: Using column view. (line 45) * f: Agenda commands. (line 85) * F: Agenda commands. (line 44) * g: Agenda commands. (line 151) * G: Agenda commands. (line 140) * g: Using column view. (line 23) * H: Agenda commands. (line 451) * i: Agenda commands. (line 419) * I: Agenda commands. (line 367) * J: Agenda commands. (line 379) * j: Agenda commands. (line 97) * k: Agenda commands. (line 335) * k a: Inserting deadline/schedule. (line 22) * k s: Inserting deadline/schedule. (line 22) * l: Agenda commands. (line 104) * L: Agenda commands. (line 32) * M: Agenda commands. (line 438) * m: Agenda commands. (line 385) * M- <1>: Editing and debugging formulas. (line 75) * M-: Built-in table editor. (line 90) * M- <1>: Built-in table editor. (line 82) * M-: Structure editing. (line 38) * M- <1>: Relative timer. (line 17) * M- <2>: Built-in table editor. (line 141) * M- <3>: Plain lists. (line 65) * M-: Structure editing. (line 6) * M- <1>: Built-in table editor. (line 82) * M-: Structure editing. (line 41) * M- <1>: Completion. (line 16) * M- <2>: Property syntax. (line 45) * M- <3>: Setting tags. (line 6) * M- <4>: Per-file keywords. (line 24) * M-: Editing and debugging formulas. (line 63) * M- <1>: Editing and debugging formulas. (line 75) * M-: Built-in table editor. (line 90) * M-a: Built-in table editor. (line 70) * M-e: Built-in table editor. (line 74) * M-S- <1>: Editing and debugging formulas. (line 71) * M-S- <2>: Built-in table editor. (line 97) * M-S- <3>: Plain lists. (line 91) * M-S-: Structure editing. (line 53) * M-S- <1>: The date/time prompt. (line 65) * M-S- <2>: Built-in table editor. (line 84) * M-S- <3>: Plain lists. (line 97) * M-S-: Structure editing. (line 44) * M-S- <1>: Checkboxes. (line 72) * M-S- <2>: Plain lists. (line 75) * M-S-: Structure editing. (line 23) * M-S- <1>: The date/time prompt. (line 65) * M-S- <2>: Built-in table editor. (line 87) * M-S- <3>: Plain lists. (line 97) * M-S-: Structure editing. (line 47) * M-S- <1>: Editing and debugging formulas. (line 71) * M-S- <2>: Built-in table editor. (line 94) * M-S- <3>: Plain lists. (line 91) * M-S-: Structure editing. (line 50) * M-x org-iswitchb: Agenda files. (line 26) * mouse-1 <1>: Agenda commands. (line 35) * mouse-1 <2>: The date/time prompt. (line 65) * mouse-1 <3>: Handling links. (line 118) * mouse-1: Footnotes. (line 91) * mouse-2 <1>: Agenda commands. (line 35) * mouse-2 <2>: Handling links. (line 118) * mouse-2: Footnotes. (line 91) * mouse-3 <1>: Agenda commands. (line 28) * mouse-3: Handling links. (line 123) * n <1>: Agenda commands. (line 19) * n: Using column view. (line 42) * O: Agenda commands. (line 371) * o: Agenda commands. (line 68) * P: Agenda commands. (line 308) * p <1>: Agenda commands. (line 20) * p: Using column view. (line 42) * q <1>: Agenda commands. (line 477) * q: Using column view. (line 26) * r: Agenda commands. (line 144) * R: Agenda commands. (line 125) * r <1>: Global TODO list. (line 22) * r: Using column view. (line 19) * RET: Handling links. (line 101) * S: Agenda commands. (line 442) * s: Agenda commands. (line 154) * S- <1>: Agenda commands. (line 317) * S- <2>: The date/time prompt. (line 65) * S- <3>: Creating timestamps. (line 44) * S- <4>: Priorities. (line 26) * S- <5>: Editing and debugging formulas. (line 66) * S-: Plain lists. (line 84) * S- <1>: Agenda commands. (line 358) * S- <2>: Clocking work time. (line 148) * S- <3>: The date/time prompt. (line 65) * S- <4>: Creating timestamps. (line 39) * S- <5>: Using column view. (line 35) * S- <6>: Property syntax. (line 65) * S- <7>: Multiple sets in one file. (line 32) * S- <8>: TODO basics. (line 28) * S- <9>: Editing and debugging formulas. (line 66) * S-: Plain lists. (line 128) * S-: Built-in table editor. (line 161) * S- <1>: Agenda commands. (line 347) * S- <2>: Clocking work time. (line 148) * S- <3>: The date/time prompt. (line 65) * S- <4>: Creating timestamps. (line 39) * S- <5>: Using column view. (line 35) * S- <6>: Property syntax. (line 65) * S- <7>: Multiple sets in one file. (line 32) * S- <8>: TODO basics. (line 28) * S- <9>: Editing and debugging formulas. (line 66) * S-: Plain lists. (line 128) * S- <1>: Built-in table editor. (line 62) * S-: Visibility cycling. (line 22) * S- <1>: Agenda commands. (line 311) * S- <2>: The date/time prompt. (line 65) * S- <3>: Creating timestamps. (line 44) * S- <4>: Priorities. (line 26) * S- <5>: Editing and debugging formulas. (line 66) * S-: Plain lists. (line 84) * S-M-: Using column view. (line 73) * S-M-: TODO basics. (line 53) * S-M-: Using column view. (line 70) * T: Agenda commands. (line 294) * t: Agenda commands. (line 261) * U: Agenda commands. (line 391) * u: Agenda commands. (line 388) * v: Using column view. (line 54) * v [: Agenda commands. (line 114) * v A: Agenda commands. (line 118) * v a: Agenda commands. (line 118) * v d: Agenda commands. (line 69) * v E: Agenda commands. (line 132) * v l: Agenda commands. (line 104) * v m: Agenda commands. (line 69) * v R: Agenda commands. (line 125) * v w: Agenda commands. (line 69) * v y: Agenda commands. (line 69) * w: Agenda commands. (line 69) * x: Agenda commands. (line 478) * X: Agenda commands. (line 374) * z: Agenda commands. (line 321) * {: Agenda commands. (line 243) * }: Agenda commands. (line 243)