summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2021-04-04 00:18:04 +0200
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2021-04-04 00:18:04 +0200
commitc881b60593b3beeed7b8c7a2bada64157cd9940a (patch)
treecb0a6c6113315ec23bd252b1236e8bb766a739f8
parent635920c730e861ca667b99358c7b4f3b153bce0f (diff)
parentbcfe6f985cc791e90638d3adac8cfa81291375ae (diff)
downloadorg-mode-c881b60593b3beeed7b8c7a2bada64157cd9940a.tar.gz
Merge branch 'maint'
-rw-r--r--lisp/ox-latex.el41
1 files changed, 24 insertions, 17 deletions
diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
index da3c3f8..f492ebb 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.
@@ -1954,10 +1955,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))