diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el index 8727adc2d..f6897f9cb 100644 --- a/lisp/ox-latex.el +++ b/lisp/ox-latex.el @@ -2031,18 +2031,22 @@ TEXT is the string to transcode. INFO is a plist holding contextual information." (let ((specialp (plist-get info :with-special-strings)) (output text)) - ;; Protect %, #, &, $, ~, ^, _, { and }. - (while (string-match "\\([^\\]\\|^\\)\\([%$#&{}~^_]\\)" output) + ;; Protect %, #, &, $, ^, _, { and }. + (while (string-match "\\([^\\]\\|^\\)\\([%$#&{}^_]\\)" output) (setq output (replace-match (format "\\%s" (match-string 2 output)) nil t output 2))) ;; Protect \. If special strings are used, be careful not to ;; protect "\" in "\-" constructs. - (let ((symbols (if specialp "-%$#&{}~^_\\" "%$#&{}~^_\\"))) + (let ((symbols (if specialp "-%$#&{}^_\\" "%$#&{}^_\\"))) (setq output (replace-regexp-in-string (format "\\(?:[^\\]\\|^\\)\\(\\\\\\)\\(?:[^%s]\\|$\\)" symbols) "$\\backslash$" output nil t 1))) + ;; Protect ~. + (setq output + (replace-regexp-in-string + "\\([^\\]\\|^\\)\\(~\\)" "\\textasciitilde{}" output nil t 2)) ;; Activate smart quotes. Be sure to provide original TEXT string ;; since OUTPUT may have been modified. (when (plist-get info :with-smart-quotes)