]> code.delx.au - gnu-emacs/blobdiff - lisp/org/org-latex.el
Add 2012 to FSF copyright years for Emacs files
[gnu-emacs] / lisp / org / org-latex.el
index 7abf85a7092c8940849b3ee4effc6e2068ecf900..ba7f8fd625976444b5ba86009120c1a01e35893a 100644 (file)
@@ -1,11 +1,10 @@
 ;;; org-latex.el --- LaTeX exporter for org-mode
 ;;
 ;;; org-latex.el --- LaTeX exporter for org-mode
 ;;
-;; Copyright (C) 2007-2011 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2012 Free Software Foundation, Inc.
 ;;
 ;; Emacs Lisp Archive Entry
 ;; Filename: org-latex.el
 ;;
 ;; Emacs Lisp Archive Entry
 ;; Filename: org-latex.el
-;; Version: 7.7
-;; Author: Bastien Guerry <bzg AT altern DOT org>
+;; Author: Bastien Guerry <bzg AT gnu DOT org>
 ;; Maintainer: Carsten Dominik <carsten.dominik AT gmail DOT com>
 ;; Keywords: org, wp, tex
 ;; Description: Converts an org-mode buffer into LaTeX
 ;; Maintainer: Carsten Dominik <carsten.dominik AT gmail DOT com>
 ;; Keywords: org, wp, tex
 ;; Description: Converts an org-mode buffer into LaTeX
@@ -74,7 +73,6 @@
          org-deadline-string "\\|"
          org-closed-string"\\)")
   "Regexp matching special time planning keywords plus the time after it.")
          org-deadline-string "\\|"
          org-closed-string"\\)")
   "Regexp matching special time planning keywords plus the time after it.")
-
 (defvar org-re-quote)  ; dynamically scoped from org.el
 (defvar org-commentsp) ; dynamically scoped from org.el
 
 (defvar org-re-quote)  ; dynamically scoped from org.el
 (defvar org-commentsp) ; dynamically scoped from org.el
 
@@ -359,6 +357,12 @@ string defines the replacement string for this quote."
   :group 'org-export-latex
   :type 'boolean)
 
   :group 'org-export-latex
   :type 'boolean)
 
