From 2efdcefd60d915aac5a940bfe54f9c088d8f8357 Mon Sep 17 00:00:00 2001
From: Vedang Manerikar <ved.manerikar@gmail.com>
Date: Sun, 1 Dec 2024 17:18:47 +0530
Subject: [PATCH] Add Latex configuration from org-mode-crate

---
 unravel-emacs.org              | 37 +++++++++++++++++++++++++++++++++-
 unravel-modules/unravel-org.el | 37 +++++++++++++++++++++++++++++++++-
 2 files changed, 72 insertions(+), 2 deletions(-)

diff --git a/unravel-emacs.org b/unravel-emacs.org
index ba5f98a..eff1c25 100644
--- a/unravel-emacs.org
+++ b/unravel-emacs.org
@@ -4037,7 +4037,7 @@ something like the following:
     :init
     ;; NOTE 2023-05-20: Must be evaluated before Org is loaded,
     ;; otherwise we have to use the Custom UI.  No thanks!
-    (setq org-export-backends '(html texinfo md))
+    (setq org-export-backends '(html texinfo md beamer))
     :config
     (setq org-export-with-toc t)
     (setq org-export-headline-levels 8)
@@ -4046,6 +4046,41 @@ something like the following:
     (setq org-html-head-include-default-style nil)
     (setq org-html-head-include-scripts nil)
     (setq org-use-sub-superscripts '{}))
+
+  (use-package ox-latex
+    :ensure nil
+    :config
+    (setq org-latex-packages-alist
+          '(("capitalize" "cleveref" nil)
+            ("" "booktabs" nil)
+            ("" "svg" nil)
+            ("" "fontspec" nil)))
+    (when (executable-find "pygmentize")
+      (add-to-list 'org-latex-packages-alist '("newfloat" "minted" nil))
+      (setq org-latex-src-block-backend 'minted))
+    (setq org-latex-reference-command "\\cref{%s}")
+    (setq org-latex-tables-booktabs t)
+    (setq org-latex-compiler "lualatex")
+    (setq org-latex-hyperref-template
+          "\\hypersetup{
+   pdfauthor={%a},
+   pdftitle={%t},
+   pdfkeywords={%k},
+   pdfsubject={%d},
+   pdfcreator={%c},
+   pdflang={%L},
+   linktoc=all,
+   colorlinks=true,
+   linkcolor=blue,
+   urlcolor=blue,
+   citecolor=blue,
+   pdfborder={0 0 1}
+   }
+  ")
+    (when (executable-find "latexmk")
+      (setq org-latex-pdf-process
+            '("latexmk -f -pdf -%latex --jobname=%b  -file-line-error --synctex=1 -shell-escape -interaction=nonstopmode -output-directory=%o %f")))
+    (setq org-image-actual-width nil))
 #+end_src
 
 ** The =unravel-org.el= Org capture templates (~org-capture~)
diff --git a/unravel-modules/unravel-org.el b/unravel-modules/unravel-org.el
index 08cbe68..b928f12 100644
--- a/unravel-modules/unravel-org.el
+++ b/unravel-modules/unravel-org.el
@@ -292,7 +292,7 @@ Skips capture tasks and tasks with subtasks"
   :init
   ;; NOTE 2023-05-20: Must be evaluated before Org is loaded,
   ;; otherwise we have to use the Custom UI.  No thanks!
-  (setq org-export-backends '(html texinfo md))
+  (setq org-export-backends '(html texinfo md beamer))
   :config
   (setq org-export-with-toc t)
   (setq org-export-headline-levels 8)
@@ -302,6 +302,41 @@ Skips capture tasks and tasks with subtasks"
   (setq org-html-head-include-scripts nil)
   (setq org-use-sub-superscripts '{}))
 
+(use-package ox-latex
+  :ensure nil
+  :config
+  (setq org-latex-packages-alist
+        '(("capitalize" "cleveref" nil)
+          ("" "booktabs" nil)
+          ("" "svg" nil)
+          ("" "fontspec" nil)))
+  (when (executable-find "pygmentize")
+    (add-to-list 'org-latex-packages-alist '("newfloat" "minted" nil))
+    (setq org-latex-src-block-backend 'minted))
+  (setq org-latex-reference-command "\\cref{%s}")
+  (setq org-latex-tables-booktabs t)
+  (setq org-latex-compiler "lualatex")
+  (setq org-latex-hyperref-template
+        "\\hypersetup{
+ pdfauthor={%a},
+ pdftitle={%t},
+ pdfkeywords={%k},
+ pdfsubject={%d},
+ pdfcreator={%c},
+ pdflang={%L},
+ linktoc=all,
+ colorlinks=true,
+ linkcolor=blue,
+ urlcolor=blue,
+ citecolor=blue,
+ pdfborder={0 0 1}
+ }
+")
+  (when (executable-find "latexmk")
+    (setq org-latex-pdf-process
+          '("latexmk -f -pdf -%latex --jobname=%b  -file-line-error --synctex=1 -shell-escape -interaction=nonstopmode -output-directory=%o %f")))
+  (setq org-image-actual-width nil))
+
 ;;;; org-capture
 (use-package org-capture
   :ensure nil