Re: [PATCH] (v3) New LaTeX code export option: engraved

2022-05-12 Thread Timothy
Hi Daniel,

> Looks good. I had to update `engrave-faces’ to 0.3 because of new
> variables/functions and it works now. It does what it says on the box so
> let’s move forward introducing these changes and be open to feedback.
>
> Thank you very much for introducing this feature!

That’s great to hear! I’ve just tagged and pushed 0.3.1 of engrave-faces, so
HEAD is no longer required, along with my patch of ox-latex commits.

Thanks for helping with the process of getting this in, this has been over a
year in the works and so it feels fantastic to have this feature in-tree at 
last!

All the best,
Timothy


Re: [PATCH] (v3) New LaTeX code export option: engraved

2022-05-12 Thread Daniel Fleischer


Looks good. I had to update `engrave-faces' to 0.3 because of new
variables/functions and it works now. It does what it says on the box so
let's move forward introducing these changes and be open to feedback.

Thank you very much for introducing this feature!

-- 

Daniel Fleischer



Re: [PATCH] (v3) New LaTeX code export option: engraved

2022-05-11 Thread Timothy
Hi All,

I now have what I hope is the final set of patches[1].

Compared to v2 we have:
• a fix for % in captions (long standing bug)
• support for mathescaped code
• a news/manual entry for engraved
• a collection of tweaks based on Ihor’s lovely feedback 珞

I’ve also slipped in a patch to `org-latex--label' which adds the `lst:' prefix
(short for listings) to `\label's generated for source blocks. This seemed like 
a
decent idea while I was working on captions, if anyone thinks otherwise I’ll
happily leave it out.

Daniel, if you’re happy with these commits let me know and I’ll push them :)

All the best,
Timothy



Footnotes
─

[1] For getting this feature
into Org. I’m sure there will be tweaks in the future.
>From 18adbd0e1226cf3307090861e09e92bfa9cdfbf1 Mon Sep 17 00:00:00 2001
From: TEC 
Date: Sun, 21 Nov 2021 14:35:34 +0800
Subject: [PATCH 01/13] ox-latex: Refactor `org-latex-src-block'

* lisp/ox-latex.el (org-latex-src-block): Extract the per-format logic
from `org-latex-src-block' into new dedicated functions:
+ `org-latex-src-block--verbatim'
+ `org-latex-src-block--custom'
+ `org-latex-src-block--minted'
+ `org-latex-src-block--listings'
This makes `org-latex-src-block' much less monolithic, taking it from
175 lines to 30, and I find also makes it easier to understand.
---
 lisp/ox-latex.el | 339 ++-
 1 file changed, 185 insertions(+), 154 deletions(-)

diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index 841ad48bc..c2f728a1c 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -2997,164 +2997,195 @@ (defun org-latex-src-block (src-block _contents info)
 	   (float (plist-get attributes :float))
 	   (listings (plist-get info :latex-listings)))
   (cond
-   ;; Case 1.  No source fontification.
((or (not lang) (not listings))
-	(let ((caption-str (org-latex--caption/label-string src-block info))
-  (verbatim (format "\\begin{verbatim}\n%s\\end{verbatim}"
-(org-export-format-code-default src-block info
-  (cond ((string= "multicolumn" float)
- (format "\\begin{figure*}[%s]\n%s%s\n%s\\end{figure*}"
- (plist-get info :latex-default-figure-position)
- (if caption-above-p caption-str "")
- verbatim
- (if caption-above-p "" caption-str)))
-(caption (concat
-  (if caption-above-p caption-str "")
-  verbatim
-  (if caption-above-p "" (concat "\n" caption-str
-(t verbatim
-   ;; Case 2.  Custom environment.
+(org-latex-src-block--verbatim src-block info lang caption caption-above-p label
+   num-start retain-labels attributes float))
(custom-env
-	(let ((caption-str (org-latex--caption/label-string src-block info))
-  (formatted-src (org-export-format-code-default src-block info)))
-  (if (string-match-p "\\`[a-zA-Z0-9]+\\'" custom-env)
-	  (format "\\begin{%s}\n%s\\end{%s}\n"
-		  custom-env
-		  (concat (and caption-above-p caption-str)
-			  formatted-src
-			  (and (not caption-above-p) caption-str))
-		  custom-env)
-	(format-spec custom-env
-			 `((?s . ,formatted-src)
-			   (?c . ,caption)
-			   (?f . ,float)
-			   (?l . ,(org-latex--label src-block info))
-			   (?o . ,(or (plist-get attributes :options) "")))
-   ;; Case 3.  Use minted package.
+(org-latex-src-block--custom src-block info lang caption caption-above-p label
+ num-start retain-labels attributes float custom-env))
((eq listings 'minted)
-	(let* ((caption-str (org-latex--caption/label-string src-block info))
-	   (placement (or (org-unbracket-string "[" "]" (plist-get attributes :placement))
-			  (plist-get info :latex-default-figure-position)))
-	   (float-env
-		(cond
-		 ((string= "multicolumn" float)
-		  (format "\\begin{listing*}[%s]\n%s%%s\n%s\\end{listing*}"
-			  placement
-			  (if caption-above-p caption-str "")
-			  (if caption-above-p "" caption-str)))
-		 (caption
-		  (format "\\begin{listing}[%s]\n%s%%s\n%s\\end{listing}"
-			  placement
-			  (if caption-above-p caption-str "")
-			  (if caption-above-p "" caption-str)))
-		 ((string= "t" float)
-		  (concat (format "\\begin{listing}[%s]\n"
-  placement)
-			  "%s\n\\end{listing}"))
-		 (t "%s")))
-	   (options (plist-get info :latex-minted-options))
-	   (body
-		(format
-		 "\\begin{minted}[%s]{%s}\n%s\\end{minted}"
-		 ;; Options.
-		 (concat
-		  (org-latex--make-option-string
-		   (if (or (not num-start) (assoc "linenos" options))
-		   options
-		 (append
-		  `(("linenos")
-			("firstnumber" ,(number-to-string (1+ num-start
-		  options)))
-		  (let ((local-options (plist-get attributes :options)))
-