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

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

[elpa] externals/engrave-faces 04e55d1d3a 4/5: fix: implementation mista


From: ELPA Syncer
Subject: [elpa] externals/engrave-faces 04e55d1d3a 4/5: fix: implementation mistakes in LaTeX mathescape
Date: Tue, 10 May 2022 12:57:32 -0400 (EDT)

branch: externals/engrave-faces
commit 04e55d1d3a2290cf777f2c8cc681dcd4e4993c33
Author: TEC <tec@tecosaur.com>
Commit: TEC <tec@tecosaur.com>

    fix: implementation mistakes in LaTeX mathescape
---
 engrave-faces-latex.el | 39 ++++++++++++++++++++++-----------------
 1 file changed, 22 insertions(+), 17 deletions(-)

diff --git a/engrave-faces-latex.el b/engrave-faces-latex.el
index d5ca085f3e..5e4dacf399 100644
--- a/engrave-faces-latex.el
+++ b/engrave-faces-latex.el
@@ -90,29 +90,34 @@ See `engrave-faces-preset-styles' and 
`engrave-faces-latex-output-style'."
        (when bg "}") (when fg "}") (when st "}") (when bl "}") (when it 
"}")))))
 
 (defconst engrave-faces-latex--char-replacements
-  '(("\\" . "\\char92{}")
+  '(("\\\\" . "\\char92{}")
     ("^" . "\\char94{}")
     ("~" . "\\char126{}")))
 
 (defun engrave-faces-latex--protect-content (content)
   (replace-regexp-in-string
-   "[\\{}$%&_#]" "\\\\\\&"
+   (regexp-opt (mapcar #'car engrave-faces-latex--char-replacements))
+   (lambda (char)
+     (cdr (assoc char engrave-faces-latex--char-replacements)))
    (replace-regexp-in-string
-    (regexp-opt (mapcar #'car engrave-faces-latex--char-replacements))
-    (lambda (char)
-      (cdr (assoc char engrave-faces-latex--char-replacements)))
-    content
-    nil t)))
+    "[\\{}$%&_#]" "\\\\\\&"
+    content)
+   nil t))
 
 (defun engrave-faces-latex--protect-content-mathescape (content)
-  (replace-regexp-in-string
-   "\\`\\([^$]*\\)\\(\\$.+\\$\\)\\([^$]*\\)\\'"
-   (lambda (full-match)
-     (concat (engrave-faces-latex--protect-content (match-string 1 full-match))
-             (match-string 2 full-match)
-             (engrave-faces-latex--protect-content (match-string 3 
full-match))))
-   content
-   nil t))
+  (let ((dollar-maths (string-match-p "\\$.+\\$" content))
+        (paren-maths (string-match-p "\\\\(.+\\\\)" content)))
+    (replace-regexp-in-string
+     (cond
+      (dollar-maths "^\\([^$]*\\)\\(\\$.+\\$\\)\\([^$]*\\)$")
+      (paren-maths "^\\(.*?\\)\\(\\\\(.+\\\\)\\)\\(.*?\\)$")
+      (t "^\\(.*\\)\\(\\)\\(\\)$"))
+     (lambda (full-match)
+       (concat (engrave-faces-latex--protect-content (match-string 1 
full-match))
+               (match-string 2 full-match)
+               (engrave-faces-latex--protect-content (match-string 3 
full-match))))
+     content
+     nil t)))
 
 (defun engrave-faces-latex-face-mapper (faces content)
   "Create a LaTeX representation of CONTENT With FACES applied."
@@ -159,8 +164,8 @@ Trailing curly parens are sometimes put on the next line, 
and need to be moved b
 \\begin{document}
 \\setlength{\\fboxsep}{0pt}
 \\begin{Verbatim}[breaklines=true, commandchars=\\\\\\{\\}"
-          (when engrave-faces-latex-mathescape
-            ", mathescape")
+          (if engrave-faces-latex-mathescape
+            ", mathescape" "")
           "]\n")
   (goto-char (point-max))
   (insert "\\end{Verbatim}



reply via email to

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