org.nvim

Footnotes

References: [fn:1], [fn:name], inline [fn::text] and [fn:name:text]. Definitions start a line with [fn:name].

<prefix>if      On a footnote: jump between reference and definition.
<C-c><C-x>f     Elsewhere: insert a new footnote after the cursor
                (org-footnote-new). Its label is the first unused number,
                or follows footnote_auto_label: false asks (an
                existing label only adds a reference, empty makes it
                anonymous), "confirm" asks with the number as default,
                "random", "anonymous" ([fn:: ]). The definition goes
                first in the footnote_section heading (* Footnotes,
                created at the end of the file after a blank line when
                missing), at the end of the current section when
                footnote_section = false, or inline ([fn:1: ]) with
                footnote_define_inline. With footnote_auto_adjust
                (true, "sort", "renumber") footnotes are then
                renumbered and / or sorted.
                With a count (C-u C-c C-x f), a menu (org-footnote-action):
                  s  sort definitions in reference order
                  r  renumber fn:N labels in reference order
                  S  renumber, then sort
                  n  normalize: number every footnote and turn inline
                     footnotes into regular definitions
                  d  delete the footnote at the cursor (references and
                     definition)
<CR>            On a reference: jump to its definition (offers to create a
                missing one). On a definition: jump back to the reference.

Sorting and normalizing rebuild the footnote section at the end of the file with a blank line before each definition, like org-footnote-sort. The #+STARTUP: words fnlocal (footnote_section = false), fnauto, fnprompt, fnconfirm, fnplain, fnanon, fnadjust, nofnadjust, fninline and nofninline override the options for a file.

Citations ~ Citations [cite/STYLE:prefix;@key suffix;...] refer to entries of the bibliography files: #+BIBLIOGRAPHY: keywords (BibTeX .bib/.bibtex or CSL-JSON .json, relative to the file; setup files included) and export.cite.global_bibliography. See org-export-cite for export.

<prefix>i@      Insert a citation at the cursor, or edit the one at the
<C-c><C-x>@     cursor (org-cite-insert). Keys are chosen from the
                bibliography, shown as author, year and title columns
                (export.cite.basic_author_column_end 25,
                basic_column_separator "  "); a new citation asks for keys
                until the prompt is cancelled, or, with
                basic_complete_key_crm_separator (a Vim regexp such as
                "[ \t]*;;[ \t]*", or "dynamic" for the shortest ";;..."
                that no candidate contains), reads the "author year title"
                strings at one prompt. On a key: replace it; right before its "@": add a
                key before it; after the key: add one after it. On the
                style part ([cite/t:): change the style; on the global
                prefix / suffix: add a key first / last. With a count
                (C-u): delete the reference or citation at the cursor, or
                choose a style for a new citation.
<CR>            On a citation: open the bibliography file at the entry of
                the key (org-cite-follow); on the style or global affixes of
                a citation with several keys, choose the key first.
<LeftRelease>   A click on a known key opens its entry; on an unknown key,
                replace it with a key at most
                export.cite.basic_max_key_distance (2) edits away, or
                insert one when none is close (Emacs mouse-1 on a key).

Citations are highlighted with OrgCite and their keys with OrgCiteKey; keys missing from the bibliography get OrgCiteKeyUnknown (Emacs error face). export.cite.activate_processor, follow_processor and insert_processor ("basic") pick the processor of each capability; false turns insertion / following off, and highlights without checking keys. Other processors can be registered with require("org.cite").register_processor(name, { activate, follow, insert }).