Release 5.05

This commit is contained in:
Carsten Dominik 2008-01-31 11:35:40 +01:00
parent c3c7e73f29
commit d922cfd878
9 changed files with 1776 additions and 821 deletions

View File

@ -56,7 +56,7 @@ CP = cp -p
##----------------------------------------------------------------------
# The following variables need to be defined by the maintainer
LISPFILES = org.el org-publish.el org-mouse.el org-install.el
LISPFILES = org.el org-publish.el org-mouse.el org-export-latex.el org-install.el
ELCFILES = $(LISPFILES:.el=.elc)
DOCFILES = org.texi org.pdf org
CARDFILES = orgcard.tex orgcard.pdf orgcard_letter.pdf
@ -67,7 +67,7 @@ HTMLDIR = /home/dominik/public_html/Tools/org
.SUFFIXES: .el .elc .texi
SHELL = /bin/sh
DISTFILES= README ${LISPFILES} ${DOCFILES} ${CARDFILES} Makefile
DISTFILES= README ${LISPFILES} ${DOCFILES} ${CARDFILES} Makefile dir
DISTFILES_xemacs= xemacs/noutline.el xemacs/ps-print-invisible.el xemacs/README
all: $(ELCFILES)
@ -148,7 +148,7 @@ ecompile:
distfile:
@if [ "X$(TAG)" = "X" ]; then echo "*** No tag ***"; exit 1; fi
touch org.texi orgcard.tex
# touch org.texi orgcard.tex
make info
make doc
rm -rf org-$(TAG) org-$(TAG).zip

973
org

File diff suppressed because it is too large Load Diff

View File

