浏览代码

Release 4.36

Carsten Dominik 17 年之前
父节点
当前提交
9cf9c9f451
共有 7 个文件被更改,包括 631 次插入399 次删除
  1. 138 119
      org
  2. 52 49
      org-publish.el
  3. 368 177
      org.el
  4. 二进制
      org.pdf
  5. 72 53
      org.texi
  6. 二进制
      orgcard.pdf
  7. 1 1
      orgcard.tex

+ 138 - 119
org

@@ -5,7 +5,7 @@ START-INFO-DIR-ENTRY
 * Org Mode: (org).	outline-based notes management and organizer
 END-INFO-DIR-ENTRY
 
-   This manual is for Org-mode (version 4.34).
+   This manual is for Org-mode (version 4.36).
 
    Copyright (C) 2004, 2005, 2006 Free Software Foundation
 
@@ -27,7 +27,7 @@ File: org,  Node: Top,  Next: Introduction,  Prev: (dir),  Up: (dir)
 Org Mode Manual
 ***************
 
-This manual is for Org-mode (version 4.34).
+This manual is for Org-mode (version 4.36).
 
    Copyright (C) 2004, 2005, 2006 Free Software Foundation
 
@@ -1102,7 +1102,7 @@ applying the equation.
    Instead of typing an equation into the field, you may also use the
 command `C-c ='.  It prompts for a formula (with default taken from the
 `#+TBLFM:' line) and applies it to the current field.  A numerical
-prefix (e.g. `C-5 C-c =') will apply it to that many subsequent fields
+prefix (e.g. `C-5 C-c =') will apply it to that many consecutive fields
 in the current column.
 
    To recompute all the fields in a line, use the command `C-c *'.  It
@@ -1333,7 +1333,7 @@ instead of `[[link][description]]' and `link' is displayed instead of
 `[[link]]'.  Links will be highlighted in the face `org-link', which by
 default is an underlined face.  You can directly edit the visible part
 of a link.  Note that this can be either the `link' part (if there is
-not description) or the `description' part.  To edit also the invisible
+no description) or the `description' part.  To edit also the invisible
 `link' part, use `C-c C-l' with the cursor on the link.
 
    If you place the cursor at the beginning or just behind the end of
@@ -1977,7 +1977,7 @@ the agenda (*note Weekly/Daily agenda::).  We distinguish:
 PLAIN TIME STAMP
      A simple time stamp just assigns a date/time to an item.  This is
      just like writing down an appointment in a paper agenda, or like
-     writing down an event in a diary, when you want to take not of
+     writing down an event in a diary, when you want to take note of
      when something happened.  In the timeline and agenda displays, the
      headline of an entry associated with a plain time stamp will be
      shown exactly on that date.
@@ -2202,39 +2202,56 @@ allowed tags for a given file with lines like
      #+TAGS: @WORK @HOME @TENNISCLUB
      #+TAGS: Laptop Car PC Sailboat
 
