From 12d211a5f0c56faf1b829fef26f788f210a31382 Mon Sep 17 00:00:00 2001 From: Alexander Gogl Date: Wed, 17 Apr 2024 21:22:51 +0200 Subject: [PATCH 2/2] ox-latex: New option to customize LaTeX footnote command * lisp/ox-latex.el (org-export-define-backend): Add option. (org-latex-default-footnote-command): New custom variable. (org-latex-footnote-reference): Replace string "\\footnote{%s%s}" with custom variable. * etc/ORG-NEWS (New and changed options): Add description to option. 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. My proposal is in the attachment. Modified from a feature request by Alexander Gogl. TINYCHANGE --- etc/ORG-NEWS | 12 ++++++++++-- lisp/ox-latex.el | 12 ++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index a579260f5..571ab3c98 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -999,9 +999,17 @@ even though it does not have its own ID. By giving files top-level id properties, links to headlines in the file can also be made more robust by using the file id instead of the file path. -*** New option ~latex-default-footnote-command~ +*** New option ~latex-default-footnote-command~ to customize the LaTeX footnote command -This new option allows you to define the LaTeX command the org-mode footnotes are converted to (for example ~\\sidenote{%s%s}~). +This new option allows you to define the LaTeX command the Org mode +footnotes are converted to (for example ~\sidenote{%s%s}~ instead of +the default ~\footnote{%s%s}~). + +The option can be customized either by + +a) setting the global variable in the ~org-export-latex~ customization + group or +b) by setting the file local variable ~LATEX_FOOTNOTE_COMMAND~ ** New features *** =colview= dynamic block now writes column width specifications diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el index b45d13ca2..058b5a31a 100644 --- a/lisp/ox-latex.el +++ b/lisp/ox-latex.el @@ -135,9 +135,7 @@ (:latex-default-table-environment nil nil org-latex-default-table-environment) (:latex-default-quote-environment nil nil org-latex-default-quote-environment) (:latex-default-table-mode nil nil org-latex-default-table-mode) - ;; TODO implement options variable - (:latex-default-footnote-command "\\footnote{%s%s}" nil org-latex-default-footnote-command) - ;; + (:latex-default-footnote-command "LATEX_FOOTNOTE_COMMAND" nil org-latex-default-footnote-command t) (:latex-diary-timestamp-format nil nil org-latex-diary-timestamp-format) (:latex-engraved-options nil nil org-latex-engraved-options) (:latex-engraved-preamble nil nil org-latex-engraved-preamble) @@ -672,9 +670,11 @@ The function result will be used in the section format string." (defcustom org-latex-default-footnote-command "\\footnote{%s%s}" "Default command used to insert footnotes. - Customize this command if the LaTeX class provides a different notation command like `\\sidenote{%s%s}' that you want to use." + Customize this command if the LaTeX class provides a different + command like `\sidenote{%s%s}' that you want to use. +%s +" :group 'org-export-latex - :version "24.4" ;; FIXME enter correct version :package-version '(Org . "9.7") :type 'string) @@ -2249,7 +2249,7 @@ CONTENTS is nil. INFO is a plist holding contextual information." (t (let ((def (org-export-get-footnote-definition footnote-reference info))) (concat - (format org-latex-default-footnote-command (org-trim (org-export-data def info)) + (format (plist-get info :latex-default-footnote-command) (org-trim (org-export-data def info)) ;; Only insert a \label if there exist another ;; reference to def. (cond ((not label) "") -- 2.41.0