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

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

[elpa] externals-release/org bcfe6f9: ox-latex: convert verbatim text in


From: ELPA Syncer
Subject: [elpa] externals-release/org bcfe6f9: ox-latex: convert verbatim text in headings to texttt
Date: Sat, 3 Apr 2021 18:57:08 -0400 (EDT)

branch: externals-release/org
commit bcfe6f985cc791e90638d3adac8cfa81291375ae
Author: TEC <tec@tecosaur.com>
Commit: Nicolas Goaziou <mail@nicolasgoaziou.fr>

    ox-latex: convert verbatim text in headings to texttt
    
    * lisp/ox-latex.el (org-latex--protect-texttt): New function.
    (org-latex--text-markup): Use new function.
    (org-latex-headline): Convert any instances of \verb text with
    \texttt.  This is required to work around LaTeX peculiarities that
    would otherwise cause compilation to fail (see the code comment for
    more information).
---
 lisp/ox-latex.el | 41 ++++++++++++++++++++++++-----------------
 1 file changed, 24 insertions(+), 17 deletions(-)

diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index 29663b3..932f385 100644
--- a/lisp/ox-latex.el
+++ b/lisp/ox-latex.el
@@ -1521,22 +1521,23 @@ INFO is a plist used as a communication channel.  See
                 separator
                 (replace-regexp-in-string "\n" " " text)
                 separator)))
-      ;; Handle the `protectedtexttt' special case: Protect some
-      ;; special chars and use "\texttt{%s}" format string.
-      (protectedtexttt
-       (format "\\texttt{%s}"
-              (replace-regexp-in-string
-               "--\\|[\\{}$%&_#~^]"
-               (lambda (m)
-                 (cond ((equal m "--") "-{}-")
-                       ((equal m "\\") "\\textbackslash{}")
-                       ((equal m "~") "\\textasciitilde{}")
-                       ((equal m "^") "\\textasciicircum{}")
-                       (t (org-latex--protect-text m))))
-               text nil t)))
+      (protectedtexttt (org-latex--protect-texttt text))
       ;; Else use format string.
       (t (format fmt text)))))
 
+(defun org-latex--protect-texttt (text)
+  "Protect special chars, then wrap TEXT in \"\\texttt{}\"."
+  (format "\\texttt{%s}"
+          (replace-regexp-in-string
+           "--\\|[\\{}$%&_#~^]"
+           (lambda (m)
+             (cond ((equal m "--") "-{}-")
+                   ((equal m "\\") "\\textbackslash{}")
+                   ((equal m "~") "\\textasciitilde{}")
+                   ((equal m "^") "\\textasciicircum{}")
+                   (t (org-latex--protect-text m))))
+           text nil t)))
+
 (defun org-latex--delayed-footnotes-definitions (element info)
   "Return footnotes definitions in ELEMENT as a string.
 
@@ -1952,10 +1953,16 @@ holding contextual information."
           ;; Create a temporary export back-end that hard-codes
           ;; "\underline" within "\section" and alike.
           (section-back-end
-           (org-export-create-backend
-            :parent 'latex
-            :transcoders
-            '((underline . (lambda (o c i) (format "\\underline{%s}" c))))))
+            (org-export-create-backend
+             :parent 'latex
+             :transcoders
+             '((underline . (lambda (o c i) (format "\\underline{%s}" c)))
+               ;; LaTeX isn't happy when you try to use \verb inside the 
argument of other
+               ;; commands (like \section, etc.), and this causes compilation 
to fail.
+               ;; So, within headings it's a good idea to replace any 
instances of \verb
+               ;; with \texttt.
+               (code . (lambda (_ c _) (org-latex--protect-texttt c)))
+               (verbatim . (lambda (_ c _) (org-latex--protect-texttt c))))))
           (text
            (org-export-data-with-backend
             (org-element-property :title headline) section-back-end info))



reply via email to

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