-   The default method Org-mode uses to support setting tags is
-completion.  However, it also implements a much better method: _fast tag
-selection_.  This method allows to select and deselect tags with a
-single key per tag.  To function efficiently, you need to assign unique
-keys to all tags.  This can be done globally with
+   The default support method is minibuffer completion.  However,
+Org-mode also implements a much better method: _fast tag selection_.
+This method allows to select and deselect tags with a single key per
+tag.  To function efficiently, you should assign unique keys to all
+tags.  This can be done globally with
 
      (setq org-tag-alist '(("@WORK" . ?w) ("@HOME" . ?h) ("Laptop" . ?l)))
 
 or on a per-file basis with
 
-     #+TAGS: @WORK(w)  @HOME(h)  @TENNISCLUB(t)
-     #+TAGS: Laptop(l)  Car(c)  PC(p) Sailboat(s)
+     #+TAGS: @WORK(w)  @HOME(h)  @TENNISCLUB(t)  Laptop(l)  PC(p)
+
+You can also group together tags that are mutually exclusive.  With
+curly braces(1)
+
+     #+TAGS: { @WORK(w)  @HOME(h)  @TENNISCLUB(t) }  Laptop(l)  PC(p)
+
+you indicate that at most one of `@WORK', `@HOME', and `@SAILBOAT'
+should be selected.
 
 Don't forget to press `C-c C-c' with the cursor in one of these lines
 to activate any changes.
 
-   If selection keys have been configured, pressing `C-c C-c' will
+   If at least one tag has a selection key, pressing `C-c C-c' will
 automatically present you with a special interface, listing inherited
 tags, the tags of the current headline, and a list of all legal tags
-with corresponding keys.  Pressing keys for the tags will add or remove
-them from the list of tags in the current line.  <SPC> clears all tags
-for this line, `RET' accepts the modified set, and `C-g' aborts without
-installing changes.  This method lets you assing tags to a headline
-with very few keys.  With the above setup, you could clear the current
-tags and set `@HOME', `Laptop' and `PC' tags with just the following
-keys: `C-c C-c <SPC> h l p <RET>'.
+with corresponding keys(2).  Pressing keys for the tags will add or
+remove them from the list of tags in the current line.  Selecting a tag
+in a group of mutually exclusive tags will turn off any other tags from
+that group.  <SPC> clears all tags for this line, `RET' accepts the
+modified set, and `C-g' aborts without installing changes.  This method
+lets you assign tags to a headline with very few keys.  With the above
+setup, you could clear the current tags and set `@HOME', `Laptop' and
+`PC' tags with just the following keys: `C-c C-c <SPC> h l p <RET>'.
+Switching from `@HOME' to `@WORK' would be done with `C-c C-c w <RET>'.
 
    What if you have globally defined your preferred set of tags using
 the variable `org-tag-alist', but would like to use a dynamic tag list
-in a specific file?  Just add and empty TAGS option line to that file:
+in a specific file?  Just add an empty TAGS option line to that file:
 
      #+TAGS:
 
+   ---------- Footnotes ----------
+
+   (1) In `org-mode-alist' use `'(:startgroup)' and `'(:endgroup)',
+respectively.  Several groups are allowed.
+
+   (2) Keys will automatically assigned to tags which have no
+configured keys.
+
 
 File: org,  Node: Tag searches,  Prev: Setting tags,  Up: Tags
 
@@ -2840,7 +2857,7 @@ File: org,  Node: ASCII export,  Next: HTML export,  Prev: Exporting,  Up: Expor
 9.1 ASCII export
 ================
 
-ASCII export produces an simple and very readable version of an Org-mode
+ASCII export produces a simple and very readable version of an Org-mode
 file.
 
 `C-c C-x a'
@@ -2860,7 +2877,13 @@ example,
 
      C-1 C-c C-x a
 
-creates only top level headlines and does the rest as items.
+creates only top level headlines and does the rest as items.  When
+headlines are converted to items, the indentation of the text following
+the headline is changed to fit nicely under the item.  This is done with
+the assumption that the first bodyline indicates the base indenation of
+the body text.  Any indenation larger than this is adjusted to preserve
+the layout relative to the first line.  Should there be lines with less
+indentation than the first, these are left alone.
 
 
 File: org,  Node: HTML export,  Next: XOXO export,  Prev: ASCII export,  Up: Exporting
@@ -2868,9 +2891,9 @@ File: org,  Node: HTML export,  Next: XOXO export,  Prev: ASCII export,  Up: Exp
 9.2 HTML export
 ===============
 
-Org-mode contains an HTML exporter with extensive HTML formatting, in
-ways similar to John Grubers _markdown_ language, but with additional
-support for tables.
+Org-mode contains an HTML (XHTML 1.0 strict) exporter with extensive
+HTML formatting, in ways similar to John Grubers _markdown_ language,
+but with additional support for tables.
 
 `C-c C-x h'
      Export as HTML file `myfile.html'.  
@@ -3063,6 +3086,9 @@ formatted output.
     `C-c :'
           Toggle fixed-width for entry (QUOTE) or region, see below.
 
+   * A double backslash _at the end of a line_ enforces a line break at
+     this position.
+
    If these conversions conflict with your habits of typing ASCII text,
 they can all be turned off with corresponding variables (see the
 customization group `org-export-general', and the following section
@@ -3167,17 +3193,15 @@ forms:
 
      or
 
-     ("project-name"
-         ("component1" :property value :property value ...)
-         ("component2" :property value :property value ...)
-         ...)
+     ("project-name"  :components ("project-name" "project-name" ...))
 
    In both cases, projects are configured by specifying property values.
 A project defines the set of files that will be published, as well as
 the publishing configuration to use when publishing those files.  When
-a project takes the second form listed above, the individual property
-lists are taken to be "components" of the project, which group together
-files requiring different publishing options.
+a project takes the second form listed above, the individual members of
+the "components" property are taken to be components of the project,
+which group together files requiring different publishing options. When
+you publish such a "meta-project" all the components will also publish.
 
 
 File: org,  Node: File sources and destinations,  Next: Selecting files,  Prev: Project alist,  Up: Configuration
@@ -3228,7 +3252,7 @@ the publishing function.
 
    The function must accept two arguments: a property list containing at
 least a `:publishing-directory' property, and the name of the file to
-be published.  I should take the specified file, make the necessary
+be published.  It should take the specified file, make the necessary
 transformation (if any) and place the result into the destination
 folder.  You can write your own publishing function, but `org-publish'
 provides one for attachments (files that only need to be copied):
@@ -3369,8 +3393,7 @@ same. You can accomplish this by setting up an "images" folder in the
 right place on the webserver, and publishing images to it.
 
      (setq org-publish-project-alist
-           '(("website"
-              ("orgfiles"
+           '(("orgfiles"
                :base-directory "~/org/"
                :base-extension "org"
                :publishing-directory "/ssh:user@host:~/html/notebook/"
@@ -3394,7 +3417,8 @@ right place on the webserver, and publishing images to it.
                :base-directory "~/other/"
                :base-extension "css\\|el"
                :publishing-directory "/ssh:user@host:~/html/other/"
-               :publishing-function org-publish-attachment))))
+               :publishing-function org-publish-attachment)
+              ("website" :components ("orgfiles" "images" "other"))))
 
 
 File: org,  Node: Triggering publication,  Prev: Sample configuration,  Up: Publishing
@@ -3534,7 +3558,7 @@ file is visited again in a new Emacs session.
 
 `#+TAGS:  TAG1(c1) TAG2(c2)'
      These lines (several such lines are allowed) specify the legal
-     tags in this file, and (potionally) the corresponding _fast tag
+     tags in this file, and (potentially) the corresponding _fast tag
      selection_ keys.  The corresponding variable is `org-tag-alist'.
 
 `#+CATEGORY:'
@@ -3547,8 +3571,8 @@ file is visited again in a new Emacs session.
      line.
 
 `#+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+OPTIONS:'
-     These lines provide setting for exporting files.  For more details
-     see *Note Export options::.
+     These lines provide settings for exporting files.  For more
+     details see *Note Export options::.
 
 
 File: org,  Node: The very busy C-c C-c key,  Next: Clean view,  Prev: Summary of in-buffer settings,  Up: Miscellaneous
@@ -3731,7 +3755,7 @@ File: org,  Node: FAQ,  Next: Interaction,  Prev: TTY keys,  Up: Miscellaneous
           (add-to-list 'auto-mode-alist '("README$" . org-mode))
 
   3. I would like to use editing features of org-mode in other modes,
-     is his possible?
+     is this possible?
      Not really.  For tables there is `orgtbl-mode' which implements the
      table editor as a minor mode.  For other features you need to
      switch to Org-mode temporarily, or prepare text in a different
@@ -3905,13 +3929,6 @@ File: org,  Node: Extensions,  Next: Cooperation,  Prev: Interaction,  Up: Inter
 
 The following extensions for Org-mode have been written by other people:
 
-`org-checklet.el' by Frank Ruell
-     Provides checklist of items which can be either checked or
-     unchecked.  This is similar to the TODO functionality in Org-mode,
-     but never shows up in the agenda.  `org-checklet' is freely
-     available at
-     `http://www.emacswiki.org/cgi-bin/emacs/org-checklet.el'.  
-
 `org-mouse.el' by Piotr Zielinski
      This package implements extended mouse functionality for Org-mode.
      It allows you to cycle visibility and to edit the document
@@ -4121,8 +4138,8 @@ Org-mode would not be what it is without your input.
    * Linking to VM/BBDB/GNUS was inspired by Tom Shannon's
      `organizer-mode.el'.
 
-   * David O'Toole wrote `org-publish.el' and came up with lots is
-     ideas for small changes.
+   * David O'Toole wrote `org-publish.el' and drafted the manual
+     chapter about publishing.
 
    * Ju"rgen Vollmer contributed code generating the table of contents
      in HTML output.
@@ -4315,6 +4332,7 @@ File: org,  Node: Index,  Next: Key Index,  Prev: Miscellaneous,  Up: Top
 * keymapp nil error:                     FAQ.                 (line   6)
 * keyword options:                       Per file keywords.   (line   6)
 * linebreak preservation:                Export options.      (line  25)
+* linebreak, forced:                     Enhancing text.      (line  37)
 * link completion:                       Handling links.      (line  28)
 * link format:                           Link format.         (line   6)
 * links, external:                       External links.      (line   6)
@@ -4348,11 +4366,10 @@ File: org,  Node: Index,  Next: Key Index,  Prev: Miscellaneous,  Up: Top
 * options, for export:                   Export options.      (line   6)
 * ordered lists:                         Plain lists.         (line   6)
 * org-agenda, command:                   Weekly/Daily agenda. (line   9)
-* org-checklet.el:                       Extensions.          (line   8)
 * org-mode, turning on:                  Installation and activation.
                                                               (line  30)
-* org-mouse.el:                          Extensions.          (line  13)
-* org-publish.el:                        Extensions.          (line  21)
+* org-mouse.el:                          Extensions.          (line   8)
+* org-publish.el:                        Extensions.          (line  14)
 * orgtbl-mode:                           orgtbl-mode.         (line   6)
 * outline tree:                          Headlines.           (line   6)
 * outline-mode:                          Outlines.            (line   6)
@@ -4724,14 +4741,14 @@ Node: Formula syntax38979
 Ref: Formula syntax-Footnote-141884
 Node: Lisp formulas42184
 Node: Column formulas42973
-Node: Advanced features44734
-Node: Named-field formulas47988
-Node: Editing/debugging formulas48628
-Node: Appetizer50386
-Node: orgtbl-mode51489
-Node: table.el51980
-Node: Hyperlinks52957
-Node: Link format53662
+Node: Advanced features44735
+Node: Named-field formulas47989
+Node: Editing/debugging formulas48629
+Node: Appetizer50387
+Node: orgtbl-mode51490
+Node: table.el51981
+Node: Hyperlinks52958
+Node: Link format53663
 Node: Internal links54956
 Ref: Internal links-Footnote-156945
 Node: Radio targets57077
@@ -4754,63 +4771,65 @@ Ref: Per file keywords-Footnote-179663
 Node: Priorities79891
 Node: Timestamps81107
 Node: Time stamps81428
-Node: Creating timestamps84201
-Node: Tags87522
-Node: Tag inheritance88284
-Node: Setting tags89221
-Node: Tag searches91942
-Node: Agenda views93151
-Node: Agenda files94690
-Ref: Agenda files-Footnote-195650
-Ref: Agenda files-Footnote-295799
-Node: Agenda dispatcher95991
-Node: Weekly/Daily agenda98121
-Node: Categories99256
-Node: Time-of-day specifications99904
-Node: Calendar/Diary integration101880
-Node: Sorting of agenda items103257
-Node: Global TODO list104089
-Node: Matching headline tags105450
-Node: Timeline106393
-Node: Agenda commands107266
-Node: Exporting112734
-Node: ASCII export113867
-Node: HTML export114737
-Node: XOXO export117552
-Node: iCalendar export117991
-Node: Text interpretation119814
-Node: Comment lines120291
-Node: Enhancing text120760
-Node: Export options122591
-Node: Publishing124193
-Ref: Publishing-Footnote-1124989
-Node: Configuration125185
-Node: Project alist125906
-Node: File sources and destinations126964
-Node: Selecting files127516
-Node: Publishing action128269
-Node: Publishing options129383
-Node: Publishing links131422
-Node: Project page index132225
-Node: Sample configuration133003
-Node: Simple example133495
-Node: Complex example134168
-Node: Triggering publication136202
-Node: Miscellaneous136858
-Node: Completion137617
-Node: Customization138613
-Node: Summary of in-buffer settings139220
-Node: The very busy C-c C-c key142460
-Node: Clean view143975
-Node: TTY keys146552
-Node: FAQ148153
-Node: Interaction155950
-Node: Extensions156410
-Node: Cooperation157980
-Node: Conflicts159674
-Node: Bugs161266
-Node: Acknowledgments163164
-Node: Index166603
-Node: Key Index188922
+Node: Creating timestamps84202
+Node: Tags87523
+Node: Tag inheritance88285
+Node: Setting tags89222
+Ref: Setting tags-Footnote-192352
+Ref: Setting tags-Footnote-292464
+Node: Tag searches92544
+Node: Agenda views93753
+Node: Agenda files95292
+Ref: Agenda files-Footnote-196252
+Ref: Agenda files-Footnote-296401
+Node: Agenda dispatcher96593
+Node: Weekly/Daily agenda98723
+Node: Categories99858
+Node: Time-of-day specifications100506
+Node: Calendar/Diary integration102482
+Node: Sorting of agenda items103859
+Node: Global TODO list104691
+Node: Matching headline tags106052
+Node: Timeline106995
+Node: Agenda commands107868
+Node: Exporting113336
+Node: ASCII export114469
+Node: HTML export115755
+Node: XOXO export118589
+Node: iCalendar export119028
+Node: Text interpretation120851
+Node: Comment lines121328
+Node: Enhancing text121797
+Node: Export options123721
+Node: Publishing125323
+Ref: Publishing-Footnote-1126119
+Node: Configuration126315
+Node: Project alist127036
+Node: File sources and destinations128107
+Node: Selecting files128659
+Node: Publishing action129412
+Node: Publishing options130527
+Node: Publishing links132566
+Node: Project page index133369
+Node: Sample configuration134147
+Node: Simple example134639
+Node: Complex example135312
+Node: Triggering publication137388
+Node: Miscellaneous138044
+Node: Completion138803
+Node: Customization139799
+Node: Summary of in-buffer settings140406
+Node: The very busy C-c C-c key143648
+Node: Clean view145163
+Node: TTY keys147740
+Node: FAQ149341
+Node: Interaction157139
+Node: Extensions157599
+Node: Cooperation158851
+Node: Conflicts160545
+Node: Bugs162137
+Node: Acknowledgments164035
+Node: Index167473
+Node: Key Index189792
 
 End Tag Table

+ 52 - 49
org-publish.el

@@ -1,12 +1,12 @@
 ;;; org-publish.el --- publish related org-mode files as a website
 
-;; Copyright (C) 2006  David O'Toole
+;; Copyright (C) 2006  Free Software Foundation, Inc. 
 
 ;; Author: David O'Toole <dto@gnu.org>
 ;; Keywords: hypermedia, outlines
 ;; Version: 
 
-;; $Id: org-publish.el,v 1.64 2006/05/19 19:45:34 dto Exp dto $
+;; $Id: org-publish.el,v 1.69 2006/06/03 17:17:53 dto Exp dto $
 
 ;; 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
@@ -23,8 +23,6 @@
 ;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 ;; Boston, MA 02110-1301, USA.
 
-;; This file is NOT part of GNU Emacs. 
-
 ;;; Commentary:
 
 ;; Requires at least version 4.27 of org.el
@@ -61,6 +59,10 @@
 ;; (autoload 'org-publish "org-publish-current-file" nil t)
 ;; (autoload 'org-publish "org-publish-current-project" nil t)
 
+;; NOTE: When org-publish.el is included with org.el, those forms are
+;; already in the file org-install.el, and hence don't need to be put
+;; in your emacs initialization file in this case.
+
 ;;; Usage: 
 ;;
 ;; The program's main configuration variable is
@@ -103,28 +105,28 @@
 
 ;; (setq org-publish-project-alist
 ;;       (list 
-;;        '("website" . 
-;;            (("orgfiles" :base-directory "~/org/"
-;; 		           :base-extension "org"
-;; 		           :publishing-directory "/ssh:user@host:~/html/notebook/"
-;; 		           :publishing-function org-publish-org-to-html
-;; 		           :exclude "PrivatePage.org"   ;; regexp
-;; 		           :headline-levels 3
-;;                         :with-section-numbers nil
-;; 		           :table-of-contents nil
-;; 		           :style "<link rel=stylesheet href=\"../other/mystyle.css\" type=\"text/css\">"
-;; 		           :auto-preamble t
-;; 		           :auto-postamble nil)
+;;        '("orgfiles" :base-directory "~/org/"
+;; 		       :base-extension "org"
+;; 		       :publishing-directory "/ssh:user@host:~/html/notebook/"
+;; 		       :publishing-function org-publish-org-to-html
+;; 		       :exclude "PrivatePage.org"   ;; regexp
+;; 		       :headline-levels 3
+;;                     :with-section-numbers nil
+;; 		       :table-of-contents nil
+;; 		       :style "<link rel=stylesheet href=\"../other/mystyle.css\" type=\"text/css\">"
+;; 		       :auto-preamble t
+;; 		       :auto-postamble nil)
 ;;      
-;;            ("images" :base-directory "~/images/"
-;; 		        :base-extension "jpg\\|gif\\|png"
-;; 		        :publishing-directory "/ssh:user@host:~/html/images/"
-;; 		        :publishing-function org-publish-attachment)
+;;         ("images" :base-directory "~/images/"
+;; 	             :base-extension "jpg\\|gif\\|png"
+;; 		     :publishing-directory "/ssh:user@host:~/html/images/"
+;; 		     :publishing-function org-publish-attachment)
 ;;  
-;;            ("other"  :base-directory "~/other/"
-;; 	   	        :base-extension "css"
-;; 		        :publishing-directory "/ssh:user@host:~/html/other/"
-;; 		        :publishing-function org-publish-attachment)))))
+;;         ("other"  :base-directory "~/other/"
+;; 	   	     :base-extension "css"
+;; 		     :publishing-directory "/ssh:user@host:~/html/other/"
+;; 		     :publishing-function org-publish-attachment)
+;;         ("website" :components ("orgfiles" "images" "other"))))
 
 ;; For more information, see the documentation for the variable
 ;; `org-publish-project-alist'.
@@ -136,6 +138,8 @@
 
 ;;; List of user-visible changes since version 1.27
 
+;; 1.65: Remove old "composite projects". They're redundant. 
+;; 1.64: Allow meta-projects with :components
 ;; 1.57: Timestamps flag is now called "org-publish-use-timestamps-flag"
 ;; 1.52: Properly set default for :index-filename
 ;; 1.48: Composite projects allowed.
@@ -165,17 +169,19 @@
   "Association list to control publishing behavior.
 Each element of the alist is a publishing 'project.'  The CAR of
 each element is a string, uniquely identifying the project. The
-CDR of each element is either a property list with configuration
-options for the publishing process (see below), or a list of the
-following form:
+CDR of each element is in one of the following forms: 
 
-  ((\"component1\" :property value :property value ... )
-   (\"component2\" :property value :property value ... ))
+  (:property value :property value ... )
+
+OR,
+  
+  (:components (\"project-1\" \"project-2\" ...))
 
 When the CDR of an element of org-publish-project-alist is in
-this second form, the elements of this list are taken to be
-components of the project, which group together files requiring
-different publishing options.
+this second form, the elements of the list after :components are
+taken to be components of the project, which group together files
+requiring different publishing options. When you publish such a
+project with M-x org-publish, the components all publish.
 
 When a property is given a value in org-publish-project-alist, its
 setting overrides the value of the corresponding user variable
@@ -312,11 +318,8 @@ whether file should be published."
   (let ((timestamp (org-publish-timestamp-filename filename)))
     (set-file-times timestamp)))
 
-;;;; Getting project information out of org-publish-project-alist
 
-(defun org-publish-meta-project-p (element)
-  "Tell whether an ELEMENT of org-publish-project-alist is a metaproject."
-  (plist-get (cdr element) :components))
+;;;; Getting project information out of org-publish-project-alist
 
 
 (defun org-publish-get-plists (&optional project-name)
@@ -326,21 +329,24 @@ When argument is not given, return all property lists for all projects."
 		   (list (assoc project-name org-publish-project-alist))
 		 org-publish-project-alist))
 	(project nil)
-	(plists nil))
+	(plists nil)
+	(components nil))
     (while (setq project (pop alist))
-      (if (org-publish-meta-project-p project)
-	  ;; meta project
-	  (let* ((components (plist-get (cdr project) :components))
-		 (components-plists (mapcar 'org-publish-get-plists components)))
-	    (setq plists (append plists components-plists)))
+      (if (setq components (plist-get (cdr project) :components))
+	  ;; meta project. annotate each plist with name of enclosing project
+	  (setq plists 
+		(append plists 
+			(mapcar (lambda (p) 
+				  (plist-put p :project-name (car project)))
+				(mapcan 'org-publish-get-plists components))))
 	;; normal project
 	(let ((p (cdr project)))
 	  (setq p (plist-put p :project-name (car project)))
 	  (setq plists (append plists (list (cdr project)))))))
-      ;;
-      plists))
+    ;;
+    plists))
+
 
-  
 (defun org-publish-get-base-files (plist &optional exclude-regexp)
   "Return a list of all files in project defined by PLIST.
 If EXCLUDE-REGEXP is set, this will be used to filter out
@@ -442,7 +448,6 @@ FILENAME is the filename of the file to be published."
  If :auto-index is set, publish the index too."
   (let* ((exclude-regexp (plist-get plist :exclude))
 	 (publishing-function (or (plist-get plist :publishing-function) 'org-publish-org-to-html))
-	 (buf (current-buffer))
 	 (index-p (plist-get plist :auto-index))
          (index-filename (or (plist-get plist :index-filename) "index.org"))
 	 (index-function (or (plist-get plist :index-function) 'org-publish-org-index))
@@ -455,9 +460,7 @@ FILENAME is the filename of the file to be published."
 	;; check timestamps
 	(when (org-publish-needed-p f)
 	  (funcall publishing-function plist f)
-	  (org-publish-update-timestamp f))))
-    ;; back to original buffer
-    (switch-to-buffer buf)))
+	  (org-publish-update-timestamp f))))))
 
 
 (defun org-publish-org-index (plist &optional index-filename)

文件差异内容过多而无法显示
+ 368 - 177
org.el


二进制
org.pdf


+ 72 - 53
org.texi

@@ -1,12 +1,11 @@
 \input texinfo
 
 @c %**start of header
-@setfilename org
-@c @setfilename ../info/org
+@setfilename ../info/org
 @settitle Org Mode Manual
 
-@set VERSION 4.34
-@set DATE May 2006
+@set VERSION 4.36
+@set DATE June 2006
 
 @dircategory Emacs
 @direntry
@@ -1243,7 +1242,7 @@ Instead of typing an equation into the field, you may also use the
 command @kbd{C-c =}.  It prompts for a formula (with default taken
 from the @samp{#+TBLFM:} line) and applies it to the current field.  A
 numerical prefix (e.g. @kbd{C-5 C-c =}) will apply it to that many
-subsequent fields in the current column.
+consecutive fields in the current column.
 
 @cindex recomputing table fields
 To recompute all the fields in a line, use the command @kbd{C-c *}.
@@ -1485,7 +1484,7 @@ of @samp{[[link][description]]} and @samp{link} is displayed instead of
 @samp{[[link]]}.  Links will be highlighted in the face @code{org-link},
 which by default is an underlined face.  You can directly edit the
 visible part of a link.  Note that this can be either the @samp{link}
-part (if there is not description) or the @samp{description} part.  To
+part (if there is no description) or the @samp{description} part.  To
 edit also the invisible @samp{link} part, use @kbd{C-c C-l} with the
 cursor on the link.
 
@@ -2189,7 +2188,7 @@ dates in the agenda (@pxref{Weekly/Daily agenda}).  We distinguish:
 @cindex timestamp
 A simple time stamp just assigns a date/time to an item.  This is just
 like writing down an appointment in a paper agenda, or like writing down
-an event in a diary, when you want to take not of when something
+an event in a diary, when you want to take note of when something
 happened.  In the timeline and agenda displays, the headline of an entry
 associated with a plain time stamp will be shown exactly on that date.
 
@@ -2453,11 +2452,11 @@ the allowed tags for a given file with lines like
 #+TAGS: Laptop Car PC Sailboat
 @end example
 
-The default method Org-mode uses to support setting tags is completion.
-However, it also implements a much better method: @emph{fast tag
-selection}.  This method allows to select and deselect tags with a
-single key per tag.  To function efficiently, you need to assign unique
-keys to all tags.  This can be done globally with
+The default support method is minibuffer completion.  However, Org-mode
+also implements a much better method: @emph{fast tag selection}.  This
+method allows to select and deselect tags with a single key per tag.  To
+function efficiently, you should assign unique keys to all tags.  This
+can be done globally with
 
 @lisp
 (setq org-tag-alist '(("@@WORK" . ?w) ("@@HOME" . ?h) ("Laptop" . ?l)))
@@ -2466,27 +2465,44 @@ keys to all tags.  This can be done globally with
 @noindent or on a per-file basis with
 
 @example
-#+TAGS: @@WORK(w)  @@HOME(h)  @@TENNISCLUB(t)
-#+TAGS: Laptop(l)  Car(c)  PC(p) Sailboat(s)
+#+TAGS: @@WORK(w)  @@HOME(h)  @@TENNISCLUB(t)  Laptop(l)  PC(p)
 @end example
 
+@noindent
+You can also group together tags that are mutually exclusive.  With
+curly braces@footnote{In @code{org-mode-alist} use
+@code{'(:startgroup)} and @code{'(:endgroup)}, respectively.  Several
+groups are allowed.}
+
+@example
+#+TAGS: @{ @@WORK(w)  @@HOME(h)  @@TENNISCLUB(t) @}  Laptop(l)  PC(p)
+@end example
+
+@noindent you indicate that at most one of @samp{@@WORK}, @samp{@@HOME},
+and @samp{@@SAILBOAT} should be selected.
+
 @noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
 these lines to activate any changes.
 
-If selection keys have been configured, pressing @kbd{C-c C-c} will
+If at least one tag has a selection key, pressing @kbd{C-c C-c} will
 automatically present you with a special interface, listing inherited
 tags, the tags of the current headline, and a list of all legal tags
-with corresponding keys.  Pressing keys for the tags will add or remove
-them from the list of tags in the current line.  @key{SPC} clears all
-tags for this line, @kbd{RET} accepts the modified set, and @kbd{C-g}
-aborts without installing changes.  This method lets you assing tags to
-a headline with very few keys.  With the above setup, you could clear
-the current tags and set @samp{@@HOME}, @samp{Laptop} and @samp{PC} tags
-with just the following keys: @kbd{C-c C-c @key{SPC} h l p @key{RET}}.
+with corresponding keys@footnote{Keys will automatically assigned to
+tags which have no configured keys.}.  Pressing keys for the tags will
+add or remove them from the list of tags in the current line.  Selecting
+a tag in a group of mutually exclusive tags will turn off any other tags
+from that group.  @key{SPC} clears all tags for this line, @kbd{RET}
+accepts the modified set, and @kbd{C-g} aborts without installing
+changes.  This method lets you assign tags to a headline with very few
+keys.  With the above setup, you could clear the current tags and set
+@samp{@@HOME}, @samp{Laptop} and @samp{PC} tags with just the following
+keys: @kbd{C-c C-c @key{SPC} h l p @key{RET}}.  Switching from
+@samp{@@HOME} to @samp{@@WORK} would be done with @kbd{C-c C-c w
+@key{RET}}.
 
 What if you have globally defined your preferred set of tags using the
 variable @code{org-tag-alist}, but would like to use a dynamic tag list
-in a specific file?  Just add and empty TAGS option line to that file:
+in a specific file?  Just add an empty TAGS option line to that file:
 
 @example
 #+TAGS:
@@ -3141,7 +3157,7 @@ produced.  @xref{Text interpretation}, for more details.
 @section ASCII export
 @cindex ASCII export
 
-ASCII export produces an simple and very readable version of an Org-mode
+ASCII export produces a simple and very readable version of an Org-mode
 file.
 
 @cindex region, active
@@ -3170,15 +3186,21 @@ at a different level, specify it with a prefix argument.  For example,
 @end example
 
 @noindent
-creates only top level headlines and does the rest as items.
+creates only top level headlines and does the rest as items.  When
+headlines are converted to items, the indentation of the text following
+the headline is changed to fit nicely under the item.  This is done with
+the assumption that the first bodyline indicates the base indenation of
+the body text.  Any indenation larger than this is adjusted to preserve
+the layout relative to the first line.  Should there be lines with less
+indentation than the first, these are left alone.
 
 @node HTML export, XOXO export, ASCII export, Exporting
 @section HTML export
 @cindex HTML export
 
-Org-mode contains an HTML exporter with extensive HTML formatting, in
-ways similar to John Grubers @emph{markdown} language, but with
-additional support for tables.
+Org-mode contains an HTML (XHTML 1.0 strict) exporter with extensive
+HTML formatting, in ways similar to John Grubers @emph{markdown}
+language, but with additional support for tables.
 
 @cindex region, active
 @cindex active region
@@ -3358,8 +3380,6 @@ the first headline will not be exported either.
 Toggle the COMMENT keyword at the beginning of an entry.
 @end table
 
-
-
 @node Enhancing text, Export options, Comment lines, Text interpretation
 @subsection Enhancing text for export
 @cindex enhancing text
@@ -3418,6 +3438,11 @@ fixed-width font.
 @item C-c :
 Toggle fixed-width for entry (QUOTE) or region, see below.
 @end table
+
+@cindex linebreak, forced
+@item 
+A double backslash @emph{at the end of a line} enforces a line break at
+this position.
 @end itemize
 
 If these conversions conflict with your habits of typing ASCII text,
@@ -3531,18 +3556,18 @@ the two following forms:
 
 @r{or} 
  
-("project-name"  
-    ("component1" :property value :property value ...)
-    ("component2" :property value :property value ...)
-    ...)
+("project-name"  :components ("project-name" "project-name" ...))
+
 @end lisp
 
 In both cases, projects are configured by specifying property values.
 A project defines the set of files that will be published, as well as
-the publishing configuration to use when publishing those files. 
-When a project takes the second form listed above, the individual
-property lists are taken to be "components" of the project, which
-group together files requiring different publishing options. 
+the publishing configuration to use when publishing those files.  When
+a project takes the second form listed above, the individual members
+of the ``components'' property are taken to be components of the
+project, which group together files requiring different publishing
+options. When you publish such a ``meta-project'' all the components
+will also publish.
 
 @node File sources and destinations, Selecting files, Project alist, Configuration
 @subsection Sources and destinations for files
@@ -3598,7 +3623,7 @@ specify the publishing function.
 
 The function must accept two arguments: a property list containing at
 least a @code{:publishing-directory} property, and the name of the file
-to be published.  I should take the specified file, make the necessary
+to be published.  It should take the specified file, make the necessary
 transformation (if any) and place the result into the destination folder.
 You can write your own publishing function, but @code{org-publish}
 provides one for attachments (files that only need to be copied):
@@ -3737,8 +3762,7 @@ right place on the webserver, and publishing images to it.
 
 @lisp
 (setq org-publish-project-alist
-      '(("website"
-         ("orgfiles"
+      '(("orgfiles"
           :base-directory "~/org/"
           :base-extension "org"
           :publishing-directory "/ssh:user@@host:~/html/notebook/"
@@ -3762,7 +3786,8 @@ right place on the webserver, and publishing images to it.
           :base-directory "~/other/"
           :base-extension "css\\|el"
           :publishing-directory "/ssh:user@@host:~/html/other/"
-          :publishing-function org-publish-attachment))))
+          :publishing-function org-publish-attachment)
+         ("website" :components ("orgfiles" "images" "other"))))
 @end lisp
 
 @node Triggering publication,  , Sample configuration, Publishing
@@ -3917,7 +3942,7 @@ current file.  The corresponding variables are @code{org-todo-keywords}
 and @code{org-todo-interpretation}.
 @item #+TAGS:  TAG1(c1) TAG2(c2)
 These lines (several such lines are allowed) specify the legal tags in
-this file, and (potionally) the corresponding @emph{fast tag selection}
+this file, and (potentially) the corresponding @emph{fast tag selection}
 keys.  The corresponding variable is @code{org-tag-alist}.
 @item #+CATEGORY:
 This line sets the category for the agenda file.  The category applies
@@ -3926,7 +3951,7 @@ end of the file.
 @item #+TBLFM:
 This line contains the formulas for the table directly above the line.
 @item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+OPTIONS:
-These lines provide setting for exporting files.  For more details see
+These lines provide settings for exporting files.  For more details see
 @ref{Export options}.
 @end table
 
@@ -4133,7 +4158,7 @@ turn it on for all @file{README} files?}
 @end lisp
 
 @item @b{I would like to use editing features of org-mode in other
-modes, is his possible?}@*
+modes, is this possible?}@*
 @c
 Not really.  For tables there is @code{orgtbl-mode} which implements the
 table editor as a minor mode.  For other features you need to switch to
@@ -4337,12 +4362,6 @@ with other code out there.
 The following extensions for Org-mode have been written by other people:
 
 @table @asis
-@cindex @file{org-checklet.el}
-@item @file{org-checklet.el} by Frank Ruell
-Provides checklist of items which can be either checked or unchecked.
-This is similar to the TODO functionality in Org-mode, but never shows
-up in the agenda.  @file{org-checklet} is freely available at
-@url{http://www.emacswiki.org/cgi-bin/emacs/org-checklet.el}.
 @cindex @file{org-mouse.el}
 @item @file{org-mouse.el} by Piotr Zielinski
 This package implements extended mouse functionality for Org-mode.  It
@@ -4557,8 +4576,8 @@ other things.
 Linking to VM/BBDB/GNUS was inspired by @i{Tom Shannon}'s
 @file{organizer-mode.el}.
 @item
-@i{David O'Toole} wrote @file{org-publish.el} and came up with lots is
-ideas for small changes.
+@i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
+chapter about publishing.
 @item
 @i{J@"urgen Vollmer} contributed code generating the table of contents
 in HTML output.

二进制
orgcard.pdf


+ 1 - 1
orgcard.tex

@@ -1,5 +1,5 @@
 % Reference Card for Org Mode
-\def\orgversionnumber{4.34}
+\def\orgversionnumber{4.36}
 \def\year{2006}
 %
 %**start of header

部分文件因为文件数量过多而无法显示