summaryrefslogtreecommitdiff
path: root/lisp/org/org-latex.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/org/org-latex.el')
-rw-r--r--lisp/org/org-latex.el57
1 files changed, 39 insertions, 18 deletions
diff --git a/lisp/org/org-latex.el b/lisp/org/org-latex.el
index 7abf85a7092..57cb5bac702 100644
--- a/lisp/org/org-latex.el
+++ b/lisp/org/org-latex.el
@@ -4,8 +4,7 @@
;;
;; 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
@@ -74,7 +73,6 @@
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
@@ -304,8 +302,8 @@ markup defined, the first one in the association list will be used."
(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
@@ -359,6 +357,12 @@ string defines the replacement string for this quote."
: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."
@@ -402,7 +406,7 @@ will pass them (combined with the LaTeX default list parameters) to
: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.
@@ -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
-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")))
@@ -719,7 +723,7 @@ then use this command to convert it."
(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)
@@ -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)))
+ (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
@@ -1340,7 +1346,7 @@ LEVEL indicates the default depth for export."
(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)
@@ -1395,7 +1401,11 @@ OPT-PLIST is the options plist for current buffer."
(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"))
@@ -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)))
+ ;; 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
@@ -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))
- (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)
@@ -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)))
- (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)
@@ -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 (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)))))
@@ -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"
+ (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))))
@@ -2203,7 +2226,7 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
;; 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))))
@@ -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 ""))))
- (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
@@ -2769,6 +2792,4 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
(provide 'org-export-latex)
(provide 'org-latex)
-
-
;;; org-latex.el ends here