Re: [FR] Please add custom command variable to org-latex-footnote-refere

2024-04-21 Thread Alexander Gogl
Dear Ihor,

you mean like this?

>From 1c7bee53ac91a8296c144f157ab8646b1a7a6595 Mon Sep 17 00:00:00 2001
From: Alexander Gogl 
Date: Wed, 17 Apr 2024 16:00:41 +0200
Subject: [PATCH] added option to customize latex footnote command in export

---
 etc/ORG-NEWS |  4 
 lisp/ox-latex.el | 14 --
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index e61bd6988..a579260f5 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -999,6 +999,10 @@ 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~
+
+This new option allows you to define the LaTeX command the  org-mode footnotes are converted to (for example ~\\sidenote{%s%s}~).
+
 ** New features
 *** =colview= dynamic block now writes column width specifications
 
diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index 5c19e1fe7..b45d13ca2 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -135,6 +135,9 @@
 (: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-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)
@@ -667,6 +670,14 @@ The function result will be used in the section format string."
 
  Footnotes
 
+(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."
+  :group 'org-export-latex
+  :version "24.4"  ;; FIXME enter correct version
+  :package-version '(Org . "9.7")
+  :type 'string)
+
 (defcustom org-latex-footnote-separator "\\textsuperscript{,}\\,"
   "Text used to separate footnotes."
   :group 'org-export-latex
@@ -780,7 +791,6 @@ default we use here encompasses both."
   :group 'org-export-latex
   :type 'string)
 
-
  Tables
 
 (defcustom org-latex-default-table-environment "tabular"
@@ -2239,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 "\\footnote{%s%s}" (org-trim (org-export-data def info))
+	  (format org-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

>From 12d211a5f0c56faf1b829fef26f788f210a31382 Mon Sep 17 00:00:00 2001
From: Alexander Gogl 
Date: Wed, 17 Apr 2024 21:22:51 +0200
Subject: [PATCH] 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 custom

Re: [FR] Please add custom command variable to org-latex-footnote-refere

2024-04-21 Thread Alexander Gogl
Hi Pedro,
dear community,

I have tested the global and buffer local options with kaoscript and the 
article class. I could't find any problems with the option. Labels and 
footnotes inside footnotes work.

The current version of the patch (fixed a typo) is attached.

>From 7ff2baa24dbcfa0675d8e797746f6f2965c19a8c Mon Sep 17 00:00:00 2001
From: Alexander Gogl 
Date: Sun, 21 Apr 2024 10:41:54 +0200
Subject: [PATCH 3/3] lisp/ox-latex.el: Fixed typo

* /ox-latex.el (org-latex-default-footnote-command): fixed typo in
description of option

TINYCHANGE
---
 lisp/ox-latex.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index 058b5a31a..22a9595ab 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -671,7 +671,7 @@ 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
-  command like `\sidenote{%s%s}' that you want to use.
+  command like `\\sidenote{%s%s}' that you want to use.
 %s
 "
   :group 'org-export-latex
-- 
2.41.0

>From 12d211a5f0c56faf1b829fef26f788f210a31382 Mon Sep 17 00:00:00 2001
From: Alexander Gogl 
Date: Wed, 17 Apr 2024 21:22:51 +0200
Subject: [PATCH 2/3] 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."
   (

Re: [FR] Please add custom command variable to org-latex-footnote-refere

2024-04-20 Thread Alexander Gogl
Hi Pedro,

thank you for the early-init.el suggestion. However, it doesn' work for me. I 
still get the following error (even in vanilla emacs):

..
⛔ Warning (emacs): Org version mismatch.  Org loading aborted.
This warning usually appears when a built-in Org version is loaded
prior to the more recent Org version.

Version mismatch is commonly encountered in the following situations:
...
..

Maybe it has to do with the Mac OS Port "emacs-plus" 
(https://github.com/d12frosted/homebrew-emacs-plus) I am using?

I will test your concern as soon as I am able to solve the org version mismatch 
error.


Best

Alexander

"Pedro A. Aranda"  --- 2024-04-20 Sa 09:04:

> /Hi, Alexander Gogl  writes: /> ox-latex: New 
> option to customize LaTeX footnote command
>
> I hope you are aware that with your patch you are not going to be aware to 
> pass
> extra options to your foot or side notes, right? And since I'm not familiar 
> with
> kaobook, just a question. Are you sure that the foot and side notes will not 
> choke
> at a \label{} inside the text?
> //> PS: I have a hard time to setup an environment to test the patch because
>> my Spacemacs configuration conflicts with the Org mode development
>> version. Can anyone provide me a link to a ressource that describes the
>> procedure?
>
> I'm running on a vanilla Emacs and
>
> ---cut here --
> (let ((org-devel-path (expand-file-name "~/Devel/org-mode/lisp")))
>   (when (file-directory-p org-devel-path)
> ;; (message "Adding %s to load-path" org-devel-path)
> (add-to-list 'load-path  org-devel-path)))
> ---cut here --
>
> in my .emacs.d/early-init.el does the job. I have a general Devel directyl 
> for my development jobs.
>
> Hope it helps, /PA
>
> PS: Cool kaobook. I've used koma-script for most of my LaTeX work in the last 
> 15 years +/- ;-) though.




Re: [FR] Please add custom command variable to org-latex-footnote-reference

2024-04-17 Thread Alexander Gogl
Dear Ihor,

thank's for your advice! Here is the updated patch. Now it works.

..
ox-latex: New option to customize LaTeX footnote command

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.
..

>From 1c7bee53ac91a8296c144f157ab8646b1a7a6595 Mon Sep 17 00:00:00 2001
From: Alexander Gogl 
Date: Wed, 17 Apr 2024 16:00:41 +0200
Subject: [PATCH 1/2] added option to customize latex footnote command in
 export

---
 etc/ORG-NEWS |  4 
 lisp/ox-latex.el | 14 --
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index e61bd6988..a579260f5 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -999,6 +999,10 @@ 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~
+
+This new option allows you to define the LaTeX command the  org-mode footnotes are converted to (for example ~\\sidenote{%s%s}~).
+
 ** New features
 *** =colview= dynamic block now writes column width specifications
 
diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index 5c19e1fe7..b45d13ca2 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -135,6 +135,9 @@
 (: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-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)
@@ -667,6 +670,14 @@ The function result will be used in the section format string."
 
  Footnotes
 
+(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."
+  :group 'org-export-latex
+  :version "24.4"  ;; FIXME enter correct version
+  :package-version '(Org . "9.7")
+  :type 'string)
+
 (defcustom org-latex-footnote-separator "\\textsuperscript{,}\\,"
   "Text used to separate footnotes."
   :group 'org-export-latex
@@ -780,7 +791,6 @@ default we use here encompasses both."
   :group 'org-export-latex
   :type 'string)
 
-
  Tables
 
 (defcustom org-latex-default-table-environment "tabular"
@@ -2239,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 "\\footnote{%s%s}" (org-trim (org-export-data def info))
+	  (format org-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

>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
@@ -

Babel: Map =verbatim= to textsc on LaTeX-export

2023-12-06 Thread Alexander Gogl
Hi,

I would like to export all =verbatim= marked text as small caps \textsc{} in 
org-latex export. Code markup should be kept as verbatim, though.

I wasn't able to find any help in the org documentation, nor in the ob 
customization in Emacs. I would appreciate it, If anybody has an idea how I 
could make that work.


Best,

Alexander



[FR] Please add custom command variable to org-latex-footnote-reference

2023-12-05 Thread Alexander Gogl
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