You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1197 lines
38 KiB
1197 lines
38 KiB
7 years ago
|
=======================
|
||
|
Odt Writer for Docutils
|
||
|
=======================
|
||
|
|
||
|
:Author: Dave Kuhlman
|
||
|
:Contact: docutils-develop@lists.sourceforge.net
|
||
|
:Revision: $Revision: 7528 $
|
||
|
:Date: $Date: 2012-10-13 22:52:15 +0200 (Sa, 13 Okt 2012) $
|
||
|
:Copyright: This document has been placed in the public domain.
|
||
|
|
||
|
:abstract: This document describes the Docutils odtwriter
|
||
|
(rst2odt.py).
|
||
|
|
||
|
.. sectnum::
|
||
|
|
||
|
.. contents::
|
||
|
|
||
|
|
||
|
|
||
|
Introduction
|
||
|
============
|
||
|
|
||
|
What it does -- ``rst2odt.py`` translates reST
|
||
|
(reStructuredText) into a Open Document Format ``.odt`` file. You
|
||
|
can learn more about the ODF format here:
|
||
|
|
||
|
- `OASIS Open Document Format for Office Applications
|
||
|
(OpenDocument) TC`_
|
||
|
|
||
|
- `Open Document at Wikipedia`_
|
||
|
|
||
|
You should be able to open documents (.odt files) generated with
|
||
|
``rst2odt.py`` in ``OpenOffice/oowriter``.
|
||
|
|
||
|
You can learn more about Docutils and reST here: `Docutils`_
|
||
|
|
||
|
|
||
|
Requirements
|
||
|
============
|
||
|
|
||
|
In addition to the Docutils standard requirements, ``odtwriter``
|
||
|
requires:
|
||
|
|
||
|
- ElementTree -- Python (version 2.5 or later) now includes
|
||
|
ElementTree (``xml.etree.ElementTree``).
|
||
|
|
||
|
- Optional -- `Pygments`_ is required if you want syntax
|
||
|
highlighting of code in literal blocks. See section `Syntax
|
||
|
highlighting`_.
|
||
|
|
||
|
- Optional -- `Python Imaging Library`_ (PIL) is required if on an
|
||
|
image or figure directive, you specify ``scale`` but not ``width``
|
||
|
and ``height``. See section `Images and figures`_.
|
||
|
|
||
|
|
||
|
|
||
|
How to Use It
|
||
|
=============
|
||
|
|
||
|
Run it from the command line as follows::
|
||
|
|
||
|
$ rst2odt.py myinput.txt myoutput.odt
|
||
|
|
||
|
To see usage information and to learn about command line options
|
||
|
that you can use, run the following::
|
||
|
|
||
|
$ rst2odt.py --help
|
||
|
|
||
|
Examples::
|
||
|
|
||
|
$ rst2odt.py -s -g python_comments.txt python_comments.odt
|
||
|
|
||
|
$ rst2odt.py --source-url=odtwriter.txt --generator --stylesheet=/myconfigs/styles.odt odtwriter.txt odtwriter.odt
|
||
|
|
||
|
|
||
|
Configuration file
|
||
|
------------------
|
||
|
|
||
|
The options described below can also be set in a configuration file.
|
||
|
Use section ``[odf_odt writer]`` to set options specific to the
|
||
|
``odtwriter``. For example::
|
||
|
|
||
|
[odf_odt writer]
|
||
|
stylesheet: styles1.odt
|
||
|
|
||
|
See the "Docutils Configuration" document for more information on
|
||
|
Docutils configuration files, including locations which are
|
||
|
searched.
|
||
|
|
||
|
|
||
|
Command line options
|
||
|
--------------------
|
||
|
|
||
|
The following command line options are specific to ``odtwriter``:
|
||
|
|
||
|
--stylesheet=<URL> Specify a stylesheet URL, used verbatim.
|
||
|
Default: writers/odf_odt/styles.odt in the
|
||
|
installation directory.
|
||
|
--odf-config-file=<file>
|
||
|
Specify a configuration/mapping file relative to the
|
||
|
current working directory for additional ODF options.
|
||
|
In particular, this file may contain a section named
|
||
|
"Formats" that maps default style names to names to be
|
||
|
used in the resulting output file allowing for
|
||
|
adhering to external standards. For more info and the
|
||
|
format of the configuration/mapping file, see the
|
||
|
odtwriter doc.
|
||
|
--cloak-email-addresses
|
||
|
Obfuscate email addresses to confuse harvesters while
|
||
|
still keeping email links usable with standards-
|
||
|
compliant browsers.
|
||
|
--no-cloak-email-addresses
|
||
|
Do not obfuscate email addresses.
|
||
|
--table-border-thickness=TABLE_BORDER_THICKNESS
|
||
|
Specify the thickness of table borders in thousands of
|
||
|
a cm. Default is 35.
|
||
|
--add-syntax-highlighting
|
||
|
Add syntax highlighting in literal code blocks.
|
||
|
--no-syntax-highlighting
|
||
|
Do not add syntax highlighting in literal code blocks.
|
||
|
(default)
|
||
|
--create-sections Create sections for headers. (default)
|
||
|
--no-sections Do not create sections for headers.
|
||
|
--create-links Create links.
|
||
|
--no-links Do not create links. (default)
|
||
|
--endnotes-end-doc Generate endnotes at end of document, not footnotes at
|
||
|
bottom of page.
|
||
|
--no-endnotes-end-doc Generate footnotes at bottom of page, not endnotes at
|
||
|
end of document. (default)
|
||
|
--generate-list-toc Generate a bullet list table of contents, not an
|
||
|
ODF/``oowriter`` table of contents.
|
||
|
--generate-oowriter-toc
|
||
|
Generate an ODF/``oowriter`` table of contents,
|
||
|
not a bullet list. (default) **Note:**
|
||
|
``odtwriter`` is not able to determine page
|
||
|
numbers, so you will need to open the
|
||
|
generated document in ``oowriter``, then
|
||
|
right-click on the table of contents and
|
||
|
select "Update" to insert page numbers.
|
||
|
--custom-odt-header=CUSTOM_HEADER
|
||
|
Specify the contents of an custom header line. See
|
||
|
odf_odt writer documentation for details about special
|
||
|
field character sequences. See section
|
||
|
`Custom header/footers: inserting page numbers, date, time, etc`_
|
||
|
for details
|
||
|
--custom-odt-footer=CUSTOM_FOOTER
|
||
|
Specify the contents of an custom footer line. See
|
||
|
odf_odt writer documentation for details about special
|
||
|
field character sequences. See section
|
||
|
`Custom header/footers: inserting page numbers, date, time, etc`_
|
||
|
for details
|
||
|
|
||
|
|
||
|
|
||
|
Styles and Classes
|
||
|
==================
|
||
|
|
||
|
``odtwriter`` uses a number of styles that are defined in
|
||
|
``styles.xml`` in the default ``styles.odt``. This section
|
||
|
describes those styles.
|
||
|
|
||
|
Note that with the ``--stylesheet`` command line option, you can
|
||
|
use either ``styles.odt`` or ``styles.xml``, as described below.
|
||
|
Use of ``styles.odt`` is recommended over ``styles.xml``.
|
||
|
|
||
|
You can modify the look of documents generated by ``odtwriter`` in
|
||
|
several ways:
|
||
|
|
||
|
- Open (a copy of) ``styles.odt`` in ``OpenOffice/oowriter`` and
|
||
|
modify the style you wish to change. Now, save this document,
|
||
|
then generate your documents using this modified copy of
|
||
|
``styles.odt``.
|
||
|
|
||
|
In my version of ``oowriter``, to modify styles, either (1)
|
||
|
press F11 or (2) use menu item "Format/Styles and Formatting",
|
||
|
then right-click on the relevant style and select "Modify".
|
||
|
Modify the style, then save your document.
|
||
|
|
||
|
- Open a document generated by ``odtwriter`` in `oowriter``. Now,
|
||
|
edit the style you are interested in modifying. Now, you
|
||
|
can extract the styles.xml file from your document and either
|
||
|
(1) use this as your default styles file or (2) copy and paste
|
||
|
the relevant style definition into your styles.xml.
|
||
|
|
||
|
- Extract ``styles.xml`` from ``styles.odt`` using your favorite
|
||
|
``zip/unzip`` tool. Then modify ``styles.xml`` with a text
|
||
|
editor. Now re-zip it back into your own ``styles.odt``, or use
|
||
|
it directly by specifying it with the ``--stylesheet`` command
|
||
|
line option. **Hint:** If you intend to extract ``styles.xml``
|
||
|
from an ``.odt`` file (and then "re-zip" it), you should turn off
|
||
|
XML optimization/compression in ``oowriter``. In order to this
|
||
|
in ``oowriter``, use Tools --> Options... --> Load-Save -->
|
||
|
General and turn off "Size optimization for XML format".
|
||
|
|
||
|
- Open an empty (or new) document in ``oowriter``. Define all of
|
||
|
the styles described in this section. Then, use that document (a
|
||
|
.odt file) as your stylesheet. ``odtwriter`` will extract the
|
||
|
``styles.xml`` file from that document and insert it into the
|
||
|
output document.
|
||
|
|
||
|
- Some combination of the above.
|
||
|
|
||
|
|
||
|
Styles used by odtwriter
|
||
|
------------------------
|
||
|
|
||
|
This section describes the styles used by ``odtwriter``.
|
||
|
|
||
|
Note that we do not describe the "look" of these styles. That can
|
||
|
be easily changed by using ``oowriter`` to edit the document
|
||
|
``styles.odt`` (or a copy of it), and modifying any of the styles
|
||
|
described here.
|
||
|
|
||
|
To change the definition and appearance of these styles, open
|
||
|
``styles.odt`` in ``oowriter`` and open the Styles and Formatting
|
||
|
window by using the following menu item::
|
||
|
|
||
|
Format --> Styles and Formatting
|
||
|
|
||
|
Then, click on the Paragraph Styles button or the Character Styles
|
||
|
button at the top of the Styles and Formatting window. You may
|
||
|
also need to select "All Styles" from the drop-down selection list
|
||
|
at the bottom of the Styles and Formatting window in order to see
|
||
|
the styles used by ``odtwriter``.
|
||
|
|
||
|
Notice that you can make a copy of file ``styles.odt``, modify it
|
||
|
using ``oowriter``, and then use your copy with the
|
||
|
``--stylesheet=<file>`` command line option. Example::
|
||
|
|
||
|
$ rst2odt.py --stylesheet=mystyles.odt test2.txt test2.odt
|
||
|
|
||
|
|
||
|
Paragraph styles
|
||
|
~~~~~~~~~~~~~~~~
|
||
|
|
||
|
rststyle-attribution
|
||
|
The style for attributions, for example, the attribution in a
|
||
|
``.. epigraph::`` directive. Derived from
|
||
|
``rststyle-blockquote``.
|
||
|
|
||
|
rststyle-blockindent
|
||
|
An indented block.
|
||
|
|
||
|
rststyle-blockquote
|
||
|
A block quote.
|
||
|
|
||
|
rststyle-blockquote-bulletitem
|
||
|
The style for bullet list items inside block quote.
|
||
|
|
||
|
rststyle-blockquote-enumitem
|
||
|
The style for enumerated list items inside block quote.
|
||
|
|
||
|
rststyle-bodyindent
|
||
|
An indented block.
|
||
|
|
||
|
rststyle-bulletitem
|
||
|
An item in an bullet list.
|
||
|
|
||
|
rststyle-caption
|
||
|
The caption in a figure or image. Also see
|
||
|
``rststyle-legend``.
|
||
|
|
||
|
rststyle-codeblock
|
||
|
Literal code blocks -- A block of example code. Created with
|
||
|
double colon ("::") followed by an indented block or with the
|
||
|
``.. parsed-literal::`` directive. Derived from the
|
||
|
``Preformatted Text`` style in ``oowriter``.
|
||
|
|
||
|
rststyle-enumitem
|
||
|
An item in an enumerated list.
|
||
|
|
||
|
rststyle-epigraph
|
||
|
The style for epigraphs, for example, the body of an
|
||
|
``.. epigraph::`` directive. Derived from
|
||
|
``rststyle-blockquote``.
|
||
|
|
||
|
rststyle-epigraph-bulletitem
|
||
|
The style for bullet list items inside epigraphs.
|
||
|
|
||
|
rststyle-epigraph-enumitem
|
||
|
The style for enumerated list items inside epigraphs.
|
||
|
|
||
|
rststyle-footer
|
||
|
The style for footers. The footer content originates from the
|
||
|
``..footer::`` directive and in response to the command line
|
||
|
flags for generator (``--generator``), date/time generated
|
||
|
(``--date`` and ``--time``), and view source link
|
||
|
(``--source-link`` and ``--source-url=URL``).
|
||
|
|
||
|
rststyle-header
|
||
|
The style for headers. The header content originates from the
|
||
|
``..header::`` directive.
|
||
|
|
||
|
rststyle-highlights
|
||
|
The style for highlightss, for example, the body of an
|
||
|
``.. highlights::`` directive. Derived from
|
||
|
``rststyle-blockquote``.
|
||
|
|
||
|
rststyle-highlights-bulletitem
|
||
|
The style for bullet list items inside highlights.
|
||
|
|
||
|
rststyle-highlights-enumitem
|
||
|
The style for enumerated list items inside highlights.
|
||
|
|
||
|
rststyle-horizontalline
|
||
|
A horizontal line, e.g. used for transitions.
|
||
|
|
||
|
rststyle-legend
|
||
|
The legend in a figure. See the Docutils figure directive. Also
|
||
|
see ``rststyle-caption``.
|
||
|
|
||
|
rststyle-table-title
|
||
|
The style for titles of tables. See section `The table
|
||
|
directive`_.
|
||
|
|
||
|
rststyle-textbody
|
||
|
Normal text. The style for paragraphs. Derived from the ``Text
|
||
|
body`` style in ``oowriter``.
|
||
|
|
||
|
|
||
|
Character styles
|
||
|
~~~~~~~~~~~~~~~~
|
||
|
|
||
|
rststyle-emphasis
|
||
|
Emphasis. Normally rendered as italics.
|
||
|
|
||
|
rststyle-inlineliteral
|
||
|
An inline literal.
|
||
|
|
||
|
rststyle-strong
|
||
|
Strong emphasis. Normally rendered as boldface.
|
||
|
|
||
|
rststyle-quotation
|
||
|
In-line quoted material.
|
||
|
|
||
|
rststyle-codeblock-classname
|
||
|
Syntax highlighting in literal code blocks -- class names.
|
||
|
|
||
|
rststyle-codeblock-comment
|
||
|
Syntax highlighting in literal code blocks -- comments.
|
||
|
|
||
|
rststyle-codeblock-functionname
|
||
|
Syntax highlighting in literal code blocks -- function names.
|
||
|
|
||
|
rststyle-codeblock-keyword
|
||
|
Syntax highlighting in literal code blocks -- Python language
|
||
|
keywords.
|
||
|
|
||
|
rststyle-codeblock-name
|
||
|
Syntax highlighting in literal code blocks -- other names, for
|
||
|
example, variables.
|
||
|
|
||
|
rststyle-codeblock-number
|
||
|
Syntax highlighting in literal code blocks -- literal numbers,
|
||
|
including integers, floats, hex numbers, and octal numbers.
|
||
|
|
||
|
rststyle-codeblock-operator
|
||
|
Syntax highlighting in literal code blocks -- Python operators.
|
||
|
|
||
|
rststyle-codeblock-string
|
||
|
Syntax highlighting in literal code blocks -- literal strings.
|
||
|
|
||
|
|
||
|
List styles
|
||
|
~~~~~~~~~~~
|
||
|
|
||
|
rststyle-bulletlist
|
||
|
Bullet lists (but not in the table of contents)
|
||
|
|
||
|
rststyle-blockquote-bulletlist
|
||
|
Bullet lists in block quotes.
|
||
|
|
||
|
rststyle-blockquote-enumlist
|
||
|
Enumerated lists in block quotes.
|
||
|
|
||
|
rststyle-enumlist-arabic
|
||
|
Enumerated lists, arabic (but not in the table of contents)
|
||
|
|
||
|
rststyle-enumlist-loweralpha
|
||
|
Enumerated lists, lower alpha (but not in the table of contents)
|
||
|
|
||
|
rststyle-enumlist-lowerroman
|
||
|
Enumerated lists, lower roman (but not in the table of contents)
|
||
|
|
||
|
rststyle-enumlist-upperalpha
|
||
|
Enumerated lists, upper alpha (but not in the table of contents)
|
||
|
|
||
|
rststyle-enumlist-upperroman
|
||
|
Enumerated lists, upper roman (but not in the table of contents)
|
||
|
|
||
|
rststyle-epigraph-bulletlist
|
||
|
Bullet lists in epigraphs. See the ``.. epigraph::``
|
||
|
directive.
|
||
|
|
||
|
rststyle-epigraph-enumlist
|
||
|
Enumerated lists in epigraphs. See the ``.. epigraph::``
|
||
|
directive.
|
||
|
|
||
|
rststyle-highlights-bulletlist
|
||
|
Bullet lists in highlights blocks. See the ``.. highlights::``
|
||
|
directive.
|
||
|
|
||
|
rststyle-highlights-enumlist
|
||
|
Enumerated lists in highlights blocks. See the ``.. highlights::``
|
||
|
directive.
|
||
|
|
||
|
rststyle-tocbulletlist
|
||
|
Lists in the table of contents when section numbering is off.
|
||
|
|
||
|
rststyle-tocenumlist
|
||
|
Lists in the table of contents when section numbering is on.
|
||
|
|
||
|
|
||
|
Admonition styles
|
||
|
~~~~~~~~~~~~~~~~~
|
||
|
|
||
|
rststyle-admon-attention-hdr
|
||
|
The style for the attention admonition header/title.
|
||
|
|
||
|
rststyle-admon-attention-body
|
||
|
The style for the attention admonition body/paragraph.
|
||
|
|
||
|
rststyle-admon-caution-hdr
|
||
|
The style for the caution admonition header/title.
|
||
|
|
||
|
rststyle-admon-caution-body
|
||
|
The style for the caution admonition body/paragraph.
|
||
|
|
||
|
rststyle-admon-danger-hdr
|
||
|
The style for the admonition header/title.
|
||
|
|
||
|
rststyle-admon-danger-body
|
||
|
The style for the danger admonition body/paragraph.
|
||
|
|
||
|
rststyle-admon-error-hdr
|
||
|
The style for the error admonition header/title.
|
||
|
|
||
|
rststyle-admon-error-body
|
||
|
The style for the error admonition body/paragraph.
|
||
|
|
||
|
rststyle-admon-hint-hdr
|
||
|
The style for the hint admonition header/title.
|
||
|
|
||
|
rststyle-admon-hint-body
|
||
|
The style for the hint admonition body/paragraph.
|
||
|
|
||
|
rststyle-admon-hint-hdr
|
||
|
The style for the hint admonition header/title.
|
||
|
|
||
|
rststyle-admon-hint-body
|
||
|
The style for the hint admonition body/paragraph.
|
||
|
|
||
|
rststyle-admon-important-hdr
|
||
|
The style for the important admonition header/title.
|
||
|
|
||
|
rststyle-admon-important-body
|
||
|
The style for the important admonition body/paragraph.
|
||
|
|
||
|
rststyle-admon-note-hdr
|
||
|
The style for the note admonition header/title.
|
||
|
|
||
|
rststyle-admon-note-hdr
|
||
|
The style for the note admonition header/title.
|
||
|
|
||
|
rststyle-admon-tip-body
|
||
|
The style for the tip admonition body/paragraph.
|
||
|
|
||
|
rststyle-admon-tip-hdr
|
||
|
The style for the tip admonition header/title.
|
||
|
|
||
|
rststyle-admon-warning-body
|
||
|
The style for the warning admonition body/paragraph.
|
||
|
|
||
|
rststyle-admon-warning-hdr
|
||
|
The style for the warning admonition header/title.
|
||
|
|
||
|
rststyle-admon-generic-body
|
||
|
The style for the generic admonition body/paragraph.
|
||
|
|
||
|
rststyle-admon-generic-hdr
|
||
|
The style for the generic admonition header/title.
|
||
|
|
||
|
|
||
|
Rubric style
|
||
|
~~~~~~~~~~~~
|
||
|
|
||
|
rststyle-rubric
|
||
|
The style for the text in a rubric directive.
|
||
|
|
||
|
The rubric directive recognizes a "class" option. If entered,
|
||
|
odtwriter uses the value of that option instead of the
|
||
|
``rststyle-rubric`` style. Here is an example which which attaches
|
||
|
the ``rststyle-heading1`` style to the generated rubric::
|
||
|
|
||
|
.. rubric:: This is my first rubric
|
||
|
:class: rststyle-heading1
|
||
|
|
||
|
|
||
|
Table styles
|
||
|
~~~~~~~~~~~~
|
||
|
|
||
|
A table style is generated by ``oowriter`` for each table that you
|
||
|
create. Therefore, ``odtwriter`` attempts to do something similar.
|
||
|
These styles are created in the ``content.xml`` document in the
|
||
|
generated ``.odt`` file. These styles have names prefixed with
|
||
|
"rststyle-table-".
|
||
|
|
||
|
There are two ways in which you can control the styles of your
|
||
|
tables: one simple, the other a bit more complex, but more
|
||
|
powerful.
|
||
|
|
||
|
First, you can change the thickness of the borders of all tables
|
||
|
generated in a document using the "--table-border-thickness"
|
||
|
command line option.
|
||
|
|
||
|
Second, you can control additional table properties and you can
|
||
|
apply different styles to different tables within the same document
|
||
|
by customizing and using tables in your stylesheet: ``styles.odt``
|
||
|
or whatever you name your copy of it using the --stylesheet command
|
||
|
line option. Then, follow these rules to apply a table style to
|
||
|
the tables in your document:
|
||
|
|
||
|
- The default table style -- Optionally, alter and customize the
|
||
|
style applied by default to tables in your document by modifying
|
||
|
table "rststyle-table-0" in your stylesheet (``styles.odt`` or a
|
||
|
copy). Caution: Do not change the name of this table.
|
||
|
|
||
|
- User-created table styles -- Add one or more new table styles to
|
||
|
be applied selectively to tables in your document by doing the
|
||
|
following:
|
||
|
|
||
|
1. Using ``oowriter``, add a table to your stylesheet and give it
|
||
|
a name that starts with the prefix "rststyle-table-", for
|
||
|
example "rststyle-table-vegetabledata". Customize the table's
|
||
|
border thickness, border color, and table background color.
|
||
|
|
||
|
2. In your reStructuredText document, apply your new table style
|
||
|
to a specific table by placing the ".. class::" directive
|
||
|
immediately before the table, for example::
|
||
|
|
||
|
.. class:: rststyle-table-vegetabledata
|
||
|
|
||
|
The default table style will be applied to all tables for which you
|
||
|
do not specify a style with the ".. class::" directive.
|
||
|
|
||
|
Customize the table properties in ``oowriter`` using the table
|
||
|
properties dialog for the table (style) that you wish to customize.
|
||
|
|
||
|
Note that "--table-border-thickness" command line option overrides
|
||
|
the border thickness specified in the stylesheet.
|
||
|
|
||
|
The specific properties that you can control with this second
|
||
|
method are the following:
|
||
|
|
||
|
- Border thickness and border color.
|
||
|
|
||
|
- Background color -- When you change the background color of a
|
||
|
table to be used as a style (in ``styles.odt`` or whatever you
|
||
|
name it), make sure you change the background color for the
|
||
|
*table* and *not* for a cell in the table. ``odtwriter`` picks
|
||
|
the background color from the table, not from a cell within the
|
||
|
table.
|
||
|
|
||
|
|
||
|
Line block styles
|
||
|
~~~~~~~~~~~~~~~~~~
|
||
|
|
||
|
The line block styles wrap the various nested levels of line
|
||
|
blocks. There is one line block style for each indent level.
|
||
|
|
||
|
rststyle-lineblock1
|
||
|
Line block style for line block with no indent.
|
||
|
|
||
|
rststyle-lineblock2
|
||
|
Line block style for line block indented 1 level.
|
||
|
|
||
|
rststyle-lineblock3
|
||
|
Line block style for line block indented 2 levels.
|
||
|
|
||
|
rststyle-lineblock4
|
||
|
Line block style for line block indented 3 levels.
|
||
|
|
||
|
rststyle-lineblock5
|
||
|
Line block style for line block indented 4 levels.
|
||
|
|
||
|
rststyle-lineblock6
|
||
|
Line block style for line block indented 5 levels.
|
||
|
|
||
|
Notes:
|
||
|
|
||
|
- ``odtwriter`` does not check for a maximum level of indents
|
||
|
within line blocks. Therefore, you can define additional line
|
||
|
block styles for additional levels if you need them. Define
|
||
|
these styles with the names ``rststyle-lineblock7``,
|
||
|
``rststyle-lineblock8``, ...
|
||
|
|
||
|
- Since the line block style is used to create indentation, a line
|
||
|
block that is inside a block quote will use
|
||
|
``rststyle-lineblock2`` as its first level of indentation.
|
||
|
|
||
|
|
||
|
Footnote and citation styles
|
||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
|
||
|
rststyle-footnote
|
||
|
The style for footnotes. This style affects the footnote
|
||
|
content, *not* the footnote reference in the body of the document.
|
||
|
|
||
|
rststyle-citation
|
||
|
The style for citations. This style affects the citation
|
||
|
content, *not* the citation reference in the body of the document.
|
||
|
You might need to adjust the indentation in this style
|
||
|
depending on the length of the label used in your citations.
|
||
|
|
||
|
|
||
|
Heading and title styles
|
||
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
|
||
|
rststyle-heading{1|2|3|4|5}
|
||
|
The styles for headings (section titles and sub-titles). Five
|
||
|
levels of sub-headings are provided: rststyle-heading1 through
|
||
|
rststyle-heading5.
|
||
|
|
||
|
rststyle-title
|
||
|
The style for the document title.
|
||
|
|
||
|
rststyle-subtitle
|
||
|
The style for the document sub-title.
|
||
|
|
||
|
|
||
|
Image and figure styles
|
||
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
|
||
|
rststyle-image
|
||
|
The style applied to an image, either an image by itself or an
|
||
|
image in a figure.
|
||
|
|
||
|
rststyle-figureframe
|
||
|
The style applied to a figure (actually to the frame that
|
||
|
surrounds a figure).
|
||
|
|
||
|
|
||
|
|
||
|
Defining and using a custom stylesheet
|
||
|
---------------------------------------
|
||
|
|
||
|
You can create your own custom stylesheet. Here is how:
|
||
|
|
||
|
1. Make a copy of ``styles.odt``, which is in the distribution.
|
||
|
|
||
|
2. Open your copy of ``styles.odt`` in ``oowriter``. Modify styles
|
||
|
in that document. Then, save it.
|
||
|
|
||
|
3. When you run ``rst2odt.py``, use the ``--stylesheet`` command
|
||
|
line option to use your custom stylesheet. Run ``rst2odt.py
|
||
|
--help`` to learn more about these options.
|
||
|
|
||
|
|
||
|
Why custom stylesheets
|
||
|
~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
|
||
|
Here are a few reasons and ideas:
|
||
|
|
||
|
- The page size is stored in the style sheet. The default page
|
||
|
size is ``Letter``. You can change the page size (for example,
|
||
|
to ``A4``) in your custom stylesheet by opening it in
|
||
|
``oowriter``, then clicking on menu: ``Format/Page...``, then
|
||
|
clicking on the ``Page`` tab.
|
||
|
|
||
|
|
||
|
|
||
|
Defining and using custom style names
|
||
|
-------------------------------------
|
||
|
|
||
|
[Credits: Stefan Merten designed and implemented the custom style names
|
||
|
capability. Thank you, Stefan.]
|
||
|
|
||
|
You can also instruct ``odtwriter`` to use style names of your own
|
||
|
choice.
|
||
|
|
||
|
|
||
|
Why custom style names
|
||
|
~~~~~~~~~~~~~~~~~~~~~~
|
||
|
|
||
|
Here are a few reasons and ideas:
|
||
|
|
||
|
- Suppose that your organization has a standard set of styles in
|
||
|
OOo ``oowriter`` and suppose that the use of these styles is
|
||
|
required. You would like to generate ODF documents from
|
||
|
reST text files, and you want the generated documents to contain
|
||
|
these styles.
|
||
|
|
||
|
- Suppose that your company or organization has a policy of using a
|
||
|
certain MS Word template for some set of documents. You would
|
||
|
like to generate ODF documents that use these custom style names,
|
||
|
so that you can export these documents from ODF ``oowriter`` to MS
|
||
|
Word documents that use these style names.
|
||
|
|
||
|
- Suppose that your documents are written in a language other than
|
||
|
English. You would like the style names visible in the "Styles
|
||
|
and Formatting" window in OOo ``oowriter`` (menu item
|
||
|
``Format/Styles and Formatting``) to be understandable in the
|
||
|
language of your users.
|
||
|
|
||
|
- ``odtwriter`` maps single asterisks/stars (for example, \*stuff\*)
|
||
|
to emphasis and double stars to strong. You'd like to reverse
|
||
|
these. Or, you would like to generate headings level 3 and 4
|
||
|
where headings level 1 and 2 would normally be produced.
|
||
|
|
||
|
|
||
|
How to use custom style names
|
||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
|
||
|
In order to define custom style names and to generate documents that
|
||
|
contain them, do the following:
|
||
|
|
||
|
|
||
|
1. Create a configuration file containing a "Formats" section. The
|
||
|
configuration file obeys the file format supported by the Python
|
||
|
ConfigParser module:
|
||
|
`ConfigParser -- Configuration file parser --
|
||
|
http://docs.python.org/lib/module-ConfigParser.html
|
||
|
<http://docs.python.org/lib/module-ConfigParser.html>`_.
|
||
|
|
||
|
2. In the "Formats" section of the configuration file, create one
|
||
|
option (a name-value pair) for each custom style name that you
|
||
|
wish to define. The option name is the standard ``odtwriter``
|
||
|
style name (without "rststyle-"), and the value is your custom
|
||
|
style name. Here is an example::
|
||
|
|
||
|
[Formats]
|
||
|
textbody: mytextbody
|
||
|
bulletitem: mybulletitem
|
||
|
heading1: myheading1
|
||
|
o
|
||
|
o
|
||
|
o
|
||
|
|
||
|
3. Create a styles document that defines the styles generated by
|
||
|
``odtwriter``. You can create and edit the styles in OOo
|
||
|
``oowriter``. It may be helpful to begin by making a copy of the
|
||
|
styles document that is part of the ``odtwriter`` distribution
|
||
|
(``styles.odt``).
|
||
|
|
||
|
4. When you run ``odtwriter``, specify the ``--odf-config-file``
|
||
|
option. You might also want to specify your styles document
|
||
|
using the ``--stylesheet`` option in order to include your
|
||
|
custom style definitions. For example::
|
||
|
|
||
|
rst2odt.py --odf-config-file=mymappingfile.ini --stylesheet=mystyles.odt mydoc.txt mydoc.odt
|
||
|
|
||
|
|
||
|
Classes
|
||
|
-------
|
||
|
|
||
|
``odtwriter`` uses the following Docutils class to provide additional
|
||
|
control of the generation of ODF content:
|
||
|
|
||
|
- Class ``wrap`` -- Use this to cause the wrapping of text around
|
||
|
an image. The default is *not* to wrap text around images.
|
||
|
Here is an example::
|
||
|
|
||
|
.. class:: wrap
|
||
|
.. image:: images/flower01.png
|
||
|
:alt: A bright yellow flower
|
||
|
:height: 55
|
||
|
:width: 60
|
||
|
|
||
|
|
||
|
Roles
|
||
|
-------
|
||
|
|
||
|
You can use a Docutils custom interpreted text role to attach a
|
||
|
character style to an inline area of text. This capability also
|
||
|
enables you to attach a new character style (with a new name) that
|
||
|
you define yourself. Do this by defining your role in a stylesheet
|
||
|
as a character style with "rststyle-" prefixed to your role name,
|
||
|
then use the ``role`` directive and inline markup to apply your
|
||
|
role.
|
||
|
|
||
|
In order to use this capability, do the following:
|
||
|
|
||
|
- Define the character style for your custom role in a stylesheet
|
||
|
(a copy of ``styles.odt``) with the prefix "rststyle-".
|
||
|
Remember: (1) If the name of your custom role is "pretty", then
|
||
|
define a character style named "rststyle-pretty". (2) Define the
|
||
|
style as a *character* style, and *not*, for example as a
|
||
|
paragraph style.
|
||
|
|
||
|
- Declare your role in the source reStructuredText document in a
|
||
|
``role`` directive. Example::
|
||
|
|
||
|
.. role:: pretty
|
||
|
|
||
|
- Use inline markup to apply your role to text. Example::
|
||
|
|
||
|
We have :pretty:`very nice` apples.
|
||
|
|
||
|
Here is another example::
|
||
|
|
||
|
.. role:: fancy
|
||
|
|
||
|
Here is some :fancy:`pretty text` that looks fancy.
|
||
|
|
||
|
For more on roles see:
|
||
|
`Custom Interpreted Text Roles --
|
||
|
http://docutils.sourceforge.net/docs/ref/rst/directives.html#custom-interpreted-text-roles
|
||
|
<http://docutils.sourceforge.net/docs/ref/rst/directives.html#custom-interpreted-text-roles>`_.
|
||
|
|
||
|
**Note:** The ability to base a role on another existing role is
|
||
|
*not* supported by ``odtwriter``.
|
||
|
|
||
|
|
||
|
Hints and Suggestions and Features
|
||
|
==================================
|
||
|
|
||
|
Table of contents
|
||
|
-----------------
|
||
|
|
||
|
The ``..contents::`` directive causes ``odtwriter`` to generate
|
||
|
either:
|
||
|
|
||
|
1. A static, outline style table of contents, if the
|
||
|
``--generate-list-toc`` command line option is specified, or
|
||
|
|
||
|
2. An ODF/``oowriter`` style table of contents containing
|
||
|
dynamically updated page numbers and with the formatting control
|
||
|
that ``oowriter`` gives you. This is the default, or use the
|
||
|
command line option ``--generate-list-toc``. **Note:**
|
||
|
``odtwriter`` is not able to determine page numbers, so you will
|
||
|
need to open the generated document in ``oowriter``, then
|
||
|
right-click on the table of contents and select "Update" to
|
||
|
insert correct page numbers.
|
||
|
|
||
|
|
||
|
Syntax highlighting
|
||
|
-------------------
|
||
|
|
||
|
``odtwriter`` can add syntax highlighting to code in code
|
||
|
blocks. In order to activate this, do all of the following:
|
||
|
|
||
|
1. Install `Pygments`_ and ...
|
||
|
|
||
|
2. Use the command line option ``--add-syntax-highlighting``.
|
||
|
Example::
|
||
|
|
||
|
$ rst2odt.py --add-syntax-highlight test.txt test.odt
|
||
|
|
||
|
The following styles are defined in styles.odt and are used for
|
||
|
literal code blocks and syntax highlighting:
|
||
|
|
||
|
- Paragraph styles:
|
||
|
|
||
|
- rststyle-codeblock -- The style for the code block as a whole.
|
||
|
|
||
|
- Character styles:
|
||
|
|
||
|
- rststyle-codeblock-classname -- class names.
|
||
|
|
||
|
- rststyle-codeblock-comment -- comments.
|
||
|
|
||
|
- rststyle-codeblock-functionname -- function names.
|
||
|
|
||
|
- rststyle-codeblock-keyword -- Python language keywords.
|
||
|
|
||
|
- rststyle-codeblock-name -- other names, for example,
|
||
|
variables.
|
||
|
|
||
|
- rststyle-codeblock-number -- literal numbers, including
|
||
|
integers, floats, hex numbers, and octal numbers.
|
||
|
|
||
|
- rststyle-codeblock-operator -- Python operators.
|
||
|
|
||
|
- rststyle-codeblock-string -- literal strings.
|
||
|
|
||
|
Each of the above styles has a default appearance that is defined
|
||
|
in ``styles.odt``. To change that definition and appearance, open
|
||
|
``styles.odt`` in ``oowriter`` and use menu item::
|
||
|
|
||
|
Format --> Styles and Formatting
|
||
|
|
||
|
Then, click on the Paragraph Styles button or the Character Styles
|
||
|
button at the top of the Styles and Formatting window. You may
|
||
|
also need to select "All Styles" from the drop-down selection list
|
||
|
at the bottom of the Styles and Formatting window.
|
||
|
|
||
|
|
||
|
|
||
|
The container directive
|
||
|
-----------------------
|
||
|
|
||
|
There is limited support for the ``container`` directive. The
|
||
|
limitations and rules for the container directive are the following:
|
||
|
|
||
|
- Only the first class in the list of classes (arguments) is used.
|
||
|
|
||
|
- That class/style must be a paragraph style and not (for example) a
|
||
|
character style.
|
||
|
|
||
|
- The style/class given to the container directive will have a
|
||
|
"rststyle-" prefix in the odt file.
|
||
|
|
||
|
So, for example::
|
||
|
|
||
|
.. container:: style-1 style-2 style-3
|
||
|
|
||
|
a block of text
|
||
|
|
||
|
- Only ``style-1`` is used; ``style-2`` and ``style-3`` are ignored.
|
||
|
|
||
|
- ``rststyle-style-1`` must be defined. It should be an existing,
|
||
|
predefined style, or you should define it in your stylesheet
|
||
|
(``styles.odt`` or the argument to the ``--stylesheet`` command
|
||
|
line option).
|
||
|
|
||
|
- ``rststyle-style-1`` must be a paragraph style.
|
||
|
|
||
|
To define a paragraph style, use the following menu item in
|
||
|
``oowriter``::
|
||
|
|
||
|
Format --> Styles and Formatting
|
||
|
|
||
|
Then, click on the Paragraph Styles button.
|
||
|
|
||
|
The following example attaches the ``rststyle-heading2`` style (a
|
||
|
predefined style) to each paragraph/line in the container::
|
||
|
|
||
|
.. container:: heading2
|
||
|
|
||
|
Line 1 of container.
|
||
|
|
||
|
Line 2 of container.
|
||
|
|
||
|
More information on how to define a new style (for example, in your
|
||
|
``styles.odt``) can be found in section
|
||
|
`Defining and using custom style names`_.
|
||
|
|
||
|
|
||
|
|
||
|
The table directive
|
||
|
-------------------
|
||
|
|
||
|
The ``table`` directive can be used to add a title to a table.
|
||
|
Example::
|
||
|
|
||
|
.. table:: A little test table
|
||
|
|
||
|
=========== =============
|
||
|
Name Value
|
||
|
=========== =============
|
||
|
Dave Cute
|
||
|
Mona Smart
|
||
|
=========== =============
|
||
|
|
||
|
The above will insert the title "A little test table" at the top of the
|
||
|
table. You can modify the appearance of the title by modifying the
|
||
|
paragraph style ``rststyle-table-title``.
|
||
|
|
||
|
|
||
|
Footnotes and citations
|
||
|
-----------------------
|
||
|
|
||
|
Footnotes and citations are supported.
|
||
|
|
||
|
There are additional styles ``rststyle-footnote`` and
|
||
|
``rststyle-citation`` for footnotes and citations. See
|
||
|
`Footnote and citation styles`_.
|
||
|
|
||
|
You may need to modify the citation style to fit the length of your
|
||
|
citation references.
|
||
|
|
||
|
Endnotes -- There are command line options that control whether
|
||
|
``odtwriter`` creates endnotes instead of footnotes. Endnotes
|
||
|
appear at the end of the document instead of at the bottom of the
|
||
|
page. See flags ``--endnotes-end-doc`` and
|
||
|
``--no-endnotes-end-doc`` in section `Command line options`_.
|
||
|
|
||
|
|
||
|
Images and figures
|
||
|
------------------
|
||
|
|
||
|
If on the image or the figure directive you provide the scale option
|
||
|
but do not provide the width and height options, then ``odtwriter``
|
||
|
will attempt to determine the size of the image using the `Python
|
||
|
Imaging Library`_ (PIL). If ``odtwriter`` cannot find and import
|
||
|
Python Imaging Library, it will raise an exception. If this
|
||
|
ocurrs, you can fix it by doing one of the following:
|
||
|
|
||
|
- Install the Python Imaging Library or
|
||
|
|
||
|
- Remove the ``scale`` option or
|
||
|
|
||
|
- Add both the ``width`` and the ``height`` options.
|
||
|
|
||
|
So, the rule is: if on any image or figure, you specify scale but
|
||
|
not both width and height, you must install the `Python Imaging
|
||
|
Library`_ library.
|
||
|
|
||
|
For more information about PIL, see: `Python Imaging Library`_.
|
||
|
|
||
|
|
||
|
The raw directive
|
||
|
-----------------
|
||
|
|
||
|
The ``raw`` directive is supported. Use output format type "odt".
|
||
|
|
||
|
You will need to be careful about the formatting of the raw
|
||
|
content. In particular, introduced whitespace might be a problem.
|
||
|
|
||
|
In order to produce content for the raw directive for use by
|
||
|
``odtwriter``, you might want to extract the file ``content.xml``
|
||
|
from a ``.odt`` file (using some Zip tool), and then clip, paste,
|
||
|
and modify a selected bit of it.
|
||
|
|
||
|
Here is an example::
|
||
|
|
||
|
.. raw:: odt
|
||
|
|
||
|
<text:p text:style-name="rststyle-textbody">Determining <text:span text:style-name="rststyle-emphasis">which</text:span> namespace a name is in is static. It can be
|
||
|
determined by a lexical scan of the code. If a variable is assigned a
|
||
|
value <text:span text:style-name="rststyle-emphasis">anywhere</text:span> in a scope (specifically within a function or method
|
||
|
body), then that variable is local to that scope. If Python does not
|
||
|
find a variable in the local scope, then it looks next in the global
|
||
|
scope (also sometimes called the module scope) and then in the
|
||
|
built-ins scope. But, the <text:span text:style-name="rststyle-inlineliteral">global</text:span> statement can be used to force
|
||
|
Python to find and use a global variable (a variable defined at top
|
||
|
level in a module) rather than create a local one.</text:p>
|
||
|
|
||
|
|
||
|
The meta directive
|
||
|
------------------
|
||
|
|
||
|
``odtwriter`` supports the ``meta`` directive. Two fields are
|
||
|
recognized: "keywords" and "description". Here is an example::
|
||
|
|
||
|
.. meta::
|
||
|
:keywords: reStructuredText, docutils, formatting
|
||
|
:description lang=en: A reST document, contains formatted
|
||
|
text in a formatted style.
|
||
|
|
||
|
To see the results of the ``meta`` directive in ``oowriter``,
|
||
|
select menu item "File/Properties...", then click on the
|
||
|
"Description" tab.
|
||
|
|
||
|
|
||
|
Footnote references inside footnotes
|
||
|
------------------------------------
|
||
|
|
||
|
Not supported.
|
||
|
|
||
|
Get a grip. Be serious. Try a dose of reality.
|
||
|
|
||
|
``odtwriter`` ignores them.
|
||
|
|
||
|
They cause ``oowriter`` to croak.
|
||
|
|
||
|
|
||
|
Page size
|
||
|
---------
|
||
|
|
||
|
The default page size, in documents generated by ``odtwriter`` is
|
||
|
``Letter``. You can change this (for example to ``A4``) by using a
|
||
|
custom stylesheet. See `Defining and using a custom stylesheet`_
|
||
|
for instructions on how to do this.
|
||
|
|
||
|
On machines which support ``paperconf``, ``odtwriter`` can insert
|
||
|
the default page size for your locale. In order for this to work,
|
||
|
the following conditions must be met:
|
||
|
|
||
|
1. The program ``paperconf`` must be available on your system.
|
||
|
``odtwriter`` uses ``paperconf -s`` to obtain the paper size.
|
||
|
See ``man paperconf`` for more information.
|
||
|
|
||
|
2. The default page height and width must be removed from the
|
||
|
``styles.odt`` used to generate the document. A Python script
|
||
|
``rst2odt_prepstyles.py`` is distributed with ``odtwriter`` and
|
||
|
is installed in the ``bin`` directory. You can remove the page
|
||
|
height and width with something like the following::
|
||
|
|
||
|
$ rst2odt_prepstyles.py styles.odt
|
||
|
|
||
|
.. warning:: If you edit your stylesheet in ``oowriter`` and then
|
||
|
save it, ``oowriter`` automatically inserts a page height and
|
||
|
width in the styles for that (stylesheet) document. If that is
|
||
|
not the page size that you want and you want ``odtwriter`` to
|
||
|
insert a default page size using ``paperconf``, then you will
|
||
|
need to strip the page size from your stylesheet each time you
|
||
|
edit that stylesheet with ``oowriter``.
|
||
|
|
||
|
|
||
|
|
||
|
Custom header/footers: inserting page numbers, date, time, etc
|
||
|
----------------------------------------------------------------
|
||
|
|
||
|
You can specify custom headers and footers for your document from
|
||
|
the command line. These headers and footers can be used to insert
|
||
|
fields such as the page number, page count, date, time, etc. See
|
||
|
below for a complete list.
|
||
|
|
||
|
To insert a custom header or footer, use the "--custom-odt-header"
|
||
|
or "--custom-odt-footer" command line options. For example, the
|
||
|
following inserts a footer containing the page number and page
|
||
|
count::
|
||
|
|
||
|
$ rst2odt.py --custom-odt-footer="Page %p% of %P%" f1.txt f1.odt
|
||
|
|
||
|
|
||
|
Field specifiers
|
||
|
~~~~~~~~~~~~~~~~~~
|
||
|
|
||
|
You can use the following field specifiers to insert ``oowriter``
|
||
|
fields in your custom headers and footers:
|
||
|
|
||
|
%p%
|
||
|
The current page number.
|
||
|
|
||
|
%P%
|
||
|
The number of pages in the document.
|
||
|
|
||
|
%d1%
|
||
|
The current date in format 12/31/99.
|
||
|
|
||
|
%d2%
|
||
|
The current date in format 12/31/1999.
|
||
|
|
||
|
%d3%
|
||
|
The current date in format Dec 31, 1999.
|
||
|
|
||
|
%d4%
|
||
|
The current date in format December 31, 1999.
|
||
|
|
||
|
%d5%
|
||
|
The current date in format 1999-12-31.
|
||
|
|
||
|
%t1%
|
||
|
The current time in format 14:22.
|
||
|
|
||
|
%t2%
|
||
|
The current time in format 14:22:33.
|
||
|
|
||
|
%t3%
|
||
|
The current time in format 02:22 PM.
|
||
|
|
||
|
%t4%
|
||
|
The current time in format 02:22:33 PM.
|
||
|
|
||
|
%a%
|
||
|
The author of the document (actually the initial creator).
|
||
|
|
||
|
%t%
|
||
|
The document title.
|
||
|
|
||
|
%s%
|
||
|
The document subject.
|
||
|
|
||
|
|
||
|
**Note:** The use of the above field specifiers in the body of your
|
||
|
reStructuredText document is **not** supported, because these
|
||
|
specifiers are not standard across Docutils writers.
|
||
|
|
||
|
|
||
|
|
||
|
Credits
|
||
|
=======
|
||
|
|
||
|
Stefan Merten designed and implemented the custom style names
|
||
|
capability. Thank you, Stefan.
|
||
|
|
||
|
Michael Schutte supports the Debian GNU/Linux distribution of
|
||
|
``odtwriter``. Thank you, Michael, for providing and supporting
|
||
|
the Debian package.
|
||
|
|
||
|
Michael Schutte implemented the fix that enables ``odtwriter`` to
|
||
|
pick up the default paper size on platforms where the program
|
||
|
``paperconf`` is available. Thank you.
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
.. _`Pygments`:
|
||
|
http://pygments.pocoo.org/
|
||
|
|
||
|
.. _`Docutils`:
|
||
|
http://docutils.sourceforge.net/
|
||
|
|
||
|
.. _`Python Imaging Library`:
|
||
|
http://www.pythonware.com/products/pil/
|
||
|
|
||
|
.. _`Open Document at Wikipedia`:
|
||
|
http://en.wikipedia.org/wiki/OpenDocument
|
||
|
|
||
|
.. _`OASIS Open Document Format for Office Applications (OpenDocument) TC`:
|
||
|
http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office
|
||
|
|
||
|
|
||
|
|