Release 5.11

This commit is contained in:
Carsten Dominik 2008-01-31 11:36:29 +01:00
parent 52c4f74b5f
commit 4019309baf
12 changed files with 1454 additions and 946 deletions

View File

@ -1,3 +1,71 @@
2007-10-05 Carsten Dominik <dominik@science.uva.nl>
* org.el (org-additional-option-like-keywords): New constant.
(org-complete): Use `org-additional-option-like-keywords'.
(org-parse-local-options): New function.
2007-10-04 Carsten Dominik <dominik@science.uva.nl>
* org.el (org-in-clocktable-p): New function.
(org-clock-report): Only update the table at point, or insert a
new one.
(org-clock-goto): New function.
(org-open-file): Use `start-process-shell-command' instead of
`shell-command' with an ampersand.
(org-deadline, org-schedule): New argument REMOVE to remove the
date from the entry.
(org-agenda-schedule, org-agenda-deadline): Pass the prefix
argument to `org-schedule' and `org-deadline'.
(org-trim): Use the correct expressions for beginning and end of
the string.
(org-get-cleaned-entry): Trim the string before returning it.
(org-clock-find-position): New function.
(org-clock-into-drawer): New option.
(org-agenda-tags-column): Renamed from
`org-agenda-align-tags-to-column'.
(org-agenda-align-tags): Allow negative values for
`org-agenda-tags-column'.
(org-insert-labeled-timestamps-before-properties-drawer): Variable
removed.
(org-agenda-to-appt): new optional argument FILTER.
(org-completion-fallback-command): New variable.
(org-complete): Use `org-completion-fallback-command'.
(org-find-base-buffer-visiting): Catch the case that there is no
buffer visiting the file.
(org-property-or-variable-value): New function.
(org-todo): Use `org-property-or-variable-value'
(org-agenda-compact-blocks): New option.
(org-prepare-agenda, org-agenda-list): Use
`org-agenda-compact-blocks'.
(org-agenda-schedule, org-agenda-deadline): Call
`org-agenda-show-new-time'.
(org-agenda-show-new-time): New argument PREFIX.
(org-colgroup-info-to-vline-list): Fixed but that cause a
shift in the vertical lines.
(org-buffer-property-keys): New argument INCLUDE-DEFAULTS.
(org-maybe-renumber-ordered-list, org-cycle-list-bullet)
(org-indent-item): No arg in call to `org-fix-bullet-type'.
(org-fix-bullet-type): Removed argument.
(org-read-date): Check for am/pm twice, to catch the end time.
(org-goto-map): Use `suppress-keymap'.
(org-remember-apply-template): Respect the dynamically scoped
selection character.
* org.texi (Appointment reminders): New section.
2007-10-05 Bastien Guerry <Bastien.Guerry@ens.fr>
* org-export-latex.el (org-export-latex-protect-string):
Renaming of `org-latex-protect'.
(org-export-latex-emphasis-alist): By default, don't protect
any emphasis formatter from further conversion.
(org-export-latex-tables): honor column grouping for tables.
(org-export-latex-title-command): New option.
(org-export-latex-treat-backslash-char): Use \textbackslash{} to
export backslash character.
------------------------------------------------------------
Installed as 5.10
2007-09-26 Carsten Dominik <dominik@science.uva.nl> 2007-09-26 Carsten Dominik <dominik@science.uva.nl>

View File

@ -28,7 +28,7 @@ infodir = $(prefix)/info
# Using emacs in batch mode. # Using emacs in batch mode.
# BATCH=$(EMACS) -batch -q # BATCH=$(EMACS) -batch -q
BATCH=$(EMACS) -batch -q -eval "(add-to-list (quote load-path) \"$(lispdir)\")" BATCH=$(EMACS) -batch -q -eval "(add-to-list (quote load-path) \".\")"
# Specify the byte-compiler for compiling org-mode files # Specify the byte-compiler for compiling org-mode files
ELC= $(BATCH) -f batch-byte-compile ELC= $(BATCH) -f batch-byte-compile

845
org

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,15 @@
;;; org-export-latex.el --- latex exporter for org-mode ;;; org-export-latex.el --- LaTeX exporter for org-mode
;;
;; copyright (c) 2007 free software foundation, inc. ;; copyright (c) 2007 free software foundation, inc.
;; ;;
;; Emacs Lisp Archive Entry
;; Filename: org-export-latex.el
;; Version: 5.11
;; Author: Bastien Guerry <bzg AT altern DOT org> ;; Author: Bastien Guerry <bzg AT altern DOT org>
;; Keywords: Org organizer latex export convert ;; Maintainer: Bastien Guerry <bzg AT altern DOT org>
;; Homepage: http://www.cognition.ens.fr/~guerry/u/org-export-latex.el ;; Keywords: org, wp, tex
;; Version: 5.10 ;; Description: Converts an org-mode buffer into LaTeX
;; URL: http://www.cognition.ens.fr/~guerry/u/org-export-latex.el
;; ;;
;; This file is part of GNU Emacs. ;; This file is part of GNU Emacs.
;; ;;
@ -87,12 +92,12 @@ The %s formatter will be replaced by the title of the section."
("/" "\\emph{%s}" nil) ("/" "\\emph{%s}" nil)
("_" "\\underline{%s}" nil) ("_" "\\underline{%s}" nil)
("+" "\\texttt{%s}" nil) ("+" "\\texttt{%s}" nil)
("=" "\\texttt{%s}" t)) ("=" "\\texttt{%s}" nil))
"Alist of LaTeX expressions to convert emphasis fontifiers. "Alist of LaTeX expressions to convert emphasis fontifiers.
Each element of the list is a list of three elements. Each element of the list is a list of three elements.
The first element is the character used as a marker for fontification. The first element is the character used as a marker for fontification.
The second element is a formatting string to wrap fontified text with. The second element is a formatting string to wrap fontified text with.
If non-nil the third element tells to protect converted text from other The third element decides whether to protect converted text from other
conversions." conversions."
:group 'org-export-latex :group 'org-export-latex
:type 'alist) :type 'alist)
@ -106,6 +111,14 @@ conversions."
:group 'org-export-latex :group 'org-export-latex
:type 'string) :type 'string)
(defcustom org-export-latex-title-command "\\maketitle"
"The command used to insert the title just after \\begin{document}.
If this string contains the formatting specification \"%s\" then
it will be used as a formatting string, passing the title as an
argument."
:group 'org-export-latex
:type 'string)
(defcustom org-export-latex-date-format (defcustom org-export-latex-date-format
"%d %B %Y" "%d %B %Y"
"Format string for \\date{...}." "Format string for \\date{...}."
@ -129,11 +142,14 @@ For example:
:type 'alist) :type 'alist)
(defcustom org-export-latex-low-levels 'description (defcustom org-export-latex-low-levels 'description
"Choice for converting sections that are below the current "How to convert sections below the current level of sectioning,
admitted level of sectioning. This can be either nil (ignore the as specified by `org-export-headline-levels' or the value of \"H:\"
sections), 'description (convert them as description lists) or a in Org's #+OPTION line.
string to be used instead of \\section{%s} (a %s for inserted the
headline is mandatory)." This can be either nil (skip the sections), 'description (convert
the sections as descriptive lists) or a string to be used instead
of \\section{%s}. In this latter case, the %s stands here for the
inserted headline and is mandatory."
:group 'org-export-latex :group 'org-export-latex
:type '(choice (const :tag "Ignore" nil) :type '(choice (const :tag "Ignore" nil)
(symbol :tag "Convert as descriptive list" description) (symbol :tag "Convert as descriptive list" description)
@ -253,7 +269,8 @@ in a window. A non-interactive call will only retunr the buffer."
(message "Exporting to LaTeX...") (message "Exporting to LaTeX...")
(org-update-radio-target-regexp) (org-update-radio-target-regexp)
(org-export-latex-set-initial-vars ext-plist) (org-export-latex-set-initial-vars ext-plist)
(let* ((opt-plist org-latex-options-plist) (let* ((wcf (current-window-configuration))
(opt-plist org-latex-options-plist)
(filename (concat (file-name-as-directory (filename (concat (file-name-as-directory
(org-export-directory :LaTeX ext-plist)) (org-export-directory :LaTeX ext-plist))
(file-name-sans-extension (file-name-sans-extension
@ -289,15 +306,27 @@ in a window. A non-interactive call will only retunr the buffer."
region :emph-multiline t region :emph-multiline t
:for-LaTeX t :for-LaTeX t
:comments nil :comments nil
:add-text text :add-text (if (eq to-buffer 'string) nil text)
:skip-before-1st-heading skip :skip-before-1st-heading skip
:LaTeX-fragments nil))) :LaTeX-fragments nil)))
(set-buffer buffer)
(set-buffer buffer)
(erase-buffer) (erase-buffer)
(unless body-only (insert preamble)) (and (fboundp 'set-buffer-file-coding-system)
(when text (insert (org-export-latex-content text) "\n\n")) (set-buffer-file-coding-system coding-system-for-write))
(unless skip (insert first-lines))
;; insert the preamble and initial document commands
(unless (or (eq to-buffer 'string) body-only)
(insert preamble))
;; insert text found in #+TEXT
(when (and text (not (eq to-buffer 'string)))
(insert (org-export-latex-content text) "\n\n"))
;; insert lines before the first headline
(unless (or skip (eq to-buffer 'string))
(insert first-lines))
;; handle the case where the region does not begin with a section ;; handle the case where the region does not begin with a section
(when region-p (when region-p
@ -305,25 +334,29 @@ in a window. A non-interactive call will only retunr the buffer."
(insert string-for-export) (insert string-for-export)
(org-export-latex-first-lines)))) (org-export-latex-first-lines))))
;; export the content of headlines
(org-export-latex-global (org-export-latex-global
(with-temp-buffer (with-temp-buffer
(insert string-for-export) (insert string-for-export)
(goto-char (point-min)) (goto-char (point-min))
(re-search-forward "^\\(\\*+\\) " nil t) (when (re-search-forward "^\\(\\*+\\) " nil t)
(let* ((asters (length (match-string 1))) (let* ((asters (length (match-string 1)))
(level (if odd (- asters 2) (- asters 1)))) (level (if odd (- asters 2) (- asters 1))))
(setq org-latex-add-level (setq org-latex-add-level
(if odd (1- (/ (1+ asters) 2)) (1- asters))) (if odd (1- (/ (1+ asters) 2)) (1- asters)))
(org-export-latex-parse-global level odd)))) (org-export-latex-parse-global level odd)))))
;; finalization
(unless body-only (insert "\n\\end{document}")) (unless body-only (insert "\n\\end{document}"))
(or to-buffer (save-buffer)) (or to-buffer (save-buffer))
(goto-char (point-min)) (goto-char (point-min))
(message "Exporting to LaTeX...done") (message "Exporting to LaTeX...done")
(if (eq to-buffer 'string) (prog1
(prog1 (buffer-substring (point-min) (point-max)) (if (eq to-buffer 'string)
(kill-buffer (current-buffer))) (prog1 (buffer-substring (point-min) (point-max))
(current-buffer)))) (kill-buffer (current-buffer)))
(current-buffer))
(set-window-configuration wcf))))
;;; Parsing functions: ;;; Parsing functions:
@ -490,8 +523,11 @@ and its content."
;;; Exporting internals: ;;; Exporting internals:
(defun org-latex-protect (string) (defun org-export-latex-protect-string (string)
(add-text-properties 0 (length string) '(org-protected t) string) string) "Prevent further conversion for STRING by adding the
org-protect property."
(add-text-properties
0 (length string) '(org-protected t) string) string)
(defun org-export-latex-protect-char-in-string (char-list string) (defun org-export-latex-protect-char-in-string (char-list string)
"Add org-protected text-property to char from CHAR-LIST in STRING." "Add org-protected text-property to char from CHAR-LIST in STRING."
@ -524,54 +560,65 @@ EXT-PLIST is an optional additional plist."
"Make the LaTeX preamble and return it as a string. "Make the LaTeX preamble and return it as a string.
Argument OPT-PLIST is the options plist for current buffer." Argument OPT-PLIST is the options plist for current buffer."
(let ((toc (plist-get opt-plist :table-of-contents))) (let ((toc (plist-get opt-plist :table-of-contents)))
(concat (if (plist-get opt-plist :time-stamp-file) (concat
(format-time-string "% Created %Y-%m-%d %a %H:%M\n")) (if (plist-get opt-plist :time-stamp-file)
(format-time-string "% Created %Y-%m-%d %a %H:%M\n"))
;; LaTeX custom preamble
org-export-latex-preamble "\n" ;; insert LaTeX custom preamble
org-export-latex-preamble "\n"
;; LaTeX packages
(if org-export-latex-packages-alist ;; insert information on LaTeX packages
(mapconcat (lambda(p) (when org-export-latex-packages-alist
(if (equal "" (car p)) (mapconcat (lambda(p)
(format "\\usepackage{%s}" (cadr p)) (if (equal "" (car p))
(format "\\usepackage[%s]{%s}" (format "\\usepackage{%s}" (cadr p))
(car p) (cadr p)))) (format "\\usepackage[%s]{%s}"
org-export-latex-packages-alist "\n") "") (car p) (cadr p))))
"\n\\begin{document}\n\n" org-export-latex-packages-alist "\n"))
;; title ;; insert the title
(format (format
"\\title{%s}\n" "\\title{%s}\n"
(or (plist-get opt-plist :title) (or (plist-get opt-plist :title)
(and (not (and (not
(plist-get opt-plist :skip-before-1st-heading)) (plist-get opt-plist :skip-before-1st-heading))
(org-export-grab-title-from-buffer)) (org-export-grab-title-from-buffer))
(and buffer-file-name (and buffer-file-name
(file-name-sans-extension (file-name-sans-extension
(file-name-nondirectory buffer-file-name))) (file-name-nondirectory buffer-file-name)))
"UNTITLED")) "UNTITLED"))
;; author info ;; insert author info
(if (plist-get opt-plist :author-info) (if (plist-get opt-plist :author-info)
(format "\\author{%s}\n" (format "\\author{%s}\n"
(or (plist-get opt-plist :author) user-full-name)) (or (plist-get opt-plist :author) user-full-name))
(format "%%\\author{%s}\n" (format "%%\\author{%s}\n"
(or (plist-get opt-plist :author) user-full-name))) (or (plist-get opt-plist :author) user-full-name)))
;; date ;; insert the date
(format "\\date{%s}\n" (format "\\date{%s}\n"
(format-time-string (format-time-string
(or (plist-get opt-plist :date) (or (plist-get opt-plist :date)
org-export-latex-date-format))) org-export-latex-date-format)))
"\\maketitle\n\n" ;; beginning of the document
;; table of contents "\n\\begin{document}\n\n"
(if (and (plist-get opt-plist :section-numbers) toc)
(format "\\setcounter{tocdepth}{%s}\n" ;; insert the title command
(min toc (plist-get opt-plist :headline-levels))) "") (if (string-match "%s" org-export-latex-title-command)
(if (and (plist-get opt-plist :section-numbers) toc) (format org-export-latex-title-command
"\\tableofcontents\n" "\n")))) (plist-get opt-plist :title))
org-export-latex-title-command)
"\n\n"
;; table of contents
(when (and org-export-with-toc
(plist-get opt-plist :section-numbers))
(cond ((numberp toc)
(format "\\setcounter{tocdepth}{%s}\n\\tableofcontents\n\n"
(min toc (plist-get opt-plist :headline-levels))))
(toc (format "\\setcounter{tocdepth}{%s}\n\\tableofcontents\n\n"
(plist-get opt-plist :headline-levels))))))))
(defun org-export-latex-first-lines (&optional comments) (defun org-export-latex-first-lines (&optional comments)
"Export the first lines before first headline. "Export the first lines before first headline.
@ -646,6 +693,7 @@ formatting string like %%%%s if we want to comment them out."
(plist-get org-latex-options-plist :tables)) (plist-get org-latex-options-plist :tables))
(org-export-latex-fixed-width (org-export-latex-fixed-width
(plist-get org-latex-options-plist :fixed-width)) (plist-get org-latex-options-plist :fixed-width))
;; return string
(buffer-substring (point-min) (point-max)))) (buffer-substring (point-min) (point-max))))
(defun org-export-latex-quotation-marks () (defun org-export-latex-quotation-marks ()
@ -664,7 +712,7 @@ Local definition of the language overrides
(mapc (lambda(l) (goto-char (point-min)) (mapc (lambda(l) (goto-char (point-min))
(while (re-search-forward (car l) nil t) (while (re-search-forward (car l) nil t)
(let ((rpl (concat (match-string 1) (cadr l)))) (let ((rpl (concat (match-string 1) (cadr l))))
(org-latex-protect rpl) (org-export-latex-protect-string rpl)
(org-if-unprotected (org-if-unprotected
(replace-match rpl t t))))) quote-rpl))) (replace-match rpl t t))))) quote-rpl)))
@ -694,42 +742,42 @@ See the `org-export-latex.el' code for a complete conversion table."
;; Put the point where to check for org-protected ;; Put the point where to check for org-protected
(unless (get-text-property (match-beginning 2) 'org-protected) (unless (get-text-property (match-beginning 2) 'org-protected)
(cond ((member (match-string 2) '("\\$" "$")) (cond ((member (match-string 2) '("\\$" "$"))
(if (equal (match-string 2) "\\$") (if (equal (match-string 2) "\\$")
(replace-match (concat (match-string 1) "$" (replace-match (concat (match-string 1) "$"
(match-string 3)) t t) (match-string 3)) t t)
(replace-match (concat (match-string 1) "\\$" (replace-match (concat (match-string 1) "\\$"
(match-string 3)) t t))) (match-string 3)) t t)))
((member (match-string 2) '("&" "#" "%")) ((member (match-string 2) '("&" "%" "#"))
(if (equal (match-string 1) "\\") (if (equal (match-string 1) "\\")
(replace-match (match-string 2) t t) (replace-match (match-string 2) t t)
(replace-match (concat (match-string 1) "\\" (replace-match (concat (match-string 1) "\\"
(match-string 2)) t t))) (match-string 2)) t t)))
((equal (match-string 2) "~") ((equal (match-string 2) "~")
(cond ((equal (match-string 1) "\\") nil) (cond ((equal (match-string 1) "\\") nil)
((eq 'org-link (get-text-property 0 'face (match-string 2))) ((eq 'org-link (get-text-property 0 'face (match-string 2)))
(replace-match (concat (match-string 1) "\\~") t t)) (replace-match (concat (match-string 1) "\\~") t t))
(t (replace-match (t (replace-match
(org-latex-protect (org-export-latex-protect-string
(concat (match-string 1) "\\~{}")) t t)))) (concat (match-string 1) "\\~{}")) t t))))
((member (match-string 2) '("{" "}")) ((member (match-string 2) '("{" "}"))
(unless (save-match-data (org-inside-LaTeX-fragment-p)) (unless (save-match-data (org-inside-LaTeX-fragment-p))
(if (equal (match-string 1) "\\") (if (equal (match-string 1) "\\")
(replace-match (match-string 2) t t) (replace-match (match-string 2) t t)
(replace-match (concat (match-string 1) "\\" (replace-match (concat (match-string 1) "\\"
(match-string 2)) t t))))) (match-string 2)) t t)))))
(unless (save-match-data (org-inside-LaTeX-fragment-p)) (unless (save-match-data (org-inside-LaTeX-fragment-p))
(cond ((equal (match-string 2) "\\") (cond ((equal (match-string 2) "\\")
(replace-match (or (save-match-data (replace-match (or (save-match-data
(org-export-latex-treat-backslash-char (org-export-latex-treat-backslash-char
(match-string 1) (match-string 1)
(match-string 3))) "") t t)) (match-string 3))) "") t t))
((member (match-string 2) '("_" "^")) ((member (match-string 2) '("_" "^"))
(replace-match (or (save-match-data (replace-match (or (save-match-data
(org-export-latex-treat-sub-super-char (org-export-latex-treat-sub-super-char
sub-superscript sub-superscript
(match-string 1) (match-string 1)
(match-string 2) (match-string 2)
(match-string 3))) "") t t))))))) (match-string 3))) "") t t)))))))
'("^\\([^\n$]*?\\|^\\)\\(\\\\?\\$\\)\\([^\n$]*\\)$" '("^\\([^\n$]*?\\|^\\)\\(\\\\?\\$\\)\\([^\n$]*\\)$"
"\\([a-za-z0-9]+\\|[ \t\n]\\|\\b\\|\\\\\\)\\(_\\|\\^\\)\\([a-za-z0-9]+\\|[ \t\n]\\|[:punct:]\\|{[a-za-z0-9]+}\\|([a-za-z0-9]+)\\)" "\\([a-za-z0-9]+\\|[ \t\n]\\|\\b\\|\\\\\\)\\(_\\|\\^\\)\\([a-za-z0-9]+\\|[ \t\n]\\|[:punct:]\\|{[a-za-z0-9]+}\\|([a-za-z0-9]+)\\)"
"\\(.\\|^\\)\\(\\\\\\)\\([ \t\n]\\|[a-zA-Z&#%{}\"]+\\)" "\\(.\\|^\\)\\(\\\\\\)\\([ \t\n]\\|[a-zA-Z&#%{}\"]+\\)"
@ -738,7 +786,10 @@ See the `org-export-latex.el' code for a complete conversion table."
"\\(.\\|^\\)\\(%\\)" "\\(.\\|^\\)\\(%\\)"
"\\(.\\|^\\)\\({\\)" "\\(.\\|^\\)\\({\\)"
"\\(.\\|^\\)\\(}\\)" "\\(.\\|^\\)\\(}\\)"
"\\(.\\|^\\)\\(~\\)"))) "\\(.\\|^\\)\\(~\\)"
;; (?\< . "\\textless{}")
;; (?\> . "\\textgreater{}")
)))
(defun org-export-latex-treat-sub-super-char (defun org-export-latex-treat-sub-super-char
(subsup string-before char string-after) (subsup string-before char string-after)
@ -765,9 +816,9 @@ Convert CHAR depending on STRING-BEFORE and STRING-AFTER."
(format "$%s%s{%s}$" string-before char (format "$%s%s{%s}$" string-before char
(match-string 1 string-after))) (match-string 1 string-after)))
(subsup (concat "$" string-before char string-after "$")) (subsup (concat "$" string-before char string-after "$"))
(t (org-latex-protect (t (org-export-latex-protect-string
(concat string-before "\\" char "{}" string-after))))) (concat string-before "\\" char "{}" string-after)))))
(t (org-latex-protect (t (org-export-latex-protect-string
(concat string-before "\\" char "{}" string-after))))) (concat string-before "\\" char "{}" string-after)))))
(defun org-export-latex-treat-backslash-char (string-before string-after) (defun org-export-latex-treat-backslash-char (string-before string-after)
@ -781,17 +832,21 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
((and (not (string-match "^[ \n\t]" string-after)) ((and (not (string-match "^[ \n\t]" string-after))
(not (string-match "[ \t]\\'\\|^" string-before))) (not (string-match "[ \t]\\'\\|^" string-before)))
;; backslash is inside a word ;; backslash is inside a word
(concat string-before "$\\backslash$" string-after)) (org-export-latex-protect-string
(concat string-before "\\textbackslash{}" string-after)))
((not (or (equal string-after "") ((not (or (equal string-after "")
(string-match "^[ \t\n]" string-after))) (string-match "^[ \t\n]" string-after)))
;; backslash might escape a character (like \#) or a user TeX ;; backslash might escape a character (like \#) or a user TeX
;; macro (like \setcounter) ;; macro (like \setcounter)
(concat string-before "\\" string-after)) (org-export-latex-protect-string
(concat string-before "\\" string-after)))
((and (string-match "^[ \t\n]" string-after) ((and (string-match "^[ \t\n]" string-after)
(string-match "[ \t\n]\\'" string-before)) (string-match "[ \t\n]\\'" string-before))
;; backslash is alone, convert it to $\backslash$ ;; backslash is alone, convert it to $\backslash$
(concat string-before "$\\backslash$" string-after)) (org-export-latex-protect-string
(t (concat string-before "$\\backslash$" string-after)))) (concat string-before "\\textbackslash{}" string-after)))
(t (org-export-latex-protect-string
(concat string-before "\\textbackslash{}" string-after)))))
(defun org-export-latex-keywords (timestamps) (defun org-export-latex-keywords (timestamps)
"Convert special keywords to LaTeX. "Convert special keywords to LaTeX.
@ -807,6 +862,7 @@ Regexps are those from `org-latex-special-string-regexps'."
(defun org-export-latex-fixed-width (opt) (defun org-export-latex-fixed-width (opt)
"When OPT is non-nil convert fixed-width sections to LaTeX." "When OPT is non-nil convert fixed-width sections to LaTeX."
(goto-char (point-min)) (goto-char (point-min))
;; FIXME the search shouldn't be performed on already converted text
(while (re-search-forward "^[ \t]*:" nil t) (while (re-search-forward "^[ \t]*:" nil t)
(if opt (if opt
(progn (goto-char (match-beginning 0)) (progn (goto-char (match-beginning 0))
@ -822,7 +878,6 @@ Regexps are those from `org-latex-special-string-regexps'."
(match-string 2)) t t) (match-string 2)) t t)
(forward-line)))))) (forward-line))))))
;; FIXME Use org-export-highlight-first-table-line ?
(defun org-export-latex-lists () (defun org-export-latex-lists ()
"Convert lists to LaTeX." "Convert lists to LaTeX."
(goto-char (point-min)) (goto-char (point-min))
@ -889,35 +944,68 @@ Valid parameters are
;; Add a trailing \n after list conversion ;; Add a trailing \n after list conversion
"\n")) "\n"))
(defun org-export-latex-tables (opt) ;; FIXME Use org-export-highlight-first-table-line ?
"When OPT is non-nil convert tables to LaTeX." (defun org-export-latex-tables (insert)
"Convert tables to LaTeX and INSERT it."
(goto-char (point-min)) (goto-char (point-min))
(while (re-search-forward "^\\([ \t]*\\)|" nil t) (while (re-search-forward "^\\([ \t]*\\)|" nil t)
;; Re-align the table to update org-table-last-alignment ;; FIXME really need to save-excursion?
(save-excursion (save-match-data (org-table-align))) (save-excursion (org-table-align))
(let (tbl-list (let* ((beg (org-table-begin))
(beg (match-beginning 0)) (end (org-table-end))
(end (save-excursion (raw-table (buffer-substring-no-properties beg end))
(re-search-forward fnum line lines olines gr colgropen line-fmt alignment)
(concat "^" (regexp-quote (match-string 1))
"[^|]\\|\\'") nil t) (match-beginning 0))))
(beginning-of-line)
(if org-export-latex-tables-verbatim (if org-export-latex-tables-verbatim
(let* ((raw-table (buffer-substring beg end)) (let* ((tbl (concat "\\begin{verbatim}\n" raw-table
(tbl (concat "\\begin{verbatim}\n" raw-table
"\\end{verbatim}\n"))) "\\end{verbatim}\n")))
(apply 'delete-region (list beg end)) (apply 'delete-region (list beg end))
(insert tbl)) (insert tbl))
(progn (progn
(while (not (eq end (point))) (setq lines (split-string raw-table "\n" t))
(if (looking-at "[ \t]*|\\([^-|].+\\)|[ \t]*$")
(push (split-string (org-trim (match-string 1)) "|") tbl-list)
(push 'hline tbl-list))
(forward-line))
;; comment region out instead of deleting it ?
(apply 'delete-region (list beg end)) (apply 'delete-region (list beg end))
(when opt (insert (orgtbl-to-latex (nreverse tbl-list) (when org-export-table-remove-special-lines
nil) "\n\n"))))))) (setq lines (org-table-clean-before-export lines)))
;; make a formatting string to reflect aligment
(setq olines lines)
(while (and (not line-fmt) (setq line (pop olines)))
(unless (string-match "^[ \t]*|-" line)
(setq fields (org-split-string line "[ \t]*|[ \t]*"))
(setq fnum (make-vector (length fields) 0))
(setq line-fmt
(mapconcat
(lambda (x)
(setq gr (pop org-table-colgroup-info))
(format "%s%%s%s"
(cond ((eq gr ':start)
(prog1 (if colgropen "|" "")
(setq colgropen t)))
((eq gr ':startend)
(prog1 (if colgropen "|" "|")
(setq colgropen nil)))
(t ""))
(if (memq gr '(:end :startend))
(progn (setq colgropen nil) "|")
"")))
fnum ""))))
;; maybe remove the first and last "|"
(when (string-match "^\\(|\\)?\\(.+\\)|$" line-fmt)
(setq line-fmt (match-string 2 line-fmt)))
;; format alignment
(setq align (apply 'format
(cons line-fmt
(mapcar (lambda (x) (if x "r" "l"))
org-table-last-alignment))))
;; prepare the table to send to orgtbl-to-latex
(setq lines
(mapcar
(lambda(elem)
(or (and (string-match "[ \t]*|-+" elem) 'hline)
(split-string (org-trim elem) "|" t)))
lines))
(when insert
(insert (orgtbl-to-latex
lines `(:tstart ,(concat "\\begin{tabular}{" align "}")))
"\n\n")))))))
(defun org-export-latex-fontify () (defun org-export-latex-fontify ()
"Convert fontification to LaTeX." "Convert fontification to LaTeX."
@ -933,7 +1021,8 @@ Valid parameters are
'("\\" "{" "}") (cadr emph)) '("\\" "{" "}") (cadr emph))
(match-string 4)) (match-string 4))
(match-string 5))) (match-string 5)))
(if (caddr emph) (setq rpl (org-latex-protect rpl))) (if (caddr emph)
(setq rpl (org-export-latex-protect-string rpl)))
(replace-match rpl t t))) (replace-match rpl t t)))
(backward-char))) (backward-char)))
@ -999,13 +1088,13 @@ Valid parameters are
(goto-char (point-min)) (goto-char (point-min))
(let ((case-fold-search nil) rpl) (let ((case-fold-search nil) rpl)
(while (re-search-forward "\\([^+_]\\)LaTeX" nil t) (while (re-search-forward "\\([^+_]\\)LaTeX" nil t)
(replace-match (org-latex-protect (replace-match (org-export-latex-protect-string
(concat (match-string 1) "\\LaTeX{}")) t t))) (concat (match-string 1) "\\LaTeX{}")) t t)))
;; Convert horizontal rules ;; Convert horizontal rules
(goto-char (point-min)) (goto-char (point-min))
(while (re-search-forward "^----+.$" nil t) (while (re-search-forward "^----+.$" nil t)
(replace-match (org-latex-protect "\\hrule") t t)) (replace-match (org-export-latex-protect-string "\\hrule") t t))
;; Protect LaTeX \commands{...} ;; Protect LaTeX \commands{...}
(goto-char (point-min)) (goto-char (point-min))
@ -1019,7 +1108,7 @@ Valid parameters are
(concat "<<<?" org-latex-all-targets-regexp (concat "<<<?" org-latex-all-targets-regexp
">>>?\\((INVISIBLE)\\)?") nil t) ">>>?\\((INVISIBLE)\\)?") nil t)
(replace-match (replace-match
(org-latex-protect (org-export-latex-protect-string
(format "\\label{%s}%s"(match-string 1) (format "\\label{%s}%s"(match-string 1)
(if (match-string 2) "" (match-string 1)))) t t)) (if (match-string 2) "" (match-string 1)))) t t))

View File

@ -4,7 +4,7 @@
;; ;;
;; Author: Piotr Zielinski <piotr dot zielinski at gmail dot com> ;; Author: Piotr Zielinski <piotr dot zielinski at gmail dot com>
;; Maintainer: Carsten Dominik <carsten at orgmode dot org> ;; Maintainer: Carsten Dominik <carsten at orgmode dot org>
;; Version: 5.10 ;; Version: 5.11
;; ;;
;; This file is part of GNU Emacs. ;; This file is part of GNU Emacs.
;; ;;

View File

@ -4,7 +4,7 @@
;; Author: David O'Toole <dto@gnu.org> ;; Author: David O'Toole <dto@gnu.org>
;; Keywords: hypermedia, outlines ;; Keywords: hypermedia, outlines
;; Version: 1.80 ;; Version: 1.80a
;; This file is free software; you can redistribute it and/or modify ;; This file is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by ;; it under the terms of the GNU General Public License as published by

983
org.el

File diff suppressed because it is too large Load Diff

BIN
org.pdf

Binary file not shown.

106
org.texi
View File

@ -3,8 +3,8 @@
@setfilename ../info/org @setfilename ../info/org
@settitle Org Mode Manual @settitle Org Mode Manual
@set VERSION 5.10 @set VERSION 5.11
@set DATE September 2007 @set DATE October 2007
@dircategory Emacs @dircategory Emacs
@direntry @direntry
@ -2316,20 +2316,21 @@ Insert a link. This prompts for a link to be inserted into the buffer.
You can just type a link, using text for an internal link, or one of the You can just type a link, using text for an internal link, or one of the
link type prefixes mentioned in the examples above. All links stored link type prefixes mentioned in the examples above. All links stored
during the current session are part of the history for this prompt, so during the current session are part of the history for this prompt, so
you can access them with @key{up} and @key{down}. Completion, on the you can access them with @key{up} and @key{down} (or @kbd{M-p/n}).
other hand, will help you to insert valid link prefixes like Completion, on the other hand, will help you to insert valid link
@samp{http:} or @samp{ftp:}, including the prefixes defined through link prefixes like @samp{http:} or @samp{ftp:}, including the prefixes
abbreviations (@pxref{Link abbreviations}). The link will be inserted defined through link abbreviations (@pxref{Link abbreviations}). The
into the buffer@footnote{After insertion of a stored link, the link will link will be inserted into the buffer@footnote{After insertion of a
be removed from the list of stored links. To keep it in the list later stored link, the link will be removed from the list of stored links. To
use, use a triple @kbd{C-u} prefix to @kbd{C-c C-l}, or configure the keep it in the list later use, use a triple @kbd{C-u} prefix to @kbd{C-c
option @code{org-keep-stored-link-after-insertion}.}, along with a C-l}, or configure the option
descriptive text. If some text was selected when this command is @code{org-keep-stored-link-after-insertion}.}, along with a descriptive
called, the selected text becomes the default description.@* Note that text. If some text was selected when this command is called, the
you don't have to use this command to insert a link. Links in Org-mode selected text becomes the default description.@* Note that you don't
are plain text, and you can type or paste them straight into the buffer. have to use this command to insert a link. Links in Org-mode are plain
By using this command, the links are automatically enclosed in double text, and you can type or paste them straight into the buffer. By using
brackets, and you will be asked for the optional descriptive text. this command, the links are automatically enclosed in double brackets,
and you will be asked for the optional descriptive text.
@c @c
@c If the link is a @samp{file:} link and @c If the link is a @samp{file:} link and
@c the linked file is located in the same directory as the current file or @c the linked file is located in the same directory as the current file or
@ -2855,6 +2856,7 @@ special faces for some of them. This can be done using the variable
("CANCELED" . (:foreground "blue" :weight bold)))) ("CANCELED" . (:foreground "blue" :weight bold))))
@end lisp @end lisp
@page
@node Progress logging, Priorities, TODO extensions, TODO items @node Progress logging, Priorities, TODO extensions, TODO items
@section Progress Logging @section Progress Logging
@cindex progress logging @cindex progress logging
@ -2874,7 +2876,9 @@ a TODO item.
If you want to keep track of @emph{when} a certain TODO item was If you want to keep track of @emph{when} a certain TODO item was
finished, turn on logging with@footnote{The corresponding in-buffer finished, turn on logging with@footnote{The corresponding in-buffer
setting is: @code{#+STARTUP: logdone}} setting is: @code{#+STARTUP: logdone}. You may also set this for the
scope of a subtree by adding a @code{LOGGING} property with one or more
of the logging keywords in the value.}
@lisp @lisp
(setq org-log-done t) (setq org-log-done t)
@ -2901,7 +2905,8 @@ setting is: @code{#+STARTUP: lognotedone}}
When TODO keywords are used as workflow states (@pxref{Workflow When TODO keywords are used as workflow states (@pxref{Workflow
states}), you might want to keep track of when a state change occurred states}), you might want to keep track of when a state change occurred
and record a note about this change. With the setting and record a note about this change. With the setting@footnote{The
corresponding in-buffer setting is: @code{#+STARTUP: lognotestate}.}
@lisp @lisp
(setq org-log-done '(state)) (setq org-log-done '(state))
@ -3421,6 +3426,9 @@ Switch property at point to the next/previous allowed value.
Remove a property from the current entry. Remove a property from the current entry.
@item C-c C-c D @item C-c C-c D
Globally remove a property, from all entries in the current file. Globally remove a property, from all entries in the current file.
@item C-c C-c c
Compute the property at point, using the operator and scope from the
nearest column format definition.
@end table @end table
@node Special properties, Property searches, Property syntax, Properties and columns @node Special properties, Property searches, Property syntax, Properties and columns
@ -3987,7 +3995,8 @@ an item:
@kindex C-c C-d @kindex C-c C-d
@item C-c C-d @item C-c C-d
Insert @samp{DEADLINE} keyword along with a stamp. The insertion will Insert @samp{DEADLINE} keyword along with a stamp. The insertion will
happen in the line directly following the headline. happen in the line directly following the headline. When called with a
prefix arg, an existing deadline will be removed from the entry.
@c FIXME Any CLOSED timestamp will be removed.???????? @c FIXME Any CLOSED timestamp will be removed.????????
@c @c
@kindex C-c C-w @kindex C-c C-w
@ -4003,7 +4012,8 @@ all deadlines due tomorrow.
@item C-c C-s @item C-c C-s
Insert @samp{SCHEDULED} keyword along with a stamp. The insertion will Insert @samp{SCHEDULED} keyword along with a stamp. The insertion will
happen in the line directly following the headline. Any CLOSED happen in the line directly following the headline. Any CLOSED
timestamp will be removed. timestamp will be removed. When called with a prefix argument, remove
the scheduling date from the entry.
@end table @end table
@node Repeated tasks, , Inserting deadline/schedule, Deadlines and scheduling @node Repeated tasks, , Inserting deadline/schedule, Deadlines and scheduling
@ -4034,9 +4044,11 @@ actually switch the date like this:
DEADLINE: <2005-11-01 Tue +1m> DEADLINE: <2005-11-01 Tue +1m>
@end example @end example
You will also be prompted for a note that will be put under the DEADLINE You will also be prompted for a note@footnote{You can change this using
line to keep a record that you actually acted on the previous instance the option @code{org-log-repeat}, or the @code{#+STARTUP} options
of this deadline. @code{logrepeat} and @code{nologrepeat}.} that will be put under the
DEADLINE line to keep a record that you actually acted on the previous
instance of this deadline.
As a consequence of shifting the base date, this entry will no longer be As a consequence of shifting the base date, this entry will no longer be
visible in the agenda when checking past dates, but all future instances visible in the agenda when checking past dates, but all future instances
@ -4058,7 +4070,10 @@ also computes the total time spent on each subtree of a project.
@kindex C-c C-x C-i @kindex C-c C-x C-i
@item C-c C-x C-i @item C-c C-x C-i
Start the clock on the current item (clock-in). This inserts the CLOCK Start the clock on the current item (clock-in). This inserts the CLOCK
keyword together with a timestamp. keyword together with a timestamp. If this is not the first clocking of
this item, the multiple CLOCK lines will be wrapped into a
@code{:CLOCK:} drawer (see also the variable
@code{org-clock-into-drawer}.
@kindex C-c C-x C-o @kindex C-c C-x C-o
@item C-c C-x C-o @item C-c C-x C-o
Stop the clock (clock-out). The inserts another timestamp at the same Stop the clock (clock-out). The inserts another timestamp at the same
@ -4081,6 +4096,10 @@ if it is running in this same item.
@item C-c C-x C-x @item C-c C-x C-x
Cancel the current clock. This is useful if a clock was started by Cancel the current clock. This is useful if a clock was started by
mistake, or if you ended up working on something else. mistake, or if you ended up working on something else.
@kindex C-c C-x C-j
@item C-c C-x C-j
Jump to the entry that contains the currently running clock, an another
window.
@kindex C-c C-x C-d @kindex C-c C-x C-d
@item C-c C-x C-d @item C-c C-x C-d
Display time summaries for each subtree in the current buffer. This Display time summaries for each subtree in the current buffer. This
@ -4094,13 +4113,13 @@ when you change the buffer (see variable
Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
report as an org-mode table into the current file. report as an org-mode table into the current file.
@example @example
#+BEGIN: clocktable :maxlevel 2 :emphasize nil #+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
#+END: clocktable #+END: clocktable
@end example @end example
@noindent @noindent
If such a block already exists, its content is replaced by the new If such a block already exists at point, its content is replaced by the
table. The @samp{BEGIN} line can specify options: new table. The @samp{BEGIN} line can specify options:
@example @example
:maxlevel @r{Maximum level depth to which times are listed in the table.} :maxlevel @r{Maximum level depth to which times are listed in the table.}
:emphasize @r{When @code{t}, emphasize level one and level two items} :emphasize @r{When @code{t}, emphasize level one and level two items}
@ -4552,6 +4571,18 @@ will be made in the agenda:
%%(diary-anniversary 2 10 1869) Mahatma Gandhi would be %d years old %%(diary-anniversary 2 10 1869) Mahatma Gandhi would be %d years old
@end example @end example
@subsubheading Appointment reminders
@cindex @file{appt.el}
@cindex appointment reminders
Org can interact with Emacs appointments notification facility.
To add all the appointments of your agenda files, use the command
@code{org-agenda-to-appt}. This commands also lets you filter through
the list of your appointments and add only those belonging to a specific
category or matching a regular expression. See the docstring for
details.
@node Global TODO list, Matching tags and properties, Weekly/Daily agenda, Built-in agenda views @node Global TODO list, Matching tags and properties, Weekly/Daily agenda, Built-in agenda views
@subsection The global TODO list @subsection The global TODO list
@cindex global TODO list @cindex global TODO list
@ -4843,10 +4874,10 @@ the other commands, the cursor needs to be in the desired line.
@cindex motion commands in agenda @cindex motion commands in agenda
@kindex n @kindex n
@item n @item n
Next line (same as @key{up}). Next line (same as @key{up} and @kbd{C-p}).
@kindex p @kindex p
@item p @item p
Previous line (same as @key{down}). Previous line (same as @key{down} and @kbd{C-n}).
@tsubheading{View/GoTo org file} @tsubheading{View/GoTo org file}
@kindex mouse-3 @kindex mouse-3
@kindex @key{SPC} @kindex @key{SPC}
@ -4925,7 +4956,9 @@ argument is interpreted to create a selective list for a specific TODO
keyword. keyword.
@c @c
@kindex s @kindex s
@kindex C-x C-s
@item s @item s
@itemx C-x C-s
Save all Org-mode buffers in the current Emacs session. Save all Org-mode buffers in the current Emacs session.
@c @c
@kindex @key{right} @kindex @key{right}
@ -5050,6 +5083,10 @@ Stop the previously started clock.
@item X @item X
Cancel the currently running clock. Cancel the currently running clock.
@kindex J
@item J
Jump to the running clock in another window.
@tsubheading{Calendar commands} @tsubheading{Calendar commands}
@cindex calendar commands, from agenda @cindex calendar commands, from agenda
@kindex c @kindex c
@ -6104,6 +6141,11 @@ Create a single large iCalendar file from all files in
@code{org-combined-agenda-icalendar-file}. @code{org-combined-agenda-icalendar-file}.
@end table @end table
The export will honor SUMMARY, DESCRIPTION and LOCATION properties if
the selected entries have them. If not, the summary will be derived
from the headline, and the description from the body (limited to
@code{org-icalendar-include-body} characters).
How this calendar is best read and updated, depends on the application How this calendar is best read and updated, depends on the application
you are using. The FAQ covers this issue. you are using. The FAQ covers this issue.
@ -6843,8 +6885,9 @@ variable is @code{org-startup-align-all-tables}, with a default value
align @r{align all tables} align @r{align all tables}
noalign @r{don't align tables on startup} noalign @r{don't align tables on startup}
@end example @end example
Logging TODO state changes and clock intervals (variable Logging TODO state changes and clock intervals (variables
@code{org-log-done}) can be configured using these options. @code{org-log-done} and @code{org-log-repeat}) can be configured using
these options.
@cindex @code{logdone}, STARTUP keyword @cindex @code{logdone}, STARTUP keyword
@cindex @code{nologging}, STARTUP keyword @cindex @code{nologging}, STARTUP keyword
@cindex @code{lognotedone}, STARTUP keyword @cindex @code{lognotedone}, STARTUP keyword
@ -7948,7 +7991,6 @@ around a match in a hidden outline tree.
@item @item
@i{Bastien Guerry} wrote the La@TeX{} exporter and has been prolific @i{Bastien Guerry} wrote the La@TeX{} exporter and has been prolific
with patches, ideas, and bug reports. with patches, ideas, and bug reports.
to Org-mode.
@item @item
@i{Kai Grossjohann} pointed out key-binding conflicts with other packages. @i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
@item @item

Binary file not shown.

View File

@ -1,5 +1,5 @@
% Reference Card for Org Mode % Reference Card for Org Mode
\def\orgversionnumber{5.10} \def\orgversionnumber{5.11}
\def\versionyear{2007} % latest update \def\versionyear{2007} % latest update
\def\year{2007} % latest copyright year \def\year{2007} % latest copyright year
@ -664,9 +664,8 @@ after ``{\tt :}'', and dictionary words elsewhere.
\key{insert new entry into diary}{i} \key{insert new entry into diary}{i}
\newcolumn \newcolumn
\key{start the clock on current item (clock-in)}{I} \key{start/stop/cancel the clock on current item}{I / O / X}
\key{stop the clock (clock-out)}{O} \key{jump to running clock entry}{J}
\key{cancel current clock}{X}
{\bf Misc} {\bf Misc}

Binary file not shown.