;;; org-latex.el --- LaTeX exporter for org-mode
;;
-;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2012 Free Software Foundation, Inc.
;;
;; 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
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
(defcustom org-export-latex-href-format "\\href{%s}{%s}"
"A printf format string to be applied to href links.
-The format must contain either two %s instances or just one.
-If it contains two %s instances, the first will be filled with
+The format must contain either two %s instances or just one.
+If it contains two %s instances, the first will be filled with
the link, the second with the link description. If it contains
only one, the %s will be filled with the link."
:group 'org-export-latex
: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."
: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.
(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)
(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
(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)
(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"))
(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
(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)
(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) "")))
- (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 (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)))))
(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 ""))
- tbl
+ (if org-export-latex-table-caption-above tbl)
"\n\\end{table}\n")))
(insert (org-export-latex-protect-string tbl))))
;; a LaTeX issue, but we here implement a work-around anyway.
(setq path (org-export-latex-protect-amp path)
desc (org-export-latex-protect-amp desc)))
- (insert
+ (insert
(if (string-match "%s.*%s" org-export-latex-href-format)
(format org-export-latex-href-format path desc)
(format org-export-latex-href-format path))))
(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
(provide 'org-export-latex)
(provide 'org-latex)
-
-
;;; org-latex.el ends here