diff options
author | Kyle Meyer <kyle@kyleam.com> | 2022-11-29 23:05:53 -0500 |
---|---|---|
committer | Kyle Meyer <kyle@kyleam.com> | 2022-11-29 23:05:53 -0500 |
commit | 0625651e8a61c9effc31ff771f15885a3a37c6e6 (patch) | |
tree | db4c09e8ef119ad4a9a4028c5e615fd58d2dee69 /doc | |
parent | edd64e64a389e0f0e6ce670846d4fae79a9d8b35 (diff) | |
download | emacs-0625651e8a61c9effc31ff771f15885a3a37c6e6.tar.gz |
Update to Org 9.6-3-ga4d38e
Diffstat (limited to 'doc')
-rw-r--r-- | doc/misc/org-setup.org | 2 | ||||
-rw-r--r-- | doc/misc/org.org | 2265 |
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 = = 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 LaTeXML[fn:137] instead, + or, to use LaTeXML[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. |