@ -4,6 +4,8 @@
(autoload 'org-diary "org" "Diary entries from Org mode.")
(autoload 'org-agenda "org" "Multi-file agenda from Org mode." t)
(autoload 'org-store-link "org" "Store a link to the current location." t)
(autoload 'org-open-at-point-global "org" "Follow a link like Org-mode does." t)
(autoload 'org-insert-link-global "org" "Insert a link like Org-mode does." t)
(autoload 'orgtbl-mode "org" "Org tables as a minor mode." t)
(autoload 'turn-on-orgtbl "org" "Org tables as a minor mode.")
(autoload 'orgstruct-mode "org" "Org structure as a minor mode." t)
@ -23,6 +25,17 @@
"Export all files in `org-agenda-files' to iCalendar .ics files." t)
(autoload 'org-export-icalendar-combine-agenda-files "org"
"Export all files in `org-agenda-files' to a single combined iCalendar file." t)
(autoload 'org-export-as-latex-batch "org-export-latex")
(autoload 'org-export-as-latex-to-buffer "org-export-latex"
"Call `org-exort-as-latex` with output to a temporary buffer" t)
(autoload 'org-replace-region-by-latex "org-export-latex"
"Replace the region from BEG to END with its LaTeX export." t)
(autoload 'org-export-region-as-latex "org-export-latex"
"Convert region from BEG to END in `org-mode' buffer to LaTeX." t)
(autoload 'org-export-as-latex "org-export-latex"
"Export current buffer to a LaTeX file." t)
(autoload 'org-batch-agenda "org")
(autoload 'org-batch-agenda-csv "org")
(autoload 'org-store-agenda-views "org" "Store agenda views to files" t)
@ -33,4 +46,8 @@
"Publish all files of current project." t)
(autoload 'org-publish "org-publish" "Publish a project." t)
(autoload 'org-publish-all "org-publish" "Publish all projects." t)
(autoload 'org-run-like-in-org-mode "Run a command like in Org-mode.")
(provide 'org-install)

View File

@ -454,6 +454,27 @@ FILENAME is the filename of the org file to be published."
(kill-buffer (current-buffer)))))
(defun org-publish-org-to-latex (plist filename)
"Publish an org file to LaTeX."
(org-publish-org-to "latex" plist filename))
(defun org-publish-org-to-html (plist filename)
"Publish an org file to HTML."
(org-publish-org-to "html" plist filename))
(defun org-publish-org-to (format plist filename)
"Publish an org file to FORMAT.
PLIST is the property list for the given project.
FILENAME is the filename of the org file to be published."
(require 'org)
(let* ((arg (plist-get plist :headline-levels)))
(progn
(find-file filename)
(funcall (intern (concat "org-export-as-" format))
arg nil plist)
(kill-buffer (current-buffer)))))
(defun org-publish-attachment (plist filename)
"Publish a file with no transformation of any kind.
PLIST is the property list for the given project.

1101
org.el

File diff suppressed because it is too large Load Diff

BIN
org.pdf

Binary file not shown.

477
org.texi
View File

@ -3,8 +3,8 @@
@setfilename ../info/org
@settitle Org Mode Manual
@set VERSION 5.04
@set DATE July 2007
@set VERSION 5.05
@set DATE August 2007
@dircategory Emacs
@direntry
@ -146,6 +146,7 @@ Hyperlinks
* Internal links:: Links to other places in the current file
* External links:: URL-like links to the world
* Handling links:: Creating, inserting and following
* Using links outside Org-mode:: Linking from my C source code?
* Link abbreviations:: Shortcuts for writing complex links
* Search options:: Linking to a specific location
* Custom searches:: When the default search is not enough
@ -197,8 +198,8 @@ Column View
Defining Columns
* Scope of column definitions::
* Column attributes::
* Scope of column definitions:: Where defined, where valid?
* Column attributes:: Appearance and content of a column
Timestamps
@ -214,8 +215,8 @@ Creating timestamps
Deadlines and Scheduling
* Inserting deadline/schedule::
* Repeated tasks::
* Inserting deadline/schedule:: Planning items
* Repeated tasks:: Items that show up again and again
Progress Logging
@ -266,17 +267,23 @@ Exporting
* ASCII export:: Exporting to plain ASCII
* HTML export:: Exporting to HTML
* LaTeX export:: Exporting to LaTeX
* XOXO export:: Exporting to XOXO
* iCalendar export:: Exporting in iCalendar format
* Text interpretation:: How the exporter looks at the file
HTML export
* Export commands:: How to invoke HTML export
* HTML Export commands:: How to invoke LaTeX export
* Quoting HTML tags:: Using direct HTML in Org-mode
* Links:: How hyperlinks get transferred to HTML
* Images:: To inline or not to inline?
* CSS support:: Style specifications
* Links:: Transformation of links for HTML
* Images:: How to include images
* CSS support:: Changing the appearence of the output
LaTeX export
* LaTeX export commands:: How to invoke LaTeX export
* Quoting LaTeX code:: Incorporating literal LaTeX code
Text interpretation by the exporter
@ -326,6 +333,7 @@ Interaction with other packages
Extensions, Hooks and Hacking
* Extensions:: Existing 3rd-part extensions
* Adding hyperlink types:: New custom link types
* Tables in arbitrary syntax:: Orgtbl for LaTeX and other programs
* Dynamic blocks:: Automatically filled blocks
* Special agenda views:: Customized views
@ -403,7 +411,7 @@ example as:
Org-mode's automatic, context sensitive table editor with spreadsheet
capabilities can be integrated into any major mode by activating the
minor Orgtbl-mode. Using a translation step, it can be used to maintain
tables in arbitrary file types, for example in LaTeX. The structure
tables in arbitrary file types, for example in La@TeX{}. The structure
editing and list creation capabilities can be used outside Org-mode with
the minor Orgstruct-mode.
@ -599,15 +607,14 @@ edit the structure of the document.
@cindex outlines
@cindex outline-mode
Org-mode is implemented on top of outline-mode. Outlines allow to
organize a document in a hierarchical structure, which (at least for
me) is the best representation of notes and thoughts. Overview over
this structure is achieved by folding (hiding) large parts of the
Org-mode is implemented on top of outline-mode. Outlines allow a
document to be organized in a hierarchical structure, which (at least
for me) is the best representation of notes and thoughts. An overview
of this structure is achieved by folding (hiding) large parts of the
document to show only the general document structure and the parts
currently being worked on. Org-mode greatly simplifies the use of
outlines by compressing the entire show/hide functionality into a
single command @command{org-cycle}, which is bound to the @key{TAB}
key.
outlines by compressing the entire show/hide functionality into a single
command @command{org-cycle}, which is bound to the @key{TAB} key.
@node Headlines, Visibility cycling, Outlines, Document structure
@section Headlines
@ -638,7 +645,7 @@ An empty line after the end of a subtree is considered part of it and
will be hidden when the subtree is folded. However, if you leave at
least two empty lines, one empty line will remain visible after folding
the subtree, in order to structure the collapsed view. See the
variable @code{org-cycle-separator-lines} for modifying this behavior.
variable @code{org-cycle-separator-lines} to modify this behavior.
@node Visibility cycling, Motion, Headlines, Document structure
@section Visibility cycling
@ -987,7 +994,7 @@ match is in the body of an entry, headline and body are made visible.
In order to provide minimal context, also the full hierarchy of
headlines above the match is shown, as well as the headline following
the match. Each match is also highlighted; the highlights disappear
when the buffer is changes an editing command, or by pressing @kbd{C-c
when the buffer is changed an editing command, or by pressing @kbd{C-c
C-c}. When called with a @kbd{C-u} prefix argument, previous highlights
are kept, so several calls to this command can be stacked.
@end table
@ -1202,9 +1209,9 @@ Emacs @file{calc} package.
@cindex table editor, built-in
Org-mode makes it easy to format tables in plain ASCII. Any line with
@samp{|} as the first non-white character is considered part of a
table. @samp{|} is also the column separator. A table might look
like this:
@samp{|} as the first non-whitespace character is considered part of a
table. @samp{|} is also the column separator. A table might look like
this:
@example
| Name | Phone | Age |
@ -1510,7 +1517,7 @@ example in mail mode, use
Furthermore, with some special setup, it is possible to maintain tables
in arbitrary syntax with Orgtbl-mode. For example, it is possible to
construct LaTeX tables with the underlying ease and power of
construct La@TeX{} tables with the underlying ease and power of
Orgtbl-mode, including spreadsheet capabilities. For details, see
@ref{Tables in arbitrary syntax}.
@ -2084,6 +2091,7 @@ links to other files, Usenet articles, emails, and much more.
* Internal links:: Links to other places in the current file
* External links:: URL-like links to the world
* Handling links:: Creating, inserting and following
* Using links outside Org-mode:: Linking from my C source code?
* Link abbreviations:: Shortcuts for writing complex links
* Search options:: Linking to a specific location
* Custom searches:: When the default search is not enough
@ -2256,7 +2264,7 @@ as links. If spaces must be part of the link (for example in
@samp{bbdb:Richard Stallman}), or if you need to remove ambiguities
about the end of the link, enclose them in angular brackets.
@node Handling links, Link abbreviations, External links, Hyperlinks
@node Handling links, Using links outside Org-mode, External links, Hyperlinks
@section Handling links
@cindex links, handling
@ -2389,7 +2397,20 @@ to @kbd{C-n} and @kbd{C-p}
@end lisp
@end table
@node Link abbreviations, Search options, Handling links, Hyperlinks
@node Using links outside Org-mode, Link abbreviations, Handling links, Hyperlinks
@section Using links outside Org-mode
You can insert and follow links that have Org-mode syntax not only in
Org-mode, but in any Emacs buffer. For this, you should create two
global commands, like this (please select suitable global keys
yourself):
@lisp
(define-key global-map 'org-insert-link-global "\\C-c L")
(define-key global-map 'org-open-at-point-global "\\C-c o")
@end lisp
@node Link abbreviations, Search options, Using links outside Org-mode, Hyperlinks
@section Link abbreviations
@cindex link abbreviations
@cindex abbreviation, links
@ -3384,6 +3405,17 @@ publishers and the number of disks in a box like this:
:END:
@end example
If you want to set properties that can be inherited by any entry in a
file, use a line like
@example
#+PROPERTY: NDisks_ALL 1 2 3 4
@end example
Property values set with the global variable
@code{org-global-properties} can be inherited by all entries in all
Org-mode files.
@noindent
The following commands help to work with properties:
@ -3932,6 +3964,10 @@ and continuing until the entry is marked DONE. An example:
DEADLINE: <2004-02-29 Sun>
@end example
You can specify a different lead time for warnings for a specific
deadlines using the following syntax. Here is an example with a warning
period of 5 days @code{DEADLINE: <2004-02-29 Sun -5d>}.
@item SCHEDULED
@cindex SCHEDULED keyword
You are planning to start working on that task on the given date. The
@ -3949,8 +3985,8 @@ I.e., the task will automatically be forwarded until completed.
@end table
@menu
* Inserting deadline/schedule::
* Repeated tasks::
* Inserting deadline/schedule:: Planning items
* Repeated tasks:: Items that show up again and again
@end menu
@node Inserting deadline/schedule, Repeated tasks, Deadlines and scheduling, Deadlines and scheduling
@ -5429,21 +5465,23 @@ are surrounded with @code{<sub>} and @code{<sup>} tags, respectively.
With symbols, sub- and superscripts, HTML is pretty much at its end when
it comes to representing mathematical formulas@footnote{Yes, there is
MathML, but that is not yet fully supported by many browsers, and there
is no decent converter for turning LaTeX of ASCII representations of
formulas into MathML. So for the time being, converting formulas into
images seems the way to go.}. More complex
expressions need a dedicated formula processor. To this end, Org-mode
can contain arbitrary La@TeX{} fragments. It provides commands to
preview the typeset result of these fragments, and upon export to HTML,
all fragments will be converted to images and inlined into the HTML
document. For this to work you need to be on a system with a working
La@TeX{} installation. You also need the @file{dvipng} program,
available at @url{http://sourceforge.net/projects/dvipng/}. The LaTeX
header that will be used when processing a fragment can be configured
with the variable @code{org-format-latex-header}.
is no decent converter for turning La@TeX{} or ASCII representations of
formulas into MathML. So for the time being, converting formulas into
images seems the way to go.}. More complex expressions need a dedicated
formula processor. To this end, Org-mode can contain arbitrary La@TeX{}
fragments. It provides commands to preview the typeset result of these
fragments, and upon export to HTML, all fragments will be converted to
images and inlined into the HTML document@footnote{The La@TeX{} export
will not use images for displaying La@TeX{} fragments but include these
fragments directly into the La@TeX{} code.}. For this to work you
need to be on a system with a working La@TeX{} installation. You also
need the @file{dvipng} program, available at
@url{http://sourceforge.net/projects/dvipng/}. The La@TeX{} header that
will be used when processing a fragment can be configured with the
variable @code{org-format-latex-header}.
La@TeX{} fragments don't need any special marking at all. The following
snippets will be identified as LaTeX source code:
snippets will be identified as La@TeX{} source code:
@itemize @bullet
@item
Environments of any kind. The only requirement is that the
@ -5509,7 +5547,7 @@ setting is active:
@cindex CDLaTeX
CDLaTeX-mode is a minor mode that is normally used in combination with a
major LaTeX mode like AUCTeX in order to speed-up insertion of
major La@TeX{} mode like AUCTeX in order to speed-up insertion of
environments and math templates. Inside Org-mode, you can make use of
some of the features of cdlatex-mode. You need to install
@file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
@ -5532,7 +5570,7 @@ Environment templates can be inserted with @kbd{C-c @{}.
@item
@kindex @key{TAB}
The @key{TAB} key will do template expansion if the cursor is inside a
LaTeX fragment@footnote{Org-mode has a method to test if the cursor is
La@TeX{} fragment@footnote{Org-mode has a method to test if the cursor is
inside such a fragment, see the documentation of the function
@code{org-inside-LaTeX-fragment-p}.}. For example, @key{TAB} will
expand @code{fr} to @code{\frac@{@}@{@}} and position the cursor
@ -5545,7 +5583,7 @@ To get a list of all abbreviations, type @kbd{M-x cdlatex-command-help}.
@item
@kindex _
@kindex ^
Pressing @kbd{_} and @kbd{^} inside a LaTeX fragment will insert these
Pressing @kbd{_} and @kbd{^} inside a La@TeX{} fragment will insert these
characters together with a pair of braces. If you use @key{TAB} to move
out of the braces, and if the braces surround only a single character or
macro, they are removed again (depending on the variable
@ -5553,7 +5591,7 @@ macro, they are removed again (depending on the variable
@item
@kindex `
Pressing the backquote @kbd{`} followed by a character inserts math
macros, also outside LaTeX fragments. If you wait more than 1.5 seconds
macros, also outside La@TeX{} fragments. If you wait more than 1.5 seconds
after the backquote, a help window will pop up.
@item
@kindex '
@ -5572,11 +5610,12 @@ 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-mode 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. 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.
exchange with a broad range of other applications. La@TeX{} export lets
you use Org-mode and its structured editing functions to easily create
La@TeX{} files. 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.
When exporting, Org-mode uses special conventions to enrich the output
produced. @xref{Text interpretation}, for more details.
@ -5592,6 +5631,7 @@ command.
@menu
* ASCII export:: Exporting to plain ASCII
* HTML export:: Exporting to HTML
* LaTeX export:: Exporting to LaTeX
* XOXO export:: Exporting to XOXO
* iCalendar export:: Exporting in iCalendar format
* Text interpretation:: How the exporter looks at the file
@ -5638,7 +5678,7 @@ the body text. Any indentation larger than this is adjusted to preserve
the layout relative to the first line. Should there be lines with less
indentation than the first, these are left alone.
@node HTML export, XOXO export, ASCII export, Exporting
@node HTML export, LaTeX export, ASCII export, Exporting
@section HTML export
@cindex HTML export
@ -5647,14 +5687,14 @@ HTML formatting, in ways similar to John Grubers @emph{markdown}
language, but with additional support for tables.
@menu
* Export commands:: How to invoke HTML export
* HTML Export commands:: How to invoke LaTeX export
* Quoting HTML tags:: Using direct HTML in Org-mode
* Links:: How hyperlinks get transferred to HTML
* Images:: To inline or not to inline?
* CSS support:: Style specifications
* Links:: Transformation of links for HTML
* Images:: How to include images
* CSS support:: Changing the appearence of the output
@end menu
@node Export commands, Quoting HTML tags, HTML export, HTML export
@node HTML Export commands, Quoting HTML tags, HTML export, HTML export
@subsection HTML export commands
@cindex region, active
@ -5688,6 +5728,9 @@ Export only the visible part of the document.
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.
@item M-x org-replace-region-by-HTML
Replace the active region (assumed to be in Org-mode syntax) by HTML
code.
@end table
@cindex headline levels, for exporting
@ -5703,7 +5746,7 @@ at a different level, specify it with a prefix argument. For example,
@noindent
creates two levels of headings and does the rest as items.
@node Quoting HTML tags, Links, Export commands, HTML export
@node Quoting HTML tags, Links, HTML Export commands, HTML export
@subsection Quoting HTML tags
Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
@ -5807,7 +5850,78 @@ section in the buffer.
@c FIXME: More about header and footer styles
@c FIXME: Talk about links and targets.
@node XOXO export, iCalendar export, HTML export, Exporting
@node LaTeX export, XOXO export, HTML export, Exporting
@section LaTeX export
@cindex LaTeX export
Org-mode contains a La@TeX{} exporter written by Bastien Guerry.
@menu
* LaTeX export commands:: How to invoke LaTeX export
* Quoting LaTeX code:: Incorporating literal LaTeX code
@end menu
@node LaTeX export commands, Quoting LaTeX code, LaTeX export, LaTeX export
@subsection LaTeX export commands
@table @kbd
@kindex C-c C-e l
@item C-c C-e l
Export as La@TeX{} file @file{myfile.tex}.
@kindex C-c C-e L
@item C-c C-e L
Export to a temporary buffer, do not create a file.
@kindex C-c C-e v l
@kindex C-c C-e v L
@item C-c C-e v l
@item C-c C-e v L
Export only the visible part of the document.
@item M-x org-export-region-as-latex
Convert the region to La@TeX{} under the assumption that it was org-mode
syntax before. This is a global command that can be invoked in any
buffer.
@item M-x org-replace-region-by-latex
Replace the active region (assumed to be in Org-mode syntax) by La@TeX{}
code.
@end table
@cindex headline levels, for exporting
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
@code{org-latex-low-levels}.
If you want that transition to occur at a different level, specify it
with a prefix argument. For example,
@example
@kbd{C-2 C-c C-e l}
@end example
@noindent
creates two levels of headings and does the rest as items.
@node Quoting LaTeX code, , LaTeX export commands, LaTeX export
@subsection Quoting LaTeX code
Embedded La@TeX{} as described in @ref{Embedded LaTeX} will be correctly
inserted into the La@TeX{} file. Forthermore, you can add special code
that should only be present in La@TeX{} export with the following
constructs:
@example
#+LaTeX: Literal LaTeX code for export
@end example
@noindent or
@example
#+BEGIN_LaTeX
All lines between these markers are exported literally
#+END_LaTeX
@end example
@node XOXO export, iCalendar export, LaTeX export, Exporting
@section XOXO export
@cindex XOXO export
@ -5955,9 +6069,9 @@ the settings in Org-mode.
@cindex richer text
Some of the export backends of Org-mode allow for sophisticated text
formatting, this is true in particular for the HTML backend. Org-mode
has a number of typing conventions that allow to produce a richly
formatted output.
formatting, this is true in particular for the HTML and La@TeX{}
backends. Org-mode has a number of typing conventions that allow to
produce a richly formatted output.
@itemize @bullet
@ -6084,6 +6198,10 @@ author: @r{turn on/off inclusion of author name/email into exported file}
timestamp: @r{turn on/off inclusion creation time into exported file}
@end example
These options take effect in both the HTML and La@TeX{} export, except
for @code{TeX} and @code{LaTeX}, which are respectively @code{t} and
@code{nil} for the La@TeX{} export.
@node Publishing, Miscellaneous, Exporting, Top
@chapter Publishing
@cindex publishing
@ -6092,11 +6210,16 @@ Org-mode includes@footnote{@file{org-publish.el} is not distributed with
Emacs 21, if you are still using Emacs 21, you need you need to download
this file separately.} a publishing management system that allows you to
configure automatic HTML conversion of @emph{projects} composed of
interlinked org files. This system is called @emph{org-publish}. You
can also configure org-publish to automatically upload your exported
HTML pages and related attachments, such as images and source code
files, to a web server. Org-publish turns org-mode into a web-site
authoring tool.
interlinked org files. This system is called @emph{org-publish}. You can
also configure org-publish to automatically upload your exported HTML
pages and related attachments, such as images and source code files, to
a web server. Org-publish turns org-mode into a web-site authoring tool.
You can also use Org-publish to convert files into La@TeX{}, or even
combine HTML and La@TeX{} conversion so that files are available in both
formats on the server@footnote{Since La@TeX{} files on a server are not
that helpful, you surely want to perform further conversion on them --
e.g. convert them to @code{PDF} format.}.
Org-publish has been contributed to Org-mode by David O'Toole.
@ -6199,9 +6322,11 @@ Publishing means that a file is copied to the destination directory and
possibly transformed in the process. The default transformation is to
export Org-mode files as HTML files, and this is done by the function
@code{org-publish-org-to-html} which calls the HTML exporter
(@pxref{HTML export}). Other files like images only need to be copied
to the publishing destination. For non-Org-mode files, you need to
specify the publishing function.
(@pxref{HTML export}). But you also can publish your files in La@TeX{} by
using the function @code{org-publish-org-to-latex} instead. Other files
like images only need to be copied to the publishing destination. For
non-Org-mode files, you need to specify the publishing function.
@multitable @columnfractions 0.3 0.7
@item @code{:publishing-function}
@ -6218,13 +6343,13 @@ provides one for attachments (files that only need to be copied):
@code{org-publish-attachment}.
@node Publishing options, Publishing links, Publishing action, Configuration
@subsection Options for the HTML exporter
@subsection Options for the HTML/LaTeX exporters
@cindex options, for publishing
The property list can be used to set many export options for the HTML
exporter. In most cases, these properties correspond to user variables
in Org-mode. The table below lists these properties along with the
variable they belong to. See the documentation string for the
and La@TeX{} exporters. In most cases, these properties correspond to user
variables in Org-mode. The table below lists these properties along
with the variable they belong to. See the documentation string for the
respective variable for details.
@multitable @columnfractions 0.3 0.7
@ -6256,6 +6381,11 @@ respective variable for details.
@item @code{:email} @tab @code{user-mail-address}
@end multitable
Most of the @code{org-export-with-*} variables have the same effect in
both HTML and La@TeX{} exporters, except for @code{:TeX-macros} and
@code{:LaTeX-fragments}, respectively @code{nil} and @code{t} in the
La@TeX{} 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 (@pxref{Export
@ -6524,7 +6654,7 @@ when the file is visited again in a new Emacs session.
@table @kbd
@item #+ARCHIVE: %s_done::
This line sets the archive location for the agenda file. It applies for
all subsequent lines until the next @samp{#+CATEGORY} line, or the end
all subsequent lines until the next @samp{#+ARCHIVE} line, or the end
of the file. The first such line also applies to any entries before it.
The corresponding variable is @code{org-archive-location}.
@item #+CATEGORY:
@ -6548,8 +6678,11 @@ These lines (several are allowed) specify link abbreviations.
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.
@item #+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.
@item #+STARTUP:
This line sets options to be used at startup of org-mode, when an
This line sets options to be used at startup of Org-mode, when an
Org-mode 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 @code{org-startup-folded}, with a default
@ -6924,7 +7057,7 @@ used by CUA-mode (as well as pc-select-mode and s-region-mode) to
select and extend the region. If you want to use one of these
packages along with Org-mode, configure the variable
@code{org-CUA-compatible}. When set, Org-mode will move the following
keybindings in org-mode files, and in the agenda buffer (but not
keybindings in Org-mode files, and in the agenda buffer (but not
during date selection).
@example
@ -6944,7 +7077,7 @@ in the paragraph above about CUA mode also applies here.
@item @file{footnote.el} by Steven L. Baur
Org-mode supports the syntax of the footnote package, but only the
numerical footnote markers. Also, the default key for footnote
commands, @kbd{C-c !} is already used by org-mode. You could use the
commands, @kbd{C-c !} is already used by Org-mode. You could use the
variable @code{footnote-prefix} to switch footnotes commands to another
key. Or, you could use @code{org-replace-disputed-keys} and
@code{org-disputed-keys} to change the settings in Org-mode.
@ -6999,13 +7132,14 @@ Org-mode.
@menu
* Extensions:: Existing 3rd-part extensions
* Adding hyperlink types:: New custom link types
* Tables in arbitrary syntax:: Orgtbl for LaTeX and other programs
* Dynamic blocks:: Automatically filled blocks
* Special agenda views:: Customized views
* Using the property API:: Writing programs that use entry properties
@end menu
@node Extensions, Tables in arbitrary syntax, Extensions and Hacking, Extensions and Hacking
@node Extensions, Adding hyperlink types, Extensions and Hacking, Extensions and Hacking
@section Third-party extensions for Org-mode
@cindex extension, third-party
@ -7049,14 +7183,111 @@ Remind. @url{http://www.cognition.ens.fr/~guerry/u/org2rem.el}.
@page
@node Tables in arbitrary syntax, Dynamic blocks, Extensions, Extensions and Hacking
@node Adding hyperlink types, Tables in arbitrary syntax, Extensions, Extensions and Hacking
@section Adding hyperlink types
@cindex hyperlinks, adding new types
Org-mode has a large number of hyperlink types built-in
(@pxref{Hyperlinks}). If you would like to add new link types, it
provides an interface for doing so. Lets look at an example file
@file{org-man.el} that will add support for creating links like
@samp{[[man:printf][The printf manpage]]} to show unix manual pages inside
emacs:
@lisp
;;; org-man.el - Support for links to manpages in Org-mode
(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
@end lisp
@noindent
You would activate this new link type in @file{.emacs} with
@lisp
(require 'org-man)
@end lisp
@noindent
Lets go through the file and see what it does.
@enumerate
@item
It does @code{(require 'org)} to make sure that @file{org.el} has been
loaded.
@item
The next line calls @code{org-add-link-type} to define a new link type
with prefix @samp{man}. The call also contains the name of a function
that will be called to follow such a link.
@item
The next line adds a function to @code{org-store-link-functions}, in
order to allow the command @kbd{C-c l} to record a useful link in a
buffer displaying a man page.
@end enumerate
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 manpages. There are two options,
@code{man} and @code{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 @code{org-man-command} to display the man page.
Finally the function @code{org-man-store-link} is defined. When you try
to store a link with @kbd{C-c l}, also 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 @code{major-mode}. If not, the function must exit and
retunr the value @code{nil}. If yes, the link is created by getting the
manual tpoic from the buffer name and prefixing it with the string
@samp{man:}. Then it must call the command @code{org-store-link-props}
and set the @code{:type} and @code{:link} properties. Optionally you
can also set the @code{:description} property to provide a default for
the link description when the link is later inserted into tan Org-mode
buffer with @kbd{C-c C-l}.
@node Tables in arbitrary syntax, Dynamic blocks, Adding hyperlink types, Extensions and Hacking
@section Tables in arbitrary syntax
@cindex tables, in other modes
@cindex orgtbl-mode
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
specific languages, for example La@TeX{}. 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.
@ -7118,7 +7349,7 @@ additional columns.
@noindent
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
compilation of a C file or processing of a La@TeX{} file. There are a
number of different solutions:
@itemize @bullet
@ -7129,7 +7360,7 @@ language. For example, in C-mode you could wrap the table between
@item
Sometimes it is possible to put the table after some kind of @i{END}
statement, for example @samp{\bye} in TeX and @samp{\end@{document@}}
in LaTeX.
in La@TeX{}.
@item
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
@ -7142,11 +7373,11 @@ key.
@subsection A LaTeX example
@cindex LaTeX, and orgtbl-mode
The best way to wrap the source table in LaTeX is to use the
The best way to wrap the source table in La@TeX{} is to use the
@code{comment} environment provided by @file{comment.sty}. It has to be
activated by placing @code{\usepackage@{comment@}} into the document
header. Orgtbl-mode can insert a radio table skeleton@footnote{By
default this works only for LaTeX, HTML, and TeXInfo. Configure the
default this works only for La@TeX{}, HTML, and TeXInfo. Configure the
variable @code{orgtbl-radio-tables} to install templates for other
modes.} with the command @kbd{M-x orgtbl-insert-radio-table}. You will
be prompted for a table name, lets say we use @samp{salesfigures}. You
@ -7163,7 +7394,7 @@ will then get the following template:
@noindent
The @code{#+ORGTBL: SEND} line tells orgtbl-mode to use the function
@code{orgtbl-to-latex} to convert the table into LaTeX and to put it
@code{orgtbl-to-latex} to convert the table into La@TeX{} and to put it
into the receiver location with name @code{salesfigures}. You may now
fill in the table, feel free to use the spreadsheet features@footnote{If
the @samp{#+TBLFM} line contains an odd number of dollar characters,
@ -7217,7 +7448,7 @@ Month & \multicolumn@{1@}@{c@}@{Days@} & Nr.\ sold & per day\\
\end@{comment@}
@end example
The LaTeX translator function @code{orgtbl-to-latex} is already part of
The La@TeX{} translator function @code{orgtbl-to-latex} is already part of
Orgtbl-mode. It uses a @code{tabular} environment to typeset the table
and marks horizontal lines with @code{\hline}. Furthermore, it
interprets the following parameters:
@ -7278,7 +7509,7 @@ As you can see, the properties passed into the function (variable
@var{PARAMS}) are combined with the ones newly defined in the function
(variable @var{PARAMS2}). The ones passed into the function (i.e. the
ones set by the @samp{ORGTBL SEND} line) take precedence. So if you
would like to use the LaTeX translator, but wanted the line endings to
would like to use the La@TeX{} translator, but wanted the line endings to
be @samp{\\[2mm]} instead of the default @samp{\\}, you could just
overrule the default with
@ -7287,7 +7518,7 @@ overrule the default with
@end example
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
analogy with the La@TeX{} translator, or you can use the generic function
directly. For example, if you have a language where a table is started
with @samp{!BTBL!}, ended with @samp{!ETBL!}, and where table lines are
started with @samp{!BL!}, ended with @samp{!EL!} and where the field
@ -7407,28 +7638,51 @@ search should continue from there.
subtree-end))) ; tag not found, continue after end of subtree
@end lisp
Furthermore you must write a command that uses @code{let} to temporarily
put this function into the variable @code{org-agenda-skip-function},
sets the header string for the agenda buffer, and calls the todo-list
generator while asking for the specific TODO keyword PROJECT. The
function must also accept one argument MATCH, but it can choose to
ignore it@footnote{MATCH must be present in case you want to define a
custom command for producing this special list. Custom commands always
supply the MATCH argument, but it can be empty if you do not specify it
while defining the command(@pxref{Custom agenda
views}).} (as we do in the example below). Here is the example:
Now you may use this function in an agenda custom command, for example
like this:
@lisp
(defun my-org-waiting-projects (&optional match)
"Produce a list of projects that contain a WAITING tag.
MATCH is being ignored."
(interactive)
(let ((org-agenda-skip-function 'my-skip-unless-waiting)
(org-agenda-overriding-header "Projects waiting for something: "))
;; make the list
(org-todo-list "PROJECT")))
(org-add-agenda-custom-command
'("b" todo "PROJECT"
((org-agenda-skip-function 'my-org-waiting-projects)
(org-agenda-overriding-header "Projects waiting for something: "))))
@end lisp
Note that this also binds @code{org-agenda-overriding-header} to get a
meaningful header in the agenda view.
You may also put a Lisp form into @code{org-agenda-skip-function}. In
particular, you may use the functions @code{org-agenda-skip-entry-if}
and @code{org-agenda-skip-subtree-if} in this form, for example:
@table @code
@item '(org-agenda-skip-entry-if 'scheduled)
Skip current entry if it has been scheduled.
@item '(org-agenda-skip-entry-if 'notscheduled)
Skip current entry if it has not been scheduled.
@item '(org-agenda-skip-entry-if 'deadline)
Skip current entry if it has a deadline.
@item '(org-agenda-skip-entry-if 'scheduled 'deadline)
Skip current entry if it has a deadline, or if it is scheduled.
@item '(org-agenda-skip-entry 'regexp "regular expression")
Skip current entry if the regular expression contained in the variable
@code{org-agenda-skip-regexp} matches in the entry.
@item '(org-agenda-skip-subtree-if 'regexp "regular expression")
Same as above, but check and skip the entire subtree.
@end table
Therefore we could also have written the search for WAITING projects
like this, even without defining a special function:
@lisp
(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: "))))
@end lisp
@node Using the property API, , Special agenda views, Extensions and Hacking
@section Using the property API
@cindex API, for properties
@ -7544,15 +7798,16 @@ around a match in a hidden outline tree.
@item
@i{Niels Giessen} had the idea to automatically archive DONE trees.
@item
@i{Bastien Guerry} provided extensive feedback and some patches, and
translated David O'Toole's tutorial into French.
@i{Bastien Guerry} wrote the La@TeX{} exporter and has been prolific
with patches, ideas, and bug reports.
to Org-mode.
@item
@i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
@item
@i{Scott Jaderholm} proposed footnotes, control over whitespace between
folded entries, and column view for properties.
@item
@i{Shidai Liu} ("Leo") asked for embedded LaTeX and tested it. He also
@i{Shidai Liu} ("Leo") asked for embedded La@TeX{} and tested it. He also
provided frequent feedback and some patches.
@item
@i{Jason F. McBrayer} suggested agenda export to CSV format.
@ -7607,6 +7862,9 @@ subtrees.
@item
@i{Dale Smith} proposed link abbreviations.
@item
@i{Adam Spiers} asked for global linking commands and inspired the link
extension system. support mairix.
@item
@i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
chapter about publishing.
@item
@ -7625,6 +7883,7 @@ really different beasts in their basic ideas and implementation details.
I later looked at John's code, however, and learned from his
implementation of (i) links where the link itself is hidden and only a
description is shown, and (ii) popping up a calendar to select a date.
John has also contributed a number of great ideas directly to Org-mode.
@item
@i{Carsten Wimmer} suggested some changes and helped fix a bug in
linking to GNUS.

Binary file not shown.

View File

@ -1,5 +1,5 @@
% Reference Card for Org Mode
\def\orgversionnumber{5.04}
\def\orgversionnumber{5.05}
\def\versionyear{2007} % latest update
\def\year{2007} % latest copyright year