Add commands to export to PDF.
This works by creating LaTeX first, and then processing it.
This commit is contained in:
parent
fd4df45133
commit
52fa7f817b
52
doc/org.texi
52
doc/org.texi
|
@ -291,7 +291,7 @@ Exporting
|
||||||
* The export dispatcher:: How to access exporter commands
|
* The export dispatcher:: How to access exporter commands
|
||||||
* ASCII export:: Exporting to plain ASCII
|
* ASCII export:: Exporting to plain ASCII
|
||||||
* HTML export:: Exporting to HTML
|
* HTML export:: Exporting to HTML
|
||||||
* LaTeX export:: Exporting to LaTeX
|
* LaTeX and PDF export:: Exporting to LaTeX, and processing to PDF
|
||||||
* XOXO export:: Exporting to XOXO
|
* XOXO export:: Exporting to XOXO
|
||||||
* iCalendar export:: Exporting in iCalendar format
|
* iCalendar export:: Exporting in iCalendar format
|
||||||
|
|
||||||
|
@ -321,9 +321,9 @@ HTML export
|
||||||
* CSS support:: Changing the appearance of the output
|
* CSS support:: Changing the appearance of the output
|
||||||
* Javascript support:: Info and Folding in a web browser
|
* Javascript support:: Info and Folding in a web browser
|
||||||
|
|
||||||
LaTeX export
|
LaTeX and PDF export
|
||||||
|
|
||||||
* LaTeX export commands:: How to invoke LaTeX export
|
* LaTeX/PDF export commands::
|
||||||
* Quoting LaTeX code:: Incorporating literal LaTeX code
|
* Quoting LaTeX code:: Incorporating literal LaTeX code
|
||||||
* Sectioning structure:: Changing sectioning in LaTeX output
|
* Sectioning structure:: Changing sectioning in LaTeX output
|
||||||
|
|
||||||
|
@ -6930,7 +6930,7 @@ Org mode only supports export, not import of these different formats.
|
||||||
* The export dispatcher:: How to access exporter commands
|
* The export dispatcher:: How to access exporter commands
|
||||||
* ASCII export:: Exporting to plain ASCII
|
* ASCII export:: Exporting to plain ASCII
|
||||||
* HTML export:: Exporting to HTML
|
* HTML export:: Exporting to HTML
|
||||||
* LaTeX export:: Exporting to LaTeX
|
* LaTeX and PDF export:: Exporting to LaTeX, and processing to PDF
|
||||||
* XOXO export:: Exporting to XOXO
|
* XOXO export:: Exporting to XOXO
|
||||||
* iCalendar export:: Exporting in iCalendar format
|
* iCalendar export:: Exporting in iCalendar format
|
||||||
@end menu
|
@end menu
|
||||||
|
@ -7454,7 +7454,7 @@ the body text. Any indentation larger than this is adjusted to preserve
|
||||||
the layout relative to the first line. Should there be lines with less
|
the layout relative to the first line. Should there be lines with less
|
||||||
indentation than the first, these are left alone.
|
indentation than the first, these are left alone.
|
||||||
|
|
||||||
@node HTML export, LaTeX export, ASCII export, Exporting
|
@node HTML export, LaTeX and PDF export, ASCII export, Exporting
|
||||||
@section HTML export
|
@section HTML export
|
||||||
@cindex HTML export
|
@cindex HTML export
|
||||||
|
|
||||||
|
@ -7698,19 +7698,23 @@ You can choose default values for these options by customizing the variable
|
||||||
@code{org-infojs-options}. If you always want to apply the script to your
|
@code{org-infojs-options}. If you always want to apply the script to your
|
||||||
pages, configure the variable @code{org-export-html-use-infojs}.
|
pages, configure the variable @code{org-export-html-use-infojs}.
|
||||||
|
|
||||||
@node LaTeX export, XOXO export, HTML export, Exporting
|
@node LaTeX and PDF export, XOXO export, HTML export, Exporting
|
||||||
@section LaTeX export
|
@section LaTeX and PDF export
|
||||||
@cindex LaTeX export
|
@cindex LaTeX export
|
||||||
|
@cindex PDF export
|
||||||
|
|
||||||
Org mode contains a La@TeX{} exporter written by Bastien Guerry.
|
Org mode contains a La@TeX{} exporter written by Bastien Guerry. With
|
||||||
|
further processing, this backend is also used to produce PDF output. Since
|
||||||
|
the LaTeX output uses @file{hyperref} to implement links and cross
|
||||||
|
references, the PDF output file will be fully linked.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* LaTeX export commands:: How to invoke LaTeX export
|
* LaTeX/PDF export commands::
|
||||||
* Quoting LaTeX code:: Incorporating literal LaTeX code
|
* Quoting LaTeX code:: Incorporating literal LaTeX code
|
||||||
* Sectioning structure:: Changing sectioning in LaTeX output
|
* Sectioning structure:: Changing sectioning in LaTeX output
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node LaTeX export commands, Quoting LaTeX code, LaTeX export, LaTeX export
|
@node LaTeX/PDF export commands, Quoting LaTeX code, LaTeX and PDF export, LaTeX and PDF export
|
||||||
@subsection LaTeX export commands
|
@subsection LaTeX export commands
|
||||||
|
|
||||||
@table @kbd
|
@table @kbd
|
||||||
|
@ -7738,6 +7742,12 @@ buffer.
|
||||||
@item M-x org-replace-region-by-latex
|
@item M-x org-replace-region-by-latex
|
||||||
Replace the active region (assumed to be in Org mode syntax) by La@TeX{}
|
Replace the active region (assumed to be in Org mode syntax) by La@TeX{}
|
||||||
code.
|
code.
|
||||||
|
@kindex C-c C-e p
|
||||||
|
@item C-c C-e p
|
||||||
|
Export as LaTeX and then process to PDF.
|
||||||
|
@kindex C-c C-e d
|
||||||
|
@item C-c C-e d
|
||||||
|
Export as LaTeX and then process to PDF, then open the resulting PDF file.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@cindex headline levels, for exporting
|
@cindex headline levels, for exporting
|
||||||
|
@ -7757,7 +7767,7 @@ with a numeric prefix argument. For example,
|
||||||
@noindent
|
@noindent
|
||||||
creates two levels of headings and does the rest as items.
|
creates two levels of headings and does the rest as items.
|
||||||
|
|
||||||
@node Quoting LaTeX code, Sectioning structure, LaTeX export commands, LaTeX export
|
@node Quoting LaTeX code, Sectioning structure, LaTeX/PDF export commands, LaTeX and PDF export
|
||||||
@subsection Quoting LaTeX code
|
@subsection Quoting LaTeX code
|
||||||
|
|
||||||
Embedded La@TeX{} as described in @ref{Embedded LaTeX} will be correctly
|
Embedded La@TeX{} as described in @ref{Embedded LaTeX} will be correctly
|
||||||
|
@ -7778,7 +7788,7 @@ All lines between these markers are exported literally
|
||||||
#+END_LaTeX
|
#+END_LaTeX
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@node Sectioning structure, , Quoting LaTeX code, LaTeX export
|
@node Sectioning structure, , Quoting LaTeX code, LaTeX and PDF export
|
||||||
@subsection Sectioning structure
|
@subsection Sectioning structure
|
||||||
@cindex LaTeX class
|
@cindex LaTeX class
|
||||||
@cindex LaTeX sectioning structure
|
@cindex LaTeX sectioning structure
|
||||||
|
@ -7792,7 +7802,7 @@ You can change this globally by setting a different value for
|
||||||
structure for each class, as well as defining additonal classes.
|
structure for each class, as well as defining additonal classes.
|
||||||
|
|
||||||
|
|
||||||
@node XOXO export, iCalendar export, LaTeX export, Exporting
|
@node XOXO export, iCalendar export, LaTeX and PDF export, Exporting
|
||||||
@section XOXO export
|
@section XOXO export
|
||||||
@cindex XOXO export
|
@cindex XOXO export
|
||||||
|
|
||||||
|
@ -7984,14 +7994,14 @@ and @code{:exclude}.
|
||||||
@cindex action, for publishing
|
@cindex action, for publishing
|
||||||
|
|
||||||
Publishing means that a file is copied to the destination directory and
|
Publishing means that a file is copied to the destination directory and
|
||||||
possibly transformed in the process. The default transformation is to
|
possibly transformed in the process. The default transformation is to export
|
||||||
export Org files as HTML files, and this is done by the function
|
Org files as HTML files, and this is done by the function
|
||||||
@code{org-publish-org-to-html} which calls the HTML exporter
|
@code{org-publish-org-to-html} which calls the HTML exporter (@pxref{HTML
|
||||||
(@pxref{HTML export}). But you also can publish your files in La@TeX{} by
|
export}). But you also can publish your files in La@TeX{} by using the
|
||||||
using the function @code{org-publish-org-to-latex} instead. Other files
|
function @code{org-publish-org-to-latex} instead, or as PDF files using
|
||||||
like images only need to be copied to the publishing destination. For
|
@code{org-publish-org-to-pdf}. Other files like images only need to be
|
||||||
non-Org files, you need to specify the publishing function.
|
copied to the publishing destination. For non-Org files, you need to provide
|
||||||
|
your own publishing function:
|
||||||
|
|
||||||
@multitable @columnfractions 0.3 0.7
|
@multitable @columnfractions 0.3 0.7
|
||||||
@item @code{:publishing-function}
|
@item @code{:publishing-function}
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
2008-10-15 Carsten Dominik <dominik@science.uva.nl>
|
2008-10-15 Carsten Dominik <dominik@science.uva.nl>
|
||||||
|
|
||||||
|
* org-publish.el (org-publish-org-to): Handle case when
|
||||||
|
org-export-to-pdf does return a file name, not a buffer.
|
||||||
|
(org-publish-org-to-pdf): New function.
|
||||||
|
|
||||||
|
* org-export-latex.el (org-export-as-pdf)
|
||||||
|
(org-export-as-pdf-and-open): New commands.
|
||||||
|
|
||||||
* org-table.el (org-table-eval-formula): Avoid parsing Calc's HMS
|
* org-table.el (org-table-eval-formula): Avoid parsing Calc's HMS
|
||||||
forms as ranges.
|
forms as ranges.
|
||||||
|
|
||||||
|
|
|
@ -1009,6 +1009,8 @@ value of `org-export-run-in-background'."
|
||||||
\[x] export as XOXO
|
\[x] export as XOXO
|
||||||
|
|
||||||
\[l] export as LaTeX
|
\[l] export as LaTeX
|
||||||
|
\[p] export as LaTeX and process to PDF
|
||||||
|
\[d] export as LaTeX, process to PDF, and open the resulting PDF document
|
||||||
\[L] export as LaTeX to temporary buffer
|
\[L] export as LaTeX to temporary buffer
|
||||||
|
|
||||||
\[i] export current file as iCalendar file
|
\[i] export current file as iCalendar file
|
||||||
|
@ -1029,6 +1031,8 @@ value of `org-export-run-in-background'."
|
||||||
(?R org-export-region-as-html nil)
|
(?R org-export-region-as-html nil)
|
||||||
(?x org-export-as-xoxo t)
|
(?x org-export-as-xoxo t)
|
||||||
(?l org-export-as-latex t)
|
(?l org-export-as-latex t)
|
||||||
|
(?p org-export-as-pdf t)
|
||||||
|
(?d org-export-as-pdf-and-open t)
|
||||||
(?L org-export-as-latex-to-buffer nil)
|
(?L org-export-as-latex-to-buffer nil)
|
||||||
(?i org-export-icalendar-this-file t)
|
(?i org-export-icalendar-this-file t)
|
||||||
(?I org-export-icalendar-all-agenda-files t)
|
(?I org-export-icalendar-all-agenda-files t)
|
||||||
|
@ -1042,6 +1046,9 @@ value of `org-export-run-in-background'."
|
||||||
(delete-other-windows)
|
(delete-other-windows)
|
||||||
(with-output-to-temp-buffer "*Org Export/Publishing Help*"
|
(with-output-to-temp-buffer "*Org Export/Publishing Help*"
|
||||||
(princ help))
|
(princ help))
|
||||||
|
(if (fboundp 'fit-window-to-buffer)
|
||||||
|
(fit-window-to-buffer (get-buffer-window
|
||||||
|
"*Org Export/Publishing Help*")))
|
||||||
(message "Select command: ")
|
(message "Select command: ")
|
||||||
(setq r1 (read-char-exclusive)))
|
(setq r1 (read-char-exclusive)))
|
||||||
(setq r2 (if (< r1 27) (+ r1 96) r1))
|
(setq r2 (if (< r1 27) (+ r1 96) r1))
|
||||||
|
|
|
@ -36,6 +36,8 @@
|
||||||
;; The interactive functions are similar to those of the HTML exporter:
|
;; The interactive functions are similar to those of the HTML exporter:
|
||||||
;;
|
;;
|
||||||
;; M-x `org-export-as-latex'
|
;; M-x `org-export-as-latex'
|
||||||
|
;; M-x `org-export-as-pdf'
|
||||||
|
;; M-x `org-export-as-pdf-and-open'
|
||||||
;; M-x `org-export-as-latex-batch'
|
;; M-x `org-export-as-latex-batch'
|
||||||
;; M-x `org-export-as-latex-to-buffer'
|
;; M-x `org-export-as-latex-to-buffer'
|
||||||
;; M-x `org-export-region-as-latex'
|
;; M-x `org-export-region-as-latex'
|
||||||
|
@ -232,6 +234,18 @@ Don't remove the keys, just change their values."
|
||||||
:group 'org-export-latex
|
:group 'org-export-latex
|
||||||
:type 'coding-system)
|
:type 'coding-system)
|
||||||
|
|
||||||
|
(defgroup org-export-pdf nil
|
||||||
|
"Options for exporting Org-mode files to PDF, via LaTeX."
|
||||||
|
:tag "Org Export LaTeX"
|
||||||
|
:group 'org-export-latex
|
||||||
|
:group 'org-export)
|
||||||
|
|
||||||
|
(defcustom org-export-pdf-remove-logfiles t
|
||||||
|
"Non-nil means, remove the logfiles produced by PDF production.
|
||||||
|
These are the .aux, .log, .out, and .toc files."
|
||||||
|
:group 'org-export-latex
|
||||||
|
:type 'boolean)
|
||||||
|
|
||||||
;;; Autoload functions:
|
;;; Autoload functions:
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
|
@ -462,6 +476,39 @@ when PUB-DIR is set, use this as the publishing directory."
|
||||||
(current-buffer))
|
(current-buffer))
|
||||||
(set-window-configuration wcf))))
|
(set-window-configuration wcf))))
|
||||||
|
|
||||||
|
(defun org-export-as-pdf (arg &optional hidden ext-plist
|
||||||
|
to-buffer body-only pub-dir)
|
||||||
|
"Export as LaTeX, then process through to PDF."
|
||||||
|
(interactive "P")
|
||||||
|
(message "Exporting to PDF...")
|
||||||
|
(let* ((wconfig (current-window-configuration))
|
||||||
|
(lbuf (org-export-as-latex arg hidden ext-plist
|
||||||
|
to-buffer body-only pub-dir))
|
||||||
|
(file (buffer-file-name lbuf))
|
||||||
|
(base (file-name-sans-extension (buffer-file-name lbuf)))
|
||||||
|
(pdffile (concat base ".pdf")))
|
||||||
|
(and (file-exists-p pdffile) (delete-file pdffile))
|
||||||
|
(message "Processing LaTeX file...")
|
||||||
|
(shell-command (format "pdflatex -interaction nonstopmode %s;pdflatex -interaction nonstopmode %s" file file))
|
||||||
|
(message "Processing LaTeX file...done")
|
||||||
|
(if (not (file-exists-p pdffile))
|
||||||
|
(error "PDF file was not produced")
|
||||||
|
(set-window-configuration wconfig)
|
||||||
|
(when org-export-pdf-remove-logfiles
|
||||||
|
(dolist (ext '("aux" "log" "out" "toc"))
|
||||||
|
(setq file (concat base "." ext))
|
||||||
|
(and (file-exists-p file) (delete-file file))))
|
||||||
|
(message "Exporting to PDF...done")
|
||||||
|
pdffile)))
|
||||||
|
|
||||||
|
(defun org-export-as-pdf-and-open (arg)
|
||||||
|
"Export as LaTeX, then process through to PDF, and open."
|
||||||
|
(interactive "P")
|
||||||
|
(let ((pdffile (org-export-as-pdf arg)))
|
||||||
|
(if pdffile
|
||||||
|
(org-open-file pdffile)
|
||||||
|
(error "PDF file was not produced"))))
|
||||||
|
|
||||||
;;; Parsing functions:
|
;;; Parsing functions:
|
||||||
|
|
||||||
(defun org-export-latex-parse-global (level odd)
|
(defun org-export-latex-parse-global (level odd)
|
||||||
|
|
|
@ -482,19 +482,20 @@ PUB-DIR is the publishing directory."
|
||||||
(plist (cons :buffer-will-be-killed (cons t plist)))
|
(plist (cons :buffer-will-be-killed (cons t plist)))
|
||||||
(init-buf (or visiting (find-file filename)))
|
(init-buf (or visiting (find-file filename)))
|
||||||
(init-point (point))
|
(init-point (point))
|
||||||
(init-buf-string (buffer-string)) export-buf)
|
(init-buf-string (buffer-string)) export-buf-or-file)
|
||||||
;; run hooks before exporting
|
;; run hooks before exporting
|
||||||
(run-hooks 'org-publish-before-export-hook)
|
(run-hooks 'org-publish-before-export-hook)
|
||||||
;; export the possibly modified buffer
|
;; export the possibly modified buffer
|
||||||
(setq export-buf
|
(setq export-buf-or-file
|
||||||
(funcall (intern (concat "org-export-as-" format))
|
(funcall (intern (concat "org-export-as-" format))
|
||||||
(plist-get plist :headline-levels)
|
(plist-get plist :headline-levels)
|
||||||
nil plist nil nil pub-dir))
|
nil plist nil nil pub-dir))
|
||||||
(set-buffer export-buf)
|
(when (and (bufferp export-buf-or-file) (buffer-live-p export-buf-or-file))
|
||||||
;; run hooks after export and save export
|
(set-buffer export-buf-or-file)
|
||||||
(and (run-hooks 'org-publish-after-export-hook)
|
;; run hooks after export and save export
|
||||||
(if (buffer-modified-p) (save-buffer)))
|
(and (run-hooks 'org-publish-after-export-hook)
|
||||||
(kill-buffer export-buf)
|
(if (buffer-modified-p) (save-buffer)))
|
||||||
|
(kill-buffer export-buf-or-file))
|
||||||
;; maybe restore buffer's content
|
;; maybe restore buffer's content
|
||||||
(set-buffer init-buf)
|
(set-buffer init-buf)
|
||||||
(when (buffer-modified-p init-buf)
|
(when (buffer-modified-p init-buf)
|
||||||
|
@ -510,6 +511,11 @@ PUB-DIR is the publishing directory."
|
||||||
See `org-publish-org-to' to the list of arguments."
|
See `org-publish-org-to' to the list of arguments."
|
||||||
(org-publish-org-to "latex" plist filename pub-dir))
|
(org-publish-org-to "latex" plist filename pub-dir))
|
||||||
|
|
||||||
|
(defun org-publish-org-to-pdf (plist filename pub-dir)
|
||||||
|
"Publish an org file to PDF (via LaTeX).
|
||||||
|
See `org-publish-org-to' to the list of arguments."
|
||||||
|
(org-publish-org-to "pdf" plist filename pub-dir))
|
||||||
|
|
||||||
(defun org-publish-org-to-html (plist filename pub-dir)
|
(defun org-publish-org-to-html (plist filename pub-dir)
|
||||||
"Publish an org file to HTML.
|
"Publish an org file to HTML.
|
||||||
See `org-publish-org-to' to the list of arguments."
|
See `org-publish-org-to' to the list of arguments."
|
||||||
|
|
|
@ -1140,6 +1140,7 @@ See `org-file-apps'.")
|
||||||
'(
|
'(
|
||||||
(auto-mode . emacs)
|
(auto-mode . emacs)
|
||||||
("\\.x?html?\\'" . default)
|
("\\.x?html?\\'" . default)
|
||||||
|
("\\.pdf\\'" . default)
|
||||||
)
|
)
|
||||||
"External applications for opening `file:path' items in a document.
|
"External applications for opening `file:path' items in a document.
|
||||||
Org-mode uses system defaults for different file types, but
|
Org-mode uses system defaults for different file types, but
|
||||||
|
|
Loading…
Reference in New Issue