summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/misc/org-setup.org2
-rw-r--r--doc/misc/org.org2265
2 files changed, 1320 insertions, 947 deletions
diff --git a/doc/misc/org-setup.org b/doc/misc/org-setup.org
index 88474538e5b..561f05d7d97 100644
--- a/doc/misc/org-setup.org
+++ b/doc/misc/org-setup.org
@@ -49,5 +49,5 @@
# The "kbd" macro turns KBD into @kbd{KBD}. Additionally, it
# encloses case-sensitive special keys (SPC, RET...) within @key{...}.
-#+macro: kbd (eval (let ((case-fold-search nil) (regexp (regexp-opt '("SPC" "RET" "LFD" "TAB" "BS" "ESC" "DELETE" "SHIFT" "Ctrl" "Meta" "Alt" "Cmd" "Super" "UP" "LEFT" "RIGHT" "DOWN") 'words))) (format "@@texinfo:@kbd{@@%s@@texinfo:}@@" (replace-regexp-in-string regexp "@@texinfo:@key{@@\\&@@texinfo:}@@" $1 t))))
+#+macro: kbd (eval (org-texinfo-kbd-macro $1))
diff --git a/doc/misc/org.org b/doc/misc/org.org
index 6ad8c462cc3..737e5c921f4 100644
--- a/doc/misc/org.org
+++ b/doc/misc/org.org
@@ -18,24 +18,30 @@
:END:
#+cindex: summary
-Org is a mode for keeping notes, maintaining TODO lists, and project
-planning with a fast and effective plain-text markup language. It
-also is an authoring system with unique support for literate
-programming and reproducible research.
-
-Org is implemented on top of Outline mode, which makes it possible to
-keep the content of large files well structured. Visibility cycling
-and structure editing help to work with the tree. Tables are easily
-created with a built-in table editor. Plain text URL-like links
-connect to websites, emails, Usenet messages, BBDB entries, and any
-files related to the projects.
+Org Mode is an authoring tool and a TODO lists manager for GNU Emacs.
+It relies on a lightweight plain-text markup language used in files
+with the =.org= extension.
+
+As an authoring tool, Org helps you write structured documents and
+provides exporting facilities. Org files can also be used for literate
+programming and reproducible research. As a TODO lists manager, Org
+helps you organize your tasks in a flexible way, from daily needs to
+detailed project-planning, allowing logging, multiple views on your
+tasks, exporting your agendas, etc.
+
+Org mode is implemented on top of Outline mode, which makes it
+possible to keep the content of large files well structured.
+Visibility cycling and structure editing help to work with the tree.
+Tables are easily created with a built-in table editor. Plain text
+URL-like links connect to websites, emails, Usenet messages, BBDB
+entries, and any files related to the projects.
Org develops organizational tasks around notes files that contain
lists or information about projects as plain text. Project planning
and task management make use of metadata which is part of an outline
node. Based on this data, specific entries can be extracted in
-queries and create dynamic /agenda views/ that also integrate the
-Emacs calendar and diary. Org can be used to implement many different
+queries and create dynamic /agenda views/ that also integrate the Emacs
+calendar and diary. Org can be used to implement many different
project planning schemes, such as David Allen's GTD system.
Org files can serve as a single source authoring system with export to
@@ -68,8 +74,8 @@ of Org, as well as additional information, frequently asked questions
[[https://orgmode.org]].
#+cindex: print edition
-An earlier version (7.3) of this manual was published as a paperback book by
-Network Theory Ltd. in 2010.
+An earlier version (7.3) of this manual was available as a paperback
+book from the Network Theory Ltd. publishing company, closed in 2009.
** Installation
:PROPERTIES:
@@ -77,15 +83,18 @@ Network Theory Ltd. in 2010.
:END:
#+cindex: installation
-Org is included in all recent distributions of GNU Emacs, so you
-probably do not need to install it. Most users will simply activate
-Org and begin exploring its many features.
+Org is included in distributions of GNU Emacs, you probably do not
+need to install it. Most users will simply activate Org and begin
+exploring its features.
If, for one reason or another, you want to install Org on top of this
pre-packaged version, you can use the Emacs package system or clone
-Org's git repository.
+Org's git repository. We *strongly recommend* sticking to a single
+installation method.
-We *strongly recommend* sticking to a single installation method.
+When installing Org on top of the pre-packaged version, please note
+that Org stable versions are meant to be fully compatible with the
+last three stable versions of Emacs but not with older Emacsen.
*** Using Emacs packaging system
:PROPERTIES:
@@ -121,8 +130,11 @@ Note that in this case, =make autoloads= is mandatory: it defines
Org's version in =org-version.el= and Org's autoloads in
=org-loaddefs.el=.
-Remember to add the correct load path as described in the method
-above.
+Make sure you set the load path correctly in your Emacs init file:
+
+#+begin_src emacs-lisp
+(add-to-list 'load-path "~/src/org-mode/lisp")
+#+end_src
You can also compile with =make=, generate the documentation with
=make doc=, create a local configuration with =make config= and
@@ -138,9 +150,13 @@ Org Build System page on [[https://orgmode.org/worg/dev/org-build-system.html][W
:END:
Org's repository used to contain =contrib/= directory for add-ons
-contributed by others. As of Org 9.5, the directory has bee moved to
-this new dedicated [[https://git.sr.ht/~bzg/org-contrib][org-contrib]] repository, which you can install
-separately.
+contributed by others. As of Org 9.5, the directory has been moved to
+the dedicated org-contrib [[https://git.sr.ht/~bzg/org-contrib][repository]], which you can install
+separately as a [[https://elpa.nongnu.org/nongnu/org-contrib.html][package]] from NonGNU ELPA.
+
+There are enough valuable packages maintained outside of the Org repository.
+Worg has a list of [[https://orgmode.org/worg/org-contrib/index.html][org-contrib and external packages]], certainly it is not
+exhaustive.
** Activation
:PROPERTIES:
@@ -153,7 +169,8 @@ separately.
#+cindex: key bindings, global
Org mode buffers need Font Lock to be turned on: this is the default
-in Emacs[fn:1].
+in Emacs[fn:: If you do not use Font Lock globally turn it on in Org
+buffer with =(add-hook 'org-mode-hook #'turn-on-font-lock)=.].
There are compatibility issues between Org mode and some other Elisp
packages (see [[*Packages that conflict with Org mode]]). Please take the
@@ -205,11 +222,17 @@ region by using the mouse to select a region, or pressing
If you find problems with Org, or if you have questions, remarks, or
ideas about it, please send an email to the Org mailing list
-[[mailto:emacs-orgmode@gnu.org]]. You can subscribe to the list [[https://lists.gnu.org/mailman/listinfo/emacs-orgmode][from this
-web page]]. If you are not a member of the mailing list, your mail will
-be passed to the list after a moderator has approved it[fn:2]. We ask
-you to read and respect the [[https://www.gnu.org/philosophy/kind-communication.html][GNU Kind Communications Guidelines]] when
-sending messages on this mailing list.
+[[mailto:emacs-orgmode@gnu.org]]. You can subscribe to the list
+[[https://lists.gnu.org/mailman/listinfo/emacs-orgmode][from this web
+page]]. If you are not a member of the mailing list, your mail will
+be passed to the list after a moderator has approved it[fn:: Please
+consider subscribing to the mailing list in order to minimize the work
+the mailing list moderators have to do.]. We ask you to read and
+respect the
+[[https://www.gnu.org/philosophy/kind-communication.html][GNU Kind
+Communications Guidelines]] when sending messages on this mailing
+list. Please allow up to one month for the response and followup if
+no response is received on the bug report.
#+findex: org-version
#+findex: org-submit-bug-report
@@ -256,6 +279,14 @@ shown below.
(add-to-list 'load-path (expand-file-name "/path/to/org-mode/lisp"))
#+end_src
+If you are using Org mode version from Git repository, you can start
+minimal session using make.
+
+: # Bare Emacs
+: make repro
+: # or pass extra arguments
+: make repro REPRO_ARGS="-l /path/to/minimal/config.el /tmp/bug.org"
+
If an error occurs, a "backtrace" can be very useful---see below on
how to create one. Often a small example file helps, along with clear
information about:
@@ -380,7 +411,7 @@ the entire show and hide functionalities into a single command,
#+vindex: org-ctrl-k-protect-subtree
Headlines define the structure of an outline tree. Org headlines
-start on the left margin[fn:3] with one or more stars followed by
+start on the left margin[fn:1] with one or more stars followed by
a space. For example:
#+begin_example
@@ -449,7 +480,8 @@ Org uses just two commands, bound to {{{kbd(TAB)}}} and
#+end_example
#+vindex: org-cycle-emulate-tab
- Point must be on a headline for this to work[fn:4].
+ Point must be on a headline for this to work[fn:: See, however, the
+ option ~org-cycle-emulate-tab~.].
- {{{kbd(S-TAB)}}} (~org-global-cycle~), {{{kbd(C-u TAB)}}} ::
@@ -488,11 +520,11 @@ Org uses just two commands, bound to {{{kbd(TAB)}}} and
Switch back to the startup visibility of the buffer (see [[*Initial
visibility]]).
-- {{{kbd(C-u C-u C-u TAB)}}} (~outline-show-all~) ::
+- {{{kbd(C-u C-u C-u TAB)}}} (~org-show-all~) ::
#+cindex: show all, command
#+kindex: C-u C-u C-u TAB
- #+findex: outline-show-all
+ #+findex: org-show-all
Show all, including drawers.
- {{{kbd(C-c C-r)}}} (~org-reveal~) ::
@@ -508,18 +540,18 @@ Org uses just two commands, bound to {{{kbd(TAB)}}} and
headings. With a double prefix argument, also show the entire
subtree of the parent.
-- {{{kbd(C-c C-k)}}} (~outline-show-branches~) ::
+- {{{kbd(C-c C-k)}}} (~org-show-branches~) ::
#+cindex: show branches, command
#+kindex: C-c C-k
- #+findex: outline-show-branches
+ #+findex: org-show-branches
Expose all the headings of the subtree, but not their bodies.
-- {{{kbd(C-c TAB)}}} (~outline-show-children~) ::
+- {{{kbd(C-c TAB)}}} (~org-show-children~) ::
#+cindex: show children, command
#+kindex: C-c TAB
- #+findex: outline-show-children
+ #+findex: org-show-children
Expose all direct children of the subtree. With a numeric prefix
argument {{{var(N)}}}, expose all children down to level
{{{var(N)}}}.
@@ -528,7 +560,7 @@ Org uses just two commands, bound to {{{kbd(TAB)}}} and
#+kindex: C-c C-x b
#+findex: org-tree-to-indirect-buffer
- Show the current subtree in an indirect buffer[fn:5]. With
+ Show the current subtree in an indirect buffer[fn:2]. With
a numeric prefix argument {{{var(N)}}}, go up to level {{{var(N)}}}
and then take that tree. If {{{var(N)}}} is negative then go up
that many levels. With a {{{kbd(C-u)}}} prefix, do not remove the
@@ -547,10 +579,12 @@ Org uses just two commands, bound to {{{kbd(TAB)}}} and
#+vindex: org-startup-folded
When Emacs first visits an Org file, the global state is set to
-~showeverything~, i.e., all file content is visible[fn:6]. This can
-be configured through the variable ~org-startup-folded~, or on
-a per-file basis by adding one of the following lines anywhere in the
-buffer:
+~showeverything~, i.e., all file content is visible[fn:: When
+~org-agenda-inhibit-startup~ is non-~nil~, Org does not honor the
+default visibility state when first opening a file for the agenda (see
+[[*Speeding Up Your Agendas]]).]. This can be configured through the
+variable ~org-startup-folded~, or on a per-file basis by adding one of
+the following lines anywhere in the buffer:
#+cindex: @samp{STARTUP}, keyword
#+begin_example
@@ -583,10 +617,10 @@ for this property are =folded=, =children=, =content=, and =all=.
:END:
#+cindex: edits, catching invisible
-#+vindex: org-catch-invisible-edits
+#+vindex: org-fold-catch-invisible-edits
Sometimes you may inadvertently edit an invisible part of the buffer
and be confused on what has been edited and how to undo the mistake.
-Setting ~org-catch-invisible-edits~ to non-~nil~ helps preventing
+Setting ~org-fold-catch-invisible-edits~ to non-~nil~ helps preventing
this. See the docstring of this option on how Org should catch
invisible edits and process them.
@@ -897,8 +931,10 @@ keys have different functionality.
An important feature of Org mode is the ability to construct /sparse
trees/ for selected information in an outline tree, so that the entire
document is folded as much as possible, but the selected information
-is made visible along with the headline structure above it[fn:7].
-Just try it out and you will see immediately how it works.
+is made visible along with the headline structure above it[fn:: See
+also the variable ~org-show-context-detail~ to decide how much context
+is shown around each match.]. Just try it out and you will see
+immediately how it works.
Org mode contains several commands creating such trees, all these
commands can be accessed through a dispatcher:
@@ -916,16 +952,18 @@ commands can be accessed through a dispatcher:
#+kindex: C-c / /
#+findex: org-occur
#+vindex: org-remove-highlights-with-change
- Prompts for a regexp (see [[*Regular Expressions]]) and shows a sparse
- tree with all matches. If the match is in a headline, the headline
- is made visible. If the match is in the body of an entry, headline
- and body are made visible. In order to provide minimal context,
- also the full hierarchy of headlines above the match is shown, as
- well as the headline following the match. Each match is also
- highlighted; the highlights disappear when the buffer is changed by
- an editing command, or by pressing {{{kbd(C-c C-c)}}}[fn:8]. When
- called with a {{{kbd(C-u)}}} prefix argument, previous highlights
- are kept, so several calls to this command can be stacked.
+ Prompts for a regexp (see [[*Regular Expressions]]) and shows a
+ sparse tree with all matches. If the match is in a headline, the
+ headline is made visible. If the match is in the body of an entry,
+ headline and body are made visible. In order to provide minimal
+ context, also the full hierarchy of headlines above the match is
+ shown, as well as the headline following the match. Each match is
+ also highlighted; the highlights disappear when the buffer is
+ changed by an editing command, or by pressing {{{kbd(C-c
+ C-c)}}}[fn:: This depends on the option
+ ~org-remove-highlights-with-change~.]. When called with a
+ {{{kbd(C-u)}}} prefix argument, previous highlights are kept, so
+ several calls to this command can be stacked.
- {{{kbd(M-g n)}}} or {{{kbd(M-g M-n)}}} (~next-error~) ::
@@ -986,17 +1024,18 @@ every exporter (see [[*Exporting]]) can parse and format them.
Org knows ordered lists, unordered lists, and description lists.
#+attr_texinfo: :indic @bullet
-- /Unordered/ list items start with =-=, =+=, or =*=[fn:9] as bullets.
+- /Unordered/ list items start with =-=, =+=, or =*=[fn:3] as bullets.
-
#+vindex: org-plain-list-ordered-item-terminator
#+vindex: org-alphabetical-lists
- /Ordered/ list items start with a numeral followed by either
- a period or a right parenthesis[fn:10], such as =1.= or =1)=[fn:11]
- If you want a list to start with a different value---e.g.,
- 20---start the text of the item with =[@20]=[fn:12]. Those
- constructs can be used in any item of the list in order to enforce
- a particular numbering.
+ /Ordered/ list items start with a numeral followed by either a
+ period or a right parenthesis[fn:: You can filter out any of them by
+ configuring ~org-plain-list-ordered-item-terminator~.], such as =1.=
+ or =1)=[fn:4] If you want a list to start with a different
+ value---e.g., 20---start the text of the item with =[@20]=[fn:5].
+ Those constructs can be used in any item of the list in order to
+ enforce a particular numbering.
- /Description/ list items are unordered list items, and contain the
separator =::= to distinguish the description /term/ from the
@@ -1075,12 +1114,13 @@ to disable them individually.
#+kindex: M-RET
#+findex: org-insert-heading
#+vindex: org-M-RET-may-split-line
- Insert new item at current level. With a prefix argument, force
- a new heading (see [[*Structure Editing]]). If this command is used in
- the middle of an item, that item is /split/ in two, and the second
- part becomes the new item[fn:13]. If this command is executed
- /before item's body/, the new item is created /before/ the current
- one.
+ Insert new item at current level. With a prefix argument, force a
+ new heading (see [[*Structure Editing]]). If this command is used
+ in the middle of an item, that item is /split/ in two, and the
+ second part becomes the new item[fn:: If you do not want the item to
+ be split, customize the variable ~org-M-RET-may-split-line~.]. If
+ this command is executed /before item's body/, the new item is
+ created /before/ the current one.
- {{{kbd(M-S-RET)}}} ::
@@ -1095,17 +1135,19 @@ to disable them individually.
#+vindex: org-support-shift-select
#+vindex: org-list-use-circular-motion
Jump to the previous/next item in the current list, but only if
- ~org-support-shift-select~ is off[fn:14]. If not, you can still use
- paragraph jumping commands like {{{kbd(C-UP)}}} and
- {{{kbd(C-DOWN)}}} to quite similar effect.
+ ~org-support-shift-select~ is off[fn:: If you want to cycle around
+ items that way, you may customize ~org-list-use-circular-motion~.].
+ If not, you can still use paragraph jumping commands like
+ {{{kbd(C-UP)}}} and {{{kbd(C-DOWN)}}} to quite similar effect.
- {{{kbd(M-UP)}}}, {{{kbd(M-DOWN)}}} ::
#+kindex: M-UP
#+kindex: M-DOWN
- Move the item including subitems up/down[fn:15], i.e., swap with
- previous/next item of same indentation. If the list is ordered,
- renumbering is automatic.
+ Move the item including subitems up/down[fn:: See
+ ~org-list-use-circular-motion~ for a cyclic behavior.], i.e., swap
+ with previous/next item of same indentation. If the list is
+ ordered, renumbering is automatic.
- {{{kbd(M-LEFT)}}}, {{{kbd(M-RIGHT)}}} ::
@@ -1214,7 +1256,7 @@ Org mode uses this special drawer for storing properties (see
[[*Properties and Columns]]). You cannot use it for anything else.
Completion over drawer keywords is also possible using
-{{{kbd(M-TAB)}}}[fn:16].
+{{{kbd(M-TAB)}}}[fn:6].
Visibility cycling (see [[*Visibility Cycling]]) on the headline hides and
shows the entry, but keep the drawer collapsed to a single line. In
@@ -1274,10 +1316,11 @@ Calculator Manual]]).
#+cindex: table syntax
Org makes it easy to format tables in plain ASCII. Any line with =|=
as the first non-whitespace character is considered part of a table.
-=|= is also the column separator[fn:17]. Moreover, a line starting
-with =|-= is a horizontal rule. It separates rows explicitly. Rows
-before the first horizontal rule are header lines. A table might look
-like this:
+=|= is also the column separator[fn:: To insert a vertical bar into a
+table field, use =\vert= or, inside a word =abc\vert{}def=.].
+Moreover, a line starting with =|-= is a horizontal rule. It
+separates rows explicitly. Rows before the first horizontal rule are
+header lines. A table might look like this:
#+begin_example
| Name | Phone | Age |
@@ -1839,7 +1882,7 @@ Formulas can reference the value of another field in two ways. Like
in any other spreadsheet, you may reference fields with
a letter/number combination like =B3=, meaning the second field in the
third row. However, Org prefers to use another, more general
-representation that looks like this:[fn:18]
+representation that looks like this:[fn:7]
: @ROW$COLUMN
@@ -1946,7 +1989,9 @@ and ~org-table-current-column~. Examples:
#+texinfo: @noindent
For the second and third examples, table {{{var(FOO)}}} must have at
least as many rows or columns as the current table. Note that this is
-inefficient[fn:19] for large number of rows.
+inefficient[fn:: The computation time scales as O(N^2) because table
+{{{var(FOO)}}} is parsed for each field to be copied.] for large
+number of rows.
**** Named references
:PROPERTIES:
@@ -1974,7 +2019,7 @@ constants in table formulas: for a property =Xyz= use the name
entry and in the hierarchy above it. If you have the =constants.el=
package, it will also be used to resolve constants, including natural
constants like =$h= for Planck's constant, and units like =$km= for
-kilometers[fn:20]. Column names and parameters can be specified in
+kilometers[fn:8]. Column names and parameters can be specified in
special table lines. These are described below, see [[*Advanced
features]]. All names must start with a letter, and further consist
of letters and numbers.
@@ -2095,7 +2140,7 @@ Unless you use large integer numbers or high-precision calculation and
display for floating point numbers you may alternatively provide
a ~printf~ format specifier to reformat the Calc result after it has
been passed back to Org instead of letting Calc already do the
-formatting[fn:21]. A few examples:
+formatting[fn:9]. A few examples:
| =$1+$2= | Sum of first and second field |
| =$1+$2;%.2f= | Same, format result to two decimals |
@@ -2124,7 +2169,7 @@ Operations]]). For example
required to not convert empty fields to 0. =f-1= is an optional
Calc format string similar to =%.1f= but leaves empty results empty.
-- =if(typeof(vmean($1..$7)) =​= 12, string(""), vmean($1..$7); E= ::
+- =if(typeof(vmean($1..$7)) =​= 12, string(""), vmean($1..$7)); E= ::
Mean value of a range unless there is any empty field. Every field
in the range that is empty is replaced by =nan= which lets =vmean=
@@ -2620,11 +2665,11 @@ keyword.
#+cindex: debugging, of table formulas
When the evaluation of a formula leads to an error, the field content
-becomes the string =#ERROR=. If you would like to see what is going
-on during variable substitution and calculation in order to find
-a bug, turn on formula debugging in the Tbl menu and repeat the
-calculation, for example by pressing {{{kbd(C-u C-u C-c = RET)}}} in
-a field. Detailed information are displayed.
+becomes the string =#ERROR=. If you want to see what is going on
+during variable substitution and calculation in order to find a bug,
+turn on formula debugging in the Tbl menu and repeat the calculation,
+for example by pressing {{{kbd(C-u C-u C-c = RET)}}} in a field.
+Detailed information are displayed.
*** Updating the table
:PROPERTIES:
@@ -2682,9 +2727,10 @@ following commands:
:END:
If you want the recalculation of fields to happen automatically, or if
-you want to be able to assign /names/[fn:22] to fields and columns,
-you need to reserve the first column of the table for special marking
-characters.
+you want to be able to assign /names/[fn:: Such names must start with
+an alphabetic character and use only alphanumeric/underscore
+characters.] to fields and columns, you need to reserve the first
+column of the table for special marking characters.
- {{{kbd(C-#)}}} (~org-table-rotate-recalc-marks~) ::
@@ -2991,7 +3037,7 @@ links to other files, Usenet articles, emails, and much more.
#+cindex: angle bracket links
#+cindex: plain links
Org recognizes plain URIs, possibly wrapped within angle
-brackets[fn:23], and activate them as clickable links.
+brackets[fn:10], and activate them as clickable links.
#+cindex: bracket links
The general link format, however, looks like this:
@@ -3035,11 +3081,13 @@ the {{{var(LINK)}}} part, if there is no description, or the
If you place point at the beginning or just behind the end of the
displayed text and press {{{kbd(BS)}}}, you remove
-the---invisible---bracket at that location[fn:24]. This makes the link
+the---invisible---bracket at that location[fn:: More accurately, the
+precise behavior depends on how point arrived there---see
+[[info:elisp#Invisible Text][Invisible Text]].]. This makes the link
incomplete and the internals are again displayed as plain text.
Inserting the missing bracket hides the link internals again. To show
-the internal structure of all links, use the menu: Org \rarr Hyperlinks \rarr
-Literal links.
+the internal structure of all links, use the menu: Org \rarr
+Hyperlinks \rarr Literal links.
** Internal Links
:PROPERTIES:
@@ -3058,7 +3106,7 @@ Org provides several refinements to internal navigation within
a document. Most notably, a construct like =[[#my-custom-id]]=
specifically targets the entry with the =CUSTOM_ID= property set to
=my-custom-id=. Also, an internal link looking like =[[*Some
-section]]= points to a headline with the name =Some section=[fn:25].
+section]]= points to a headline with the name =Some section=[fn:11].
#+cindex: targets, for links
When the link does not belong to any of the cases above, Org looks for
@@ -3091,8 +3139,9 @@ you in the process, if needed. See [[*Org Syntax]].
During export, internal links are used to mark objects and assign them
a number. Marked objects are then referenced by links pointing to
them. In particular, links without a description appear as the number
-assigned to the marked object[fn:26]. In the following excerpt from
-an Org buffer
+assigned to the marked object[fn:: When targeting a =NAME= keyword,
+the =CAPTION= keyword is mandatory in order to get proper numbering
+(see [[*Captions]]).]. In the following excerpt from an Org buffer
#+begin_example
1. one item
@@ -3234,7 +3283,7 @@ options:
| Link Type | Example |
|------------+----------------------------------------------------------|
-| http | =https://staff.science.uva.nl/c.dominik/= |
+| http | =http://staff.science.uva.nl/c.dominik/= |
| https | =https://orgmode.org/= |
| doi | =doi:10.1000/182= |
| file | =file:/home/dominik/images/jupiter.jpg= |
@@ -3245,7 +3294,7 @@ options:
| | =/ssh:me@some.where:papers/last.pdf= (same as above) |
| | =file:sometextfile::NNN= (jump to line number) |
| | =file:projects.org= |
-| | =file:projects.org::some words= (text search)[fn:27] |
+| | =file:projects.org::some words= (text search)[fn:12] |
| | =file:projects.org::*task title= (headline search) |
| | =file:projects.org::#custom-id= (headline search) |
| attachment | =attachment:projects.org= |
@@ -3328,7 +3377,7 @@ current buffer:
For Org files, if there is a =<<target>>= at point, the link points
to the target. Otherwise it points to the current headline, which
- is also the description[fn:28].
+ is also the description.
#+vindex: org-id-link-to-org-use-id
#+cindex: @samp{CUSTOM_ID}, property
@@ -3336,12 +3385,15 @@ current buffer:
If the headline has a =CUSTOM_ID= property, store a link to this
custom ID. In addition or alternatively, depending on the value of
~org-id-link-to-org-use-id~, create and/or use a globally unique
- =ID= property for the link[fn:29]. So using this command in Org
- buffers potentially creates two links: a human-readable link from
- the custom ID, and one that is globally unique and works even if the
- entry is moved from file to file. The =ID= property can be either a
- UUID (default) or a timestamp, depending on ~org-id-method~. Later,
- when inserting the link, you need to decide which one to use.
+ =ID= property for the link[fn:: The Org Id library must first be
+ loaded, either through ~org-customize~, by enabling ~id~ in
+ ~org-modules~, or by adding =(require 'org-id)= in your Emacs init
+ file.]. So using this command in Org buffers potentially creates
+ two links: a human-readable link from the custom ID, and one that is
+ globally unique and works even if the entry is moved from file to
+ file. The =ID= property can be either a UUID (default) or a
+ timestamp, depending on ~org-id-method~. Later, when inserting the
+ link, you need to decide which one to use.
- /Email/News clients: VM, Rmail, Wanderlust, MH-E, Gnus/ ::
@@ -3398,11 +3450,11 @@ generally, act on links.
#+cindex: completion, of links
#+cindex: inserting links
#+vindex: org-link-keep-stored-after-insertion
- Insert a link[fn:30]. This prompts for a link to be inserted into
+ Insert a link[fn:13]. This prompts for a link to be inserted into
the buffer. You can just type a link, using text for an internal
link, or one of the link type prefixes mentioned in the examples
above. The link is inserted into the buffer, along with
- a descriptive text[fn:31]. If some text was selected at this time,
+ a descriptive text[fn:14]. If some text was selected at this time,
it becomes the default description.
- /Inserting stored links/ ::
@@ -3417,11 +3469,12 @@ generally, act on links.
prefixes like =http= or =ftp=, including the prefixes defined
through link abbreviations (see [[*Link Abbreviations]]). If you
press {{{kbd(RET)}}} after inserting only the prefix, Org offers
- specific completion support for some link types[fn:32]. For
- example, if you type {{{kbd(f i l e RET)}}}---alternative access:
- {{{kbd(C-u C-c C-l)}}}, see below---Org offers file name
- completion, and after {{{kbd(b b d b RET)}}} you can complete
- contact names.
+ specific completion support for some link types[fn:: This works if
+ a function has been defined in the ~:complete~ property of a link
+ in ~org-link-parameters~.]. For example, if you type {{{kbd(f i l
+ e RET)}}}---alternative access: {{{kbd(C-u C-c C-l)}}}, see
+ below---Org offers file name completion, and after {{{kbd(b b d b
+ RET)}}} you can complete contact names.
- {{{kbd(C-u C-c C-l)}}} ::
@@ -3488,7 +3541,8 @@ generally, act on links.
#+vindex: org-link-use-indirect-buffer-for-internals
#+kindex: mouse-3
Like {{{kbd(mouse-2)}}}, but force file links to be opened with
- Emacs, and internal links to be displayed in another window[fn:33].
+ Emacs, and internal links to be displayed in another window[fn:: See
+ the variable ~org-link-use-indirect-buffer-for-internals~.].
- {{{kbd(C-c %)}}} (~org-mark-ring-push~) ::
@@ -3566,7 +3620,7 @@ replacement text. Here is an example:
(setq org-link-abbrev-alist
'(("bugzilla" . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
("Nu Html Checker" . "https://validator.w3.org/nu/?doc=%h")
- ("duckduckgo" . "https://duckduckgo.com/?q=%s")
+ ("duckduckgo" . "https://duckduckgo.com/?q=%s")
("omap" . "https://nominatim.openstreetmap.org/search?q=%s&polygon=1")
("ads" . "https://ui.adsabs.harvard.edu/search/q=%20author%3A\"%s\"")))
#+end_src
@@ -3598,8 +3652,11 @@ can define them in the file with
#+begin_example
,#+LINK: bugzilla https://10.1.2.9/bugzilla/show_bug.cgi?id=
,#+LINK: duckduckgo https://duckduckgo.com/?q=%s
+,#+LINK: "Nu Html Checker" https://validator.w3.org/nu/?doc=%h
#+end_example
+The abbreviations containing spaces must be quoted.
+
In-buffer completion (see [[*Completion]]) can be used after =[= to
complete link abbreviations. You may also define a Lisp function that
implements special (e.g., completion) support for inserting such a
@@ -3622,11 +3679,12 @@ the link completion function like this:
File links can contain additional information to make Emacs jump to a
particular location in the file when following a link. This can be a
-line number or a search option after a double colon[fn:34]. For
+line number or a search option after a double colon[fn:: For backward
+compatibility, line numbers can also follow a single colon.]. For
example, when the command ~org-store-link~ creates a link (see
-[[*Handling Links]]) to a file, it encodes the words in the current line
-as a search string that can be used to find this line back later when
-following the link with {{{kbd(C-c C-o)}}}.
+[[*Handling Links]]) to a file, it encodes the words in the current
+line as a search string that can be used to find this line back later
+when following the link with {{{kbd(C-c C-o)}}}.
Note that all search options apply for Attachment links in the same
way that they apply for File links.
@@ -3706,12 +3764,13 @@ implementation example. See the file =ol-bibtex.el=.
:END:
#+cindex: TODO items
-Org mode does not maintain TODO lists as separate documents[fn:35].
-Instead, TODO items are an integral part of the notes file, because
-TODO items usually come up while taking notes! With Org mode, simply
-mark any entry in a tree as being a TODO item. In this way,
-information is not duplicated, and the entire context from which the
-TODO item emerged is always present.
+Org mode does not maintain TODO lists as separate documents[fn:: Of
+course, you can make a document that contains only long lists of TODO
+items, but this is not required.]. Instead, TODO items are an
+integral part of the notes file, because TODO items usually come up
+while taking notes! With Org mode, simply mark any entry in a tree as
+being a TODO item. In this way, information is not duplicated, and
+the entire context from which the TODO item emerged is always present.
Of course, this technique for managing TODO items scatters them
throughout your notes file. Org mode compensates for this by
@@ -3825,7 +3884,9 @@ TODO items in particular (see [[*Tags]]).
#+cindex: workflow states as TODO keywords
You can use TODO keywords to indicate different, possibly /sequential/
-states in the process of working on an item, for example[fn:36]:
+states in the process of working on an item, for example[fn:: Changing
+the variable ~org-todo-keywords~ only becomes effective after
+restarting Org mode in a buffer.]:
#+begin_src emacs-lisp
(setq org-todo-keywords
@@ -3874,22 +3935,22 @@ Using TODO types, it would be set up like this:
(setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
#+end_src
-In this case, different keywords do not indicate states, but
-rather different types. So the normal work flow would be to assign
-a task to a person, and later to mark it DONE. Org mode supports this
-style by adapting the workings of the command {{{kbd(C-c
-C-t)}}}[fn:37]. When used several times in succession, it still
-cycles through all names, in order to first select the right type for
-a task. But when you return to the item after some time and execute
-{{{kbd(C-c C-t)}}} again, it will switch from any name directly to
-=DONE=. Use prefix arguments or completion to quickly select
-a specific name. You can also review the items of a specific TODO
-type in a sparse tree by using a numeric prefix to {{{kbd(C-c / t)}}}.
-For example, to see all things Lucy has to do, you would use
-{{{kbd(C-3 C-c / t)}}}. To collect Lucy's items from all agenda files
-into a single buffer, you would use the numeric prefix argument as
-well when creating the global TODO list: {{{kbd(C-3 M-x org-agenda
-t)}}}.
+In this case, different keywords do not indicate states, but rather
+different types. So the normal work flow would be to assign a task to
+a person, and later to mark it DONE. Org mode supports this style by
+adapting the workings of the command {{{kbd(C-c C-t)}}}[fn:: This is
+also true for the {{{kbd(t)}}} command in the agenda buffer.]. When
+used several times in succession, it still cycles through all names,
+in order to first select the right type for a task. But when you
+return to the item after some time and execute {{{kbd(C-c C-t)}}}
+again, it will switch from any name directly to =DONE=. Use prefix
+arguments or completion to quickly select a specific name. You can
+also review the items of a specific TODO type in a sparse tree by
+using a numeric prefix to {{{kbd(C-c / t)}}}. For example, to see all
+things Lucy has to do, you would use {{{kbd(C-3 C-c / t)}}}. To
+collect Lucy's items from all agenda files into a single buffer, you
+would use the numeric prefix argument as well when creating the global
+TODO list: {{{kbd(C-3 M-x org-agenda t)}}}.
*** Multiple keyword sets in one file
:PROPERTIES:
@@ -3950,8 +4011,9 @@ correct sequence. In addition to typing a keyword or using completion
If you would like to quickly change an entry to an arbitrary TODO
state instead of cycling through the states, you can set up keys for
single-letter access to the states. This is done by adding the
-selection character after each keyword, in parentheses[fn:38]. For
-example:
+selection character after each keyword, in parentheses[fn:: All
+characters are allowed except =@=, =^= and =!=, which have a special
+meaning here.]. For example:
#+begin_src emacs-lisp
(setq org-todo-keywords
@@ -3963,7 +4025,7 @@ example:
#+vindex: org-fast-tag-selection-include-todo
If you then press {{{kbd(C-c C-t)}}} followed by the selection key,
the entry is switched to this state. {{{kbd(SPC)}}} can be used to
-remove any TODO keyword from an entry[fn:39].
+remove any TODO keyword from an entry[fn:15].
*** Setting up keywords for individual files
:PROPERTIES:
@@ -4008,7 +4070,10 @@ Remember that the keywords after the vertical bar---or the last
keyword if no bar is there---must always mean that the item is DONE,
although you may use a different word. After changing one of these
lines, use {{{kbd(C-c C-c)}}} with point still in the line to make the
-changes known to Org mode[fn:40].
+changes known to Org mode[fn:: Org mode parses these lines only when
+Org mode is activated after visiting a file. {{{kbd(C-c C-c)}}} with
+point in a line starting with =#+= is simply restarting Org mode for
+the current buffer.].
*** Faces for TODO keywords
:PROPERTIES:
@@ -4151,7 +4216,8 @@ clock working time for a task, see [[*Clocking Work Time]].
:END:
The most basic automatic logging is to keep track of /when/ a certain
-TODO item was marked as done. This can be achieved with[fn:41]
+TODO item was marked as done. This can be achieved with[fn:: The
+corresponding in-buffer setting is: =#+STARTUP: logdone=.]
#+begin_src emacs-lisp
(setq org-log-done 'time)
@@ -4165,8 +4231,9 @@ after the headline. If you turn the entry back into a TODO item
through further state cycling, that line is removed again. If you
turn the entry back to a non-TODO state (by pressing {{{kbd(C-c C-t
SPC)}}} for example), that line is also removed, unless you set
-~org-closed-keep-when-no-todo~ to non-~nil~. If you want to record
-a note along with the timestamp, use[fn:42]
+~org-closed-keep-when-no-todo~ to non-~nil~. If you want to record a
+note along with the timestamp, use[fn:: The corresponding in-buffer
+setting is: =#+STARTUP: lognotedone=.]
#+begin_src emacs-lisp
(setq org-log-done 'note)
@@ -4188,13 +4255,16 @@ entry with a =Closing Note= heading.
You might want to automatically keep track of when a state change
occurred and maybe take a note about this change. You can either
record just a timestamp, or a time-stamped note. These records are
-inserted after the headline as an itemized list, newest first[fn:43].
-When taking a lot of notes, you might want to get the notes out of the
-way into a drawer (see [[*Drawers]]). Customize the variable
-~org-log-into-drawer~ to get this behavior---the recommended drawer
-for this is called =LOGBOOK=[fn:44]. You can also overrule the
-setting of this variable for a subtree by setting a =LOG_INTO_DRAWER=
-property.
+inserted after the headline as an itemized list, newest first[fn:: See
+the variable ~org-log-states-order-reversed~.]. When taking a lot of
+notes, you might want to get the notes out of the way into a drawer
+(see [[*Drawers]]). Customize the variable ~org-log-into-drawer~ to
+get this behavior---the recommended drawer for this is called
+=LOGBOOK=[fn:: Note that the =LOGBOOK= drawer is unfolded when
+pressing {{{kbd(SPC)}}} in the agenda to show an entry---use
+{{{kbd(C-u SPC)}}} to keep it folded here.]. You can also overrule
+the setting of this variable for a subtree by setting a
+=LOG_INTO_DRAWER= property.
Since it is normally too much to record a note for every state, Org
mode expects configuration on a per-keyword basis for this. This is
@@ -4211,7 +4281,7 @@ example, with the setting
You not only define global TODO keywords and fast access keys, but
also request that a time is recorded when the entry is set to =DONE=,
and that a note is recorded when switching to =WAIT= or
-=CANCELED=[fn:45]. The setting for =WAIT= is even more special: the
+=CANCELED=[fn:16]. The setting for =WAIT= is even more special: the
=!= after the slash means that in addition to the note taken when
entering the state, a timestamp should be recorded when /leaving/ the
=WAIT= state, if and only if the /target/ state does not configure
@@ -4260,7 +4330,7 @@ specific settings like =TODO(!)=. For example:
#+cindex: @samp{STYLE}, property
Org has the ability to track the consistency of a special category of
-TODO, called "habits." To use habits, you have to enable the ~habits~
+TODO, called "habits." To use habits, you have to enable the ~habit~
module by customizing the variable ~org-modules~.
A habit has the following properties:
@@ -4416,10 +4486,11 @@ TODO items.
#+findex: org-priority-up
#+findex: org-priority-down
#+vindex: org-priority-start-cycle-with-default
- Increase/decrease the priority of the current headline[fn:46]. Note
- that these keys are also used to modify timestamps (see [[*Creating
- Timestamps]]). See also [[*Packages that conflict with Org mode]], for
- a discussion of the interaction with shift-selection.
+ Increase/decrease the priority of the current headline[fn:: See also
+ the option ~org-priority-start-cycle-with-default~.]. Note that
+ these keys are also used to modify timestamps (see [[*Creating
+ Timestamps]]). See also [[*Packages that conflict with Org mode]],
+ for a discussion of the interaction with shift-selection.
#+vindex: org-priority-highest
#+vindex: org-priority-lowest
@@ -4448,11 +4519,13 @@ Or, using numeric values:
#+vindex: org-agenda-todo-list-sublevels
It is often advisable to break down large tasks into smaller,
manageable subtasks. You can do this by creating an outline tree
-below a TODO item, with detailed subtasks on the tree[fn:47]. To keep
-an overview of the fraction of subtasks that have already been marked
-as done, insert either =[/]= or =[%]= anywhere in the headline. These
-cookies are updated each time the TODO status of a child changes, or
-when pressing {{{kbd(C-c C-c)}}} on the cookie. For example:
+below a TODO item, with detailed subtasks on the tree[fn:: To keep
+subtasks out of the global TODO list, see the option
+~org-agenda-todo-list-sublevels~.]. To keep an overview of the
+fraction of subtasks that have already been marked as done, insert
+either =[/]= or =[%]= anywhere in the headline. These cookies are
+updated each time the TODO status of a child changes, or when pressing
+{{{kbd(C-c C-c)}}} on the cookie. For example:
#+begin_example
,* Organize Party [33%]
@@ -4475,7 +4548,7 @@ in the subtree (not just direct children), configure the variable
include the word =recursive= into the value of the =COOKIE_DATA=
property.
-#+begin_example org
+#+begin_example
,* Parent capturing statistics [2/20]
:PROPERTIES:
:COOKIE_DATA: todo recursive
@@ -4504,7 +4577,7 @@ of) a large number of subtasks (see [[*Checkboxes]]).
#+cindex: checkboxes
#+vindex: org-list-automatic-rules
-Every item in a plain list[fn:48] (see [[*Plain Lists]]) can be made into
+Every item in a plain list[fn:17] (see [[*Plain Lists]]) can be made into
a checkbox by starting it with the string =[ ]=. This feature is
similar to TODO items (see [[*TODO Items]]), but is more lightweight.
Checkboxes are not included into the global TODO list, so they are
@@ -4540,14 +4613,17 @@ idea on how many checkboxes remain, even without opening a folded
entry. The cookies can be placed into a headline or into (the first
line of) a plain list item. Each cookie covers checkboxes of direct
children structurally below the headline/item on which the cookie
-appears[fn:49]. You have to insert the cookie yourself by typing
-either =[/]= or =[%]=. With =[/]= you get an =n out of m= result, as
-in the examples above. With =[%]= you get information about the
-percentage of checkboxes checked (in the above example, this would be
-=[50%]= and =[33%]=, respectively). In a headline, a cookie can count
-either checkboxes below the heading or TODO states of children, and it
-displays whatever was changed last. Set the property =COOKIE_DATA= to
-either =checkbox= or =todo= to resolve this issue.
+appears[fn:: Set the variable ~org-hierarchical-checkbox-statistics~
+if you want such cookies to count all checkboxes below the cookie, not
+just those belonging to direct children.]. You have to insert the
+cookie yourself by typing either =[/]= or =[%]=. With =[/]= you get
+an =n out of m= result, as in the examples above. With =[%]= you get
+information about the percentage of checkboxes checked (in the above
+example, this would be =[50%]= and =[33%]=, respectively). In a
+headline, a cookie can count either checkboxes below the heading or
+TODO states of children, and it displays whatever was changed last.
+Set the property =COOKIE_DATA= to either =checkbox= or =todo= to
+resolve this issue.
#+cindex: blocking, of checkboxes
#+cindex: checkbox blocking
@@ -4564,8 +4640,10 @@ The following commands work with checkboxes:
#+findex: org-toggle-checkbox
Toggle checkbox status or---with prefix argument---checkbox presence
at point. With a single prefix argument, add an empty checkbox or
- remove the current one[fn:50]. With a double prefix argument, set
- it to =[-]=, which is considered to be an intermediate state.
+ remove the current one[fn:: {{{kbd(C-u C-c C-c)}}} on the /first/
+ item of a list with no checkbox adds checkboxes to the rest of the
+ list.]. With a double prefix argument, set it to =[-]=, which is
+ considered to be an intermediate state.
- {{{kbd(C-c C-x C-b)}}} (~org-toggle-checkbox~) ::
@@ -4677,7 +4755,9 @@ the final heading has the tags =work=, =boss=, =notes=, and =action=
even though the final heading is not explicitly marked with those
tags. You can also set tags that all entries in a file should inherit
just as if these tags were defined in a hypothetical level zero that
-surrounds the entire file. Use a line like this[fn:51]
+surrounds the entire file. Use a line like this[fn:: As with all
+these in-buffer settings, pressing {{{kbd(C-c C-c)}}} activates any
+changes in the line.]
#+cindex: @samp{FILETAGS}, keyword
: #+FILETAGS: :Peter:Boss:Secret:
@@ -4691,10 +4771,11 @@ use the variables ~org-use-tag-inheritance~ and
#+vindex: org-tags-match-list-sublevels
When a headline matches during a tags search while tag inheritance is
turned on, all the sublevels in the same tree---for a simple match
-form---match as well[fn:52]. The list of matches may then become
-very long. If you only want to see the first tags match in a subtree,
-configure the variable ~org-tags-match-list-sublevels~ (not
-recommended).
+form---match as well[fn:: This is only true if the search does not
+involve more complex tests including properties (see [[*Property
+Searches]]).]. The list of matches may then become very long. If you
+only want to see the first tags match in a subtree, configure the
+variable ~org-tags-match-list-sublevels~ (not recommended).
#+vindex: org-agenda-use-tag-inheritance
Tag inheritance is relevant when the agenda search tries to match
@@ -4744,9 +4825,12 @@ also a special command for inserting tags:
#+cindex: @samp{TAGS}, keyword
Org supports tag insertion based on a /list of tags/. By default this
list is constructed dynamically, containing all tags currently used in
-the buffer[fn:53]. You may also globally specify a hard list of tags
-with the variable ~org-tag-alist~. Finally you can set the default
-tags for a given file using the =TAGS= keyword, like
+the buffer[fn:: To extend this default list to all tags used in all
+agenda files (see [[*Agenda Views]]), customize the variable
+~org-complete-tags-always-offer-all-agenda-tags~.]. You may also
+globally specify a hard list of tags with the variable
+~org-tag-alist~. Finally you can set the default tags for a given
+file using the =TAGS= keyword, like
#+begin_example
,#+TAGS: @work @home @tennisclub
@@ -4830,7 +4914,8 @@ by the following configuration:
If at least one tag has a selection key then pressing {{{kbd(C-c
C-c)}}} automatically presents you with a special interface, listing
inherited tags, the tags of the current headline, and a list of all
-valid tags with corresponding keys[fn:54].
+valid tags with corresponding keys[fn:: Keys are automatically
+assigned to tags that have no configured keys.].
Pressing keys assigned to tags adds or removes them from the list of
tags in the current line. Selecting a tag in a group of mutually
@@ -5101,7 +5186,7 @@ value after it. Keys are case-insensitive. Here is an example:
Depending on the value of ~org-use-property-inheritance~, a property
set this way is associated either with a single entry, or with the
-sub-tree defined by the entry, see [[*Property Inheritance]].
+subtree defined by the entry, see [[*Property Inheritance]].
You may define the allowed values for a particular property =Xyz= by
setting a property =Xyz_ALL=. This special property is /inherited/,
@@ -5470,7 +5555,9 @@ optional. The individual parts have the following meaning:
- {{{var(SUMMARY-TYPE)}}} ::
The summary type. If specified, the column values for parent nodes
- are computed from the children[fn:55].
+ are computed from the children[fn:: If more than one summary type
+ applies to the same property, the parent values are computed
+ according to the first of them.].
Supported summary types are:
@@ -5487,7 +5574,7 @@ optional. The individual parts have the following meaning:
| =:min= | Smallest time value in column. |
| =:max= | Largest time value. |
| =:mean= | Arithmetic mean of time values. |
- | =@min= | Minimum age[fn:56] (in days/hours/mins/seconds). |
+ | =@min= | Minimum age[fn:18] (in days/hours/mins/seconds). |
| =@max= | Maximum age (in days/hours/mins/seconds). |
| =@mean= | Arithmetic mean of ages (in days/hours/mins/seconds). |
| =est+= | Add low-high estimates. |
@@ -5515,7 +5602,9 @@ contrast, =est+= estimates the full job more realistically, at 10--15
days.
Here is an example for a complete columns definition, along with
-allowed values[fn:57].
+allowed values[fn:: Please note that the =COLUMNS= definition must be
+on a single line; it is wrapped here only because of formatting
+constraints.].
#+begin_example
:COLUMNS: %25ITEM %9Approved(Approved?){X} %Owner %11Status \
@@ -5788,7 +5877,9 @@ recalculated automatically after an update.
An alternative way to capture and process property values into a table
is provided by Eric Schulte's =org-collector.el=, which is a package
-in =org-contrib=[fn:58]. It provides a general API to collect
+in =org-contrib=[fn:: Contributed packages are not part of Emacs, but
+are distributed with the main distribution of Org---visit
+[[https://orgmode.org]].]. It provides a general API to collect
properties from entries in a certain scope, and arbitrary Lisp
expressions to process these values before inserting them into a table
or a dynamic block.
@@ -5821,7 +5912,7 @@ is used in a much wider sense.
A timestamp is a specification of a date (possibly with a time or
a range of times) in a special format, either =<2003-09-16 Tue>= or
-=<2003-09-16 Tue 09:39>= or =<2003-09-16 Tue 12:00-12:30>=[fn:59].
+=<2003-09-16 Tue 09:39>= or =<2003-09-16 Tue 12:00-12:30>=[fn:19].
A timestamp can appear anywhere in the headline or body of an Org tree
entry. Its presence causes entries to be shown on specific dates in
the agenda (see [[*Weekly/daily agenda]]). We distinguish:
@@ -5847,8 +5938,8 @@ the agenda (see [[*Weekly/daily agenda]]). We distinguish:
#+cindex: timestamp, with repeater interval
A timestamp may contain a /repeater interval/, indicating that it
applies not only on the given date, but again and again after
- a certain interval of N days (d), weeks (w), months (m), or years
- (y). The following shows up in the agenda every Wednesday:
+ a certain interval of N hours (h), days (d), weeks (w), months (m),
+ or years (y). The following shows up in the agenda every Wednesday:
#+begin_example
,* Pick up Sam at school
@@ -5859,9 +5950,15 @@ the agenda (see [[*Weekly/daily agenda]]). We distinguish:
#+cindex: diary style timestamps
#+cindex: sexp timestamps
+ # Mentioned inside the footnote.
+ #+findex: org-date
+ #+findex: org-anniversary
+ #+findex: org-cyclic
+ #+findex: org-block
+
For more complex date specifications, Org mode supports using the
special expression diary entries implemented in the Emacs Calendar
- package[fn:60]. For example, with optional time:
+ package[fn:20]. For example, with optional time:
#+begin_example
,* 22:00-23:00 The nerd meeting on every 2nd Thursday of the month
@@ -6013,7 +6110,7 @@ a range, it is taken from the stamp in the buffer. When filling in
information, Org mode assumes that most of the time you want to enter
a date in the future: if you omit the month/year and the given
day/month is /before/ today, it assumes that you mean a future
-date[fn:61]. If the date has been automatically shifted into the
+date[fn:21]. If the date has been automatically shifted into the
future, the time prompt shows this with =(=>F)=.
For example, let's assume that today is *June 13, 2006*. Here is how
@@ -6078,11 +6175,13 @@ separator in the latter case, e.g.:
#+cindex: calendar, for selecting date
#+vindex: org-popup-calendar-for-date-prompt
-Parallel to the minibuffer prompt, a calendar is popped up[fn:62].
-When you exit the date prompt, either by clicking on a date in the
-calendar, or by pressing {{{kbd(RET)}}}, the date selected in the
-calendar is combined with the information entered at the prompt. You
-can control the calendar fully from the minibuffer:
+Parallel to the minibuffer prompt, a calendar is popped up[fn:: If you
+do not need/want the calendar, configure the variable
+~org-popup-calendar-for-date-prompt~.]. When you exit the date
+prompt, either by clicking on a date in the calendar, or by pressing
+{{{kbd(RET)}}}, the date selected in the calendar is combined with the
+information entered at the prompt. You can control the calendar fully
+from the minibuffer:
#+kindex: <
#+kindex: >
@@ -6111,14 +6210,15 @@ can control the calendar fully from the minibuffer:
| {{{kbd(<)}}} | Scroll calendar backward by one month. |
| {{{kbd(M-v)}}} | Scroll calendar forward by 3 months. |
| {{{kbd(C-v)}}} | Scroll calendar backward by 3 months. |
-| {{{kbd(C-.)}}} | Select today's date[fn:63] |
+| {{{kbd(C-.)}}} | Select today's date[fn:22] |
#+vindex: org-read-date-display-live
The actions of the date/time prompt may seem complex, but I assure you
they will grow on you, and you will start getting annoyed by pretty
much any other way of entering a date/time out there. To help you
understand what is going on, the current interpretation of your input
-is displayed live in the minibuffer[fn:64].
+is displayed live in the minibuffer[fn:: If you find this distracting,
+turn off the display with ~org-read-date-display-live~.].
*** Custom time format
:PROPERTIES:
@@ -6210,7 +6310,7 @@ immediately after the task they refer to.
date.
#+vindex: org-agenda-skip-scheduled-if-done
- The headline is listed under the given date[fn:65]. In addition,
+ The headline is listed under the given date[fn:23]. In addition,
a reminder that the scheduled date has passed is present in the
compilation for /today/, until the entry is marked as done, i.e.,
the task is automatically forwarded until completed.
@@ -6262,7 +6362,7 @@ expression entry matches.
:END:
The following commands allow you to quickly insert a deadline or to
-schedule an item:[fn:66]
+schedule an item:[fn:24]
- {{{kbd(C-c C-d)}}} (~org-deadline~) ::
@@ -6274,7 +6374,8 @@ schedule an item:[fn:66]
timestamp . When called with a prefix argument, also remove any
existing deadline from the entry. Depending on the variable
~org-log-redeadline~, take a note when changing an existing
- deadline[fn:67].
+ deadline[fn:: Note the corresponding =STARTUP= options
+ =logredeadline=, =lognoteredeadline=, and =nologredeadline=.].
- {{{kbd(C-c C-s)}}} (~org-schedule~) ::
@@ -6286,7 +6387,8 @@ schedule an item:[fn:66]
=CLOSED= timestamp. When called with a prefix argument, also remove
the scheduling date from the entry. Depending on the variable
~org-log-reschedule~, take a note when changing an existing
- scheduling time[fn:68].
+ scheduling time[fn:: Note the corresponding =STARTUP= options
+ =logreschedule=, =lognotereschedule=, and =nologreschedule=.].
- {{{kbd(C-c / d)}}} (~org-check-deadlines~) ::
@@ -6326,7 +6428,7 @@ any current timestamp.
Some tasks need to be repeated again and again. Org mode helps to
organize such tasks using a so-called repeater in a =DEADLINE=,
-=SCHEDULED=, or plain timestamps[fn:69]. In the following example:
+=SCHEDULED=, or plain timestamps[fn:25]. In the following example:
#+begin_example
,** TODO Pay the rent
@@ -6347,16 +6449,19 @@ period last
#+vindex: org-todo-repeat-to-state
Deadlines and scheduled items produce entries in the agenda when they
are over-due, so it is important to be able to mark such an entry as
-done once you have done so. When you mark a =DEADLINE= or
-a =SCHEDULED= with the TODO keyword =DONE=, it no longer produces
+done once you have done so. When you mark a =DEADLINE= or a
+=SCHEDULED= with the TODO keyword =DONE=, it no longer produces
entries in the agenda. The problem with this is, however, is that
then also the /next/ instance of the repeated entry will not be
active. Org mode deals with this in the following way: when you try
to mark such an entry as done, using {{{kbd(C-c C-t)}}}, it shifts the
base date of the repeating timestamp by the repeater interval, and
-immediately sets the entry state back to TODO[fn:70]. In the example
-above, setting the state to =DONE= would actually switch the date like
-this:
+immediately sets the entry state back to TODO[fn:: In fact, the target
+state is taken from, in this sequence, the =REPEAT_TO_STATE= property,
+the variable ~org-todo-repeat-to-state~ if it is a string, the
+previous TODO state if ~org-todo-repeat-to-state~ is ~t~, or the first
+state of the TODO state sequence.]. In the example above, setting the
+state to =DONE= would actually switch the date like this:
#+begin_example
,** TODO Pay the rent
@@ -6367,7 +6472,7 @@ To mark a task with a repeater as DONE, use {{{kbd(C-- 1 C-c C-t)}}},
i.e., ~org-todo~ with a numeric prefix argument of =-1=.
#+vindex: org-log-repeat
-A timestamp[fn:71] is added under the deadline, to keep a record that
+A timestamp[fn:26] is added under the deadline, to keep a record that
you actually acted on the previous instance of this deadline.
As a consequence of shifting the base date, this entry is no longer
@@ -6437,7 +6542,7 @@ a project. When you start working on an item, you can start the
clock. When you stop working on that task, or when you mark the task
done, the clock is stopped and the corresponding time interval is
recorded. It also computes the total time spent on each
-subtree[fn:72] of a project. And it remembers a history or tasks
+subtree[fn:27] of a project. And it remembers a history or tasks
recently clocked, so that you can jump quickly between a number of
tasks absorbing your time.
@@ -6450,8 +6555,10 @@ To save the clock history across Emacs sessions, use:
#+vindex: org-clock-persist
When you clock into a new task after resuming Emacs, the incomplete
-clock[fn:73] is retrieved (see [[*Resolving idle time]]) and you are
-prompted about what to do with it.
+clock[fn:: To resume the clock under the assumption that you have
+worked on this task while outside Emacs, use =(setq org-clock-persist
+t)=.] is retrieved (see [[*Resolving idle time]]) and you are prompted
+about what to do with it.
*** Clocking commands
:PROPERTIES:
@@ -6487,17 +6594,20 @@ prompted about what to do with it.
While the clock is running, Org shows the current clocking time in
the mode line, along with the title of the task. The clock time
shown is all time ever clocked for this task and its children. If
- the task has an effort estimate (see [[*Effort Estimates]]), the mode
- line displays the current clocking time against it[fn:74]. If the
- task is a repeating one (see [[*Repeated tasks]]), show only the time
- since the last reset of the task[fn:75]. You can exercise more
- control over show time with the =CLOCK_MODELINE_TOTAL= property. It
- may have the values =current= to show only the current clocking
- instance, =today= to show all time clocked on this tasks today---see
- also the variable ~org-extend-today-until~, ~all~ to include all
- time, or ~auto~ which is the default[fn:76]. Clicking with
- {{{kbd(mouse-1)}}} onto the mode line entry pops up a menu with
- clocking options.
+ the task has an effort estimate (see [[*Effort Estimates]]), the
+ mode line displays the current clocking time against it[fn:: To add
+ an effort estimate "on the fly", hook a function doing this to
+ ~org-clock-in-prepare-hook~.]. If the task is a repeating one (see
+ [[*Repeated tasks]]), show only the time since the last reset of the
+ task[fn:: The last reset of the task is recorded by the
+ =LAST_REPEAT= property.]. You can exercise more control over show
+ time with the =CLOCK_MODELINE_TOTAL= property. It may have the
+ values =current= to show only the current clocking instance, =today=
+ to show all time clocked on this tasks today---see also the variable
+ ~org-extend-today-until~, ~all~ to include all time, or ~auto~ which
+ is the default[fn:: See also the variable
+ ~org-clock-mode-line-total~.]. Clicking with {{{kbd(mouse-1)}}}
+ onto the mode line entry pops up a menu with clocking options.
- {{{kbd(C-c C-x C-o)}}} (~org-clock-out~) ::
@@ -6509,7 +6619,8 @@ prompted about what to do with it.
computes the resulting time in inserts it after the time range as
==>HH:MM=. See the variable ~org-log-note-clock-out~ for the
possibility to record an additional note together with the clock-out
- timestamp[fn:77].
+ timestamp[fn:: The corresponding in-buffer setting is: =#+STARTUP:
+ lognoteclock-out=.].
- {{{kbd(C-c C-x C-x)}}} (~org-clock-in-last~) ::
@@ -6652,7 +6763,7 @@ into the buffer by ~org-clock-report~:
#+cindex: @samp{BEGIN clocktable}
#+begin_example
,#+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
-,#+END: clocktable
+,#+END:
#+end_example
#+vindex: org-clocktable-defaults
@@ -6689,16 +6800,16 @@ be selected:
absolutely, or relative to the current time and may be any of these
formats:
- | =2007-12-31= | New year eve 2007 |
- | =2007-12= | December 2007 |
- | =2007-W50= | ISO-week 50 in 2007 |
- | =2007-Q2= | 2nd quarter in 2007 |
- | =2007= | the year 2007 |
- | =today=, =yesterday=, =today-N= | a relative day |
- | =thisweek=, =lastweek=, =thisweek-N= | a relative week |
- | =thismonth=, =lastmonth=, =thismonth-N= | a relative month |
- | =thisyear=, =lastyear=, =thisyear-N= | a relative year |
- | =untilnow=[fn:78] | all clocked time ever |
+ | =2007-12-31= | New year eve 2007 |
+ | =2007-12= | December 2007 |
+ | =2007-W50= | ISO-week 50 in 2007 |
+ | =2007-Q2= | 2nd quarter in 2007 |
+ | =2007= | the year 2007 |
+ | =today=, =yesterday=, =today-N= | a relative day |
+ | =thisweek=, =lastweek=, =thisweek-N= | a relative week |
+ | =thismonth=, =lastmonth=, =thismonth-N= | a relative month |
+ | =thisyear=, =lastyear=, =thisyear-N= | a relative year |
+ | =untilnow=[fn:: When using ~:step~, ~untilnow~ starts from the beginning of 2003, not the beginning of time.] | all clocked time ever |
#+vindex: org-clock-display-default-range
When this option is not set, Org falls back to the value in
@@ -6730,7 +6841,7 @@ be selected:
- =:step= ::
- Set to =day=, =week=, =semimonth=, =month=, or =year= to split the
+ Set to =day=, =week=, =semimonth=, =month=, =quarter=, or =year= to split the
table into chunks. To use this, either =:block=, or =:tstart= and
=:tend= are required.
@@ -6760,7 +6871,9 @@ using the =:formatter= parameter.
- =:lang= ::
- Language[fn:79] to use for descriptive cells like "Task".
+ Language[fn:: Language terms can be set through the variable
+ ~org-clock-clocktable-language-setup~.] to use for descriptive cells
+ like "Task".
- =:link= ::
@@ -6776,6 +6889,10 @@ using the =:formatter= parameter.
Indent each headline field according to its level.
+- =:filetitle= ::
+
+ Show title in the file column if the file has a =#+title=.
+
- =:hidefiles= ::
Hide the file column when multiple files are used to produce the
@@ -6836,16 +6953,18 @@ day, you could write:
#+begin_example
,#+BEGIN: clocktable :maxlevel 2 :block today :scope tree1 :link t
-,#+END: clocktable
+,#+END:
#+end_example
#+texinfo: @noindent
-To use a specific time range you could write[fn:80]
+To use a specific time range you could write[fn:: Note that all
+parameters must be specified in a single line---the line is broken
+here only to fit it into the manual.]
#+begin_example
,#+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>"
:tend "<2006-08-10 Thu 12:00>"
-,#+END: clocktable
+,#+END:
#+end_example
#+texinfo: @noindent
@@ -6853,7 +6972,7 @@ A range starting a week ago and ending right now could be written as
#+begin_example
,#+BEGIN: clocktable :tstart "<-1w>" :tend "<now>"
-,#+END: clocktable
+,#+END:
#+end_example
#+texinfo: @noindent
@@ -6861,7 +6980,7 @@ A summary of the current subtree with % times would be
#+begin_example
,#+BEGIN: clocktable :scope subtree :link t :formula %
-,#+END: clocktable
+,#+END:
#+end_example
#+texinfo: @noindent
@@ -6870,7 +6989,7 @@ last week would be
#+begin_example
,#+BEGIN: clocktable :scope agenda :block lastweek :compact t
-,#+END: clocktable
+,#+END:
#+end_example
*** Resolving idle time and continuous clocking
@@ -6896,7 +7015,7 @@ current clock, or applying it to another one.
#+vindex: org-clock-x11idle-program-name
By customizing the variable ~org-clock-idle-time~ to some integer,
such as 10 or 15, Emacs can alert you when you get back to your
-computer after being idle for that many minutes[fn:81], and ask what
+computer after being idle for that many minutes[fn:28], and ask what
you want to do with the idle time. There will be a question waiting
for you when you get back, indicating how much idle time has passed
constantly updated with the current amount, as well as a set of
@@ -7065,12 +7184,14 @@ displayed.
#+vindex: org-agenda-columns-add-appointments-to-effort-sum
If you switch to column view in the daily/weekly agenda, the effort
-column summarizes the estimated work effort for each day[fn:82], and
-you can use this to find space in your schedule. To get an overview
-of the entire part of the day that is committed, you can set the
-option ~org-agenda-columns-add-appointments-to-effort-sum~. The
-appointments on a day that take place over a specified time interval
-are then also added to the load estimate of the day.
+column summarizes the estimated work effort for each day[fn:: Please
+note the pitfalls of summing hierarchical data in a flat list (see
+[[*Using Column View in the Agenda]]).], and you can use this to find
+space in your schedule. To get an overview of the entire part of the
+day that is committed, you can set the option
+~org-agenda-columns-add-appointments-to-effort-sum~. The appointments
+on a day that take place over a specified time interval are then also
+added to the load estimate of the day.
Effort estimates can be used in secondary agenda filtering that is
triggered with the {{{kbd(/)}}} key in the agenda (see [[*Commands in
@@ -7098,12 +7219,12 @@ The relative and countdown are started with separate commands.
#+findex: org-timer-start
Start or reset the relative timer. By default, the timer is set
to 0. When called with a {{{kbd(C-u)}}} prefix, prompt the user for
- a starting offset. If there is a timer string at point, this is
- taken as the default, providing a convenient way to restart taking
- notes after a break in the process. When called with a double
- prefix argument {{{kbd(C-u C-u)}}}, change all timer strings in the
- active region by a certain amount. This can be used to fix timer
- strings if the timer was not started at exactly the right moment.
+ a starting offset. The prompt will default to a timer string at
+ point (if any), providing a convenient way to restart taking notes
+ after a break in the process. When called with a double prefix
+ argument {{{kbd(C-u C-u)}}}, change all timer strings in the active
+ region by a certain amount. This can be used to fix timer strings
+ if the timer was not started at exactly the right moment.
- {{{kbd(C-c C-x ;)}}} (~org-timer-set-timer~) ::
@@ -7198,14 +7319,15 @@ special command:
By default, all level 1 headlines in the current buffer are
considered to be targets, but you can have more complex definitions
across a number of files. See the variable ~org-refile-targets~ for
- details. If you would like to select a location via
- a file-path-like completion along the outline path, see the
- variables ~org-refile-use-outline-path~ and
+ details. If you would like to select a location via a
+ file-path-like completion along the outline path, see the variables
+ ~org-refile-use-outline-path~ and
~org-outline-path-complete-in-steps~. If you would like to be able
to create new nodes as new parents for refiling on the fly, check
the variable ~org-refile-allow-creating-parent-nodes~. When the
- variable ~org-log-refile~[fn:83] is set, a timestamp or a note is
- recorded whenever an entry is refiled.
+ variable ~org-log-refile~[fn:: Note the corresponding =STARTUP=
+ options =logrefile=, =lognoterefile=, and =nologrefile=.] is set, a
+ timestamp or a note is recorded whenever an entry is refiled.
- {{{kbd(C-u C-c C-w)}}} ::
@@ -7360,9 +7482,9 @@ its location in the outline tree, but behaves in the following way:
#+vindex: org-cycle-open-archived-trees
It does not open when you attempt to do so with a visibility cycling
command (see [[*Visibility Cycling]]). You can force cycling archived
- subtrees with {{{kbd(C-TAB)}}}, or by setting the option
+ subtrees with {{{kbd(C-c C-TAB)}}}, or by setting the option
~org-cycle-open-archived-trees~. Also normal outline commands, like
- ~outline-show-all~, open archived subtrees.
+ ~org-show-all~, open archived subtrees.
-
#+vindex: org-sparse-tree-open-archived-trees
@@ -7408,9 +7530,9 @@ The following commands help manage the =ARCHIVE= tag:
child. If point is /not/ on a headline when this command is
invoked, check the level 1 trees.
-- {{{kbd(C-c C-TAB)}}} (~org-force-cycle-archived~) ::
+- {{{kbd(C-c C-TAB)}}} (~org-cycle-force-archived~) ::
- #+kindex: C-TAB
+ #+kindex: C-c C-TAB
Cycle a tree even if it is tagged with =ARCHIVE=.
- {{{kbd(C-c C-x A)}}} (~org-archive-to-archive-sibling~) ::
@@ -7474,7 +7596,6 @@ You may also define a global key for capturing new material (see
- {{{kbd(M-x org-capture)}}} (~org-capture~) ::
#+findex: org-capture
- #+cindex: date tree
Display the capture templates menu. If you have templates defined
(see [[*Capture templates]]), it offers these templates for selection or
use a new Org outline node as the default template. It inserts the
@@ -7653,6 +7774,7 @@ Now lets look at the elements of a template definition. Each entry in
#+vindex: org-default-notes-file
#+vindex: org-directory
+ #+cindex: date tree
Specification of where the captured item should be placed. In Org
files, targets usually define a node. Entries will become children
of this node. Other types will be added to the table or list in the
@@ -7686,7 +7808,7 @@ Now lets look at the elements of a template definition. Each entry in
- =(file+olp+datetree "filename" [ "Level 1 heading" ...])= ::
- This target[fn:84] creates a heading in a date tree[fn:85] for
+ This target[fn:29] creates a heading in a date tree[fn:30] for
today's date. If the optional outline path is given, the tree
will be built under the node it is pointing to, instead of at top
level. Check out the ~:time-prompt~ and ~:tree-type~ properties
@@ -7711,8 +7833,9 @@ Now lets look at the elements of a template definition. Each entry in
empty, an appropriate default template will be used. Otherwise this
is a string with escape codes, which will be replaced depending on
time and context of the capture call. You may also get this
- template string from a file[fn:86], or dynamically, from a function
- using either syntax:
+ template string from a file[fn:: When the file name is not absolute,
+ Org assumes it is relative to ~org-directory~.], or dynamically,
+ from a function using either syntax:
: (file "/path/to/template-file")
: (function FUNCTION-RETURNING-THE-TEMPLATE)
@@ -7807,17 +7930,38 @@ Now lets look at the elements of a template definition. Each entry in
Do not save the target file after finishing the capture.
- - ~:refile-targets :: Temporarily set ~org-refile-targets~ to the
+ - ~:refile-targets~ :: Temporarily set ~org-refile-targets~ to the
value of this property.
+ - ~:hook~ ::
+
+ A nullary function or list of nullary functions run before
+ ~org-capture-mode-hook~ when the template is selected.
+
+ - ~:prepare-finalize~ ::
+
+ A nullary function or list of nullary functions run before
+ ~org-capture-prepare-finalize-hook~ when the template is selected.
+
+ - ~:before-finalize~ ::
+
+ A nullary function or list of nullary functions run before
+ ~org-capture-before-finalize-hook~ when the template is selected.
+
+ - ~:after-finalize~ ::
+
+ A nullary function or list of nullary functions run before
+ ~org-capture-after-finalize-hook~ when the template is selected.
+
**** Template expansion
:PROPERTIES:
:DESCRIPTION: Filling in information about time and context.
:END:
-In the template itself, special "%-escapes"[fn:87] allow dynamic
-insertion of content. The templates are expanded in the order given
-here:
+In the template itself, special "%-escapes"[fn:: If you need one of
+these sequences literally, escape the =%= with a backslash.] allow
+dynamic insertion of content. The templates are expanded in the order
+given here:
- =%[FILE]= ::
@@ -7947,7 +8091,10 @@ here:
After completing the template, position point here.
#+vindex: org-store-link-props
-For specific link types, the following keywords are defined[fn:88]:
+For specific link types, the following keywords are defined[fn:: If
+you define your own link types (see [[*Adding Hyperlink Types]]), any
+property you store with ~org-store-link-props~ can be accessed in
+capture templates in a similar way.]:
#+vindex: org-link-from-user-regexp
| Link type | Available keywords |
@@ -7960,7 +8107,7 @@ For specific link types, the following keywords are defined[fn:88]:
| | =%:date= (message date header field) |
| | =%:date-timestamp= (date as active timestamp) |
| | =%:date-timestamp-inactive= (date as inactive timestamp) |
-| | =%:fromto= (either "to NAME" or "from NAME")[fn:89] |
+| | =%:fromto= (either "to NAME" or "from NAME")[fn:31] |
| gnus | =%:group=, for messages also all email fields |
| w3, w3m | =%:url= |
| info | =%:file=, =%:node= |
@@ -8019,7 +8166,9 @@ By default, Org attach uses ID properties when adding attachments to
outline nodes. This makes working with attachments fully automated.
There is no decision needed for folder-name or location. ID-based
directories are by default located in the =data/= directory, which
-lives in the same directory where your Org file lives[fn:90].
+lives in the same directory where your Org file lives[fn:: If you move
+entries or Org files from one directory to another, you may want to
+configure ~org-attach-id-dir~ to contain an absolute path.].
When attachments are made using ~org-attach~ a default tag =ATTACH= is
added to the node that gets the attachments.
@@ -8416,13 +8565,18 @@ the window configuration is restored when the agenda exits:
#+vindex: org-agenda-files
The information to be shown is normally collected from all /agenda
-files/, the files listed in the variable ~org-agenda-files~[fn:91].
-If a directory is part of this list, all files with the extension
-=.org= in this directory are part of the list.
+files/, the files listed in the variable ~org-agenda-files~[fn:: If
+the value of that variable is not a list, but a single file name, then
+the list of agenda files in maintained in that external file.]. If a
+directory is part of this list, all files with the extension =.org= in
+this directory are part of the list.
Thus, even if you only work with a single Org file, that file should
-be put into the list[fn:92]. You can customize ~org-agenda-files~,
-but the easiest way to maintain it is through the following commands
+be put into the list[fn:: When using the dispatcher, pressing
+{{{kbd(<)}}} before selecting a command actually limits the command to
+the current file, and ignores ~org-agenda-files~ until the next
+dispatcher command.]. You can customize ~org-agenda-files~, but the
+easiest way to maintain it is through the following commands
#+attr_texinfo: :sep and
- {{{kbd(C-c [)}}} (~org-agenda-file-to-front~) ::
@@ -8558,18 +8712,20 @@ commands:
- {{{kbd(<)}}} ::
#+kindex: < @r{(Agenda dispatcher)}
- Restrict an agenda command to the current buffer[fn:93]. If
- narrowing is in effect restrict to the narrowed part of the buffer.
- After pressing {{{kbd(<)}}}, you still need to press the character
- selecting the command.
+ Restrict an agenda command to the current buffer[fn:: For backward
+ compatibility, you can also press {{{kbd(1)}}} to restrict to the
+ current buffer.]. If narrowing is in effect restrict to the
+ narrowed part of the buffer. After pressing {{{kbd(<)}}}, you still
+ need to press the character selecting the command.
- {{{kbd(< <)}}} ::
#+kindex: < < @r{(Agenda dispatcher)}
If there is an active region, restrict the following agenda command
- to the region. Otherwise, restrict it to the current
- subtree[fn:94]. After pressing {{{kbd(< <)}}}, you still need to
- press the character selecting the command.
+ to the region. Otherwise, restrict it to the current subtree[fn::
+ For backward compatibility, you can also press {{{kbd(0)}}} to
+ restrict to the current region/subtree.]. After pressing {{{kbd(<
+ <)}}}, you still need to press the character selecting the command.
- {{{kbd(*)}}} ::
@@ -8618,7 +8774,7 @@ a paper agenda, showing all the tasks for the current week or day.
#+cindex: org-agenda, command
Compile an agenda for the current week from a list of Org files.
The agenda shows the entries for each day. With a numeric prefix
- argument[fn:95]---like {{{kbd(C-u 2 1 M-x org-agenda a)}}}---you may
+ argument[fn:32]---like {{{kbd(C-u 2 1 M-x org-agenda a)}}}---you may
set the number of days to be displayed.
#+vindex: org-agenda-span
@@ -8677,7 +8833,10 @@ move the entries into an Org file. Org mode evaluates diary-style
expression entries, and does it faster because there is no overhead
for first creating the diary display. Note that the expression
entries must start at the left margin, no whitespace is allowed before
-them, as seen in the following segment of an Org file:[fn:96]
+them, as seen in the following segment of an Org file:[fn:: The
+variable ~org-anniversary~ used in the example is just like
+~diary-anniversary~, but the argument order is always according to ISO
+and therefore independent of the value of ~calendar-date-style~.]
#+begin_example
,* Holidays
@@ -8789,7 +8948,7 @@ collected into a single place.
#+findex: org-todo-list
Show the global TODO list. This collects the TODO items from all
agenda files (see [[*Agenda Views]]) into a single buffer. By default,
- this lists items with a state the is not a DONE state. The buffer
+ this lists items with a state that is not a DONE state. The buffer
is in Agenda mode, so there are commands to examine and manipulate
the TODO entries directly from that buffer (see [[*Commands in the
Agenda Buffer]]).
@@ -9179,8 +9338,10 @@ Time ranges can be specified with two timestamps:
: <2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>
#+vindex: org-agenda-search-headline-for-time
-In the headline of the entry itself, a time(range)---like =12:45= or
-a =8:30-1pm=---may also appear as plain text[fn:97].
+In the headline of the entry itself, a time(range)---like =12:45= or a
+=8:30-1pm=---may also appear as plain text[fn:: You can, however,
+disable this by setting ~org-agenda-search-headline-for-time~ variable
+to a ~nil~ value.].
If the agenda integrates the Emacs diary (see [[*Weekly/daily agenda]]),
time specifications in diary entries are recognized as well.
@@ -9270,7 +9431,7 @@ filters and limits allow to flexibly narrow down the list of agenda
entries.
/Filters/ only change the visibility of items, are very fast and are
-mostly used interactively[fn:98]. You can switch quickly between
+mostly used interactively[fn:33]. You can switch quickly between
different filters without having to recreate the agenda. /Limits/ on
the other hand take effect before the agenda buffer is populated, so
they are mostly useful when defined as local variables within custom
@@ -9402,11 +9563,11 @@ the Internet, and outside of business hours, with something like this:
#+begin_src emacs-lisp
(defun my-auto-exclude-fn (tag)
(when (cond ((string= tag "net")
- (/= 0 (call-process "/sbin/ping" nil nil nil
- "-c1" "-q" "-t1" "mail.gnu.org")))
+ (/= 0 (call-process "/sbin/ping" nil nil nil
+ "-c1" "-q" "-t1" "mail.gnu.org")))
((member tag '("errand" "call"))
- (let ((hr (nth 2 (decode-time))))
- (or (< hr 8) (> hr 21)))))
+ (let ((hr (nth 2 (decode-time))))
+ (or (< hr 8) (> hr 21)))))
(concat "-" tag)))
(setq org-agenda-auto-exclude-function #'my-auto-exclude-fn)
@@ -9732,11 +9893,13 @@ the other commands, point needs to be in the desired line.
agenda always shows a table with the clocked times for the time span
and file scope covered by the current agenda view. The initial
setting for this mode in new agenda buffers can be set with the
- variable ~org-agenda-start-with-clockreport-mode~. By using
- a prefix argument when toggling this mode (i.e., {{{kbd(C-u R)}}}),
+ variable ~org-agenda-start-with-clockreport-mode~. By using a
+ prefix argument when toggling this mode (i.e., {{{kbd(C-u R)}}}),
the clock table does not show contributions from entries that are
- hidden by agenda filtering[fn:99]. See also the variable
- ~org-clock-report-include-clocking-task~.
+ hidden by agenda filtering[fn:: Only tags filtering is respected
+ here, effort filtering is ignored.]. See also the variables
+ ~org-clock-report-include-clocking-task~ and
+ ~org-agenda-clock-report-header~.
- {{{kbd(v c)}}} ::
@@ -10175,9 +10338,10 @@ the other commands, point needs to be in the desired line.
- {{{kbd(f)}}} ::
#+vindex: org-agenda-bulk-custom-functions
- Apply a function[fn:100] to marked entries. For example, the
- function below sets the =CATEGORY= property of the entries to
- =web=.
+ Apply a function[fn:: You can also create persistent custom
+ functions through ~org-agenda-bulk-custom-functions~.] to marked
+ entries. For example, the function below sets the =CATEGORY=
+ property of the entries to =web=.
#+begin_src emacs-lisp
(defun set-category ()
@@ -10215,9 +10379,10 @@ the other commands, point needs to be in the desired line.
#+cindex: diary entries, creating from agenda
Insert a new entry into the diary, using the date at point and (for
block entries) the date at the mark. This adds to the Emacs diary
- file[fn:101], in a way similar to the {{{kbd(i)}}} command in the
- calendar. The diary file pops up in another window, where you can
- add the entry.
+ file[fn:: This file is parsed for the agenda when
+ ~org-agenda-include-diary~ is set.], in a way similar to the
+ {{{kbd(i)}}} command in the calendar. The diary file pops up in
+ another window, where you can add the entry.
#+vindex: org-agenda-diary-file
If you configure ~org-agenda-diary-file~ to point to an Org file,
@@ -10341,13 +10506,14 @@ after the dispatcher command in order to access the command. Usually
this is just a single character, but if you have many similar
commands, you can also define two-letter combinations where the first
character is the same in several combinations and serves as a prefix
-key[fn:102]. The second parameter is the search type, followed by the
-string or regular expression to be used for the matching. The example
-above will therefore define:
+key[fn:: You can provide a description for a prefix key by inserting a
+cons cell with the prefix and the description.]. The second parameter
+is the search type, followed by the string or regular expression to be
+used for the matching. The example above will therefore define:
- {{{kbd(x)}}} ::
- as a global search for agenda entries planned[fn:103] this week/day.
+ as a global search for agenda entries planned[fn:34] this week/day.
- {{{kbd(y)}}} ::
@@ -10527,11 +10693,14 @@ See the docstring of the variable for more information.
:END:
#+cindex: agenda views, exporting
-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[fn:104], Postscript,
-PDF[fn:105], and iCalendar files. If you want to do this only
-occasionally, use the following command:
+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[fn:: For HTML you need
+to install Hrvoje Nikšić's =htmlize.el= as an Emacs package from
+[[https://elpa.nongnu.org/][NonGNU ELPA]] or from
+[[https://github.com/hniksic/emacs-htmlize][Hrvoje Nikšić's repository]].],
+Postscript, PDF[fn:35], and iCalendar files. If you
+want to do this only occasionally, use the following command:
- {{{kbd(C-x C-w)}}} (~org-agenda-write~) ::
#+kindex: C-x C-w
@@ -10544,11 +10713,14 @@ occasionally, use the following command:
If you need to export certain agenda views frequently, you can
associate any custom agenda command with a list of output file
-names[fn:106]. 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.
+names[fn:: 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.]. 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.
#+begin_src emacs-lisp
(setq org-agenda-custom-commands
@@ -10632,7 +10804,8 @@ emacs -eval (org-batch-store-agenda-views) -kill
#+end_src
#+texinfo: @noindent
-or, if you need to modify some parameters[fn:107]
+or, if you need to modify some parameters[fn:: Quoting depends on the
+system you use, please check the FAQ for examples.]
#+begin_src shell
emacs -eval '(org-batch-store-agenda-views \
@@ -10902,7 +11075,9 @@ becomes =&nbsp;= in HTML and =~= in LaTeX.
#+cindex: special symbols, in-buffer display
If you would like to see entities displayed as UTF-8 characters, use
-the following command[fn:108]:
+the following command[fn:: You can turn this on by default by setting
+the variable ~org-pretty-entities~, or on a per-file base with the
+=STARTUP= option =entitiespretty=.]:
- {{{kbd(C-c C-x \)}}} (~org-toggle-pretty-entities~) ::
#+kindex: C-c C-x \
@@ -10915,8 +11090,9 @@ the following command[fn:108]:
#+cindex: shy hyphen, special symbol
#+cindex: dash, special symbol
#+cindex: ellipsis, special symbol
-In addition to regular entities defined above, Org exports in
-a special way[fn:109] the following commonly used character
+In addition to regular entities defined above, Org exports in a
+special way[fn:: This behavior can be disabled with =-= export setting
+(see [[*Export Settings]]).] the following commonly used character
combinations: =\-= is treated as a shy hyphen, =--= and =---= are
converted into dashes, and =...= becomes a compact set of dots.
@@ -10929,7 +11105,7 @@ converted into dashes, and =...= becomes a compact set of dots.
Plain ASCII is normally sufficient for almost all note taking.
Exceptions include scientific notes, which often require mathematical
-symbols and the occasional formula. LaTeX[fn:110] is widely used to
+symbols and the occasional formula. LaTeX[fn:36] is widely used to
typeset scientific documents. Org mode supports embedding LaTeX code
into its files, because many academics are used to writing and reading
LaTeX source code, and because it can be readily processed to produce
@@ -10951,7 +11127,7 @@ into images (see [[*Previewing LaTeX fragments]]).
LaTeX fragments do not need any special marking at all. The following
snippets are identified as LaTeX source code:
-- Environments of any kind[fn:111]. The only requirement is that the
+- Environments of any kind[fn:37]. The only requirement is that the
=\begin= statement appears on a new line, preceded by only
whitespace.
@@ -10995,7 +11171,7 @@ lines:
#+vindex: org-preview-latex-default-process
If you have a working LaTeX installation and =dvipng=, =dvisvgm= or
-=convert= installed[fn:112], LaTeX fragments can be processed to
+=convert= installed[fn:38], LaTeX fragments can be processed to
produce images of the typeset expressions to be used for inclusion
while exporting to HTML (see [[*LaTeX fragments]]), or for inline
previewing within Org mode.
@@ -11065,10 +11241,12 @@ more details see the documentation of CDLaTeX mode):
- {{{kbd(TAB)}}} ::
#+kindex: TAB
- The {{{kbd(TAB)}}} key expands the template if point is inside
- a LaTeX fragment[fn:113]. For example, {{{kbd(TAB)}}} expands =fr=
- to =\frac{}{}= and position point correctly inside the first brace.
- Another {{{kbd(TAB)}}} gets you into the second brace.
+ The {{{kbd(TAB)}}} key expands the template if point is inside a
+ LaTeX fragment[fn:: Org mode has a method to test if point is inside
+ such a fragment, see the documentation of the function
+ ~org-inside-LaTeX-fragment-p~.]. For example, {{{kbd(TAB)}}}
+ expands =fr= to =\frac{}{}= and position point correctly inside the
+ first brace. Another {{{kbd(TAB)}}} gets you into the second brace.
Even outside fragments, {{{kbd(TAB)}}} expands environment
abbreviations at the beginning of a line. For example, if you write
@@ -11099,8 +11277,8 @@ more details see the documentation of CDLaTeX mode):
#+kindex: '
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 single-quote, a help window pops up.
+ LaTeX symbol before point with an accent or a font. If you wait
+ more than 1.5 seconds after the single-quote, a help window pops up.
Character modification works only inside LaTeX fragments; outside
the quote is normal.
@@ -11146,12 +11324,12 @@ Here is an example
#+end_example
#+cindex: formatting source code, markup rules
-#+vindex: org-latex-listings
+#+vindex: org-latex-src-block-backend
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[fn:114]. This
+for the example to look like the fontified Emacs buffer[fn:39]. This
is done with the code block, where you also need to specify the name
-of the major mode that should be used to fontify the example[fn:115],
+of the major mode that should be used to fontify the example[fn:40],
see [[*Structure Templates]] for shortcuts to easily insert code blocks.
#+cindex: @samp{BEGIN_SRC}
@@ -11192,9 +11370,12 @@ In HTML, hovering the mouse over such a link remote-highlights the
corresponding code line, which is kind of cool.
You can also add a =-r= switch which /removes/ the labels from the
-source code[fn:116]. With the =-n= switch, links to these references
-are labeled by the line numbers from the code listing. Otherwise
-links use the labels with no parentheses. Here is an example:
+source code[fn:: Adding =-k= to =-n -r= /keeps/ 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.]. With the =-n=
+switch, links to these references are labeled by the line numbers from
+the code listing. Otherwise links use the labels with no parentheses.
+Here is an example:
#+begin_example -l "(dumb-reference:%s)"
,#+BEGIN_SRC emacs-lisp -n -r
@@ -11236,10 +11417,11 @@ a shortcut is provided (see [[*Structure Templates]]).
works by switching to a temporary buffer with the source code. You
need to exit by pressing {{{kbd(C-c ')}}} again. The edited version
then replaces the old version in the Org buffer. Fixed-width
- regions---where each line starts with a colon followed by
- a space---are edited using Artist mode[fn:117] to allow creating
- ASCII drawings easily. Using this command in an empty line creates
- a new fixed-width region.
+ regions---where each line starts with a colon followed by a
+ space---are edited using Artist mode[fn:: You may select a different
+ mode with the variable ~org-edit-fixed-width-region-mode~.] to allow
+ creating ASCII drawings easily. Using this command in an empty line
+ creates a new fixed-width region.
#+cindex: storing link, in a source code buffer
Calling ~org-store-link~ (see [[*Handling Links]]) while editing a source
@@ -11256,8 +11438,10 @@ the end of the current line. Then the label is stored as a link
#+cindex: inlining images
#+cindex: images, markup rules
-An image is a link to an image file[fn:118] that does not have
-a description part, for example
+An image is a link to an image file[fn:: What Emacs considers to be an
+image depends on ~image-file-name-extensions~ and
+~image-file-name-regexps~.] that does not have a description part, for
+example
: ./img/cat.jpg
@@ -11280,11 +11464,40 @@ command:
#+kindex: C-c C-x C-v
#+findex: org-toggle-inline-images
#+vindex: org-startup-with-inline-images
- Toggle the inline display of linked images. When called with
- a prefix argument, also display images that do have a link
+ Toggle the inline display of linked images. When called with a
+ prefix argument, also display images that do have a link
description. You can ask for inline images to be displayed at
startup by configuring the variable
- ~org-startup-with-inline-images~[fn:119].
+ ~org-startup-with-inline-images~[fn:: The variable
+ ~org-startup-with-inline-images~ can be set within a buffer with the
+ =STARTUP= options =inlineimages= and =noinlineimages=.].
+
+
+ #+vindex: org-image-actual-width
+ #+cindex: @samp{ORG-IMAGE-ACTUAL-WIDTH}, property
+ By default, Org mode displays inline images according to their
+ actual width. You can customize the displayed image width using
+ ~org-image-actual-width~ variable (globally) or
+ =ORG-IMAGE-ACTUAL-WIDTH= property (subtree-level)[fn:: The width can
+ be customized in Emacs >= 24.1, built with imagemagick support.].
+ Their value can be the following:
+ - (default) Non-nil, use the actual width of images when inlining them.
+ - When set to a number, use imagemagick (when available) to set the
+ image's width to this value.
+ - When set to a number in a list, try to get the width from any
+ =#+ATTR.*= keyword if it matches a width specification like:
+ #+begin_example
+ ,#+ATTR_HTML: :width 300px
+ #+end_example
+ and fall back on that number if none is found.
+ - When set to nil, try to get the width from an =#+ATTR.*= keyword
+ and fall back on the original width if none is found.
+
+
+#+vindex: org-cycle-inline-images-display
+Inline images can also be displayed when cycling the folding state.
+When custom option ~org-cycle-inline-images-display~ is set, the
+visible inline images under subtree will be displayed automatically.
** Captions
:PROPERTIES:
@@ -11333,9 +11546,9 @@ footnote reference is simply the marker in square brackets, inside
text. Markers always start with =fn:=. For example:
#+begin_example
-The Org homepage[fn:1] now looks a lot better than it used to.
+The Org website[fn:1] now looks a lot better than it used to.
...
-[fn:1] The link is: https://orgmode.org
+[fn:55] The link is: https://orgmode.org
#+end_example
Org mode extends the number-based syntax to /named/ footnotes and
@@ -11376,9 +11589,11 @@ The following command handles footnotes:
#+vindex: org-footnote-define-inline
#+vindex: org-footnote-section
Otherwise, create a new footnote. Depending on the variable
- ~org-footnote-define-inline~[fn:120], the definition is placed right
- into the text as part of the reference, or separately into the
- location determined by the variable ~org-footnote-section~.
+ ~org-footnote-define-inline~[fn:: The corresponding in-buffer
+ setting is: =#+STARTUP: fninline= or =#+STARTUP: nofninline=.], the
+ definition is placed right into the text as part of the reference,
+ or separately into the location determined by the variable
+ ~org-footnote-section~.
When this command is called with a prefix argument, a menu of
additional options is offered:
@@ -11391,9 +11606,10 @@ The following command handles footnotes:
| {{{kbd(d)}}} | Delete the footnote at point, including definition and references. |
#+vindex: org-footnote-auto-adjust
- Depending on the variable ~org-footnote-auto-adjust~[fn:121],
- renumbering and sorting footnotes can be automatic after each
- insertion or deletion.
+ Depending on the variable ~org-footnote-auto-adjust~[fn:: The
+ corresponding in-buffer options are =#+STARTUP: fnadjust= and
+ =#+STARTUP: nofnadjust=.], renumbering and sorting footnotes can be
+ automatic after each insertion or deletion.
- {{{kbd(C-c C-c)}}} ::
@@ -11479,7 +11695,7 @@ the hierarchical menu, press {{{kbd(?)}}}.
Invokes the export dispatcher interface. The options show default
settings. The {{{kbd(C-u)}}} prefix argument preserves options from
- the previous export, including any sub-tree selections.
+ the previous export, including any subtree selections.
Org exports the entire buffer by default. If the Org buffer has an
active region, then Org exports just that region.
@@ -11518,15 +11734,15 @@ further alter what is exported, and how.
- {{{kbd(C-s)}}} ::
#+kindex: C-c C-e C-s
- Toggle sub-tree export. When turned on, Org exports only the
- sub-tree starting from point position at the time the export
- dispatcher was invoked. Org uses the top heading of this sub-tree
+ Toggle subtree export. When turned on, Org exports only the
+ subtree starting from point position at the time the export
+ dispatcher was invoked. Org uses the top heading of this subtree
as the document's title. If point is not on a heading, Org uses the
nearest enclosing header. If point is in the document preamble, Org
signals an error and aborts export.
#+vindex: org-export-initial-scope
- To make sub-tree export the default, customize the variable
+ To make subtree export the default, customize the variable
~org-export-initial-scope~.
- {{{kbd(C-v)}}} ::
@@ -11559,7 +11775,7 @@ can be inserted from the export dispatcher (see [[*The Export
Dispatcher]]) using the =Insert template= command by pressing
{{{kbd(#)}}}. To insert keywords individually, a good way to make
sure the keyword is correct is to type =#+= and then to use
-{{{kbd(M-TAB)}}}[fn:16] for completion.
+{{{kbd(M-TAB)}}}[fn:6] for completion.
The export keywords available for every back-end, and their equivalent
global variables, include:
@@ -11581,7 +11797,9 @@ global variables, include:
#+cindex: @samp{DATE}, keyword
#+vindex: org-export-date-timestamp-format
- A date or a time-stamp[fn:122].
+ A date or a time-stamp[fn:: The variable
+ ~org-export-date-timestamp-format~ defines how this timestamp are
+ exported.].
- =EMAIL= ::
@@ -11596,7 +11814,7 @@ global variables, include:
Language to use for translating certain strings
(~org-export-default-language~). With =#+LANGUAGE: fr=, for
example, Org translates =Table of contents= to the French =Table des
- matières=[fn:123].
+ matières=[fn:41].
- =SELECT_TAGS= ::
@@ -11604,7 +11822,7 @@ global variables, include:
#+vindex: org-export-select-tags
The default value is =("export")=. When a tree is tagged with
=export= (~org-export-select-tags~), Org selects that tree and its
- sub-trees for export. Org excludes trees with =noexport= tags, see
+ subtrees for export. Org excludes trees with =noexport= tags, see
below. When selectively exporting files with =export= tags set, Org
does not export any text that appears before the first headline.
@@ -11614,9 +11832,9 @@ global variables, include:
#+vindex: org-export-exclude-tags
The default value is =("noexport")=. When a tree is tagged with
=noexport= (~org-export-exclude-tags~), Org excludes that tree and
- its sub-trees from export. Entries tagged with =noexport= are
+ its subtrees from export. Entries tagged with =noexport= are
unconditionally excluded from the export, even if they have an
- =export= tag. Even if a sub-tree is not exported, Org executes any
+ =export= tag. Even if a subtree is not exported, Org executes any
code blocks contained there.
- =TITLE= ::
@@ -11835,10 +12053,10 @@ following arguments.
#+vindex: org-export-with-tables
Toggle inclusion of tables (~org-export-with-tables~).
-When exporting sub-trees, special node properties can override the
+When exporting subtrees, special node properties can override the
above keywords. These properties have an =EXPORT_= prefix. For
example, =DATE= becomes, =EXPORT_DATE= when used for a specific
-sub-tree. Except for =SETUPFILE=, all other keywords listed above
+subtree. Except for =SETUPFILE=, all other keywords listed above
have an =EXPORT_= equivalent.
#+cindex: @samp{BIND}, keyword
@@ -11873,7 +12091,7 @@ keyword:
#+cindex: excluding entries from table of contents
#+cindex: table of contents, exclude entries
Org includes both numbered and unnumbered headlines in the table of
-contents[fn:124]. If you need to exclude an unnumbered headline,
+contents[fn:42]. If you need to exclude an unnumbered headline,
along with all its children, set the =UNNUMBERED= property to =notoc=
value.
@@ -11992,7 +12210,7 @@ be omitted to use the obvious defaults.
| =#+INCLUDE: "~/.emacs" :lines "10-"= | Include lines from 10 to EOF |
Inclusions may specify a file-link to extract an object matched by
-~org-link-search~[fn:125] (see [[*Search Options in File Links]]). The
+~org-link-search~[fn:43] (see [[*Search Options in File Links]]). The
ranges for =:lines= keyword are relative to the requested element.
Therefore,
@@ -12032,7 +12250,7 @@ following syntax:
: #+MACRO: name replacement text; $1, $2 are arguments
#+texinfo: @noindent
-which can be referenced using ={{{name(arg1, arg2)}}}=[fn:126]. For
+which can be referenced using ={{{name(arg1, arg2)}}}=[fn:44]. For
example
#+begin_example
@@ -12151,8 +12369,9 @@ are not exported.
Finally, a =COMMENT= keyword at the beginning of an entry, but after
any other keyword or priority cookie, comments out the entire subtree.
In this case, the subtree is not exported and no code block within it
-is executed either[fn:127]. The command below helps changing the
-comment status of a headline.
+is executed either[fn:: For a less drastic behavior, consider using a
+select tag (see [[*Export Settings]]) instead.]. The command below
+helps changing the comment status of a headline.
- {{{kbd(C-c ;)}}} (~org-toggle-comment~) ::
#+kindex: C-c ;
@@ -12423,7 +12642,7 @@ should in principle be exportable as a Beamer presentation.
- Org exports a Beamer frame's objects as block environments. Org can
enforce wrapping in special block types when =BEAMER_ENV= property
- is set[fn:128]. For valid values see
+ is set[fn:45]. For valid values see
~org-beamer-environments-default~. To add more values, see
~org-beamer-environments-extra~.
#+vindex: org-beamer-environments-default
@@ -12492,7 +12711,7 @@ Insert Beamer-specific code using the following constructs:
,#+BEGIN_EXPORT beamer
Only Beamer export back-end exports this.
-,#+END_BEAMER
+,#+END_EXPORT
Text @@beamer:some code@@ within a paragraph.
#+end_example
@@ -12811,17 +13030,17 @@ exporter insert the preamble. See the variable
~org-html-preamble-format~ for the format string.
Set ~org-html-preamble~ to a string to override the default format
-string. If the string is a function, the HTML exporter expects the
-function to return a string upon execution. The HTML exporter inserts
-this string in the preamble. The HTML exporter does not insert
-a preamble if ~org-html-preamble~ is set ~nil~.
-
-The default value for ~org-html-postamble~ is ~auto~, which makes the
-HTML exporter build a postamble from looking up author's name, email
-address, creator's name, and date. Set ~org-html-postamble~ to ~t~ to
-insert the postamble in the format specified in the
-~org-html-postamble-format~ variable. The HTML exporter does not
-insert a postamble if ~org-html-postamble~ is set to ~nil~.
+string. If set to a function, the HTML exporter expects the function
+to return a string upon execution. The HTML exporter inserts this
+string in the preamble. The HTML exporter does not insert a preamble
+if ~org-html-preamble~ is set ~nil~.
+
+The above also applies to ~org-html-postamble~ and
+~org-html-postamble-format~. In addition, ~org-html-postamble~ can be
+set to ~auto~ (its default value), which makes the HTML exporter build
+a postamble from looking up author's name, email address, creator's
+name, and date.
+
*** Quoting HTML tags
:PROPERTIES:
@@ -12894,7 +13113,7 @@ changing the link's title and style:
#+cindex: @samp{ATTR_HTML}, keyword
#+begin_example
-,#+ATTR_HTML: :title The Org mode homepage :style color:red;
+,#+ATTR_HTML: :title The Org mode website :style color:red;
[[https://orgmode.org]]
#+end_example
@@ -13010,20 +13229,22 @@ as-is.
#+vindex: org-html-mathjax-options~
LaTeX math snippets (see [[*LaTeX fragments]]) can be displayed in two
-different ways on HTML pages. The default is to use the [[https://www.mathjax.org][MathJax]],
-which should work out of the box with Org[fn:129][fn:130]. Some MathJax
-display options can be configured via ~org-html-mathjax-options~, or
-in the buffer. For example, with the following settings,
+different ways on HTML pages. The default is to use the
+[[https://www.mathjax.org][MathJax]], which should work out of the box
+with Org[fn:: By default, Org loads MathJax from
+[[https://www.jsdelivr.com/][jsDelivr]], as recommended in
+[[https://docs.mathjax.org/en/latest/web/start.html][Getting Started
+with MathJax Components]].][fn:46]. Some MathJax display options can
+be configured via ~org-html-mathjax-options~, or in the buffer. For
+example, with the following settings,
#+begin_example
-,#+HTML_MATHJAX: align: left indent: 5em tagside: left font: Neo-Euler
-,#+HTML_MATHJAX: cancel.js noErrors.js
+,#+HTML_MATHJAX: align: left indent: 5em tagside: left
#+end_example
#+texinfo: @noindent
equation labels are displayed on the left margin and equations are
-five em from the left margin. In addition, it loads the two MathJax
-extensions =cancel.js= and =noErrors.js=[fn:131].
+five em from the left margin.
#+vindex: org-html-mathjax-template
See the docstring of ~org-html-mathjax-options~ for all supported
@@ -13086,10 +13307,12 @@ line.
#+vindex: org-export-html-todo-kwd-class-prefix
#+vindex: org-export-html-tag-class-prefix
You can modify the CSS style definitions for the exported file. The
-HTML exporter assigns the following special CSS classes[fn:132] 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.
+HTML exporter assigns the following special CSS classes[fn:: If the
+classes on TODO keywords and tags lead to conflicts, use the variables
+~org-html-todo-kwd-class-prefix~ and ~org-html-tag-class-prefix~ to
+make them unique.] 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 |
@@ -13154,7 +13377,7 @@ external file.
#+cindex: @samp{HTML_CONTAINER_CLASS}, property
#+cindex: @samp{HTML_HEADLINE_CLASS}, property
-In order to add styles to a sub-tree, use the =HTML_CONTAINER_CLASS=
+In order to add styles to a subtree, use the =HTML_CONTAINER_CLASS=
property to assign a class to the tree. In order to specify CSS
styles for a particular headline, you can use the ID specified in
a =CUSTOM_ID= property. You can also assign a specific class to
@@ -13323,7 +13546,7 @@ LaTeX export back-end finds the compiler version to use from
Org file. See the docstring for the
~org-latex-default-packages-alist~ for loading packages with certain
compilers. Also see ~org-latex-bibtex-compiler~ to set the
-bibliography compiler[fn:133].
+bibliography compiler[fn:47].
*** LaTeX specific export settings
:PROPERTIES:
@@ -13349,15 +13572,23 @@ general options (see [[*Export Settings]]).
- =LANGUAGE= ::
#+cindex: @samp{LANGUAGE}, keyword
#+vindex: org-latex-packages-alist
+ #+vindex: org-latex-language-alist
+
+ Language code of the primary document language.
+
+ The list of language codes supported by Org is stored in the
+ variable ~org-latex-language-alist~.
+
In order to be effective, the =babel= or =polyglossia=
packages---according to the LaTeX compiler used---must be loaded
with the appropriate language as argument. This can be accomplished
by modifying the ~org-latex-packages-alist~ variable, e.g., with the
- following snippet:
+ following snippet (note that =polyglossia= does not work with
+ pdfLaTeX):
#+begin_src emacs-lisp
(add-to-list 'org-latex-packages-alist
- '("AUTO" "babel" t ("pdflatex")))
+ '("AUTO" "babel" t ("pdflatex" "xelatex" "lualatex")))
(add-to-list 'org-latex-packages-alist
'("AUTO" "polyglossia" t ("xelatex" "lualatex")))
#+end_src
@@ -13447,7 +13678,7 @@ By default, the LaTeX export back-end uses the /article/ class.
To change the default class globally, edit ~org-latex-default-class~.
To change the default class locally in an Org file, add option lines
=#+LATEX_CLASS: myclass=. To change the default class for just a part
-of the Org file, set a sub-tree property, =EXPORT_LATEX_CLASS=. The
+of the Org file, set a subtree property, =EXPORT_LATEX_CLASS=. The
class name entered here must be valid member of ~org-latex-classes~.
This variable defines a header template for each class into which the
exporter splices the values of ~org-latex-default-packages-alist~ and
@@ -13487,6 +13718,54 @@ A sample Org file with the above headers:
some more text
#+end_example
+#+cindex: @samp{LANGUAGE}, keyword
+#+vindex: org-export-default-language
+LaTeX packages =babel= or =polyglossia= can also be loaded in a
+document. The "AUTO" string will be replaced in both cases by the
+appropiate value for the =LANGUAGE= keyword, if present in the
+document, or by the value of ~org-export-default-language~. Let's see
+some examples in one or another case.
+
+=Babel= accepts the classic syntax and (in addition) the new syntax
+with the =\babelprovide= command to load the languages using the new
+=INI= files procedure. Keep in mind that there are a number of
+languages that are only served in babel using =INI= files, so they
+cannot be declared using the classic syntax, but only using the
+=\babelprovide= command (see
+https://mirrors.ctan.org/macros/latex/required/babel/base/babel.pdf).
+Valid usage examples could be:
+
+#+begin_example
+,#+LATEX_HEADER: \usepackage[french,italian,AUTO]{babel}
+#+end_example
+
+where "AUTO" is the main language. But it can also be loaded using
+the =\babelprovide= command:
+
+#+begin_example
+,#+LATEX_HEADER: \usepackage[french,italian]{babel}
+,#+LATEX_HEADER: \babelprovide[import, main]{AUTO}
+#+end_example
+
+=Polyglossia=, for this procedure to be effective, must be loaded
+using the same =babel= classic syntax (but note that /this is not/
+the actual polyglossia syntax). For example, suppose a document
+declares Polytonic Greek as the primary language, and French as the
+secondary language. In this case, it would be expressed as:
+
+#+begin_example
+,#+LANGUAGE: el-polyton
+,#+LATEX_HEADER: \usepackage[french,AUTO]{polyglossia}
+#+end_example
+
+This would produce in LaTeX (with the actual =polyglossia= syntax):
+
+#+begin_example
+\usepackage{polyglossia}
+\setmainlanguage[variant=polytonic]{greek}
+\setotherlanguage{french}
+#+end_example
+
*** Quoting LaTeX code
:PROPERTIES:
:DESCRIPTION: Incorporating literal @LaTeX{} code.
@@ -13533,10 +13812,12 @@ include:
#+vindex: org-latex-default-table-mode
The LaTeX export back-end wraps the table differently depending on
the mode for accurate rendering of math symbols. Mode is either
- =table=, =math=, =inline-math= or =verbatim=.
+ =table=, =math=, =inline-math=, =verbatim= or =tabbing=.
For =math= or =inline-math= mode, LaTeX export back-end wraps the
table in a math environment, but every cell in it is exported as-is.
+ For =tabbing= the LaTeX tabbing environment is used and the correct
+ tabbing delimiters =\>= are used.
The LaTeX export back-end determines the default mode from
~org-latex-default-table-mode~. The LaTeX export back-end merges
contiguous tables in the same mode into a single environment.
@@ -13565,7 +13846,12 @@ include:
The table environments by default are not floats in LaTeX. To make
them floating objects use =:float= with one of the following
- options: =sideways=, =multicolumn=, =t=, and =nil=.
+ options: =t= (for a default =table= environment), =sideways= (for a
+ =sidewaystable= environment), =multicolumn= (to span the table
+ across multiple columns of a page in a =table*= environment) and
+ =nil=. In addition to these three values, =:float= can pass through
+ any arbitrary value, for example a user-defined float type with the
+ =float= LaTeX package.
LaTeX floats can also have additional layout =:placement=
attributes. These are the usual =[h t b p ! H]= permissions
@@ -13577,6 +13863,14 @@ include:
The LaTeX export back-end uses these attributes for regular tables
to set their alignments, fonts, and widths.
+- =:options= ::
+
+ The =:options= attribute allows adding an optional argument with
+ a list of various table options (between brackets in LaTeX export),
+ since certain tabular environments, such as longtblr of the
+ tabularray LaTeX package, provides this structure. For example:
+ =:options remark{Note}={note},remark{Source}={source}=.
+
- =:spread= ::
When =:spread= is non-~nil~, the LaTeX export back-end spreads or
@@ -13671,8 +13965,7 @@ attribute to one of the following:
- =t= ::
- For a standard =figure= environment; used by default whenever an
- image has a caption.
+ For a default =figure= environment.
- =multicolumn= ::
@@ -13693,6 +13986,12 @@ attribute to one of the following:
To avoid a =:float= even if using a caption.
+- Any arbitrary value ::
+
+ For example, a user-defined float type with the =float= LaTeX
+ package.
+
+
Use the =placement= attribute to modify a floating environment's
placement.
@@ -13780,22 +14079,29 @@ objects through the attributes =:float= and =:options=. For =:float=:
#+vindex: org-latex-listings-options
#+vindex: org-latex-minted-options
+#+vindex: org-latex-engraved-options
The LaTeX export back-end passes string values in =:options= to LaTeX
packages for customization of that specific source block. In the
-example below, the =:options= are set for Minted. Minted is a source
-code highlighting LaTeX package with many configurable options[fn:134].
+example below, the =:options= are set for Engraved or Minted. Minted
+is a source code highlighting LaTeX package with many configurable
+options[fn:: Minted uses an external Python package for code
+highlighting, which requires the flag =-shell-escape= to be added to
+~org-latex-pdf-process~.]. Both Minted and Engraved are built on
+[[https://www.ctan.org/pkg/fvextra][fvextra]], and so support many of
+the same options.
#+begin_example
-,#+ATTR_LATEX: :options commentstyle=\bfseries
+,#+ATTR_LATEX: :options mathescape
,#+BEGIN_SRC emacs-lisp
- (defun Fib (n)
+ (defun Fib (n) ; $n_i = n_{i-2} + n_{i-1}$
(if (< n 2) n (+ (Fib (- n 1)) (Fib (- n 2)))))
,#+END_SRC
#+end_example
-To apply similar configuration options for all source blocks in
-a file, use the ~org-latex-listings-options~ and
-~org-latex-minted-options~ variables.
+To apply similar configuration options for all source blocks in a
+file, use the ~org-latex-listings-options~,
+~org-latex-engraved-options~, and ~org-latex-minted-options~
+variables.
*** Example blocks in LaTeX export
:PROPERTIES:
@@ -14034,8 +14340,10 @@ a limit to a level before the absolute limit (see [[*Export Settings]]).
The ODT export back-end handles creating of OpenDocument Text (ODT)
format. Documents created by this exporter use the
-{{{cite(OpenDocument-v1.2 specification)}}}[fn:135] and are compatible
-with LibreOffice 3.4.
+{{{cite(OpenDocument-v1.2 specification)}}}[fn:: See
+[[https://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html][Open
+Document Format for Office Applications (OpenDocument) Version 1.2]].]
+and are compatible with LibreOffice 3.4.
*** Pre-requisites for ODT export
:PROPERTIES:
@@ -14070,7 +14378,7 @@ executable. Without it, export cannot finish.
If the selected region is a single tree, the ODT export back-end
makes the tree head the document title. Incidentally, {{{kbd(C-c
- @)}}} selects the current sub-tree. If the tree head entry has, or
+ @)}}} selects the current subtree. If the tree head entry has, or
inherits, an =EXPORT_FILE_NAME= property, the ODT export back-end
uses that for file name.
@@ -14220,7 +14528,7 @@ The example here shows creating a style using LibreOffice.
The ODT export back-end relies on many templates and style names.
Using third-party styles and templates can lead to mismatches.
-Templates derived from built in ODT templates and styles seem to have
+Templates derived from built-in ODT templates and styles seem to have
fewer problems.
*** Links in ODT export
@@ -14435,8 +14743,10 @@ document in one of the following ways:
variables ~org-latex-to-mathml-convert-command~ and
~org-latex-to-mathml-jar-file~.
- If you prefer to use MathToWeb[fn:136] as your converter, you can
- configure the above variables as shown below.
+ If you prefer to use MathToWeb[fn:: See
+ [[http://www.mathtoweb.com/cgi-bin/mathtoweb_home.pl][MathToWeb]].]
+ as your converter, you can configure the above variables as shown
+ below.
#+begin_src emacs-lisp
(setq org-latex-to-mathml-convert-command
@@ -14446,7 +14756,8 @@ document in one of the following ways:
#+end_src
#+texinfo: @noindent
- or, to use LaTeX​ML[fn:137] instead,
+ or, to use LaTeX​ML[fn:: See [[https://dlmf.nist.gov/LaTeXML/]].]
+ instead,
#+begin_src emacs-lisp
(setq org-latex-to-mathml-convert-command
@@ -14765,7 +15076,9 @@ with the =#+ATTR_ODT= line. For a discussion on default formatting of
tables, see [[*Tables in ODT export]].
This feature closely mimics the way table templates are defined in the
-OpenDocument-v1.2 specification[fn:138].
+OpenDocument-v1.2 specification[fn::
+[[https://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html][OpenDocument-v1.2
+Specification]]].
#+vindex: org-odt-table-styles
For quick preview of this feature, install the settings below and export the
@@ -14799,7 +15112,8 @@ templates, define new styles there.
To use this feature proceed as follows:
-1. Create a table template[fn:139].
+1. Create a table template[fn:: See the =<table:table-template>=
+ element of the OpenDocument-v1.2 specification.].
A table template is set of =table-cell= and =paragraph= styles for
each of the following table cell categories:
@@ -14838,7 +15152,12 @@ To use this feature proceed as follows:
=</office:automatic-styles>= element of the content template file
(see [[x-orgodtcontenttemplate-xml][Factory styles]]).
-2. Define a table style[fn:140].
+2. Define a table style[fn:: See the attributes =table:template-name=,
+ =table:use-first-row-styles=, =table:use-last-row-styles=,
+ =table:use-first-column-styles=, =table:use-last-column-styles=,
+ =table:use-banding-rows-styles=, and
+ =table:use-banding-column-styles= of the =<table:table>= element in
+ the OpenDocument-v1.2 specification.].
#+vindex: org-odt-table-styles
To define a table style, create an entry for the style in the
@@ -15221,6 +15540,23 @@ This paragraph is preceded by...
:DESCRIPTION: List attributes.
:END:
+#+cindex: lettered lists, in Texinfo export
+#+cindex: enum, Texinfo attribute
+The Texinfo export back-end converts unordered and ordered lists in
+the Org file using the default command =@itemize=.
+
+Ordered lists are numbered when exported to Texinfo format. Such
+numbering obeys any counter (see [[*Plain Lists]]) in the first item of
+the list. The =:enum= attribute also let you start the list at a
+specific number, or switch to a lettered list, as illustrated here:
+
+#+begin_example
+#+ATTR_TEXINFO: :enum A
+1. Alpha
+2. Bravo
+3. Charlie
+#+end_example
+
#+cindex: @samp{ATTR_TEXINFO}, keyword
#+cindex: two-column tables, in Texinfo export
#+cindex: table-type, Texinfo attribute
@@ -15262,20 +15598,89 @@ This is the common text for variables foo and bar.
@end table
#+end_example
-#+cindex: lettered lists, in Texinfo export
-#+cindex: enum, Texinfo attribute
-Ordered lists are numbered when exported to Texinfo format. Such
-numbering obeys any counter (see [[*Plain Lists]]) in the first item of
-the list. The =:enum= attribute also let you start the list at
-a specific number, or switch to a lettered list, as illustrated here
+The =:compact= attribute is an alternative to the =:sep= attribute,
+which allows writing each entry on its own line. If this attribute is
+non-nil and an item in a description list has no body but is followed
+by another item, then the second item is transcoded to =@itemx=. This
+example is transcoded to the same output as above.
#+begin_example
-#+ATTR_TEXINFO: :enum A
-1. Alpha
-2. Bravo
-3. Charlie
+,#+ATTR_TEXINFO: :table-type vtable :indic asis :compact t
+- foo ::
+- bar ::
+ This is the common text for variables foo and bar.
+#+end_example
+
+Support for this compact syntax can also be enabled for all lists in
+a file using the =compact-itemx= export option, or globally using the
+variable ~org-texinfo-compact-itemx~.
+
+The Texinfo export back-end also supports two approaches to writing
+Texinfo definition commands (see [[info:texinfo::Definition Commands]]).
+One of them uses description lists and is described below, the other
+relies on special blocks (see [[*Special blocks in Texinfo export]]).
+
+Items in a description list in a Org file that begin with =Function:=
+or certain other prefixes are converted using Texinfo definition
+commands. This works even if other items in the same list do not have
+such a prefix; if necessary a single description list is converted
+using multiple tables (such as =@vtable=) and definition commands
+(such as =@defun=).
+
+#+begin_example
+- Function: org-texinfo-drawer drawer contents info ::
+ Transcode a DRAWER element from Org to Texinfo.
+#+end_example
+
+#+texinfo: @noindent
+becomes
+
+#+begin_example
+@defun org-texinfo-drawer drawer contents info ::
+ Transcode a DRAWER element from Org to Texinfo.
+@end defun
#+end_example
+The recognized prefixes are =Command:=, =Function:=, =Macro:=,
+=Special Form:=, =Variable:= and =User Option:=. These are the same
+prefixes that appear in the Info file for the respective definition
+commands. For example a =Function:= item in the Org file is converted
+to a =@defun= command in the Texinfo file, which in turn is converted
+to a definition prefixed with =-- Function:= in the Info file.
+
+As a special case the prefix =Key:= is also recognized. No Texinfo
+definition command exists for key bindings and the output in Info
+files also lacks the =Key:= prefix. Even so this special case is
+supported because it provides a convenient shorthand, as illustrated
+here:
+
+#+begin_example
+- Key: C-c C-c (do-something) ::
+ This command does something.
+
+- User Option: do-something-somehow ::
+ This option controls how exactly ~do-something~ does its thing.
+#+end_example
+
+#+texinfo: @noindent
+becomes
+
+#+begin_example
+@table @asis
+@item @kbd{C-c C-c} (@code{do-something})
+@kindex C-c C-c
+@findex do-something
+This command does something.
+@end table
+
+@defopt do-something-somehow
+This option controls how exactly @code{do-something} does its thing.
+@end defopt
+#+end_example
+
+#+texinfo: @noindent
+Command in parenthesis, as done above, is optional.
+
*** Tables in Texinfo export
:PROPERTIES:
:DESCRIPTION: Table attributes.
@@ -15338,11 +15743,42 @@ your king.
,#+END_QUOTE
#+end_example
+*** Key bindings in Texinfo export
+:PROPERTIES:
+:DESCRIPTION: @@kbd Texinfo command.
+:END:
+
+Org does not provide any markup for key bindings that corresponds to
+Texinfo's ~@kbd~ and ~@key~ commands. One way to deal with this is to
+fall back to code syntax. =~C-x SPC~=, for example, is transcoded to
+~@code{C-x SPC}~.
+
+A better approach is to define and use an Org macro named ~kbd~. To
+make that easier the function ~org-texinfo-kbd-macro~ is provided,
+which is intended to be used like this:
+
+#+begin_example
+,#+macro: kbd (eval (org-texinfo-kbd-macro $1))
+
+Type {{{kbd(C-c SPC)}}}.
+#+end_example
+
+#+texinfo: @noindent
+which becomes
+
+#+begin_example
+Type @kbd{C-c @key{SPC}}.
+#+end_example
+
*** Special blocks in Texinfo export
:PROPERTIES:
:DESCRIPTION: Special block attributes.
:END:
+The Texinfo export back-end supports two approaches to writing Texinfo
+definition commands. One of them is described here, the other in
+[[*Plain lists in Texinfo export]].
+
#+cindex: @samp{ATTR_TEXINFO}, keyword
The Texinfo export back-end converts special blocks to commands with
@@ -15952,7 +16388,9 @@ If you want to publish the Org file as an =.org= file but with
~org-org-publish-to-org~. This produces =file.org= and puts it in the
publishing directory. If you want a htmlized version of this file,
set the parameter ~:htmlized-source~ to ~t~. It produces
-=file.org.html= in the publishing directory[fn:141].
+=file.org.html= in the publishing directory[fn:: If the publishing
+directory is the same as the source directory, =file.org= is exported
+as =file.org.org=, so you probably do not want to do this.].
Other files like images only need to be copied to the publishing
destination; for this you can use ~org-publish-attachment~. For
@@ -16110,7 +16548,7 @@ Settings]]), however, override everything.
| ~:html-preamble-format~ | ~org-html-preamble-format~ |
| ~:html-preamble~ | ~org-html-preamble~ |
| ~:html-self-link-headlines~ | ~org-html-self-link-headlines~ |
-| ~:html-table-align-individual-field~ | ~de{org-html-table-align-individual-fields~ |
+| ~:html-table-align-individual-field~ | ~org-html-table-align-individual-fields~ |
| ~:html-table-attributes~ | ~org-html-table-default-attributes~ |
| ~:html-table-caption-above~ | ~org-html-table-caption-above~ |
| ~:html-table-data-tags~ | ~org-html-table-data-tags~ |
@@ -16141,6 +16579,9 @@ Settings]]), however, override everything.
| ~:latex-default-table-environment~ | ~org-latex-default-table-environment~ |
| ~:latex-default-table-mode~ | ~org-latex-default-table-mode~ |
| ~:latex-diary-timestamp-format~ | ~org-latex-diary-timestamp-format~ |
+| ~:latex-engraved-options~ | ~org-latex-engraved-options~ |
+| ~:latex-engraved-preamble~ | ~org-latex-engraved-preamble~ |
+| ~:latex-engraved-theme~ | ~org-latex-engraved-theme~ |
| ~:latex-footnote-defined-format~ | ~org-latex-footnote-defined-format~ |
| ~:latex-footnote-separator~ | ~org-latex-footnote-separator~ |
| ~:latex-format-drawer-function~ | ~org-latex-format-drawer-function~ |
@@ -16156,12 +16597,12 @@ Settings]]), however, override everything.
| ~:latex-link-with-unknown-path-format~ | ~org-latex-link-with-unknown-path-format~ |
| ~:latex-listings-langs~ | ~org-latex-listings-langs~ |
| ~:latex-listings-options~ | ~org-latex-listings-options~ |
-| ~:latex-listings~ | ~org-latex-listings~ |
| ~:latex-minted-langs~ | ~org-latex-minted-langs~ |
| ~:latex-minted-options~ | ~org-latex-minted-options~ |
| ~:latex-prefer-user-labels~ | ~org-latex-prefer-user-labels~ |
| ~:latex-subtitle-format~ | ~org-latex-subtitle-format~ |
| ~:latex-subtitle-separate~ | ~org-latex-subtitle-separate~ |
+| ~:latex-src-block-backend~ | ~org-latex-src-block-backend~ |
| ~:latex-table-scientific-notation~ | ~org-latex-table-scientific-notation~ |
| ~:latex-tables-booktabs~ | ~org-latex-tables-booktabs~ |
| ~:latex-tables-centered~ | ~org-latex-tables-centered~ |
@@ -16177,6 +16618,7 @@ Settings]]), however, override everything.
| ~:md-footnote-format~ | ~org-md-footnote-format~ |
| ~:md-footnotes-section~ | ~org-md-footnotes-section~ |
| ~:md-headline-style~ | ~org-md-headline-style~ |
+| ~:md-toplevel-hlevel~ | ~org-md-toplevel-hlevel~ |
**** ODT specific properties
:PROPERTIES:
@@ -16204,6 +16646,7 @@ Settings]]), however, override everything.
| ~:texinfo-active-timestamp-format~ | ~org-texinfo-active-timestamp-format~ |
| ~:texinfo-classes~ | ~org-texinfo-classes~ |
| ~:texinfo-class~ | ~org-texinfo-default-class~ |
+| ~:texinfo-compact-itemx | ~org-texinfo-compact-itemx~ |
| ~:texinfo-table-default-markup~ | ~org-texinfo-table-default-markup~ |
| ~:texinfo-diary-timestamp-format~ | ~org-texinfo-diary-timestamp-format~ |
| ~:texinfo-filename~ | ~org-texinfo-filename~ |
@@ -16224,13 +16667,16 @@ Settings]]), however, override everything.
#+cindex: links, publishing
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]]= (see [[*External Links]]). When
-published, this link becomes a link to =foo.html=. You can thus
-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 it, use an =http= link instead of
-a =file:= link, because =file= links are converted to link to the
-corresponding =.html= file.
+like =[[file:foo.org][The foo]]= or simply =[[file:foo.org]]= (see
+[[*External Links]]). When published, this link becomes a link to
+=foo.html=. You can thus 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 it,
+use an =http= link instead of a =file:= link, because =file= links are
+converted to link to the corresponding =.html= file.
+
+Links to encrypted Org files, like =[[file:foo.org.gpg]]= are also
+supported.
You may also link to related files, such as images. Provided you are
careful with relative file names, and provided you have also
@@ -16238,11 +16684,11 @@ configured Org to upload the related files, these links will work too.
See [[*Example: complex publishing configuration]], for an example of this
usage.
-Eventually, links between published documents can contain some search
-options (see [[*Search Options in File Links]]), which will be resolved to
-the appropriate location in the linked file. For example, once
-published to HTML, the following links all point to a dedicated anchor
-in =foo.html=.
+Links between published documents can contain some search options (see
+[[*Search Options in File Links]]), which will be resolved to the
+appropriate location in the linked file. For example, once published
+to HTML, the following links all point to a dedicated anchor in
+=foo.html=.
#+begin_example
[[file:foo.org::*heading]]
@@ -16537,7 +16983,13 @@ capabilities:
- insert :: Add and edit citations via ~org-cite-insert~.
- export :: Via different libraries for different target formats.
-The user can configure these with ~org-cite-activate-processor~,
+To use a "citation processor", the user must load them; for example;
+
+#+begin_src emacs-lisp
+(require 'oc-bibtex)
+#+end_src
+
+They can then configure them with ~org-cite-activate-processor~,
~org-cite-follow-processor~, ~org-cite-insert-processor~, and
~org-cite-export-processors~ respectively.
@@ -16602,15 +17054,18 @@ Org currently includes the following export processors:
- csl :: this export processor uses format files written in [[https://en.wikipedia.org/wiki/Citation_Style_Language][Citation
Style Language]] via [[https://github.com/andras-simonyi/citeproc-el][citeproc-el]];
-- In contrast, two other processors target LaTeX and LaTeX-derived
+- In contrast, three other processors target LaTeX and LaTeX-derived
formats exclusively:
- - natbib :: this export processor uses BibTeX, the historical
+ - bibtex :: this export processor uses BibTeX, the historical
bibliographic processor used with LaTeX, thus allowing the use of
- data and style files compatible with this processor (including
- a large number of publishers' styles). It uses citation commands
- implemented in the LaTeX package =natbib=, allowing more stylistic
- variants that LaTeX's =\cite= command.
+ data and style files compatible with this processor (including a
+ large number of publishers' styles). It only supports LaTeX's
+ =\cite= and =\nocite= commands.
+
+ - natbib :: as with the bibtex processor, but using the LaTeX
+ package =natbib=, allowing more stylistic variants that LaTeX's
+ =\cite= command.
- biblatex :: this backend allows the use of data and formats
prepared for BibLaTeX, an alternate bibliographic processor used
@@ -16643,6 +17098,72 @@ conformant to the Harvard style and the specification of the
Wolkers-Kluwer publisher; since it relies on the ~bibtex~ processor of
your LaTeX installation, it won't export to anything but PDF.
+** Bibliography printing
+
+The =PRINT_BIBLIOGRAPHY= keyword specifies where the bibliography
+should be printed (note the colon):
+
+: #+print_bibliography:
+
+The bibliography printed by the LaTeX-based export processors
+"bibtex", "natbib" and "biblatex" has a chapter or section heading by
+default, while the "basic" and "csl" processors print the list of
+bibliography entries without a heading.
+
+A document may contain more than one =PRINT_BIBLIOGRAPHY= keywords.
+Each of the keywords will trigger printing the bibliography.
+
+The keywords can be used with or without additional options. Options
+can be used, for example, to print only entries that belong to a
+certain category or to control formatting. The set of supported
+=PRINT_BIBLIOGRAPHY= options and their interpretation varies between
+the different citation export processors. Some export processors do
+not support passing options.
+
+*** Bibliography options in the "biblatex" and "csl" export processors
+
+The "biblatex" and "csl" export processors support bibliography
+options through a property list attached to the =PRINT_BIBLIOGRAPHY=
+keyword. For example,
+
+: #print_bibliography: :keyword algebra :type book
+
+Values including spaces must be surrounded with double quotes. If you
+need to use a key multiple times, you can separate its values with
+commas, but without any space in-between:
+
+: #print_bibliography: :keyword "algebraic logic" :nottype article,book
+
+The "biblatex" export processor accepts all options supported by
+BibLaTeX's ~\printbibliography~ command, while the "csl" processor
+accepts the following ones:
+
+- =:keyword <keyword(,keyword2...)>= :: Print only entries whose
+ keyword field contains all given keywords.
+
+- =:notkeyword <keyword(,keyword2...)>= :: Print only entries whose
+ keyword field does not contain any of the given keywords.
+
+- =:type <entrytype>= :: Print only entries whose type is
+ =<entrytype>=. Entry type is the BibTeX/BibLaTeX entry type if this
+ information is available (the entry was read from a BibTeX/BibLaTeX
+ bibliography) and the CSL entry type otherwise.
+
+- =:nottype <entrytype(,entrytype2...)>= :: Print only entries whose
+ type is not among the given entry types. Entry type is determined
+ as in the case of =:type=.
+
+- =:csltype <entrytype>= :: Print only entries whose CSL entry type
+ (possibly based on a conversion from BibTeX/BibLaTeX to CSL) is
+ =<entrytype>=.
+
+- =:notcsltype <entrytype(,entrytype2...)>= :: Print only entries whose
+ CSL entry type (possibly based on a conversion from BibTeX/BibLaTeX
+ to CSL) is not among the listed entry types.
+
+- =:filter <predicate>= :: Print only entries for which the given
+ Emacs Lisp predicate returns a non-~nil~ value.
+
* Working with Source Code
:PROPERTIES:
:DESCRIPTION: Export, evaluate, and tangle code blocks.
@@ -16803,7 +17324,7 @@ or
Optional. Heading arguments control many aspects of evaluation,
export and tangling of code blocks (see [[*Using Header Arguments]]).
Using Org's properties feature, header arguments can be selectively
- applied to the entire buffer or specific sub-trees of the Org
+ applied to the entire buffer or specific subtrees of the Org
document.
- =<body>= ::
@@ -16843,8 +17364,31 @@ following values:
:exports => "code"
:cache => "no"
:noweb => "no"
+:hlines => "no"
+:tangle => "no"
+#+end_example
+
+#+vindex: org-babel-default-inline-header-args
+Inline source blocks (see [[*Structure of Code Blocks]]) use slightly
+different default header arguments defined in
+~org-babel-default-inline-header-args~:
+
+#+begin_example
+:session => "none"
+:results => "replace"
+:exports => "results"
+:hlines => "yes"
#+end_example
+The most notable difference between default header arguments for
+inline and normal source blocks is =:exports= argument. For inline
+source blocks, results of evaluation are exported by default; not the
+code.
+
+Unlike the default values, header arguments set using Org mode
+properties (see [[*Header arguments in Org mode properties]]) do apply to
+both the normal source blocks and inline source blocks.
+
The example below sets =:noweb= header arguments to =yes=, which makes
Org expand =:noweb= references by default.
@@ -16882,13 +17426,13 @@ for any block.
#+vindex: org-use-property-inheritance
Header arguments set through Org's property drawers (see [[*Property
-Syntax]]) apply at the sub-tree level on down. Since these property
+Syntax]]) apply at the subtree level on down. Since these property
drawers can appear anywhere in the file hierarchy, Org uses outermost
call or source block to resolve the values. Org ignores
~org-use-property-inheritance~ setting.
In this example, =:cache= defaults to =yes= for all code blocks in the
-sub-tree.
+subtree.
#+begin_example
,* sample header
@@ -17177,9 +17721,10 @@ a colon, for example: =:var table=other-file.org:example-table=.
: 4
#+end_example
-- literal example ::
+- literal example, or code block contents ::
- A literal example block named with a =NAME= keyword.
+ A code block or literal example block named with a =NAME= keyword,
+ followed by brackets (optional for example blocks).
#+begin_example
,#+NAME: literal-example
@@ -17189,7 +17734,7 @@ a colon, for example: =:var table=other-file.org:example-table=.
,#+END_EXAMPLE
,#+NAME: read-literal-example
- ,#+BEGIN_SRC emacs-lisp :var x=literal-example
+ ,#+BEGIN_SRC emacs-lisp :var x=literal-example[]
(concatenate #'string x " for you.")
,#+END_SRC
@@ -17372,6 +17917,13 @@ directory with {{{kbd(M-x cd RET DIRECTORY)}}}, and then not setting
variable ~default-directory~. Setting =mkdirp= header argument to
a non-~nil~ value creates the directory, if necessary.
+Setting =dir= to the symbol ~attach~ or the string ~"'attach"~ will
+set =dir= to the directory returned by ~(org-attach-dir)~, set =:mkdir
+yes=, and insert any file paths, as when using =:results file=, which
+are under the node's attachment directory using =attachment:= links
+instead of the usual =file:= links. Any returned path outside of the
+attachment directory will use =file:= links as per usual.
+
For example, to save the plot file in the =Work/= folder of the home
directory---notice tilde is expanded:
@@ -17450,7 +18002,8 @@ see [[*Code Evaluation and Security Issues]].
Org captures the results of the code block evaluation and inserts them
in the Org file, right after the code block. The insertion point is
after a newline and the =RESULTS= keyword. Org creates the =RESULTS=
-keyword if one is not already there.
+keyword if one is not already there. More details in [[*Results of
+Evaluation]].
By default, Org enables only Emacs Lisp code blocks for execution.
See [[*Languages]] to enable other languages.
@@ -17459,13 +18012,15 @@ See [[*Languages]] to enable other languages.
#+kindex: C-c C-v e
#+findex: org-babel-execute-src-block
Org provides many ways to execute code blocks. {{{kbd(C-c C-c)}}} or
-{{{kbd(C-c C-v e)}}} with the point on a code block[fn:142] calls the
+{{{kbd(C-c C-v e)}}} with the point on a code block[fn:: The option
+~org-babel-no-eval-on-ctrl-c-ctrl-c~ can be used to remove code
+evaluation from the {{{kbd(C-c C-c)}}} key binding.] calls the
~org-babel-execute-src-block~ function, which executes the code in the
block, collects the results, and inserts them in the buffer.
#+cindex: @samp{CALL}, keyword
#+vindex: org-babel-inline-result-wrap
-By calling a named code block[fn:143] from an Org mode buffer or
+By calling a named code block[fn:48] from an Org mode buffer or
a table. Org can call the named code blocks from the current Org mode
buffer or from the "Library of Babel" (see [[*Library of Babel]]).
@@ -17536,6 +18091,10 @@ The =eval= header argument can limit evaluation of specific code
blocks and =CALL= keyword. It is useful for protection against
evaluating untrusted code blocks by prompting for a confirmation.
+- =yes= ::
+
+ Org always evaluates the source code without asking permission.
+
- =never= or =no= ::
Org never evaluates the source code.
@@ -17608,10 +18167,12 @@ The =cache= header argument can have one of two values: =yes= or =no=.
In this example, both functions are cached. But =caller= runs only if
the result from =random= has changed since the last run.
+# +1 here is to work around Emacs bug#59293.
+# Otherwise, (1) is recognized as footnote reference by info.el.
#+begin_example
,#+NAME: random
,#+BEGIN_SRC R :cache yes
- runif(1)
+ runif(+1)
,#+END_SRC
,#+RESULTS[a2a72cd647ad44515fab62e144796432793d68e1]: random
@@ -17666,7 +18227,7 @@ they are mutually exclusive.
- =value= ::
- Default for most Babel libraries[fn:143]. Functional mode. Org
+ Default for most Babel libraries[fn:48]. Functional mode. Org
gets the value by wrapping the code in a function definition in the
language of the source block. That is why when using =:results
value=, code should execute like a function and return a value. For
@@ -17697,8 +18258,12 @@ they are mutually exclusive.
:END:
Type tells what result types to expect from the execution of the code
-block. Choose one of the options; they are mutually exclusive. The
-default behavior is to automatically determine the result type.
+block. Choose one of the options; they are mutually exclusive.
+
+The default behavior is to automatically determine the result type.
+The result type detection depends on the code block language, as
+described in the documentation for individual languages. See
+[[*Languages]].
#+attr_texinfo: :sep ,
- =table=, =vector= ::
@@ -17849,13 +18414,17 @@ follows from the type specified above.
When used along with =file= type, the result is a link to the file
specified in =:file= header argument. However, unlike plain =file=
- type, nothing is written to the disk. The block is used for its
- side-effects only, as in the following example:
+ type, code block output is not written to the disk. The block is
+ expected to generate the file by its side-effects only, as in the
+ following example:
#+begin_example
- ,#+begin_src shell :results file link :file "download.tar.gz"
- wget -c "https://example.com/download.tar.gz"
+ ,#+begin_src shell :results file link :file "org-mode-unicorn.svg"
+ wget -c "https://orgmode.org/resources/img/org-mode-unicorn.svg"
,#+end_src
+
+ ,#+RESULTS:
+ [[file:org-mode-unicorn.svg]]
#+end_example
- =org= ::
@@ -17898,7 +18467,8 @@ value listed above. E.g.,
:UNNUMBERED: notoc
:END:
-Handling options after collecting the results.
+Handling options after collecting the results. Choose one of the
+options; they are mutually exclusive.
- =replace= ::
@@ -17912,8 +18482,18 @@ Handling options after collecting the results.
- =none= ::
- Do not process results at all. No inserting in the Org mode buffer
- nor echo them in the minibuffer. Usage example: =:results none=.
+ Compute results, but do not do anything with them. No inserting in
+ the Org mode buffer nor echo them in the minibuffer. The results
+ can still be used when referenced from another code block.
+ Usage example: =:results none=.
+
+- =discard= ::
+
+ Ignore the results completely. This option is similar to =none=,
+ but no processing is performed on the return value. Calling the
+ code block programatically (see [[*How to evaluate source code]]) or by
+ reference (see [[*Passing arguments]] and [[*Noweb Reference Syntax]]) will
+ always yield nil.
- =append= ::
@@ -18004,10 +18584,11 @@ to pass data between code blocks.
It is possible to export the /code/ of code blocks, the /results/ of
code block evaluation, /both/ the code and the results of code block
evaluation, or /none/. Org defaults to exporting /code/ for most
-languages. For some languages, such as ditaa, Org defaults to
-/results/. To export just the body of code blocks, see [[*Literal
-Examples]]. To selectively export sub-trees of an Org document, see
-[[*Exporting]].
+languages and /results/ for inline code blocks. For some languages,
+such as ditaa, Org defaults to /results/ both in ordinary source
+blocks and in inline source blocks. To export just the body of code
+blocks, see [[*Literal Examples]]. To selectively export subtrees of an
+Org document, see [[*Exporting]].
#+cindex: @samp{exports}, header argument
The =exports= header argument is to specify if that part of the Org
@@ -18034,6 +18615,36 @@ file is exported to, say, HTML or LaTeX formats.
exported file. Whether the code is evaluated at all depends on
other options. Example: =:exports none=.
+If a source block is named using =NAME= keyword, the same name will be
+assigned to the results of evaluation. This way, fuzzy links pointing
+to the named source blocks exported using =:exports results= will
+remain valid and point to the results of evaluation.
+
+Results of evaluation of a named block can also be explicitly named
+using a separate =NAME= keyword. The name value set via =NAME=
+keyword will be preferred over the parent source block.
+
+: #+NAME: code name
+: #+BEGIN_SRC emacs-lisp :exports both value
+: (+ 1 2)
+: #+END_SRC
+:
+: #+NAME: results name
+: #+RESULTS: code name
+: 3
+:
+: This [[code name][link]] will point to the code block.
+: Another [[results name][link]] will point to the results.
+
+Explicit setting of the result name may be necessary when a named code
+block is exported using =:exports both=. Links to such block may
+arbitrarily point either to the code block or to its results when
+results do not have a distinct name.
+
+Note that all the links pointing to a source block exported using
+=:exports none= will be broken. This will make export process fail,
+unless broken links are allowed during export (see [[*Export Settings]]).
+
#+vindex: org-export-use-babel
To stop Org from evaluating code blocks to speed exports, use the
header argument =:eval never-export= (see [[*Evaluating Code Blocks]]).
@@ -18049,9 +18660,9 @@ in some circumstances. So during export, to allow evaluation of just
the header arguments but not any code evaluation in the source block,
set =:eval never-export= (see [[*Evaluating Code Blocks]]).
-Org never evaluates code blocks in commented sub-trees when exporting
+Org never evaluates code blocks in commented subtrees when exporting
(see [[*Comment Lines]]). On the other hand, Org does evaluate code
-blocks in sub-trees excluded from export (see [[*Export Settings]]).
+blocks in subtrees excluded from export (see [[*Export Settings]]).
** Extracting Source Code
:PROPERTIES:
@@ -18165,13 +18776,23 @@ the tangled file's executable permission.
#+cindex: @samp{tangle-mode}, header argument
The =tangle-mode= header argument specifies what permissions to set
-for tangled files by ~set-file-modes~. For example, to make
-a read-only tangled file, use =:tangle-mode (identity #o444)=. To
-make it executable, use =:tangle-mode (identity #o755)=. It also
-overrides executable permission granted by =shebang=. When multiple
-source code blocks tangle to a single file with different and
-conflicting =tangle-mode= header arguments, Org's behavior is
-undefined.
+for tangled files by ~set-file-modes~. Permissions are given by an
+octal value, which can be provided calling the ~identity~ function on
+an elisp octal value. For instance, to create a read-only file one may
+use =:tangle-mode (identity #o444)=. To reduce the verbosity required,
+a octal shorthand is defined, =oXXX= (=o= for octal). Using this, our
+read-only example is =:tangle-mode o444=. Omitting the =o= prefix will
+cause the argument to be interpreted as an integer, which can lead to
+unexpected results (=444= is the same as =o674=).
+Two other shorthands are recognised, ls-style strings like
+=rw-r--r--=, and chmod-style permissions like =g+w=.
+Note that chmod-style permissions are based on
+~org-babel-tangle-default-file-mode~, which is =#o544= by default.
+
+When =:tangle-mode= and =:shebang= are both specified, the give
+=:tangle-mode= will override the permissions from =:shebang=. When
+multiple source code blocks tangle to a single file with conflicting
+=:tangle-mode= header arguments, Org's behaviour is undefined.
#+cindex: @samp{no-expand}, header argument
By default Org expands code blocks during tangling. The =no-expand=
@@ -18208,6 +18829,20 @@ expanded anyway.
:UNNUMBERED: notoc
:END:
+- ~org-babel-pre-tangle-hook~ ::
+
+ #+vindex: org-babel-pre-tangle-hook
+ This hook is run before the tangle process begins. The active
+ buffer is buffer to be tangled.
+
+- ~org-babel-tangle-body-hook~ ::
+
+ #+vindex: org-babel-tangle-body-hook
+ This hook is run from a temporary buffer containing expanded code of
+ every tangled code block. The hook can modify the expanded code as
+ needed. The contents of the current buffer will be used as actual
+ code block expansion.
+
- ~org-babel-post-tangle-hook~ ::
#+vindex: org-babel-post-tangle-hook
@@ -18215,6 +18850,10 @@ expanded anyway.
~org-babel-tangle~, making it suitable for post-processing,
compilation, and evaluation of code in the tangled files.
+- ~org-babel-tangle-finished-hook~ ::
+ #+vindex: org-babel-tangle-finished-hook
+ This hook is run after post-tangle hooks, in the original buffer.
+
*** Jumping between code and Org
:PROPERTIES:
:UNNUMBERED: notoc
@@ -18239,8 +18878,8 @@ code block header arguments:
#+cindex: source code, languages
#+cindex: code block, languages
-Code blocks in dozens of languages are supported. See Worg for
-[[https://orgmode.org/worg/org-contrib/babel/languages/index.html][language specific documentation]].
+Code blocks in dozens of languages are supported. See Worg website
+for [[https://orgmode.org/worg/org-contrib/babel/languages/index.html][language specific documentation]].
#+vindex: org-babel-load-languages
By default, only Emacs Lisp is enabled for evaluation. To enable or
@@ -18354,7 +18993,8 @@ for Python and Emacs Lisp languages.
#+cindex: @samp{noweb-ref}, header argument
Source code blocks can include references to other source code blocks,
-using a noweb[fn:144] style syntax:
+using a noweb[fn:: For noweb literate programming details, see
+https://www.cs.tufts.edu/~nr/noweb/.] style syntax:
: <<CODE-BLOCK-ID>>
@@ -18387,6 +19027,12 @@ tangled, or exported.
Expansion of noweb syntax references in the body of the code block
when tangling. No expansion when evaluating or exporting.
+- =strip-tangle= ::
+
+ Expansion of noweb syntax references in the body of the code block
+ when evaluating or exporting. Removes noweb syntax references
+ when exporting.
+
- =no-export= ::
Expansion of noweb syntax references in the body of the code block
@@ -18429,7 +19075,7 @@ the second code block is expanded as
#+end_example
You may also include the contents of multiple blocks sharing a common
-=noweb-ref= header argument, which can be set at the file, sub-tree,
+=noweb-ref= header argument, which can be set at the file, subtree,
or code block level. In the example Org file shown next, the body of
the source code in each block is extracted for concatenation to a pure
code file when tangled.
@@ -18587,6 +19233,23 @@ else:
print('do things when false')
#+end_example
+This prefix behavior can be turned off in a block by setting the
+=noweb-prefix= header argument to =no=, as in:
+
+#+begin_example
+,#+BEGIN_SRC elisp :noweb-prefix no
+ (setq example-data "<<example>>")
+,#+END_SRC
+#+end_example
+
+#+texinfo: @noindent
+which expands to:
+
+#+begin_example
+(setq example-data "this is the
+multi-line body of example")
+#+end_example
+
When in doubt about the outcome of a source code block expansion, you
can preview the results with the following command:
@@ -18865,7 +19528,8 @@ Org Tempo expands snippets to structures defined in
~org-structure-template-alist~ and ~org-tempo-keywords-alist~. For
example, {{{kbd(< s TAB)}}} creates a code block. Enable it by
customizing ~org-modules~ or add =(require 'org-tempo)= to your Emacs
-init file[fn:145].
+init file[fn:: For more information, please refer to the commentary
+section in =org-tempo.el=.].
#+attr_texinfo: :columns 0.1 0.9
| {{{kbd(a)}}} | =#+BEGIN_EXPORT ascii= ... =#+END_EXPORT= |
@@ -18945,7 +19609,7 @@ in the desired amount with hard spaces and hiding leading stars.
To display the buffer in the indented view, activate Org Indent minor
mode, using {{{kbd(M-x org-indent-mode)}}}. Text lines that are not
headlines are prefixed with virtual spaces to vertically align with
-the headline text[fn:146].
+the headline text[fn:49].
#+vindex: org-indent-indentation-per-level
To make more horizontal space, the headlines are shifted by two
@@ -18973,9 +19637,10 @@ use =STARTUP= keyword as follows:
It is possible to use hard spaces to achieve the indentation instead,
if the bare ASCII file should have the indented look also outside
-Emacs[fn:147]. With Org's support, you have to indent all lines to
-line up with the outline headers. You would use these
-settings[fn:148]:
+Emacs[fn:50]. With Org's support, you have to indent all lines to
+line up with the outline headers. You would use these settings[fn::
+~org-adapt-indentation~ can also be set to ='headline-data=, in which
+case only data lines below the headline will be indented.]:
#+begin_src emacs-lisp
(setq org-adapt-indentation t
@@ -19138,9 +19803,10 @@ manual, but here is a consolidated list for easy reference.
#+cindex: special keywords
In-buffer settings start with =#+=, followed by a keyword, a colon,
-and then a word for each setting. Org accepts multiple settings on
-the same line. Org also accepts multiple lines for a keyword. This
-manual describes these settings throughout. A summary follows here.
+one or more spaces, and then a word for each setting. Org accepts
+multiple settings on the same line. Org also accepts multiple lines
+for a keyword. This manual describes these settings throughout. A
+summary follows here.
#+cindex: refresh set-up
{{{kbd(C-c C-c)}}} activates any changes to the in-buffer settings.
@@ -19246,7 +19912,10 @@ changes.
#+vindex: org-startup-indented
Dynamic virtual indentation is controlled by the variable
- ~org-startup-indented~[fn:149].
+ ~org-startup-indented~[fn:: Note that Org Indent mode also sets the
+ ~wrap-prefix~ property, such that Visual Line mode (or purely
+ setting ~word-wrap~) wraps long lines, including headlines,
+ correctly indented.].
| =indent= | Start with Org Indent mode turned on. |
| =noindent= | Start with Org Indent mode turned off. |
@@ -19775,6 +20444,7 @@ moves across a special context.
(add-to-list 'org-tab-first-hook 'yas/org-very-safe-expand)
(define-key yas/keymap [tab] 'yas/next-field)))
#+end_src
+
** Using Org on a TTY
:PROPERTIES:
:DESCRIPTION: Using Org on a tty.
@@ -20045,8 +20715,9 @@ Here is a suggestion for Org Crypt settings in Emacs init file:
(setq org-tags-exclude-from-inheritance '("crypt"))
(setq org-crypt-key nil)
-;; GPG key to use for encryption
-;; Either the Key ID or set to nil to use symmetric encryption.
+;; GPG key to use for encryption.
+;; nil means use symmetric encryption unconditionally.
+;; "" means use symmetric encryption unless heading sets CRYPTKEY property.
(setq auto-save-default nil)
;; Auto-saving does not cooperate with org-crypt.el: so you need to
@@ -20068,6 +20739,10 @@ specifying the respective key as property =CRYPTKEY=, e.g.:
:END:
#+end_example
+Note that =CRYPTKEY= property is only effective when ~org-crypt-key~
+is set to non-nil. ~nil~ value of ~org-crypt-key~ makes Org use
+symmetric encryption unconditionally.
+
Excluding the =crypt= tag from inheritance prevents already encrypted
text from being encrypted again.
@@ -20103,7 +20778,7 @@ Tags]]) only for those set in these variables.
#+vindex: org-mobile-directory
The mobile application needs access to a file directory on
-a server[fn:150] to interact with Emacs. Pass its location through
+a server[fn:51] to interact with Emacs. Pass its location through
the ~org-mobile-directory~ variable. If you can mount that directory
locally just set the variable to point to that directory:
@@ -20124,10 +20799,12 @@ With a public server, consider encrypting the files. Org also
requires OpenSSL installed on the local computer. To turn on
encryption, set the same password in the mobile application and in
Emacs. Set the password in the variable
-~org-mobile-use-encryption~[fn:151]. Note that even after the mobile
-application encrypts the file contents, the file name remains visible
-on the file systems of the local computer, the server, and the mobile
-device.
+~org-mobile-use-encryption~[fn:: If Emacs is configured for safe
+storing of passwords, then configure the variable
+~org-mobile-encryption-password~; please read the docstring of that
+variable.]. Note that even after the mobile application encrypts the
+file contents, the file name remains visible on the file systems of
+the local computer, the server, and the mobile device.
*** Pushing to the mobile application
:PROPERTIES:
@@ -20140,16 +20817,19 @@ The command ~org-mobile-push~ copies files listed in
~org-mobile-files~ into the staging area. Files include agenda files
(as listed in ~org-agenda-files~). Customize ~org-mobile-files~ to
add other files. File names are staged with paths relative to
-~org-directory~, so all files should be inside this directory[fn:152].
+~org-directory~, so all files should be inside this directory[fn::
+Symbolic links in ~org-directory~ need to have the same name as their
+targets.].
Push creates a special Org file =agendas.org= with custom agenda views
-defined by the user[fn:153].
+defined by the user[fn:52].
Finally, Org writes the file =index.org=, containing links to other
files. The mobile application reads this file first from the server
to determine what other files to download for agendas. For faster
-downloads, it is expected to only read files whose checksums[fn:154]
-have changed.
+downloads, it is expected to only read files whose checksums[fn::
+Checksums are stored automatically in the file =checksums.dat=.] have
+changed.
*** Pulling from the mobile application
:PROPERTIES:
@@ -20165,11 +20845,12 @@ data in an inbox file format, through the following steps:
1.
#+vindex: org-mobile-inbox-for-pull
- Org moves all entries found in =mobileorg.org=[fn:155] and appends
- them to the file pointed to by the variable
- ~org-mobile-inbox-for-pull~. It should reside neither in the
- staging area nor on the server. Each captured entry and each
- editing event is a top-level entry in the inbox file.
+ Org moves all entries found in =mobileorg.org=[fn:: The file will
+ be empty after this operation.] and appends them to the file
+ pointed to by the variable ~org-mobile-inbox-for-pull~. It should
+ reside neither in the staging area nor on the server. Each
+ captured entry and each editing event is a top-level entry in the
+ inbox file.
2.
#+cindex: @samp{FLAGGED}, tag
@@ -20459,11 +21140,12 @@ of these strategies:
#+cindex: @LaTeX{}, and Orgtbl mode
To wrap a source table in LaTeX, use the =comment= environment
-provided by =comment.sty=[fn:156]. To activate it, put
-~\usepackage{comment}~ in the document header. Orgtbl mode inserts
-a radio table skeleton[fn:157] with the command {{{kbd(M-x
-orgtbl-insert-radio-table)}}}, which prompts for a table name. For
-example, if =salesfigures= is the name, the template inserts:
+provided by =comment.sty=[fn:: https://www.ctan.org/pkg/comment]. To
+activate it, put ~\usepackage{comment}~ in the document header.
+Orgtbl mode inserts a radio table skeleton[fn:53] with the command
+{{{kbd(M-x orgtbl-insert-radio-table)}}}, which prompts for a table
+name. For example, if =salesfigures= is the name, the template
+inserts:
#+begin_example
% BEGIN RECEIVE ORGTBL salesfigures
@@ -20480,7 +21162,7 @@ The line =#+ORGTBL: SEND= tells Orgtbl mode to use the function
~orgtbl-to-latex~ to convert the table to LaTeX format, then insert
the table at the target (receive) location named =salesfigures=. Now
the table is ready for data entry. It can even use spreadsheet
-features[fn:158]:
+features[fn:54]:
#+begin_example
% BEGIN RECEIVE ORGTBL salesfigures
@@ -20696,10 +21378,12 @@ Dynamic blocks, like any other block, can be narrowed with
#+vindex: org-agenda-skip-function
#+vindex: org-agenda-skip-function-global
Org provides a special hook to further limit items in agenda views:
-~agenda~, ~agenda*~[fn:159], ~todo~, ~alltodo~, ~tags~, ~tags-todo~,
-~tags-tree~. Specify a custom function that tests inclusion of every
-matched item in the view. This function can also skip as much as is
-needed.
+~agenda~, ~agenda*~[fn:: The ~agenda*~ view is the same as ~agenda~
+except that it only considers /appointments/, i.e., scheduled and
+deadline items that have a time specification =[h]h:mm= in their
+time-stamps.], ~todo~, ~alltodo~, ~tags~, ~tags-todo~, ~tags-tree~.
+Specify a custom function that tests inclusion of every matched item
+in the view. This function can also skip as much as is needed.
For a global condition applicable to agenda views, use the
~org-agenda-skip-function-global~ variable. Org uses a global
@@ -20737,11 +21421,15 @@ meaningful string suitable for the agenda view.
#+vindex: org-odd-levels-only
#+vindex: org-agenda-skip-function
+#+findex: org-agenda-skip-entry-if
+#+findex: org-agenda-skip-subtree-if
Search for entries with a limit set on levels for the custom search.
This is a general approach to creating custom searches in Org. To
-include all levels, use =LEVEL>0=[fn:160]. Then to selectively pick
-the matched entries, use ~org-agenda-skip-function~, which also
-accepts Lisp forms, such as ~org-agenda-skip-entry-if~ and
+include all levels, use =LEVEL>0=[fn:: Note that, for
+~org-odd-levels-only~, a level number corresponds to order in the
+hierarchy, not to the number of stars.]. Then to selectively pick the
+matched entries, use ~org-agenda-skip-function~, which also accepts
+Lisp forms, such as ~org-agenda-skip-entry-if~ and
~org-agenda-skip-subtree-if~. For example:
- =(org-agenda-skip-entry-if 'scheduled)= ::
@@ -20834,6 +21522,17 @@ number. Here are tips to speed up:
(setq org-agenda-use-tag-inheritance nil)
#+end_src
+ #+vindex: org-agenda-ignore-properties
+- Disable parsing of some drawer properties:
+
+ #+begin_src emacs-lisp
+ (setq org-agenda-ignore-properties '(effort appt stats category))
+ #+end_src
+
+ The drawer properties you can disable in the agenda are effort
+ estimates (~effort~), appointments (~appt~), statistics (~stats~)
+ and subtree-local categories (~category~).
+
These options can be applied to selected agenda views. For more
details about generation of agenda views, see the docstrings for the
relevant variables, and this [[https://orgmode.org/worg/agenda-optimization.html][dedicated Worg page]] for agenda
@@ -21067,13 +21766,13 @@ Call {{{var(FUNC)}}} at each headline selected by {{{var(MATCH)}}} in
{{{var(FUNC)}}} is a function or a Lisp form. With point positioned
at the beginning of the headline, call the function without arguments.
-Org returns an alist of return values of calls to the function.
+Org returns a list of return values of calls to the function.
To avoid preserving point, Org wraps the call to {{{var(FUNC)}}} in
~save-excursion~ form. After evaluation, Org moves point to the end
of the line that was just processed. Search continues from that point
forward. This may not always work as expected under some conditions,
-such as if the current sub-tree was removed by a previous archiving
+such as if the current subtree was removed by a previous archiving
operation. In such rare circumstances, Org skips the next entry
entirely when it should not. To stop Org from such skips, make
{{{var(FUNC)}}} set the variable ~org-map-continue-from~ to a specific
@@ -21627,308 +22326,147 @@ modify this GNU manual."
* Footnotes
-[fn:1] If you do not use Font Lock globally turn it on in Org buffer
-with =(add-hook 'org-mode-hook #'turn-on-font-lock)=.
-
-[fn:2] Please consider subscribing to the mailing list in order to
-minimize the work the mailing list moderators have to do.
-
-[fn:3] See the variables ~org-special-ctrl-a/e~, ~org-special-ctrl-k~,
+[fn:1] See the variables ~org-special-ctrl-a/e~, ~org-special-ctrl-k~,
and ~org-ctrl-k-protect-subtree~ to configure special behavior of
{{{kbd(C-a)}}}, {{{kbd(C-e)}}}, and {{{kbd(C-k)}}} in headlines. Note
also that clocking only works with headings indented less than 30
stars.
-[fn:4] See, however, the option ~org-cycle-emulate-tab~.
-
-[fn:5] The indirect buffer contains the entire buffer, but is narrowed
+[fn:2] The indirect buffer contains the entire buffer, but is narrowed
to the current tree. Editing the indirect buffer also changes the
original buffer, but without affecting visibility in that buffer. For
more information about indirect buffers, see [[info:emacs#Indirect Buffers][GNU Emacs Manual]].
-[fn:6] When ~org-agenda-inhibit-startup~ is non-~nil~, Org does not
-honor the default visibility state when first opening a file for the
-agenda (see [[*Speeding Up Your Agendas]]).
-
-[fn:7] See also the variable ~org-show-context-detail~ to decide how
-much context is shown around each match.
-
-[fn:8] This depends on the option ~org-remove-highlights-with-change~.
-
-[fn:9] When using =*= as a bullet, lines must be indented so that they
+[fn:3] When using =*= as a bullet, lines must be indented so that they
are not interpreted as headlines. Also, when you are hiding leading
stars to get a clean outline view, plain list items starting with
a star may be hard to distinguish from true headlines. In short: even
though =*= is supported, it may be better to not use it for plain list
items.
-[fn:10] You can filter out any of them by configuring
-~org-plain-list-ordered-item-terminator~.
-
-[fn:11] You can also get =a.=, =A.=, =a)= and =A)= by configuring
+[fn:4] You can also get =a.=, =A.=, =a)= and =A)= by configuring
~org-list-allow-alphabetical~. To minimize confusion with normal
text, those are limited to one character only. Beyond that limit,
bullets automatically become numbers.
-[fn:12] If there's a checkbox in the item, the cookie must be put
+[fn:5] If there's a checkbox in the item, the cookie must be put
/before/ the checkbox. If you have activated alphabetical lists, you
can also use counters like =[@b]=.
-[fn:13] If you do not want the item to be split, customize the
-variable ~org-M-RET-may-split-line~.
-
-[fn:14] If you want to cycle around items that way, you may customize
-~org-list-use-circular-motion~.
-
-[fn:15] See ~org-list-use-circular-motion~ for a cyclic behavior.
-
-[fn:16] Many desktops intercept {{{kbd(M-TAB)}}} to switch windows.
+[fn:6] Many desktops intercept {{{kbd(M-TAB)}}} to switch windows.
Use {{{kbd(C-M-i)}}} or {{{kbd(ESC TAB)}}} instead.
-[fn:17] To insert a vertical bar into a table field, use =\vert= or,
-inside a word =abc\vert{}def=.
-
-[fn:18] Org understands references typed by the user as =B4=, but it
+[fn:7] Org understands references typed by the user as =B4=, but it
does not use this syntax when offering a formula for editing. You can
customize this behavior using the variable
~org-table-use-standard-references~.
-[fn:19] The computation time scales as O(N^2) because table
-{{{var(FOO)}}} is parsed for each field to be copied.
-
-[fn:20] The file =constants.el= can supply the values of constants in
+[fn:8] The file =constants.el= can supply the values of constants in
two different unit systems, =SI= and =cgs=. Which one is used depends
on the value of the variable ~constants-unit-system~. You can use the
=STARTUP= options =constSI= and =constcgs= to set this value for the
current buffer.
-[fn:21] The printf reformatting is limited in precision because the
+[fn:9] The printf reformatting is limited in precision because the
value passed to it is converted into an "integer" or "double". The
"integer" is limited in size by truncating the signed value to 32
bits. The "double" is limited in precision to 64 bits overall which
leaves approximately 16 significant decimal digits.
-[fn:22] Such names must start with an alphabetic character and use
-only alphanumeric/underscore characters.
-
-[fn:23] Plain URIs are recognized only for a well-defined set of
+[fn:10] Plain URIs are recognized only for a well-defined set of
schemes. See [[*External Links]]. Unlike URI syntax, they cannot contain
parenthesis or white spaces, either. URIs within angle brackets have
no such limitation.
-[fn:24] More accurately, the precise behavior depends on how point
-arrived there---see [[info:elisp#Invisible Text][Invisible Text]].
-
-[fn:25] To insert a link targeting a headline, in-buffer completion
+[fn:11] To insert a link targeting a headline, in-buffer completion
can be used. Just type a star followed by a few optional letters into
the buffer and press {{{kbd(M-TAB)}}}. All headlines in the current
buffer are offered as completions.
-[fn:26] When targeting a =NAME= keyword, the =CAPTION= keyword is
-mandatory in order to get proper numbering (see [[*Captions]]).
-
-[fn:27] The actual behavior of the search depends on the value of the
+[fn:12] The actual behavior of the search depends on the value of the
variable ~org-link-search-must-match-exact-headline~. If its value is
~nil~, then a fuzzy text search is done. If it is ~t~, then only the
exact headline is matched, ignoring spaces and statistic cookies. If
the value is ~query-to-create~, then an exact headline is searched; if
it is not found, then the user is queried to create it.
-[fn:28] If the headline contains a timestamp, it is removed from the
-link, which results in a wrong link---you should avoid putting
-a timestamp in the headline.
-
-[fn:29] The Org Id library must first be loaded, either through
-~org-customize~, by enabling ~id~ in ~org-modules~, or by adding
-=(require 'org-id)= in your Emacs init file.
-
-[fn:30] Note that you do not have to use this command to insert
+[fn:13] Note that you do not have to use this command to insert
a link. Links in Org are plain text, and you can type or paste them
straight into the buffer. By using this command, the links are
automatically enclosed in double brackets, and you will be asked for
the optional descriptive text.
-[fn:31] After insertion of a stored link, the link will be removed
+[fn:14] After insertion of a stored link, the link will be removed
from the list of stored links. To keep it in the list for later use,
use a triple {{{kbd(C-u)}}} prefix argument to {{{kbd(C-c C-l)}}}, or
configure the option ~org-link-keep-stored-after-insertion~.
-[fn:32] This works if a function has been defined in the ~:complete~
-property of a link in ~org-link-parameters~.
-
-[fn:33] See the variable ~org-link-use-indirect-buffer-for-internals~.
-
-[fn:34] For backward compatibility, line numbers can also follow a
-single colon.
-
-[fn:35] Of course, you can make a document that contains only long
-lists of TODO items, but this is not required.
-
-[fn:36] Changing the variable ~org-todo-keywords~ only becomes
-effective after restarting Org mode in a buffer.
-
-[fn:37] This is also true for the {{{kbd(t)}}} command in the agenda
-buffer.
-
-[fn:38] All characters are allowed except =@=, =^= and =!=, which have
-a special meaning here.
-
-[fn:39] Check also the variable ~org-fast-tag-selection-include-todo~,
+[fn:15] Check also the variable ~org-fast-tag-selection-include-todo~,
it allows you to change the TODO state through the tags interface (see
[[*Setting Tags]]), in case you like to mingle the two concepts. Note
that this means you need to come up with unique keys across both sets
of keywords.
-[fn:40] Org mode parses these lines only when Org mode is activated
-after visiting a file. {{{kbd(C-c C-c)}}} with point in a line
-starting with =#+= is simply restarting Org mode for the current
-buffer.
-
-[fn:41] The corresponding in-buffer setting is: =#+STARTUP: logdone=.
-
-[fn:42] The corresponding in-buffer setting is: =#+STARTUP:
-lognotedone=.
-
-[fn:43] See the variable ~org-log-states-order-reversed~.
-
-[fn:44] Note that the =LOGBOOK= drawer is unfolded when pressing
-{{{kbd(SPC)}}} in the agenda to show an entry---use {{{kbd(C-u
-SPC)}}} to keep it folded here.
-
-[fn:45] It is possible that Org mode records two timestamps when you
+[fn:16] It is possible that Org mode records two timestamps when you
are using both ~org-log-done~ and state change logging. However, it
never prompts for two notes: if you have configured both, the state
change recording note takes precedence and cancel the closing note.
-[fn:46] See also the option ~org-priority-start-cycle-with-default~.
-
-[fn:47] To keep subtasks out of the global TODO list, see the option
-~org-agenda-todo-list-sublevels~.
-
-[fn:48] With the exception of description lists. But you can allow it
+[fn:17] With the exception of description lists. But you can allow it
by modifying ~org-list-automatic-rules~ accordingly.
-[fn:49] Set the variable ~org-hierarchical-checkbox-statistics~ if you
-want such cookies to count all checkboxes below the cookie, not just
-those belonging to direct children.
-
-[fn:50] {{{kbd(C-u C-c C-c)}}} on the /first/ item of a list with no
-checkbox adds checkboxes to the rest of the list.
-
-[fn:51] As with all these in-buffer settings, pressing {{{kbd(C-c
-C-c)}}} activates any changes in the line.
-
-[fn:52] This is only true if the search does not involve more complex
-tests including properties (see [[*Property Searches]]).
-
-[fn:53] To extend this default list to all tags used in all agenda
-files (see [[*Agenda Views]]), customize the variable
-~org-complete-tags-always-offer-all-agenda-tags~.
-
-[fn:54] Keys are automatically assigned to tags that have no
-configured keys.
-
-[fn:55] If more than one summary type applies to the same property,
-the parent values are computed according to the first of them.
-
-[fn:56] An age can be defined as a duration, using units defined in
+[fn:18] An age can be defined as a duration, using units defined in
~org-duration-units~, e.g., =3d 1h=. If any value in the column is as
such, the summary is also expressed as a duration.
-[fn:57] Please note that the =COLUMNS= definition must be on a single
-line; it is wrapped here only because of formatting constraints.
-
-[fn:58] Contributed packages are not part of Emacs, but are
-distributed with the main distribution of Org---visit
-[[https://orgmode.org]].
-
-[fn:59] The Org date format is inspired by the standard ISO 8601
+[fn:19] The Org date format is inspired by the standard ISO 8601
date/time format. To use an alternative format, see [[*Custom time
format]]. The day name is optional when you type the date yourself.
However, any date inserted or modified by Org adds that day name, for
reading convenience.
-[fn:60] When working with the standard diary expression functions, you
+[fn:20] When working with the standard diary expression functions, you
need to be very careful with the order of the arguments. That order
depends evilly on the variable ~calendar-date-style~. For example, to
-specify a date December 12, 2005, the call might look like
+specify a date December 1, 2005, the call might look like
=(diary-date 12 1 2005)= or =(diary-date 1 12 2005)= or =(diary-date
2005 12 1)=, depending on the settings. This has been the source of
much confusion. Org mode users can resort to special versions of
-these functions like ~org-date~ or ~org-anniversary~. These work just
-like the corresponding ~diary-~ functions, but with stable ISO order
-of arguments (year, month, day) wherever applicable, independent of
-the value of ~calendar-date-style~.
+these functions, namely ~org-date~, ~org-anniversary~, ~org-cyclic, and
+~org-block~. These work just like the corresponding ~diary-~
+functions, but with stable ISO order of arguments (year, month, day)
+wherever applicable, independent of the value of
+~calendar-date-style~.
-[fn:61] See the variable ~org-read-date-prefer-future~. You may set
+[fn:21] See the variable ~org-read-date-prefer-future~. You may set
that variable to the symbol ~time~ to even make a time before now
shift the date to tomorrow.
-[fn:62] If you do not need/want the calendar, configure the variable
-~org-popup-calendar-for-date-prompt~.
-
-[fn:63] You can also use the calendar command {{{kbd(.)}}} to jump to
+[fn:22] You can also use the calendar command {{{kbd(.)}}} to jump to
today's date, but if you are inserting an hour specification for your
timestamp, {{{kbd(.)}}} will then insert a dot after the hour. By contrast,
{{{kbd(C-.)}}} will always jump to today's date.
-[fn:64] If you find this distracting, turn off the display with
-~org-read-date-display-live~.
-
-[fn:65] It will still be listed on that date after it has been marked
+[fn:23] It will still be listed on that date after it has been marked
as done. If you do not like this, set the variable
~org-agenda-skip-scheduled-if-done~.
-[fn:66] The =SCHEDULED= and =DEADLINE= dates are inserted on the line
+[fn:24] The =SCHEDULED= and =DEADLINE= dates are inserted on the line
right below the headline. Do not put any text between this line and
the headline.
-[fn:67] Note the corresponding =STARTUP= options =logredeadline=,
-=lognoteredeadline=, and =nologredeadline=.
-
-[fn:68] Note the corresponding =STARTUP= options =logreschedule=,
-=lognotereschedule=, and =nologreschedule=.
-
-[fn:69] Org does not repeat inactive timestamps, however. See
+[fn:25] Org does not repeat inactive timestamps, however. See
[[*Timestamps]].
-[fn:70] In fact, the target state is taken from, in this sequence, the
-=REPEAT_TO_STATE= property, the variable ~org-todo-repeat-to-state~ if
-it is a string, the previous TODO state if ~org-todo-repeat-to-state~
-is ~t~, or the first state of the TODO state sequence.
-
-[fn:71] You can change this using the option ~org-log-repeat~, or the
+[fn:26] You can change this using the option ~org-log-repeat~, or the
=STARTUP= options =logrepeat=, =lognoterepeat=, and =nologrepeat=.
With =lognoterepeat=, you will also be prompted for a note.
-[fn:72] Clocking only works if all headings are indented with less
+[fn:27] Clocking only works if all headings are indented with less
than 30 stars. This is a hard-coded limitation of ~lmax~ in
~org-clock-sum~.
-[fn:73] To resume the clock under the assumption that you have worked
-on this task while outside Emacs, use =(setq org-clock-persist t)=.
-
-[fn:74] To add an effort estimate "on the fly", hook a function doing
-this to ~org-clock-in-prepare-hook~.
-
-[fn:75] The last reset of the task is recorded by the =LAST_REPEAT=
-property.
-
-[fn:76] See also the variable ~org-clock-mode-line-total~.
-
-[fn:77] The corresponding in-buffer setting is: =#+STARTUP:
-lognoteclock-out=.
-
-[fn:78] When using ~:step~, ~untilnow~ starts from the beginning of
-2003, not the beginning of time.
-
-[fn:79] Language terms can be set through the variable
-~org-clock-clocktable-language-setup~.
-
-[fn:80] Note that all parameters must be specified in a single
-line---the line is broken here only to fit it into the manual.
-
-[fn:81] On computers using macOS, idleness is based on actual user
+[fn:28] On computers using macOS, idleness is based on actual user
idleness, not just Emacs' idle time. For X11, you can install a
utility program =x11idle.c=, available in the =org-contrib/=
repository, or install the xprintidle package and set it to the
@@ -21936,67 +22474,34 @@ variable ~org-clock-x11idle-program-name~ if you are running Debian,
to get the same general treatment of idleness. On other systems, idle
time refers to Emacs idle time only.
-[fn:82] Please note the pitfalls of summing hierarchical data in
-a flat list (see [[*Using Column View in the Agenda]]).
-
-[fn:83] Note the corresponding =STARTUP= options =logrefile=,
-=lognoterefile=, and =nologrefile=.
-
-[fn:84] Org used to offer four different targets for date/week tree
+[fn:29] Org used to offer four different targets for date/week tree
capture. Now, Org automatically translates these to use
~file+olp+datetree~, applying the ~:time-prompt~ and ~:tree-type~
properties. Please rewrite your date/week-tree targets using
~file+olp+datetree~ since the older targets are now deprecated.
-[fn:85] A date tree is an outline structure with years on the highest
+[fn:30] A date tree is an outline structure with years on the highest
level, months or ISO weeks as sublevels and then dates on the lowest
-level. Tags are allowed in the tree structure.
-
-[fn:86] When the file name is not absolute, Org assumes it is relative
-to ~org-directory~.
+level.
-[fn:87] If you need one of these sequences literally, escape the =%=
-with a backslash.
+#+begin_example
+,* 2022
+,** 2022-10 October
+,*** 2022-10-07 Friday
+,*** 2022-10-08 Saturday
+#+end_example
-[fn:88] If you define your own link types (see [[*Adding Hyperlink
-Types]]), any property you store with ~org-store-link-props~ can be
-accessed in capture templates in a similar way.
+Tags are allowed in the tree structure.
-[fn:89] This is always the other, not the user. See the variable
+[fn:31] This is always the other, not the user. See the variable
~org-link-from-user-regexp~.
-[fn:90] If you move entries or Org files from one directory to
-another, you may want to configure ~org-attach-id-dir~ to contain
-an absolute path.
-
-[fn:91] If the value of that variable is not a list, but a single file
-name, then the list of agenda files in maintained in that external
-file.
-
-[fn:92] When using the dispatcher, pressing {{{kbd(<)}}} before
-selecting a command actually limits the command to the current file,
-and ignores ~org-agenda-files~ until the next dispatcher command.
-
-[fn:93] For backward compatibility, you can also press {{{kbd(1)}}} to
-restrict to the current buffer.
-
-[fn:94] For backward compatibility, you can also press {{{kbd(0)}}} to
-restrict to the current region/subtree.
-
-[fn:95] For backward compatibility, the universal prefix argument
+[fn:32] For backward compatibility, the universal prefix argument
{{{kbd(C-u)}}} causes all TODO entries to be listed before the agenda.
This feature is deprecated, use the dedicated TODO list, or a block
agenda instead (see [[*Block agenda]]).
-[fn:96] The variable ~org-anniversary~ used in the example is just
-like ~diary-anniversary~, but the argument order is always according
-to ISO and therefore independent of the value of
-~calendar-date-style~.
-
-[fn:97] You can, however, disable this by setting
-~org-agenda-search-headline-for-time~ variable to a ~nil~ value.
-
-[fn:98] Custom agenda commands can preset a filter by binding one of
+[fn:33] Custom agenda commands can preset a filter by binding one of
the variables ~org-agenda-tag-filter-preset~,
~org-agenda-category-filter-preset~, ~org-agenda-effort-filter-preset~
or ~org-agenda-regexp-filter-preset~ as an option. This filter is
@@ -22006,229 +22511,97 @@ property of the entire agenda view---in a block agenda, you should
only set this in the global options section, not in the section of an
individual block.
-[fn:99] Only tags filtering is respected here, effort filtering is
-ignored.
-
-[fn:100] You can also create persistent custom functions through
-~org-agenda-bulk-custom-functions~.
-
-[fn:101] This file is parsed for the agenda when
-~org-agenda-include-diary~ is set.
-
-[fn:102] You can provide a description for a prefix key by inserting
-a cons cell with the prefix and the description.
-
-[fn:103] /Planned/ means here that these entries have some planning
+[fn:34] /Planned/ means here that these entries have some planning
information attached to them, like a time-stamp, a scheduled or
a deadline string. See ~org-agenda-entry-types~ on how to set what
planning information is taken into account.
-[fn:104] For HTML you need to install Hrvoje Nikšić's =htmlize.el=
-as an Emacs package from [[https://elpa.nongnu.org/][NonGNU ELPA]] or from [[https://github.com/hniksic/emacs-htmlize][Hrvoje Nikšić's repository]].
-
-[fn:105] To create PDF output, the Ghostscript ps2pdf utility must be
+[fn:35] To create PDF output, the Ghostscript ps2pdf utility must be
installed on the system. Selecting a PDF file also creates the
postscript file.
-[fn:106] 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.
-
-[fn:107] Quoting depends on the system you use, please check the FAQ
-for examples.
-
-[fn:108] You can turn this on by default by setting the variable
-~org-pretty-entities~, or on a per-file base with the =STARTUP= option
-=entitiespretty=.
-
-[fn:109] This behavior can be disabled with =-= export setting (see
-[[*Export Settings]]).
-
-[fn:110] LaTeX is a macro system based on Donald\nbsp{}E.\nbsp{}Knuth's TeX
+[fn:36] LaTeX is a macro system based on Donald\nbsp{}E.\nbsp{}Knuth's TeX
system. Many of the features described here as "LaTeX" are really
from TeX, but for simplicity I am blurring this distinction.
-[fn:111] When MathJax is used, only the environments recognized by
+[fn:37] When MathJax is used, only the environments recognized by
MathJax are processed. When dvipng, dvisvgm, or ImageMagick suite is
used to create images, any LaTeX environment is handled.
-[fn:112] These are respectively available at
+[fn:38] These are respectively available at
[[https://sourceforge.net/projects/dvipng/]], [[http://dvisvgm.bplaced.net/]]
and from the ImageMagick suite. Choose the converter by setting the
variable ~org-preview-latex-default-process~ accordingly.
-[fn:113] Org mode has a method to test if point is inside such
-a fragment, see the documentation of the function
-~org-inside-LaTeX-fragment-p~.
-
-[fn:114] This works automatically for the HTML backend (it requires
+[fn:39] This works automatically for the HTML backend (it requires
version 1.34 of the =htmlize.el= package, which you need to install).
Fontified code chunks in LaTeX can be achieved using either the
-[[https://www.ctan.org/pkg/listings][listings]] package or the [[https://www.ctan.org/pkg/minted][minted]] package. Refer to
-~org-latex-listings~ for details.
+[[https://www.ctan.org/pkg/listings][listings]] LaTeX package, [[https://www.ctan.org/pkg/minted][minted]] LaTeX package, or by using
+[[https://elpa.gnu.org/packages/engrave-faces.html][engrave-faces]] . Refer to ~org-latex-src-block-backend~ for details.
-[fn:115] Source code in code blocks may also be evaluated either
+[fn:40] Source code in code blocks may also be evaluated either
interactively or on export. See [[*Working with Source Code]] for more
information on evaluating code blocks.
-[fn:116] Adding =-k= to =-n -r= /keeps/ 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.
-
-[fn:117] You may select a different mode with the variable
-~org-edit-fixed-width-region-mode~.
-
-[fn:118] What Emacs considers to be an image depends on
-~image-file-name-extensions~ and ~image-file-name-regexps~.
-
-[fn:119] The variable ~org-startup-with-inline-images~ can be set
-within a buffer with the =STARTUP= options =inlineimages= and
-=noinlineimages=.
-
-[fn:120] The corresponding in-buffer setting is: =#+STARTUP: fninline=
-or =#+STARTUP: nofninline=.
-
-[fn:121] The corresponding in-buffer options are =#+STARTUP: fnadjust=
-and =#+STARTUP: nofnadjust=.
-
-[fn:122] The variable ~org-export-date-timestamp-format~ defines how
-this timestamp are exported.
-
-[fn:123] For export to LaTeX format---or LaTeX-related formats such as
+[fn:41] For export to LaTeX format---or LaTeX-related formats such as
Beamer---, the =org-latex-package-alist= variable needs further
configuration. See [[LaTeX specific export settings]].
-[fn:124] At the moment, some export back-ends do not obey this
+[fn:42] At the moment, some export back-ends do not obey this
specification. For example, LaTeX export excludes every unnumbered
headline from the table of contents.
-[fn:125] Note that ~org-link-search-must-match-exact-headline~ is
+[fn:43] Note that ~org-link-search-must-match-exact-headline~ is
locally bound to non-~nil~. Therefore, ~org-link-search~ only matches
headlines and named elements.
-[fn:126] Since commas separate the arguments, commas within arguments
+[fn:44] Since commas separate the arguments, commas within arguments
have to be escaped with the backslash character. So only those
backslash characters before a comma need escaping with another
backslash character.
-[fn:127] For a less drastic behavior, consider using a select tag (see
-[[*Export Settings]]) instead.
-
-[fn:128] If =BEAMER_ENV= is set, Org export adds =B_environment= tag
+[fn:45] If =BEAMER_ENV= is set, Org export adds =B_environment= tag
to make it visible. The tag serves as a visual aid and has no
semantic relevance.
-[fn:129] By default Org loads MathJax from [[https://cdnjs.com][cdnjs.com]] as recommended by
-[[https://www.mathjax.org][MathJax]].
-
-[fn:130] Please note that exported formulas are part of an HTML
+[fn:46] Please note that exported formulas are part of an HTML
document, and that signs such as =<=, =>=, or =&= have special
-meanings. See [[https://docs.mathjax.org/en/latest/tex.html#tex-and-latex-in-html-documents][MathJax TeX and LaTeX support]].
-
-[fn:131] See [[https://docs.mathjax.org/en/latest/tex.html#tex-extensions][TeX and LaTeX extensions]] in the [[https://docs.mathjax.org][MathJax manual]] to learn
-about extensions.
+meanings. See [[https://docs.mathjax.org/en/latest/input/tex/html.html#tex-and-latex-in-html-documents][MathJax TeX and LaTeX in HTML documents]].
-[fn:132] If the classes on TODO keywords and tags lead to conflicts,
-use the variables ~org-html-todo-kwd-class-prefix~ and
-~org-html-tag-class-prefix~ to make them unique.
-
-[fn:133] This does not allow setting different bibliography compilers
+[fn:47] This does not allow setting different bibliography compilers
for different files. However, "smart" LaTeX compilation systems, such
as latexmk, can select the correct bibliography compiler.
-[fn:134] Minted uses an external Python package for code highlighting,
-which requires the flag =-shell-escape= to be added to
-~org-latex-pdf-process~.
-
-[fn:135] See [[https://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html][Open Document Format for Office Applications
-(OpenDocument) Version 1.2]].
-
-[fn:136] See [[http://www.mathtoweb.com/cgi-bin/mathtoweb_home.pl][MathToWeb]].
-
-[fn:137] See [[https://dlmf.nist.gov/LaTeXML/]].
-
-[fn:138] [[https://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html][OpenDocument-v1.2 Specification]]
-
-[fn:139] See the =<table:table-template>= element of the
-OpenDocument-v1.2 specification.
-
-[fn:140] See the attributes =table:template-name=,
-=table:use-first-row-styles=, =table:use-last-row-styles=,
-=table:use-first-column-styles=, =table:use-last-column-styles=,
-=table:use-banding-rows-styles=, and =table:use-banding-column-styles=
-of the =<table:table>= element in the OpenDocument-v1.2 specification.
-
-[fn:141] If the publishing directory is the same as the source
-directory, =file.org= is exported as =file.org.org=, so you probably
-do not want to do this.
-
-[fn:142] The option ~org-babel-no-eval-on-ctrl-c-ctrl-c~ can be used
-to remove code evaluation from the {{{kbd(C-c C-c)}}} key binding.
-
-[fn:143] Actually, the constructs =call_<name>()= and =src_<lang>{}=
+[fn:48] Actually, the constructs =call_<name>()= and =src_<lang>{}=
are not evaluated when they appear in a keyword (see [[*Summary of
In-Buffer Settings]]).
-[fn:144] For noweb literate programming details, see
-https://www.cs.tufts.edu/~nr/noweb/.
-
-[fn:145] For more information, please refer to the commentary section
-in =org-tempo.el=.
-
-[fn:146] Org Indent mode also sets ~wrap-prefix~ correctly for
+[fn:49] Org Indent mode also sets ~wrap-prefix~ correctly for
indenting and wrapping long lines of headlines or text. This minor
mode also handles Visual Line mode and directly applied settings
through ~word-wrap~.
-[fn:147] This works, but requires extra effort. Org Indent mode is
+[fn:50] This works, but requires extra effort. Org Indent mode is
more convenient for most applications.
-[fn:148] ~org-adapt-indentation~ can also be set to ='headline-data=,
-in which case only data lines below the headline will be indented.
-
-[fn:149] Note that Org Indent mode also sets the ~wrap-prefix~
-property, such that Visual Line mode (or purely setting ~word-wrap~)
-wraps long lines, including headlines, correctly indented.
-
-[fn:150] For a server to host files, consider using a WebDAV server,
+[fn:51] For a server to host files, consider using a WebDAV server,
such as [[https://nextcloud.com][Nextcloud]]. Additional help is at this [[https://orgmode.org/worg/org-faq.html#mobileorg_webdav][FAQ entry]].
-[fn:151] If Emacs is configured for safe storing of passwords, then
-configure the variable ~org-mobile-encryption-password~; please read
-the docstring of that variable.
-
-[fn:152] Symbolic links in ~org-directory~ need to have the same name
-as their targets.
-
-[fn:153] While creating the agendas, Org mode forces =ID= properties
+[fn:52] While creating the agendas, Org mode forces =ID= properties
on all referenced entries, so that these entries can be uniquely
identified if Org Mobile flags them for further action. To avoid
setting properties configure the variable
~org-mobile-force-id-on-agenda-items~ to ~nil~. Org mode then relies
on outline paths, assuming they are unique.
-[fn:154] Checksums are stored automatically in the file
-=checksums.dat=.
-
-[fn:155] The file will be empty after this operation.
-
-[fn:156] https://www.ctan.org/pkg/comment
-
-[fn:157] By default this works only for LaTeX, HTML, and Texinfo.
+[fn:53] By default this works only for LaTeX, HTML, and Texinfo.
Configure the variable ~orgtbl-radio-table-templates~ to install
templates for other modes.
-[fn:158] If the =TBLFM= keyword contains an odd number of dollar
+[fn:54] If the =TBLFM= keyword 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~.
-
-[fn:159] The ~agenda*~ view is the same as ~agenda~ except that it
-only considers /appointments/, i.e., scheduled and deadline items that
-have a time specification =[h]h:mm= in their time-stamps.
-
-[fn:160] Note that, for ~org-odd-levels-only~, a level number
-corresponds to order in the hierarchy, not to the number of stars.