* contrib/lisp/org-export.el (org-export-dispatch)
(org-export-dispatch-ui): Add new entries for the new HTML
exporter.
* EXPERIMENTAL/org-e-html.el: New file. This is a very rough
cut based out on org-xhtml.el and org-e-latex.el. The file
retains all the LaTeXisms in either commented form or
otherwise. This is deliberate so as to have a quick look at
the reference implementation. Retaining the organization
style of org-xhtml.el would enable easy creation of
org-e-odt.el by simply replacing e-html with e-odt for the
most part.
The changes here covers fairly a good ground - say 90% - of my
unit test file.
* contrib/lisp/org-export.el (org-export-as, org-export-to-buffer,
org-export-to-file): Add an optional argument to prevent including
files and executing Babel code.
This can be used as a basis for an Org to Org exporter.
* contrib/lisp/org-element.el (org-element-recursive-objects): Add
macro object type to recursive types.
(org-element-object-restrictions): Macros can only contain other
macros.
* contrib/lisp/org-export.el (org-export-get-inbuffer-options): Parse
macro value, unless it it meant to be eval'ed.
(org-export-expand-macro): Expand macros recursively.
* contrib/lisp/org-element.el (org-element-link-parser): Do not parse
radio link as a recursive link.
* contrib/lisp/org-export.el (org-export-solidify-link-text): Make
sure "\" isn't allowed in solidified strings. This is required to
allow entities in radio targets.
* EXPERIMENTAL/org-e-latex.el (org-e-latex-link): Apply changes to
radio links.
* EXPERIMENTAL/org-e-ascii.el (org-e-ascii-link): Apply changes to
radio links.
* contrib/lisp/org-export.el (org-export-get-genealogy,
org-export-get-parent-paragraph): New functions.
(org-export-get-parent-headline, org-export-get-previous-element,
org-export-get-next-element): Internally use new function.
* EXPERIMENTAL/org-e-latex.el (org-e-latex-link--inline-image,
org-e-latex-link): Apply changes to topology functions.
This new function is especially useful since every object derives its
properties from those the containing paragraph.
* contrib/lisp/org-element.el (org-element-object-restrictions): Allow
plain links in link description.
* contrib/lisp/org-export.el (org-export-default-inline-image-rule):
New variable.
(org-export-inline-image-p): Use rules instead of extensions. A rule
is a regexp applied to path for a given type of link. It allows to
extend inline images to non-local files.
* EXPERIMENTAL/org-e-latex.el (org-e-latex-inline-image-rules): New
variable.
(org-e-latex-inline-image-extensions): Removed variable
There are two motivations behind this change. The first one is to
allow, for example, an HTML exporter to define a rule like the
following:
("http" . "\\.\\(png\\|jpg\\|jpeg\\|gif\\)\\(\\?\\(\\w+=\\w+&?\\)*\\)?")
The other one is to properly define thumbnails (clickable images),
like the following:
[[http://orgmode.org][file:~/my-logo.png]]
* contrib/lisp/org-export.el (org-export-filters-alist): New variable.
(org-export-install-filters): New function.
* EXPERIMENTAL/org-e-ascii.el (org-e-ascii-filters-alist): New variable.
Back-end specific filters can now be installed in communication
channel with `org-BACKEND-filters-alist' variable.
* contrib/lisp/org-export.el (org-export-get-environment): Renamed
function from org-export-collect-options. Also make arguments
optionals.
(org-export-as): Apply renaming. Refactor code a bit.
(org-export-get-inbuffer-options): Remove string argument from
signature. Backend is now optional. Also, check if option match is
really a keyword.
(org-export-get-global-options, org-export-parse-option-keyword): Make
backend argument optional.
* contrib/lisp/org-export.el (org-export-collect-options): Remove
useless argument.
(org-export-initial-options): Add an `:input-file' property in
communication channel.
* contrib/lisp/org-export.el (org-export-initial-options): Initialize
correctly some macros when buffer is a clone.
(org-export-expand-macro): Ignore output when macro's value is nil.
* contrib/lisp/org-element.el (org-element-map): Remove included file
expansion part.
* contrib/lisp/org-export.el (org-export-as): Expand include keywords
before executing blocks.
(org-export-expand-include-keyword, org-export-prepare-file-contents):
New functions.
(org-export-included-file, org-export-parse-included-file): Removed
functions.
* EXPERIMENTAL/org-e-ascii.el (org-e-ascii-keyword): Remove include
keyword handling.
* EXPERIMENTAL/org-e-latex.el (org-e-latex-keyword): Remove include
keyword handling.
Back-ends do not need anymore to take care of #+include keywords.
This change is required since file inclusion can potentially break any
structure. Hence, it should be done before parsing.
* contrib/lisp/org-export.el (org-export-with-current-buffer-copy):
Copy `outline-level' value in the temporary buffer. This fixes
a bug introduced by commit
10b06ae53c.
* contrib/lisp/org-element.el (org-element-item-parser): If item's
first line is empty, ensure contents start at a beginning of line so
that child can be correctly parsed.
* contrib/lisp/org-element.el (org-element-dual-keywords): Move
caption in the dual keywords category.
(org-element--affiliated-re): Change regexp matching a dual keyword.
(org-element-collect-affiliated-keywords): Dual parsed keywords also
get their optional value parsed as a secondary string.
* EXPERIMENTAL/org-e-latex.el (org-e-latex--caption/label-string,
org-e-latex-src-block): Apply caption status change.
* EXPERIMENTAL/org-e-ascii.el (org-e-ascii--build-caption): Apply
caption status change.
(org-e-ascii--list-listings, org-e-ascii--list-tables): Apply caption
status change. Also use short caption name when available.
The status change implies a syntax change. Captions can now share
#+results: syntax, which mean that they can have a secondary
value. Thus, the following Org snippets are valid, the first two being
equivalent.
#+caption: long name
#+caption[]: long name
#+caption[short name]: long name
* contrib/lisp/org-export.el (org-export-get-inbuffer-options):
Replace macro with an empty string when no value is provided.
Ignore macros with an ill-formed key.
* contrib/lisp/org-export.el (org-export-option-alist): Add filters as
properties in the communication channel. This allows back-end
developers to install their own filters at run time instead of
making them reside in a global variable.
(org-export-data, org-export-as): Read filters from communication
channel instead of global variables.
(org-export-filter-apply-functions): Only accept list of functions.
Also change order of calling: it is now LIFO.
* contrib/lisp/org-export.el (org-export-collect-elements): Change
output to list of elements instead of their beginning position.
Also add an optional predicate argument for fine grain control.
Remove back-end argument.
(org-export-collect-tables, org-export-collect-listings): Apply
changes from previous function.
(org-export-collect-figures): Apply changes from previous function.
Also require a predicate to correctly define the concept of figure.
* contrib/lisp/org-export.el (org-export-get-ordinal): Correctly
handle predicate in `org-export-get-ordinal'. Also allow to count
more than one element type in the same sequence with optional
argument TYPES.
* contrib/lisp/org-element.el (org-element-quote-section-parser):
Assume point is at quote-section beginning.
(org-element-guess-type): Move point to section beginning before
calling for quote-section parser.
(org-element-parse-elements, org-element-current-element): Correctly
detect and parse quote section.
* EXPERIMENTAL/org-e-latex.el (org-e-latex-export-to-latex,
org-e-latex-export-to-pdf): New functions.
* contrib/lisp/org-export.el (org-export-dispatch): Make use of new
functions.
* contrib/lisp/org-export.el (org-export-output-file-name): New function.
(org-export-to-file): Remove post-process and pub-dir arguments. Add
a file argument to specify an output file.
* contrib/lisp/org-export.el (org-export-collect-tree-properties):
Ensure `:headline-offset' is filled before `:headline-numbering'
since the latter depends on the former.
(org-export-collect-headline-numbering): Use headline elements as keys
in the returned alist, instead of just beginning numbers.
(org-export-get-headline-number): Apply key change.
* contrib/lisp/org-export.el (org-export-resolve-fuzzy-link): Now
return the full object (for a target) or element (for an headline)
when a match is found. Also rewrite internals so it doesn't rely
on :headline-alist.
(org-export-collect-tree-properties): Remove :headline-alist property
from communication channel, since `org-export-resolve-fuzzy-link'
doesn't use it anymore. Also store full target objects
in :target-list property, not only raw names. Fix an argument name
mismatch, too.
Previous version of org-export-resolve-fuzzy-link returned beginning
position as the identifier for the headline found, which is pretty
weak when files are included in the parsed buffer.
* contrib/lisp/org-element.el (org-element--element-block-re): New
variable.
(org-element-current-element): New function.
(org-element-parse-elements): Make use of the new specialized function
instead of `org-element-at-point'. Also narrow buffer to current
container (greater element or recursive object) being parsed to
improve search speed.
(org-element-comment-parser): Speed-up parsing for comments at column 0.
(org-element-guess-type): Make comment regexp less restrictive, due to
comment optimizations.
* contrib/lisp/org-export.el (org-export-handle-code): Allow to delay
processing of source code by storing line numbers and references in
text properties attached it.
* contrib/lisp/org-export.el (org-export-collect-options): Default
title is retrieved before in-buffer settings are read. Also, be
more careful about indirect buffers.
* contrib/lisp/org-element.el (org-element-parse-objects): Untabify
strings between objects to avoid any `tab-width' mismatch.
* contrib/lisp/org-element.el (org-element-normalize-contents): No
longer need to handle tabs.
* contrib/lisp/org-element.el (org-element-map): Remove use of
`org-export-update-info'.
* contrib/lisp/org-export.el (org-export-persistent-properties,
org-export-persistent-properties-list): Remove variables
(org-export-collect-tree-properties): Rename from
`org-export-initialize-persistent-properties'.
(org-export-data): Get rid of `org-export-update-info' calls.
(org-export-as): Use new `org-export-collect-tree-properties' name.
(org-export-resolve-coderef, org-export-get-loc): New functions.
(org-export-handle-code): Use new functions instead of removed
properties. Reformat code. Change signature.
* contrib/lisp/org-element.el (org-element-section-parser,
org-element-section-interpreter): New functions
(org-element-greater-elements): Add new element to the list.
(org-element-at-point): Change arguments to handle a new section mode.
(org-element-guess-type): Accept an optional argument to look for
sections in priority.
(org-element-parse-buffer): Start in section mode by default. Thus
any text before the first headline is still in a section of his
own.
(org-element-parse-elements): Handle new section mode.
* contrib/lisp/org-export.el (org-export-update-info): No longer need
to keep it updated.
(org-export-collect-footnote-definitions,
org-export-footnote-first-reference-p): Get rid of dependency on the
removed property.
* contrib/lisp/org-export.el (org-export-table-format-info): Now
`:width' is properly retrieved with cookies where alignement is
missing (i.e. "<6>"). Also `:row-groups' contains groups of
standard lines only (colgroups and width lines are skipped).
* contrib/lisp/org-export.el (org-export-update-info): `:genealogy' is
now a full flat list of objects and elements containing current
object or element. Thus, `:parent-properties' and
`:inherited-properties' are now obsolete, and removed.
(org-export-data): Apply change to `:genealogy' property.
(org-export-get-parent-headline): New function to fullfil one common
need.
(org-export-last-sibling-p, org-export-included-file): Make use of the
new function.
* contrib/lisp/org-export.el (org-export-get-subtree-options):
Correctly get `:title: from headline when no "EXPORT_TITLE" property
is defined. Also assume point is at subtree beginning.
(org-export-as): Fix subtree parsing. The subtree starts at point or
at first heading above. Contents do not include the first headline.
Rename `org-on-heading-p' and `org-on-target-p' to
`org-at-heading-p' and `org-at-target-p' to be more
consistent with the org-at-*-p family.
Also define two aliases.
* contrib/lisp/org-export.el
(org-export-collect-footnote-definitions): Change key to footnote
number, retrieved with `org-export-get-footnote-number'. Also, do
not use beginning position as label for inline footnotes, as those
are weak identifiers.
* contrib/lisp/org-element.el (org-element-headline-parser): Update
list of attributes in the docstring.
(org-element-inlinetask-parser): Complete attributes with properties
inherited from any property drawer within the inlinetask and with
time properties (i.e. scheduled, clock...).
* contrib/lisp/org-element.el (org-element-map): Change name of local
variables to prevent variable name collisions with the function
around org-element-map.
* contrib/lisp/org-export.el (org-export-persistent-properties-list):
Add omitted persistent properties.
This patch also updates documentation with regards to persistent properties.
* contrib/lisp/org-export.el (org-export-collect-headlines): Simplify
function, in order to allow greater flexibility to build a proper
table of contents.
EXPERIMENTAL/org-e-latex.el (org-e-latex-link): Apply changes.
contrib/lisp/org-export.el (org-export-inline-image-p): Remove
description of the link as a required argument, since this function is
called with link contents anyway.
From the author: "This is a rewrite of Org-Velocity for speed. Delays due
to file size should no longer be perceptible. I have also added in-line
previews of entry contents and dropped support for Org-Remember."
* contrib/lisp/org-export.el (org-export-persistent-properties-list):
Remove unused persistent properties.
(org-export-initialize-persistent-properties): Delegate headline
numbering alist to `org-export-collect-headline-numbering'.
(org-export-collect-headline-numbering): New function.
(org-export-update-info): Remove part relative to headline numbering.
(org-export-get-headline-number): Use new `:headline-numbering' to get
current headline number.
Headline numbering is not done on demand anymore, but built once and
for all at the beginning of the export process, and stored in an
alist, accessible through the `:headline-numbering' property in the
communication channel.
Thanks to Thorsten Jolitz for contributing support for this new
language.
* Makefile (LISPF): Add ob-picolisp to the Makefile.
* contrib/babel/langs/ob-picolisp.el: Remove from contrib.
* lisp/ob-picolisp.el: Add to core lisp directory.
* lisp/org.el (org-babel-load-languages): Add Pico Lisp to the list of
supported code block languages.
* contrib/lisp/org-export.el (org-export-with-current-buffer-copy):
Full invisibility prevents `current-column' from returning useful
values. Thus, keep visibility related text-properties and set
`buffer-invisibility-spec' to nil.
The TOC max level which could be specified by user is lost during the
export operation. However, this information could be useful in particular
with the ODT exporter. So if another script work on the ODT afterward and
ask to re-compute the TOC, the new TOC will keep this max level.
TINYCHANGE.
* contrib/lisp/org-odt.el (org-export-odt-max-image-size): New
variable.
(org-odt-image-size-from-file): Honor above variable.
Ivars Finvers <ifinvers@shaw.ca> says -
One minor issue that I came across in using the ODT
exporter relates to the size of embedded images. I often need
to include plots of simulation results in my documents. These
plots can be larger than a normal page, which causes problems
in the text flow. In LaTeX, I've grown used to being able to
automatically rescale a plot to match the maximum text width
of the document. It would be useful to have such a feature
for the ODT exporter.
Nick Dokos <nicholas.dokos@hp.com> writes:
> Eric Schulte <schulte.eric@gmail.com> wrote:
>
>> The attached updated patch fixes a bug in the original.
>>
>
> Minor problem in applying:
>
> ,----
> | $ git apply ~/Mail/inbox/724
> | /home/nick/Mail/inbox/724:671: trailing whitespace.
> | #+name:
> | /home/nick/Mail/inbox/724:599: new blank line at EOF.
> | +
> | warning: 2 lines add whitespace errors.
> `----
The attached version fixes these issues, Thanks -- Eric
>From 0e43d59ee8d46a63f86780a502de726271bc39de Mon Sep 17 00:00:00 2001
From: Eric Schulte <schulte.eric@gmail.com>
Date: Fri, 28 Oct 2011 10:44:21 -0600
Subject: [PATCH] removing code block, results and call-line synonyms -- BREAKING CHANGE
Following a round of on-list discussion many code block synonyms have
been removed, moving forward the following syntax is valid.
- call lines are specified with #+call:
- code blocks are named with #+name:
- results are named with #+name:, however results generated by a code
block may still be labeled with #+results:, and tables named with
#+tblname: will be considered to be named results
The following function may be used to update an existing Org-mode
buffer to the new syntax.
(defun update-org-buffer ()
"Update an Org-mode buffer to the new data, code block and call line syntax."
(interactive)
(save-excursion
(flet ((to-re (lst) (concat "^[ \t]*#\\+" (regexp-opt lst t)
"\\(\\[\\([[:alnum:]]+\\)\\]\\)?\\:[ \t]*"))
(update (re new)
(goto-char (point-min))
(while (re-search-forward re nil t)
(replace-match new nil nil nil 1))))
(let ((old-re (to-re '("RESULTS" "DATA" "SRCNAME" "SOURCE")))
(lob-re (to-re '("LOB")))
(case-fold-search t))
(update old-re "name")
(update lob-re "call")))))
Note: If an old version of Org-mode (e.g., the one shipped with Emacs)
is installed on your system many of the important variables will
be pre-defined with a defvar and *will not* have their values
automatically updated, these include the following.
- org-babel-data-names
- org-babel-result-regexp
- org-babel-src-block-regexp
- org-babel-src-name-regexp
- org-babel-src-name-w-name-regexp
It may be necessary to either remove the source code of older
versions of Org-mode, or to explicitly evaluate the ob.el file.
* lisp/ob-exp.el (org-exp-res/src-name-cleanup): Updated
Documentation.
* lisp/ob-lob.el (org-babel-block-lob-one-liner-regexp): Updated
regular expression.
(org-babel-inline-lob-one-liner-regexp): Updated regular expression.
* lisp/ob-ref.el (org-babel-ref-resolve): Notice when something that
looks like a data results may actually be a code block.
* lisp/ob-table.el: Updated documentation.
* lisp/ob.el (org-babel-src-name-regexp): Simplified regexp.
(org-babel-get-src-block-info): Updated match strings.
(org-babel-data-names): Simplified acceptable names.
(org-babel-find-named-block): Indentation.
(org-babel-find-named-result): Updated to not return a code block as
a result.
* lisp/org.el (org-fontify-meta-lines-and-blocks-1): Removing
references to old syntactic elements.
(org-additional-option-like-keywords): Removing references to old
syntactic elements.
* contrib/babel/library-of-babel.org: Updated to make use of the new
syntax.
* testing/examples/babel-dangerous.org: Updated to make use of the new
syntax.
* testing/examples/babel.org: Updated to make use of the new syntax.
* testing/examples/ob-awk-test.org: Updated to make use of the new
syntax.
* testing/examples/ob-fortran-test.org: Updated to make use of the new
syntax.
* testing/lisp/test-ob.el: Removed two bad tests which tested the
literal values of old regular expressions rather than their
behavior.
* contrib/lisp/org-lparse.el (org-lparse-format-org-link): Fix
issues with formatting of custom links - pass the right
backend to the custom formatter.
Fix for bug reported by Christian Moe here:
http://lists.gnu.org/archive/html/emacs-orgmode/2011-11/msg00474.html
TODO: Modify `org-bbdb-export' to support odt backend. Review contrib
modules for odt compatibility.
* contrib/lisp/org-xhtml.el (org-xhtml-begin-environment)
(org-xhtml-end-environment): Fix param list.
Continue commit 2e0e462d14.
Support for annotation blocks for xhtml backend still needs to
be ported. See org-exp-blocks.el for more information.
Thanks to Sergey Litvinov for contributing this language support!
* lisp/ob-fortran.el: Adding support for Fortran code blocks.
* Makefile (LISPF): Compile Fortran support.
* lisp/org.el (org-babel-load-languages): Adding fortran to this list.
* contrib/lisp/org-odt.el (org-odt-is-formula-link-p):
Recognize *.mml and *.mathml as mathml files. Recognize *.odf
files as OpenDocument formula file.
(org-odt-copy-formula-file): Use `org-odt-zip-extract-one' to
handle ODF formula files.
(org-export-odt-format-formula): If a ODF formula link has no
caption or label, embed it inline. Otherwise embed it as
displayed.
* contrib/lisp/org-odt.el (org-odt-update-styles-file)
(org-odt-write-mimetype-file): New. Extracted out of
`org-odt-save-as-outfile'.
(org-odt-save-as-outfile): Use above routines.
(org-export-odt-tmpdir-prefix)
(org-odt-init-outfile): Misc changes.
Preparing for introducing `org-export-as-odf'. The new
command will create OpenDocument Formula files out of LaTeX
fragments. Dynamic variable `org-lparse-backend' will be set
to 'odf during this command.
* contrib/lisp/org-odt.el (org-odt-encode-plain-text): New.
(org-odt-format-line)
(org-odt-format-source-code-or-example-plain): Use it.
(org-odt-format-object-description): New. Format svg:title
and svg:desc elements out of plain text.
(org-export-odt-format-formula, org-export-odt-format-image):
Check whether the incoming formula or image is generated out
of a latex fragment. If yes, pass the latex fragment for
downstream processing.
(org-odt-format-frame): Check if the object that is enclosed
in the frame has metadata associated with it. If yes, dump it
as part of svg:title and svg:desc elements.
(org-odt-protect-latex-fragment): New after advice for
`org-format-latex-as-mathml'. Fixes the following bug
http://lists.gnu.org/archive/html/emacs-orgmode/2011-11/msg00176.html
* contrib/lisp/org-odt.el
(org-odt-format-source-line-with-line-number-and-label): When
numbering was turned off, src blocks were getting stripped
from export. Fixed this regression.
* contrib/lisp/org-odt.el (org-odt-begin-table)
(org-export-odt-format-formula, org-export-odt-format-image)
(org-odt-entity-frame-styles, org-odt-format-entity): Use
"__Table__", "__Figure__", "__MathFormula__",
"__DvipngImage__" as internal category handles.
(org-export-odt-user-categories)
(org-export-odt-get-category-from-label)
(org-odt-label-styles, org-odt-category-map-alist): New
variables.
(org-odt-entity-labels-alist): Add label style as an
additional entry. Update docstring.
(org-odt-get-label-category-and-style): New defun.
(org-odt-add-label-definition)
(org-odt-format-label-definition)
(org-odt-format-label-reference)
(org-odt-fixup-label-references)
(org-odt-format-entity-caption, org-odt-init-outfile):
Modified.
(org-odt-label-def-ref-spec): Removed. Superceded by
`org-odt-label-styles'.
(org-odt-get-label-definition): Removed
Give user more control over how labels are generated and
referenced. This is accomplished by mapping each label to a
category-handle which in turn is used to locate the category,
counter and style to be associated with label.
* contrib/lisp/org-lparse.el (org-lparse-special-blocks): New
variable. Add "annotation" blocks in addition to the already
existing "list-table" blocks.
(org-lparse-get-block-params): New helper routine to read
params passed to a special block. Used in conjunction with
OpenDocument annotations and with parsing of "#+ATTR_ODT:..."
lines attached to images.
(org-lparse-par-open-stashed): New let-bound variable.
(org-do-lparse): Bind `org-lparse-par-open-stashed'. Treat
all blocks listed in `org-lparse-special-blocks' as special
environments. Honor options passed as part of
"#+begin_<block-name>[options]".
(org-lparse-preprocess-after-blockquote-hook): Handle all
blocks listed in `org-lparse-special-blocks' specially.
(org-lparse-strip-experimental-blocks-maybe-hook): New hook
that hooks up to `org-export-preprocess-hook'. Removes blocks
listed under `org-lparse-special-blocks' while exporting to
formats other than "odt" or "xhtml".
(org-lparse-begin-environment, org-lparse-end-environment):
Modified signature to accomodate block params.
(org-lparse-stash-save-paragraph-state)
(org-lparse-stash-pop-paragraph-state): New helper routines
for use with emitting of OpenDocument annotations.
(org-lparse-list-table-enable): Removed. "list tables" are
now always enabled.
* contrib/lisp/org-odt.el (org-odt-begin-annotation)
(org-odt-end-annotation): New routines.
(org-odt-begin-environment, org-odt-end-environment): Handle
block params. Handle the new "annotation" block.
(org-odt-format-author, org-odt-iso-date-from-org-timestamp):
New helper routnes for emitting author and comment timestamps
with annotation blocks.
(org-odt-update-meta-file): Use above routines.
(org-export-odt-format-image): Use
`org-lparse-get-block-params' to parse inline image attributes.
(org-odt-format-date): Removed. Superceded by
`org-odt-iso-date-from-org-timestamp'.
See http://lists.gnu.org/archive/html/emacs-orgmode/2011-10/msg01251.html