Browse Source

LaTeX export: Fix problem with subscripts in emphasis

Eric Fraga sent this test file:

> * Problem with underscore (subscript) in emphasised text.
>   1. Design for CO_2 capture.
>   2. The paper /Design for CO_2 capture/ is very interesting.
>   3. This item is combined with the previous and the previous is
>      actually formatted wrongly.
>   4. This item seems to come out just fine.
Carsten Dominik 16 years ago
parent
commit
1c142da592
1 changed files with 11 additions and 4 deletions
  1. 11 4
      lisp/org-latex.el

+ 11 - 4
lisp/org-latex.el

@@ -1469,7 +1469,7 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
 		       org-export-latex-emphasis-alist))
 		       org-export-latex-emphasis-alist))
 	  (beg (match-beginning 0))
 	  (beg (match-beginning 0))
 	  (end (match-end 0))
 	  (end (match-end 0))
-	  rpl)
+	  rpl s)
       (unless emph
       (unless emph
 	(message "`org-export-latex-emphasis-alist' has no entry for formatting triggered by \"%s\""
 	(message "`org-export-latex-emphasis-alist' has no entry for formatting triggered by \"%s\""
 		 (match-string 3)))
 		 (match-string 3)))
@@ -1482,12 +1482,20 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
 		      (and (org-at-table-p)
 		      (and (org-at-table-p)
 			   (string-match
 			   (string-match
 			    "[|\n]" (buffer-substring beg end))))))
 			    "[|\n]" (buffer-substring beg end))))))
+	(setq s (match-string 4))
 	(setq rpl (concat (match-string 1)
 	(setq rpl (concat (match-string 1)
 			  (org-export-latex-emph-format (cadr emph)
 			  (org-export-latex-emph-format (cadr emph)
 							(match-string 4))
 							(match-string 4))
 			  (match-string 5)))
 			  (match-string 5)))
 	(if (caddr emph)
 	(if (caddr emph)
-	    (setq rpl (org-export-latex-protect-string rpl)))
+	    (setq rpl (org-export-latex-protect-string rpl))
+	  (save-match-data
+	    (if (string-match "\\`.\\(\\\\[a-z]+{\\)\\(.*\\)\\(}\\).\\'" rpl)
+		(progn
+		  (add-text-properties (match-beginning 1) (match-end 1)
+				       '(org-protected t) rpl)
+		  (add-text-properties (match-beginning 3) (match-end 3)
+				       '(org-protected t) rpl)))))
 	(replace-match rpl t t)))
 	(replace-match rpl t t)))
     (backward-char)))
     (backward-char)))
 
 
@@ -1520,8 +1528,7 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
 	    (setq char (or (cdr (assoc char trans)) (concat "\\" char))
 	    (setq char (or (cdr (assoc char trans)) (concat "\\" char))
 		  rtn (concat rtn char)))
 		  rtn (concat rtn char)))
 	  (setq string (concat rtn string) format "\\texttt{%s}")))))
 	  (setq string (concat rtn string) format "\\texttt{%s}")))))
-  (setq string (org-export-latex-protect-string
-		(format format string))))
+  (format format string))
 
 
 (defun org-export-latex-links ()
 (defun org-export-latex-links ()
   ;; Make sure to use the LaTeX hyperref and graphicx package
   ;; Make sure to use the LaTeX hyperref and graphicx package