diff options
author | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2021-04-04 00:18:04 +0200 |
---|---|---|
committer | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2021-04-04 00:18:04 +0200 |
commit | c881b60593b3beeed7b8c7a2bada64157cd9940a (patch) | |
tree | cb0a6c6113315ec23bd252b1236e8bb766a739f8 | |
parent | 635920c730e861ca667b99358c7b4f3b153bce0f (diff) | |
parent | bcfe6f985cc791e90638d3adac8cfa81291375ae (diff) | |
download | org-mode-c881b60593b3beeed7b8c7a2bada64157cd9940a.tar.gz |
Merge branch 'maint'
-rw-r--r-- | lisp/ox-latex.el | 41 |
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)) |