Browse Source

org-e-latex: Make headlines more robust in toc

* contrib/lisp/org-e-latex.el (org-e-latex-headline): Allow curly
  brackets and replace square brackets with parenthesis in table of
  contents when tags are removed.
Nicolas Goaziou 13 years ago
parent
commit
a69e6b6225
1 changed files with 27 additions and 15 deletions
  1. 27 15
      contrib/lisp/org-e-latex.el

+ 27 - 15
contrib/lisp/org-e-latex.el

@@ -1385,21 +1385,33 @@ holding contextual information."
 	   (format "\n\\\\end{%s}" (if numberedp 'enumerate 'itemize))
 	   low-level-body))))
      ;; Case 3. Standard headline.  Export it as a section.
-     (t (let ((sec-command
-	       (format section-fmt full-text
-		       (concat headline-label pre-blanks contents))))
-	  ;; If tags should be removed from table of contents, insert
-	  ;; title without tags as an alternative heading in
-	  ;; sectioning command.
-	  (if (and tags (eq (plist-get info :with-tags) 'not-in-toc))
-	      (replace-regexp-in-string
-	       "\\`\\\\\\(.*?\\){"
-	       (lambda (s)
-		 (concat (match-string 1 s)
-			 (format "[%s]" full-text-no-tag)))
-	       sec-command nil nil 1)
-	    ;; Otherwise, don't bother with alternative heading.
-	    sec-command))))))
+     (t
+      (cond
+       ((not (and tags (eq (plist-get info :with-tags) 'not-in-toc)))
+	;; Regular section.  Use specified format string.
+	(format section-fmt full-text
+		(concat headline-label pre-blanks contents)))
+       ((string-match "\\`\\\\\\(.*?\\){" section-fmt)
+	;; If tags should be removed from table of contents, insert
+	;; title without tags as an alternative heading in sectioning
+	;; command.
+	(format (replace-match (concat (match-string 1 section-fmt) "[%s]")
+			       nil nil section-fmt 1)
+		;; Replace square brackets with parenthesis since
+		;; square brackets are not supported in optional
+		;; arguments.
+		(replace-regexp-in-string
+		 "\\[" "("
+		 (replace-regexp-in-string
+		  "\\]" ")"
+		  full-text-no-tag))
+		full-text
+		(concat headline-label pre-blanks contents)))
+       (t
+	;; Impossible to add an alternative heading.  Fallback to
+	;; regular sectioning format string.
+	(format section-fmt full-text
+		(concat headline-label pre-blanks contents))))))))
 
 
 ;;;; Horizontal Rule