emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/engrave-faces 2c72619195: Fix engraving of whitespace i


From: ELPA Syncer
Subject: [elpa] externals/engrave-faces 2c72619195: Fix engraving of whitespace in LaTeX export
Date: Sun, 15 Jan 2023 10:57:42 -0500 (EST)

branch: externals/engrave-faces
commit 2c72619195d489a4f6d5370f70dd7f6aa11801c3
Author: Gerard Vermeulen <gerard.vermeulen@neel.cnrs.fr>
Commit: TEC <git@tecosaur.net>

    Fix engraving of whitespace in LaTeX export
    
    To prevent LaTeX's undesirable folding of whitespace, it's good to
    ensure the styling commands wrap around whitespace conservatively.
---
 engrave-faces-latex.el | 26 +++++++++++++++++++++-----
 1 file changed, 21 insertions(+), 5 deletions(-)

diff --git a/engrave-faces-latex.el b/engrave-faces-latex.el
index 8c91178e51..7df39a151c 100644
--- a/engrave-faces-latex.el
+++ b/engrave-faces-latex.el
@@ -150,11 +150,27 @@ When THEME is given, the style used is obtained from 
`engrave-faces-get-theme'."
                #'engrave-faces-latex--protect-content-mathescape
              #'engrave-faces-latex--protect-content)
            content)))
-    (if (string-match-p "\\`[\n[:space:]]+\\'" content)
-        protected-content
-      (if (and style (eq engrave-faces-latex-output-style 'preset))
-          (concat "\\EF" (plist-get (cdr style) :slug) "{" protected-content 
"}")
-        (engrave-faces-latex-face-apply faces protected-content)))))
+    ;; Wrap groups of "words joined by blank characters" in LaTeX commands.
+    ;; Do not wrap newlines and other whitespace between those groups.
+    (let ((contains-blank-re
+           (rx (or (group (+ graph ) (* (+ blank) (+ graph)))
+                   (group (+ (any "\n" space))))))
+          (slug (and style
+                     (eq engrave-faces-latex-output-style 'preset)
+                     (plist-get (cdr style) :slug))))
+      (with-temp-buffer
+        (insert protected-content)
+        (goto-char (point-min))
+        (while (re-search-forward contains-blank-re nil t)
+          (replace-match
+           (concat
+            (and (match-string 1)
+                 (if (stringp slug)
+                     (format "\\EF%s{%s}" slug (match-string 1))
+                   (engrave-faces-latex-face-apply faces (match-string 1))))
+            (match-string 2))
+           t t))
+        (buffer-string)))))
 
 (defun engrave-faces-latex--post-processing ()
   "Set the initial text color and curly paren positioning.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]