emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [FR] Please add custom command variable to org-latex-footnote-reference
@ 2023-11-30 14:00 Alexander Gogl
  2023-12-08 22:16 ` Ihor Radchenko
  0 siblings, 1 reply; 4+ messages in thread
From: Alexander Gogl @ 2023-11-30 14:00 UTC (permalink / raw)
  To: emacs-orgmode

Hello,

some LaTeX classes define their own footnote commands. For example, kaobook (https://github.com/fmarotta/kaobook/blob/master/example_and_documentation.pdf) has \footnotes and \sidenotes, whereby sidenotes (notes are put into the outter margin) are the dominant form of putting notes in kaobook.

It would be great if you could make the footnote command in the footnote function customizable. It could look like this:

;; Replace footnote function to make the latex footnote command customizable
(setq org-latex-footnote-command "\\footnote{%s%s}")

(defun org-latex-footnote-reference (footnote-reference _contents info)
"Transcode a FOOTNOTE-REFERENCE element from Org to LaTeX.
CONTENTS is nil.  INFO is a plist holding contextual information."
(let ((label (org-element-property :label footnote-reference)))
(concat
;; Insert separator between two footnotes in a row.
(let ((prev (org-export-get-previous-element footnote-reference info)))
(when (eq (org-element-type prev) 'footnote-reference)
(plist-get info :latex-footnote-separator)))
(cond
;; Use `:latex-footnote-defined-format' if the footnote has
;; already been defined.
((not (org-export-footnote-first-reference-p footnote-reference info))
(format (plist-get info :latex-footnote-defined-format)
(org-latex--label
(org-export-get-footnote-definition footnote-reference info)
info t)))
;; Use \footnotemark if reference is within another footnote
;; reference, footnote definition, table cell, verse block, or
;; item's tag.
((or (org-element-lineage footnote-reference
'(footnote-reference footnote-definition
table-cell verse-block))
(eq 'item (org-element-type
(org-export-get-parent-element footnote-reference))))
"\\footnotemark")
;; Otherwise, define it with \footnote command.
(t
(let ((def (org-export-get-footnote-definition footnote-reference info)))
(concat
(format org-latex-footnote-command (org-trim (org-export-data def info))
;; Only insert a \label if there exist another
;; reference to def.
(cond ((not label) "")
((org-element-map (plist-get info :parse-tree)
'footnote-reference
(lambda (f)
(and (not (eq f footnote-reference))
(equal (org-element-property :label f) label)
(org-trim (org-latex--label def info t t))))
info t))
(t "")))
;; Retrieve all footnote references within the footnote and
;; add their definition after it, since LaTeX doesn't support
;; them inside.
(org-latex--delayed-footnotes-definitions def info))))))))


Best,

Alexander


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-04-17 19:39 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-30 14:00 [FR] Please add custom command variable to org-latex-footnote-reference Alexander Gogl
2023-12-08 22:16 ` Ihor Radchenko
     [not found]   ` <m2msuhdnt4.fsf@pc75-c847.uibk.ac.at>
     [not found]     ` <87y1chwmut.fsf@localhost>
     [not found]       ` <m25xzk8h8q.fsf@gmail.com>
     [not found]         ` <875xzig0jy.fsf@localhost>
     [not found]           ` <m27cgw3wvx.fsf@gmail.com>
2024-04-17 16:21             ` Ihor Radchenko
2024-04-17 19:32               ` Alexander Gogl

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).