* contrib/lisp/org-e-latex.el (org-e-latex--math-table): Contiguous
tables sharing the same math mode are wrapped within the same
environment.
This patch will allow to write:
#+label: I_2
#+attr_latex: :mode math :environment bmatrix
| a | b |
|---+---|
| c | d |
#+attr_latex: :mode math :environment bmatrix :math-prefix "\\times"
| 1 | 0 |
|---+---|
| 0 | 1 |
#+attr_latex: :mode math :environment bmatrix :math-prefix "="
| 1 | 0 |
|---+---|
| 0 | 1 |
#+attr_latex: :mode math :environment bmatrix :math-prefix "\\times"
| a | b |
|---+---|
| c | d |
#+attr_latex: :mode math :environment bmatrix :math-prefix "="
| a | b |
|---+---|
| c | d |
and get:
\begin{equation}
\label{I_2}
\begin{bmatrix}
a & b \\
c & d \\
\end{bmatrix}
\times\begin{bmatrix}
1 & 0 \\
0 & 1 \\
\end{bmatrix}
=\begin{bmatrix}
1 & 0 \\
0 & 1 \\
\end{bmatrix}
\times\begin{bmatrix}
a & b \\
c & d \\
\end{bmatrix}
=\begin{bmatrix}
a & b \\
c & d \\
\end{bmatrix}
\end{equation}
* contrib/lisp/org-e-ascii.el (org-e-ascii-timestamp): Use new tool.
* contrib/lisp/org-e-groff.el (org-e-groff-timestamp): Use new tool.
* contrib/lisp/org-e-html.el (org-e-html-timestamp): Use new tool.
* contrib/lisp/org-e-latex.el (org-e-latex-timestamp): Use new tool.
* contrib/lisp/org-e-texinfo.el (org-e-texinfo-timestamp): Use new
tool.
* contrib/lisp/org-e-latex.el (org-e-latex--inline-image): Rename from
`org-e-latex-link--inline-image'. Use new attributes.
(org-e-latex-link): Use new function.
* contrib/lisp/org-e-latex.el (org-e-latex-table-matrix-macros,
org-e-latex-default-table-mode): New variables.
(org-e-latex-tables-verbatim): Removed variable.
(org-e-latex-tables-booktabs): Update docstring.
(org-e-latex--align-string, org-e-latex--org-table,
org-e-latex--table.el-table): Rename functions from, respectively
`org-e-latex-table--align-string', `org-e-latex-table--org-table' and
`org-e-latex-table--table.el-table'. Use new attributes.
(org-e-latex-table,org-e-latex-table-row): Use new attributes.
(org-e-latex--math-table): New function.
(org-e-texinfo--generate-menu-items): Use optional title in menu if
present.
(org-e-texinfo-headline): Use optional title in node entry if present.
(org-e-texinfo--generate-menu-list): Omit headlines with :noexport:
tag when generating menu entries.
* contrib/lisp/org-export.el (org-export--get-subtree-options): Store
value of options with `split' behaviour as a list of strings, not
simply as a string. Small refactoring.
* testing/lisp/test-org-export.el: Add tests.
* contrib/lisp/org-e-beamer.el (org-e-beamer-environments-special):
Add "fullframe" environment. Change access key for "againframe".
(org-e-beamer--frame-level): "fullframe" environment also sets the
frame level for the tree.
(org-e-beamer--format-frame): Ignore headline title when environment
is "fullframe".
(org-e-beamer-select-environment): Change access key for "againframe".
* contrib/lisp/org-e-beamer.el (org-e-beamer-environments-special):
Add "columns" as a new special environment.
(org-e-beamer--format-block): Allow options in columns environment
when explictly requested as a BEAMER_env property. Small refactoring.
* contrib/lisp/org-e-latex.el: Floating tables get a \centering
declaration, otherwise the table get wrapped in \begin{center}
and \end{center} environment.
Thanks to Andreas Leha for reporting it.
TINYCHANGE
* contrib/lisp/org-export.el (org-export-define-derived-backend): Add
`:parent' property to derived backend.
(org-export-derived-backend-p): New function.
* testing/lisp/test-org-export.el: Add tests.
This function can be useful in filters implemation. I.e.
(defun my-filter (contents backend info)
(when (memq backend '(e-latex e-beamer some-derived-backend-from-latex))
...))
can be replaced with:
(defun my filter (contents backend info)
(when (org-export-derived-backend-p backend 'e-latex)
...))
* contrib/lisp/org-e-latex.el: Replaced a set of \begin{center}
and \end{center} environment markers with a \centering
declaration.
Using both \begin{table} and \being{center} environments leads to double
the vertical space around the float, whereas \centering adds none.
TINYCHANGE
* contrib/lisp/org-export.el (org-export-define-backend,
org-export-define-derived-backend): Modify backend properties if
backend is already registered.
(org-export-registered-backends): Use defvar instead of defconst so
a reload doesn't reset it.
* contrib/lisp/org-export.el (org-export-registered-backends): New
variable.
(org-export-define-backend, org-export-define-derived-backend): Use
new variable. Also redefine how sub-menus are defined.
(org-export-backend-filters, org-export-backend-menu,
org-export-backend-options, org-export-backend-translate-table): New
functions.
(org-export-get-environment, org-export--parse-option-keyword,
org-export--get-subtree-options, org-export--get-inbuffer-options,
org-export--get-global-options, org-export-install-filters,
org-export-with-backend): Access to data stored in new variable.
(org-export-dispatch-ui): Display sub-menus according to new
definition.
(org-export-dispatch-menu-entries): Removed variable.
* contrib/lisp/org-e-beamer.el: Use new sub-menu definition.
(org-e-beamer--format-section, org-e-beamer-item,
org-e-beamer-keyword): Use `org-export-with-backend' instead of
relying on removed variables.
* testing/lisp/test-org-export.el: Update tests.
This patch gets rid of "invisible" variables, that is variables
defvar'ed within a macro.
* contrib/lisp/org-e-publish.el (org-e-publish-collect-index): Do not
store text properties from strings in the cache. Instead focus on
necessary data only.
(org-e-publish-index-generate-theindex): Apply changes to previous
function.
* contrib/lisp/org-e-texinfo.el (org-e-texinfo--sanitize-headline-contents,
org-e-texinfo--generate-menu-list): Provide communication channel as
as optional argument so `org-element-map' can properly skip ignored
elements.
(org-e-texinfo--find-copying, org-e-texinfo-headline,
org-e-texinfo-make-menu, org-e-texinfo-table-column-widths): Tiny
refactoring.
* contrib/lisp/org-e-beamer.el (org-e-beamer-template): Output "\date{}"
when :with-date is nil.
* contrib/lisp/org-e-latex.el (org-e-latex-template): Make sure output
contains "\date{}" when date is empty.
* contrib/lisp/org-export.el (org-export-with-date): New variable.
(org-export-options-alist): Use new variable.
* contrib/lisp/org-e-ascii.el (org-e-ascii-template--document-title):
Check `:with-date' property in communication channel.
* contrib/lisp/org-e-beamer.el (org-e-beamer-template): Check
`:with-date' property in communication channel.
* contrib/lisp/org-e-groff.el (org-e-groff--mt-head): Check
`:with-date' property in communication channel.
(org-e-groff-date-format): Remove variable.
* contrib/lisp/org-e-html.el (org-e-html--build-meta-info,
org-e-html--build-preamble, org-e-html--build-postamble): Check
`:with-date' property in communication channel.
(org-e-html-format-date): Remove variable.
* contrib/lisp/org-e-latex.el (org-e-latex-template): Check
`:with-date' property in communication channel.
contrib/lisp/org-e-man.el: Do not redefine DATE keyword.
* contrib/lisp/org-export.el (org-export-get-category):
`org-entry-properties' is over-zealous when it comes to "CATEGORY"
property. Ignore its "???" return value, which only means it wasn't
able to find an appropriate category.
* contrib/lisp/org-export.el (org-export-before-processing-hook): New
variable.
(org-export-as): Run a hook just before expanding include keywords and
macros, and evaluating Babel blocks.
* testing/lisp/test-org-export.el: Add test.
* contrib/lisp/org-export.el (org-export-get-previous-element,
org-export-get-next-element): Correctly retrieve previous and next
object, if any, in secondary strings.
* testing/lisp/test-org-export.el: Add tests.
* contrib/lisp/org-export.el (org-export-as): Expand correctly
{{{title}}} and such when they already contain a regular macro.
This is done by expanding macros in two steps: at first regular
macros, then document specific macros.
(org-export-expand-macro): Remove function.
* testing/lisp/test-org-export.el: Add test.
* contrib/lisp/org-export.el (org-export-as):
`org-current-export-file' should refer to current, temporary, buffer
containing included contents, not to original buffer with include
keywords.
(org-export-with-current-buffer-copy): Buffer copy must contain the
whole buffer, possibly narrowed to a proper part, not only the
narrowed part.
* testing/lisp/test-org-export.el: Tweak tests.
* contrib/lisp/org-export.el (org-export-options-alist): Add an option
item to toggle smart quotes during export.
(org-export-with-smart-quotes, org-export-smart-quotes-alist,
org-export-smart-quotes-regexps): New variables.
(org-export-activate-smart-quotes): New function.
(org-export-data): Remove residual text properties.
* testing/lisp/test-org-export.el: Add tests.
* contrib/lisp/org-e-texinfo.el (org-e-texinfo-compile): Mirror recent
changes about base filename and default-directory made to
`org-e-latex-compile'.
* contrib/lisp/org-e-groff.el (org-e-groff-compile): Mirror recent
changes about base filename and default-directory made to
`org-e-latex-compile'.
* contrib/lisp/org-e-man.el (org-e-man-compile): Mirror recent changes
about base filename and default-directory made to
`org-e-latex-compile'.
* contrib/lisp/org-e-latex.el (org-e-latex-pdf-process): Update
docstring.
(org-e-latex-compile): "%b" is replaced with base filename, that is
filename without directory and extension.
* contrib/lisp/org-export.el (org-export-dispatch-ui): Make sure that
window displaying UI is tall enough. This fixes a bug where only
a part of the menu was displayed.
* contrib/lisp/org-e-latex.el (org-e-latex-compile): Fix compilation
when default-directory from current buffer doesn't match directory
from file being compiled. Small refactoring, too.
Thanks to Robert Klein for reporting the problem and suggesting a fix.
* contrib/lisp/org-export.el (org-export-dispatch-use-expert-ui):
Complete docstring.
(org-export-dispatch): Fix docstring. Clean dispatch buffer, if any,
each time the function is called.
(org-export-dispatch-ui): Make sure window containing dispatch buffer
is active when user is prompted for a key. Also remove cursor from
view.
(org-export-dispatch-action): Ring a bell when a wrong key is pressed.
In regular UI, also inform the user by a message.
* contrib/lisp/org-export.el (org-export-as): Expand include keywords
before macros. This allows to specify macro templates in the
included file.
* testing/examples/macro-templates.org: New file for testing purposes.
* testing/lisp/test-org-export.el: Add test.
* contrib/lisp/org-e-ascii.el (org-e-ascii-publish-to-ascii,
org-e-ascii-publish-to-latin1, org-e-ascii-publish-to-utf8): New
functions.
* contrib/lisp/org-e-html.el (org-e-html-publish-to-html): New
function.
* contrib/lisp/org-e-latex.el (org-e-latex-publish-to-latex,
org-e-latex-publish-to-pdf): New functions.
* contrib/lisp/org-e-publish.el (org-e-publish-org-to-latex,
org-e-publish-org-to-pdf, org-e-publish-org-to-ascii,
org-e-publish-org-to-latin1, org-e-publish-org-to-utf8,
org-e-publish-org-to-html): Remove functions.
Each back-end can define its own publishing functions. This patch
avoids to clutter org-e-publish.el.
* contrib/lisp/org-e-publish.el (org-e-publish-org-to-pdf): Don't
expect every file from a project to sit in :base-directory.
(org-e-publish-org-to): Make publishing directory optional.
* contrib/lisp/org-export.el: Correct reference to non-existing source
file, org-exp-blocks has been removed and the imported function is
now in ob-exp.
* contrib/lisp/org-export.el (org-export-define-backend,
org-export-define-derived-backend): Make sure a given entry won't be
added to menu more than once.
* contrib/lisp/org-e-publish.el (org-e-publish-org-to-pdf): First
publish in base directory, then move results to publishing
directory. It allows to correctly publish a document with images
generated by some Babel code.
* contrib/lisp/org-export.el (org-export-expand-macro): New function.
(org-export-as): Use new function.
* lisp/org.el (org-macro-expand, org-macro-replace-all): Change
signature. The function now accepts an alist of templates so it
doesn't have to rely only on `org-macro-templates'.
(org-macro-initialize-templates): {{{date}}} is not anymore an alias
for {{{time}}}. During export, it will provide the value stored in
DATE keyword instead.
* testing/lisp/test-org-export.el: Add tests.
* testing/lisp/test-org.el: Update tests.
* contrib/lisp/org-export.el (org-export-expand-include-keyword): Use
new functions to comma escape contents of included files when in an
example or a src block.
* org-e-odt.el (org-e-odt-styles-dir): Try more directories.
Don't throw an error, just send a message.
(org-e-odt): Fix a bug about deactivating an advice that was
activated by org-odt.el, not org-e-odt.el.
Thanks to Nick Dokos for reporting this.
* lisp/org-element.el (org-element-example-block-parser,
org-element-src-block-parser): Store value of example-blocks and
src-blocks unescaped.
(org-element-example-block-interpreter,
org-element-src-block-interpreter): Escape value again when storing
it.
* contrib/lisp/org-export.el (org-export-unravel-code): Don't clean
commas from code since org-element already took care of it.
* testing/lisp/test-org-export.el: Update test.
* testing/lisp/test-org-element.el: Add tests.
* lisp/org-element.el (org-element-object-restrictions): Allow links
in caption. Also allow inline-src-blocks and inline-babel-calls.
* contrib/lisp/org-e-ascii.el (org-e-ascii--unique-links): Handle
links in captions.
(org-e-ascii--describe-links): Small refactoring.
(org-e-ascii-template--document-title): Handle links in document
properties.
* lisp/org-element.el (org-element-parsed-keywords): Remove document
properties from the value.
(org-element-dual-keywords): Fix docstring.
(org-element-document-properties): New variable
* contrib/lisp/org-export.el (org-export--get-subtree-options,
org-export--get-inbuffer-options, org-export--get-global-options):
Use new variable instead of parsed keywords.
* contrib/lisp/org-e-ascii.el (org-e-ascii-indented-line-width,
org-e-ascii-paragraph-spacing): New variables.
(org-e-ascii-paragraph): Use a new variable.
(org-e-ascii-filter-paragraph-spacing): New function.
* contrib/lisp/org-e-html.el (org-e-html--build-preamble): Renamed
from `org-e-html-preamble'. Properly call user-provided preamble
function when appropriate. Refactor code.
(org-e-html--build-postamble): Renamed from `org-e-html-postamble.
Properly call user-provided preamble function when appropriate.
Refactor code.
(org-e-html-template): Small refactoring.
(org-e-html--translate): Use :html entries in `org-export-dictionary'
instead of :utf-8.
(org-e-html--build-meta-info): Renamed from `org-e-html-meta-info'.
Add docstring.
(org-e-html--build-style): Renamed from `org-e-html-style'. Add
docstring.
(org-e-html--build-mathjax-config): Renamed from
`org-e-html-mathjax-config'. Add docstring.
* org-e-groff.el (e-groff):
Removed quote at the beginning of the list of cons containing
the backend defition that is being passed to `org-export-define-backend'.
* contrib/lisp/org-e-groff.el (org-e-groff-latex-environment): Renamed
from `org-e-groff-groff-environment'.
(org-e-groff-latex-fragment): Renamed from
`org-e-groff-groff-fragment'.
* org-wikinodes.el
(org-wikinodes-clear-directory-targets-cache): Rename from
mispelled name.
(org-wikinodes-follow-link)
(org-wikinodes-clear-cache-when-on-target): Use the correct
name.
* lisp/org-element.el (org-element-center-block-parser,
org-element-drawer-parser, org-element-dynamic-block-parser,
org-element-footnote-definition-parser,
org-element-plain-list-parser, org-element-quote-block-parser,
org-element-special-block-parser, org-element-babel-call-parser,
org-element-comment-parser, org-element-comment-block-parser,
org-element-example-block-parser, org-element-export-block-parser,
org-element-fixed-width-parser, org-element-horizontal-rule-parser,
org-element-keyword-parser, org-element-latex-environment-parser,
org-element-paragraph-parser, org-element-property-drawer-parser,
org-element-src-block-parser, org-element-table-parser,
org-element-verse-block-parser): Change signature. Now use an
additional argument: affiliated.
(org-element--current-element): Skip affiliated keywords and pass them
as an argument to parsers. It prevents to walk through these
keywords twice: the first time to get to the first line of the
element, and a second time to collect the affiliated keywords.
* contrib/lisp/org-export.el (org-export-get-caption): Update function
since multiple affiliated keywords are now reversed.
* testing/lisp/test-org-element.el: Update tests.
* contrib/lisp/org-e-latex.el (org-e-latex--caption/label-string,
org-e-latex--wrap-label, org-e-latex-latex-environment):
Consistently call `org-export-solidify-link-text' so references can
match labels.
* contrib/lisp/org-e-latex.el: new customizable org-e-latex-known-errors
is an alist of possible errors, taken from org-e-latex--collect-errors
* contrib/lisp/org-e-latex.el (org-e-latex--collect-errors):
More concise code.
The previous explicit search for errors is replaced by an iteration
over the alist org-e-latex-known-errors.
* contrib/lisp/org-export.el (org-export-dispatch-ui): Do not use same
buffer name as previous export dispatcher. Also make sure the
temporary buffer is deleted once the export is done.
Handle enumeration more robustly. Numbered OpenDocument formula no
longer uses a table for typesetting of formula and it's number.
Also some renaming and moving around.
* contrib/lisp/org-e-ascii.el (org-e-ascii--build-caption,
org-e-ascii--list-listings, org-e-ascii--list-tables): Use new
caption tool.
* contrib/lisp/org-e-latex.el (org-e-latex--caption/label-string): New
signature. Use new caption tool.
(org-e-latex-link--inline-image, org-e-latex-src-block,
org-e-latex-table--org-table): Apply signature change.
* contrib/lisp/org-md.el (org-md-link): Use new caption tool.
* contrib/lisp/org-e-latex.el (org-e-latex-toc-command): New variable.
(org-e-latex-template): Use new variable.
Thanks to Thomas S. Dye for providing the patch.
* contrib/lisp/org-e-ascii.el: Add an entry for `org-export-dispatch'.
* contrib/lisp/org-e-beamer.el: Add an entry for `org-export-dispatch'.
* contrib/lisp/org-e-groff.el (e-groff): Use
`org-export-define-backend'. Add an entry for `org-export-dispatch'.
* contrib/lisp/org-e-html.el: Add an entry for `org-export-dispatch'.
* contrib/lisp/org-e-latex.el: Add an entry for `org-export-dispatch'.
* contrib/lisp/org-e-man.el: Use `org-export-define-backend'. Add an
entry for `org-export-dispatch'.
* contrib/lisp/org-e-odt.el: Add an entry for `org-export-dispatch'.
* contrib/lisp/org-e-texinfo.el: Use `org-export-define-backend'. Add an
entry for `org-export-dispatch'.
* contrib/lisp/org-md.el: Add an entry for `org-export-dispatch'.
* contrib/lisp/org-export.el (org-export-define-backend):
Add :menu-entry keyword.
(org-export-define-derived-backend): Add :menu-entry
and :sub-menu-entry keywords.
(org-export-dispatch-menu-entries): New variable.
(org-export-dispatch): Define a new interface.
(org-export-dispatch-ui): Rewrite function.
(org-export-dispatch-action): New function.
Every back-end defined through `org-export-define-backend' or
`org-export-define-derived-backend' can specify a menu entry for
`org-export-dispatch'. Navigating the menu is now a two levels
process.
* contrib/lisp/org-e-odt.el (org-e-odt--translate-description-lists):
This is a developer filter, which should be handled by
`org-export-define-backend'. Also, such filters do not require
a back-end check.
`org-export-*-functions' are user-oriented variables.
* contrib/lisp/org-e-beamer.el (org-e-beamer-environments-special):
Make "againframe" an hard-coded environment.
(org-e-beamer-headline): Handle "againframe" environment.
(org-e-beamer-select-environment): Provide support for "againframe"
environments.
A list marked with non-nil `:list-table' attribute will be deemed as a
list-table. A typical list-table will look like this:
,----
| #+attr_odt :list-table t
| - Row 1
| - 1.1
| - 1.2
| - 1.3
| - Row 2
| - 2.1
| - 2.2
| - 2.3
`----
Also fix regression in indented table caused by recent `section'
changes.
* org-e-groff.el
(org-e-groff-inline-image-rules): Added PNG and JPG as valid
inline suffixes.
(org-e-groff-raster-to-ps): Variable that contains the command
to execute raster to eps conversion.
(org-e-groff--letter-head): Updated logic to handle empty
FROM/TO in letter classes.
(org-e-groff-link--inline-image): Added logic to process
raster images.