+(defcustom org-export-latex-table-caption-above t
+  "When non-nil, the caption is set above the table.  When nil,
+the caption is set below the table."
+  :group 'org-export-latex
+  :type 'boolean)
+
 (defcustom org-export-latex-tables-column-borders nil
   "When non-nil, grouping columns can cause outer vertical lines in tables.
 When nil, grouping causes only separation lines between groups."
 (defcustom org-export-latex-tables-column-borders nil
   "When non-nil, grouping columns can cause outer vertical lines in tables.
 When nil, grouping causes only separation lines between groups."
@@ -402,7 +406,7 @@ will pass them (combined with the LaTeX default list parameters) to
   :type 'plist)
 
 (defcustom org-export-latex-verbatim-wrap
   :type 'plist)
 
 (defcustom org-export-latex-verbatim-wrap
-  '("\\begin{verbatim}\n" . "\\end{verbatim}\n")
+  '("\\begin{verbatim}\n" . "\\end{verbatim}")
   "Environment to be wrapped around a fixed-width section in LaTeX export.
 This is a cons with two strings, to be added before and after the
 fixed-with text.
   "Environment to be wrapped around a fixed-width section in LaTeX export.
 This is a cons with two strings, to be added before and after the
 fixed-with text.
@@ -594,7 +598,7 @@ and `org-export-with-tags' instead."
   "Extensions of image files that can be inlined into LaTeX.
 Note that the image extension *actually* allowed depend on the way the
 LaTeX file is processed.  When used with pdflatex, pdf, jpg and png images
   "Extensions of image files that can be inlined into LaTeX.
 Note that the image extension *actually* allowed depend on the way the
 LaTeX file is processed.  When used with pdflatex, pdf, jpg and png images
-are OK.  When processing through dvi to PostScript, only ps and eps are
+are OK.  When processing through dvi to Postscript, only ps and eps are
 allowed.  The default we use here encompasses both."
   :group 'org-export-latex
   :type '(repeat (string :tag "Extension")))
 allowed.  The default we use here encompasses both."
   :group 'org-export-latex
   :type '(repeat (string :tag "Extension")))
@@ -719,7 +723,7 @@ then use this command to convert it."
   (interactive "r")
   (let (reg latex buf)
     (save-window-excursion
   (interactive "r")
   (let (reg latex buf)
     (save-window-excursion
-      (if (org-mode-p)
+      (if (eq major-mode 'org-mode)
          (setq latex (org-export-region-as-latex
                       beg end t 'string))
        (setq reg (buffer-substring beg end)
          (setq latex (org-export-region-as-latex
                       beg end t 'string))
        (setq reg (buffer-substring beg end)
@@ -865,6 +869,8 @@ when PUB-DIR is set, use this as the publishing directory."
                          (file-truename (or buffer-file-name "dummy.org")))
                   (concat filename ".tex")
                 filename)))
                          (file-truename (or buffer-file-name "dummy.org")))
                   (concat filename ".tex")
                 filename)))
+        (auto-insert nil); Avoid any auto-insert stuff for the new file
+        (TeX-master t) ; Avoid the Query for TeX master from AUCTeX
         (buffer (if to-buffer
                     (cond
                      ((eq to-buffer 'string) (get-buffer-create
         (buffer (if to-buffer
                     (cond
                      ((eq to-buffer 'string) (get-buffer-create
@@ -1340,7 +1346,7 @@ LEVEL indicates the default depth for export."
              (save-restriction
                (widen)
                (goto-char (point-min))
              (save-restriction
                (widen)
                (goto-char (point-min))
-               (and (re-search-forward "^#\\+LaTeX_CLASS:[ \t]*\\(-[a-zA-Z]+\\)" nil t)
+               (and (re-search-forward "^#\\+LaTeX_CLASS:[ \t]*\\([-/a-zA-Z]+\\)" nil t)
                     (match-string 1))))
            (plist-get org-export-latex-options-plist :latex-class)
            org-export-latex-default-class)
                     (match-string 1))))
            (plist-get org-export-latex-options-plist :latex-class)
            org-export-latex-default-class)
@@ -1395,7 +1401,11 @@ OPT-PLIST is the options plist for current buffer."
        (email (replace-regexp-in-string
                "_" "\\\\_"
                (org-export-apply-macros-in-string
        (email (replace-regexp-in-string
                "_" "\\\\_"
                (org-export-apply-macros-in-string
-                (plist-get opt-plist :email)))))
+                (plist-get opt-plist :email))))
+       (description (org-export-apply-macros-in-string
+                     (plist-get opt-plist :description)))
+       (keywords (org-export-apply-macros-in-string
+                  (plist-get opt-plist :keywords))))
     (concat
      (if (plist-get opt-plist :time-stamp-file)
         (format-time-string "%% Created %Y-%m-%d %a %H:%M\n"))
     (concat
      (if (plist-get opt-plist :time-stamp-file)
         (format-time-string "%% Created %Y-%m-%d %a %H:%M\n"))
@@ -1429,6 +1439,12 @@ OPT-PLIST is the options plist for current buffer."
             (format-time-string
              (or (plist-get opt-plist :date)
                  org-export-latex-date-format)))
             (format-time-string
              (or (plist-get opt-plist :date)
                  org-export-latex-date-format)))
+     ;; add some hyperref options
+     ;; FIXME: let's have a defcustom for this?
+     (format "\\hypersetup{\n  pdfkeywords={%s},\n  pdfsubject={%s},\n  pdfcreator={%s}}\n"
+         (org-export-latex-fontify-headline keywords)
+         (org-export-latex-fontify-headline description)
+        (concat "Emacs Org-mode version " org-version))
      ;; beginning of the document
      "\n\\begin{document}\n\n"
      ;; insert the title command
      ;; beginning of the document
      "\n\\begin{document}\n\n"
      ;; insert the title command
@@ -1837,7 +1853,7 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
                  (replace-match (concat (match-string 1)
                                         (match-string 2)) t t)
                  (forward-line))
                  (replace-match (concat (match-string 1)
                                         (match-string 2)) t t)
                  (forward-line))
-               (insert "\\end{verbatim}\n\n"))
+               (insert "\\end{verbatim}\n"))
        (progn (goto-char (match-beginning 0))
              (while (looking-at "^\\([ \t]*\\):\\(\\([ \t]\\|$\\).*\\)$")
                (replace-match (concat "%" (match-string 1)
        (progn (goto-char (match-beginning 0))
              (while (looking-at "^\\([ \t]*\\):\\(\\([ \t]\\|$\\).*\\)$")
                (replace-match (concat "%" (match-string 1)
@@ -1966,13 +1982,13 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
                             (concat "\\begin{longtable}{" align "}\n")
                           (if floatp
                              (format "\\begin{%s}%s\n" tblenv placement)))
                             (concat "\\begin{longtable}{" align "}\n")
                           (if floatp
                              (format "\\begin{%s}%s\n" tblenv placement)))
-                        (if floatp
+                        (if (and floatp org-export-latex-table-caption-above)
                             (format
                              "\\caption%s{%s} %s"
                              (if shortn (concat "[" shortn "]") "")
                              (or caption "")
                             (if label (format "\\label{%s}" label) "")))
                             (format
                              "\\caption%s{%s} %s"
                              (if shortn (concat "[" shortn "]") "")
                              (or caption "")
                             (if label (format "\\label{%s}" label) "")))
-                        (if (and longtblp caption) "\\\\\n" "\n")
+                       (if (and longtblp caption) "\\\\\n" "\n")
                         (if (and org-export-latex-tables-centered (not longtblp))
                             "\\begin{center}\n")
                         (if (not longtblp)
                         (if (and org-export-latex-tables-centered (not longtblp))
                             "\\begin{center}\n")
                         (if (not longtblp)
@@ -1994,6 +2010,12 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
                         (if (not longtblp) (format "\n\\end{%s}" tabular-env))
                         (if longtblp "\n" (if org-export-latex-tables-centered
                                               "\n\\end{center}\n" "\n"))
                         (if (not longtblp) (format "\n\\end{%s}" tabular-env))
                         (if longtblp "\n" (if org-export-latex-tables-centered
                                               "\n\\end{center}\n" "\n"))
+                        (if (and floatp (not org-export-latex-table-caption-above))
+                            (format
+                             "\\caption%s{%s} %s"
+                             (if shortn (concat "[" shortn "]") "")
+                             (or caption "")
+                            (if label (format "\\label{%s}" label) "")))
                         (if longtblp
                             "\\end{longtable}"
                           (if floatp (format "\\end{%s}" tblenv)))))
                         (if longtblp
                             "\\end{longtable}"
                           (if floatp (format "\\end{%s}" tblenv)))))
@@ -2043,11 +2065,12 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
       (setq tbl (concat "\\begin{center}\n" tbl "\\end{center}")))
     (when floatp
       (setq tbl (concat "\\begin{table}\n"
       (setq tbl (concat "\\begin{center}\n" tbl "\\end{center}")))
     (when floatp
       (setq tbl (concat "\\begin{table}\n"
+                       (if (not org-export-latex-table-caption-above) tbl)
                        (format "\\caption%s{%s%s}\n"
                                (if shortn (format "[%s]" shortn) "")
                                (if label (format "\\label{%s}" label) "")
                                (or caption ""))
                        (format "\\caption%s{%s%s}\n"
                                (if shortn (format "[%s]" shortn) "")
                                (if label (format "\\label{%s}" label) "")
                                (or caption ""))
-                       tbl
+                       (if org-export-latex-table-caption-above tbl)
                        "\n\\end{table}\n")))
     (insert (org-export-latex-protect-string tbl))))
 
                        "\n\\end{table}\n")))
     (insert (org-export-latex-protect-string tbl))))
 
@@ -2338,7 +2361,7 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
                                          (let ((next (org-footnote-get-next-reference)))
                                            (and next (= (nth 1 next) (nth 2 ref)))))
                          org-export-latex-footnote-separator ""))))
                                          (let ((next (org-footnote-get-next-reference)))
                                            (and next (= (nth 1 next) (nth 2 ref)))))
                          org-export-latex-footnote-separator ""))))
-           (when (org-on-heading-p)
+           (when (org-at-heading-p)
              (setq fnote (concat (org-export-latex-protect-string "\\protect")
                                  fnote)))
            ;; Ensure a footnote at column 0 cannot end a list
              (setq fnote (concat (org-export-latex-protect-string "\\protect")
                                  fnote)))
            ;; Ensure a footnote at column 0 cannot end a list
@@ -2769,6 +2792,4 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
 (provide 'org-export-latex)
 (provide 'org-latex)
 
 (provide 'org-export-latex)
 (provide 'org-latex)
 
-
-
 ;;; org-latex.el ends here
 ;;; org-latex.el ends here