[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}